zabbix 监控项自动发现过滤_Zabbix5.2由浅入深之官方自动发现规则初探(网络篇)
今天的主題是官方模板的自動發現規則分析,在監控工作中常常會遇到一些可變化的OID值,也就是父OID+索引,而索引本身是變化的,如果監控設備數量固定,一個個寫問題不大,但在規模增加到一定程度手動添加已然不現實,而且不太靈活,所以官方在2.X版本后新增加自動發現規則功能。
正文
在開始之前呢,首先我們要了解什么樣的情況下需要用到自動規則,我舉個例子,以端口名稱為例。OID為1.3.6.1.2.1.31.1.1.1.1,該OID解釋如下。
OID介紹
用snmpwalk測試,順帶還是提下snmpwalk的使用方法吧,斜體為變量,也就是你自己的環境
snmpwalk -v snmp版本 -c 團體字密碼 IP地址 OID,如果沒有snmpwalk,CentOS需要裝net-snmp-utils,ubuntu環境需要裝snmp。
snmwalk -v 2c -c huawei@123?10.240.43.2 1.3.6.1.2.1.31.1.1.1.1通過上圖我們看到查詢的結果有59條規則,如果用這個OID去加監控項一定有問題,得出是多個值,所以根本就不知道要檢查什么。所以自動發現規則應運而生。
Interfaces SNMP
Zabbix 5.2版本模板名稱叫Inerface SNMP,如果是5.2以下(不包含5.2)叫Template Module Interfaces SNMPv2。自動發現規則(Discover rules)位置如下圖紅框所示。
進入到該規則里
自動發現規則的內容與監控項很類似,需要注意的是SNMP OID項的固定格式
discovery[{#MACROS1},OID1,{#MACROS2},OID2....]- 名字(Name):自定義即可
- 類型(Type):選擇SNMP AGENT
- 鍵值(Key):其實也可以隨便寫,方便記,但是在同一臺設備里必須要保持唯一性。
- SNMP OID:簡單來說就是設備里各個組件的編碼,例如windows里的注冊表
- 更新周期(Update interval):多久更新一次,如果監控項需要發現,可以在被監控主機里點擊惡心excute now。
- 自定義時間間隔(Custom intervals):可以更加靈活的控制更新
- 資源周期不足(Keep lost resources period):這個中文翻譯有點問題,這里的意思是代表如果該監控選項無法發現了,什么時候取消監控,如下圖二
頁面內容
出現監控項無法自動發現保留周期
宏(Macros)
宏其實一直是zabbix比較關鍵的點,類似變量,格式為{$MACROS},值可以為文本,也可以為正則表達式,宏的名稱也可自己隨便取,例如下方的{$NET.IF.IFNAME.MATCHES}可以寫成{$IFNAME.MATCHES},后面的取值就隨意了,根據不同功能寫,例如這里的{$NET.IF.IFNAME.MATCHES}對應的應該是接口名稱,如果我只想匹配g0/0/1口,值就是g0/0/1,如果想匹配所有的g口,那值就是^g,關于正則表達式可以去百度上搜,有很多教程,不需要太復雜,能用就行。
該模板宏一覽
過濾器(Filters)
上篇我們講過,過濾器主要用于過濾一些不想要的規則,組成部分也很簡單,就計算類型和宏。那么我們來解析下該模板里的過濾器,一共包含12個(正反6類)分別是
- {#IFADMINSTATUS}(端口管理狀態):是否為admin down
{#IFALIAS}(端口描述)
{#IFDESCR}(端口名稱)
{#IFNAME}(端口名稱):這個和上面的重復了,理論上可以不要
{#IFOPERSTATUS}(端口狀態):down還是up
{#IFTYPE}(端口類型):是千兆口還是百兆口還是vlan啥的,文末我會貼出該例子的OID詳細解釋。
那么為什么需要用到這么多參數,其實挺簡單的,都是為優化監控項服務的,當然如果你的網絡設備配置都是標準化,那就沒這么折騰了,例如你的交換機上聯口都是固定的,那么過濾就只需要一項,{#IFNAME}的宏取值只用寫該端口即可。但是如果是非標,那么這些就大有用處了,你發現少一項就感覺很困難,我們一般篩選相關端口通過這4個維度
- 端口名稱
- 端口類型
- 端口描述
- 端口狀態
所以從這個角度思考,官方這個模板的自動發現規則的過濾器還是比較合理的。
過濾器一覽
監控原型
監控原型里面對的就是生成相對應的監控項,原版有9個,和端口相關指標息息相關,分別是端口入出流量、端口類型、端口狀態,端口入出錯包、端口入出丟包、端口速率,其中個人感覺端口類型沒有什么太大必要,當然有需要的可以監控起來。
原版監控原型一覽
以Interface {#IFNAME}({#IFALIAS}): Bits received這個為例,需要注意的是Key和SNMP OID都帶有{#SNMPINDEX}。
官方模板監控項原型一覽
通過主機上查看該接口,有一段描述,ifindex:5
主機獲取
通過snmpwalk原OID+5可以獲取到該接口的信息,那么到這里是不是就明白了自動發現規則的原理,其實zabbix里隱藏了兩個宏,一個叫{#SNMPINDEX},一個叫{#SNMPVALUE},其中snmpindex就是這些具備同OID多個取值后的索引,而SNMPVALUE就是這些多個索引對應的取值,以下圖為例,5為索引,10GE1/0/1為該索引的SNMPVALUE。Zabbix就是利用這個實現了自動發現規則的功能,當然代碼級別實現肯定不會這么簡單,但你要清楚前端的邏輯是什么,其次鍵值為什么要加這個,還記得我當初說的鍵值在同主機下要唯一,所以加上了該宏,保持鍵值唯一,其他的內容就基本沒啥講的
最終效果
最終發現效果
總結
寫了這么多,其實也為后面的制作自動規則服務的,其實大家可以大概的了解是怎么回事了,包括應用場景,可以想到還有框式設備多板卡,多CPU、Wlan等等,可以自己嘗試寫這些自動發現規則,簡單來說流程是找到相對應的OID---監控指標確定---宏的定義---定義過濾器的規則---創建自動發現規則---創建監控原型---創建觸發器---創建圖形,最后用在設備里。還是那句話:路漫漫其修遠兮,吾將上下而求索,我是IT小白Kasar,下期見!(下期制作自動發現規則)
附錄
ifName
ifHCInOctets
ifHCOutOctets
ifAlias
ifDescr
ifType
ifSpeed
ifInDiscards
ifInErrors
ifOutDiscards
ifOutErrors
總結
以上是生活随笔為你收集整理的zabbix 监控项自动发现过滤_Zabbix5.2由浅入深之官方自动发现规则初探(网络篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我40级6w有救么?
- 下一篇: 语言小型心形图案代码_c语言心形告白代码