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

 创建被监控主机

图片.png

图片.png

创建应用集

图片.png

图片.png

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

图片.png

图片.png

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

图片.png

创建图形

图片.png

查看mysql状态

图片.png

实现钉钉报警

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

添加机器人实现报警

图片.png

添加

图片.png

图片.png

图片.png

图片.png

添加完成

图片.png

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

创建告警脚本

这个目录是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}

图片.png

创建媒介类型

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

图片.png

创建动作

图片.png

配置动作

图片.png

 配置告警操作(消息内容见下文)​ 图片.png

配置恢复操作

图片.png

配置更新操作

图片.png

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

服务器:{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

图片.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

real向往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值