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 :

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

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"}]