iT邦幫忙

2026 iThome 鐵人賽

DAY 21
0
IT Operation

低延遲網路的維運工程:從 HFT 現場長出來的 30 天系列 第 21 篇

Day 21:介面錯誤計數器的告警門檻

  • 分享至 

  • xImage
  •  

錯誤計數器的告警看的是兩次取樣之間的增量,門檻從每條鏈路自己的基線推出來。實驗室這條鏈路健康時增量全是 0,門檻就訂在增量大於 0。Et2 的 runt 一直停在 2,不會觸發。有兩種情況例外:

  1. 取樣區間內斷過線,錯誤併進斷線那一則告警。
  2. 已知有問題、還在等修的鏈路,改用錯誤佔流量的比例當門檻。

這條鏈路的錯誤基線

觀察條件 Et1、Et2 錯誤欄位與 discards 增量 Et2 的 Rx/Runts 累計
平時(沒有重開、沒有斷線) 0 2,沒有變
四種方式斷線再接回,共十次 0 2,沒有變

Et2 的 2 個 runt 在 link 建立後的第一次讀數就出現了。十次斷線期間,Et2 的 link status changes 從 2 加到 22,每次加 2。

FCS、Runts 這類欄位只有收到 frame 才會增加。量這組基線時 Et1、Et2 幾乎沒有流量,增量是 0 不代表高流量下也乾淨,現場收基線要涵蓋交易時段。

門檻設在增量上

錯誤計數器是累計值,從開機或上一次 clear 起算,Et2 那 2 個 runt 會一直掛著。門檻設在哪裡,結果差很多:

門檻設在 Et2 平常的狀態 真的出現新錯誤時
累計值 link 起來就一直在告警 告警本來就亮著,看不出變化
增量 2 停著不動,不觸發 增量大於 0,下一次取樣就觸發

門檻設在增量上,就不用為了讓畫面乾淨去 clear,clear 反而會洗掉這兩個 runt 留下的紀錄。多出來的每一個錯誤,都代表有一個 frame 壞掉了,收進來時已經損毀,或是送出時出錯。壞掉的如果是行情封包,接收端會看到序號缺口,所以直接列為 P1。跟 microburst 告警一樣,交易時段即時通報,盤後降為 P2。

link 斷線的偵測與合併

假設每分鐘取樣一次,中間斷了幾秒又接回,兩次取樣看到的 port 狀態都是 up,只看狀態就會漏掉這次斷線。link status changes 會累計,每斷一次加 2(down、up 各 1),只要它有增加,就代表這段時間斷過線。斷線期間送不過去的行情也會造成缺口,交易時段同樣列為 P1。

同一個取樣區間裡,link status changes 跟錯誤欄位都有增加的話,只發斷線那一則告警,錯誤數量附在裡面;下一個區間錯誤還在增加,表示問題不只是斷線,再依錯誤欄位另外發告警。換線、換模組這類計畫內的變更,事先在監控系統標上維護時段,時段內的告警只記錄、不通報。

已知問題鏈路的比例門檻

有些鏈路已知有問題,例如已經報修、還在等機房換線的那一條,平常就有少量錯誤。這種鏈路每個錯誤都即時通報,只會造成告警疲勞。門檻改用比例:錯誤增量除以同一段時間收進來的封包數(InUcastPkts、InMcastPkts、InBcastPkts 的增量相加),超過這條鏈路同時段基線的最大值,就列為 P2。修好之後基線回到 0,門檻也要改回增量大於 0。

告警規則與上線前驗證

項目 基線 門檻 等級
Rx、Tx(收、送兩個方向的錯誤總數) 增量 0 增量大於 0 P1
link status changes 增量 0 增量大於 0 P1
已知問題鏈路的錯誤 增量不是 0 錯誤佔收進來封包數的比例,超過同時段基線的最大值 P2

Rx 告警觸發後,再看 FCS、Symbol、Runts 這些分項,判斷是哪一種錯誤。出口的 discards 屬於 microburst 告警的範圍,所以不列在這張表裡。

規則上線前,在測試鏈路上或維護時段驗兩件事:

  1. 斷線再接回一次:link status changes 要加 2,告警要出來,而且只有一則。
  2. clear 一次計數器:歸零後的第一筆不能算成增量,確認沒有誤報。

明天換到主機側,先量 kernel 網路堆疊的延遲基線。


上一篇
Day 20:microburst 告警門檻的分級與處置
下一篇
Day 22:kernel 網路堆疊的收發延遲實測
系列文
低延遲網路的維運工程:從 HFT 現場長出來的 30 天 共 25 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言