基于markdown消息类型实现钉钉报警,让感官更舒服
admin
2023-07-19 01:42:09
0

        基于钉钉方式报警,网上普遍存在的是:

         1、报警脚本中 使用钉钉提供的 "text" 文本方式填充内容,报警内容均为黑白字体;

         2、钉钉报警彩色显示内容,使用github上现成的二进制程序,配合xml文本,固定格式报警,程序有可能对zabbix版本有些缺陷;

        基于markdown消息类型,可以实现字体彩色显示,并且报警格式配置更加灵活,更有利于个性化定制消息

       

        成品报警图

        基于markdown消息类型实现钉钉报警,让感官更舒服    基于markdown消息类型实现钉钉报警,让感官更舒服


       钉钉报警各种文章配置大同小异,不再详细介绍,只将步骤写出,其他参考网络文章即可,着重会写出markdown类型配置。


       后面用到的先在此说明:

   zabbix版本:
       V3.4.6
       
   zabbix脚本路径:
      zabbix_server.conf 文件中 AlertScriptsPath  字段配置
      
   webhook 是什么,机器人支持的markdown语法是什么?

           https://open-doc.dingtalk.com/docs/doc.htm?treeId=257&articleId=105735&docType=1



        zabbix web配置

          1、 Administrator -- media types  增加钉钉报警类型

基于markdown消息类型实现钉钉报警,让感官更舒服


2、Administrator-- users  建立报警用户

       此处使用super user , 发送对象为 手机号


基于markdown消息类型实现钉钉报警,让感官更舒服


3、 configure -- action  添加报警动作 【重点说明:markdown 内容编辑在于此

       在 【options -- default messages】中写入markdown语法内容,用html语法可设置字体颜色,在;

       此处对应脚本中要发送的内容,内容使用zabbix内置变量即可。

    事故等级: {TRIGGER.SEVERITY}         
    ##### **发生时间**:  {EVENT.DATE} {EVENT.TIME}      
    ##### **机器**: {HOST.NAME} - {HOST.IP}      
    **问题**: {TRIGGER.NAME}      
    **报警值**: {ITEM.VALUE}

        在 option details 中 send only to  选中 设置的钉钉报警 (详细设置参考网络文章,略)


        同理,【recovery options -- default mesages】写入报警恢复时发送内容

    **状态**: {TRIGGER.STATUS}        
    **机器**: {HOST.NAME} - {HOST.IP}    
    **恢复时间**: {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}          
    **问题**: {TRIGGER.NAME}    
    **报警值**: {ITEM.VALUE}


        以上是页面配置中针对markdown类型的语法实例,效果见文章开头,根据个人喜好DIY设置即可。


        发送脚本基于网上的python脚本,自己做了一些修改 :

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#  https://www.aityp.com
## mobified by benson , remove config file

import requests
import json
import sys
import os
import time
#import configparser

headers = {'Content-Type': 'application/json;charset=utf-8'}
time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())


log_file = "/var/log/zabbix/zabbix_dingding.log"
api_url = "https://oapi.dingtalk.com/robot/send?access_token=bdd59ba55647c60ea9d63025c2af416fb9bd67d17e351430b0535d4ba55da2d2"


def log(info):
    #注意权限,否则写不进去日志
    if os.path.isfile(log_file) == False:
               f = open(log_file, 'a+')

    f = open(log_file,'a+')
    f.write(info)
    f.close()

def msg(text,user):
    json_text= {
     "msgtype": "markdown",
        "markdown": {
            "title":"zabbix monitor",
            "text": text
        },
        "at": {
            "atMobiles": [
                user
            ],
            "isAtAll": True
        }
    }

    r=requests.post(api_url,data=json.dumps(json_text),headers=headers).json()
    code = r["errcode"]
    if code == 0:
        log(time + ":消息发送成功 返回码:" + str(code) + "\n")
    else:
        log(time + ":消息发送失败 返回码:" + str(code) + "\n")
        exit(3)

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




相关内容

热门资讯

日本拟将航空自卫队改编为航空宇... 新华社东京6月14日电 (记者李子越 刘洁秋)据《日本经济新闻》14日报道,日本政府计划于2026年...
推动终身学习蔚然成风 为广东发... □杨帅 终身学习既是时代发展的必然要求,也是广东奋进前行的有力支撑。当前,我们正处在一个知识爆炸、变...
原创 又... 据香港英文媒体《南华早报》6月5日报道,此前在国际顶尖名校加州大学伯克利分校物理系任教的顶尖天体物理...
原创 荣... 荣耀新机从不缺席,而且近月连续推出新机,比如4月的荣耀X80i、荣耀畅玩70C等;5月的荣耀WIN ...
3D空间记忆App“Remy”... IT之家 6 月 14 日消息,去年 6 月的华为开发者大会 HDC 2025 上,华为终端 BG ...
不满以色列空袭贝鲁特,特朗普指... 当地时间14日,美国总统特朗普在接受以色列媒体采访时表示,对以色列空袭黎巴嫩首都贝鲁特表示不满,并指...
中国和蒙古国外长会谈联合新闻公... 新华社乌兰巴托6月14日电 中华人民共和国和蒙古国外交部长会谈联合新闻公报应蒙古国国家大呼拉尔委员、...
俄总统助理:特朗普告知俄方美伊... 新华社莫斯科6月14日电 俄罗斯总统助理乌沙科夫14日说,美国总统特朗普在与俄总统普京进行电话交谈时...
大国博弈下,一场没有终局的产业... 【文/王力 编辑/周远方】6月8日,五角大楼正式发布最新版1260H“中国涉军企业”清单,药明康德与...
让儿童手表回归定位、通话等刚需... 一块小小的儿童手表,原本承载着家长对孩子安全的牵挂,为何却成了防不胜防的隐患入口? 近年来,儿童智能...