zabbix 告警 (灾难电话通知)
# zabbix企业微信通知
# 生成企业微信机器人
- 首先登录企业微信拉个群聊,做群主
# 配置python企业微信通知脚本
#安装pip 工具
yum install python-pip -y
#更新pip版本,默认为8.1.2
pip install --upgrade pip==20.3.4 -i https://mirrors.aliyun.com/pypi/simple/
#python -m pip install --upgrade pip
#安装模块
pip install requests -i https://mirrors.aliyun.com/pypi/simple/
#https://files.pythonhosted.org/packages/92/96/144f70b972a9c0eabbd4391ef93ccd49d0f2747f4f6a2a2738e99e5adc65/requests-2.26.0-py2.py3-none-any.whl
2
3
4
5
6
7
8
9
10
11
12
- 企业微信通知脚本:
wechat.py
默认配置地址:/etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
#!/usr/bin/python
#-*- 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=f6cd9880-cb2b-44f6-942e-728320ea30" # 修改对应id
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__':
subject = sys.argv[1]
message = sys.argv[2]
text = subject + "\n\n" + message
msg(text)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- 调整的脚本,
#!/usr/bin/python
#-*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
def msg(text):
json_text= {
"msgtype": "text",
"text": {
"content": text
},
}
api_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" + QyrobotId
print requests.post(api_url,json.dumps(json_text),headers=headers).content
if __name__ == '__main__':
subject = sys.argv[1]
message = sys.argv[2]
QyrobotId = sys.argv[3]
text = subject + "\n\n" + message
msg(text)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
添加可执行权限,让zabbix用户可执行:chmod +x wechat.py
- 发送测试内容:
python wechat.py yfk 测试内容
把脚本放入到 zabbix_server.conf 配置参数"AlertScriptsPath"指定的目录
# zabbix配置报警媒介与动作
# 配置报警媒介类型
管理=》报警媒介类型=》创建媒介类型=》 类型-脚本
{ALERT.SUBJECT}
{ALERT.MESSAGE}
# 创建zabbix用户告警用户
用户群组=》创建用户群组=》权限-选择对应项目组
用户=》创建用户=》用户-省略=》报警媒介=》【添加-》类型-企业微信群聊机器人=》收件人有意义的名】=》权限=》【用户类型-管理员/超级管理员】
# 配置报警动作
配置=》动作=》事件源-触发器=》创建动作
- 动作
条件按照你的需求添加,我们一般通过新的触发器条件-触发器示警度 来做条件
- 操作
默认标题:Problem: {EVENT.NAME}
消息内容:
告警主机: {HOST.NAME1}
告警级别: {TRIGGER.SEVERITY}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
事件时间: {EVENT.DATE} {EVENT.TIME}
2
3
4
- 添加操作:
新的=》1.选择刚刚创建的用户或者用户组 (必须选择接收者)
2.仅送到-企业微信群聊机器人 -添加
- 恢复操作*
默认标题:Resolved: {EVENT.NAME}
消息内容:
告警主机: {HOST.NAME1}
告警级别: {TRIGGER.SEVERITY}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
事件时间: {EVENT.DATE} {EVENT.TIME}
2
3
4
- 添加操作:
新的=》1.选择刚刚创建的用户或者用户组 (必须选择接收者)
2.仅送到-企业微信群聊机器人 -添加
测试触发动作,检查是否正常发送消息
- 检查动作日志:报表=》动作日志
# zabbix电话告警(腾讯云语音消息)
# 腾讯云配置语音消息服务
前提你需要有一个腾讯云企业账号,个人账号无法开通服务
- 1.创建应用列表 voiceSDKAppID
- 2.基础配置,添加告警联系人
- 3.语音号码,申请号码
- 4.语音模板,输入内容 templateId
- 访问管理密钥
# 配置python电话通知脚本
#安装模块
pip install qcloudsms_py
pip install --upgrade tencentcloud-sdk-python
2
3
4
腾讯云API接口调试地址:https://cloud.tencent.com/document/sdk/Python
- 添加Python 脚本
tel_alert.py
#!/usr/bin/python
# _*_ encoding:utf-8 _*_
import json
import sys
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.vms.v20200902 import vms_client, models
#phone_numbers = "+861881397480"
tel_args = sys.argv[1]
phone_numbers = "+86" + tel_args
SecretId = "AKID4yd18yYrte8LHwL6csra2E9nAGpJ" #右上角头像-访问管理-访问密钥-API密钥管理
SecretKey = "FDuJSLxJPFo67rKWR5SYNAmKDqE" #右上角头像-访问管理-访问密钥-API密钥管理
templateId = "1288888" #语音消息-语音模板-ID(创建语音模板之后生成的ID)
voiceSDKAppID = "1400888888" #语音消息-应用列表,SDKAppID
try:
cred = credential.Credential(SecretId, SecretKey)
httpProfile = HttpProfile()
httpProfile.endpoint = "vms.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = vms_client.VmsClient(cred, "ap-guangzhou", clientProfile)
req = models.SendTtsVoiceRequest()
params = {
"TemplateId": templateId,
"CalledNumber": phone_numbers,
"VoiceSdkAppid": voiceSDKAppID
}
req.from_json_string(json.dumps(params))
resp = client.SendTtsVoice(req)
print(resp.to_json_string())
except TencentCloudSDKException as err:
print(err)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
把脚本放入到 zabbix_server.conf 配置参数"AlertScriptsPath"指定的目录
添加可执行权限,让zabbix用户可执行:chmod +x tel_alert.py
- 测试脚本是否正常:
python tel_alert.py 1881197480
# zabbix配置报警媒介与动作
# 配置报警媒介类型
管理=》报警媒介类型=》创建媒介类型=》 类型-脚本
{ALERT.SENDTO}
# 创建zabbix用户告警用户
用户群组=》创建用户群组=》权限-选择对应项目组
用户=》创建用户=》用户-省略=》报警媒介=》【添加-》类型-电话告警=》收件人-电话号码-严重级别只选择灾难】=》权限=》【用户类型-管理员/超级管理员】
# 配置报警动作
配置=》动作=》事件源-触发器=》创建动作
- 动作
条件按照你的需求添加,我们一般通过新的触发器条件-触发器示警度 来做条件,电话费比较昂贵,所以就只选最高级别灾难级别
- 操作
当出现故障进行一次电话告警,同时时间设置的长一点,防止频繁电话通知
默认标题:Problem: {EVENT.NAME}
消息内容:
告警主机: {HOST.NAME1}
告警级别: {TRIGGER.SEVERITY}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
事件时间: {EVENT.DATE} {EVENT.TIME}
2
3
4
- 添加操作
新的=》1.选择刚刚创建的用户或者用户组 (必须选择接收者)
2.仅送到-电话告警 -添加/更新
- 恢复操作
这时你已经醒来了,恢复操作你可以通过企业微信查看业务是否正常,有业务恢复信息,我这里就没有配置恢复电话通知,(老板可不想让恢复电话通知吵醒)
触发告警测试是否正常,有接收到电话
我这里收到广州地域的电话