新しい集中監視ソリューション(Zenoss)を実装しています。サーバー、ネットワーキング、およびJavaプログラムの組み込みは、SNMPとJMXを使用すると簡単です。
ただし、問題は、大規模な異種(Solaris x86、RHEL Linux、Windows)環境でカスタムC ++アプリケーションを監視および管理するためのベストプラクティスは何ですか?
私が見る可能性は次のとおりです。
- ネットSNMP
- メリット
- 各サーバーに単一の中央デーモン
- よく知られた規格
- 監視ソリューションへの簡単な統合
- サーバーでNet SNMPデーモンをすでに実行しています
- 複雑な実装(MIB、Net SNMPライブラリ)
- C ++開発者向けに導入する新しいテクノロジー
- メリット
- 各サーバーに単一の中央デーモン
- よく知られた規格
- 監視ソリューションへの不明な統合(テキストに基づいてアラートを実行できることはわかっていますが、メモリ使用量、キューの深さ、スレッド容量などのテレメトリの送信にはどの程度うまく機能しますか)
- 簡単な実装
- 考えられる統合の問題
- C ++開発者向けのやや新しいテクノロジー
- 監視ベンダーを切り替えた場合に起こりうる移植の問題
- おそらく、アドホック通信プロトコルを思い付く必要があります(またはRFC5424構造化データを使用しています。ZenossがカスタムZenpackコーディングなしでそれをサポートしているかどうかはわかりません)
- メリット
- JavaとC ++の両方の一貫した管理インターフェース
- よく知られた規格
- 監視ソリューションへの簡単な統合
- やや単純な実装(他の目的のために、今日すでにこれを行っています)
- 複雑さ(JNI、ネイティブC ++とJavaの間のサンクレイヤー、基本的に管理コードを2回記述する)
- 起こりうる安定性の問題
- かなり多くのメモリを使用して、各プロセスにJVMが必要
- JMXはC ++開発者向けの新しいテクノロジーです
- 各プロセスには独自のJMXポートがあります(各マシンで多くのプロセスを実行します)
- メリット
- 各サーバーに単一の中央デーモン
- JavaとC ++の両方の一貫した管理インターフェース
- よく知られた規格
- 監視ソリューションへの簡単な統合
- 複雑さ(基本的に管理コードを2回記述する)
- そのようなデーモンを見つけるか書く必要がある
- JMXデーモンとC ++プロセスの間にプロトコルが必要
- JMXはC ++開発者向けの新しいテクノロジーです
- メリット
- JavaとC ++の両方の一貫した管理インターフェース
- よく知られた規格
- 監視ソリューションへの簡単な統合
- 共有JVMモードで実行される場合、各サーバー上の単一の中央デーモン
- やや単純な実装(コード生成が必要)
- 複雑さ(コード生成、プロキシされたコードを生成するためにGUIと数回の調整が必要)
- 可能なJNI安定性の問題
- 各プロセスでJVMを必要とし、かなり多くのメモリを使用します(埋め込みモード)
- Solaris x86(ディールブレーカー)をサポートしていません
- Solaris x86をサポートしていたとしても、コンパイラ互換性の問題が発生する可能性があります(SolarisではSTLPortとForteの奇妙な組み合わせを使用しています)
- 埋め込みモードで実行すると、各プロセスに独自のJMXポートがあります(各マシンで多くのプロセスを実行します)
- 非C ++プロセスの共有JMXサーバーを除外する可能性があります(?)
合理的に標準化された簡単な解決策はありますか?
他に合理的な解決策がない場合、これらの解決策のどれがカスタムC ++プログラムに通常使用されますか?
私の直感は、Net SNMPが人々がこれを行う方法であるということですが、私は決定を下す前に、他の人の入力と経験が欲しいです。