zabbix自动注册
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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_agentd 将会自动监控目标主机
至此自动发现功能实现,接下来的问题是实现批量修改被监控主机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并将文件和脚本放在同一目录
该脚本可重复执行
以上是关于zabbix自动注册的主要内容,如果未能解决你的问题,请参考以下文章