Datenspeicherung und Logging in JMS-Flotten

JMS-Flotten verwenden einen systematischen Ansatz zur Organisation, Speicherung und Verwaltung von Daten, um eine optimale Verarbeitung und erweiterte Analyse sicherzustellen. Rohdaten, die von Ereignissen erfasst werden, die vom JMS-Plug-in von jeder verwalteten Instanz gesendet werden, werden zunächst in den zugehörigen Logobjekten der Flotte gespeichert, zu der die verwaltete Instanz gehört. JMS kategorisiert diese Daten mit dem OCI Logging-Service in zwei Haupttypen: Bestandslogs und Vorgangslogs.
  • Bestandslogs: Diese benutzerdefinierten Logs speichern Java Runtime-Bestands- und -Nutzungsdaten, die das JMS-Plug-in von Hosts meldet. Lagerprotokolle sind erforderlich, damit Flotten effektiv funktionieren.
  • Vorgangslogs: Diese benutzerdefinierten Logs erfassen Vorgänge, die über JMS-Flotten ausgeführt werden. Obwohl optional, ergänzen Vorgangsprotokolle die Bestandsprotokolle durch zusätzliche betriebliche Einblicke.

Wenn Flotten über die OCI-Konsole erstellt werden, werden Logobjekte von den JMS-Flotten im selben Compartment wie die Flotte erstellt. Wenn Sie Flotten mit der createFleet-API erstellen, müssen Sie als Parameter die OCIDs der Loggruppe und Objekte angeben, die mit der Flotte verknüpft werden sollen. Auf das mit der Flotte verknüpfte Logobjekt kann mit den Logkonfigurationsdetails zugegriffen werden, die in der Registerkarte Flotteneigenschaften vorhanden sind.

Sowohl Bestands- als auch Vorgangslogs sind unter einer Loggruppe organisiert, die erweiterte Analysen über Logging Analytics erleichtert. Standardmäßig haben diese Logobjekte einen Aufbewahrungszeitraum von einem Monat. Um Daten unbegrenzt beizubehalten, können Sie eine Connector Hub-Verbindung zwischen dem Logobjekt und einem Objektspeicher-Bucket herstellen.

Hinweis

Für Bestands- und Vorgangslogs fallen Speicherkosten an. Weitere Informationen finden Sie im Oracle Cloud Kostenrechner.

In Logs gespeicherte Rohdaten werden verarbeitet, und aggregierte Daten werden in die Autonomous Transaction Processing-(ATP-)Datenbank übertragen, die dem JMS-Service gehört. JMS bewahrt diese aggregierten Daten bis zu einem Jahr auf, sodass Benutzer historische Trends analysieren und umsetzbare Einblicke in ihre Java-Workloads erhalten können.

Weitere Informationen zum Logging finden Sie unter:

Bestandslogs

Bestandslogs enthalten Informationen zu den verschiedenen Ereignistypen, die von JMS-Flotten erfasst werden. Jede Nachricht hat das JSON-Format. Die Nachricht enthält den Typ und die Daten des Ereignisses, wann es empfangen wurde, die ID des Logs, die Management Agent-ID und andere Daten. Der Management Agent schreibt in einem Intervall, das Sie in den Agent-Einstellungen konfigurieren, direkt in die mit seiner JMS-Flotte verknüpften Bestandslogobjekte.

Der Typ kann einer der Folgenden sein:
  • jms.jvm.usage.log: Daten zum JVM-Aufruf beim Reporting zur Java-Laufzeitnutzung gefunden.
  • jms.jvm.installation.log: Daten über JVM beim Java Runtime Discovery Scan gefunden.
  • jms.jvm.usage.attach.log: Daten zum JVM-Aufruf, die von der Attach-API bei der Ausführung erweiterter Features gefunden wurden
  • jms.javaserver.metadata.log: Daten aus einem Java-Server-Scan.
  • jms.javaserver.libraries.log: Daten aus einem Scan der Java-Server-Librarys.
  • jms.java.libraries.log: Daten aus einem Java-Library-Scan.
  • jms.drs.scan.log: Daten aus einem DRS-Scan.
  • jms.agent.plugin.start.log: Wird bei jedem Start des JMS-Plug-ins generiert.
