透過 FlashDuty 整合把夜鶯告警推送到 Flashcat 告警回應平台,新手可依步驟逐步完成設定。

概述

FlashDuty(flashcat.cloud)是 Flashcat 提供的一站式告警回應平台,支援告警聚合、去重、排班、認領、升級、通知、統計等全流程能力。把夜鶯接入 FlashDuty 後,你可以:

  • 把多個夜鶯實例/多個監控來源的告警統一彙整到同一個平台進行管理;
  • 依協作空間(Channel)做人員排班、電話/簡訊升級,避免漏告警;
  • 在同一個面板裡看到告警「何時觸發、誰認領、是否解決」的全過程,並產生品質報表。

與其他通知媒介最大的差別:FlashDuty 不走範本渲染,夜鶯直接把原始告警事件(AlertCurEvent 陣列)以 JSON 發送到 FlashDuty 整合位址,由 FlashDuty 自行負責顯示與處理。

  • 適用情境:需要告警排班、升級、覆盤統計等進階能力,或希望把多個監控系統的告警聚合到同一處。
  • 你需要準備:一個 FlashDuty 帳號,並在 FlashDuty 裡事先建立好協作空間(Channel)。
  • 整個設定分三步:
    • ①在 FlashDuty 裡建立夜鶯整合
    • ②在夜鶯新建 FlashDuty 通知媒介
    • ③在通知規則裡選擇要投遞到的協作空間

第一步:在 FlashDuty 中建立夜鶯整合

  1. 前往 FlashDuty 控制台,登入後從左側選單進入 整合中心 → 整合清單(直達連結:https://console.flashcat.cloud/settings/source/alert)。

  2. 切換到頂部的 告警事件 標籤頁,點擊 新增整合,在彈出的整合面板中選擇 夜鶯(Nightingale)

  3. 選擇一個 協作空間(Channel),為這個整合命名(例如 夜鶯 - 生產環境),儲存後會得到一段推送位址,格式如:

    https://api.flashcat.cloud/event/push/alert/n9e?integration_key=xxxxxxxxxxxxxxxxxxxxxxxx
    

    這整段 URL 就是夜鶯裡要填的 URL(Integration URL),請完整複製保存——URL 裡的 integration_key= 不要刪除。

提示:同一個整合位址對應的預設協作空間就是你在這一步選的 Channel,如果不指定 channel_id,告警會全部進入該空間。後面在通知規則裡還可以選擇把告警發到其他協作空間(需要同帳號擁有權限)。

第二步:在夜鶯新建 FlashDuty 通知媒介

  1. 登入夜鶯 → 左側選單 通知 → 通知媒介

  2. 在左側類型面板中點擊 FlashDuty,進入新建頁(對應 URL /notification-channels/add?ident=flashduty)。

    通知媒介入口

  3. 填寫表單:

    FlashDuty 通知媒介表單

    區塊 欄位 是否需要修改 說明
    基礎設定 名稱 需要 例如 FlashDuty,在通知規則裡選擇媒介時看到的就是這個名稱
    基礎設定 啟用 保持開啟 關閉後該媒介不會被發送
    基礎設定 備註 可不填 方便團隊內區分,例如「生產環境整合」
    FlashDuty 設定 URL 必填 貼上第一步取得的完整推送位址(格式為 https://api.flashcat.cloud/event/push/alert/n9e?integration_key=xxx
    FlashDuty 設定 代理 可不填 如果夜鶯部署在內網,需透過 HTTP 代理連線到 FlashDuty,請在此填寫代理位址
    FlashDuty 設定 逾時時間(毫秒) 保持預設 預設 5000,一般不需要修改
    FlashDuty 設定 重試次數 保持預設 預設 3,網路抖動時會自動重試
  4. 點擊左下角 儲存

說明:FlashDuty 媒介不需要維護「訊息範本」——夜鶯會把觸發/恢復事件打包成 AlertCurEvent JSON 陣列 原樣 POST 給 FlashDuty。如果請求回傳非 2xx 狀態碼,夜鶯不會重發(重發告警事件會讓 FlashDuty 端的去重出問題),但回應內容會完整記錄下來,方便你在通知記錄中排查。

第三步:在通知規則裡選擇協作空間

如果想讓不同業務的告警發到不同的 FlashDuty 協作空間,可以在通知規則裡指定具體 Channel:

  1. 左側選單 通知 → 通知規則 → 新增(或編輯既有規則)。

  2. 在「通知設定」區塊:

    • 通知媒介:選擇剛才建立的 FlashDuty 媒介;
    • Channels:這是一個多選下拉,會自動從 FlashDuty 拉取你有權限的協作空間清單;
      • 不選任何值(建議新手先這樣做):告警會走整合位址預設關聯的協作空間;
      • 選一個或多個:夜鶯會對每一個被選中的 Channel 各發一次,並附上 ?channel_id=<id> 參數,告警事件就會直接進入對應的協作空間。
    • 適用級別 / 適用時段 / 適用標籤:依需求過濾要推送的事件。
  3. 儲存後點擊「通知測試」,FlashDuty 裡應立刻收到一條測試告警。

常見問題

Q1:下拉選協作空間時一直是空的?

A:下拉清單是透過 FlashDuty 介面拉取的,需要:① 媒介裡填的 URL 可達;② URL 裡的 integration_key 有效;③ 夜鶯所在網路可以對外連線到 api.flashcat.cloud。檢查後仍不行,可在瀏覽器 DevTools 的 Network 面板裡查看 /api/n9e/flashduty-channel-list/{id} 這個請求的回應內容。

Q2:如何確認事件已成功送達 FlashDuty?

A:最直接的方法——登入 FlashDuty 控制台 → 告警 → 告警事件,應能看到剛才的測試告警。如果沒有,請打開夜鶯的「通知記錄」,查看 Response,常見回傳:

  • status_code:200, response:{"code":0, ...} → 成功;
  • status_code:400, response:{"code":400, "msg":"integration key invalid"}integration_key 錯誤或被停用;
  • 網路類錯誤(connection refused / timeout)→ 請檢查網路/代理。

Q3:恢復事件(recovered)會被識別嗎?

A:會。夜鶯發送的 JSON 裡 is_recovered: true 欄位會被 FlashDuty 識別為「自動恢復」,對應告警會被關閉,不會被當成新告警。

Q4:FlashDuty 協作空間裡看不到我們的業務組/標籤?

A:夜鶯會把告警事件中的 group_nametagsannotations 等欄位一併發送,FlashDuty 預設會以 tags 作為路由/過濾條件。如果想用這些 tag 做更細緻的分派,請在 FlashDuty 協作空間 → 分派策略 裡設定比對規則。

Q5:想把不同告警級別發到不同協作空間怎麼做?

A:在夜鶯裡建立多條通知規則,每條規則選相同的 FlashDuty 媒介、但 Channels 選不同的協作空間,再用「適用級別」做區分即可——不需要為每個協作空間新建媒介

Q6:夜鶯本身有「告警通知規則」,FlashDuty 也有「分派策略」,該在哪一端做過濾?

A:建議在 FlashDuty 端做。夜鶯這邊盡量把所有告警都送進 FlashDuty,由 FlashDuty 統一負責排班、升級、去重——這樣覆盤統計會更完整。

參考資料

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云