Modul 26 · Migration Deep Dive · Stufe 5 Enterprise Runtime

JMX und Monitoring

Standard MBean und direkte Registrierung wird nachvollziehbar in Actuator und Micrometer Counter überführt. Die Akte zeigt nicht nur das Ziel, sondern die tatsächlichen Dateien, APIs, Dependencies, Codebelege, Tests, Risiken und Cutover-Schritte.

Management FacadeObserver
3 → 1Produktionsdateien
40 → 22Java-Zeilen
1 → 1Testdateien
1 / 2Dependencies entfernt / neu
NIEDRIGRisiko · Score 0

Was sich konkret ändert

DimensionLegacyModernMigrationskonsequenz
Programmiermodellimperativ / ohne Framework-AnnotationenComponentAnnotationen und Containerfunktionen werden nur dort eingesetzt, wo sie eine konkrete technische Verantwortung übernehmen.
Abhängigkeiten1 direkte Dependencies2 direkte Dependencies2 neu, 1 entfernt; Versionen und transitive Auswirkungen im erfolgreichen Online-Build prüfen.
Öffentliche API4 erkannte Methoden2 erkannte MethodenMethoden werden nach fachlicher Rolle gemappt; reine Bootstrap- und Framework-Methoden sind kein fachlicher Vertrag.
Datenmodellclass JmxRegistration, class TaskCounter, interface TaskCounterMBeanclass TaskMetricsFeldnamen, IDs, Null-Semantik, Gleichheit und Serialisierungsform werden separat regressionstestet.
FehlerverhaltenLegacy-Exceptions und Rückgabewerteexplizitere Fach-/Framework-FehlerabbildungFehler dürfen nicht nur technisch übersetzt werden; Status, Ursache, Retrybarkeit und Client-Vertrag müssen erhalten oder versioniert werden.
TestsBestands- und Golden-Master-TestsUnit-, Slice-, Contract- und IntegrationstestsDer Modern-Pfad wird zuerst gegen denselben fachlichen Vektor geprüft und danach um neue technische Risiken ergänzt.
BetriebLegacy-Start/Lifecyclemodernes Packaging, Health und externe KonfigurationDashboards und Alerts vor Umschaltung auf Doppelzählung und Lücken prüfen.
RollbackLegacy-Artefakt bleibt unverändertModern-Artefakt getrennt deploybarKein Rollback über Datenverlust: Schema, Nachrichten und verschlüsselte Daten müssen rückwärtslesbar oder durch Dual-Read abgesichert sein.

Fachlicher Vertrag: unverändert zu erhalten

  • Metrikbedeutung, Einheit und Label-Kardinalität sind dokumentiert.
  • Managementzugriff ist authentisiert/autorisiert.
  • Monitoring verändert das Fachverhalten nicht.

Hauptrisiko und Testfokus

metric/endpoint naming and exposure

endpoint exposure, health detail and unauthorized access tests

Die Modernisierung gilt erst als abgeschlossen, wenn der fachliche Vertrag automatisiert belegt ist.

Verbindliches Code- und Rollenmapping

Die Zuordnung ist semantisch: Eine Legacy-Klasse kann in mehrere moderne Rollen zerlegt werden.

Legacy-Rolle / DateiModern-Rolle / DateiBedeutung
TaskCounterMBean.java + TaskCounter.java + JmxRegistration.javaTaskMetrics.javaMBean-Registrierung wird Micrometer-Metrik/Actuator-Exposition.

Legacy-Quellinventar

DateiTypAnnotationenöffentliche APIPatternZeilen
JmxRegistration.javaclass JmxRegistrationObjectName register(TaskCounter counter)14
TaskCounter.javaclass TaskCountervoid taskCompleted()
long getCompleted()
void reset()
Management Facade20
TaskCounterMBean.javainterface TaskCounterMBean6

Modern-Quellinventar

DateiTypAnnotationenöffentliche APIPatternZeilen
TaskMetrics.javaclass TaskMetricsComponentvoid taskCompleted()
double count()
Observer22

Dependency- und Laufzeitmigration

StatusDependencyVersionScopePrüfung
ENTFERNTorg.junit.jupiter:junit-jupiterBOM/ParenttestLegacy-Laufzeit entfällt oder wird durch Plattform/BOM ersetzt.
NEUorg.springframework.boot:spring-boot-starter-actuatorBOM/ParentcompileNeue Laufzeit-/Testabhängigkeit; transitiv, lizenz- und security-seitig prüfen.
NEUorg.springframework.boot:spring-boot-starter-testBOM/ParenttestNeue Laufzeit-/Testabhängigkeit; transitiv, lizenz- und security-seitig prüfen.
Direkte POM-Daten ersetzen keinen erfolgreichen Online-Build mit transitiver SBOM- und CVE-Prüfung.

Vorher-/Nachher-Codebelege

Die folgenden Ausschnitte stammen direkt aus den enthaltenen Projekten. Dadurch ist sichtbar, welche Verantwortung tatsächlich verschoben wurde.

Legacy
TaskCounterMBean.java + TaskCounter.java + JmxRegistration.java
Modern
TaskMetrics.java

Migrationsbedeutung: MBean-Registrierung wird Micrometer-Metrik/Actuator-Exposition.

Legacy-Code

projects/26-jmx-monitoring/legacy/src/main/java/at/aydin/lab/jmx/legacy/TaskCounterMBean.java

package at.aydin.lab.jmx.legacy;

public interface TaskCounterMBean {
    long getCompleted();
    void reset();
}

Legacy-Code

