Zabbix对接飞书告警

利用服务器和飞书API给飞书账号发消息,在很多实际的场景中会有作用,比如应用程序的报警通知,或者数据报表的通知等等,这里就简单总结一下步骤。

有两种方式可以实现往飞书发送告警消息

一.通过群组机器人在同一个群组内发送告警消息(只能发给同一个群里,无法发送到群外的个人消息)

1.新建一个群聊天、点击设置,并点击群机器人,添加一个群机器人
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2.配置机器人信息,这里可自行配置,我这边演示,默认即可,这里有个关键信息是 webhook地址
在这里插入图片描述在这里插入图片描述
3.编辑服务器上的发送脚本,并测试

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import requests
import json
import sys
import os
import datetime

# 你复制的webhook地址粘贴进url内
url = "https://open.feishu.cn/open-apis/bot/v2/hook/d61e7b5b-2c40-4de9-a263-10x1a0f6e037"


def send_message(message):
    payload_message = {
        "msg_type": "text",
        "content": {
            "text": message
        }
    }
    headers = {
        'Content-Type': 'application/json'
    }

    response = requests.request("POST", url, headers=headers, data=json.dumps(payload_message))
    return response


if __name__ == '__main__':
    text = sys.argv[1]
    send_message(text)

在这里插入图片描述在这里插入图片描述
这里注意一下,服务器上的脚本要提前确认好有执行权限,python环境正常。

二.通过自建应用发送告警消息(可以发给群组也可以发给个人)

1.先自己建立一个飞书测试的企业,信息随便填,这里不赘述;第一步是中建应用,在开发者后台自建在

2.配置自建应用,这里只配置关键的功能,其他的可以自行配置,主要2个,机器人启用和权限开通;发送消息和通过手机号获取用户ID的权限

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3.先将机器人拉到任意一个群内获取chatid,这一步一定要做;然后再复制App ID及App Secret到脚本内,并测试。
在这里插入图片描述

#!/usr/bin/python3
#conding=utf-8
import requests,json,sys
mobiles=sys.argv[1]
subject=sys.argv[2]
messages=sys.argv[3]
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":"XXXXX",
        "app_secret":"XXXXXXX"

    }
    request=requests.post(url=tokenurl,headers=headers,json=data)
    response=json.loads(request.content)['tenant_access_token']
    return response
def getuserid(tenant_access_token):
    mobiles="17317452675"
    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
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
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)


tenant_access_token=gettenant_access_token()
user_id=getuserid(tenant_access_token)
chat_id=getchatid(tenant_access_token)
sendmes(user_id,chat_id,tenant_access_token)

在这里插入图片描述

测试正常!

附一些报错的原因及解决办法:

1.应用权限不足,无法通过手机号获取用户id


Traceback (most recent call last):
  File "./feishuapp.py", line 55, in <module>
    user_id=getuserid(tenant_access_token)
  File "./feishuapp.py", line 23, in getuserid
    response=json.loads(request.content)['data']['mobile_users'][mobiles][0]['user_id']

2.没有把机器人加入或者创建群聊,无法获取chatid

Traceback (most recent call last):
  File "./feishuapp.py", line 55, in <module>
    chat_id=getchatid(tenant_access_token)
  File "./feishuapp.py", line 30, in getchatid
    response=json.loads(request.content)['data']['groups'][0]['chat_id']
IndexError: list index out of range


三.补充zabbix端的配置

告警媒介:feishu.py是脚本名
在这里插入图片描述用户配置
在这里插入图片描述

动作配置
在这里插入图片描述

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
要使用 Zabbix 实现 QQ 邮箱告警,你需要按照以下步骤进行配置: 1. 确保 Zabbix 服务器和代理已正确安装和配置。 2. 登录 Zabbix Web 界面,并转到 "Administration"(管理)-> "Media types"(媒体类型)。 3. 点击 "Create media type"(创建媒体类型)。 4. 在 "Type"(类型)字段中选择 "Email"(电子邮件)。 5. 在 "SMTP server"(SMTP 服务器)字段中输入 QQ 邮箱的 SMTP 服务器地址(例如:smtp.qq.com)。 6. 在 "SMTP helo" 字段中输入 Zabbix 服务器的主机名或 IP 地址。 7. 在 "SMTP email"(发件人电子邮件)字段中输入 QQ 邮箱的完整电子邮件地址。 8. 在 "SMTP security"(SMTP 安全性)字段中选择适当的安全选项。如果使用 SSL/TLS,请选择适当的加密方式。 9. 输入你的 QQ 邮箱的登录凭据,包括 "SMTP username"(SMTP 用户名)和 "SMTP password"(SMTP 密码)。 10. 确定所有设置都正确无误后,点击 "Save"(保存)。 接下来,你需要为 Zabbix 用户配置 QQ 邮箱告警: 1. 转到 "Administration"(管理)-> "Users"(用户)。 2. 选择要配置 QQ 邮箱告警的用户,或创建新用户。 3. 在 "Media"(媒体)选项卡中,点击 "Add"(添加)。 4. 在 "Type"(类型)字段中选择刚才创建的 QQ 邮箱媒体类型。 5. 在 "Send to"(接收者)字段中输入 QQ 邮箱地址。 6. 确保 "Enabled"(已启用)复选框被选中。 7. 保存更改。 最后,你需要在 Zabbix 中配置告警动作以触发 QQ 邮箱告警: 1. 转到 "Configuration"(配置)-> "Actions"(动作)。 2. 选择要配置 QQ 邮箱告警的动作,或创建新动作。 3. 在 "Operations"(操作)选项卡中,点击 "New"(新建)。 4. 在 "Send to Users"(发送给用户)字段中选择配置了 QQ 邮箱告警的用户。 5. 配置其他告警操作,如邮件主题、邮件内容等。 6. 保存更改。 完成上述步骤后,当触发了相关的告警条件时,Zabbix 将通过 QQ 邮箱发送告警通知给指定的用户。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值