Zabbix4が出ました。ちうても、もう1,2ヶ月前ですが・・・・・
いい加減、Ver.2.0 の Zabbix もどないかせんとなぁ、と思ってたのですが、思い切ってあげてみることに。とはいえ、切り替えなんてムリだしょ?ってことで、現行のVer.2.0と、Ver.4.0を並行運用します。
まぁ、仮想環境なんで、Zabbix サーバマシンをもう一個作るのはそんなに難しい話じゃない。Zabbix Agent 側も上位互換があるので、当面は今はいってるAgentのまま行けるっしょ
ちなみに、Agent 側は、zabbix_agentd.conf に Server=server1,server2 とコンマ接続でサーバを列挙すれば、両方から監視できます。
Zabbix Server Ver.4 から Agent Ver1 から Ver.4 まで監視できます。逆にServer Ver.2.0 では、Agent Ver.4 は監視できませんでした。
さてさて、Zabbix 4 なんですが、立ち上げてみたら一個問題が。
SNMP でスイッチを監視しようとしたら、ポートごとのインターフェーストラフィックが取得できない。
なんで・・・?と調べてみたところ、取得してるMIB値が net.if.in[ifHCInOctets.1] になってるんですね。
MIB 値 ifHCInOctets ちうのは、インターフェースごとの In 方向オクテット数なんですが、64-bit カウンタです。
SNMPって、もともと数値は 32-bit までだったのが、数年前(もう10年くらい経つ?)から64-bit カウンタが使えるように拡張されました。
なもんで、ifHCInOctets は必ず対応してるとは限りません。一方、32-bit カウンタはifInOctets という MIB で、こっちはまぁほぼ間違いなく対応してます。
ちうわけで、Zabbix 4 に 32-bit インターフェースカウンタを読ませましょう。という話です。
要約したら、「Zabbix のテンプレート弄って追加しろ」ってだけなんですが、
[テンプレート]-[Template Module Interfaces SNMPv1]-[ディスカバリールール]-[Network Interfaces Discovery]-[アイテムのプロトタイプ] を開きます。
[Interface {#IFNAME}({#IFALIAS}): Bits received] をクローンすると早いでしょう。32-bitカウンターを追加します。
変更するのは、名前(64-bitカウンタとかぶるとダメなので)、キー、SNMP OID。
名前 | キー | OID |
---|---|---|
Interface {#IFNAME}({#IFALIAS}): Bits received | net.if.in[ifHCInOctets.{#SNMPINDEX}] | 1.3.6.1.2.1.31.1.1.1.6.{#SNMPINDEX} |
Interface {#IFNAME}({#IFALIAS}): Bits received(32-bit) | net.if.in[ifInOctets.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.10.{#SNMPINDEX} |
Interface {#IFNAME}({#IFALIAS}): Bits sent | net.if.out[ifHCOutOctets.{#SNMPINDEX}] | 1.3.6.1.2.1.31.1.1.1.10.{#SNMPINDEX} |
Interface {#IFNAME}({#IFALIAS}): Bits sent(32bit) | net.if.out[ifOutOctets.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.16.{#SNMPINDEX} |
既存の 64-bit カウンターと並べて、こんな感じの監視キーを作ってあげます。
コメントする