Java-Nutzung in einem Container verfolgen

Mit JMS-Flotten können Sie die Java-Nutzung von Java-Anwendungen verfolgen, die in einem Container ausgeführt werden. Dieser Abschnitt veranschaulicht, wie ein Container mit einem Docking-Bild konfiguriert wird.
Hinweis

Es werden nur Container mit Oracle JDKs erkannt.
Voraussetzungen:
  • Sie haben das Management Agent installieren und JMS-Plug-in bereitstellen auf Ihrem Containerhost abgeschlossen. Der Containerhost kann eine Compute-Instanz an Ihrem Standort, auf OCI oder auf einer anderen Cloud-Plattform sein.
  • Das Docker-Image wird im Containerhost gespeichert. Das Image enthält mindestens eine Java-Anwendung (JAR-Dateien), das Oracle JDK und andere Abhängigkeiten, die zum Ausführen Ihrer Java-Anwendungen erforderlich sind.
  • Docker wird im Containerhost installiert.

So verfolgen Sie die Java-Nutzung in einem Container:

  1. Stellen Sie sicher, dass Java Usage Tracker-Datensätze in /var/log/java/usagetracker.log geschrieben werden. Starten Sie einen Container mit dem folgenden Befehl.
    Hinweis

    Sie sollten diese Konfiguration nur mit vertrauenswürdigen Containern verwenden oder wenn Sie keine Isolation zwischen Hostcontainer und Container bzw. zwischen Containern benötigen. Wenn Sie eine Isolierung benötigen, müssen Sie für jeden Container eine separate usagetracker.log-Datei verwenden und diese Logs in /var/log/java/usagetracker.log auf dem Containerhost aggregieren.
    docker run -d -v /var/log/java/:/var/log/java/ -v /etc/oracle/java/:/etc/oracle/java/:ro --name <container_name> <docker_image>:latest
    • -d startet den Container als Daemon-Prozess.
    • -v /var/log/java/:/var/log/java/ ordnet den Bind-Mount /var/log/java/ auf dem Containerhost /var/log/java/ im Container zu. Dadurch wird sichergestellt, dass die Datei /var/log/java/usagetracker.log im Container im Containerhost vorhanden ist.
    • -v /etc/oracle/java/:/etc/oracle/java/:ro wird als schreibgeschützter Bind-Mount /etc/oracle/java/ auf dem Containerhost /etc/oracle/java/ im Container zugeordnet. Dadurch wird sichergestellt, dass die Datei /etc/oracle/java/usagetracker.properties im Container im Containerhost vorhanden ist.
    • --name <container_name> gibt den Namen im Container an. Ersetzen Sie <container_name> durch den Namen des Containers.
    • <docker_image>:latest gibt die Verwendung der neuesten Imageversion an. Ersetzen Sie <docker_image> durch den Namen Ihres Docker-Images.
  2. Prüfen Sie mit docker inspect, ob die Bind-Mounts korrekt im Container erstellt wurden.
    docker inspect <container_name>

    Suchen Sie nach dem Abschnitt "Mounts":

     "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/var/log/java/",
                    "Destination": "/var/log/java/",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                },
                    "Type": "bind",
                    "Source": "/etc/oracle/java/",
                    "Destination": "/etc/oracle/java/",
                    "Mode": "ro",
                    "RW": false,
                    "Propagation": "rprivate"
            ],
  3. Prüfen Sie, ob die Logdatei Ihre Java-Anwendungen (JAR-Dateien) und die JDK-Version Ihres Docker-Images enthält.
    cat /var/log/java/usagetracker.log
  4. Fügen Sie usagetracker.config ein, um eine bestimmte Logdatei auf dem Host zu erstellen.
    Kopieren Sie usagetracker.properties aus dem Host /etc/oracle/java in das aktuelle Verzeichnis, sodass Sie es als Teil eines Docker-Builds aufnehmen können.
    # usage tracker configuration
    RUN mkdir -p /etc/oracle/java/
    COPY ./usagetracker.properties /etc/oracle/java/
    RUN chmod 644 /etc/oracle/java/usagetracker.properties
    RUN sed -i "s/\usagetracker.log/usagetracker.log_${CONTAINER_NAME}/g" /etc/oracle/java/usagetracker.properties
  5. Stellen Sie sicher, dass Java-Nutzungstracker-Datensätze für jeden Container in /var/log/java/ geschrieben werden. Starten Sie einen Container mit dem folgenden Befehl:
    docker run -d -v /var/log/java/:/var/log/java/ --name <container_name> <docker_image>:latest
  6. Aggregieren Sie mehrere Nutzungsdateien in /var/log/java/usagetracker.log auf dem Host.
  7. Prüfen Sie die Flotte in JMS, um festzustellen, ob der Docker-Container erkannt wurde. Sie sollten die JAR-Dateien Ihrer Java-Anwendungen unter Anwendungen anzeigen können.