jPowerMonitor Cloud-Toolkit
Bezugnehmend auf den Artikel „Energieverbrauchsmessung in der Cloud“ in unserem Kundenmagazin NEWS 01/2024 , der die Probleme mit der Messung näher beschreibt, ist zwischenzeitlich das jPowerMonitor Cloud-Toolkit implementiert und bietet eine Lösung für Teilaspekte.
In dieser Collection enthalten:
Collection öffnenTransitionspläne und -strategien für den Bankensektor
Green IT: Benchmarking zur Beurteilung von Energie- und CO₂-Effizienz
ESG-Reporting und -Offenlegung: Nachhaltigkeit in Aktion
Nachhaltigkeit im Kreditgeschäft: Die Relevanz von ESG-Kriterien und einer strategischen Ausrichtung
Biodiversität: Ein unterschätztes Risiko für den Finanzsektor
Naturkatastrophenrisiko: Auswirkungen von steigenden ESG-Risiken auf die Banken- und Versicherungswirtschaft
ESG-Risikomanagement: Stellungnahme der Deutschen Kreditwirtschaft zu den EBA-Guidelines
Doppelte Wesentlichkeit nach CSRD und ESRS: Effizienz in der Nachhaltigkeitsberichterstattung
Mit der neuen Lösung eva.real Immobilien nachhaltig bewerten
Dieser Beitrag bezieht sich auf den Artikel Energieverbrauchsmessung in der Cloud, der in unserem Kundenmagazin NEWS 01/2024 erschienen ist und die Probleme mit der Messung näher beschreibt. Zwischenzeitlich ist das jPowerMonitor Cloud-Toolkit implementiert und bietet eine Lösung für Teilaspekte.
Cloud-Toolkit für jPowerMonitor
jPowerMonitor1 ist eine Open-Source-Bibliothek zur Stromverbrauchsmessung von Java-Anwendungen. Sie bietet eine JUnit-Erweiterung für die Energieanalyse von Tests und einen Java-Agent, der den Energieverbrauch zur Laufzeit überwacht und die Basis für Optimierungstipps liefert.
jPowerMonitor kann den Stromverbrauch, zum Beispiel der CPU oder des Gesamtsystems, jedoch nicht selbst auslesen, sondern ist dazu auf ein Mess-Backend mit REST- oder CSV-Schnittstelle angewiesen. Auf physischen Rechnern ist dies kein Problem, da unter Windows Werkzeuge wie LibreHardwareMonitor2 oder unter Linux Running Average Power Limit (RAPL)3 verfügbar sind.
Die Erweiterung Cloud-Toolkit für jPowerMonitor zielt darauf ab, die Transparenz des Energieverbrauchs in der Cloud zu verbessern.
CPU-Stromverbrauchsschätzung
Basierend auf intern ermittelten CPU-Auslastungsdaten bietet das jPowerMonitor Cloud-Toolkit eine relativ genaue Schätzung des CPU-Stromverbrauchs, selbst in virtualisierten Umgebungen. Die Methodik folgt den Prinzipien von Cloud Carbon Footprint4.
In der jPowerMonitor-Konfiguration wurde neu (ab Version > = 1.2.0) eine zusätzliche Messmethode „est“ (für „estimation“, neben „lhm“ für LibreHardwareMonitor und „csv“ für die generische CSV-Schnittstelle) eingeführt.
Die „est“-Messmethode erfordert nur zwei zusätzliche Eingabeparameter:
- cpuMinWatts: minimaler Stromverbrauch der CPU (Idle-Verbrauch)
- cpuMaxWatts: maximaler Stromverbrauch der CPU (unter Volllast)
Auf lokalen Systemen können beide Werte vorab mit LibreHardwareMonitor oder einem anderen Messtool ermittelt werden. Notfalls können stattdessen die Angaben des CPU-Herstellers aus dem Datenblatt verwendet werden, zum Beispiel Idle-Verbrauch und TDP (Thermal Design Power)5.
Wenn die Möglichkeit besteht, echte „Live“-Messdaten zu erhalten, sind diese natürlich immer genauer und daher vorzuziehen.
Für Cloud-Plattformen gibt es im Internet diverse Tabellen, aus denen die Werte für zum Beispiel unterschiedliche VM-Instanztypen abgelesen werden können6,7. Die zum jetzigen Zeitpunkt aktuellen Durchschnittswerte für AWS (Amazon Web Services) EC2 sind im jpowermonitor.yaml-Template8 bereits vorkonfiguriert.
Für einen automatisch durch jPowerMonitor korrekt aus den Energieschätzdaten umgerechneten CO2eq-Verbrauch ist zusätzlich der Strommix (carbonDioxideEmissionFactor9) am Standort des Cloud-Rechenzentrums festzulegen.
Eine detaillierte Beschreibung der Konfiguration ist der README.md9 Datei im GitHub-Repository zu entnehmen.
Prometheus-Schnittstelle
Nutzer können seit Version 1.2.0 des jPowerMonitor Java-Agent Strom- und Energiewerte sowie den berechneten CO2-Verbrauch von Anwendungen über eine Prometheus10-Schnittstelle veröffentlichen.
Um nicht zu viele Werte zu senden, werden aktuell nur die Werte für die gefilterten Methoden an Prometheus gesendet. Sollen zum Beispiel die Messdaten für interne Java- oder Spring-Boot-Methoden hineinfließen, müssen die entsprechenden Namespaces (zum Beispiel „java.lang“, „org.springframework“) in der Filter-Konfiguration ergänzt sein.
In der Konfiguration des jPowerMonitor-Java-Agents gibt es neu eine Sektion „monitoring“ mit der aktuell einzigen Ausprägung „prometheus“. Hier kann das Schreiben der gefilterten Werte an die Prometheus Schnittstelle eingeschaltet (Flag „enabled“), und der http-Port (Einstellung „httpPort“), auf dem die Daten gegenüber Prometheus veröffentlicht werden, eingestellt werden. Weiter kann man ein Intervall in Sekunden definieren, nach dem die Energiewerte erneut an Prometheus geschrieben werden („writeEnergyIntervalInS“) und bestimmen, ob man auch die allgemeinen JVM-Metriken veröffentlichen möchte (publishJvmMetrics). Diese enthalten Informationen über die verwendete Java Virtual Machine, den Garbage Collector, geladene Klassen und Hauptspeicherverbrauch.
Die Prometheus Schnittstelle bietet folgende Metriken an:
- jPowerMonitor_power_per_method_filtered: Stromwerte pro Methode (W)
- jPowerMonitor_energy_per_method_filtered: Energiewerte pro Methode (J)
- jPowerMonitor_co2_per_method_filtered: CO2 Werte pro Methode (gCO2eq)
Alle veröffentlichten Werte enthalten folgende Attribute:
- pid – die Prozess Id der Anwendung, die gemessen wird
- thread – die Thread Id des Threads, in dem die aktuelle Methode läuft
- method – die Methode, die gemessen wird
- job – fix auf „jPowerMonitor“
Grafana-Dashboard
Die Metriken können mit Hilfe von Grafana11 visualisiert werden.
So können beispielsweise mit nachfolgendem PromQL12 (Prometheus Query Language) Ausdruck die Top 5 energiehungrigsten Methoden ermittelt werden und zum Beispiel in einem Balkendiagramm in Grafana angezeigt werden:
topk(5, sort_desc(sum by(method) (jPowerMonitor_energy_per_method_filtered{job=~“jPowerMonitor“})))
Dies ist in der Abbildung 1 mit den grünen Balken dargestellt.
Abbildung 1: Grafana Dashboard: CO2-Verbrauch und Energieverbrauch
In PromQL kann auf alle oben aufgelisteten Metriken und deren Attribute zugegriffen werden.
In dem jPowerMonitor github Repository steht ein Beispiel Dashboard zur Verfügung13.
Für die Visualisierung der JVM-Standard-Metriken bietet Grafana bereits eine Reihe von vorkonfigurierten Dashboards für den JMX-Exporter14.
Quellen
-
1. GitHub, msg-systems jpowermonitor
-
2. GitHub, LibreHardwareMonitor / LibreHardwareMonitor
-
3. Kepler Energy Sources - Kepler (sustainable-computing.io)
-
4. Cloud Carbon Footprint, Methodology
-
5. Thermal Design Power – Wikipedia
-
6. cloud-carbon-coefficients/data at main · cloud-carbon-footprint/cloud-carbon-coefficients · GitHub
-
7. GitHub, re-cinq / emissions-data
-
8. jpowermonitor/src/main/resources/jpowermonitor-template.yaml at main · msg-systems/jpowermonitor · GitHub
-
9. jpowermonitor/README.md at main · msg-systems/jpowermonitor · GitHub
-
10. Prometheus
-
11. Grafana Labs
-
12. Querying Prometheus
-
13. Beispiel Grafana Dashboard für jPowerMonitor
-
14. Beispiel für ein Grafana JVM Standardmetrik-Dashboard
Sie müssen sich anmelden, um einen Kommentar zu schreiben.