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



欢迎关注个人公号“没有故事的陈师傅”

原文地址:https://blog.51cto.com/12970189/2472377

时间: 2024-11-13 08:08:09

ZABBIX对接飞书实现报警通知的相关文章

ZABBIX对接飞书实现带图片的报警通知

飞书提供了丰富的api来实现消息的通知,包括文本消息.图片消息.富文本消息,本次介绍使用飞书api发送富文本消息,以下是实现思路飞书API地址:https://open.feishu.cn/document/ukTMukTMukTM/uITNz4iM1MjLyUzM 实现思路 1.根据正则获取监控项id,需要在动作中定义报警信息2.根据获取的监控项id构造请求获取图片地址,并下载到本地3.需要获取三个授权凭证 app_access_token :访问App资源相关接口. tenant_acces

[Zabbix] 如何实现邮件报警通知以及免费短信报警通知

 前提条件: (1) zabbix服务器端已经成功安装并且运行. (2) zabbix客户端已经成功建立并且运行. 1 下载并且安装msmtp软件 Wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2/download   tar jxvf msmtp-1.4.32.tar.bz2 cd msmtp-1.4.32 ./configure--prefix=/usr/local/msmtp

zabbix实现QQ邮件报警通知(最详细)--技术流ken

前言 前几天搜了下网上使用zabbix邮件报警通知的文章,大多数还是使用mailx的方法,过程配置起来比较冗余繁琐,这几天想着把自己平时用到的qq邮件报警的方法分享出来供大家参考,以此减少不必要的步骤. zabbix监控端添加客户端 关于如何实现添加主机这里就不再赘述,相信大家对于这个已经很熟练了,大家也可以参考我的博客<分布式系统监视zabbix讲解一之zabbix安装--技术流ken> 第一步:添加监控主机 无需添加模版,我们来自定义监控项 第二步:添加监控点 点击你添加的监控项,创建一个

zabbix4添加配置微信报警通知

微信告警首先注册一个企业微信,才能实现微信告警.注册地址:https://work.weixin.qq.com/ . 申请企业微信号1). 申请好后需记录几项重要信息,后面zabbix server端监控脚本需使用到.登录网页 - 我的企业 - 企业ID:2). 创建应用登录网页 - 应用管理 - 应用 - 创建应用记录并获取到AgentId.SecretAgentId:xxxxxSecret:xxxxx3). 添加通讯录登录网页 - 通讯录 - 添加成员添加后才可收取到信息. zabbix s

Zabbix配置企业钉钉报警

Zabbix配置企业钉钉报警 一.Zabbix简介1.zabbix(音同 z?bix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.2.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.3.zabbix由2部分构成,zabbix server与可选组件zabbix agent.4.zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/

Linux利用sendmail和fetion发送报警通知

一.sendmail报警通知 1.停止系统自带的sendmail服务 # /etc/init.d/postfix stop 2.安装sendmail和mailx # yum -y install sendmail mailx 3.修改sendmail配置文件 # cp /etc/mail.rc /etc/mail.rc.bak # cat >> /etc/mail.rc << EOF set [email protected] smtp=smtp.139.com  set [ema

zabbix 3.0.2微信报警

一.注册微信公众号 首先申请微信公众平台https://mp.weixin.qq.com/一个人最多申请5个公众号,所以还是可以的 申请完之后就可以根据腾讯的提示使用微信公众号了,然后用你自己的微信扫描关注微信号. 就可以看到用户数了,接下来的就要使用的用户的微信ID号了.点击用户查看用户的微信ID号.在浏览器查看用户的微信ID号.就是那个红色的ID了. https://mp.weixin.qq.com/cgi-bin/singlesendpage?t=message/send&action=i

Zabbix利用msmtp+mutt发送邮件报警

Zabbix利用msmtp+mutt发送邮件报警Zabbix支持多种报警的方式,其中成本最低.最方便的就是邮件报警的方式了.但是因为它不支持邮件的用户认证,这种方式现在也非常少见,同时安全性也差,如果在本机建邮件服务器的话也容易被误入垃圾邮件. 现在我们使用163的邮箱或者自己公司内部的邮箱,利用msmtp+mutt完成邮件的报警.(当然也可以利用移动139的邮箱或者联通沃邮箱,可以达到短信通知) 1.msmtp的安装 wget http://jaist.dl.sourceforge.net/p

Zabbix 3.2 短信报警配置

原理:通过脚本将zabbix报警信息传递到短信接口并发送至手机. 步骤简述: 1.定制调用短信接口的脚本->2.配置zabbix调用脚本的media type->3.配置zabbix触发器及报警动作action. Step1 指定zabbix server报警脚本路径  #vim /etc/zabbix/zabbix-server.conf # AlertScriptsPath=${datadir}/zabbix/alertscripts #去掉注释,指定报警脚本路径 AlertScripts