Charger les journaux OpenTelemetry
Si vous voulez ingérer les journaux de vos applications ou de votre infrastructure instrumentés à l'aide de OpenTelemetry dans Oracle Log Analytics, utilisez l'API UploadOtlpLogs
pour les charger.
L'API prend actuellement en charge les journaux OpenTelemetry (OTLP) au format JSON. Les journaux OTEL chargés à l'aide de cette API dans le format spécifié sont traités à l'aide de la source de journaux OpenTelemetry Logs définie par Oracle, par défaut. Pour plus d'informations sur les journaux OTLP au format JSON, voir Exemples.
Conditions requises
Assurez-vous d'avoir terminé les préalables essentiels suivants avant de charger les journaux OTEL :
- Identifiez ou créez un groupe d'utilisateurs dans lequel vous pouvez fournir les autorisations requises pour effectuer le chargement. Voir Créer des groupes d'utilisateurs pour mettre en oeuvre le contrôle d'accès.
- Collectez l'OCID du groupe de journaux qui fournit le contrôle d'accès pour les journaux. Voir Créer des groupes de journaux pour stocker vos journaux.
- Collectez l'espace de noms de la location pour laquelle les journaux doivent être chargés. Vous pouvez noter la valeur de l'espace de noms dans la page Détails du service de Log Analytics. Voir Voir les détails du service Log Analytics.
Rubriques :
Autoriser les utilisateurs à charger les journaux OpenTelemetry
Ajoutez l'un des énoncés de politique IAM suivants selon vos besoins :
-
L'énoncé de politique IAM suivant permet d'autoriser le groupe d'utilisateurs spécifié à charger les journaux OTEL :
allow group <group_name> to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment <log_group_compartment>
-
L'énoncé de politique IAM suivant permet de fournir une autorisation au niveau du type de ressource individuel
loganalytics-log-group
pour effectuer le chargement :allow group <group_name> to use loganalytics-log-group in compartment <log_group_compartment>
-
L'énoncé de politique IAM suivant permet de fournir une autorisation au niveau des ressources agrégées Oracle Log Analytics pour effectuer le chargement :
allow group <group_name> to use loganalytics-resources-family in tenancy/compartment
group_name
dans tous les énoncés de politique ci-dessus fait référence au groupe d'utilisateurs auquel les autorisations requises doivent être accordées.
API de chargement des journaux OpenTelemetry
Pour plus d'informations sur l'utilisation de l'API REST et sur les demandes de signature, voir API REST et Données d'identification de sécurité.
Pour la documentation sur les API, voir API Log Analytics - UploadOtlpLogs.
Voici un exemple de commande d'interface de ligne de commande pour charger les journaux OTEL :
oci log-analytics upload upload-otlp-logs --file <Log_File_Path> --opc-meta-loggrpid <Log_Group_OCID> --namespace-name <Service_Namespace>
Dans la commande ci-dessus :
Log_File_Path
: Chemin du fichier journal.Service_Namespace
: Espace de noms de la location pour laquelle les journaux doivent être chargés. Pour les étapes d'obtention de la valeur, voir Voir les détails du service Log Analytics.Log_Group_OCID
: OCID du groupe de journaux qui fournit le contrôle d'accès pour les journaux.
Traitement des attributs OTEL dans Log Analytics
Les attributs peuvent être définis à trois niveaux : ressource, portée et enregistrement de journal individuel. Les attributs définis sont stockés pour chaque enregistrement de journal par rapport au champ Attributs de Log Analytics. Chaque attribut peut également être extrait dans un champ Log Analytics différent à l'aide de l'attribut personnalisé oci_la_attribute_mapping
.
Rubriques :
- Scénario 1 : Format de journal OTLP par défaut et son extraction
- Scénario 2 : Mappage personnalisé d'attributs à l'aide de l'attribut spécial oci_la_attribute_mapping
- Scénario 3 : Traitement du mappage d'attributs complexes
Scénario 1 : Format de journal OTLP par défaut et son extraction
Prenons l'exemple de journal suivant au format OTLP :
{
"resourceLogs": [
{
"resource": {
"attributes": [
{
"key": "deployment.environment",
"value": {
"stringValue": "development"
}
},
{
"key": "service.name",
"value": {
"stringValue": "SampleLogApp"
}
},
{
"key": "service.version",
"value": {
"stringValue": "0.0.2"
}
}
]
},
"scopeLogs": [
{
"scope": {
"name": "sample-scope-info",
"version": "1.0.0"
},
"logRecords": [
{
"timeUnixNano": "1758112881118549000",
"severityNumber": 10,
"severityText": "INFO",
"body": {
"stringValue": "Processed request successfully"
},
"attributes": [
{
"key": "event_type",
"value": {
"stringValue": "event-info"
}
},
{
"key": "os",
"value": {
"stringValue": "linux"
}
},
{
"key": "custom_attribute",
"value": {
"stringValue": "some_value"
}
},
{
"key": "dropped",
"value": {
"stringValue": "value"
}
},
{
"key": "otel.dropped_attributes_count",
"value": {
"intValue": "5"
}
},
{
"key": "id",
"value": {
"stringValue": "123"
}
}
],
"traceId": "0102030405060708090a0b0c0d0e0f10",
"spanId": "0102030405060708"
}
]
}
]
}
]
}
Les attributs de l'exemple ci-dessus sont extraits dans le champ Attributs d'Oracle Log Analytics comme suit :
{
"service.version":"0.0.2",
"os":"linux",
"dropped":"value",
"id":"123",
"custom_attribute":"some_value",
"otel.dropped_attributes_count":"5"
}
Scénario 2 : Mappage personnalisé d'attributs à l'aide de l'attribut spécial oci_la_attribute_mapping
Par exemple, pour mapper les attributs suivants aux champs Oracle Log Analytics :
- service.name dans le champ Application
- deployment.environment dans le champ Environnement
- event_type pour le champ Type d'événement.
oci_la_attribute_mapping
doit être défini comme suit :
[{"attributeName":"service.name","laFieldName":"Application"},{"attributeName":"deployment.environment","laFieldName":"Environment"},{"attributeName":"event_type","laFieldName":"Event Type"}]
Voici un exemple du mappage personnalisé ci-dessus intégré au journal OTEL :
{
"resourceLogs": [
{
"resource": {
"attributes": [
{
"key": "deployment.environment",
"value": {
"stringValue": "development"
}
},
{
"key": "service.name",
"value": {
"stringValue": "SampleLogApp"
}
},
{
"key": "service.version",
"value": {
"stringValue": "0.0.2"
}
},
{
"key": "oci_la_attribute_mapping",
"value": {
"stringValue": "[{\"attributeName\":\"service.name\",\"laFieldName\":\"Application\"},{\"attributeName\":\"deployment.environment\",\"laFieldName\":\"Environment\"},{\"attributeName\":\"event_type\",\"laFieldName\":\"Event Type\"}]"
}
}
]
},
"scopeLogs": [
{
"scope": {
"name": "sample-scope-info",
"version": "1.0.0"
},
"logRecords": [
{
"timeUnixNano": "1758112881118549000",
"severityNumber": 10,
"severityText": "INFO",
"body": {
"stringValue": "Processed request successfully"
},
"attributes": [
{
"key": "event_type",
"value": {
"stringValue": "event-info"
}
},
{
"key": "os",
"value": {
"stringValue": "linux"
}
},
{
"key": "custom_attribute",
"value": {
"stringValue": "value"
}
},
{
"key": "dropped",
"value": {
"stringValue": "value"
}
},
{
"key": "otel.dropped_attributes_count",
"value": {
"intValue": "5"
}
},
{
"key": "id",
"value": {
"stringValue": "123"
}
}
],
"traceId": "0102030405060708090a0b0c0d0e0f10",
"spanId": "0102030405060708"
}
]
}
]
}
]
}
Scénario 3 : Traitement du mappage d'attributs complexes
Attributs de tableau (valeurs multiples) :
Pour un attribut avec une valeur de tableau (liste), assurez-vous que le champ Oracle Log Analytics mappé prend en charge les types de données multivaleurs, par exemple :
{"key": "teams", "value": {"arrayValue": {"values": [{"stringValue": "Alpha"}, {"stringValue": "Beta"}]}}}
Attributs de carte (valeur de clé imbriquée) :
Pour un attribut de mappage (objet), spécifiez la clé enfant à mapper au champ Oracle Log Analytics.
Exemple d'attribut de liste :
{
"key": "system",
"value": {
"kvlistValue": {
"values": [
{
"key": "version",
"value": {
"stringValue": "1.0"
}
},
{
"key": "build",
"value": {
"stringValue": "2.0"
}
},
{
"key": "env",
"value": {
"stringValue": "test"
}
}
]
}
}
}
Exemple de mappage dans oci_la_attribute_mapping
pour l'attribut de liste ci-dessus :
[{"attributeName":"system","childAttributeName":"env","laFieldName":"Environment"}]