钉钉告警python脚本
cat python20
#!/usr/bin/python3
#coding:utf-8
import requests,json,sys,os,datetime
# 机器人的Webhook地址
webhook="钉钉"
user=sys.argv[1]
text=sys.argv[3]
data={"msgtype": "text","text": {"content": text},"at": {"atMobiles": [# 在web端用户绑定媒介中通过指定用户注册是的手机号,可以通知指定人员,否则只发消息,不艾特具体人user],"isAtAll": False# 设置为1,则@所有人# "isAtAll": 1}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/dingding.log"):f=open("/var/log/zabbix/dingding.log","a+")
else:f=open("/var/log/zabbix/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))f.close()
else:f.write("\n"+str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + "\n" + str(text))
cat ding
#!/usr/bin/env python3
#zabbix钉钉报警
import requests,json,sys,os,datetime
##刚刚保存的Webhook
webhook="钉钉Webhook"
user=sys.argv[1] ##执行脚本时传递的第一个参数,发送用户
text=sys.argv[3] ##执行脚本时传递的第三个参数,发送内容
data={"msgtype": "text","text": {"content": text},"at": {"atMobiles": [user],"isAtAll": False}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/lib/zabbix/logs/dingding.log"):f=open("/usr/lib/zabbix/logs/dingding.log","a+")
else:f=open("/usr/lib/zabbix/logs/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))f.close()
错误1:
sh: 1: /usr/lib/zabbix/alertscripts/dingding.py: not found
单python3 文件名字 测试正常,还以为ubuntu不支持root@ubuntu20:/usr/lib/zabbix/alertscripts# ./dingding3.py
-bash: ./dingding3.py: /usr/bin/python3^M: bad interpreter: No such file or directory
结果多次测试是因为是window创建的文件,使用./文件名发现有其他字符^M,^M字符表示回车符,它可能是由于使用Windows风格的换行符引起的。在Linux系统上,需要使用Unix风格的换行符。
你可以尝试使用dos2unix命令来转换文件的换行符格式。打开终端,并运行以下命令:dos2unix python20
实现故障自愈功能
agent添加配置
vim /etc/zabbix/zabbix_agentd.conf
AllowKey=system.run[*] #允许所有远程命令,zabbix5.0版本以上,代替EnableRemoteCommands,agent2默认没有此命令手工加入
#EnableRemoteCommands=1 #开启远程执行命令,此指令在zabbix5.0版本以上淘汰
AllowRoot=1 #开启此项,直接使用root进行远程管理,而无须对zabbix用户授权sudo权限,agent2不支持,使用下面的对zabbix授权
UnsafeUserParameters=1 #允许远程执行命令的时候使用不安全的参数(特殊字符串,如: \ ' *
[root@centos8 ~]#vim /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: ALL
#检查语法
[root@centos8 ~]#visudo -c
重启
systemctl restart zabbix-agent2.service
服务端配置
创建动作,触发器
动作中添加
把nginx停止,会自动执行systemctl start nginx命令,故障恢复
主动模式
主动模式和被动模式相对agent来说的
ServerActive=192.168.1.150 #向谁汇报,开启主动模式
Hostname=192.168.1.220 #agent中Hostname 此项必须和Zabbix Server中设置的主机名称相同,不然采集不了数据,会报错找不到
监控项改为主动式
主动模式监控项
复制模板,批量更新监控项为主动式
主机并联新的模板
问题1
查看数据没有更新,查看日志,agent配置文件中hostname和服务端页面的主机名称要一样
2023/09/04 19:34:48.385426 [101] no active checks on server [192.168.1.150:10051]: host [zhujiming-192.168.1.220] not found
2023/09/04 19:36:49.387602 [101] no active checks on server [192.168.1.150:10051]: host [zhujiming-192.168.1.220] not found
2023/09/04 19:38:50.397644 [101] no active checks on server [192.168.1.150:10051]: host [zhujiming-192.168.1.220] not found
2023/09/04 19:40:51.382330 [101] no active checks on server [192.168.1.150:10051]: host [zhujiming-192.168.1.220] not found
问题2:zbx是灰色,但查看数据正常,是因为这个主机的模版全是主动模式。添加其他被动模式的模板即可
监控Java
- 192.168.1.250安装好java+tomcat环境
- Tomcat 开启 JMX 功能
#vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS=“$CATALINA__OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.1.250”
systemctl restart tomcat
[root@rocky8 ~]# ss -tnl|grep 12345
LISTEN 0 50 *:12345 :
zabbix服务端测试
root@ubuntu20:~# java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.250:12345 'Catalina:name="http-nio-8080",type=ThreadPool' currentThreadCount09/04/2023 23:03:05 +0800 org.archive.jmx.Client currentThreadCount: 10java线程数
java -jar cmdline-jmxclient-0.10.3.jar - 92.168.1.250:12345 'Catalina:name="http-nio-8080",type=ThreadPool' maxThreads
09/04/2023 23:07:41 +0800 org.archive.jmx.Client maxThreads: 200
安装java gateway
#apt -y install zabbix-java-gateway
zabbix修改添加配置
JavaGateway=192.168.1.150
StartJavaPollers=10
添加主机
添加java模版查看数据