Stockage de données et journalisation dans les parcs JMS

JMS Fleets utilise une approche systématique pour organiser, stocker et gérer les données afin d'assurer un traitement optimal et une analyse étendue. Les données brutes collectées à partir des événements envoyés par le plugiciel JMS à partir de chaque instance gérée sont initialement stockées dans les objets de journal associés du parc auquel appartient l'instance gérée. JMS utilise le service de journalisation OCI pour catégoriser ces données en deux types principaux : Journaux des stocks et Journaux des opérations.
  • Journaux d'inventaire : Ces journaux personnalisés stockent l'inventaire Java Runtime et les informations relatives à l'utilisation signalées à partir des hôtes par le plugiciel JMS. Les journaux d'inventaire sont obligatoires pour que les parcs fonctionnent efficacement.
  • Journaux d'opérations : Ces journaux personnalisés capturent des opérations effectuées au moyen de parcs JMS. Bien que facultatifs, les journaux d'opérations complètent les journaux d'inventaire en fournissant des informations opérationnelles supplémentaires.

Si des parcs sont créés au moyen de la console OCI, les objets de journal sont créés par les parcs JMS dans le même compartiment que le parc. Si vous créez des parcs à l'aide de l'API createFleet, vous devez fournir comme paramètres les OCID du groupe de journaux et les objets à associer au parc. L'objet de journal associé au parc est accessible à l'aide des détails de configuration des journaux présents dans l'onglet Propriétés du parc.

Les journaux d'inventaire et d'opération sont organisés sous un groupe de journaux, ce qui facilite les analyses avancées au moyen de Logging Analytics. Par défaut, ces objets de journal ont une période de conservation d'un mois. Pour conserver les données indéfiniment, vous pouvez établir une connexion au centre de connecteurs entre l'objet de journal et un seau de stockage d'objets.

Note

Les journaux d'inventaire et d'opérations entraîneront des coûts de stockage. Pour plus de détails, consultez l'évaluateur de coût des produits Oracle Cloud.

Les données brutes stockées dans les journaux sont traitées et les données agrégées sont transférées vers la base de données Autonomous Transaction Processing (ATP) détenue par le service JMS. JMS conserve ces données agrégées jusqu'à un an, ce qui permet aux utilisateurs d'analyser les tendances historiques et d'obtenir des informations exploitables sur leurs charges de travail Java.

Pour plus d'informations sur la journalisation, consultez les informations suivantes :

Journaux des stocks

Les journaux d'inventaire contiennent des informations sur les différents types d'événement capturés par les parcs JMS. Chaque message est au format JSON. Le message contient le type et les données de l'événement, la date de réception, l'ID du journal, l'ID agent de gestion et d'autres données. L'agent de gestion écrit directement dans les objets de journal d'inventaire associés à son parc JMS dans un intervalle que vous configurez dans les paramètres de l'agent.

Le type peut être l'un des suivants :
  • jms.jvm.usage.log : Données sur l'appel de la JVM détectées lors de la production de rapports d'utilisation de l'exécution Java.
  • jms.jvm.installation.log : Données sur la JVM détectées lors du balayage de détection d'exécution Java.
  • jms.jvm.usage.attach.log : Données sur l'appel de JVM détectées par l'API Attacher lors de l'exécution de fonctions avancées
  • jms.javaserver.metadata.log : Données d'un balayage de serveur Java.
  • jms.javaserver.libraries.log : Données d'un balayage de bibliothèques de serveurs Java.
  • jms.java.libraries.log : Données d'un balayage de bibliothèques Java.
  • jms.drs.scan.log : Données d'un balayage DRS.
  • jms.agent.plugin.start.log : Généré à chaque démarrage du plugiciel JMS.
Exemple de données utiles pour le type d'événement 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"
  }
}
Exemple de données utiles pour le type d'événement 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"
  }
}

Journaux d'opérations

Les journaux des opérations stockent les événements liés aux opérations effectuées au moyen des parcs JMS. Chaque message est au format JSON. Le message contient le type et les données de l'événement, le moment où il a été reçu, l'ID du journal, l'ID demande de travail et d'autres données. Si les journaux d'opérations sont activés pour un parc, l'agent de gestion écrira aux objets de journal d'opérations associés lors de l'exécution des demandes de travail lancées dans le parc.

Les données du journal des opérations du parc JMS utilisent le format suivant :
  • est de type jms.publiclogs
  • La version de spécification contient la version 1.0
  • l'encodage est application/json
  • la source est jms
Le type d'événement de données utiles jms.publiclogs affiche les données sur les opérations de gestion du cycle de vie. Voir les attributs logContent.data.data suivants :
{
      "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"
      }
}

Interrogations de recherche avancée

Dans l'option Explorer avec la recherche dans les journaux, sélectionnez le mode Passer à Avancé. Vous pouvez rechercher des événements spécifiques dans les journaux à l'aide d'interrogations avancées. Voici des suggestions d'interrogations de recherche.

Utilisez l'interrogation suivante pour rechercher un compartiment entier :
search "COMPARTMENT_OCID" | type='jms.jvm.usage.log' or type='jms.jvm.installation.log' | sort by datetime desc
Utilisez l'interrogation suivante pour rechercher des événements à partir d'un groupe de journaux :
search "COMPARTMENT_OCID/LOG_GROUP_OCID" | type='jms.jvm.usage.log' or type='jms.jvm.installation.log' | sort by datetime desc
Utilisez l'interrogation suivante pour rechercher des événements à partir d'un objet de journal :
search "COMPARTMENT_OCID/LOG_GROUP_OCID/LOG_OBJECT_ID" | type='jms.jvm.usage.log' or type='jms.jvm.installation.log' | sort by datetime desc
Utilisez l'interrogation suivante pour rechercher les événements associés au parc avec FLEET_OCID dans le compartiment COMPARTMENT_OCID avec l'objet de journal associé LOG_OBJECT_ID et le groupe de journaux LOG_GROUP_OCID :
search "COMPARTMENT_OCID/LOG_GROUP_OCID/LOG_OBJECT_ID" | sort by datetime desc
Note

Dans l'interrogation de recherche suivante, vous n'avez pas besoin de filtrer par type, car seuls les messages liés au parc JMS se trouvent dans logObject associé au parc.
Vous pouvez également entrer COMPARTMENT_OCID et filtrer sur le parc :
search "COMPARTMENT_OCID" | type='jms.jvm.usage.log' or type='jms.jvm.installation.log' and data.data.fleetId = 'FLEET_OCID' | sort by datetime desc
Utilisez l'interrogation suivante pour effectuer une recherche à partir d'un agent avec MANAGEMENT_INSTANCE_OCID :
search "COMPARTMENT_OCID" | type='jms.jvm.usage.log' or type='jms.jvm.installation.log' and data.source = 'MANAGEMENT_INSTANCE_OCID' | sort by datetime desc