Collecte de logs Amazon ECS
La gestion des incidents est désormais disponible pour tous ! La gestion des incidents est désormais disponible pour tous !

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

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.

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