6時間実行される長期実行パフォーマンス操作があります。それが最後に実行されたとき、何かが5分間起こり、パフォーマンスが劇的に低下し、真夜中にいくつかのタイムアウトを引き起こしました。他のプロセスが起動し、CPUなどを攻撃したのではないかと思います。
このサイトでの検索からの提案は、ProcessMonitorを使用してCPUを監視することです。ただし、実行中にトラフィックをキャプチャするだけのようで、デスクトップアプリです。私のWindowsサーバーインスタンスは、グループポリシーによって制御され、10分間アイドル状態になった後にキックオフします。変更できないため、デスクトップアプリを使用して監視することはできません。
CPU使用率を24時間監視する必要があります。プロセス名とCPU使用率(%)だけに興味があるので、何かが始まって台無しになっていることがあったとしても、それを見つけることができます。
キックオフするので、Windowsサービスとして実行できるものが本当に必要です。
これをサービスとして実行する方法はありますか(ProcessMonitorまたは同様のツールを使用して-確かにWindowsサーバーに何かが組み込まれていますか?)サービスとしてリモートデスクトップにログインする必要はありません。または、何かの種類を見つける必要がありますか?マウスがスクリプトを動かし、コンピューターを一晩中放置しますか?
編集:
パフォーマンスモニターは有望に見えます。私が欲しいものを与えるためにそれを構成する方法を見つけるのは難しいです。
カスタムデータコレクターのcpuとプロセスIDを作成しました。
グラフと監視期間中の任意の時点でスナップショットを表示する機能を除いて、タスクマネージャーで行うことができるように、特定の時間における各プロセスのCPU使用率を確認することができます。
24時間のグラフを見て、スパイクが発生しているポイントを確認し、それをクリックして、どのプロセスが原因となっているかを確認できます。
私の上記の設定を機能させると、プロセス名も表示されるとは確信していません。プロセスIDと表示されます。これがguidまたは同様のものであることが判明した場合、特にプロセスが開始および停止する場合は役に立ちません調査に行ってもまだ稼働していません。
ダニエルKのパフォーマンスモニターの提案を使用して、これを行う方法を見つけました。
Windowsパフォーマンスカウンターが機能しない場合(実際には、いくつかの厄介な制限があります)、専用のメトリックコレクションと視覚化ソリューションを使用できます。これは少々やり過ぎかもしれませんが、それでもおそらくツールキットへの貴重な追加です。
このような場合に使用するメトリックソリューションとして、Prometheusをお勧めします。
次は難しい部分です。 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です。