projects/26-jmx-monitoring/legacy/src/main/java/at/aydin/lab/jmx/legacy/TaskCounter.java

package at.aydin.lab.jmx.legacy;

import java.util.concurrent.atomic.AtomicLong;

// Design Pattern: Management Facade
// Zweck: Beschränkt JMX-Zugriff auf kontrollierte Monitoring-Operationen.
public final class TaskCounter implements TaskCounterMBean {
    private final AtomicLong completed = new AtomicLong();
    public void taskCompleted() {
        completed.incrementAndGet();
    }

    public long getCompleted() {
        return completed.get();
    }

    public void reset() {
        completed.set(0);
    }
}

Modern-Code

projects/26-jmx-monitoring/modern/src/main/java/at/aydin/lab/jmx/modern/TaskMetrics.java

package at.aydin.lab.jmx.modern;

import io.micrometer.core.instrument.*;
import org.springframework.stereotype.Component;

// Design Pattern: Observer
// Zweck: Fachliche Ereignisse aktualisieren eine entkoppelte Metrik für Actuator/Monitoring-Systeme.
@Component
public class TaskMetrics {
    private final Counter completed;
    public TaskMetrics(MeterRegistry registry) {
        completed = Counter.builder("tasks.completed").description("Completed tasks").register(registry);
    }

    public void taskCompleted() {
        completed.increment();
    }

    public double count() {
        return completed.count();
    }
}

Umsetzungsplan mit Qualitäts-Gates

  1. Arbeitspaket 1
    MBean-Namen, Attribute und Operationen inventarisieren. Nachweis: Commit/PR, automatisierter Test und aktualisierte Betriebsdokumentation.
  2. Arbeitspaket 2
    TaskCounter-Metrik auf Micrometer Counter/Gauge abbilden. Nachweis: Commit/PR, automatisierter Test und aktualisierte Betriebsdokumentation.
  3. Arbeitspaket 3
    Actuator-Exposition minimal konfigurieren. Nachweis: Commit/PR, automatisierter Test und aktualisierte Betriebsdokumentation.
  4. Arbeitspaket 4
    Dashboards/Alerts auf neue Namen und Einheiten umstellen. Nachweis: Commit/PR, automatisierter Test und aktualisierte Betriebsdokumentation.
  5. Arbeitspaket 5
    Doppelzählung im Parallelbetrieb verhindern. Nachweis: Commit/PR, automatisierter Test und aktualisierte Betriebsdokumentation.
  6. Arbeitspaket 6
    JMX-Registrierung erst nach Monitoring-Abnahme entfernen. Nachweis: Commit/PR, automatisierter Test und aktualisierte Betriebsdokumentation.

Konkreter Test- und Abnahmekatalog

IDEbenePrüfungerforderlicher Nachweis
26-JMX-MONITORING-A01Integration/ContractZählerwerte stimmen für definierte Abläufe überein.Automatisierter Test und CI-Protokoll
26-JMX-MONITORING-A02Integration/ContractKeine unbeschränkte Tag-Kardinalität.Automatisierter Test und CI-Protokoll
26-JMX-MONITORING-A03Integration/ContractSensitive Endpunkte sind geschützt.Automatisierter Test und CI-Protokoll
26-JMX-MONITORING-A04Integration/ContractHealth und Metrics unterscheiden Verfügbarkeit von Fachzustand.Automatisierter Test und CI-Protokoll
26-JMX-MONITORING-A05Integration/ContractAlerting funktioniert nach Umschaltung.Automatisierter Test und CI-Protokoll
26-JMX-MONITORING-T01UnitFachlogik ohne Container oder externen Dienst testen.Unit-Test
26-JMX-MONITORING-T02RegressionLegacy- und Modern-Ergebnis für denselben Golden-Master-Vektor vergleichen.Vergleichsreport
26-JMX-MONITORING-T03NegativeFehlerhafte, leere und grenzwertige Eingaben prüfen.Negativtest
26-JMX-MONITORING-T04OperationsStart, Health, Shutdown und Konfigurationsfehler prüfen.Deployment-/Startprotokoll
26-JMX-MONITORING-T05ObservabilityMetriknamen, Labels, Einheiten, Health und Zugriffsschutz prüfen.Monitoring-Test
26-JMX-MONITORING-F01Fokusendpoint exposure, health detail and unauthorized access testsModulspezifischer Testreport

Risikoregister des Moduls

RisikoAuswirkungGegenmaßnahmeGate
metric/endpoint naming and exposureNIEDRIGendpoint exposure, health detail and unauthorized access testsvor Cutover
Neue Framework-/Library-LaufzeitabhängigkeitenMITTELSBOM, Lizenz-, CVE- und transitive Dependency-Prüfung im Online-Buildvor Release
Legacy-Verhalten war implizit an entfernte Library gekoppeltMITTELContract-/Golden-Master-Tests und gezielte Fehlerpfadevor Abschaltung

Konfiguration und Ressourcen

Keine zusätzlichen Ressourcen.

Rollback und Koexistenz

JMX und Micrometer können zeitweise parallel publizieren; ein eindeutiges Präfix verhindert Dashboard-Verwechslung.

Abbruchkriterien

  • Fachlicher Golden-Master weicht ab.
  • Daten-, Nachrichten- oder API-Kompatibilität ist ungeklärt.
  • Fehlerquote, Latenz oder Ressourcenverbrauch überschreiten das vereinbarte Limit.
  • Monitoring oder Rückfallpfad ist nicht funktionsfähig.

Definition of Done

Direkte Arbeitslinks

⌂ Cockpit