1. 📋 模塊功能概述
功能截圖:
1.1 核心功能
-
通知配置管理:創建、編輯、啓用/禁用通知渠道配置
-
通知模板管理:管理可複用的消息模板,支持變量替換
-
多平台支持:支持飛書(主)、釘釘、企業微信等
-
實時預覽:提供模板和卡片的實時預覽
-
測試發送:支持發送測試消息驗證配置
-
發送記錄:記錄所有通知發送日誌
1.2 系統架構
前端 (Vue.js + Element Plus)
├── NotificationChannel.vue # 通知渠道管理
├── NotificationTemplate.vue # 模板管理
└── FeishuCardPreview.vue # 飛書卡片預覽
後端 (Flask)
├── 通知模板管理API
├── 通知配置管理API
├── 消息發送API
└── 發送日誌API
2. 🚀 如何使用這個通知系統
2.1 配置通知渠道
- 進入通知配置頁面 路徑:/notification/channel
只有管理員可以看到"添加通知配置"按鈕
- 創建新配置
配置示例:
{
"name": "運維告警羣", // 配置名稱
"type": "feishu", // 通知類型
"webhook_url": "飛書Webhook地址",
"sign_secret": "簽名密鑰", // 可選
"template_id": 1, // 關聯的模板ID
"channel": "ops-alert", // 頻道標識
"enabled": true, // 啓用狀態
"remark": "用於服務器告警" // 備註
}
- 獲取飛書Webhook
-
在飛書羣中創建機器人
-
獲取Webhook地址(以 https://open.feishu.cn/open-apis/bot/v2/hook/ 開頭)
-
可選:配置簽名密鑰增強安全性
2.2 管理通知模板
- 進入模板管理頁面
-
路徑:/notification/template
-
系統已預置7個常用模板
- 使用預置模板
系統提供的預置模板:
- 標準告警卡片 (alert_standard) - 用於系統告警
- 成功通知卡片 (success_notice) - 用於成功操作通知
- 任務完成卡片 (task_complete) - 用於任務完成通知
- 數據統計卡片 (data_statistics) - 用於數據報告
- 飛書標準卡片 (feishu_standard) - 原生飛書格式
- 簡潔通知 (simple_notice) - 簡單消息
- 創建自定義模板
-
變量語法:使用 {{ variable }} 格式
-
支持變量:title, content, level, timestamp, service, details 等
-
Markdown支持:模板內容支持Markdown語法
2.3 發送通知消息
- 測試發送
在前端頁面點擊"測試發送"按鈕,驗證配置是否正確。
- 程序化發送(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日常巡檢通知
-
點擊"新增模板"
-
配置如下:
模板名稱:K8S巡檢報告
模板類型:飛書
備註:K8S集羣巡檢結果通知
# Markdown內容:
## 🎯 K8S集羣巡檢報告
**巡檢時間**: {{ timestamp }}
**集羣名稱**: {{ cluster_name }}
**巡檢狀態**: {{ status }}
**通過項目**: {{ passed_count }} / {{ total_count }}
**風險等級**: {{ risk_level }}
### 📊 巡檢概覽
{{ summary }}
### ⚠️ 異常詳情
{{ issues }}
### ✅ 健康指標
{{ health_metrics }}
### 💡 建議措施
{{ recommendations }}
- 卡片配置(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 }}"
}
]
}
]
}
- 在通知管理模塊創建配置
點擊"添加通知配置",配置如下:
配置名稱:K8S巡檢通知
通知類型:飛書
模板選擇:選擇剛才創建的"K8S巡檢報告"模板
Webhook地址:從飛書機器人獲取的webhook地址
簽名密鑰:飛書機器人的簽名密鑰(可選)
頻道標識:k8s-inspection # 用於後續接口調用
啓用狀態:開啓
備註:K8S集羣巡檢結果通知
- 點擊"測試發送"驗證配置是否正確
4. 高級功能
更多內容,請關注我的公眾號【Felix技術私庫】