web-dev-qa-db-ja.com

Windows Server 2012のCPU使用率とプロセスをサービスとして24時間監視するにはどうすればよいですか?

6時間実行される長期実行パフォーマンス操作があります。それが最後に実行されたとき、何かが5分間起こり、パフォーマンスが劇的に低下し、真夜中にいくつかのタイムアウトを引き起こしました。他のプロセスが起動し、CPUなどを攻撃したのではないかと思います。

このサイトでの検索からの提案は、ProcessMonitorを使用してCPUを監視することです。ただし、実行中にトラフィックをキャプチャするだけのようで、デスクトップアプリです。私のWindowsサーバーインスタンスは、グループポリシーによって制御され、10分間アイドル状態になった後にキックオフします。変更できないため、デスクトップアプリを使用して監視することはできません。

CPU使用率を24時間監視する必要があります。プロセス名とCPU使用率(%)だけに興味があるので、何かが始まって台無しになっていることがあったとしても、それを見つけることができます。

キックオフするので、Windowsサービスとして実行できるものが本当に必要です。

これをサービスとして実行する方法はありますか(ProcessMonitorまたは同様のツールを使用して-確かにWindowsサーバーに何かが組み込まれていますか?)サービスとしてリモートデスクトップにログインする必要はありません。または、何かの種類を見つける必要がありますか?マウスがスクリプトを動かし、コンピューターを一晩中放置しますか?

編集:

パフォーマンスモニターは有望に見えます。私が欲しいものを与えるためにそれを構成する方法を見つけるのは難しいです。

カスタムデータコレクターのcpuとプロセスIDを作成しました。

enter image description here

グラフと監視期間中の任意の時点でスナップショットを表示する機能を除いて、タスクマネージャーで行うことができるように、特定の時間における各プロセスのCPU使用率を確認することができます。

24時間のグラフを見て、スパイクが発生しているポイントを確認し、それをクリックして、どのプロセスが原因となっているかを確認できます。

私の上記の設定を機能させると、プロセス名も表示されるとは確信していません。プロセスIDと表示されます。これがguidまたは同様のものであることが判明した場合、特にプロセスが開始および停止する場合は役に立ちません調査に行ってもまだ稼働していません。

6
NibblyPig

ダニエルKのパフォーマンスモニターの提案を使用して、これを行う方法を見つけました。

  • パフォーマンスモニターの読み込み
  • 「データコレクターセット」に移動
  • 「ユーザー定義」を展開します
  • 新しい「データセット」を作成する
  • [手動で作成(詳細)]を選択します。削除しないと名前を変更できないので、すぐに使えるようにしてください。
  • 次を押して、「データログの作成」と「パフォーマンスカウンター」を選択します
  • 次を押して、追加を押します。
  • 左上で、[Process]を展開し、[%Processor Time]をクリックします。
  • 左下、 ''をクリック
  • [追加>>]ボタンをクリックして、[OK]を押します
  • 適切なサンプル間隔を選択し、ウィザードの最後に到達するまで[次へ]を押し続けます。
  • データコレクターセットを右クリックして[開始]を押すか、そのプロパティに移動してスケジュールを設定すると、収集を開始できます。データコレクターが停止条件を入れずに30分ほどで動作を停止したことがわかりましたが、それは異常であった可能性があります。
  • データ収集が完了したら、[レポート]> [ユーザー定義]> [データセット]を展開します
  • ダブルクリックして開きます。
  • 下部には「%Processor Time」と表示され、インスタンスは「_Total」です。デフォルトでは、合計CPU使用率が表示されます。これには「アイドル時間」が含まれるため、常に100%程度になります。
  • グラフのすぐ上にある上部バー(上部ウィンドウではない)の緑色の+ボタンをクリックします。
  • 左上の「プロセス」をクリックし、下部で表示する個々のプロセスを選択するか、「」を選択して「追加」を押します。
  • [OK]をクリックすると、プロセスごとのCPU使用率の詳細なグラフが表示されます。
1
NibblyPig

Windows Serverには、パフォーマンスデータをリアルタイムで表示したり、後で確認するためにログにデータを収集したりするための組み込みツールがあります。私はこれがあなたが探しているものと全く同じだと思います。

screenshot of Performance Monitor

Windows Server 2012 R2にログオンするためのパフォーマンスモニターの使用に関する基本的なチュートリアルについては、 この記事 を参照してください。

Windowsでのパフォーマンスを調べるために使用できるすべてのツール(主にインタラクティブツール)については、 この優れた記事 を参照してください。

5
Daniel K

Windowsパフォーマンスカウンターが機能しない場合(実際には、いくつかの厄介な制限があります)、専用のメトリックコレクションと視覚化ソリューションを使用できます。これは少々やり過ぎかもしれませんが、それでもおそらくツールキットへの貴重な追加です。

このような場合に使用するメトリックソリューションとして、Prometheusをお勧めします。

  1. Prometheus は、データを格納するデータベースです。一部のマシンにインストールします(監視しているマシンと同じにすることができます)。最も簡単なインストールオプションは、Linux上のDockerコンテナーですが、1回限りの短い使用では、exeとして実行できます。データを照会するためのWeb GUIがあります。
  2. wmi_exporter はデータ収集エージェントです。それをインストールし、インストール時に プロセスごとのメトリック を有効にしてください(関連する引数を指定する必要があります)。
  3. Prometheus構成ファイルでwmi_exporterをターゲットとして定義します。これにより、Prometheusはエクスポーターからデータをプルします(デフォルトの間隔は60秒ごとだったと思います)。

次は難しい部分です。 Prometheusはデータベースです。WebGUIを使用して生データをクエリできますが、GUIはあまりユーザーフレンドリーではなく、時系列データの操作に慣れていない場合、PromQLクエリ言語は直感的でない場合があります。まず、クエリirate(wmi_process_cpu_time_total[5m])をお勧めします。これにより、プロセスごとのリアルタイムの1秒あたりのCPU時間の秒単位のCPU使用率のグラフが表示されます。

irateは、最後の2つのデータポイント間のデータを提供します。平滑化平均が必要な場合は、rateを使用します。これは5mを平均化期間として使用します(irateはそれを最大制限として使用します)。

Prometheusは、理解するために何らかの行動をとる強力なメトリックシステムです。ただし、自動化されたシステムを監視可能にするという点で、長期的には役立ちます。

PS。 Prometheusは通常、視覚化GUIとして Grafana を使用してデプロイされます(ベアボーンのPrometheus組み込みGUIに置き換わります)。ただし、いくつかの簡単なトラブルシューティングでは、これは必要ありません。

PPS。 process-exporter および node_exporter は、WMIエクスポーターに相当するLinuxです。

0
Sander