更新:

后来在实际使用中发现,与其使用zabbix自动注册,不如直接调用zabbix的api主动发起添加服务器的请求,这样就不需要在zabbixserver上配置host信息了。实现全自动。具体调用方式见

https://www.zabbix.com/documentation/3.2/manual/api/reference/host/create

前言:

  zabbix监控在小规模的时候,可以使用手动一台台添加服务器,到了大规模以后,就不合适了,这时候需要使用zabbix的自动发现或者自动注册,自动发现可以自动发现一个网段内的agent机器,而我们公司使用的aws,所有服务器都不在一个网段内,故这里采用自动注册,自动注册是由agent主动想server发起注册请求。

  自动注册的一个难点在于agent的配置文件修改,云服务器通常是通过使用模板克隆出来的,如果需要手动去服务器上修改agent的hostname,那么自动注册就没有意义了。这里我们采用ansible,根据agent主动注册上来的消息特征,将特定的agent配置文件发送给agent使用,实现无需连接agent就可以实现修改agent配置文件。

实现思路:

windows服务器使用zabbixagent模板配置文件(设置hostname=new)——添加自动注册事件,发现有叫做hostname=new的客户端链接——调用ansible,根据对应策略,将正确的agent配置文件发送给agent,并重启zabbix_agentd——zabbixagent重新上报注册事件——zabbix发现新的名字的agent注册——根据名字添加模板,添加监控。

环境准备:

  1,zabbixserver+ansible

  2,windows支持ansible,windows7和windows server 2008r2,需要升级到sp1才能安装powershell3.0,powershell版本在powershell中通过get-host查看。

  3,修改zabbixserver的hosts文件,添加ip与主机名的对应(原因为,zabbix默认使用DNS作为监控对象名,如果没有就使用ip地址)

ansible说明:

  server端必须是linux服务器,搭建在zabbixserver上正好。

  虽然ansible不需要angent,但是在windows上,ansible是通过powershell实现的控制,故对windows操作系统有一定的要求,如下:

  • 安装Framework 3.0+
  • 更改powershell策略为remotesigned
  • 升级PowerShell至3.0+
  • 设置Windows远端管理,英文全称WS-Management(WinRM)

  (1)安装Framework 3.0+

  下载链接为:http://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_x86_x64.exe。 下载至本地后双击左键安装即可,期间可能会多次重启,电脑需正常连接Internet。

  (2)更改powershell策略为remotesigned

    set-executionpolicy remotesigned

(3)升级powershel3.0

  用powershell运行附件脚本。upgrade_to_ps3.ps1,这个脚本是ansible官方提供的。

(4)设置远端管理

  用powershell运行附件脚本,ConfigureRemotingForAnsible.ps1,这个脚本也是ansible官方提供。

设置完成以后,看看ansible能不能正常和windows通讯

添加服务器:

(5) 开启防火墙

如果服务器防火墙是开启的,需要手动添加针对winrm的访问,开放5985(http)和5986(https)端口,也可以根据实际情况选择开启其中一个。(记得选择允许所有来源ip访问,默认是只允许本地访问这两个端口)

vim /etc/ansible/hosts

[windows]
192.168.53.133 ansible_ssh_user="Administrator" ansible_ssh_pass="123456" ansible_ssh_port=5985 ansible_connection="winrm" ansible_winrm_server_cert_validation=ignore

添加完成之后,用ansible测试一下

ansible服务端需要安装pywinrm模块

ansible windows -m win_ping

图是偷来的,我自己的虚拟机已经关了,凑合看吧。看到这个表示ansible准备好了。

zabbixserver端配置

1,创建一个自动注册的动作,叫做自动修改客户端配置文件

2,设置触发条件如图(这里说明,这里所有云主机模板里的agent配置文件中,hostname=new,就是说,云服务器创建以后,自动有一个zabbixagent启动,并且hostname=new)

3,创建动作,动作是在zabbixserver上执行一个脚本,这个脚本用来更改自动注册上来的agent修改配置文件,这个根据自动注册上报的ip匹配这个服务器应该叫什么名字,这个脚本要执行成功,必须加sudo,并且在sudoers文件里给zabbix添加免密sudo设置。要不然命令执行成功,但是不生效。

4,这个self-find脚本的内容如下:

 #!/bin/bash
js_path="/usr/local/zabbix/ansible"
#设置脚本目录
clientip=$
#获取第一个参数,也就是自动注册client的ip地址
clientname=`cat $js_path/ip-name.txt|grep $clientip|awk '{print $2}'`
#根据client的ip地址,去ip-name.txt这个文件里查找对应的名字
sed -i "s/Hostname=new/Hostname=$clientname/g" $js_path/zabbix_agentd.win.conf
#生成这个client专用的配置文件
/usr/bin/ansible windows -m win_file -a "path=C:\\zabbix\\zabbix_agentd.win.conf state=absent"
#删除client上现有的配置文件
/usr/bin/ansible windows -m win_copy -a "src=$js_path/zabbix_agentd.win.conf dest=C:\\zabbix\\zabbix_agentd.win.conf"
#将新的配置文件复制到client
/usr/bin/ansible windows -m win_service -a "name='Zabbix Agent' state=restarted"
#重启client的zabbix_agentd服务
sed -i "s/Hostname=$clientname/Hostname=new/g" $js_path/zabbix_agentd.win.conf
#将修改过的配置文件再修改回去,方便下次使用

ip-name.txt这个文件内容如下

