工业制造其它Zabbix

如何做好zabbix客户端的自动化批量安装和配置?

如何做好zabbix客户端的自动化批量安装和配置?

参与6

2同行回答

奔跑的蜗牛奔跑的蜗牛高级软件开发工程师武汉家事易农业科技有限公司
将安装过程编写执行脚本,然后再使用Ansible来进行批量安装 。显示全部

将安装过程编写执行脚本,然后再使用Ansible来进行批量安装 。

收起
软件开发 · 2022-09-29
浏览836
lych370lych370联盟成员系统运维工程师个人
脚本安装,可提前将脚本批量推送到所有服务器,参考 shell 脚本范例如下 :!/bin/bashrpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpmyum install -y zabbix-agentmv /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_ag...显示全部
  1. 脚本安装,可提前将脚本批量推送到所有服务器,参考 shell 脚本范例如下 :

!/bin/bash

rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum install -y zabbix-agent
mv /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.source # 备份原本的配置文件
Hostname=hostname # 使用 `` 获取本机主机名 # 新配置文件内容
echo "PidFile=/var/run/zabbix/zabbix_agentd.pid #pid 文件
LogFile=/var/log/zabbix/zabbix_agentd.log # 日志位置

LogFileSize=1 # 日志大小默认 1M ,若为 0 ,则表示不产生任何日志,数字范围( 1-1024M ) EnableRemoteCommands=1 # 是否允许在本地执行远程命令,建议设置为“允许”
Server= 服务器端 ip # 被动模式设置服务器端 ip
ListenPort=10050 # 监听端口
ListenIP=0.0.0.0 # 指定上面的端口监听哪个 ip ,可以指定也可以用 0.0.0.0
StartAgents=3 # 在被动模式下,此参数用于设置控制监听进程可启用的子进程的数量

主动模式 #ServerActive= 服务器端 ip

