专栏首页运维开发故事ZABBIX对接飞书实现报警通知

ZABBIX对接飞书实现报警通知

板凳要坐十年冷,文章不写半句空

特别感谢鹏哥提供实验环境供我测试

飞书提供了丰富的api来实现消息的通知,包括文本消息、图片消息、富文本消息,本次介绍使用飞书api发送文本消息,以下是实现思路 飞书API地址:https://open.feishu.cn/document/ukTMukTMukTM/uITNz4iM1MjLyUzM

实现思路

1.需要获取三个授权凭证

  • app_access_token : 访问App资源相关接口。
  • tenant_access_token : 访问企业资源相关接口。
  • user_access_token : 访问用户资源相关接口。

2.根据zabbix报警的收信人手机号获取user_id,用于后面在群里@相关负责人,或者直接发给某个责任人 3.chat_id用于发送给指定的群,这里我提供两种方法获取chat_id,后面会介绍 4.传入zabbix报警消息,并艾特相关负责人发送到飞书群里或者个人

获取授权凭证

1.获取 App ID 和 App Secret

登录开发者后台,在“我的应用”页面创建企业自建应用。进入企业自建应用详情页,获取App ID和App Secret。

2.获取 tenant_access_token

一种方法是通过企业自建应用方式获取,另一种是通过应用商店应用获取,这里我使用第一种方法,直接创建应用即可

3.创建完应用后可根据APP ID和 App Secret构造请求获取

def gettenant_access_token():
    tokenurl="https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"
    headers={"Content-Type":"application/json"}
    data={        "app_id":"cli_9ec625abcdefg",        "app_secret":"f716Gi27Yi25n5K0Wbafgwghhstv"

    }
    request=requests.post(url=tokenurl,headers=headers,json=data)
    response=json.loads(request.content)['tenant_access_token']    return response

获取user_id

user_id可以根据注册的手机号或邮箱获取,可以在zabbix中定义用户的手机号,然后传入参数获取user_id

def getuserid(tenant_access_token):
    #mobiles="15101234584"
    userurl="https://open.feishu.cn/open-apis/user/v1/batch_get_id?mobiles=%s"%mobiles
    headers={"Authorization":"Bearer %s"%tenant_access_token}
    request=requests.get(url=userurl,headers=headers)
    response=json.loads(request.content)['data']['mobile_users'][mobiles][0]['user_id']    return response

获取chat_id

这里我提供两种方法获取chat_id,一种是将机器人加入到群里,获取群信息中的chat_id;另一种是通过机器人创建群聊获取群信息,当然还有其他的方法,这里我就不过多介绍了,我将使用第一种方法来获取chat_id

首先将机器人加入到群聊

构造请求获取chat_id

def getchatid(tenant_access_token):
    #获取chatid
    chaturl="https://open.feishu.cn/open-apis/chat/v4/list?page_size=20"
    headers={"Authorization":"Bearer %s"%tenant_access_token,"Content-Type":"application/json"}
    request=requests.get(url=chaturl,headers=headers)
    response=json.loads(request.content)['data']['groups'][0]['chat_id']    return response

向飞书群里或者飞书用户发送消息

这里需要三个参数,一个是user_id,一个是chat_id,另一个是tenant_access_token,并传入报警信息即可发送

def sendmes(user_id,chat_id,tenant_access_token):
    #向群里发送消息
    sendurl="https://open.feishu.cn/open-apis/message/v4/send/"
    headers={"Authorization":"Bearer %s"%tenant_access_token,"Content-Type":"application/json"}
    data={"chat_id":chat_id,
        "msg_type":"text",
        "content":{
            "text":"%s<at user_id=\"%s\">test</at>"%(messages,user_id)
        }
    }
    #给个人发送消息
    # data={"user_id":user_id,
    #     "msg_type":"text",
    #     "content":{
    #         "text":"%s<at user_id=\"%s\">test</at>"%(messages,user_id)
    #     }
    # }
    request=requests.post(url=sendurl,headers=headers,json=data)
    print(request.content)

在ZABBIX上配置报警动作及接收人

配置报警媒介类型

注意参数顺序不能乱

配置用户的接收信息

也就是用户注册飞书的手机号

配置动作

报警测试

这里我禁掉了其中一台windows的agent进行测试

后续会添加带有图片信息的报警,完整代码请访问github组织遮阳笔记 https://github.com/sunsharing-note/zabbix/blob/master/feishu.py

本文分享自微信公众号 - 运维开发故事(mygsdcsf),作者:wanger

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 专栏|使用zabbix-agent2自定义插件获取https证书过期时间

    Zabbix运维工程师,熟悉Zabbix开源监控系统的架构。乐于分享Zabbix运维经验,个人公众号“运维开发故事”。

    没有故事的陈师傅
  • ZABBIX 事件通知

    在生产环境下被监控主机关联了监控项和触发器,当主机监控指标异常此时触发器状态发生改变产生异常事件,此时动作(action)选项将根据自定义的内容触发。当发生不同...

    Kevin song
  • 一个监控系统的诞生

    吴兆松 资深系统工程师,Zabbix监控系统“红宝书”作者,熟悉IT运维领域,对服务器运维、应用运维以及运维(DevOps)平台的构思、设计、开发等都具有十分丰...

    用户1682855
  • 第十七篇 zabbix报警媒介介绍

    前面我们讲解了Item,Trigger,以及创建用户相关的知识,Trigger是利用Item监控提供的数据来判断监控对象的状态,那么当判断出监控对象处于Prob...

    我是李超人
  • 01 . Zabbix简介原理及部署

    1> 数据采集: 可用性和性能检测,自动发现,支持agent,snmp,JMX,telnet等多种采集方式,支持主动和被动数据传输、支持用户自定义插件,自定义间...

    常见_youmen
  • 排查线上 Linux 系统故障,看这一篇就够了!

    之前分享过部分性能优化相关的文章,不过暂不成体系。但是不论你去面试高级工程师,还是架构师,性能优化的问题一定少不了。想彻底解决性能问题,就要全面了解程序设计、算...

    编程珠玑
  • 30分钟zabbix入门——最简单有效的zabbix快速学习法

    在公司搭建系统级别的监控,由于ELK对流量监控存在局限——现有的工具只记录了累计的流量,而无法计算每时每刻的流量。所以决定最后用zabbix来对网络做监控和报...

    小小科
  • zabbix告警系统--文末彩蛋

    zabbix安装和配置非常简单,学习成本低,但是zabbix告警却是很烦人的,而且关于告警的中文翻译资料非常少.

    互联网老辛
  • zabbix监控-基本原理介绍

    一、Linux下开源监控系统简单介绍 1)cacti:存储数据能力强,报警性能差 2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的...

    洗尽了浮华

扫码关注云+社区

领取腾讯云代金券