fix(webhooks): Signal.labels 補 alertname 讓 playbook 匹配能讀到原始 alertname
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
問題: create_incident_for_approval 建立 Signal 時 labels 只有 namespace/resource,沒有 alertname,導致 _extract_symptoms 讀 labels.alertname 取得 None,fallback 到 alert_name="custom", playbook Jaccard 永遠無法匹配真實 alertname (如 SentryDown)。 修正: 新增 alertname 參數,傳入 Signal.labels["alertname"]。 兩個呼叫點 (LLM 成功 + fallback) 都補上 alertname=alertname。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -93,6 +93,7 @@ async def create_incident_for_approval(
|
||||
alert_type: str,
|
||||
message: str,
|
||||
source: str = "alertmanager",
|
||||
alertname: str | None = None,
|
||||
) -> str:
|
||||
"""
|
||||
為 Approval 創建對應的 Incident (活躍事件同步)
|
||||
@@ -119,7 +120,7 @@ async def create_incident_for_approval(
|
||||
severity=severity,
|
||||
source=source,
|
||||
fired_at=now_taipei(),
|
||||
labels={"namespace": namespace, "resource": target_resource},
|
||||
labels={"namespace": namespace, "resource": target_resource, "alertname": alertname or alert_type},
|
||||
annotations={"message": message},
|
||||
)
|
||||
|
||||
@@ -1340,6 +1341,7 @@ async def alertmanager_webhook(
|
||||
alert_type=alert_type,
|
||||
message=message,
|
||||
source="alertmanager",
|
||||
alertname=alertname,
|
||||
)
|
||||
|
||||
# 2026-04-06 ogt: Phase 26 — 回寫 incident_id 到 Approval
|
||||
@@ -1462,6 +1464,7 @@ async def alertmanager_webhook(
|
||||
alert_type=alert_type,
|
||||
message=message,
|
||||
source="alertmanager",
|
||||
alertname=alertname,
|
||||
)
|
||||
|
||||
background_tasks.add_task(
|
||||
|
||||
Reference in New Issue
Block a user