Hostname=$Hostname # 主机名 UnsafeUserParameters=1 # 是否启用用户自定义监控脚本, 1 启用, 0 不启用。
Include=/etc/zabbix/zabbix_agentd.d/*.conf" > /etc/zabbix/zabbix_agentd.conf
pkill -9 zabbix
zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
chmod +x /etc/rc.d/rc.local
echo 'zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf' >> /etc/rc.d/rc.local # 加入开机自启动

  1. 通过 ansible 或 puppet 等批量操作软件,将提前准备好的 zabbix-agentd 安装包推送到所有需要安装的服务器,通过远程命令批量安装客户端,然后再用远程命令批量修改配置文件或者直接用修改好的配置文件替换安装生成的配置文件,最后使用远程命令启动 zabbix-agentd 服务并将该服务加入自启动列表即可。
    示例 :
    对 Linux 进行批量部署 Zabbix-agent
    我们这里使用的是 ansible 来对 zabbix-agent 进行批量部署,当然在 Linux 上也可以使用脚本来完成部署

环境
ansible : 10.127.0.133
agent1 : 172.168.0.4
agent2 : 172.168.0.5
进行密钥授权认证实现免密登陆
为方便 ansible 对 agent 主机的管理,需要将 ansible 与 agent 进行公钥认证来实现免密登陆
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub 172.168.0.4
ssh-copy-id -i /root/.ssh/id_rsa.pub 172.168.0.5
在 ansible/hosts 中添加主机信息

[Linux-agent]
172.168.0.4
172.168.0.5
编辑 Linux-agent 的 playbook 文件进行批量部署

实现步骤:
安装 zabbix-agent4.2 的 rpm 包
使用 yum 安装 zabbix-agent
修改 agent 配置文件的一些变量,将模板文件覆盖到 agent 配置文件
重启 zabbix-agent
定义 agent 模板
创建一个模板文件,里面包含 agent 中可变的变量,如:主机名和 server 地址

[root@zabbix-server ~]# vim /etc/ansible/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server={{server}}
ServerActive={{server}}
Hostname={{hostname}}
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
编写 playbook 文件
vim /etc/ansible/linux-agent.yml

  • hosts: zabbix-agent
    remote_user: root
    vars:
    server: 10.127.0.133
    hostname: "{{ ansible_hostname }}"
    tasks:
  • name: install rpm
    command: rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.1-1.el7.x86_64.rpm
  • name: install agent
    command: yum install zabbix-agent -y
  • name: cp templates zabbix_agentd.conf to zabbix agentd
    template: src=/etc/ansible/zabbix_agentd.conf dest=/etc/zabbix/zabbix_agentd.conf
  • name: restart zabbix-agent
    command: systemctl restart zabbix-agent
    执行 playbook 文件进行批量部署
    ansible-playbook -i /etc/ansible/hosts /etc/ansible/linux-agent.yml
    可以看到 playbook 已经执行成功了,接下来可以看一下 agent 的配置文件
    可以看到, agent 配置文件中的变量也修改完成
    创建自动发现规则对部署的主机进行自动发现并添加监控项
    创建自动发现规则
    添加自动发现动作
    配置发现后的操作
    可以看到自动发现规则生效了,并链接了 Linux-OS 模板
  • 对 Windows 进行批量部署 Zabbix-agent
    Windows 下的批量部署可以通过配置管理工具或者域控制器进行,这里我使用的 ansible 来对 Windows 主机进行批量部署
    环境
    ansible : 10.127.0.133
    Windows server2012 : 172.168.0.6
    依赖环境
    ansible 依赖
    pywinrm>=0.3.0
    pywinrm 可以使用 pip 来进行安装,执行以下命令
    pip install pywinrm>=0.3.0
    Windows 依赖
    PowerShell 3.0
    NET Framework 4.0+
    我这里使用的是 2012 ,上面的环境是不需要做配置的,如果是使用的 server2008 或更低版本需要进行升级之后才能使用,获取升级的详细信息可以访问 ansible 官方文档查看
    https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html#host-requirements
    安装 winrm 内存修补程序
    由于 ansible 控制 Windows 不是使用的 ssh 协议,而是用的 Windows 的 winrm 服务,而 winrm 有一个限制可用内存量的错误,需要安装脚本进行修复
    在 powershell 上执行下面的命令
    $url = "https://raw.githubusercontent.com/jborean93/ansible-windows/master/scripts/Install-WMF3Hotfix.ps1"
    $file = "$env:temp\Install-WMF3Hotfix.ps1"
    (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
    powershell.exe -ExecutionPolicy ByPass -File $file -Verbose
    在防火墙上开启 winrm 服务端口和 agent 服务端口
    可以在 powershell 上执行下面的命令查看 winrm 当前的监听端口
    winrm enumerate winrm/config/Listener
    winrm 服务默认是 5985 端口, zabbix-agent 使用的是 10050 端口,因此需要在防火墙上开启 5985 和 10050 端口或直接关闭防火墙
    下载 Windows-agent 的包
    首先需要下载 Windows-agent 的压缩包并解压到 ansible 主机下
    下载地址: https://www.zabbix.com/download_agents
    在 ansible/hosts 中添加主机信息
    需要在 hosts 中指定与 Windows 连接的配置信息,默认情况下使用 ntlm 认证,如果想要获取关于 winrm 认证的详细信息,可以访问 https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html
    [windows]
    172.168.0.6 ansible_python_interpreter=/usr/bin/python ansible_user="administrator" ansible_password="asd.123" ansible_port=5985 ansible_connection="winrm" ansible_winrm_transport=ntlm ansible_winrm_server_cert_validation=ignore
    编辑 Windows-agent 的 playbook 文件进行批量部署

实现步骤:
从 ansible 复制下载好的 agent 文件到 Windows
修改 agent 配置文件的一些变量,将模板文件覆盖到 agent 配置文件
安装 zabbix-agent
启动 zabbix-agent
编写 playbook 文件
vim /etc/ansible/windows-agent.yml

  • hosts: windows
    remote_user: administrator
    vars:
    server: 10.127.0.133
    hostname: "{{ ansible_host }}"
    tasks:
  • name: cp zabbix-agent
    win_copy:
    src: /etc/ansible/windows_agent/
    dest: C:\windows_agent\
  • name: cp templates zabbix_agentd.conf to zabbix agentd
    win_template:
    src: /etc/ansible/zabbix_agentd.conf
    dest: C:\windows_agent\conf\
  • name: install zabbix-agent
    win_command: zabbix_agentd.exe -i -c C:\windows_agent\conf\zabbix_agentd.conf
    args:
    chdir: C:\windows_agent\bin\
  • name: start zabbix-agent
    win_command: zabbix_agentd.exe -s -c C:\windows_agent\conf\zabbix_agentd.conf
    args:
    chdir: C:\windows_agent\bin\
    执行 playbook 文件进行批量部署
    ansible-playbook -i /etc/ansible/hosts /etc/ansible/linux-agent.yml
    可以看到 playbook 执行成功了,查看 Windows 的服务, Zabbix-agent 也已经启动
    配置动作对部署的主机进行自动发现并添加监控项
    添加自动发现动作
    配置发现后的操作
    可以看到自动发现规则生效了,并链接了 Windows-OS 模板
  • 如果未联网的情况,需要提前下载好相应版本的 zabbix-agent 客户端 rpm 包,通过 ansible 等软件推送到服务器上,其他步骤大致相同。

参考文章链接 https://mp.weixin.qq.com/s/D8GdULMHSs2YBOkhyglefQ

收起
银行 · 2022-09-29
浏览770

提问者

jiaoyutwt
系统运维工程师山西省运城市盐湖区
擅长领域: 系统运维监控数据库监控

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2022-09-27
  • 关注会员:3 人
  • 问题浏览:1373
  • 最近回答:2022-09-29
  • X社区推广