文章目录
- 1.配置钉钉告警
- server 配置
- web界面创建媒介
- 给用户添加媒介
- 测试告警
- 实现故障自愈功能
- 监控Java
- zabbix server 安装java gateway
- 配置 Zabbix Server 支持 Java gateway
- 使用系统内置模板监控 tomcat 主机
1.配置钉钉告警
server 配置
钉钉告警python脚本
脚本1
cd /lib/zabbix/alertscripts/
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))
脚本2
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()
web界面创建媒介
错误1:
sh: 1: /usr/lib/zabbix/alertscripts/dingding.py: not found
单python3 文件名字 测试正常,还以为ubuntu不支持,结果多次测试是因为是在window复制创建的文件,使用./文件名发现有其他字符^M,^M字符表示回车符,它可能是由于使用Windows风格的换行符引起的。在Linux系统上,需要使用Unix风格的换行符。
你可以尝试使用dos2unix命令来转换文件的换行符格式。打开终端,并运行以下命令:dos2unix python20
root@ubuntu20:/usr/lib/zabbix/alertscripts# ./dingding3.py
-bash: ./dingding3.py: /usr/bin/python3^M: bad interpreter: No such file or directory
给用户添加媒介
测试告警
实现故障自愈功能
当zabbix监控到指定的监控项异常时,可以通过指定的操作使故障自动恢复以nginx服务为例,当nginx服务停止时,自动重启服务,实现故障自愈功能
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 #允许远程执行命令的时候使用不安全的参数(特殊字符串,如: \ ' *
默认zabbix agent是使用zabbix用户启动的,有些特权命令zabbix用户是没有权限执行,会导致定义好
的自治愈策略因为权限拒绝为执行失败,所以需要事先对zabbix用户进行授权.
[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
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
界面查看数据没有更新,查看日志,agent配置文件中hostname和服务端页面的主机名称要一样
问题2:zbx是灰色,但查看数据正常,是因为这个主机的模版全是主动模式。server 不会向agent发,添加其他被动模式模版即可
监控Java
Zabbix 不支持直接监控JAVA应用
如果要监控JAVA程序比如Tomcat等,需要使用 Java gateway 做为代理,才能从JAVA应用中获取数据
Zabbix 监控JVM流程
zabbix-server 通知 zabbix-Java-Gateway需要获取监控主机的哪些监控项
Zabbix-Java-Gateway 通过 JMX 协议请求采集 Java进程数据
Java程序通过 JMX 协议返回数据给 zabbix-Java-Gateway
zabbix-Java-Gateway 最终返回数据给 zabbix-server
zabbix-server 对采集的JAVA 数据进行存储,然后进行 Web 展示
-
192.168.1.250安装好java+tomcat环境
-
Tomcat 开启 JMX 功能
192.168.1.250填本机ip
#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' currentThreadCount
09/04/2023 23:03:05 +0800 org.archive.jmx.Client currentThreadCount: 10
java线程数
java -jar cmdline-jmxclient-0.10.3.jar - 192.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
zabbix server 安装java gateway
Java gateway 是一个独立于zabbix server和 zabbix agent的组件,默认使用端口10052/tcp, 所以java
gateway可以是单独的一台服务器,但是也可以和zabbix server或者zabbix agent 共用一台服务器
apt -y install zabbix-java-gateway
配置 Zabbix Server 支持 Java gateway
zabbix修改添加配置
root@ubuntu20:~# vi /etc/zabbix/zabbix_server.conf
JavaGateway=192.168.1.150 #指向JAVA gateway主机
StartJavaPollers=10 #指定开启的进程数
使用系统内置模板监控 tomcat 主机
添加主机
添加java模版查看数据