オンプレミスで数十台のマネージドスイッチ(CiscoのCatalystシリーズ)で構成されたLANのモニタリングに、ここ1年ほどLibreNMSを使っていてなかなか良いので紹介します。なお、設置されている場所は工場であり、以下の特性があります。
- リアルなものを製造するため、それなりの規模のITインフラはオンプレミスで存在し続ける。
- 数十台のスイッチは、同じ敷地内ではあるものの色々な場所に散らばっていて、現物をすべて確認するのは結構な手間がかかる。
選定のポイント
LibreNMSを導入する前は、他の人が構築したPRTGのTrial版が使われていたのですが、数十台の機器をモニタリングするにはモニタリングポイント(PRTG用語で「センサー」。ポート1つのトラフィックを取るのにセンサー1つ必要で、Trial版は100個までという制約あり)が足りなくなってきました。
そこでsnmpgetをcron実行するという究極の手作りから、PRTG有償版の導入という選択肢も含めて色々と検討したのですが、以下の特性からLibreNMSを使ってみることにしました。
- ポート別トラフィック程度の基本的なものでも、snmpget結果から自力で取得するのはひどく面倒なので、基本的な数字は自動収集してくれるもの。
- マネージドスイッチはすべてファイアウォールの内側にあるため、Datadog等のクラウドモニタリングではなく、オンプレミスサーバーにインストールして使えるもの。
- モニタリングの対象はまずはネットワーク機器なので、SNMPでのモニタリングに強く、できるだけ設定作業の負荷が少ないもの(人が構築したZabbixを何度か使ったことがありますが、とにかく設定がややこしかった印象があります)。
なお、LibreNMSをはじめとするモニタリングツールはどれも"Auto Discovery"をうたい文句にしていますが、意図しない機器が片っ端登録されて邪魔になる怖れがあるため、offにしています。
LibreNMSはその状態でも、登録した機器の中で取れる情報は無設定で自動で取ってきてくれるので大変便利です。ポート別のトラフィックなどは最初から必要と分かっているのですが、機器内部の温度のようにわざわざ設定の手間をかけるほど欲しくもないけど取れれば助かるものも自動で取ってきてくれます。
予想より良かった点
ネットワーク機器から収集したARPテーブルとFDBテーブルに対して、全部まとめて、IPアドレスまたはMACアドレスで検索ができます。なお、リアルタイムの情報ではなく、discovery(デフォルトでは6時間に1回)時に収集されたテーブルが対象です。リアルタイムの情報が必要な場合は、スイッチにSSH接続してCLIで調査する必要があります。自分はcrontab(細かく言えば/etc/cron.d/librenms)を調整して、ARPテーブルとFDBテーブルの収集処理だけ1時間サイクルにしています。
意外な注意点
事前にドキュメントで確認した限りでは、checkmkエージェントに対応しているなど、サーバーモニタリングにも使えそうと思っていたのですが、実際にやってみると、モニタリング対象機器として登録するにはSNMPでアクセスできることが必須です。SNMPによるモニタリングの追加項目として、その他の項目が追加できるという形になっています。モニタリング対象のサーバーにsnmpdをインストールできればモニタリングできますが、あまり使いやすくありません。サーバーモニタリングには、何か別のものを構築する必要があります(自分はサーバーについては5秒サイクルぐらいの細かい情報を取りたいので、prometheus + grafanaが候補)。
日本語情報は少ないのですがかなり活発に開発が続けられており、数日に1回ぐらいは自動で更新がpullされてきます。更新によって動かなくなったことはありませんが、結構バザール的開発でドキュメントが追い付いておらず、気になるところはPHPソースを検索したり、MariaDBに対してちょこっとSQL書くぐらいの手間は必須です。
逆にそういうことができる人にとっては、実に便利なSNMPモニタリングプラットフォームになっています。
日次のポート別エラー率を取る方法は英語ブログにまとめておきました。