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

import sys
import json
import requests

def send_feishu_alert(webhook_url, title, message):
    """
    发送告警信息到飞书
    :param webhook_url: 飞书机器人webhook地址
    :param title: 告警标题
    :param message: 告警内容
    :return: 发送结果
    """
    # 构建飞书消息格式
    payload = {
        "msg_type": "interactive",
        "card": {
            "config": {
                "wide_screen_mode": True
            },
            "header": {
                "title": {
                    "tag": "plain_text",
                    "content": title
                },
                "template": "red"  # 默认为红色,可根据告警级别调整
            },
            "elements": [
                {
                    "tag": "div",
                    "text": {
                        "tag": "lark_md",
                        "content": message
                    }
                }
            ]
        }
    }

    try:
        # 发送POST请求
        response = requests.post(
            webhook_url,
            data=json.dumps(payload),
            headers={"Content-Type": "application/json"},
            timeout=10
        )

        # 检查响应状态
        if response.status_code == 200:
            result = response.json()
            if result.get("code") == 0:
                print("告警信息已成功发送到飞书")
                return True
            else:
                print(f"飞书API返回错误: {result.get('msg')}")
        else:
            print(f"HTTP请求失败,状态码: {response.status_code}")

    except Exception as e:
        print(f"发送告警失败: {str(e)}")

    return False

def main():
    # 检查参数数量
    if len(sys.argv) < 4:
        print("用法: python3 zabbix_feishu_alert.py <飞书机器人webhook> <标题> <消息内容>")
        sys.exit(1)

    # 获取参数
    webhook_url = sys.argv[1]
    title = sys.argv[2]
    message = sys.argv[3]

    # 发送告警
    success = send_feishu_alert(webhook_url, title, message)

    # 根据发送结果返回不同的退出码
    sys.exit(0 if success else 1)

if __name__ == "__main__":
    main()

使用说明

  1. 飞书机器人配置

    • 在飞书群组中创建一个机器人,获取其 Webhook 地址
    • 确保机器人有发送消息的权限
  2. 脚本配置

    • 将脚本保存到 Zabbix 服务器的AlertScriptsPath目录下
    • 赋予执行权限:chmod +x zabbix_feishu_alert.py
    • 安装依赖:pip3 install requests
  3. Zabbix 告警媒介配置

    • 类型:脚本
    • 脚本名称:zabbix_feishu_alert.py
    • 脚本参数:

      • {ALERT.SENDTO} - 直接填写飞书机器人 Webhook 地址
      • {ALERT.SUBJECT} - 告警标题
      • {ALERT.MESSAGE} - 告警内容
  4. 自定义调整

    • 可以根据需要修改消息卡片的样式,如颜色、布局等
    • 可根据告警级别调整 header 中的 template 颜色(red, green, blue 等)
Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2025-08-12 17:36:04

results matching ""

    No results matching ""