zabbixでiptablesが有効になっているかどうかを検出する

iptables、便利ですが必要のないホストで有効になっていると困りますね。特に conntrack が適切に設定されていない状態で有効になると、流量が多くなった時にテーブルが溢れてパケットが捨てられてしまいます。

厄介なことに、状態を確認しようと思って迂闊に iptables -L を実行しただけで kernel module が読み込まれてしまうので、うっかり知らないうちに有効になっているという事故例もありました。

ということで、zabbix で iptables が有効かどうかを検出して、望ましくない状態になっていたらアラートを上げたいと思います。

外部コマンドを実行するようなことは(設定が面倒なので)したくない。zabbix-agentのデフォルトで持っている項目で検知する方法を考えて、以下のようにしてみました。

"iptables is loaded" というアイテムを、vfs.file.exists[/proc/net/ip_tables_names] で定義しただけです。

有効になっていれば 1, 無効なら 0 になるので、ホストごとに適切にトリガを仕掛けてやればよろしいかと。