苗而不美者有夫! 美而不实的都有老公!

《论语》

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

修改代理配置文件的一些变量,将模板文件覆盖到代理配置文件中

重启zabbix-agent

定义代理模板

创建一个模板文件,其中包含代理中的可变变量,例如:主机名和服务器地址

[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

编写剧本文件

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

zabbix添加windows主机名_zabbix安装部署windows_zabbix for windows

可以看到playbook已经执行成功,接下来可以查看agent的配置文件

zabbix安装部署windows_zabbix添加windows主机名_zabbix for windows

可以看到,代理配置文件中的变量也被修改了

创建自动发现规则自动发现部署主机并添加监控项创建自动发现规则

zabbix添加windows主机名_zabbix for windows_zabbix安装部署windows

添加自动发现操作

zabbix添加windows主机名_zabbix for windows_zabbix安装部署windows

配置发现后操作

zabbix添加windows主机名_zabbix for windows_zabbix安装部署windows

可以看到自动发现规则已经生效,链接Linux-OS模板

zabbix添加windows主机名_zabbix安装部署windows_zabbix for windows

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以下版本zabbix安装部署windows,需要升级后才能使用。 有关升级的详细信息,请访问ansible官方文档。

#主机要求

安装 winrm 内存修补程序

由于ansible控制Windows而不是使用ssh协议,它使用的是Windows winrm服务,而winrm有一个限制可用内存量的bug,需要通过安装脚本来修复

在powershell上执行以下命令

$url = "https://raw.githubusercontent.com/jborean93/ansible-windows/master/scripts/Install-WMF3Hotfix.ps1"
$file = "$env:tempInstall-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 代理程序包

首先需要下载windows-agent的压缩包并解压到ansible主机

下载链接:

在ansible/hosts中添加主机信息

需要在hosts中指定连接Windows的配置信息。 默认情况下,使用 ntlm 身份验证。 如果你想获得有关winrm认证的详细信息,你可以访问

[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复制到Windows

修改代理配置文件的一些变量zabbix安装部署windows,将模板文件覆盖到代理配置文件中

安装zabbix-agent

启动zabbix-agent

编写剧本文件

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_agentconf
- name: install zabbix-agent
win_command: zabbix_agentd.exe -i -c C:windows_agentconfzabbix_agentd.conf
args:
chdir: C:windows_agentbin
- name: start zabbix-agent
win_command: zabbix_agentd.exe -s -c C:windows_agentconfzabbix_agentd.conf
args:
chdir: C:windows_agentbin

执行 playbook 文件进行批量部署

ansible-playbook -i /etc/ansible/hosts /etc/ansible/linux-agent.yml

zabbix添加windows主机名_zabbix for windows_zabbix安装部署windows

可以看到playbook已经执行成功,查看windows服务,zabbix-agent也已经启动

zabbix添加windows主机名_zabbix安装部署windows_zabbix for windows

配置自动发现已部署主机的动作并添加监控项以添加自动发现动作

zabbix安装部署windows_zabbix for windows_zabbix添加windows主机名

配置发现后操作

zabbix for windows_zabbix添加windows主机名_zabbix安装部署windows

可以看到自动发现规则已经生效,链接Windows-OS模板

zabbix安装部署windows_zabbix添加windows主机名_zabbix for windows

欢迎大家在下方交流指导