Beispiel-Payload für den Ereignistyp jms.jvm.usage.log:
{
  "datetime": 1654089796180,
  "logContent": {
    "data": {
      "data": {
        "additionalProperties": {
          "java.runtime.name": "Java(TM) SE Runtime Environment"
        },
        "applicationName": "com.oracle.test.HelloWorld",
        "classPath": "/home/opc/HelloWorld-1.0.jar",
	  The classPath is a list of paths, but due to logging limitations, JMS provides the same information as an array of path. There is a limit 10,000 characters for string values.
        "fleetId": "ocid1.jmsfleet.oc1.iad.fleet-id",
        "javaArgs": "John",
        "javaCommand": "com.oracle.test.HelloWorld",
        "javaDistribution": "Java(TM) SE Runtime Environment",
        "javaHome": "/usr/java/jdk-11.0.14",
        "javaMajorVersion": "11",
        "javaVendor": "Oracle Corporation",
        "javaVersion": "11.0.14",
        "managedInstanceId": "ocid1.managementagent.oc1.iad.management-agent-id",
        "osArch": "amd64",
        "osName": "Linux",
        "osVersion": "5.4.17-2136.302.7.2.1.el8uek.x86_64",
        "startTime": "2022-05-27T05:02:01Z",
        "typeOfStart": "VM start"
      },
      "datacontenttype": "application/json",
      "dataschema": "1.0",
      "id": "b36806ce-564e-46e5-99fc-d50fb386dd7a",
      "source": "ocid1.managementagent.oc1.iad.management-agent-id",
      "specversion": "1.0",
      "time": "2022-06-01T13:23:16.180Z",
      "type": "jms.jvm.usage.log"
    },
    "id": "b36806ce-564e-46e5-99fc-d50fb386dd7a",
    "oracle": {
      "compartmentid": "ocid1.compartment.oc1..compartment-id",
      "ingestedtime": "2022-06-01T13:24:12.141Z",
      "loggroupid": "ocid1.loggroup.oc1.iad.log-group-id",
      "logid": "ocid1.log.oc1.iad.log-id",
      "tenantid": "ocid1.tenancy.oc1..tenant-id"
    },
    "source": "ocid1.managementagent.oc1.iad.management-agent-id",
    "specversion": "1.0",
    "subject": "JMS",
    "time": "2022-06-01T13:23:16.180Z",
    "type": "jms.jvm.usage.log"
  }
}
Beispiel-Payload für den Ereignistyp jms.jvm.installation.log:
{
  "datetime": 1651838678794,
  "logContent": {
    "data": {
      "data": {
        "fleetId": "ocid1.jmsfleet.oc1.iad.fleet-id",
        "javaDistribution": "Java(TM) SE Runtime Environment",
        "javaHome": "/usr/java/jdk-17.0.2",
        "javaMajorVersion": "17",
        "javaVendor": "Oracle Corporation",
        "javaVersion": "17.0.2",
        "managedInstanceId": "ocid1.managementagent.oc1.iad.management-agent-id",
        "osArch": "amd64",
        "osName": "Linux",
        "osVersion": "5.4.17-2136.304.4.1.el8uek.x86_64"
      },
      "datacontenttype": "application/json",
      "dataschema": "1.0",
      "id": "3b8f47a4-46de-476f-b786-1dc4d4ddd6ec",
      "source": "ocid1.managementagent.oc1.iad.management-agent-id",
      "specversion": "1.0",
      "time": "2022-05-06T12:04:38.794Z",
      "type": "jms.jvm.installation.log"
    },
    "id": "id",
    "oracle": {
      "compartmentid": "ocid1.compartment.oc1..compartment-id",
      "ingestedtime": "2022-05-06T12:04:59.016Z",
      "loggroupid": "ocid1.loggroup.oc1.iad.loggroup-id",
      "logid": "ocid1.log.oc1.iad.log-id",
      "tenantid": "ocid1.tenancy.oc1..tenancy-id"
    },
    "source": "ocid1.managementagent.oc1.iad.management-agent-id",
    "specversion": "1.0",
    "subject": "JMS",
    "time": "2022-05-06T12:04:38.794Z",
    "type": "jms.jvm.installation.log"
  }
}

Vorgangslogs

Operation Logs speichert Ereignisse im Zusammenhang mit Vorgängen, die über JMS-Flotten ausgeführt werden. Jede Nachricht hat das JSON-Format. Die Nachricht enthält den Typ und die Daten des Ereignisses, wann es empfangen wurde, die ID des Logs, die Arbeitsanforderungs-ID und andere Daten. Wenn Vorgangslogs für eine Flotte aktiviert sind, schreibt der Management Agent in die zugehörigen Vorgangslogobjekte, während er in der Flotte initiierte Arbeitsanforderungen ausführt.

