zabbix4.0之监控mysql+钉钉告警

目的

本次实验主要监控mysql状态,如果在线,就正常运行;不在线就进行报警。

实验环境

主机名

IP地址

功能

n1

192.168.231.20

zabbix-server

n4

192.168.231.23

zabbix-agent,mysql

zabbix-agent端配置

zabbix-agent配置文件修改

[root@n4 ~]# egrep -v "^$|#" /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.231.20 #zabbix-server端IP
ServerActive=127.0.0.1
Hostname=192.168.231.23
Include=/etc/zabbix/zabbix_agentd.d/*.conf

快速安装mysql5.7

[root@n4 ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
[root@n4 ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm
[root@n4 ~]# yum -y install mysql-community-server
[root@n4 ~]# systemctl start mysqld.service

查看密码

[root@n4 ~]# grep "password" /var/log/mysqld.log
2019-04-24T12:57:17.655875Z 1 [Note] A temporary password is generated for root@localhost: ;e4ZYdJlaDko
[root@n4 ~]# mysql -uroot -p
关闭有效密码政策,并设置密码长度最小为1
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

设置密码

mysql> alter user 'root'@'localhost' identified by '123456';
mysql> update mysql.user set host='%' where user='root';

自定义key

[root@n4 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.ping,mysqladmin -uroot -p123456 -h'127.0.0.1' ping 2> /dev/null | grep -c alive
UserParameter后跟key名称,mysql.ping后跟执行的命令

重启服务

[root@n4 ~]# systemctl restart zabbix-agent.service

zabbix-server服务端配置

zabbix-server端测试

查看mysql是否在线,返回1则在线,0则不在线

[root@n1 ~]# zabbix_get -s 192.168.231.23 -p 10050 -k mysql.ping

1

 创建被监控主机

zabbix4.0之监控mysql+钉钉告警_第1张图片

zabbix4.0之监控mysql+钉钉告警_第2张图片

创建应用集

zabbix4.0之监控mysql+钉钉告警_第3张图片

zabbix4.0之监控mysql+钉钉告警_第4张图片

创建监控项(监控mysql是否在线)

zabbix4.0之监控mysql+钉钉告警_第5张图片

zabbix4.0之监控mysql+钉钉告警_第6张图片

创建触发器(值不等于1则触发)

zabbix4.0之监控mysql+钉钉告警_第7张图片

创建图形

zabbix4.0之监控mysql+钉钉告警_第8张图片

查看mysql状态

zabbix4.0之监控mysql+钉钉告警_第9张图片

实现钉钉报警

下载钉钉后创建群组(linux运维)

添加机器人实现报警

zabbix4.0之监控mysql+钉钉告警_第10张图片

添加

图片.png

zabbix4.0之监控mysql+钉钉告警_第11张图片

zabbix4.0之监控mysql+钉钉告警_第12张图片

zabbix4.0之监控mysql+钉钉告警_第13张图片

添加完成

zabbix4.0之监控mysql+钉钉告警_第14张图片

电脑端网页登录钉钉,查看告警机器人的webhook(web登录:https://im.dingtalk.com/)

zabbix4.0之监控mysql+钉钉告警_第15张图片

创建告警脚本

这个目录是zabbix告警脚本存放目录

[root@n1 ~]# vim /usr/lib/zabbix/alertscripts/ding.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
#api_url后跟告警机器人的webhook
api_url = "https://oapi.dingtalk.com/robot/send?access_token=xxx"
def msg(text):
   json_text= {
    "msgtype": "text",
    "text": {
        "content": text
    },
    "at": {
        "atMobiles": [
            "real"    #@群里的real
        ],
        "isAtAll": True  #@所有人
    }
   }
   print(requests.post(api_url,json.dumps(json_text),headers=headers).content)
if __name__ == '__main__':
   text = sys.argv[1]
   msg(text)

[root@n1 ~]# cd /usr/lib/zabbix/alertscripts/

赋予执行权限

[root@n1 alertscripts]# chmod +x ding.py

2019.5.29------------------------

[root@n1 alertscripts]# yum install python-pip -y

[root@n1 alertscripts]#  pip install requests

-------------------------------------

测试

[root@n1 alertscripts]# ./ding.py test  #test是参数

{"errmsg":"ok","errcode":0}

zabbix4.0之监控mysql+钉钉告警_第16张图片

创建媒介类型

管理-》报警媒介-》创建媒体类型

zabbix4.0之监控mysql+钉钉告警_第17张图片

创建动作

zabbix4.0之监控mysql+钉钉告警_第18张图片

配置动作

zabbix4.0之监控mysql+钉钉告警_第19张图片

 配置告警操作(消息内容见下文)​ zabbix4.0之监控mysql+钉钉告警_第20张图片

配置恢复操作

zabbix4.0之监控mysql+钉钉告警_第21张图片

配置更新操作

zabbix4.0之监控mysql+钉钉告警_第22张图片

如果想知道消息内容中宏,可参考官网宏的使用场景

服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}

服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
}

服务器:{HOST.NAME}: 报警确认
{
确认人:{USER.FULLNAME} 
时间:{ACK.DATE} {ACK.TIME} 
确认信息如下:
"{ACK.MESSAGE}"
问题服务器IP:{HOSTNAME1}
问题ID:{EVENT.ID}
当前的问题是: {TRIGGER.NAME}
}

测试

在n4上停止mysql服务

[root@n4 ~]# systemctl restart mysqld.service

zabbix4.0之监控mysql+钉钉告警_第23张图片

你可能感兴趣的:(Zabbix)