Collecte de logs Amazon ECS

Collecte de logs Amazon ECS

Présentation

L’Agent Datadog 6 et ultérieur recueille des logs à partir des conteneurs. Pour recueillir des logs à partir des conteneurs ECS, il est recommandé d’activer la journalisation conteneurisée dans le fichier datadog-agent-ecs.json ou datadog-agent-ecs1.json. Cependant, si votre application génère des logs dans des fichiers de n’importe quelle capacité (logs qui ne sont pas écrits dans stdout ou stderr), il vous faudra déployer l’Agent Datadog sur votre host et utiliser la collecte de logs personnalisée pour suivre les fichiers.

Installation

Fichier ECS

Pour recueillir tous les logs écrits par des applications s’exécutant dans vos conteneurs ECS et les envoyer à votre application Datadog :

  1. Suivez les instructions de configuration pour Amazon ECS.

  2. Modifiez votre fichier datadog-agent-ecs.json (datadog-agent-ecs1.json si vous utilisez une AMI Amazon Linux d’origine) avec la configuration suivante :

    {
        "containerDefinitions": [
        (...)
          "mountPoints": [
            (...)
            {
              "containerPath": "/opt/datadog-agent/run",
              "sourceVolume": "pointdir",
              "readOnly": false
            },
            (...)
          ],
          "environment": [
            (...)
            {
              "name": "DD_LOGS_ENABLED",
              "value": "true"
            },
            {
              "name": "DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL",
              "value": "true"
            },
            (...)
          ]
        }
      ],
      "volumes": [
        (...)
        {
          "host": {
            "sourcePath": "/opt/datadog-agent/run"
          },
          "name": "pointdir"
        },
        (...)
      ],
      "family": "datadog-agent-task"
    }
    
  3. Assurez-vous que votre définition de conteneur ne contient pas de paramètre logConfiguration.logDriver de façon à ce que les logs soient écrits dans stdout/stderr et recueillis par l’Agent. Si ce paramètre est défini sur awslogs, recueillez vos logs Amazon ECS sans l’Agent, en utilisant AWS Lambda pour effectuer la collecte à partir de CloudWatch.

  1. Suivez les instructions de configuration pour Amazon ECS.

  2. Modifiez votre fichier datadog-agent-ecs-win.json avec la configuration suivante :

    {
      "containerDefinitions": [
        (...)
          "environment": [
            (...)
            {
              "name": "DD_LOGS_ENABLED",
              "value": "true"
            },
            {
              "name": "DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL",
              "value": "true"
            },
            (...)
          ]
        }
      ],
      "family": "datadog-agent-task"
    }
    
  3. Assurez-vous que votre définition de conteneur ne contient pas de paramètre logConfiguration.logDriver de façon à ce que les logs soient écrits dans stdout/stderr et recueillis par l’Agent. Si ce paramètre est défini sur awslogs, recueillez vos logs Amazon ECS sans l’Agent, en utilisant AWS Lambda pour effectuer la collecte à partir de CloudWatch.

Collecte de logs personnalisée

Fichier de configuration

Si votre conteneur écrit des logs dans des fichiers, consultez la section Collecte de logs personnalisée pour suivre les fichiers de logs.

Pour rassembler les logs de votre application <NOM_APP> stockés dans <CHEMIN_FICHIER_LOG>/<NOM_FICHIER_LOG>.log, créez un fichier <NOM_APP>.d/conf.yaml à la racine du répertoire de configuration de votre Agent avec le contenu suivant :

logs:
  - type: file
    path: "<CHEMIN_FICHIER_LOG>/<NOM_FICHIER_LOG>.log"
    service: "<NOM_APP>"
    source: "<SOURCE>"

Remarque : les métadonnées du conteneur ne sont pas récupérées via la collecte de logs personnalisée. Par conséquent, l’Agent n’attribue pas automatiquement de tag aux logs. Utilisez des tags personnalisés pour créer des tags de conteneur.

Étiquette de conteneur

Avec l’Agent v7.25.0+/6.25.0+, il est possible d’activer le suivi des fichiers à l’aide d’une étiquette de conteneur. Les logs recueillis reçoivent alors les tags du conteneur pour lequel l’étiquette a été définie. Cet exemple explique en détail quelle étiquette utiliser.

Remarque : les chemins de fichier sont toujours relatifs à l’Agent. Les tâches ECS concernées nécessitent donc une configuration supplémentaire afin de partager un répertoire entre le conteneur écrivant le fichier et le conteneur de l’Agent. Consultez la documentation AWS pour en savoir plus sur la gestion de volumes avec ECS.

Activer la collecte de logs pour une intégration

L’attribut source est utilisé pour identifier l’intégration à utiliser pour chaque conteneur. Contournez-le directement dans vos étiquettes de conteneurs pour commencer à recueillir les logs d’une intégration. Lisez notre guide sur l’utilisation d’Autodiscovery pour les logs pour en savoir plus sur ce processus.

Pour aller plus loin