錯誤計數器的告警看的是兩次取樣之間的增量,門檻從每條鏈路自己的基線推出來。實驗室這條鏈路健康時增量全是 0,門檻就訂在增量大於 0。Et2 的 runt 一直停在 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。
假設每分鐘取樣一次,中間斷了幾秒又接回,兩次取樣看到的 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 告警的範圍,所以不列在這張表裡。
規則上線前,在測試鏈路上或維護時段驗兩件事:
link status changes 要加 2,告警要出來,而且只有一則。明天換到主機側,先量 kernel 網路堆疊的延遲基線。