Stockage et journalisation des données dans les parcs JMS

JMS Fleets utilise une approche systématique pour organiser, stocker et gérer les données afin de garantir un traitement optimal et une analyse étendue. Les données brutes collectées à partir des événements envoyés par le module d'extension JMS à partir de chaque instance gérée sont initialement stockées dans les objets de journal associés du parc auquel l'instance gérée appartient. JMS utilise le service OCI Logging pour classer ces données en deux types principaux : Journaux d'inventaire et Journaux d'opération.
  • Journaux d'inventaire : ces journaux personnalisés stockent l'inventaire d'exécution Java et les informations relatives à l'utilisation signalées par le module d'extension JMS à partir des hôtes. Les journaux d'inventaire sont obligatoires pour que les parcs fonctionnent efficacement.
  • Journaux d'opération : ces journaux personnalisés capturent les opérations effectuées via des parcs JMS. Bien qu'ils soient 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 via 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 en tant que paramètres les OCID du groupe de journaux et des objets à associer au parc. L'objet de journal associé au parc est accessible à l'aide des détails de configuration de journal présents dans l'onglet Propriétés de parc.

Les journaux d'inventaire et d'opération sont organisés sous un groupe de journaux, ce qui facilite les analyses avancées via 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 Connector Hub entre l'objet de journal et un bucket de stockage d'objet.

Remarque

Les journaux d'inventaire et d'exploitation entraînent des coûts de stockage. Pour plus de détails, reportez-vous à l'estimateur de coût 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) appartenant au 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, reportez-vous aux sections 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, à sa réception, l'ID du journal, l'ID de l'agent de gestion et d'autres données. L'agent OMA é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 :
  • jms.jvm.usage.log : données relatives à l'appel JVM trouvées lors du reporting d'utilisation de l'exécution Java.
  • jms.jvm.installation.log : données relatives à la JVM trouvées lors de l'analyse du repérage d'exécution Java.
  • jms.jvm.usage.attach.log : données relatives à l'appel JVM trouvées par l'API d'attachement lors de l'exécution des fonctionnalités avancées
  • jms.javaserver.metadata.log : données d'une analyse de serveur Java.
  • jms.javaserver.libraries.log : analyse des données d'une bibliothèque de serveur Java.
  • jms.java.libraries.log : analyse des données d'une bibliothèque Java.
  • jms.drs.scan.log : données d'une analyse du jeu de règles de déploiement.
  • jms.agent.plugin.start.log : généré à chaque démarrage du module d'extension JMS.
Exemple de charge utile 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 charge utile 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 des opérations

Les journaux d'opérations stockent les événements liés aux opérations effectuées via des parcs JMS. Chaque message est au format JSON. Le message contient le type et les données de l'événement, sa date de réception, l'ID du journal, l'ID de la demande de travail et d'autres données. Si les journaux d'opération sont activés pour un parc, l'agent de gestion écrit dans les objets de journal d'opération associés lors de l'exécution des demandes de travail lancées dans le parc.

Les données du journal des opérations JMS Fleets utilisent le format suivant :
  • type : jms.publiclogs
  • spécversion a la version 1.0
  • le codage est application/json
  • la source est jms
Le type d'événement de charge utile jms.publiclogs affiche les données relatives aux opérations de gestion du cycle de vie. Reportez-vous aux 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"
      }
}

Requêtes de recherche avancée

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

Utilisez la requête 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 la requête suivante pour rechercher des événements à partir du 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 la requête suivante pour rechercher des événements à partir de l'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 la requête suivante pour rechercher les événements associés au parc avec FLEET_OCID dans le compartiment COMPARTMENT_OCID avec l'objet de journal LOG_OBJECT_ID et le groupe de journaux LOG_GROUP_OCID associés :
search "COMPARTMENT_OCID/LOG_GROUP_OCID/LOG_OBJECT_ID" | sort by datetime desc
Remarque

Dans la requête de recherche suivante, vous n'avez pas besoin de filtrer sur le type, car seuls les messages liés aux parcs JMS figurent dans l'élément 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 la requête 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