ネットワークで実行されているアプリケーションを監視するシステムを開発する必要があります。アプリケーションのステータスに関する情報を収集し、問題が発生した場合にアラートを送信する必要があります。このアプリケーションを .NET で開発することにしました。その目的のための API や、始めるのに役立つアイデアがあれば教えてください。そのようなプロジェクトを開発するための他のフレームワークを提案する場合、その理由を知っているかもしれません!
ありがとうございました
ネットワークで実行されているアプリケーションを監視するシステムを開発する必要があります。アプリケーションのステータスに関する情報を収集し、問題が発生した場合にアラートを送信する必要があります。このアプリケーションを .NET で開発することにしました。その目的のための API や、始めるのに役立つアイデアがあれば教えてください。そのようなプロジェクトを開発するための他のフレームワークを提案する場合、その理由を知っているかもしれません!
ありがとうございました
WMI (System.Management 名前空間) または Windows パフォーマンス モニターへのフックにより、適切な実行開始が得られます。プログラムが各ターゲット マシンで Windows サービスとして実行される、独自の種類の「クライアント サーバー」監視インフラストラクチャをセットアップすることもできます。このプログラムは、特定の名前のプロセスが実行されていることを確認するなど、必要な監視コードを実行できます。このプログラムは、指定されたマシンの「ステータス」レポートを含むレポートを中央サーバーに (リモーティング、ソケット、Web サービスなどを介して) 送信します。次に、中央サーバーはステータスを集約し、アラートを送信したり、クラクションを鳴らしたり、ビジネスニーズに適したものを発信したりできます.
これは、コーディングの変更やアプリケーション自体のサポートなしで、任意のアプリケーションを意味するかどうかによって異なります。それとも、構築中の監視システムと連携するようにカスタム コードされた一連のアプリケーションを意味しますか。
後者の場合、監視システムが定期的に (機能的には ping のように) 接続できるリモート チャネルをアプリケーションに追加し、適切な状態統計を監視システムに報告する汎用の GetStatus() メソッドを使用します。 ...監視したい各アプリに、この機能を個別の依存アセンブリとして追加します...
最初のケースでは、特にネットワーク上の他のマシンで実行されている OS と通信するために、OS API にフックする必要があると思います (それも要件である場合)。この領域で WIn32 API によってどのような機能が公開されているかはわかりません。
アプリの「問題」の定義は何ですか? 監視するアプリをコードで制御できますか? 通常、「問題」があるアプリは、通常はバグが原因であるため、通知されません。アプリが問題を探すための情報を送信するように設計されていない場合、それをどのように検出するかは非常に困難です。
私が過去にリモートで同様に行った唯一のことは、(Windows CE の) スケジューラ自体にフックして、量子スレッドの量を監視し、プロセッサを過度に消費するものを探すことでした。バグが発生する可能性が非常に高く、プロセッサ自体を大量に使用します (デスクトップでも実行できるかどうかはわかりません)。
アプリケーションの監視はそれほど単純ではありません。他の PC とその中で何が起こっているかを調べなければならないからです。
ネットワークを監視する一般的な方法は、SNM-Protocol スイートを使用するか、Windows の世界に WMI-Path を使用することです。
WMI は .NET にラップされていますが、穴が開いているわけではないため、WMI の処理方法を理解し、そのための独自のラッパーを作成する必要があります。
すべてのアプリケーションが SNMP をサポートしているわけではないので、SNMP はあまり役に立ちません。
監視を定義する必要があります。アプリケーションをどのように監視し、どのような情報を記録する予定ですか?