top
は、ピーク時の約20%の平均CPU使用率を示していますが、CloudWatchモニタリングは、40%の平均CPU使用率を示しています。この不一致の原因は何ですか?
非常に良い観察であり、これにも遭遇しました。これが私が見つけたものです:
EC2インスタンス内からのCPU使用率の測定には注意してください。 CPU使用率が100%をはるかに下回っているのを確認することは可能ですが、それでも完全に限界に達する可能性があります。私を信じて:そこにいて、それをやった。 (ちなみに、CloudWatch CPUUtilizationはインスタンスの外部から測定され、常に正しい値です。)
ここに全体の非常に良い説明があります: https://axibase.com/news/ec2-monitoring-the-case-of-stolen-cpu/
上記の例では、m1.small EC2インスタンスに0.4プロセッサユニットが割り当てられているため、40%のCPUビジーは、基になるコアの使用率を意味します。ただし、40%はこのVMに割り当てることができる最大のCPUシェアであるため、有効なCPU使用率は40%/ 40%= 100%です。 CloudWatchによって表示される数です。
40%がどこから来るのか疑問に思っている場合、計算は非常に簡単です。 m1.small linuxシステムは、1.0–1.2 GHz 2007 Opteronまたは2007 Xeonプロセッサーと同等のCPU容量を提供する1つのEC2コンピューティングユニットに割り当てられます。 VMは2.6 GHzのクロック速度のマシンで実行されるため、この特定のXENノードで38.4%—46.2%のプロセッサー共有を利用できます。cat/proc/cpuinfoコマンドを実行して、 EC2インスタンスの背後にあるCPUアーキテクチャ。
特別な数学について知らないツールの扱い方に関するヒントに特に注意してください。
CloudWatchと統合されていない、既存のエージェントまたはSNMPベースの監視ツールをレトロフィットするために使用できる別のオプションは、CPUアイドルメトリックを使用することです。 CPUがビジーではなく、CPUアイドルを測定するルールを書き直すだけです。例えば。 CPUビジーに対して75%を超えるしきい値が定義されている場合は、CPUアイドルに対して25%未満のルールを作成します。 CPUアイドルが0の場合、サーバーはCPUバウンドです。
とても簡単です。非常に素晴らしい。
EC2インスタンス内でtopを実行すると、インスタンスなどを実行している物理コアマシンのCPU使用率が測定されます。インスタンスのみのCPU使用量(インスタンスに割り当てられたEC2計算ユニット)を測定する場合、この使用法は正しくありません。
Cloudwatchメトリクスは、インスタンスのみに割り当てられたEC2コンピューティングユニットのインスタンスの外部で測定されるため、これが本当の理由です。
こちらをご覧ください https://forums.aws.Amazon.com/thread.jspa?threadID=9999