zabbix自动注册

本文参考文档:https://www.zabbix.com/documentation/4.0/zh/manual/discovery/auto_registration
官方文档已经写的很详细,很感人了因此这里不多做解释只写我的操作:

环境:ubuntu14
zabbix版本:3.4.0
功能实现:当以前未知的active agent要求检查时,会发生自动注册。

在agent配置文件中zabbix_agentd.conf添加or修改以下内容:

ServerActive=service.zabbixbetadns****.com (我们公司实际是使用的域名,官方文档给出的是IP,根据自己实际情况修改)

RefreshActiveChecks=15 (这里我定义的是15s, 可以不定义 不定义默认为重启后立即发送请求)

Hostname = 172.25.100.100 (被监控主机IP)
如果你没有在zabbix_agentd.conf中特别定义了Hostname,则服务器将使用agent的系统主机名命名主机。Linux中的系统主机名可以通过运行'hostname'命令获得。

HostMetadataItem=system.uname
修改配置后重启agent使配置生效

在Zabbix页面,转到配置→动作,选择自动注册为事件源,然后单击创建操作:
在“动作“选项卡,定义 Action 名称
可选指定条件。如果要使用“主机元数据”条件,请参阅下一节。
在“操作”选项卡中,添加“添加主机”,“添加到主机组”(例如,发现的主机),“链接到模板”等。
zabbix自动注册

zabbix自动注册

到这里就可以实现自动注册
可以试验一台机器 删除后重启zabbix_agentd 将会自动监控目标主机
zabbix自动注册
至此自动发现功能实现,接下来的问题是实现批量修改被监控主机agentd配置文件
如果公司主机少的话当然可以手动进行修改,服务器如果太多手动就太没有效率了!

import paramiko
from multiprocessing import Pool

def main(hostname):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
        ssh.connect(hostname,22,'用户名','密码')
    except:
        with open("/tmp/error.txt",'a') as f:
            f.write("%s is connect error\n" % hostname)
            return
    ssh.exec_command('grep HostMetadataItem=system.uname /etc/zabbix/zabbix_agentd.conf >> /dev/null  || echo "HostMetadataItem=system.uname" >> //etc/zabbix/zabbix_agentd.conf')
    ssh.exec_command('sed -i "s/Hostname.*/Hostname=%s/g" /etc/zabbix/zabbix_agentd.conf' % hostname)
    ssh.exec_command('sed -i "s/^ServerActive/#ServerActive/" /etc/zabbix/zabbix_agentd.conf')
    ssh.exec_command('service zabbix-agent restart')

if __name__ == '__main__':
    f = open("host.txt")
    for i in f:
        hostname = i.strip()
        main(hostname)

该脚本会调用本地host.txt文件中的IP使用时讲IP写入host.txt并将文件和脚本放在同一目录
该脚本可重复执行

猜你喜欢

转载自blog.51cto.com/12629984/2122075
今日推荐