192.168.58.133 windows_test

5,这个动作创建以后,zabbix每2分钟检测一次自动注册,如果发现有agent用new这个hostname上报到zabbixserver,zabbixserve就执行这个脚本,把新的配置文件发给agent并重启agent,

6,接着创建第二个自动注册动作,用于将使用新配置文件的agent自动添加监控

7,设置触发条件为主机名windows_test,这个主机名是ip-name哪里来的,根据实际情况填写。

8,添加操作如下

9,到此,已经可以实现自动发现windows服务器了。

原创作品,转载请说明出处,谢谢

【zabbix】自动注册,实现自动发现agent并添加监控(agent不需要任何配置)的更多相关文章

  1. Zabbix 设置自动添加主机两种方法(自动注册、自动发现)

    在实际生产环境中,我们可能需要将很多台主机添加到 Zabbix Server 里,我们进行手动添加的话,会比较麻烦.费时,而且还容易出错.所以一般我们会设置主机自动注册.这样就比较方便. 官方文档链接 ...

  2. zabbix 自动发现端口并添加监控设置

    自动发现端口并添加监控设置UserParameter=net.listen.discovery,sudo /etc/zabbix/scripts/discovery_listport.sh #!/bi ...

  3. zabbix的自动发现、自定义添加监控项目、配置邮件告警

    1.zabbix的自动发现这里的自动发现,所显示出来的是规则的上自动了现 然后 可以对其内容进行相关的配制,如时间或周期 注意:对于单个主机的规则,可以自行添加或删除, 但对于已经添加好了的规则,若需 ...

  4. Spring 自动注册及自动装配

    Spring支持三种注册Bean及装配Bean的方式: 显式地在Java代码中注册及装配 显示地在Xml文件中注册及装配 隐式地装配,即自动注册及装配 这三种方式可以混合使用.选择哪种更多地是看个人品 ...

  5. 运用Zabbix实现内网服务器状态及局域网状况监控(2) —— 环境配置

    一.基本要求 Zabbix支持如下操作系统: LinuxIBM AIXFreeBSDNetBSDOpenBSDHP-UXMac OS XSolarisWindows: 2000, Server 200 ...

  6. 分布式系统监视zabbix讲解八之自动发现/自动注册--技术流ken

    自动发现(LLD) 概述 自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法.例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网 ...

  7. zabbix自动发现与自动注册、自定义监控

    一.自动发现与自动注册在上面的介绍中,我们演示了手动添加一台主机的方法,虽然简单,但是当要添加的主机非常多时,也将变得非常繁琐,那么有没有一种方法,可以实现主机的批量添加呢,这样就会极大的提高运维效率 ...

  8. 分布式系统监视zabbix讲解八之自动发现/自动注册

    自动发现(LLD) 概述 自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法.例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网 ...

  9. Zabbix 自动发现 & 自动注册

    自动发现 Zabbix 为用户提供了高效灵活的网络自动发现功能,有以下优点: 加快 Zabbix 部署 简化管理 无需过多管理,也能在快速变化的环境中使用 Zabbix Zabbix 网络发现基于以下 ...

随机推荐

  1. centos中httpd Server not started: (13)Permission denied: make_sock: could not bind to address [::]:8888

    Install semanage tools: sudo yum -y install policycoreutils-python Allow port 88 for httpd: sudo sem ...

  2. Ajax方式实现注册验证代码

    经常用到的经典Ajax代码,记录备用: function CreateAjax() { var XMLHttp; try { XMLHttp = new ActiveXObject("Mic ...

  3. java编程思想第四版第9章

    练习3: public class MainTest { public static void main(String args[]){ Bcycle b=new Bcycle(); b.print( ...

  4. 转: IO设计模式:Reactor和Proactor对比

    转: https://segmentfault.com/a/1190000002715832 平时接触的开源产品如Redis.ACE,事件模型都使用的Reactor模式:而同样做事件处理的Proact ...

  5. HTML5 Canvas 八星聚义动态效果

    昔有石碣村七星聚义,今有Canvas八星聚义.动态效果是,八颗星以等速螺线慢慢向中心聚集,最后汇聚成一颗. 效果: 代码: <!DOCTYPE html> <html lang=&q ...

  6. js 数组去重复

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. UNP学习笔记(第十八章 路由套接字)

    路由套接字上支持3种类型的操作 1). 进程能通过写路由套接字向内核发消息. 2). 进程能通过路由套接字从内核读消息. 3). 进程可以用sysctl函数得到路由表或列出所有已配置的接口. 数据链路 ...

  8. fiddler不能监听 localhost和 127.0.0.1的问题 .

    localhost/127.0.0.1的请求不会通过任何代理发送,fiddler也就无法截获. 解决方案 用 http://localhost. (locahost紧跟一个点号) 用 http://1 ...

  9. UVA LIVE-4642 - Malfatti Circles

    给出三角形三个顶点,求出三个互切的圆的半径 尽管大白鼠说能够推出公式,但是这个公式仅仅怕没那么easy推--我左看右看上看下看也推不出. 应该是要做辅助线什么的,那也-- 因为非常easy就推出了关于 ...

  10. SAS学习经验总结分享:篇五-过程步的应用

    之前已经介绍过BASE SAS分为数据步和过程步,过程步是对数据步生成的数据集进行分析和处理,并挖掘数据信息,写出分析报告做总结评价. (本文为原创,禁止复制或转载,转载务必标明出处:http://w ...