Zabbix_LLD(Low-Level-Discovery)_過濾監控項
默認情況下,自帶的模板“Template OS Windows”,“Template OS linux”中網絡接口LLD自動發現除回環接口外的所有接口,當這并不是我們想要的接口。 比如我有一臺Linux的服務器,有如下幾個網卡: [root@webserver] - [Thu Oct 13] - [13:35:24] [~]#ifconfig |grep HWem1 Link encap:Ethernet HWaddr 78:2B:CB:68:E9:E4 em2 Link encap:Ethernet HWaddr 78:2B:CB:68:E9:E6 em3 Link encap:Ethernet HWaddr 78:2B:CB:68:E9:E8 em4 Link encap:Ethernet HWaddr 78:2B:CB:68:E9:EA Windows服務器,又如下幾個網卡: 在這里,我們只想監控物理網卡,或者說監控自己想要監控的網卡,而不是網橋接口或者虛擬網卡,減少不必要的監控項來減輕Server的壓力。同時防止產生大量Not supported狀態的Item,如果等待這些不支持的監控項自動刪除大概需要等待一個月的時間。同時也會產生大量的日志。LLD過濾原理分析
首先查看“Template OS Windows”或者“Template LinuxWindows”模板中關于網絡接口自動發現的規則 下面圖中的方框代表的意思如圖所示: 查看過濾器,看看zabbix默認情況下使用的過濾規則: 接下來查看正則表達式 “@Network interfaces for discovery” 的內容,“Network interfaces for discovery”只是一組正則表達式的名字而已,其內容去下圖中的位置查看: 下圖方框中便是過濾的規則,在默認的情況下只有“^lo$”和“^Software Loopback Interface”兩種,如下圖所示: 那么,這個過濾規則是過濾什么的呢,我們需要對LLD執行的結果進行查看分析,在Zabbix Server端執行以下命令,查看返回的Json值:[root@localhost] - [Thu Oct 13] - [11:58:27] [~]#zabbix_get -s 172.24.10.4 -p 10050 -k net.if.discovery{"data":[{"{#IFNAME}":"WAN Miniport (IPv6)"},{"{#IFNAME}":"WAN Miniport (Network Monitor)"},{"{#IFNAME}":"WAN 微型端口(網絡監視器) - 360entbw Miniport"},{"{#IFNAME}":"Intel(R) PRO/1000 MT Network Connection - 360entbw Miniport-QoS Packet Scheduler-0000"},{"{#IFNAME}":"WAN 微型端口(IP) - 360entbw Miniport"},{"{#IFNAME}":"Intel(R) PRO/1000 MT Network Connection"},{"{#IFNAME}":"WAN Miniport (IP)"},{"{#IFNAME}":"Intel(R) PRO/1000 MT Network Connection - 360entbw Miniport-WFP LightWeight Filter-0000"},{"{#IFNAME}":"WAN 微型端口(網絡監視器) - 360entbw Miniport-QoS Packet Scheduler-0000"},{"{#IFNAME}":"Intel(R) PRO/1000 MT Network Connection - 360entbw Miniport"},{"{#IFNAME}":"WAN 微型端口(IP) - 360entbw Miniport-QoS Packet Scheduler-0000"},{"{#IFNAME}":"WAN Miniport (IPv6)-QoS Packet Scheduler-0000"},{"{#IFNAME}":"Intel(R) PRO/1000 MT Network Connection - 360entbw Miniport-360LanProtect-0000"},{"{#IFNAME}":"WAN Miniport (PPPOE)"},{"{#IFNAME}":"RAS Async Adapter"},{"{#IFNAME}":"Software Loopback Interface 1"},{"{#IFNAME}":"WAN Miniport (SSTP)"},{"{#IFNAME}":"WAN Miniport (IKEv2)"},{"{#IFNAME}":"WAN Miniport (L2TP)"},{"{#IFNAME}":"WAN Miniport (PPTP)"},{"{#IFNAME}":"Microsoft ISATAP Adapter"},{"{#IFNAME}":"Teredo Tunneling Pseudo-Interface"}]} OK,將得到的結果用JSON美化工具(搜索一下JSON美化工具)美化一下:{ "data": [ { "{#IFNAME}": "WAN Miniport (IPv6)" }, { "{#IFNAME}": "WAN Miniport (Network Monitor)" }, { "{#IFNAME}": "WAN 微型端口(網絡監視器) - 360entbw Miniport" }, { "{#IFNAME}": "Intel(R) PRO/1000 MT Network Connection - 360entbw Miniport-QoS Packet Scheduler-0000" }, { "{#IFNAME}": "WAN 微型端口(IP) - 360entbw Miniport" }, { "{#IFNAME}": "Intel(R) PRO/1000 MT Network Connection" }, { "{#IFNAME}": "WAN Miniport (IP)" }, { "{#IFNAME}": "Intel(R) PRO/1000 MT Network Connection - 360entbw Miniport-WFP LightWeight Filter-0000" }, { "{#IFNAME}": "WAN 微型端口(網絡監視器) - 360entbw Miniport-QoS Packet Scheduler-0000" }, { "{#IFNAME}": "Intel(R) PRO/1000 MT Network Connection - 360entbw Miniport" }, { "{#IFNAME}": "WAN 微型端口(IP) - 360entbw Miniport-QoS Packet Scheduler-0000" }, { "{#IFNAME}": "WAN Miniport (IPv6)-QoS Packet Scheduler-0000" }, { "{#IFNAME}": "Intel(R) PRO/1000 MT Network Connection - 360entbw Miniport-360LanProtect-0000" }, { "{#IFNAME}": "WAN Miniport (PPPOE)" }, { "{#IFNAME}": "RAS Async Adapter" }, { "{#IFNAME}": "Software Loopback Interface 1" }, { "{#IFNAME}": "WAN Miniport (SSTP)" }, { "{#IFNAME}": "WAN Miniport (IKEv2)" }, { "{#IFNAME}": "WAN Miniport (L2TP)" }, { "{#IFNAME}": "WAN Miniport (PPTP)" }, { "{#IFNAME}": "Microsoft ISATAP Adapter" }, { "{#IFNAME}": "Teredo Tunneling Pseudo-Interface" } ]} 通過以上的查看便可知道,Zabbix通過系統中的正則表達式 “Network interfaces for discovery”對上面的結果進行過濾,符合條件的內容就會被Zabbix進行監控。解決辦法
由上面已經知道LLD過濾原理的分析,那么解決起來就不會很費勁了,我們只需要對zabbix默認的過濾規則“Network interfaces for discovery”進行修改,添加自定義過濾規則即可。下圖,是我的過濾規則: 為了確保新配置的正則表達式生效,并看到響應的結果,我們要把你要查看的主機的模板取消關聯,同時將自動發現的時間間隔修改為60秒,具體操作如下: OK,設置完成之后,就會根據你修改的規則進行過濾,過濾后的結果如下: 至此,我們的問題便解決了。