zabbix配置钉钉报警
一、服务版本
linux:7.5-1804
zabbix:4.0.22
mysql:5.7.17
nginx:1.16.1
php:5.4.16
python-pip:2.7.5
二、部署zabbix利用自带模板监控mysql数据库
1、可以参照网上的文档,这里不再赘述
三、配置mysql利用zabbix
1、IP规划
Hostname | ip | 服务 |
---|---|---|
zabbix-server | 192.168.43.10 | zabbix-server、zabbix-agent、MySQL、nginx、php、python-pip |
zabbix-agent-mysql | 192.168.43.11 | MySQL |
2、利用zabbix自带模板实现对mysql监控
a.在zabbix-agent-mysql的MySQL里授权
[root@zabbix-agent-mysql ~]# mysql -uroot -p
mysql> grant select on *.* to “zabbix”@”%” identified by “123456”;
3、修改UnsafeUserParameter参数
[root@zabbix-agent-mysql ~]# grep UnsafeUserParameters /etc/zabbix/zabbix_agent.conf
### Option: UnsafeUserParameters
UnsafeUserParameters=1
4、编写监控脚本
[root@zabbix-agent-mysql ~]# vim /etc/zabbix/script/chk_mysql.sh
#!/bin/bash
MySQlBin=/usr/bin/mysql
MySQLAdminBin=/usr/bin/mysqladmin
Host=192.168.43.11
User=zabbix
Password=123456
if [[ $# == 1 ]];then
case $1 in
Uptime)
result=`$MySQLAdminBin -u$User -p$Password -h$Host status 2>/dev/null |cut -f2 -d":"|cut -f1 -d"T"`
echo $result
;;
Com_update)
result=`$MySQLAdminBin -u$User -p$Password -h$Host extended-status 2>/dev/null |grep -w "Com_update"|cut -d"|" -f3`
echo $result
;;
Slow_queries)
result=`$MySQLAdminBin -u$User -p$Password -h$Host status 2>/dev/null |cut -f5 -d":"|cut -f1 -d"O"`
echo $result
;;
Com_select)
result=`$MySQLAdminBin -u$User -p$Password -h$Host extended-status 2>/dev/null |grep -w "Com_select"|cut -d"|" -f3`
echo $result
;;
Com_rollback)
result=`$MySQLAdminBin -u$User -p$Password -h$Host extended-status 2>/dev/null |grep -w "Com_rollback"|cut -d"|" -f3`
echo $result
;;
Questions)
result=`$MySQLAdminBin -u$User -p$Password -h$Host status 2>/dev/null |cut -f4 -d":"|cut -f1 -d"S"`
echo $result
;;
Com_insert)
result=`$MySQLAdminBin -u$User -p$Password -h$Host extended-status 2>/dev/null |grep -w "Com_insert"|cut -d"|" -f3`
echo $result
;;
Com_delete)
result=`$MySQLAdminBin -u$User -p$Password -h$Host extended-status 2>/dev/null |grep -w "Com_delete"|cut -d"|" -f3`
echo $result
;;
Com_commit)
result=`$MySQLAdminBin -u$User -p$Password -h$Host extended-status 2>/dev/null |grep -w "Com_commit"|cut -d"|" -f3`
echo $result
;;
Bytes_sent)
result=`$MySQLAdminBin -u$User -p$Password -h$Host extended-status 2>/dev/null |grep -w "Bytes_sent" |cut -d"|" -f3`
echo $result
;;
Bytes_received)
result=`$MySQLAdminBin -u$User -p$Password -h$Host extended-status 2>/dev/null |grep -w "Bytes_received" |cut -d"|" -f3`
echo $result
;;
Com_begin)
result=`$MySQLAdminBin -u$User -p$Password -h$Host extended-status 2>/dev/null |grep -w "Com_begin"|cut -d"|" -f3`
echo $result
;;
*)
echo -e "\033[33mUsage: ./getmysqlinfo {Uptime|Com_update|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_sent|Bytes_sent} \033[0m"
;;
esac
fi
5、在/etc/zabbix/etc/zabbix-agent/etc/编辑文件.my.cnf(需新建该文件),添加以下内容
[root@zabbix-agent-mysql script]# cat ../etc/.my.cnf
[mysql]
host=localhost
user=zabbix
password=123456
socket=/data/mysql/tmp/mysql.sock
[mysqladmin]
host=localhost
user=zabbix
password=123456
socket=/data/mysql/tmp/mysql.sock
6、编写/etc/zabbix/zabbix_agentd/userparameter_mysql.conf
[root@zabbix-agent-mysql ~]# vim /etc/zabbix/zabbix_agentd/userparameter_mysql.conf
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/etc/zabbix/etc mysql -N'
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],/etc/zabbix/script/chk_mysql.sh $1
UserParameter=mysql.ping,mysqladmin -uzabbix -p123456 -P3306 -h127.0.0.1 ping 2>/dev/null| grep -c alive
7、对文件重新授权
[root@zabbix-agent-mysql ~]# chown -R zabbix.zabbix /etc/zabbix
[root@zabbix-agent-mysql ~]# chmod 755 /etc/zabbix/script/chk_mysql.sh
8、重启服务
[root@zabbix-agent-mysql ~]# systemctl restart zabbix-agent
9、在zabbix的web界面添加主机
检查是否已启用
四、配置钉钉报警
1、在钉钉群聊的右上角添加自定义机器人
2、将webhook内容保存下来,备用
3、在server端编写脚本dingding.py
[root@zabbix-server ~]# grep alert /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@zabbix-server ~]# vim /usr/lib/zabbix/alertscripts/dingding.py
#!/usr/bin/env python
import json
import requests
import sys
def send_msg(url, remiders, msg):
headers = {'Content-Type': 'application/json; charset=utf-8'}
data = {
"msgtype": "text",
"at": {
"atMobiles": remiders,
"isAtAll": True,
},
"text": {
"content": msg,
}
}
r = requests.post(url, data=json.dumps(data), headers=headers)
return r.text
if __name__ == '__main__':
msg = sys.argv[1]
remiders = []
url = '刚刚复制wehook'
print(send_msg(url, remiders, msg))
4、linux系统python默认没有requests模块,运行脚本会报错
[root@zabbix-server ~]# yum -y install python-pip #安装pip工具
[root@zabbix-server ~]# pip install requests
5、测试脚本
[root@zabbix-server ~]# /usr/lib/zabbix/alertscripts/dingding.py '测试'
{"errcode":0,"errmsg":"ok"}
6、配置zabbix的web界面
1)、创建报警媒介
2)、配置用户可以使用脚本报警
3)、配置触发动作
a.将所有触发器添加
b.编辑操作,点击新的,恢复动作同样操作,最后点击更新
5)、测试
a.停掉192.168.43.11的mysql
[root@zabbix-agent-mysql ~]# systemctl stop mysqld
[root@zabbix-agent-mysql ~]# netstat -tnupl | grep :3306
故障发送成功
b.重启mysql服务
[root@zabbix-agent-mysql ~]# systemctl start mysqld
[root@zabbix-agent-mysql ~]# netstat -tnupl | grep :3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 15841/mysqld
b.重启mysql服务
[root@zabbix-agent-mysql ~]# systemctl start mysqld
[root@zabbix-agent-mysql ~]# netstat -tnupl | grep :3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 15841/mysqld
恢复发送成功