CloudWatch-Lösung: JVM-Workload auf Amazon EC2
Mit dieser Lösung konfigurieren Sie die sofort einsatzbereite Metrikerfassung mithilfe von CloudWatch-Agenten für JVM-Anwendungen, die auf EC2-Instances ausgeführt werden. Darüber hinaus hilft sie Ihnen bei der Einrichtung eines vorkonfigurierten CloudWatch-Dashboards. Allgemeine Informationen zu allen CloudWatch-Observability-Lösungen finden Sie unter CloudWatch-Beobachtbarkeitslösungen.
Themen
Voraussetzungen
Diese Lösung ist für folgende Bedingungen relevant:
Unterstützte Versionen: Java LTS-Versionen 8, 11, 17 und 21
Computing: Amazon EC2
Unterstützt bis zu 500 EC2-Instances für alle JVM-Workloads in einer bestimmten AWS-Region
Aktuelle Version von CloudWatch Agent
-
Der SSM-Agent ist auf der EC2-Instance installiert
Anmerkung
AWS Systems Manager (SSM-Agent) ist auf einigen Amazon Machine Images (AMIs) von AWS und vertrauenswürdigen Drittanbietern vorinstalliert. Wenn der Agent nicht installiert ist, können Sie ihn manuell installieren, indem Sie das Verfahren für Ihren Betriebssystemtyp verwenden.
Vorteile
Die Lösung bietet JVM-Überwachung und wertvolle Erkenntnisse für die folgenden Anwendungsfälle:
-
Überwachen Sie die JVM-Heap- und Non-Heap-Speicherauslastung.
-
Analysieren Sie das Laden der Threads und Klassen auf Parallelitätsprobleme.
-
Verfolgen Sie die Garbage Collection nach, um Speicherlecks zu identifizieren.
-
Wechseln Sie zwischen verschiedenen JVM-Anwendungen durch, die über die Lösung unter demselben Konto konfiguriert wurden.
Im Folgenden sind die Hauptvorteile der Lösung aufgeführt:
-
Automatisiert das Erfassen von Metriken für JVM mithilfe der CloudWatch-Agentenkonfiguration, wodurch die manuelle Instrumentierung entfällt.
-
Stellt ein vorkonfiguriertes, konsolidiertes CloudWatch-Dashboard für JVM-Metriken bereit. Das Dashboard verarbeitet automatisch Metriken von neuen JVM-EC2-Instances, die mit der Lösung konfiguriert wurden, auch wenn diese Metriken bei der ersten Erstellung des Dashboards noch nicht vorhanden waren. Außerdem können Sie die Metriken zum einfacheren Fokussieren und Verwalten in logische Anwendungen gruppieren.
Die nachfolgende Abbildung ist ein Beispiel eines Dashboards dieser Lösung.
Kosten
Diese Lösung erstellt und nutzt Ressourcen in Ihrem Konto. Ihnen wird die Standardnutzung berechnet, einschließlich der folgenden Kosten:
Alle Metriken, die vom CloudWatch-Agenten erfasst wurden, werden als benutzerdefinierte Metriken berechnet. Die Zahl der von dieser Lösung zu erfassenden Metriken hängt von der Anzahl der EC2-Hosts ab.
Jeder für die Lösung konfigurierte JVM-Host veröffentlicht insgesamt 18 Metriken plus eine Metrik (
disk_used_percent), wobei die Anzahl der Metriken von der Anzahl der Pfade für den Host abhängt.
Ein benutzerdefiniertes Dashboard.
API-Operationen, die vom CloudWatch-Agenten zum Veröffentlichen der Metriken angefordert wurden. Mit der Standardkonfiguration für diese Lösung ruft der CloudWatch-Agent PutMetricData einmal pro Minute für jeden EC2-Host auf. Das bedeutet, dass die PutMetricData-API
30*24*60=43,200innerhalb eines 30-Tage-Monats für jeden EC2-Host aufgerufen wird.
Weitere Informationen zur Preisgestaltung von CloudWatch finden Sie unter Amazon CloudWatch – Preise
Mithilfe des Preisrechners können Sie die ungefähren monatlichen Kosten für die Nutzung dieser Lösung abschätzen.
Um den Preisrechner zur Schätzung Ihrer monatlichen Kosten für die Lösung zu verwenden
-
Öffnen Sie den Amazon-CloudWatch-Preisrechner
. -
Wählen Sie unter Region auswählen die Region aus, in der die Lösung bereitgestellt werden soll.
-
Geben Sie im Abschnitt Metriken für die Anzahl der Metriken den Wert
(18 + average number of disk paths per EC2 host) * number of EC2 instances configured for this solutionein. -
Geben Sie im Abschnitt APIs für Anzahl der API-Anforderungen
43200 * number of EC2 instances configured for this solutionein.Standardmäßig führt der CloudWatch-Agent jede Minute einen PutMetricData-Vorgang für jeden EC2-Host aus.
Geben Sie im Abschnitt Dashboards und Alarme für Anzahl der Dashboards
1ein.-
Sie finden Ihre geschätzten monatlichen Kosten unten im Preisrechner.
CloudWatch-Agentenkonfiguration für diese Lösung
Der CloudWatch-Agent ist eine Software, die ununterbrochen und autonom auf Ihren Servern und in containerisierten Umgebungen ausgeführt wird. Er sammelt Metriken, Protokolle und Ablaufverfolgungen von Ihrer Infrastruktur und Ihren Anwendungen und sendet sie an CloudWatch und X-Ray.
Weitere Informationen zum CloudWatch-Agenten finden Sie unter Erfassen von Metriken, Protokollen und Ablaufverfolgungen mit dem CloudWatch-Agenten.
Die Agentenkonfiguration in dieser Lösung erfasst die grundlegenden Metriken für diese Lösung. Der CloudWatch-Agent kann so konfiguriert werden, dass er standardmäßig mehr JVM-Metriken sammelt, als das Dashboard darstellt. Eine Liste aller JVM-Metriken, die Sie erfassen können, finden Sie unter Erfassen von JVM-Metriken. Allgemeine Hinweise zur CloudWatch-Agentenkonfigurationsdatei finden Sie unter Vom Amazon-CloudWatch-Agenten erfasste Metriken.
Offenlegen der JMX-Ports für die JVM-Anwendung
Der CloudWatch-Agent nutzt JMX, um die Metriken im Zusammenhang mit dem JVM-Prozess zu erfassen. Um das zu ermöglichen, müssen Sie den JMX-Port von Ihrer JVM-Anwendung aus verfügbar machen. Die Anweisungen zum Offenlegen des JMX-Ports hängen vom Workload-Typ ab, den Sie für Ihre JVM-Anwendung verwenden. In der Dokumentation Ihrer Anwendung finden Sie diese Anweisungen.
Um einen JMX-Port für die Überwachung und Verwaltung zu aktivieren, müssen Sie allgemein die folgenden Systemeigenschaften für Ihre JVM-Anwendung festlegen. Achten Sie auf die Angabe einer ungenutzten Portnummer. Im folgenden Beispiel wird für nicht authentifiziertes JMX konfiguriert. Wenn Ihre Sicherheitsrichtlinien/Anforderungen erfordern, dass Sie JMX mit Kennwortauthentifizierung oder SSL für den Remotezugriff aktivieren, sehen Sie in der JMX-Dokumentation
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=port-number-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
Sehen Sie sich die Startskripts und Konfigurationsdateien Ihrer Anwendung an, um herauszufinden, wo Sie diese Argumente am besten ergänzen können. Wenn Sie eine .jar-Datei von der Befehlszeile aus ausführen, könnte dieser Befehl folgendermaßen aussehen, wobei pet-search.jar der Name der Anwendungs-JAR ist.
$ java -jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=falsepet-search.jar
Agentenkonfiguration für diese Lösung
Die vom Agenten zu erfassenden Metriken werden in der Agentenkonfiguration definiert. Die Lösung bietet Agentenkonfigurationen zum Erfassen der empfohlenen Metriken mit geeigneten Dimensionen für das Dashboard der Lösung.
Die Schritte zur Bereitstellung der Lösung werden weiter unten in Bereitstellung des Agenten für Ihre Lösung beschrieben. Die folgenden Informationen beschreiben, wie Sie die Agentenkonfiguration für Ihre Umgebung anpassen können.
Sie müssen einige Teile der folgenden Agentenkonfiguration für Ihre Umgebung anpassen:
Die JMX-Portnummer ist die Portnummer, die Sie im vorherigen Abschnitt dieser Dokumentation konfiguriert haben. Sie steht in der
endpoint-Zeile in der Konfiguration.ProcessGroupName– Geben Sie aussagekräftige Namen für dieProcessGroupName-Dimension ein. Diese Namen sollten für die Cluster-, Anwendungs- oder Servicegruppierung für EC2-Instances stehen, auf denen dieselbe Anwendung oder derselbe Prozess ausgeführt wird. Dadurch können Sie Metriken von Instances gruppieren, die zu derselben JVM-Prozessgruppe gehören, sodass Sie im Lösungs-Dashboard eine einheitliche Ansicht der Cluster-, Anwendungs- und Serviceleistung erhalten.
Wenn Sie beispielsweise zwei Java-Anwendungen in demselben Konto ausführen, eine für die order-processing-Anwendung und eine weitere für die inventory-management-Anwendung, sollten Sie die ProcessGroupName-Dimensionen in der Agentenkonfiguration jeder Instance entsprechend festlegen.
Legen Sie für die
order-processing-Anwendungs-InstancesProcessGroupName=order-processingfest.Legen Sie für die
inventory-management-Anwendungs-InstancesProcessGroupName=inventory-managementfest.
Wenn Sie diese Richtlinien befolgen, gruppiert das Lösungs-Dashboard die Metriken automatisch auf der Grundlage der ProcessGroupName-Dimension. Das Dashboard umfasst Drop-down-Optionen, mit denen Sie Metriken für eine bestimmte Prozessgruppe auswählen und aufrufen können, sodass sich die Leistung einzelner Prozessgruppen separat überwachen lässt.
Agentenkonfiguration für JVM-Hosts
Nutzen Sie die folgende CloudWatch-Agentenkonfiguration auf EC2-Instances, auf denen Ihre Java-Anwendungen bereitgestellt werden. Die Konfiguration wird als Parameter im Parameterspeicher von SSM gespeichert, wie weiter unten in Schritt 2: Speichern Sie die empfohlene CloudWatch-Agentenkonfigurationsdatei in Systems Manager Parameter Store beschrieben.
Ersetzen Sie ProcessGroupName mit dem Namen Ihrer Prozessgruppe. Ersetzen Sie die Portnummer mit dem JMX-Port Ihrer Java-Anwendung. Wenn JMX mit Kennwortauthentifizierung oder SSL für den Remotezugriff aktiviert wurde, finden Sie je nach Bedarf unter Erfassung von Java Management Extensions (JMX)-Metriken weitere Informationen zur Einrichtung von TLS oder zur Autorisierung in der Agentenkonfiguration.
Die in dieser Konfiguration gezeigten EC2-Metriken (Konfiguration, die außerhalb des JMX-Blocks angezeigt wird) funktionieren nur für Linux- und macOS-Instances. Wenn Sie Windows-Instances nutzen, können Sie diese Metriken in der Konfiguration weglassen. Informationen zu Metriken, die auf Windows-Instances erfasst wurden, finden Sie unter Vom CloudWatch-Agenten erfasste Metriken auf Windows Server-Instances.
{ "metrics": { "namespace": "CWAgent", "append_dimensions": { "InstanceId": "${aws:InstanceId}" }, "metrics_collected": { "jmx": [ { "endpoint": "localhost:port-number", "jvm": { "measurement": [ "jvm.classes.loaded", "jvm.gc.collections.count", "jvm.gc.collections.elapsed", "jvm.memory.heap.committed", "jvm.memory.heap.max", "jvm.memory.heap.used", "jvm.memory.nonheap.committed", "jvm.memory.nonheap.max", "jvm.memory.nonheap.used", "jvm.threads.count" ] }, "append_dimensions": { "ProcessGroupName": "ProcessGroupName" } } ], "disk": { "measurement": [ "used_percent" ] }, "mem": { "measurement": [ "used_percent" ] }, "swap": { "measurement": [ "used_percent" ] }, "netstat": { "measurement": [ "tcp_established", "tcp_time_wait" ] } } } }
Bereitstellung des Agenten für Ihre Lösung
Je nach Anwendungsfall gibt es mehrere Ansätze für die Installation des CloudWatch-Agenten. Wir empfehlen die Nutzung von Systems Manager für diese Lösung. Sie bietet eine Konsolenerfahrung und erleichtert die Verwaltung einer Flotte verwalteter Server innerhalb eines einzigen AWS-Kontos. Die Anweisungen in diesem Abschnitt nutzen Systems Manager und sind für den Fall vorgesehen, dass der CloudWatch-Agent nicht mit vorhandenen Konfigurationen ausgeführt wird. Sie können überprüfen, ob der CloudWatch-Agent ausgeführt wird, indem Sie die Schritte unter Überprüfen, ob der CloudWatch-Agent ausgeführt wird befolgen.
Wenn Sie den CloudWatch-Agenten bereits auf den EC2-Hosts ausführen, auf denen die Workload bereitgestellt wird, und die Agentenkonfigurationen verwalten, können Sie die Anweisungen in diesem Abschnitt überspringen und mit dem bestehenden Bereitstellungsmechanismus die Konfiguration aktualisieren. Stellen Sie sicher, dass Sie die Agentenkonfiguration von JVM mit Ihrer vorhandenen Agentenkonfiguration zusammenführen und dann diese zusammengeführte Konfiguration bereitstellen. Wenn Sie Systems Manager zum Speichern und Verwalten der Konfiguration für den CloudWatch-Agenten nutzen, können Sie die Konfiguration mit dem vorhandenen Parameterwert zusammenführen. Weitere Informationen finden Sie unter Verwalten der CloudWatch-Agenten-Konfigurationsdateien.
Anmerkung
Wenn Sie Systems Manager zur Bereitstellung der folgenden CloudWatch-Agentenkonfigurationen verwenden, werden alle vorhandenen CloudWatch-Agentenkonfigurationen auf Ihren EC2-Instances ersetzt oder überschrieben. Sie können diese Konfiguration an Ihre individuelle Umgebung oder Ihren jeweiligen Anwendungsfall anpassen. Die in dieser Lösung definierten Metriken sind die Mindestwerte, die für das empfohlene Dashboard erforderlich sind.
Der Bereitstellungsprozess umfasst die folgenden Schritte:
Schritt 1: Stellen Sie sicher, dass die EC2-Ziel-Instances über die erforderlichen IAM-Berechtigungen verfügen.
Schritt 2: Speichern Sie die empfohlene Agentenkonfigurationsdatei in Systems Manager Parameter Store.
Schritt 3: Installieren Sie den CloudWatch-Agenten mithilfe eines CloudFormation-Stacks auf einer oder mehreren EC2-Instances.
Schritt 4: Stellen Sie sicher, dass das Agenten-Setup richtig konfiguriert ist.
Schritt 1: Stellen Sie sicher, dass die EC2-Ziel-Instances über die erforderlichen IAM-Berechtigungen verfügen
Sie müssen Systems Manager die Erlaubnis erteilen, den CloudWatch-Agenten zu installieren und zu konfigurieren. Sie müssen dem CloudWatch-Agenten auch die Berechtigung erteilen, Telemetrie von Ihrer EC2-Instance in CloudWatch zu veröffentlichen. Stellen Sie sicher, dass die der Instance angefügte IAM-Rolle die IAM-Richtlinien CloudWatchAgentServerPolicy und AmazonSSMManagedInstanceCore angefügt hat.
-
Nachdem die Rolle erstellt wurde, weisen Sie Ihren EC2-Instances eine Rolle zu. Folgen Sie den Schritten unter Starten einer Instance mit einer IAM-Rolle, um beim Starten einer neuen EC2-Instance eine Rolle zuzuweisen. Um einer vorhandenen EC2-Instance eine Rolle zuzuweisen, folgen Sie den Schritten unter Anfügen einer IAM-Rolle an eine Instance.
Schritt 2: Speichern Sie die empfohlene CloudWatch-Agentenkonfigurationsdatei in Systems Manager Parameter Store
Parameter Store vereinfacht die Installation des CloudWatch-Agenten auf einer EC2-Instance, indem Konfigurationsparameter sicher gespeichert und verwaltet werden, sodass keine hartcodierten Werte benötigt werden. Das gestaltet den Bereitstellungsprozess sicherer und flexibler und ermöglicht eine zentrale Verwaltung und einfachere Aktualisierungen von Konfigurationen über mehrere Instances hinweg.
Gehen Sie wie folgt vor, um die empfohlene CloudWatch-Agenten-Konfigurationsdatei als Parameter im Parameter Store zu speichern.
So erstellen Sie die CloudWatch-Agent-Konfigurationsdatei als Parameter
Öffnen Sie die AWS Systems Manager-Konsole unter https://console.aws.amazon.com/systems-manager/
. Wählen Sie im Navigationsbereich Anwendungsmanagement, Parameter Store aus.
Befolgen Sie diese Schritte, um einen neuen Parameter für die Konfiguration zu erstellen.
-
Wählen Sie Parameter erstellen aus.
-
Geben Sie im Feld Name einen Namen ein, mit dem Sie in späteren Schritten die CloudWatch-Agent-Konfigurationsdatei referenzieren werden. Beispiel,
AmazonCloudWatch-JVM-Configuration. -
(Optional) Geben Sie in das Feld Beschreibung eine Beschreibung für den Parameter ein.
-
Wählen Sie für Parameterstufe die Option Standard aus.
-
Wählen Sie unter Type (Typ) die Option String (Zeichenfolge) aus.
Wählen Sie als Datentyp die Option Text aus.
-
Fügen Sie in das Feld Wert den entsprechenden JSON-Block ein, der unter Agentenkonfiguration für JVM-Hosts aufgeführt war. Passen Sie den Wert und die Portnummer der Gruppierungsdimension wie beschrieben an.
-
Wählen Sie Parameter erstellen aus.
-
Schritt 3: Installieren Sie den CloudWatch-Agenten und wenden Sie die Konfiguration mithilfe einer CloudFormation-Vorlage an
Sie können AWS CloudFormation zur Installation des Agenten nutzen und so konfigurieren, dass er die CloudWatch-Agentenkonfiguration verwendet, die Sie in den vorherigen Schritten erstellt haben.
So installieren und konfigurieren Sie den CloudWatch-Agenten für diese Lösung
-
Öffnen Sie den CloudFormation-Assistenten Stack schnell erstellen über diesen Link: https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json
. -
Sorgen Sie dafür, dass die ausgewählte Region auf der Konsole die Region ist, in der die JVM-Workload ausgeführt wird.
-
Geben Sie unter Stack-Name einen Namen für diesen Stack, z. B.
CWAgentInstallationStack, ein. -
Gehen Sie im Abschnitt Parameter wie folgt vor:
-
Geben Sie für CloudWatchAgentConfigSSM den Namen des Systems-Manager-Parameters für die Agentenkonfiguration ein, die Sie zuvor erstellt haben, z. B.
AmazonCloudWatch-JVM-Configuration. -
Um die Ziel-Instances auszuwählen, haben Sie zwei Optionen.
-
Geben Sie für InstanceIDs eine durch Kommas getrennte Liste von Instance-IDs an, in der Sie den CloudWatch-Agenten mit dieser Konfiguration installieren möchten. Sie können eine einzelne Instance oder mehrere Instances auflisten.
-
Wenn Sie die Bereitstellung in großem Umfang durchführen, können Sie den TagKey und den entsprechenden TagValue angeben, um alle EC2-Instances mit diesem Tag und Wert als Ziel festzulegen. Wenn Sie einen TagKey angeben, müssen Sie einen entsprechenden TagValue festlegen. (Geben Sie
aws:autoscaling:groupNamefür eine Auto-Scaling-Gruppe den TagKey und den Namen der Auto-Scaling-Gruppe für den TagValue an, der für alle Instances innerhalb der Auto-Scaling-Gruppe bereitgestellt werden soll.)Wenn Sie sowohl die InstanceIds- als auch die TagKeys-Parameter angeben, haben die InstanceIds Vorrang und die Tags werden ignoriert.
-
-
-
Überprüfen Sie die Einstellungen und wählen Sie dann Stack erstellen aus.
Wenn Sie die Vorlagendatei zuerst bearbeiten möchten, um sie anzupassen, wählen Sie im Assistenten zum Erstellen von Stacks die Option Eine Vorlagendatei hochladen aus, um die bearbeitete Vorlage hochzuladen. Weitere Informationen finden Sie unter Erstellen eines Stacks in der CloudFormation-Konsole. Sie können den folgenden Link nutzen, um die Vorlage herunterzuladen: https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json
Anmerkung
Nach Abschluss dieses Schritts wird dieser Systems-Manager-Parameter den CloudWatch-Agenten zugeordnet, die in den Ziel-Instances ausgeführt werden. Dies bedeutet, dass:
-
Wenn der Systems-Manager-Parameter gelöscht wird, wird der Agent gestoppt.
-
Wenn der Systems-Manager-Parameter bearbeitet wird, werden die Konfigurationsänderungen automatisch in der geplanten Häufigkeit, die standardmäßig 30 Tage beträgt, für den Agenten übernommen.
-
Wenn Sie Änderungen an diesem Systems-Manager-Parameter sofort anwenden möchten, müssen Sie diesen Schritt erneut ausführen. Weitere Informationen über Zuordnungen finden Sie unter Arbeiten mit Zuordnungen in Systems Manager.
Schritt 4: Stellen Sie sicher, dass das Agenten-Setup richtig konfiguriert ist
Sie können verifizieren, ob der CloudWatch-Agent installiert ist, indem Sie die Schritte unter Überprüfen, ob der CloudWatch-Agent ausgeführt wird befolgen. Wenn der CloudWatch-Agent nicht installiert ist und nicht ausgeführt wird, sorgen Sie dafür, dass die Einrichtung korrekt erfolgte.
-
Sorgen Sie dafür, dass Sie der EC2-Instance eine Rolle mit den richtigen Berechtigungen zugewiesen haben, wie unter Schritt 1: Stellen Sie sicher, dass die EC2-Ziel-Instances über die erforderlichen IAM-Berechtigungen verfügen beschrieben.
-
Stellen Sie sicher, dass Sie JSON für den Systems-Manager-Parameter korrekt konfiguriert haben. Führen Sie die Schritte unter Fehlerbehebung zum Installieren des CloudWatch-Agenten mit CloudFormation aus.
Wenn alles korrekt eingerichtet ist, sollten die JVM-Metriken in CloudWatch veröffentlicht werden. Sie können in der CloudWatch-Konsole prüfen, ob sie veröffentlicht wurden.
Zur Überprüfung, ob JVM-Metriken in CloudWatch veröffentlicht werden
Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie Metriken, Alle Metriken aus.
Stellen Sie sicher, dass Sie die Region ausgewählt haben, in der Sie die Lösung bereitgestellt haben, und wählen Sie Benutzerdefinierte Namespaces, CWAgent aus.
Suchen Sie nach den unter genannten Metriken in Agentenkonfiguration für JVM-Hosts, z. B.
jvm.memory.heap.used. Wenn Sie Ergebnisse für diese Metriken sehen können, werden die Metriken in CloudWatch veröffentlicht.
Erstellen des JVM-Lösungs-Dashboards
Das von dieser Lösung bereitgestellte Dashboard präsentiert Metriken für die dem Server zugrunde liegende Java Virtual Machine (JVM). Das bietet einen Überblick über die JVM, indem Metriken für alle Instances aggregiert und präsentiert werden und so der allgemeine Zustand und der Betriebszustand auf hoher Ebene zusammengefasst wird. Darüber hinaus zeigt das Dashboard eine Aufschlüsselung der wichtigsten Faktoren (Top-10-pro-Metrik-Widget) für jede Metrik. Auf diese Weise identifizieren Sie schnell Ausreißer oder Fälle, die erheblich zu den beobachteten Metriken beitragen.
Das Lösungs-Dashboard stellt keine EC2-Metriken dar. Zur Darstellung von EC2-Metriken müssen Sie das automatische EC2-Dashboard verwenden, um die von EC2 verkauften Metriken zu sehen, und das EC2-Konsolen-Dashboard zum Anzeigen der vom CloudWatch-Agenten gesammelten EC2-Metriken nutzen. Weitere Informationen zu automatischen Dashboards für AWS-Services finden Sie unter Anzeigen eines CloudWatch-Dashboards für einen einzelnen AWS-Service.
Um das Dashboard zu erstellen, können Sie die folgenden Optionen nutzen.
Verwenden Sie zum Erstellen des Dashboards die CloudWatch-Konsole.
Verwenden Sie die AWS CloudFormation-Konsole, um das Dashboard bereitzustellen.
Laden Sie die AWS CloudFormation-Infrastruktur als Code herunter und integrieren Sie sie als Teil Ihrer Continuous-Integration-(CI-)Automatisierung.
Wenn Sie die CloudWatch-Konsole verwenden, um ein Dashboard zu erstellen, können Sie eine Vorschau des Dashboards anzeigen, bevor Sie es erstellen und es Ihnen berechnet wird.
Anmerkung
Das mit CloudFormation in dieser Lösung erstellte Dashboard zeigt Metriken aus der Region an, in der die Lösung bereitgestellt wird. Sorgen Sie dafür, dass Sie den CloudFormation-Stack in der Region erstellen, in der Ihre JVM-Metriken veröffentlicht werden.
Wenn CloudWatch-Agent-Metriken in einem anderen Namespace veröffentlicht werden als CWAgent (falls Sie beispielsweise einen benutzerdefinierten Namespace bereitgestellt haben), müssen Sie die CloudFormation-Konfiguration ändern, um CWAgent durch den von Ihnen verwendeten benutzerdefinierten Namespace zu ersetzen.
Erstellen des Dashboards über die CloudWatch-Konsole
Anmerkung
In Lösungs-Dashboards werden derzeit nur Metriken zur Garbage Collection angezeigt, die sich auf den G1 Garbage Collector beziehen. Dabei handelt es sich um den Standard-Collector für die neuesten Java-Versionen. Wenn Sie einen anderen Garbage-Collection-Algorithmus verwenden, sind die Widgets, die sich auf die Garbage Collection beziehen, leer. Sie können diese Widgets jedoch anpassen, indem Sie die CloudFormation-Dashboard-Vorlage verändern und den entsprechenden Garbage-Collection-Typ auf die Namensdimension der Garbage-Collection-Metriken anwenden. Wenn Sie beispielsweise die parallele Garbage Collection verwenden, ändern Sie den Wert name=\"G1 Young Generation\" auf name=\"Parallel GC\" (bei der Garbage-Collection-Anzahlmetrik jvm.gc.collections.count).
-
Öffnen Sie für die CloudWatch-Konsole Dashboard erstellen über diesen Link: https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=JvmOnEc2&referrer=os-catalog
. -
Sorgen Sie dafür, dass die ausgewählte Region auf der Konsole die Region ist, in der die JVM-Workload ausgeführt wird.
-
Geben Sie den Namen für das Dashboard ein und wählen Sie dann Dashboard erstellen aus.
Um dieses Dashboard leicht von ähnlichen Dashboards in anderen Regionen zu unterscheiden, empfehlen wir, den Namen der Region in den Namen des Dashboards aufzunehmen, z. B.
JVMDashboard-us-east-1. -
Zeigen Sie eine Vorschau des Dashboards an und wählen Sie Speichern aus, um das Dashboard zu erstellen.
Erstellen des Dashboards über CloudFormation
-
Öffnen Sie den CloudFormation-Assistenten Stack schnell erstellen über diesen Link: https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/JVM_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json
. -
Sorgen Sie dafür, dass die ausgewählte Region auf der Konsole die Region ist, in der die JVM-Workload ausgeführt wird.
-
Geben Sie unter Stack-Name einen Namen für diesen Stack, z. B.
JVMDashboardStack, ein. -
Legen Sie im Abschnitt Parameter den Namen des Dashboards unter dem Parameter DashboardName fest.
Um dieses Dashboard leicht von ähnlichen Dashboards in anderen Regionen zu unterscheiden, empfehlen wir, den Namen der Region in den Namen des Dashboards aufzunehmen, z. B.
JVMDashboard-us-east-1. -
Bestätigen Sie die Zugriffsmöglichkeiten für Transformationen unter Funktionen und Transformationen. Beachten Sie, dass CloudFormation keine IAM-Ressourcen ergänzt.
-
Überprüfen Sie die Einstellungen und wählen Sie dann Stack erstellen aus.
-
Wenn der Stack-Status CREATE_COMPLETE lautet, wählen Sie unter dem erstellten Stack die Registerkarte Ressourcen und dann den Link unter Physische ID aus, um zum Dashboard zu gelangen. Sie können auch in der CloudWatch-Konsole auf das Dashboard zugreifen, indem Sie im linken Navigationsbereich der Konsole Dashboards auswählen und den Namen des Dashboards unter Benutzerdefinierte Dashboards suchen.
Wenn Sie die Vorlagendatei bearbeiten möchten, um sie für beliebige Zwecke anzupassen, können Sie im Assistenten zum Erstellen von Stacks die Option Eine Vorlagendatei hochladen auswählen, um die bearbeitete Vorlage hochzuladen. Weitere Informationen finden Sie unter Erstellen eines Stacks in der CloudFormation-Konsole. Sie können den diesen Link nutzen, um die Vorlage herunterzuladen: https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/JVM_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json
Anmerkung
In Lösungs-Dashboards werden derzeit nur Metriken zur Garbage Collection angezeigt, die sich auf den G1 Garbage Collector beziehen. Dabei handelt es sich um den Standard-Collector für die neuesten Java-Versionen. Wenn Sie einen anderen Garbage-Collection-Algorithmus verwenden, sind die Widgets, die sich auf die Garbage Collection beziehen, leer. Sie können diese Widgets jedoch anpassen, indem Sie die CloudFormation-Dashboard-Vorlage verändern und den entsprechenden Garbage-Collection-Typ auf die Namensdimension der Garbage-Collection-Metriken anwenden. Wenn Sie beispielsweise die parallele Garbage Collection verwenden, ändern Sie den Wert name=\"G1 Young Generation\" auf name=\"Parallel GC\" (bei der Garbage-Collection-Anzahlmetrik jvm.gc.collections.count).
Erste Schritte mit dem JVM-Dashboard
Hier finden Sie ein paar Aufgaben, die Sie mit dem neuen JVM-Dashboard ausprobieren können. Mit diesen Aufgaben können Sie prüfen, ob das Dashboard ordnungsgemäß funktioniert, und Sie erhalten praktische Erfahrung mit der Überwachung einer JVM-Prozessgruppe. Wenn Sie diese Optionen ausprobieren, werden Sie sich mit der Navigation im Dashboard und der Interpretation der visualisierten Metriken vertraut machen.
Auswahl einer Prozessgruppe
Wählen Sie in der Drop-down-Liste Name der JVM-Prozessgruppe die Prozessgruppe aus, die Sie überwachen möchten. Das Dashboard wird automatisch aktualisiert und stellt Metriken für die ausgewählte Prozessgruppe dar. Wenn Sie über mehrere Java-Anwendungen oder -Umgebungen verfügen, kann jede als separate Prozessgruppe angezeigt werden. Die Auswahl der entsprechenden Prozessgruppe sorgt dafür, dass Sie spezifische Metriken für die Anwendung oder Umgebung sehen, die Sie analysieren möchten.
Überprüfen der Speicherauslastung
Suchen Sie im Übersichtsbereich des Dashboards nach den Widgets Prozentsatz der Heap-Speichernutzung und Prozentsatz der Non-Heap-Speichernutzung. Diese zeigen den Prozentsatz des Heap- und Non-Heap-Speichers an, der von allen JVMs in der ausgewählten Prozessgruppe genutzt wird. Ein hoher Prozentsatz weist auf eine potenzielle Speicherauslastung hin, die zu Leistungsproblemen oder OutOfMemoryError-Ausnahmen führen könnte. Unter Speichernutzung nach Host können Sie auch eine Aufschlüsselung der Heap-Auslastung nach Hosts durchführen, um die Hosts mit hoher Auslastung zu prüfen.
Analysieren der geladenen Threads und Klassen
Suchen Sie im Abschnitt Geladene Threads und Klassen nach Host nach den Widgets Anzahl der 10 am häufigsten geladenen Threads und Die 10 am häufigsten geladenen Klassen. Suchen Sie nach JVMs mit einer ungewöhnlich hohen Anzahl von Threads oder Klassen verglichen mit anderen. Zu viele Threads können auf Thread-Leaks oder übermäßige Parallelität hinweisen, während eine große Anzahl geladener Klassen auf potenzielle Classloader-Leaks oder eine ineffiziente dynamische Klassengenerierung hinweisen könnte.
Identifizieren von Garbage-Collection-Problemen
Im Bereich Garbage Collection finden Sie die Widgets 10 häufigste Garbage Collections-Aufrufe pro Minute und Dauer der 10 häufigsten Garbage Collections für die verschiedenen Garbage-Collector-Typen: Jung, Gleichzeitig und Gemischt. Suchen Sie nach JVMs, die im Vergleich zu anderen eine ungewöhnlich hohe Anzahl an Erfassungen oder eine lange Erfassungsdauer aufweisen. Das könnte auf Konfigurationsprobleme oder Speicherlecks hinweisen.