top
zeigt eine durchschnittliche CPU-Auslastung in Spitzenzeiten von etwa 20%, während die CloudWatch-Überwachung eine durchschnittliche CPU-Auslastung von 40% anzeigt. Was verursacht diese Diskrepanz?
top
zeigt eine durchschnittliche CPU-Auslastung in Spitzenzeiten von etwa 20%, während die CloudWatch-Überwachung eine durchschnittliche CPU-Auslastung von 40% anzeigt. Was verursacht diese Diskrepanz?
Eine sehr gute Beobachtung, auf die wir auch gestoßen sind. Folgendes habe ich gefunden:
Messen Sie die CPU-Auslastung innerhalb einer EC2-Instanz sorgfältig. Es ist möglich, dass die CPU-Auslastung deutlich unter 100% liegt - und dennoch vollständig ausgeschöpft wird. Vertrau mir: war dort, habe das getan. (CloudWatch CPUUtilization wird übrigens von außerhalb der Instanz gemessen und ist immer korrekt.)
Hier finden Sie eine sehr gute Beschreibung des Ganzen: https://axibase.com/news/ec2-monitoring-the-case-of-stolen-cpu/
Im obigen Beispiel wurden der m1.small EC2-Instanz 0,4 Prozessoreinheiten zugewiesen, sodass 40% CPU-Auslastung die prozentuale Auslastung des zugrunde liegenden Kerns bedeutet. Da jedoch 40% der maximale CPU-Anteil ist, der dieser VM zugewiesen werden kann, beträgt die effektive CPU-Auslastung 40% / 40% = 100%. Welches ist die Nummer, die von CloudWatch angezeigt wird.
Wenn Sie sich fragen, woher 40% kommen, ist die Mathematik ziemlich einfach. Das m1.small-Linux-System hat Anspruch auf 1 EC2-Recheneinheit, die die entsprechende CPU-Kapazität eines 2007 Opteron- oder 2007 Xeon-Prozessors mit 1,0–1,2 GHz bietet. Da die VM auf einem Computer mit einer Taktrate von 2,6 GHz ausgeführt wird, hat sie Anspruch auf einen Prozessoranteil von 38,4% bis 46,2% auf diesem bestimmten XEN-Knoten. Sie können den Befehl cat / proc / cpuinfo ausführen, um die CPU-Architektur hinter Ihren EC2-Instanzen herauszufinden.
Achten Sie besonders auf den Hinweis zum Umgang mit Werkzeugen, die nichts über die spezielle Mathematik wissen:
Eine weitere Option, mit der die vorhandenen agenten- oder SNMP-basierten Überwachungstools nachgerüstet werden können, die nicht in CloudWatch integriert sind, ist die Verwendung der CPU-Leerlaufmetrik. Alles, was Sie tun müssen, ist, die Regeln neu zu schreiben, um den CPU-Leerlauf zu messen, anstatt die CPU zu belegen. Wenn Sie beispielsweise einen Schwellenwert von> 75% für ausgelastete CPU definiert haben, erstellen Sie eine Regel von <25% für den CPU-Leerlauf. Wenn der CPU-Leerlauf 0 ist, ist Ihr Server CPU-gebunden.
Sehr einfach. Sehr schön.
Wenn Sie innerhalb der EC2-Instanz top ausführen, wird die CPU-Auslastung des physischen Kerncomputers gemessen, auf dem Ihre Instanz und andere ausgeführt werden. Diese Verwendung ist falsch, wenn Sie nur die CPU-Auslastung Ihrer Instanz messen möchten (die Ihrer Instanz zugewiesene EC2-Recheneinheit).
Aus diesem Grund sind Cloudwatch-Metriken real, da sie außerhalb der Instanz für die EC2-Recheneinheit (en) gemessen werden, die nur Ihrer Instanz zugewiesen sind.
Siehe hier - https://forums.aws.amazon.com/thread.jspa?threadID=99993