自分のサーバー監視アプリを書きたいのですが。理想的には、負荷、稼働時間、CPUアクティビティ、最もアクティブなプロセス、プロセスごとのメモリ使用量などの統計を表示できます。サーバーからその情報を取得するための最良の方法は何ですか?最初はssh-eコマンドを実行することを考えていましたが、サーバーをポーリングするよりも効率的な方法があるかどうかを確認したいと思いました。
あるいは、Muninまたは同様の監視ツールによって集約されているデータに結び付けるのが最善でしょうか?
[〜#〜] update [〜#〜]
より明確にするために、私は主にサーバーから上記の種類のデータを取得して、構築したいAndroidアプリでレンダリングできるようにするための最良の方法に興味があります。サーバー自体に実際のプローブを書き込むことは、実際には私がやりたい作業の領域ではありません。そのため、Nagiosまたは同様のものが、探しているデータをすでに提供していることを期待しています。そのデータをプルする必要があります。自分のツールでレンダリングします。
これを処理する1つの方法は、サーバーでsnmpエージェントを実行し、muninやcactiなどを使用して結果を収集することです。これが まともなサボテンチュートリアル で、Linuxボックスにnet-snmpエージェントを設定する方法を説明しています。
Snmpを使用する利点は、ネットワークデバイスの最小公分母レポートメカニズムであるということです。ほとんどすべてのネットワークデバイスは、snmpクライアントを実行するように構成できます(非常にローエンドのコンシューマースイッチとルーターを除く)。したがって、snmpを使用してLinuxマシンを監視する場合、snmpを使用してスイッチ、ルーター、ネットワークプリンターなどを監視することも簡単です。通常、デバイスを定期的にポーリングします。
古いバージョンのsnmpプロトコル(2c)は非常に安全ではないことに注意してください。これに対処するには、読み取り専用で実行するようにsnmpエージェントを設定するだけです。実際には、内部ネットワークで読み取り専用のsnmpを使用している限り、セキュリティリスクは低くなります。ただし、使用する前に、snmpセキュリティモデルの制限に注意する必要があります。
車輪の再発明を試みるのではなく、すでに行われていることを確認することをお勧めします。 Nagiosは非常に優れており、監視ポイントを簡単に拡張できる基盤を提供していることがわかりました。エージェントは安全なプロトコルを使用して通信しますが、必要な機能に合わせて構成されています。
間違った場所から始めます。何を監視するかは、どのように監視するかほど重要ではありません。前者は常に変化します。次のようなシステムから始める必要があります。
上記を提供し、通常はあらゆる種類の標準プローブにバンドルされている既製のツールがたくさんあります。 Nagiosは、プローブとスケジューリング/レポートエンジンが明確に分離されているため、気に入っています。これにより、プローブを追加するのは簡単で、事前に作成されたプローブとアドオンが 大きなライブラリ あります(デフォルトのダッシュボードはそれほど優れたIMHOではありませんが、自分で作成するのは簡単でした)。