郵件告警還能這麼玩?!

SRETalk發表於2024-03-08

引言

在現代的 IT 技術環境中,新的監控系統通常都支援非常豐富的通知媒介,比如電話、簡訊、釘釘、飛書、Slack 等,非常靈活。但是一些老舊的系統,不提供指標暴露方式,無法和監控系統良好對接,這些老古董通常只內建提供郵件告警這一種方式。這給整個分發和自動化都帶來了挑戰。通常來講,郵件告警方式有以下問題:

使用郵件告警有哪些問題?

  • 1.容易被忽視:郵件告警往往淹沒在日常工作郵件中,容易被忽視或誤判為普通郵件,導致告警未能及時處理,增加了業務風險和損失;
  • 2.資訊不全面和直觀:郵件告警的內容可能過於冗長、繁瑣,或者缺乏關鍵的上下文資訊,使得處理人員難以快速理解和判斷問題的嚴重性和緊急程度;
  • 3.自動化機制缺失:因為郵件內容通常是非結構化的,OnCall 響應人員比較難基於郵件告警做進一步的自動化處理,比如告警自愈或將告警處理為工單同步到 Jira。

這些問題限制了 OnCall 人員及時響應和處理告警的能力。那麼有沒有更好的方式替換或解決這些問題?祭出大殺器:FlashDuty!使用FlashDuty 可以把非結構化的郵件內容解析為結構化資料,進而匹配各種靈活的通知、降噪策略,使用不同的通知媒介來推送。

使用 Flashduty 來增強郵件告警

Flashduty 定位是一站式告警響應平臺,目的在於加速企業告警響應。Flashduty 本身是商業服務,但是官方承諾提供長期免費版本,對於一些小團隊來說,是夠用的。

20240304121926

新增郵件整合

  • 1.登入 FlashDuty 控制檯,選擇 【協作空間-整合資料-專屬整合】頁面,點選建立一個新整合,找到並點選 Email 整合;
  • 2.編寫整合名稱,其他選項保持預設,儲存後系統會為我們生成唯一的郵件字首。注意這裡的郵件字首可以自定義。其次,郵件子域名預設是賬戶主體 ID,也可以聯絡官方修改為公司簡稱。

20240304122005

制定分派策略

Flashduty 中的告警均依託於協作空間進行隔離,我們可以在單個協作空間下,針對本空間告警制定靈活的分配與通知策略。如下,我選擇將告警投遞到飛書、釘釘、Slack 和企業微信。

20240304122030

測試郵件告警

你可以手動傳送郵件到整合地址進行測試,也可以使用任何支援郵件告警的系統進行測試。這裡我們直接代轉筆者之前接收到的 Flashduty 告警郵件來做驗證。

20240304122107

如果傳送成功,我們會然後立即收到 Flashduty 的通知,以下分別是 Flashduty 控制檯和飛書群聊通知的截圖:

20240304122133

  • 1.郵件中的 HTML 資訊完整的在 Flashduty 中展現;
  • 2.Flashduty 生成告警後,將告警投遞到飛書,並 at 了當前值班人員;
  • 3.OnCall 人員可以在飛書中直接認領或處理這個故障。

至此我們實現對郵件告警的分派和更及時的通知。

但是這裡還存在一個明顯的問題:Flashduty 中完整展示了郵件內容,但是沒有提取出關鍵資訊,比如這裡的主機“customers-vpn-01”,那麼我們如何提取到這個資訊?

提取郵件資訊

我們進入到【整合詳情】,點選【標籤增強】,如下圖,根據 body_text 標籤正則提取出告警物件和告警描述。

20240304122233

注意 body_text 標籤是系統為 HTML 郵件特別生成的,所見即所得,方便進行正則提取。現在關掉前邊生成的告警,然後再次代轉之前的郵件,我們看一下擴充套件後的資訊:

20240304122253

成功提取到描述和主機兩個新標籤!

這裡關於標籤增強僅演示了正則提取,還有很多其他玩法,比如關聯 cmdb 資料,根據 host 標籤找到機器的維護人員、團隊資訊等等,你可以到控制檯深入體驗。

自動關閉告警

我們現在解決了郵件告警自動分派,通知增強以及資訊擴充套件。還有一個問題就是,如何在接收到恢復郵件時,自動關閉告警?

我們進入到【整合詳情】,選擇編輯,修改郵件整合模式為【根據規則觸發或關閉告警】,該模式下,每當接收到新郵件,系統會根據你的規則進行郵件匹配,匹配到的郵件按照規則去觸發新告警或關閉已有告警:

  • 1.我們至少需要填寫一條觸發規則;
  • 2.我們必須設定 Alert Key 的正則提取規則,Alert Key 是告警的唯一標識。系統使用該欄位來查詢歷史告警,以便對其進行更新或關閉;如果正則提取失敗,系統將使用郵件標題來生成 Alert Key,以確保告警不會因為配置錯誤而丟失;
  • 3.我們可以選擇,當所有的規則都不匹配時,是否丟棄郵件。

如下圖所示,接收所有郵件,當郵件內容中包含 RESOVED 字樣時,關閉告警,否則觸發新告警。Alert Key 從郵件標題中提取,規則為 /(.*)/

20240304122408

最後

Flashduty是一款強大而創新的產品,除了解決傳統郵件告警的問題,還提供一系列更好玩、更強大的功能,幫助使用者提升告警處理效率、降低業務風險:

  • 1.靈活的值班策略:Flashduty 提供靈活的值班和輪班管理功能。透過可定製的值班表和通知規則,確保告警責任制,服務持續可用。
  • 2.強大的降噪能力:Flashduty 提供強大的告警降噪能力,充分應對告警風暴、告警抖動等場景。降噪比例至多可達 99%,讓 OnCall 人員把更多精力花在業務上。
  • 3.告警自動化能力:Flashduty 提供事件訂閱、自定義操作等擴充套件以及一系列 API 能力,可以根據設定的規則和條件,自動觸發響應動作或執行特定的操作,減輕人工干預的負擔,提高效率和準確性。

Flashduty 註冊之後,提供 2 周的免費試用期,快去體驗吧!像 Google SRE 一樣處理告警!

  • FlashDuty 介紹體驗地址:https://flashcat.cloud/product/flashduty/

相關文章