自动发现主机规则
创新互联公司专业为企业提供迪庆州网站建设、迪庆州做网站、迪庆州网站设计、迪庆州网站制作等企业网站建设、网页设计与制作、迪庆州企业网站模板建站服务,10多年迪庆州做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
首先创建自动发现主机:
配置自动发现规则:
完成后在动作中的自动发现创建发现动作即可:
自定义脚本
zabbix自定义监控key值 自动发现 自动执行远程脚本
例如:
监控一个进程是否存在:
mkdir /etc/zabbix/alertscripts/
vim check_badvp.sh
#!/bin/bash
result=`ps -ef | grep badvp-udpgw | grep -v grep`
if [ -n "$result" ]
then
echo '1'
else
echo '0'
fi
通过脚本判断这个进程是否存在 存在返回1 不存在返回0,我们把这个脚本自定义到上述目录
在zabbix_agent.conf中配置脚本路径 和key值
UnsafeUserParameters=1
UserParameter=check_badvp,/bin/bash /etc/zabbix/alertscripts/check_badvp.sh
修改超时时间
Timeout = 8
设置超时时间,避免脚本执行不成功
设置启动服务的脚本 /opt/autorestart.sh
最后修改sudoers文件 在下边一行新加 zabiix用户的启动权限 visudo
root ALL=(ALL) ALL
zabbix ALL=(root) NOPASSWD:/opt/autorestart.sh
最后重启agent
界面设置
创建监控项:
创建触发器:
最后条件动作通知:
最后实现告警:
zabbix端口自动发现
经历了很多次试验,由于公司服务器上的业务端口又多又没有规律,因此使用网上的端口自动发现规则(netstat)的方法会发现大量的无用端口,而且在告警时候只显示端口也不友好,最终找到了解决办法。
python脚本和pyadmin脚本
利用zabbix的自定义key来调用公司服务器现有的进程管理工具pyadmin
python脚本:
#!/usr/bin/python
import os,json
#command = "sudo /usr/skymobi/admin/PYsanpadmin |awk -F'_' {'print $2'} | awk '{print $1}' | sort|uniq"
command = "sudo /usr/skymobi/admin/PYsanpadmin"
lines = os.popen(command).readlines()
resultLi = []
for line in lines:
lineLi = line.split()
newLineLi = lineLi[0].split("_")
resDic = {"{#SERVICES}":newLineLi[0],"{#TCP_PORT}":newLineLi[1]}
resultLi.append(resDic)
data = {"data":resultLi}
jsonStr = json.dumps(data, sort_keys=True, indent=4)
jsonStr=jsonStr.replace(r"\u001b[1;32;40m","").replace(r"\u001b[1;31;40m","").replace(r"\u001b[1;33;40m","")
print jsonStr
脚本中的replace 是过滤我一下PY输出结果的颜色的 绿色 红色 否者在打印出json格式就会有颜色的代码
PYadmin输出结果
其原理就是利用python脚本分离出pyadmin管理工具输出的结果,把进程名和端口过滤出来,传到zabbix自动发现规则中
vim zabbix-agentd.conf
UserParameter=nettcpservice,/usr/bin/python /etc/zabbix/alertscripts/discover_tcpport.py "$1" "$2"
重启agent即可
配置自动发现规则
健值对应我们配置文件中的健值,这里类型选择主动式,为了减少服务端探测导致客户端服务器连接数过多。
最后绑定到我们的服务器即可~
zabbix agent Value should be a JSON object 故障排除
首先考虑脚本执行权限
chmod 755 发现脚本
其次visudo,最后一行追加
zabbix ALL=(ALL) NOPASSWD: ALL