设为首页 收藏本站
查看: 1223|回复: 0

[经验分享] 【zabbix】自动注册,实现自动发现agent并添加监控(agent不需要任何配置)

[复制链接]

尚未签到

发表于 2017-12-31 12:34:12 | 显示全部楼层 |阅读模式
  更新:
  后来在实际使用中发现,与其使用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地址)
DSC0000.png

  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
DSC0001.png   (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
DSC0002.png

  图是偷来的,我自己的虚拟机已经关了,凑合看吧。看到这个表示ansible准备好了。
  zabbixserver端配置
  1,创建一个自动注册的动作,叫做自动修改客户端配置文件
DSC0003.png

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

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

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

#!/bin/bash  

js_path="/usr/local/zabbix/ansible"  
#设置脚本目录
  

clientip=$1  
#获取第一个参数,也就是自动注册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自动添加监控
DSC0006.png

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

  8,添加操作如下
DSC0008.png

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

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430247-1-1.html 上篇帖子: Zabbix二次开发_03api列表 下篇帖子: zabbix 监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表