zabbix自定义监控

zabbix深入自定义监控

zabbix多条件触发

监控内存可用的百分比

UserParameter=mem.available,free -m|awk 'NR==2{print $NF/$2*100}'



目前属于单条件触发器,因为内存低于30%就报警了,在生产中,我们应该是当内存低于30%并且占用了swap空间,然后再报警。

UserParameter=swap.available,free -m|awk '/^Swap/{print $NF/$2*100}'

[root@sb_wzj web]# zabbix_get -s 172.16.1.7 -k swap.available



and             #并且
or              #或者
last()          #比对最新的值
avg()           #平均值
diff()          #比对上一次文件的内容
nodata()        #收不不到数据进行报警nodata(5m)
(5m)            #表示最近5分钟得到值
(#5)            #表示最近5次得到的值

zabbix 5.x以上告警

故障告警

<head>
    <style type="text/css">
        table .guzhang {color: red;}
    </style>
</head>
<body>
    <img src="https://blog.driverzeng.com/zenglaoshi/sos.png" alt="">
    <table border="3"  bordercolor="black" cellspacing="0px" cellpadding="4px" width="500px">
        <tr class="guzhang" bgcolor="#0C1B3D" ><th colspan=2>
            {TRIGGER.STATUS} 故障!!!故障!!! 
            <div>&#128514; &#128514; &#128514;</div>
        </tr>
        <tr >
            <td bgcolor="#F9B602" width="20%">告警主机</td>
            <td bgcolor="#F9B602">{HOSTNAME1}</td>
        </tr>
        <tr >
            <td bgcolor="#F9B602">告警别名</td>
            <td bgcolor="#F9B602">{HOST.NAME} </td>
        <tr >
        <tr >
            <td bgcolor="#F9B602">告警地址</td>
            <td bgcolor="#F9B602">{HOST.IP}</td>
        </tr>
        <tr>
            <td bgcolor="#F9B602">告警时间</td>
            <td bgcolor="#F9B602">{EVENT.DATE} {EVENT.TIME}</td>
        </tr>
     
        <tr>
            <td bgcolor="#F9B602">告警等级</td>
            <td bgcolor="#F9B602">{TRIGGER.SEVERITY}</td>
        </tr>
     
        <tr>
            <td bgcolor="#F9B602">告警信息</td>
            <td bgcolor="#F9B602">{TRIGGER.NAME}</td>
        </tr>
     
        <tr>
            <td bgcolor="#F9B602">告警项目</td>
            <td bgcolor="#F9B602">{TRIGGER.KEY1}</td>
        </tr>
        <tr >
            <td class='guzhang2' bgcolor="#FF3333">问题详情</td>
            <td class='guzhang3' bgcolor="#FF3333">{ITEM.NAME}:&nbsp;{ITEM.VALUE} &#128520; &#128520; &#128520;</td>
        </tr>
        <tr>
            <td bgcolor="#F9B602">当前状态</td>
            <td bgcolor="#F9B602">{TRIGGER.STATUS}:&nbsp;{ITEM.VALUE1}</td>
        </tr>
        <tr>
            <td bgcolor="#F9B602">事件ID</td>
            <td bgcolor="#F9B602">{EVENT.ID}</td>
        </tr>
    </table>
</body>

恢复告警

<head>
    <style type="text/css">
        table .guzhang {
            color: red;
        }
    </style>
</head>
<body>
<img src="https://blog.driverzeng.com/zenglaoshi/huifu.png" alt="">
    <table border="1"  bordercolor="black" cellspacing="0px" cellpadding="4px" width="500px">
        <tr bgcolor="#49c208"><th colspan=2>
        {TRIGGER.STATUS} 哈哈哈哈哈哈,好了 
        <div>&#128512; &#128512; &#128512;</div>
        </tr>
     
        <tr >
            <td bgcolor="lightgreen" width="20%">恢复主机</td>
            <td bgcolor="yellow">{HOSTNAME1}</td>
        </tr>
        <tr>
            <td bgcolor="lightgreen">恢复别名</td>
            <td bgcolor="yellow">{HOST.NAME} </td>
        <tr >
            <td bgcolor="lightgreen">恢复地址</td>
            <td bgcolor="yellow">{HOST.IP}</td>
        </tr>
        <tr>
            <td bgcolor="lightgreen">恢复时间</td>
            <td bgcolor="yellow">{EVENT.DATE} {EVENT.RECOVERY.TIME}</td>
        </tr>
     
        <tr>
            <td bgcolor="lightgreen">恢复等级</td>
            <td bgcolor="yellow">{TRIGGER.SEVERITY}</td>
        </tr>
     
        <tr>
            <td bgcolor="lightgreen">恢复信息</td>
            <td bgcolor="yellow">{TRIGGER.NAME}</td>
        </tr>
     
        <tr>
            <td bgcolor="lightgreen">恢复项目</td>
            <td bgcolor="yellow">{TRIGGER.KEY1}</td>
        </tr>
        <tr >
            <td bgcolor="#49c208">恢复详情</td>
            <td bgcolor="#49c208">{ITEM.NAME}:&nbsp;{ITEM.VALUE} &#9889; &#9889; &#9889;</td>
        </tr>
        <tr>
            <td bgcolor="lightgreen">当前状态</td>
            <td bgcolor="yellow">{TRIGGER.STATUS}:&nbsp;{ITEM.VALUE1}</td>
        </tr>
        <tr>
            <td bgcolor="lightgreen">事件ID</td>
            <td bgcolor="yellow">{EVENT.ID}</td>
        </tr>
    </table>
</body>

zabbix的自愈模式

有些时候,我们的服务宕机了,或者有些服务停掉了,那么我们可以先尝试让他启动,看是否能起的来,为了不影响用户的体验,先把服务起起来,然后再去排查,是什么原因故障的。

那么此时我们就需要用到zabbix的自愈模式,这个...叫起来很好听,说白了,就是在让zabbix-server通过远程执行命令的方式,在agent上执行命令,启动服务。


#修改配置文件
[root@web01 zabbix_agentd.d]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1

zabbix告警升级机制






计算方式:
1)开始于 ,这个是相对一但触发监控,则立即发送消息
2)1-2步骤是给运维组发送消息,每隔5分钟发送一次,总共2个步骤,所以发送2次
3)3-4步骤是给运维经理组发送消息,每隔5分钟发送一次,总共2个步骤,所以发送2次
4)4-5步骤是给运维总监组发送消息,每隔5分钟发送一次,总共2个步骤,所以发送2次
5)每次的开始时间是如何计算的呢,第一个立即开始:
1-2,3-4,4-5动作时间间隔是5分钟,所以在触发告警发送时间计算是5m+5m+5m=15m

聚合图形


zabbix微信报警

# 1.安装python的pip
[root@sb_wzj web]# yum install python-pip -y

# 2.安装python requests库
[root@sb_wzj ~]# pip2.7 install requests==2.27 -i  https://pypi.douban.com/simple/

# 3.进入zabbix存放告警脚本目录
[root@sb_wzj ~]# cd /usr/lib/zabbix/alertscripts/

# 4.编写微信告警脚本
[root@sb_wzj alertscripts]# vim weixin.py
#!/usr/bin/python3
#-*- coding: utf-8 -*-
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b3f00bb1-3198-4491-9429-a9fbe5444e23"   #这个是企业微信机器人生成的webhook地址,修改为你的即可。

def msg(text):
    json_text= {
     "msgtype": "text",
        "text": {
            "content": text
        },
    }
    print(requests.post(api_url,json.dumps(json_text),headers=headers).content)

if __name__ == '__main__':
    text = sys.argv[1]
    msg(text)

# 5.添加执行权限
[root@sb_wzj alertscripts]# chmod +x weixin.py 

微信群添加群机器人





posted @ 2022-08-25 21:23  Gabydawei  阅读(129)  评论(0编辑  收藏  举报