Mise en correspondance des journaux d' OpenTelemetry s avec les services

Le pipeline de traitement des journaux de l'OTEL ( Instana ) OpenTelemetry prend en charge la corrélation avec les services, qui sont dérivés d'entités d'infrastructure. Pour plus d'informations sur la définition des services, consultez la section Services.

Attribution de noms de service aux journaux

En fonction de la configuration du déploiement d' OpenTelemetry Collector, vous pouvez configurer l'attribut service.name comme suit pour établir une corrélation entre les journaux et les services :

OpenTelemetry Déploiement autonome de Collector

Lorsque vous déployez le collecteur OpenTelemetry en tant qu'exécutable autonome ou en tant que service pour surveiller les journaux système de Linux ou les journaux d'événements de Windows, vous devez attribuer manuellement un nom de service à chaque entrée de journal afin d'établir une corrélation entre les journaux et les services.

Vous pouvez ajouter l'attribut service.name comme indiqué dans l'exemple suivant :

processors:
  transform/enrich_with_service_name:
    error_mode: ignore
    log_statements:
      - context: log
        statements:
          ## Set a "service.name" resource attribute only if the log record is from a specific file.
          ## Example checking the exact file path.
          - set(attributes["service.name"], "My Service 1") where attributes["log.file.path"] == "/path/to/service-1.log"
          ## Example using a regular expression to match a file path.
          - set(attributes["service.name"], "My Service 2") where IsMatch(attributes["log.file.path"], ".*(service-2-dir-name).*")
          ## Example using a custom-defined environment variable with a regex condition on the file path.
          ## Note: This example assumes that the environment variable MY_OTEL_SERVICE_NAME is contains
          ##       the desired service name. You may use any environment variable for this purpose.
          - set(attributes["service.name"], "${env:MY_OTEL_SERVICE_NAME}") where IsMatch(attributes["log.file.path"], ".*(some-otel-service-name).*")
          ## Example using the log path to set the service name dynamically using a named capture group in the regex
          ## to extract the project name as the "service_name" for multiple services with "projects" in their file path.
          - set(attributes["service.name"], ExtractPatterns(attributes["log.file.path"], ".*/projects/(?P<service_name>[^/]+)")["service_name"]) where IsMatch(attributes["log.file.path"], ".*(projects).*")
[...]
service:
  pipelines:
    logs:
      processors:
        # Add other processors here.
        - transform/enrich_with_service_name
        # Always recommended to batch log records.
        - batch

OpenTelemetry Déploiement de collecteurs dans l' Kubernetes

Lorsque vous utilisez le collecteur OpenTelemetry pour surveiller les services d' Kubernetes, vous pouvez ajouter l'attribut service.name à chaque enregistrement de journal à l'aide du k8sattributes processeur afin d'extraire les champs de configuration ou de métadonnées du pod Kubernetes.

Lorsque vous installez le collecteur OpenTelemetry à l'aide du tableau « Helm », vous avez accès au processeur préconfiguré k8sattributes dans le opentelemetry-collector/templates/_config.tpl fichier.

Dans les deux cas, assurez-vous que le service.name champ est inclus dans la k8sattributes configuration du processeur afin d'activer la corrélation des services :

processors:
  k8sattributes:
    extract:
      metadata:
        ## Here add any additional metadata you want to extract from the k8s environment.
        ## For the full list of supported attributes: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/k8sattributesprocessor/README.md
        - "service.name"  ## Allows logs to be correlated to specific services by Instana.
        - "k8s.pod.uid"   ## If container.id is unavailable, logs are correlated to a specific Kubernetes pod.
        - "container.id"  ## If this field is available, logs are correlated to specific containers in a Kubernetes pod.
[...]
service:
  pipelines:
    logs:
      processors:
        # Add other processors here.
        - k8sattributes
        # Always recommended to batch log records.
        - batch

Corrélation des services dans l'interface utilisateur d' Instana

La service.name valeur doit correspondre au nom du service concerné, tel qu'il est défini dans la documentation relative aux services. Lorsqu'il est correctement configuré, le nom du service apparaît sous forme de lien hypertexte vers la page du service correspondant dans l'interface utilisateur d' Instana.

L'exemple suivant montre le nom du service sans corrélation; il s'affiche donc sous forme de texte brut dans l'interface utilisateur d' Instana :

La corrélation des services est désactivée

L'exemple suivant montre le nom du service associé à la page de service correspondante « status-refresh-manager-svc » :

La corrélation des services est activée

Lorsque vous cliquez sur le lien, la page du service s'ouvre :

Page des services

Filtrage et regroupement des journaux dans l'interface utilisateur d' Instana

Vous pouvez utiliser le nom du service pour filtrer et regrouper les journaux dans l'interface utilisateur d' Instana.

L'exemple suivant montre comment filtrer les journaux par nom de service :

Exemple de corrélation de services - filtrage

L'exemple suivant montre comment regrouper les journaux par nom de service :

Exemple de corrélation de services - regroupement