Perfmonを使用してサービスのステータスを取得するためのカウンターを見つけるのに苦労しています。それも可能ですか? Nagiosのサービスのステータスを監視する必要がありますが、利用できるリモートアクセスはPerfmonのみです。
サービスのパフォーマンスカウンターはありません。ある種のワンショットの場合、サービスが呼び出しているプロセスのカウンターを監視できます。たとえば、プロセスのプライベートバイトやスレッド数などです。
プロセスIDは再起動のたびに変更されるため、それに応じて監視を調整する必要があります。ただし、より堅牢なものがない限り、迅速で汚いソリューションとして機能します。
パフォーマンスモニターは、サービスのステータスではなく、マシンのパフォーマンスのメトリックを測定するために使用されます。
あなたがPerfmonでこのステータスを監視しようとしていることは知っていますが、それがあなたにとって適切なツールではないと思います。 services.mscに入ることができれば、そのサービスの[回復]タブに移動できます。ここから、サービスが存在する可能性のあるさまざまな状態にサーバーがどのように反応するかを選択できます。たとえば、最初の障害でサービスを再起動し、2番目と3番目の障害で電子メールを送信するスクリプトを実行することを選択できます。サービス等.
カスタムWindowsパフォーマンスカウンターを作成するPowerShellスクリプト(または小さなC#コードレット)をかなり簡単に作成できます。これらに、選択したデータ(数値サービスステータスインジケーターなど)を、適切と思われる間隔で入力できます。これは、perfmonがデータをエクスポートする唯一の簡単な方法である場合に便利です(私はかつて同じ奇妙な問題を抱えていましたが、それはNagiosとは異なる監視アプリケーション)。
残念ながら、私は休暇中で、このわずかなiphoneしか持っていないので、できる限り戻ってサンプルスクリプトを貼り付ける必要があると思います。
大量のPowerShell/C#ソリューションをすばやく簡単にグーグルで検索できますが、多かれ少なかれ必要なときにそれを理解したのです。それでも、6か月のQAサイクルを超える可能性のある方法を見つける必要があると思います。
将来これに遭遇する人のために、あなたは以下を使用して1/0ステータスを得ることができます:
パワーシェル
(Get-Service MSSQL`$SQLEXPRESS | Where-Object -Property Status -eq Running | Measure).count
CMD
sc query "MSSQL$SQLEXPRESS" | FIND /i "RUNNING" /c