Zabbixにもともと用意されているWindows OSのテンプレートを適用すると、ディスカバリの設定によって、追加の設定不要でNICのインバウンド・アウトバウンドのトラフィックがみれますが、LLDで取得されるネットワークインターフェースの数が多すぎて、アイテム数が膨れ上がります。
監視データを見ずらいですし、不要なアイテムを大量に監視し続けることで、DBの肥大化やzabbixに不要な負荷をかけることにもつながりますので、対処しておきたいコトのひとつです。
LLDで自動取得されるNICが多すぎる件の対処法
まず、LLDによるNIC名称( {#IFNAME} )の自動取得は、ディスカバリルール「Network interface discovery」で行われています。
詳しく見てみると「Network interface discovery」のフィルターの設定
(Template OS Windows > ディスカバリルール > Network interface discovery > フィルタータブ) で
正規表現「@Network interfaces for discovery」に一致するもの
というフィルタ設定がされています。
正規表現「@Network interfaces for discovery」のデフォルトの条件式は以下となっています。
- lo$ [結果が偽]
- Software Loopback Interface [結果が偽]
ということは、LLDで自動取得されるNIC名称( {#IFNAME} )は、
デバイス名が「lo」と「Software Loopback Interface」に一致しないもの
となります。指定されているふたつは、それぞれLinuxとWindowsのloopbackインターフェイスです。
なので、、除外したいデバイス名の一部を
ディスカバリルールのフィルターの設定に追加する
で対応できるかと思いきや、ディスカバリルールのフィルタには、「一致する」正規表現しか指定できないようなので、
正規表現「@Network interfaces for discovery」に条件式を追加する
で対応するしかないようです。
具体的には、以下のインターフェイスデバイス以外を除外するようにフィルタの設定を行っていきます。
- "vmxnet3 Ethernet Adapter"
- "vmxnet3 Ethernet Adapter #n"
- "Microsoft Failover Cluster Virtual Adapter"
次に、LLDで取得されるデバイスの一覧を確認します。
以下は ESXiでNICにvmxnet3を利用した Windows Server Failover Cluster を構成しているホストで確認した結果です。jqコマンドはyumでインストールできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# zabbix_get -s 172.16.1.100 -k net.if.discovery | jq { "data": [ { "{#IFNAME}": "vmxnet3 Ethernet Adapter #2-WFP Native MAC Layer LightWeight Filter-0000" }, { "{#IFNAME}": "vmxnet3 Ethernet Adapter #2-QoS Packet Scheduler-0000" }, { "{#IFNAME}": "vmxnet3 Ethernet Adapter-WFP Native MAC Layer LightWeight Filter-0000" }, { "{#IFNAME}": "vmxnet3 Ethernet Adapter-QoS Packet Scheduler-0000" }, { "{#IFNAME}": "vmxnet3 Ethernet Adapter #2-WFP 802.3 MAC Layer LightWeight Filter-0000" }, { "{#IFNAME}": "vmxnet3 Ethernet Adapter-WFP 802.3 MAC Layer LightWeight Filter-0000" }, { "{#IFNAME}": "vmxnet3 Ethernet Adapter" }, { "{#IFNAME}": "Microsoft Kernel Debug Network Adapter" }, { "{#IFNAME}": "vmxnet3 Ethernet Adapter #2" }, { "{#IFNAME}": "Software Loopback Interface 1" }, { "{#IFNAME}": "Microsoft Failover Cluster Virtual Adapter-WFP Native MAC Layer LightWeight Filter-0000" }, { "{#IFNAME}": "Microsoft Failover Cluster Virtual Adapter-QoS Packet Scheduler-0000" }, { "{#IFNAME}": "Microsoft Failover Cluster Virtual Adapter-WFP 802.3 MAC Layer LightWeight Filter-0000" }, { "{#IFNAME}": "Microsoft ISATAP Adapter" }, { "{#IFNAME}": "Microsoft ISATAP Adapter #2" }, { "{#IFNAME}": "Microsoft Failover Cluster Virtual Adapter" }, { "{#IFNAME}": "Microsoft ISATAP Adapter #3" } ] } |
上記の結果から、以下のデバイスを不要と判断し、正規表現「@Network interfaces for discovery」に追加していきます。必要に応じて、行頭(^)や行末($)を付与しています。
- QoS Packet Scheduler-0000$
- WFP 802.3 MAC Layer LightWeight Filter-0000$
- WFP Native MAC Layer LightWeight Filter-0000$
- ^Microsoft ISATAP Adapter$
- ^Microsoft Kernel Debug Network Adapter$
- ^Teredo Tunneling Pseudo-Interface$
以下から正規表現の編集画面を開きます。
1 |
管理 > 一般設定 > 正規表現 >「Network interfaces for discovery」 |
変更前後の正規表現の条件式は以下のようになります。
1 2 |
1 > ^lo$ [結果が偽] 2 > ^Software Loopback Interface [結果が偽] |
1 2 3 4 5 6 7 8 |
1 > ^Microsoft Kernel Debug Network Adapter$ [結果が偽] 2 > ^Microsoft ISATAP Adapter [結果が偽] 3 > WFP Native MAC Layer LightWeight Filter-0000$ [結果が偽] 4 > WFP 802.3 MAC Layer LightWeight Filter-0000$ [結果が偽] 5 > QoS Packet Scheduler-0000$ [結果が偽] 6 > ^Software Loopback Interface [結果が偽] 7 > ^lo$ [結果が偽] 8 > ^Teredo Tunneling Pseudo-Interface$ [結果が偽] |
Windowsホストのアイテムの一覧を表示すると、ディスカバリで取得されていたアイテムのうち正規表現に指定した文字列を含むアイテムは以下のワーニング(?)レベルの情報が表示され、ディスカバリされなくなったことがわかります。
1 |
アイテムがディスカバリされなくなったため29d 23h 59mに削除されます。(日時 2019/04/15 12:55) |
表示された日時を過ぎたら、ネットワークインターフェースのアイテム数が少なくなっていることを確認しましょう。
以上です。
↓↓↓ 持っていると便利な一冊 ↓↓↓