专栏首页没有故事的陈师傅Zabbix批量部署Windows和Linux下的agent

Zabbix批量部署Windows和Linux下的agent

对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文件进行批量部署

实现步骤:

  1. 安装zabbix-agent4.2的rpm包
  2. 使用yum安装zabbix-agent
  3. 修改agent配置文件的一些变量,将模板文件覆盖到agent配置文件
  4. 重启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文件进行批量部署

实现步骤:

  1. 从ansible复制下载好的agent文件到Windows
  2. 修改agent配置文件的一些变量,将模板文件覆盖到agent配置文件,模板文件与Linux的相同
  3. 安装zabbix-agent
  4. 启动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模板


本文分享自微信公众号 - 运维开发故事(mygsdcsf),作者:wanger

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Zabbix 5.0.0beta1版本初体验

    Zabbix 5.0.0beta1 版本开始前端需要使用PHP 7.2以上的版本,目前使用的Centos 7 仅提供PHP 5.4,Zabbix 官方...

    没有故事的陈师傅
  • ZABBIX Maps 数据可视化

    本篇文章将介绍如何利用zabbix内置 Maps模块展示主机数据指标以及如何关联触发器 构建业务地图让异常指标更加直观呈现

    没有故事的陈师傅
  • 基于Docker部署4.4版本的zabbix监控平台

    提供两种不同的安装方式,两种方式都可以,自己根据实际情况选择,也可以跟我文档一样搭建两套,为了方便后期管理yml,个人建议使用3.2小节的安装方式,单机编排

    没有故事的陈师傅
  • Java8---Stream的基本用法(2)

    下面列举了一些,Stream的一些基本的使用方法,比如去重,遍历,筛选,获取指定元素的等。

    IT云清
  • JDK1.7新特性(1):Switch和数字

    Switch jdk1.7的switch语句增加了对字符串类型的支持。其实现的原理是通过字符串的hash值来比较的,代码示例如下: 1 String name...

    SecondWorld
  • JDK8这样处理日期,效率绝对提升,逼格必然翻倍!

    开发过程中,经常需要为过生日的用户送上一些祝福,例如,用户的生日为1990-10-12,如果今天是2016-10-12,那么今天就是用户的生日(按公历/身份证日...

    程序员小明
  • 域名解析

    金GoS
  • 传说中Adobe最可怕的黑科技终于发布了,沸腾的可不止设计师!

    简单来说,这就是 ai,sensei 利用了 adobe 长期积累的大量数据和内容,从图片到影像,能够帮助我们解决很多问题,将重复劳动变得自动化。这样你就可以在...

    前朝楚水
  • Android开发之漫漫长途 XIX——HTTP

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索...

    mafeibiao
  • 开源PaaS Rainbond v5.0.4 发布更新,做最好用的云应用操作系统

    今天我们给社区带来了Rainbond v5.0.4 版本更新,提前恭祝大家升级成功,Rainbond是开源的企业应用云操作系统,支撑企业应用的开发、架构、交付和...

    Rainbond开源

扫码关注云+社区

领取腾讯云代金券