Télécharger les journaux OpenTelemetry

Si vous voulez inclure 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 télécharger.

L'API prend actuellement en charge les journaux OpenTelemetry (OTLP) au format JSON. Par défaut, les journaux OTEL téléchargés à l'aide de cette API dans le format indiqué sont traités à l'aide de la source de journal OpenTelemetry Logs définie par Oracle. Pour plus d'informations sur les journaux OTLP au format JSON, reportez-vous à Exemples.

Conditions préalables

Assurez-vous d'avoir satisfait aux prérequis essentiels suivants avant de télécharger les journaux OTEL :

Rubriques :

Autoriser les utilisateurs à télécharger des journaux OpenTelemetry

Ajoutez l'une des instructions de stratégie IAM suivantes en fonction de vos besoins :

  • L'instruction de stratégie IAM suivante permet de fournir des droits d'accès au groupe d'utilisateurs indiqué pour le téléchargement des journaux OTEL :

    allow group <group_name> to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment <log_group_compartment>
  • L'instruction de stratégie IAM suivante permet de fournir des droits d'accès au niveau de chaque type de ressource loganalytics-log-group pour effectuer le téléchargement :

    allow group <group_name> to use loganalytics-log-group in compartment <log_group_compartment>
  • L'instruction de stratégie IAM suivante permet de fournir des droits d'accès au niveau des ressources agrégées Oracle Log Analytics pour effectuer le téléchargement :

    allow group <group_name> to use loganalytics-resources-family in tenancy/compartment

Dans toutes les instructions de stratégie ci-dessus, group_name fait référence au groupe d'utilisateurs auquel les droits d'accès requis doivent être accordés.

API de téléchargement des journaux OpenTelemetry

Pour plus d'informations sur l'utilisation de l'API REST et la signature des demandes, reportez-vous à API REST et à Informations d'identification de sécurité.

Pour obtenir de la documentation sur l'API, reportez-vous à API Log Analytics - UploadOtlpLogs.

Voici un exemple de commande CLI permettant de télé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 vers laquelle les journaux doivent être téléchargés. Pour connaître les étapes permettant d'obtenir la valeur, reportez-vous à Affichage des détails du service Log Analytics.
  • Log_Group_OCID : OCID du groupe de journaux qui fournit le contrôle d'accès aux journaux.

Gérer les attributs OTEL dans Log Analytics

Les attributs peuvent être définis à trois niveaux : ressource, portée, 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 extraction associée

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 : Mise en correspondance personnalisée d'attributs à l'aide de l'attribut spécial oci_la_attribute_mapping

Par exemple, pour mettre en correspondance les attributs suivants avec les champs Oracle Log Analytics :

  • service.name dans le champ Application
  • deployment.environment dans le champ Environnement
  • event_type dans 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 de mappage personnalisé ci-dessus incorporé dans le 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 : Gérer le mappage des attributs complexes

Attributs de tableau (plusieurs valeurs) :

Pour un attribut avec une valeur de tableau (liste), assurez-vous que le champ Oracle Log Analytics mis en correspondance prend en charge les types de données à valeurs multiples, par exemple :

{"key": "teams", "value": {"arrayValue": {"values": [{"stringValue": "Alpha"}, {"stringValue": "Beta"}]}}}

Attributs de correspondance (clé-valeur imbriquée) :

Pour un attribut de mapping (objet), indiquez la clé enfant à mettre en correspondance avec le 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 mapping dans oci_la_attribute_mapping pour l'attribut de liste ci-dessus :

[{"attributeName":"system","childAttributeName":"env","laFieldName":"Environment"}]