本文介紹如何使用Prometheus監控SNMP。
前提條件
已建立Container Service類型的Prometheus執行個體,具體操作,請參見Prometheus執行個體 for Container Service。
使用限制
目前僅Prometheus執行個體 for Container Service類型執行個體支援該組件接入。
SNMP簡介
SNMP系統組成
SNMP基本組件包括網路管理系統NMS(Network Management System)、代理進程(Agent)、被管對象(Managed Object)和管理資訊庫MIB(Management Information Base)。它們共同構成SNMP的管理模型,在SNMP的體繫結構中都起著至關重要的作用,以下為SNMP組件中的一些基本概念解釋。
NMS:全稱Network Management System,即網路管理系統。一般是各種網管軟體,可以向Agent查詢或者修改各種資訊,也可以接受Agent的主動推送,在可觀測監控 Prometheus 版的情境中,就是SNMP Exporter,僅對Agent做資訊查詢。
Agent:被管理裝置上的一個代理進程,收集被管理裝置的資訊並彙報給NMS。
MIB:全稱Management Information Base,是一個資料庫。列出了被管理裝置可以提供的各項資料,每項資料都對應一個唯一的OID。
Device:即裝置,指實際的網路裝置。包括交換器、路由器、防火牆、UPS、AP、軟路由等,只要支援SNMP,都可以視為一個網路裝置。
Managed Object:被管理對象,一個裝置至少包含一個被管理對象,可能是裝置本身,也可能是某個硬體(例如一個網口),也可能是一些參數合集。
OID:全稱Object ID,即物件識別碼,用於定位一個資料項目。OID是一串數字,比如1.3.6.1.2.1.1表示System,數字是樹形結構,左側為根,右側為葉,前面一截是由IANA分配的廠商標識符,後面就是各個廠商自定的,因此不同廠商裝置的OID樹差別很大。
MODULE:因為SNMP可以監控的裝置和廠商多種多樣,因此SNMP Exporter中劃分了很多Module,比如網路裝置的if_mib,軟路由的ddwrt、paloalto_fw防火牆等,總共有十幾種,其中最常用的就是if_mib。
SNMP Exporter
SNMP協議中用不同的OID區分不同的狀態資料,因此SNMP中的OID與Prometheus中的指標概念極其類似。SNMP Exporter通過從Agent查詢指定的OID資料,同時將資料對應到可讀的指標上,實現SNMP資料到Prometheus指標的轉換。同時SNMP Exporter預設提供了非常豐富的轉換配置,大部分情境下您無需進行額外配置即可將OID轉換為可讀的指標資料。
SNMP Metric監控參考模型
SNMP Metric採集
SNMP可以協助營運人員以極為簡單而有效方式管理網路。首先,SNMP協助營運人員收集網路上不同裝置頻寬使用量的資訊,在進行故障排除的同時,更加快速找出網路效能趨勢或問題。SNMP採集到的資料都是來自裝置提供,不同廠商的裝置可以提供的資料不盡一致,SNMP Exporter儘可能多的提供相容,預設配置中已經包含了常見的各個廠商的OID映射,涵蓋了市面上主要的廠家及其網路產品,能夠滿足絕大多數情境需求,詳情請參見Prometheus開源社區相關文檔。在目前的版本中,我們支援if_mib
module的指標資料擷取。
這裡以常見的思科16口交換器為例,列舉SNMP的主要指標:
指標名稱 | 指標描述 | OID |
ifAdminStatus | 介面狀態 | 1.3.6.1.2.1.2.2.1.7 |
ifHCOutOctets | 介面發出的位元組數總計 | 1.3.6.1.2.1.31.1.1.1.10 |
ifInBroadcastPkts | 介面收到的廣播包數量統計 | 1.3.6.1.2.1.31.1.1.1.3 |
ifInErrors | 流入流量異常數統計 | 1.3.6.1.2.1.2.2.1.14 |
ifSpeed | 介面速率,單位為bits per second | 1.3.6.1.2.1.2.2.1.5 |
ifMtu | MTU配置值 | 1.3.6.1.2.1.2.2.1.4 |
ifOutDiscards | 出方向流量丟包總計 | 1.3.6.1.2.1.2.2.1.19 |
ifHCInOctets | 介面收到的位元組數總計 | 1.3.6.1.2.1.31.1.1.1.6 |
ifHighSpeed | 介面背板頻寬,單位為M bits per second | 1.3.6.1.2.1.31.1.1.1.15 |
ifInDiscards | 介面流入流量丟包數總計 | 1.3.6.1.2.1.2.2.1.13 |
ifInMulticastPkts | 介面收到的多播包統計 | 1.3.6.1.2.1.31.1.1.1.2 |
ifInUnknownProtos | 介面收到的未知協議包數總計 | 1.3.6.1.2.1.2.2.1.15 |
ifOutMulticastPkts | 發出多播包統計 | 1.3.6.1.2.1.31.1.1.1.4 |
sysUpTime | 系統最近一次re-initialized後的時間 | 無 |
SNMP監控大盤
可觀測監控 Prometheus 版預設提供了SNMP Status和SNMP Interface Detail兩個大盤,主要針對if_mib情境,監控網路流量等資訊。
SNMP Status
主要展示裝置的總體狀態。包括裝置運行時間長度,當前的流入/流出流量、出入流量總計、各個連接埠的即時資料流量資訊、流量變化趨勢等。
SNMP Interface Detail
展示各個連接埠工作詳情。包括連接埠狀態、連接埠是否串連、連接埠速率、MTU配置等,以及各種流量(單播、組播及多播等)的速率/包數量變化情況。
在使用SNMP Interface Detail大盤前,需要您先在Variable中配置所需查看的DataSource。
SNMP警示規則
根據上述介紹的SNMP的主要指標,您可以針對SNMP配置以下警示項:
Interface Throughput達到Speed的80%。
出方向的丟包/Error數大於閾值、入方向的丟包/Error數大於閾值。
出方向的Queue長度大於閾值。
Interface數量發生變化。
使用Prometheus監控SNMP
功能入口
功能入口一:整合中心
登入ARMS控制台。
在左側導覽列選擇 ,進入可觀測監控 Prometheus 版的執行個體列表頁面。
- 單擊目標Prometheus執行個體名稱,進入整合中心頁面。
功能入口二:接入中心
登入ARMS控制台。
在左側導覽列單擊接入中心,然後在組件應用地區單擊SNMP卡片的添加,然後在彈出的頁面根據控制台指引完成組件接入。
步驟一:接入SNMP
這裡以從整合中心入口為例,介紹接入SNMP組件的操作,具體步驟如下。
接入SNMP組件。
若您初次安裝SNMP類型的組件:
在整合中心頁面單擊未安裝地區SNMP組件卡片的安裝。
說明單擊該卡片,在彈出的面板中您可以看到關於SNMP監控常見的指標和大盤縮減預覽效果圖。同時由於OID和MIB的複雜性,這裡列舉出的指標只是SNMP常見的一部分指標資訊,待您安裝SNMP成功後,您將會查看到可觀測監控 Prometheus 版監控SNMP的實際指標詳情。
若您已安裝SNMP類型的組件,需要再次添加該組件:
在整合中心頁面單擊已安裝地區SNMP組件卡片的添加。
在STEP2地區的配置頁簽配置相關參數,並單擊確定,完成組件接入。
參數
說明
exporter名稱
當前SNMP監控唯一命名。命名規範要求如下:
僅可包含小寫字母、數字和短劃線(-),且短劃線不可出現在開頭或結尾。
名稱具有唯一性。
說明預設名稱由組件類型及數字尾碼組成。
SNMP裝置IP地址
您需要監控的SNMP裝置的IP地址。
Metrics採集路徑
SNMP Metric的HTTP採集路徑,預設是
/snmp
。metrics採集間隔(秒)
可觀測監控 Prometheus 版採集SNMP監控資料的時間間隔,預設30秒。
說明在STEP2地區的指標頁簽可查看監控指標。
單擊確定後,系統會在您ACK叢集中的arms-prom命名空間下,新增一個名為snmp-exporter-snmp-test-1的deployment,並自動完成採集Job的配置,此時您可以在服務發現頁面的Targets頁簽中看到新配置的採集Job。查看新配置的採集Job的具體操作如下:
登入ARMS控制台。
在左側導覽列選擇
,進入可觀測監控 Prometheus 版的執行個體列表頁面。單擊目標Prometheus執行個體,然後在左側導覽列單擊服務發現,即可在Targets頁簽中查看新配置的採集Job。
同時您也可以在整合中心頁面的已安裝地區,單擊該組件卡片,在彈出的面板中快速查看Targets、指標、大盤、服務發現配置、Exporter等資訊。整合中心的更多資訊,請參見整合中心。
步驟二:查看SNMP大盤資料
可觀測監控 Prometheus 版預設整合了SNMP常用Grafana大盤,您無需單獨安裝Grafana,即可查看SNMP的觀測大盤。
在整合中心頁面單擊已安裝地區的SNMP組件卡片,然後在彈出的對話方塊中單擊大盤頁簽可以查看該組件的大盤略縮圖和超連結,單擊超連結進入阿里雲Grafana頁面,查看對應觀測大盤。
步驟三:配置SNMP監控警示
在整合中心頁面單擊已安裝地區的SNMP組件卡片,然後在彈出的面板中單擊警示頁簽,查看SNMP的所有Prometheus警示規則。
當您在整合中心安裝SNMP監控時,系統已經預設增加了snmp_exporter警示分組的相關規則,然後需要您手動修改警示規則閾值後啟動即可。您還可以根據業務需求新增警示規則。建立Prometheus警示規則的具體操作,請參見Prometheus警示規則。
後續操作:未採集到SNMP指標資料的排查方法
SNMP Exporter本身的主要工作是指標映射,一般都能穩定運行,但SNMP指標一般都會涉及到網路裝置,因此出現網路問題的機率較高。如果出現指標採集不到的問題,您可以參考如下的排查思路來解決。
檢查Prometheus Target狀態。
登入ARMS控制台。
在左側導覽列選擇 ,進入可觀測監控 Prometheus 版的執行個體列表頁面。
單擊目標Prometheus執行個體,然後在左側導覽列單擊服務發現,並單擊Targets頁簽,單擊展開目標Target,查看State列的狀態。
如果該Target顯示在Unhealthy頁簽下,此時請排查
snmp-exporter
Pod運行狀態。如果該Target顯示正常,則執行下一步。
查看
snmp-exporter
Pod日誌,確認日誌中是否有報錯資訊。如果是網路問題通常都會在日誌中有明確體現,此時您可以根據報錯指導排查。
如果日誌中沒有異常,同時只是某個SNMP指標缺失,而其他SNMP指標都能正常採集到,較大機率是由於裝置中確實沒有該指標,此時您可以使用snmpwalk工具協助排查確認。
SNMP Exporter能採集到的資料,都可以通過snmpwalk擷取到,很多Linux發行版預設不包含snmpwalk,需要您先安裝
net-snmp-utils
包。在能串連到SNMP裝置的機器上,使用snmpwalk擷取裝置未經處理資料。
snmpwalk -v 2c -c public snmp_dev_ip OID # ip 和 OID 欄位,替換為實際裝置的IP,和想要確認的指標對應的OID # -v 表示snmp版本 # -c 表示community, 預設是public # 可以使用snmp_dev_ip:port 來指定非預設連接埠,預設連接埠是116
如果snmpwalk依然未能擷取到資料,需要您向裝置廠商確認是否提供此資料。