fix(telegram): close remaining DM alert routes
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
- `send_approval_card()` 改為單次送 SRE 群組,不再先送 DM 再背景補群組;同時把 `tg_approval:*`、`tg_msg:*`、`approval_records.telegram_chat_id` 記到實際群組訊息。
|
||||
- Drift / Meta / SecOps / Business / Escalation 卡片、執行結果、rollback 提案、auto-repair fallback、AI provider failover、成本警告、容量預測、Hermes 規則品質、合規、Coverage、Gitea/Code Review 通知全部改為群組優先。
|
||||
- Gitea CD / Code Review / deploy-alerts / E2E health / dev CD workflow 的 Telegram sendMessage 也改用 SRE 群組 ID,避免 workflow 通知仍打到個人 DM。
|
||||
- Ops 旁路補齊:docker health monitor、PG backup、DR drill、backup-from-110、migration workflow 的 Telegram fallback 改為 `SRE_GROUP_CHAT_ID` / `TELEGRAM_ALERT_CHAT_ID` 優先。
|
||||
- 更新 ADR-093、Alert Chain E2E runbook、Human-in-the-loop 文件,避免後續驗收仍檢查 @tsenyangbot 個人 DM。
|
||||
|
||||
### 驗證
|
||||
|
||||
@@ -59,28 +59,22 @@ ADR-071(2026-04-11)設計了 TYPE-1/2/3/4/4D 五種通知類型,並實作
|
||||
| 類型 | 適用場景 | 按鈕 | 發送目標 |
|
||||
|-----|---------|------|---------|
|
||||
| TYPE-1 | 純資訊、備份成功、心跳 | 無 | SRE 群組 |
|
||||
| TYPE-2 | AI 自動修復完成 | 無(結果通知)| 個人 DM + 群組唯讀 |
|
||||
| TYPE-3 | 需人工審核(預設)| 依 category 動態 ≤4 個 | 個人 DM 只 |
|
||||
| TYPE-4 | AI 無法判斷 | [手動記錄][查面板][忽略] | 個人 DM 只 |
|
||||
| TYPE-4D | Config Drift | [查Diff][採納][回滾][忽略] | 個人 DM 只 |
|
||||
| TYPE-5S | 資安防禦(未來)| [隔離][封鎖IP][驅逐Pod][確認授權] | 個人 DM 只 |
|
||||
| TYPE-2 | AI 自動修復完成 | 無(結果通知)| SRE 群組 |
|
||||
| TYPE-3 | 需人工審核(預設)| 依 category 動態 ≤4 個 | SRE 群組 |
|
||||
| TYPE-4 | AI 無法判斷 | [手動記錄][查面板][忽略] | SRE 群組 |
|
||||
| TYPE-4D | Config Drift | [查Diff][採納][回滾][忽略] | SRE 群組 |
|
||||
| TYPE-5S | 資安防禦(未來)| [隔離][封鎖IP][驅逐Pod][確認授權] | SRE 群組 |
|
||||
| TYPE-6B | 業務/FinOps(未來)| [暫停][查SignOz][忽略] | SRE 群組 |
|
||||
| TYPE-7E | 重大事故升級(未來)| [建立戰情室][Postmortem][DR手冊][確認接手] | 個人 DM + 群組 |
|
||||
| TYPE-8M | 飛輪/告警鏈路健康 | [觸發診斷][查看面板][靜默] | 個人 DM 只 |
|
||||
| TYPE-7E | 重大事故升級(未來)| [建立戰情室][Postmortem][DR手冊][確認接手] | SRE 群組 |
|
||||
| TYPE-8M | 飛輪/告警鏈路健康 | [觸發診斷][查看面板][靜默] | SRE 群組 |
|
||||
|
||||
### D4:雙頻道路由規則
|
||||
|
||||
```
|
||||
含 Callback Button → 只發個人 DM(@tsenyangbot)
|
||||
TYPE-3 / TYPE-4 / TYPE-4D / TYPE-5S / TYPE-7E / TYPE-8M
|
||||
2026-04-30 起,正式告警收件通道統一為 AwoooI SRE 戰情室群組
|
||||
SRE_GROUP_CHAT_ID=-1003711974679
|
||||
|
||||
純資訊展示 → 只發 SRE 群組(-1003711974679)
|
||||
TYPE-1 / TYPE-6B
|
||||
|
||||
執行結果 → 兩個都發(群組版唯讀無按鈕)
|
||||
TYPE-2
|
||||
|
||||
(TYPE-7E 升級 → 兩個都發,群組版加 @mention)
|
||||
OPENCLAW_TG_CHAT_ID 僅作 SRE_GROUP_CHAT_ID 缺失時的 fail-soft fallback。
|
||||
```
|
||||
|
||||
### D5:Telegram 卡片格式防腐規則
|
||||
|
||||
@@ -86,7 +86,7 @@ AI = Level 3(P3 自動,P0/1/2 部分自動)
|
||||
|
||||
### 3.1 Telegram 審核卡操作
|
||||
|
||||
當系統發送 TYPE-3 審核卡到統帥個人 DM:
|
||||
當系統發送 TYPE-3 審核卡到 AwoooI SRE戰情室群組:
|
||||
|
||||
```
|
||||
╔══════════════════════════════════════╗
|
||||
@@ -114,10 +114,10 @@ AI = Level 3(P3 自動,P0/1/2 部分自動)
|
||||
```
|
||||
審核卡發出後:
|
||||
|
||||
0 分鐘: 審核卡發送到個人 DM
|
||||
15 分鐘: 提醒訊息(同一個 DM):
|
||||
0 分鐘: 審核卡發送到 SRE 戰情室群組
|
||||
15 分鐘: 提醒訊息(同一個群組):
|
||||
"⚠️ 此審核已等待 15 分鐘,請盡快處理"
|
||||
30 分鐘: 升級告警發送到 SRE 群組:
|
||||
30 分鐘: 升級告警發送到 SRE 戰情室群組:
|
||||
"🔴 審核逾時!Incident #XXX 已等待 30 分鐘未處理
|
||||
若不處理,系統將在 5 分鐘後自動標記為 ESCALATED"
|
||||
35 分鐘: Incident 狀態 → ESCALATED
|
||||
@@ -161,7 +161,7 @@ Kill Switch = 立即凍結 AWOOOI 所有自動操作的緊急機制。
|
||||
|
||||
**方法 1:Telegram 指令**(推薦,最快)
|
||||
```
|
||||
在個人 DM 輸入:
|
||||
在 SRE 戰情室群組或授權對話輸入:
|
||||
/kill_switch enable
|
||||
|
||||
系統回應:
|
||||
|
||||
@@ -134,7 +134,7 @@ jobs:
|
||||
🔍 請立即調查 UI 回歸問題"
|
||||
env:
|
||||
TG_BOT_TOKEN: ${{ secrets.OPENCLAW_TG_BOT_TOKEN }}
|
||||
TG_CHAT_ID: ${{ secrets.OPENCLAW_TG_CHAT_ID }}
|
||||
TG_CHAT_ID: ${{ env.TELEGRAM_ALERT_CHAT_ID }}
|
||||
|
||||
# 視覺截圖比對工作(獨立 job,只在排程時執行)
|
||||
visual-regression:
|
||||
@@ -186,7 +186,7 @@ jobs:
|
||||
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
|
||||
env:
|
||||
TG_BOT_TOKEN: ${{ secrets.OPENCLAW_TG_BOT_TOKEN }}
|
||||
TG_CHAT_ID: ${{ secrets.OPENCLAW_TG_CHAT_ID }}
|
||||
TG_CHAT_ID: ${{ env.TELEGRAM_ALERT_CHAT_ID }}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -22,7 +22,7 @@ CD Pipeline 每次部署自動注入到 K8s,禁止手動 patch。
|
||||
| `HARBOR_USERNAME` | Harbor Registry 推送 | Harbor UI → 帳號設定 | 字串 | 長期 |
|
||||
| `HARBOR_PASSWORD` | Harbor Registry 推送 | Harbor UI → 帳號設定 | 字串 | 長期 |
|
||||
| `TELEGRAM_BOT_TOKEN` | CD 部署通知 | @BotFather → /mybots | `{id}:AAH...` | 長期 |
|
||||
| `TELEGRAM_CHAT_ID` | CD 通知接收人 | Telegram 個人 ID | 數字 | 長期 |
|
||||
| `TELEGRAM_CHAT_ID` | CD 注入 `OPENCLAW_TG_CHAT_ID` 的 fail-soft fallback | Telegram chat ID | 數字 | 長期 |
|
||||
| `NVIDIA_API_KEY` | Nemotron LLM 仲裁 | https://build.nvidia.com → API Keys | `nvapi-...` | **可能過期** |
|
||||
| `GEMINI_API_KEY` | Gemini 備援 LLM | https://aistudio.google.com/apikey | `AIzaSy...` | **可能過期** |
|
||||
|
||||
@@ -31,7 +31,8 @@ CD Pipeline 每次部署自動注入到 K8s,禁止手動 patch。
|
||||
| Secret Key | 用途 | 狀態 | 來源 |
|
||||
|-----------|------|------|------|
|
||||
| `OPENCLAW_TG_BOT_TOKEN` | API 告警發送 | ✅ | Gitea: `TELEGRAM_BOT_TOKEN` |
|
||||
| `OPENCLAW_TG_CHAT_ID` | API 告警接收 | ✅ | Gitea: `TELEGRAM_CHAT_ID` |
|
||||
| `OPENCLAW_TG_CHAT_ID` | API 告警 fallback 接收 | ✅ | Gitea: `TELEGRAM_CHAT_ID` |
|
||||
| `SRE_GROUP_CHAT_ID` | API 正式告警接收 | ✅ | ConfigMap: `-1003711974679` |
|
||||
| `NVIDIA_API_KEY` | Nemotron LLM | ✅ | Gitea: `NVIDIA_API_KEY` |
|
||||
| `GEMINI_API_KEY` | Gemini 備援 | ✅ | Gitea: `GEMINI_API_KEY` |
|
||||
| `DATABASE_URL` | PostgreSQL 連線 | ✅ | 手動設定 (永久) |
|
||||
|
||||
@@ -199,7 +199,7 @@ Error Budget = 1 - SLO 目標值
|
||||
### SLO 違規告警規則
|
||||
|
||||
```yaml
|
||||
# 以下情況 → TYPE-8M「飛輪健康告警」→ 發統帥個人 DM
|
||||
# 以下情況 → TYPE-8M「飛輪健康告警」→ 發 AwoooI SRE 戰情室群組
|
||||
|
||||
SLO-1 連續 2 小時 < 50%:
|
||||
告警: "⚠️ 自動修復成功率跌破 50%,飛輪瀕死"
|
||||
|
||||
Reference in New Issue
Block a user