伝説的なCactiとネットワークインフラストラクチャ監視
15年前にシステム管理の仕事をしていれば、おそらくあの独特の緑色のトラフィックグラフを覚えているだろう。年月が過ぎた。Prometheus、Grafana、VictoriaMetrics、そしてその他のシステムが次々と登場してきた。それにもかかわらず、クラシックなCactiプロジェクトは今も存続している。開発者は定期的にコミットをプッシュし、PHP 8向けにコードを適応させ、新しいCベースのポーリングエンジンを開発し、1.3ブランチのリリース準備を進めている。
2000年代のツールが生き残っている理由はシンプルだ:ネットワーク機器はフロントエンドやクラウドサービスほど急速に変化しない。スイッチ、ルーター、UPSユニット、サーバーラックは依然としてSNMPプロトコル経由でメトリクスを公開している。
プラットフォームの構成要素
CactiはRRDtoolのラウンドロビュンデータベースの上にビジュアルレイヤとして動作する。従来の時系列データベース不同的是、RRDtoolは無限に成長しない。ファイルサイズは作成時に固定される。古いデータは指定されたルールに従って自動的に平均化され圧縮される。
プロジェクトは3つの主要部分で構成されている:
- システム設定とグラフ表示のためのPHPウェブインターフェース
- テンプレートとユーザーを保存するためのリレーショナルMySQLまたはMariaDBデータベース
- スケジュールで実行されるデバイスポーリングサブシステム
メトリクスは数分ごとに収集される。基本的なPHPポーラーを使用するか、Spineに接続できる。SpineエンジンはCで書かれており、マルチスレッド 덕분에はるかに高速に動作する。1000台のデバイスのネットワークでは、これが唯一の適切なソリューションであり、そうでなければプロセスは時間内に完了しない。
プラットフォームのCapabilities
ハードウェア操作用のテンプレートが作成される。ベンダーのドキュメントで適切なOIDを手動で検索する必要はない。Cisco、Juniper、MikroTik、またはD-Link用の готовые テンプレートを取得し、デバイスにアタッチすれば、 готовый グラフのセットが得られる。
ネットワークスキャンはスケジュールで実行される。新しいデバイスが見つかった?システムはSNMP応答でそれを認識し、適切な自動化ルールを適用する。
チームコラボレーションのためにロールベースのアクセス制御が提供される。オンコールエンジニアに特定のラックのグラフへのアクセス権を付与し、他のセクションをブロックできる。
インターフェース内のグラフはインタラクティブだ。マウスで必要な時間間隔を選択し、スケールを切り替え、リアルタイムでデータを表示し、CSV形式でメトリクスをエクスポートできる。
IPv6とSNMPv3プロトコルのサポートにより、最新のインフラストラクチャの監視とセキュリティ要件への対応が開かれる。
システム要件とソースからのビルド
実行には、PHP 8.1をサポートするウェブサーバーが必要だ。MariaDBバージョン10.2以上(またはMySQL 8.0以上)。システムユーティリティからは、RRDtoolバージョン1.8とNet-SNMPパッケージが必要だ。
プロジェクトの依存関係はComposerを使用してデプロイされる:
git clone https://github.com/Cacti/cacti.git
cd cacti
composer install
開発ブランチ develop で作業する場合、データベーステーブルを定期的に更新する必要がある。このために、プロジェクトにはコマンドラインユーティリティが含まれている:
sudo -u cacti php -q cli/upgrade_database.php --forcever=`cat include/cacti_version`
各変更後のテーブル構造の整合性チェックは、組み込みの監査機能が支援する:
php cli/audit_database.php --report
実践での使用場所
ネットワークチャネル監視は、プロジェクトの主なニッチな用途のままだ。100個のスイッチでポート使用率をトラッキングする必要がある場合、重いスクレイパーとエクスポーターのスタックを立ち上げるのは過剰かもしれない。システムは30分でデプロイされ、最小限のリソースを消費する。
データセンターでのエンジニアリングシステム会計は、もう一つの一般的なシナリオだ。ラックの温度、UPSフェーズ負荷、インターフェースエラーを監視する。このツールは何十年もかけてそのようなタスクのために改良されてきた。
アーキテクチャはプラグインをサポートしている。標準機能が十分でない場合は、通知の送信や地理的ネットワークマップの構築用のモジュールをインストールできる。
Cactiはコンテナや動的なポッドの世界でPrometheusと競争しようとはしていない。優れた古い物理インフラストラクチャ向けのツールだ。
ネットワーク機器の理解可能で要求の低い監視をデプロイする必要がある場合、Cactiは今でも実用的な選択だ。メモリを節約し、何年も安定して動作し、設定ファイルの恒常的な修正を必要としない。
関連プロジェクト