Die Logdaten des JMS-Flottenvorgangs verwenden das folgende Format:
  • Typ ist jms.publiclogs
  • specversion hat Version 1.0
  • Codierung ist application/json
  • Quelle ist jms
Der Payload-Ereignistyp jms.publiclogs zeigt die Daten zu den Lifecycle Management-Vorgängen an. Siehe die folgenden logContent.data.data-Attribute:
{
      "datetime": 1652437153474,
      "logContent": {
            "data": {
                  "category": "EXECUTION",
                  "fleetId": "ocid1.fleet-name.oc1.iad.fleet-id",
                  "level": "INFO",
                  "managedInstanceId": "ocid1.managementagent.oc1.iad.management-agent-id",
                  "message": "Work Item 0f68ca34-1c7f-4fb2-8b6a-d0119c6a4934, 
		   part of Work Request ocid1.jmsworkrequest.oc1.iad.work-request-id, 
		  status is Retrying for delete Java Runtime 15.0.2 at 
		  /usr/java/jdk-15.0.2 in test-environment-id with 
		  OCID: ocid1.managementagent.oc1.iad.management-agent-id",
                  "timestamp": "2022-05-02T03:36:21.235Z",
                  "workRequestId": "ocid1.jmsworkrequest.oc1.iad.work-request-id"
            },
            "id": "017e880a-b33d-4f90-bdc7-5a0034b7da36",
            "oracle": {
                  "compartmentid": "ocid1.compartment.oc1..compartment-id",
                  "ingestedtime": "2022-05-13T10:19:13.676Z",
                  "loggroupid": "ocid1.loggroup.oc1.iad.log-group-id",
                  "logid": "ocid1.log.oc1.iad.log-id",
                  "tenantid": "ocid1.tenancy.oc1..tenancy-id"
            },
            "source": "jms",
            "specversion": "1.0",
            "time": "2022-05-13T10:19:13.474Z",
            "type": "jms.publiclogs"
      }
}

Erweiterte Suchabfragen

Wählen Sie in der Option Mit Logsuche explorieren den Modus Zu erweitert wechseln aus. Sie können die Logs mit erweiterten Abfragen nach bestimmten Ereignissen durchsuchen. Folgende Suchabfragen werden empfohlen:

Mit der folgenden Abfrage können Sie ein ganzes Compartment durchsuchen:
search "COMPARTMENT_OCID" | type='jms.jvm.usage.log' or type='jms.jvm.installation.log' | sort by datetime desc
Mit der folgenden Abfrage können Sie Ereignisse aus der Loggruppe suchen:
search "COMPARTMENT_OCID/LOG_GROUP_OCID" | type='jms.jvm.usage.log' or type='jms.jvm.installation.log' | sort by datetime desc
Mit der folgenden Abfrage können Sie Ereignisse aus dem Logobjekt suchen:
search "COMPARTMENT_OCID/LOG_GROUP_OCID/LOG_OBJECT_ID" | type='jms.jvm.usage.log' or type='jms.jvm.installation.log' | sort by datetime desc
Mit der folgenden Abfrage können Sie Ereignisse suchen, die mit der Flotte mit FLEET_OCID im Compartment COMPARTMENT_OCID mit dem zugehörigen Logobjekt LOG_OBJECT_ID und der Loggruppe LOG_GROUP_OCID verknüpft sind:
search "COMPARTMENT_OCID/LOG_GROUP_OCID/LOG_OBJECT_ID" | sort by datetime desc
Hinweis

In der folgenden Suchabfrage müssen Sie nicht nach Typ filtern, da nur Nachrichten zu JMS-Flotten in der mit der Flotte verknüpften logObject enthalten sind.
Alternativ können Sie COMPARTMENT_OCID eingeben und nach Flotte filtern:
search "COMPARTMENT_OCID" | type='jms.jvm.usage.log' or type='jms.jvm.installation.log' and data.data.fleetId = 'FLEET_OCID' | sort by datetime desc
Verwenden Sie die folgende Abfrage, um von einem Agent mit MANAGEMENT_INSTANCE_OCID zu suchen:
search "COMPARTMENT_OCID" | type='jms.jvm.usage.log' or type='jms.jvm.installation.log' and data.source = 'MANAGEMENT_INSTANCE_OCID' | sort by datetime desc