Cloud Monitor は、Elastic Compute Service (ECS) インスタンスおよび Alibaba Cloud 以外のホストでアクティブなプロセスの CPU 使用率、メモリ使用量、オープンファイル数を収集します。 プロセス監視を追加して、プロセス数を追跡し、アラートルールを設定できます。
前提条件
Cloud Monitor エージェントが Alibaba Cloud ECS インスタンスおよび Alibaba Cloud 以外のホストにインストールされていること。 詳細については、「Cloud Monitor エージェントのインストール」をご参照ください。
プロセスメトリクスの収集方法
Cloud Monitor は、CPU を最も消費する上位 5 つのプロセスについて、CPU 使用率、メモリ使用量、オープンファイル数を 1 分ごとに収集します。
-
CPU 使用率とメモリ使用量: Linux の top コマンドと同様です。
-
オープンファイル数: Linux の lsof コマンドに相当します。
CPU 使用率上位 5 件のデータに関する注意事項:
-
値はすべてのコアで合計されるため、マルチコアプロセスの CPU 使用率は 100% を超えることがあります。
-
選択した時間範囲内に上位 5 プロセスが変更された場合、上位 5 位にランクインしたすべてのプロセスが一覧表示されます。 各プロセスには、最後に上位 5 位にランクインしたときのタイムスタンプが表示されます。
-
プロセスが頻繁に上位 5 位から外れる場合、そのチャートデータはまばらに表示されます。 データポイントが密集しているほど、より一貫して上位 5 位にランクインしていることを示します。 例:
-
Wrapperプロセスは常に上位 5 位にランクインしているわけではないため、データポイントはまばらです。
-
Javaプロセスのデータポイントが密集していることは、一貫して上位 5 位にランクインしていることを示しています。
-
-
kworker や ksoftirqd カーネルスレッド、または割り込み処理などのシステムレベルのタスクは、トップ 5 にランクインすることなく CPU を大量に消費することがあります。この場合、全体の CPU 使用率が 100% のままであっても、プロセスモニタリングではアイドルまたはデータなしと表示されることがあります。
top -Hコマンドを実行して、スレッドレベルで CPU 消費量を確認し、CPU を大量に消費しているにもかかわらずトップ 5 に表示されないカーネルスレッドを特定します。
プロセス監視データに完全な履歴データが含まれず、特定の時点から開始されるのはなぜですか?
Cloud Monitor は、そのプロセスの監視項目を追加した後にのみ、プロセスメトリクスの収集を開始します。 その時点より前の履歴データは利用できず、アラートルールも遡って適用されません。
スケジュールされた CPU アラートのトラブルシューティング
ホストが固定期間中に CPU アラートをトリガーした場合、プロセス監視を使用してその過去の期間中のプロセスの CPU 消費量を遡って確認し、CPU を消費しているプロセスを特定します。
-
Cloud Monitor コンソールにログインします。左側のナビゲーションペインで、[クラウドリソースモニタリング] > [ホストモニタリング] を選択します。インスタンスリストで、対象の ECS インスタンスの名前をクリックして、ホストモニタリング詳細ページに移動します。
-
CPU 使用率のトレンドチャートを表示して、アラート期間中の CPU の変化を確認します。
-
[プロセスモニタリング] タブに切り替えます。 時間範囲セレクターで、アラート期間に対応する時間範囲 (1 時間/6 時間/12 時間/1 日/3 日/7 日/14 日/カスタム) を選択します。 アラートが不在期間中に発生した場合は、[カスタム] を選択し、異常期間の開始時刻と終了時刻 (例: 01:00 から 02:00 まで) を指定してから、[OK] をクリックします。 [プロセス TopN] テーブルで、その期間中の CPU 使用率による上位 5 つのプロセスを確認します。 テーブルには、プロセス名/CMD、プロセス ID、ユーザー、CPU 使用率 (%)、メモリ使用量 (%)、オープンファイル数、およびタイムスタンプが表示されます。
-
プロセス名に基づいて原因を特定します。
-
ids.exe / hbrclient:データ転送とタスクスケジューリングを処理する Cloud Backup (HBR) のクライアントプロセスです。Cloud Backup コンソールにログオンして、バックアップ計画の実行時間がアラート時間と一致するかどうかを確認します。
-
crontab / Windows タスク スケジューラ: Linux インスタンスでは
crontab -lの出力を、Windows インスタンスではタスク スケジューラを確認し、スケジュールされたスクリプトが CPU を消費しているかどうかを調べます。 -
AliYunDun/AliYunDunMonitorはセキュリティセンターのプロセスであり、定期的なセキュリティスキャン中に CPU 使用率が一時的に上昇するのは正常な動作です。
-
履歴プロセスデータを確認するには、事前にプロセス監視項目を追加しておく必要があります。 Cloud Monitor エージェントは、監視項目を追加した時点からのみプロセスのメトリクスを収集するため、それ以前の期間のプロセスデータは利用できません。
プロセス名を使用して、プロセスが想定されるビジネスプロセスであるかどうかを判断します。上位 5 つに異常なプロセスが表示されない場合は、インスタンスのスケジュールされたタスク (Linux の場合は crontab -l を実行、Windows の場合は [タスク スケジューラ] を開く) とシステムログ (Windows の場合は [イベント ビューアー]) を確認します。上位 5 つにランクインしないカーネルスレッドに関する注記については、「プロセスメトリクスの収集方法」をご参照ください。
プロセス監視の追加
重要なプロセスの数を監視して、その運用ステータスを追跡します。
たとえば、ホストで次のプロセスが実行されているとします。
-
/usr/bin/java -Xmx2300m -Xms2300m org.apache.catalina.startup.Bootstrap -
/usr/bin/ruby -
nginx -c /etc/nginx/nginx.conf
次の 6 つのプロセスキーワードを追加すると、以下の結果が生成されます。
|
プロセスキーワード |
カウント |
結果 |
|
|
1 |
プロセス名に一致します。 |
|
|
1 |
プロセス名と引数に一致します。 |
|
|
2 |
パスに一致します (2 つのプロセスがこのパスを含みます)。 |
|
|
1 |
引数の一部に一致します。 |
|
|
1 |
引数の一部に一致します。 |
|
|
1 |
引数の一部に一致します。 |
プロセスキーワードのマッチングでは、大文字と小文字が区別されます。 キーワードは、オペレーティングシステムに表示されるプロセス名と完全に一致する必要があります。 大文字と小文字が一致しない場合、キーワードはターゲットプロセスに一致せず、メトリクス収集が失敗し、アラートルールがトリガーされなくなります。
CloudMonitor コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
-
[ホスト監視] ページで、対象ホストのインスタンス名をクリックするか、[操作] 列の [監視グラフ] をクリックします。 次に、[プロセス監視] タブを選択します。
-
ページの最下部で、[プロセス数モニタリング] パネルを展開し、右上隅にある[プロセスモニターの追加]をクリックします。
-
[プロセスモニタリングの追加] パネルで、プロセス名を入力し、[追加] をクリックし、次に右上隅の
アイコンをクリックします。説明新しく追加されたプロセスの監視データが表示されるまで数分かかる場合があります。
プロセスのアラートルールの作成
プロセス監視を追加した後、プロセス数が変更されたときに通知を受け取るためのアラートルールを作成します。
推奨:合計プロセス数のアラートのしきい値の設定
Linux ホストの合計プロセス数は、カーネルパラメーター /proc/sys/kernel/pid_max によって制限されます。誤検知やアラートの見逃しを回避するには、以下のガイドラインに従ってください。
-
安全バッファを維持するために、アラートのしきい値を pid_max 値の 70%~80% に設定してください。
-
cat /proc/sys/kernel/pid_maxを実行して、現在のシステム制限を確認します。 -
あるいは、Cloud Monitor の履歴データから、または
ps -eLf | wc -lを実行して安定した業務期間中の実際のプロセス数を取得し、その値に 20%~30% を加算した値をアラートのしきい値とします。
しきい値を pid_max に近い値に設定することは避けてください。
CloudMonitor コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
-
[ホスト監視] ページで、対象ホストのインスタンス名をクリックするか、[アクション] 列の [監視グラフ] をクリックします。 次に、[プロセス監視] タブを選択します。
-
[プロセス数モニタリング] パネルを展開します。 ターゲットプロセスチャートで、右上隅にあるアラートアイコン
をクリックして、アラートルールパネルを開きます。 -
[ルール説明の設定] パネルで、ルール名を設定し、[プロセス / 現在のプロセス数] メトリックのしきい値とアラートレベルを定義してから、[OK] をクリックします。
-
[アラートルール作成] パネルで、アラートルールパラメーターを設定し、[確認] をクリックします。
アラートルールのパラメーターについては、「アラートルールの作成」をご参照ください。
-
プロセスアラートルールを表示します。
-
左側のナビゲーションペインで、[アラート] > [アラートルール] を選択します。
-
[アラートルール] ページでは、[アラートルール] 列で [プロセス] ディメンションのアラートルールを表示できます。
-
プロセス監視の削除
[アプリケーション グループ] > [グループ プロセス] から追加されたプロセスは、[グループ プロセス] ページからのみ削除できます。
CloudMonitor コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
-
[ホスト監視] ページで、対象のホストのインスタンス名をクリックするか、[操作] 列の [モニタリングチャート] をクリックします。 次に、[プロセス監視] タブを選択します。
-
[プロセス数モニタリング] パネルを展開し、右上隅の [プロセスモニターの追加] をクリックします。このパネルには、現在モニタリングされているすべてのプロセスが一覧表示されます。
-
[プロセスのモニタリングの追加] パネルで、対象のプロセスの [アクション] 列の [削除] をクリックします。
-
[削除の確認] ダイアログボックスで、[OK] をクリックします。
-
Click the
icon in the upper-right corner.右上隅の アイコンをクリックします。
よくある質問
Cloud Monitor は、単一のプロセス (Nginx や Java など) のネットワーク帯域幅やトラフィックの表示をサポートしていますか?
Cloud Monitor は、指定された期間における個々のプロセスのアウトバウンド帯域幅や下りトラフィックの表示をサポートしていません。 プロセスごとのネットワークトラフィックを監視するには、ECS インスタンスで nethogs などのサードパーティツールを使用してください。
Java スレッド数を監視するにはどうすればよいですか?
Cloud Monitor のプロセス監視では、プロセス数のみを追跡します。プロセスキーワードとして java を追加して、実行中の Java プロセスを追跡できます。Java スレッド数の監視はサポートされていません。Java スレッド数を監視するには、ARMS Application Monitoring を使用してください。
過去の時間範囲における高 CPU 使用率プロセスのトラブルシューティング
CPU アラートを受信した後、Cloud Monitor のプロセス監視を使用して、過去の時間範囲におけるプロセスの CPU 使用率を確認し、異常な期間中に CPU を消費したプロセスを特定します。
-
Cloud Monitor コンソールにログインします。
-
左側のナビゲーションペインで、[クラウドリソースモニタリング] > [ホストモニタリング] を選択します。
-
[ホストモニタリング] ページのインスタンス一覧で、対象の ECS インスタンスの名前をクリックすると、ホストモニタリング詳細ページに移動します。
-
[プロセスモニタリング] タブをクリックします。
-
右上隅の時間範囲セレクターで[カスタム]を選択し、01:00 から 02:00 などの異常期間を指定し、[OK] をクリックします。
-
[プロセス TopN] テーブルで、CPU 使用率上位 5 つのプロセスについて、プロセス名、プロセス ID、CPU 使用率、メモリ使用量などを確認します。
履歴データは、そのプロセスの監視項目を追加した後にのみ収集されます。 監視項目が追加される前の期間のプロセスデータは利用できません。
プロセス名を使用して、CPU を消費しているプロセスが正規の業務プロセスであるかどうかを判断します。さらにトラブルシューティングを行うには、オペレーティングシステムのスケジュールされたタスクと[イベント ビューアー] のログを確認します。