1. 📋 模塊功能概述

功能截圖:

image.png

image.png

1.1 核心功能

  • 通知配置管理:創建、編輯、啓用/禁用通知渠道配置

  • 通知模板管理:管理可複用的消息模板,支持變量替換

  • 多平台支持:支持飛書(主)、釘釘、企業微信等

  • 實時預覽:提供模板和卡片的實時預覽

  • 測試發送:支持發送測試消息驗證配置

  • 發送記錄:記錄所有通知發送日誌

1.2 系統架構

前端 (Vue.js + Element Plus)
├── NotificationChannel.vue   # 通知渠道管理
├── NotificationTemplate.vue  # 模板管理
└── FeishuCardPreview.vue     # 飛書卡片預覽

後端 (Flask)
├── 通知模板管理API
├── 通知配置管理API
├── 消息發送API
└── 發送日誌API

2. 🚀 如何使用這個通知系統

2.1 配置通知渠道

  1. 進入通知配置頁面 路徑:/notification/channel

只有管理員可以看到"添加通知配置"按鈕

  1. 創建新配置
配置示例:
{
  "name": "運維告警羣",        // 配置名稱
  "type": "feishu",           // 通知類型
  "webhook_url": "飛書Webhook地址",
  "sign_secret": "簽名密鑰",   // 可選
  "template_id": 1,           // 關聯的模板ID
  "channel": "ops-alert",     // 頻道標識
  "enabled": true,            // 啓用狀態
  "remark": "用於服務器告警"    // 備註
}
  1. 獲取飛書Webhook
  • 在飛書羣中創建機器人

  • 獲取Webhook地址(以 https://open.feishu.cn/open-apis/bot/v2/hook/ 開頭)

  • 可選:配置簽名密鑰增強安全性

image.png

2.2 管理通知模板

  1. 進入模板管理頁面
  • 路徑:/notification/template

  • 系統已預置7個常用模板

  1. 使用預置模板

系統提供的預置模板:

  • 標準告警卡片 (alert_standard) - 用於系統告警

image.png

  • 成功通知卡片 (success_notice) - 用於成功操作通知

image.png

  • 任務完成卡片 (task_complete) - 用於任務完成通知

image.png

  • 數據統計卡片 (data_statistics) - 用於數據報告

image.png

  • 飛書標準卡片 (feishu_standard) - 原生飛書格式

image.png

  • 簡潔通知 (simple_notice) - 簡單消息

image.png

  1. 創建自定義模板
  • 變量語法:使用 {{ variable }} 格式

  • 支持變量:title, content, level, timestamp, service, details 等

  • Markdown支持:模板內容支持Markdown語法

image.png

2.3 發送通知消息

  1. 測試發送

在前端頁面點擊"測試發送"按鈕,驗證配置是否正確。

image.png

  1. 程序化發送(API調用)
# 其他模塊調用發送通知的示例
import requests

# 發送通知請求
response = requests.post('http://your-domain/api/notifications/send', 
    json={
        "template_id": 1,  # 使用哪個模板
        "channel": "ops-alert",  # 發送到哪個頻道(可選)
        "context": {  # 模板變量
            "title": "服務器CPU告警",
            "content": "CPU使用率達到95%",
            "level": "warning",
            "service": "web-server-01",
            "details": "詳情請查看監控面板"
        }
    },
    headers={'Authorization': 'Bearer your-jwt-token'}
)

2.4 查看發送記錄

訪問發送日誌

  • API端點:GET /notifications/logs

  • 可篩選:按配置ID、發送狀態等

3. 📝 實際使用示例

場景1:服務器監控告警

# 當CPU使用率過高時發送告警
def send_cpu_alert(server_name, cpu_usage):
    payload = {
        "template_id": 1,  # 標準告警卡片
        "channel": "monitoring",  # 監控頻道
        "context": {
            "title": "CPU使用率告警",
            "content": f"服務器 {server_name} CPU使用率過高",
            "level": "warning",
            "service": server_name,
            "details": f"當前CPU使用率: {cpu_usage}%",
            "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
            "color": "orange"  # 對應告警級別的顏色
        }
    }
    # 調用通知API

場景2:任務完成通知

# 當後台任務完成時發送通知
def send_task_complete(task_name, executor, duration):
    payload = {
        "template_id": 3,  # 任務完成卡片
        "context": {
            "title": "任務執行完成",
            "task_name": task_name,
            "executor": executor,
            "duration": duration,
            "result": "成功",
            "details": f"任務 {task_name} 已成功執行",
            "start_time": start_time,
            "end_time": end_time
        }
    }

場景3:k8s日常巡檢通知

  1. 點擊"新增模板"

  2. 配置如下:

模板名稱:K8S巡檢報告
模板類型:飛書
備註:K8S集羣巡檢結果通知

# Markdown內容:
## 🎯 K8S集羣巡檢報告

**巡檢時間**: {{ timestamp }}
**集羣名稱**: {{ cluster_name }}
**巡檢狀態**: {{ status }}
**通過項目**: {{ passed_count }} / {{ total_count }}
**風險等級**: {{ risk_level }}

### 📊 巡檢概覽
{{ summary }}

### ⚠️ 異常詳情
{{ issues }}

### ✅ 健康指標
{{ health_metrics }}

### 💡 建議措施
{{ recommendations }}
  1. 卡片配置(JSON):
{
  "config": {
    "wide_screen_mode": true
  },
  "header": {
    "title": {
      "tag": "plain_text",
      "content": "K8S集羣巡檢報告 - {{ cluster_name }}"
    },
    "template": "{{ color }}"
  },
  "elements": [
    {
      "tag": "markdown",
      "content": "{{ content_md }}"
    },
    {
      "tag": "div",
      "fields": [
        {
          "is_short": true,
          "text": {
            "tag": "lark_md",
            "content": "**巡檢狀態**\n{{ status }}"
          }
        },
        {
          "is_short": true,
          "text": {
            "tag": "lark_md",
            "content": "**通過率**\n{{ pass_rate }}"
          }
        },
        {
          "is_short": true,
          "text": {
            "tag": "lark_md",
            "content": "**風險等級**\n{{ risk_level }}"
          }
        },
        {
          "is_short": true,
          "text": {
            "tag": "lark_md",
            "content": "**集羣節點**\n{{ node_count }}"
          }
        }
      ]
    },
    {
      "tag": "action",
      "actions": [
        {
          "tag": "button",
          "text": {
            "tag": "plain_text",
            "content": "查看詳細報告"
          },
          "type": "primary",
          "url": "{{ report_url }}"
        },
        {
          "tag": "button",
          "text": {
            "tag": "plain_text",
            "content": "立即處理"
          },
          "type": "danger",
          "url": "{{ dashboard_url }}"
        }
      ]
    }
  ]
}
  1. 在通知管理模塊創建配置

點擊"添加通知配置",配置如下:

配置名稱:K8S巡檢通知
通知類型:飛書
模板選擇:選擇剛才創建的"K8S巡檢報告"模板
Webhook地址:從飛書機器人獲取的webhook地址
簽名密鑰:飛書機器人的簽名密鑰(可選)
頻道標識:k8s-inspection  # 用於後續接口調用
啓用狀態:開啓
備註:K8S集羣巡檢結果通知
  1. 點擊"測試發送"驗證配置是否正確

image.png

4. 高級功能

更多內容,請關注我的公眾號【Felix技術私庫】