自定义监控项是没有报警机制的,需要配置触发器才能完成监控+报警流程
- 触发器配置
操作流程--->配置--->模板--->模板中的触发器--->创建触发器
-- 表达式格式;比如内存小于300M,访问IP大于等于6个
#表达式:触发异常的条件
格式:{<server>:<key>.<function>(<parameter>)}<operator><>
{模板名:监控键值key.函数(参数)}<表达式>常数
{myTem:get_httpd_count.last()}>=6
-- 告警级别,当触发器出发时,会触发事件给用户看到告警事件的严重程度
配置钉钉机器人告警
- 查看并打开脚本路径
vim /usr/local/etc/zabbix_server.conf
... ...
AlertScriptsPath=/usr/local/share/zabbix/alertscripts
... ...
-
在钉钉群创建钉钉机器人
-- 利用url发送一个post请求,测试机器人
curl 'https://oapi.dingtalk.com/robot/send?access_token=d7a45ac28b5bexxxxxx60f044564aba2aa' -H 'Content-Type: application/json' -d '{"msgtype": "text","text": {"content":"zabbix告警"}}'
自定义机器人接入 - 钉钉开放平台 (dingtalk.com)
- 编写python脚本
#在服务端配置告警
]# vim /usr/local/share/zabbix/alertscripts/dingding.py
#!/usr/local/bin/python3
import sys #导入包
import json
import requests
msg = sys.argv[1] #定义一个参数
phone = ['150xxxx1228'] #定义电话号码
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=d7a45ac28b5be09b37214560f044564abxxxxxc06bf43979acf6ee6dccdceb'
headers = {
'Content-Type': 'application/json;charset=UTF-8', # 发送数据为json,格式必须这样
}
data = { #发送内容的格式,由官方文档提供
"msgtype": "markdown",
"markdown": {
"title":"监控告警",
"text": msg
},
"at": {
"atMobiles": phone, #@个人手机号
"isAtAll": "false" #是否@所有人
}
}
ret = requests.post(url=webhook, headers=headers, data=json.dumps(data))
-- 测试脚本
]# python3 dingding.py zabbix告警
zabbix页面配置
-
创建报警媒介
-
测试报警媒介
-
创建专门用于报警的用户和用户组
-- 创建用户(配置--->用户--->创建用户)
-
配置动作用来触发告警媒介(配置--->动作--->创建动作)
-
配置动作的操作(告警触发动作之后的操作)
主题:Problem: {EVENT.NAME}
告警:
-=【告警啦】=-
告警主机别名:{HOST.NAME}
主机IP:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
监控内容:{TRIGGER.NAME}
当前状态:{ITEM.LASTVALUE}
告警恢复:
-=【告警取消啦】=-
告警主机别名:{HOST.NAME}
主机IP:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
监控内容:{TRIGGER.NAME}
当前状态:{ITEM.LASTVALUE}
故障时长:{EVENT.AGE}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
-
测试告警
-- 当有告警时,会有动作发生,钉钉收到告警
-- 告警恢复后