努力挣扎的生活 努力挣扎的生活
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)

yangfk

瑟瑟发抖的小运维
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)
  • 运维基础

  • 监控

    • zabbix 部署
    • zabbix 服务自动注册与发现
    • zabbix 告警 (灾难电话通知)
      • zabbix企业微信通知
        • 生成企业微信机器人
        • 配置python企业微信通知脚本
        • zabbix配置报警媒介与动作
        • 配置报警媒介类型
        • 创建zabbix用户告警用户
        • 配置报警动作
      • zabbix电话告警(腾讯云语音消息)
        • 腾讯云配置语音消息服务
        • 配置python电话通知脚本
        • zabbix配置报警媒介与动作
        • 配置报警媒介类型
        • 创建zabbix用户告警用户
        • 配置报警动作
    • grafana 部署
    • grafana 接入zabbix数据
    • prometheus 安装
    • prometheus 数据接入grafana
  • 日志系统

  • 安全记录

//
  • 运维
  • 监控
yangfk
2019-10-25

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

1
2
3
4
5
6
7
8
9
10
11
12

z_notice4

  • 企业微信通知脚本: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)

1
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)
1
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}

z_notice4

# 创建zabbix用户告警用户

用户群组=》创建用户群组=》权限-选择对应项目组

用户=》创建用户=》用户-省略=》报警媒介=》【添加-》类型-企业微信群聊机器人=》收件人有意义的名】=》权限=》【用户类型-管理员/超级管理员】

# 配置报警动作

配置=》动作=》事件源-触发器=》创建动作

  • 动作

条件按照你的需求添加,我们一般通过新的触发器条件-触发器示警度 来做条件

  • 操作

默认标题:Problem: {EVENT.NAME}

消息内容:

告警主机: {HOST.NAME1}
告警级别: {TRIGGER.SEVERITY}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
事件时间: {EVENT.DATE} {EVENT.TIME}
1
2
3
4
  • 添加操作:

新的=》1.选择刚刚创建的用户或者用户组 (必须选择接收者)

2.仅送到-企业微信群聊机器人 -添加

  • 恢复操作*

默认标题:Resolved: {EVENT.NAME}

消息内容:

告警主机: {HOST.NAME1}
告警级别: {TRIGGER.SEVERITY}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
事件时间: {EVENT.DATE} {EVENT.TIME}
1
2
3
4
  • 添加操作:

新的=》1.选择刚刚创建的用户或者用户组 (必须选择接收者)

2.仅送到-企业微信群聊机器人 -添加

测试触发动作,检查是否正常发送消息

  • 检查动作日志:报表=》动作日志

# zabbix电话告警(腾讯云语音消息)

# 腾讯云配置语音消息服务

前提你需要有一个腾讯云企业账号,个人账号无法开通服务

  • 1.创建应用列表 voiceSDKAppID
  • 2.基础配置,添加告警联系人
  • 3.语音号码,申请号码
  • 4.语音模板,输入内容 templateId
  • 访问管理密钥

# 配置python电话通知脚本

#安装模块
pip install qcloudsms_py

pip install --upgrade tencentcloud-sdk-python
1
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)
1
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}
1
2
3
4
  • 添加操作

新的=》1.选择刚刚创建的用户或者用户组 (必须选择接收者)

2.仅送到-电话告警 -添加/更新

  • 恢复操作

这时你已经醒来了,恢复操作你可以通过企业微信查看业务是否正常,有业务恢复信息,我这里就没有配置恢复电话通知,(老板可不想让恢复电话通知吵醒)

触发告警测试是否正常,有接收到电话

我这里收到广州地域的电话

//
如果此文章对您有帮助,点击 -->> 请博主喝咖啡 (opens new window)
上次更新: 2024/06/18, 14:42:35
zabbix 服务自动注册与发现
grafana 部署

← zabbix 服务自动注册与发现 grafana 部署→

最近更新
01
Linux Polkit 权限提升漏洞(CVE-2021-4034)
03-28
02
postgreSQL维护
03-17
03
trivy系统漏洞扫描
02-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 yangfk | 湘ICP备2021014415号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
//