Archives de Logs

Archives de Logs

Présentation

Configurez votre compte Datadog de manière à transférer tous les logs ingérés, qu’ils soient indexés ou non, vers votre système de stockage dans le cloud. Conservez vos logs dans une solution d’archivage à long terme afin d’assurer leur conformité et leur auditabilité en cas d’incident grâce à la fonction Rehydration.

Ce guide décrit la marche à suivre pour configurer une archive afin de transférer les logs ingérés vers un compartiment de votre solution de stockage dans le cloud :

  1. Configurer une intégration Datadog pour votre fournisseur de services cloud (si vous ne l’avez pas déjà fait)
  2. Créer un compartiment de stockage
  3. Définir les autorisations de lecture et/ou d’écriture sur cette archive
  4. Transmettre vos logs vers et depuis cette archive
  5. Configurer les paramètres avancés comme le chiffrement, la classe de stockage et les tags
  6. Valider votre configuration en recherchant d’éventuels problèmes de configuration que Datadog peut détecter pour vous

Remarque : seuls les utilisateurs de Datadog bénéficiant de l'autorisation Logs Write Archive peuvent créer, modifier ou supprimer des configurations d’archivage de logs.

Configurer une archive

Configurer une intégration

Si ce n’est pas déjà fait, configurez l'intégration AWS pour le compte AWS associé à votre compartiment S3.

  • En général, il est nécessaire de créer un rôle pouvant être utilisé par Datadog pour l’intégration à AWS S3.
  • Pour les comptes AWS GovCloud ou China uniquement, utilisez les clés d’accès comme alternative à la délégation de rôles.

Si vous ne l’avez pas encore fait, configurez l'intégration Azure pour l’abonnement associé à votre compte de stockage. Vous devrez créer une inscription d’application utilisable par Datadog afin de procéder à l’intégration.

Si vous ne l’avez pas encore fait, configurez l'intégration GCP pour le projet qui comporte votre compartiment de stockage GCS. Vous devrez créer un compte de service GCS utilisable par Datadog afin de procéder à l’intégration.

Créer un compartiment de stockage

Accédez à votre console AWS et créez un compartiment S3 vers lequel vos archives seront envoyées. Assurez-vous que votre compartiment n’est pas accessible au public.

Accédez à votre portail Azure et créez un compte de stockage vers lequel vous souhaitez envoyer vos archives. Attribuez un nom à votre compte, choisissez n’importe quel type de compte, puis sélectionnez le niveau d’accès hot.

Accédez à votre compte GCP et créez un compartiment GCS vers lequel vos archives seront envoyées. Sous « Choose how to control access to objects », sélectionnez « Set object-level and bucket-level permissions ».

Définir les autorisations

Ajoutez les deux instructions d’autorisation suivantes aux stratégies IAM. Modifiez les noms de compartiment et, si vous le souhaitez, indiquez les chemins vers vos archives de logs.

Remarques :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DatadogUploadAndRehydrateLogArchives",
      "Effect": "Allow",
      "Action": ["s3:PutObject", "s3:GetObject"],
      "Resource": [
        "arn:aws:s3:::<NOM_DU_BUCKET_1_/_CHEMIN_FACULTATIF_DU_BUCKET_1>/*",
        "arn:aws:s3:::<NOM_DU_BUCKET_2_/_CHEMIN_FACULTATIF_DU_BUCKET_2>/*"
      ]
    },
    {
      "Sid": "DatadogRehydrateLogArchivesListBucket",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": [
        "arn:aws:s3:::<NOM_DU_BUCKET_1>",
        "arn:aws:s3:::<NOM_DU_BUCKET_2>"
      ]
    }
  ]
}
  • Accordez à votre application Datadog les autorisations nécessaires pour écrire dans votre compte de stockage et effectuer une réintégration à partir de celui-ci.
  • Sélectionnez votre compte de stockage depuis la page Storage Accounts, accédez à Access Control (IAM) et sélectionnez Add -> Add Role Assignment.
  • Ajoutez le rôle Storage Blob Data Contributor, sélectionnez l’application Datadog que vous avez créée pour l’intégration Azure, puis enregistrez.

Accordez à votre compte de service GCP Datadog les autorisations nécessaires pour écrire vos archives dans votre compartiment.

Ajoutez les rôles Storage Object Creator (pour la création d’archives) et Storage Object Viewer (pour la réintégration depuis des archives) sous Storage.

Transmettre vos logs vers un compartiment

Accédez à la page Archives dans Datadog et sélectionnez l’option Add a new archive en bas de la page.

Seuls les utilisateurs de Datadog bénéficiant de l'autorisation Logs Write Archive peuvent effectuer cette étape ainsi que la suivante.

Sélectionnez le compte AWS et le rôle appropriés pour votre compartiment S3.

Indiquez le nom de votre compartiment. Facultatif : ajoutez un répertoire comme préfixe vers lequel l’ensemble de vos archives de logs sera envoyé.

Sélectionnez le type d’archive Azure Storage, ainsi que le locataire et le client Azure pour l’application Datadog disposant du rôle Storage Blob Data Contributor sur votre compte de stockage.

Indiquez le nom de votre compte de stockage et un nom de conteneur pour votre archive. Facultatif : ajoutez un répertoire comme préfixe vers lequel l’ensemble de vos archives de logs sera envoyé.

Sélectionnez le type d’archive GCS, puis le compte de service GCS doté des autorisations d’écriture dans votre compte de stockage.

Indiquez le nom de votre compartiment. Facultatif : ajoutez un répertoire comme préfixe vers lequel l’ensemble de vos archives de logs sera envoyé.

Paramètres avancés

Autorisations Datadog

Par défaut :

  • Tous les utilisateurs admin Datadog peuvent créer, modifier et réorganiser des archives (voir la section Configurer plusieurs archives
  • Tous les utilisateurs admin et standard Datadog peuvent réintégrer des logs à partir des archives
  • Tous les utilisateurs, y compris les utilisateurs read-only Datadog, peuvent accéder aux logs réintégrés

Appliquez cette étape de configuration facultative pour attribuer des rôles sur cette archive et restreindre les utilisateurs qui peuvent effectuer les opérations suivantes :

Tags Datadog

Utilisez cette étape de configuration facultative pour :

  • Inclure tous les tags de log dans vos archives (activé par défaut sur toutes les nouvelles archives). Remarque : ce paramètre augmente la taille des archives générées.
  • Ajouter des tags à vos logs réintégrés, conformément à vos requêtes de restriction. Voir l’autorisation logs_read_data.

Classe de stockage

Vous pouvez définir une configuration de cycle de vie sur votre compartiment S3 pour transférer automatiquement vos archives de logs vers les classes de stockage optimales.

La fonction Rehydration prend en charge toutes les classes de stockage à l’exception de Glacier et de Glacier Deep Archive. Si vous souhaitez réintégrer des logs depuis des archives stockées dans les classes de stockage Glacier ou Glacier Deep Archive, vous devez d’abord le transférer vers une autre classe de stockage.

Chiffrement côté serveur (SSE)

SSE-S3

La méthode la plus simple pour ajouter le chiffrement côté serveur à vos archives de logs S3 consiste à utiliser le chiffrement natif côté serveur d’Amazon S3, SSE-S3.

Pour l’activer, accédez à l’onglet Properties dans votre compartiment S3 et sélectionnez Default Encryption. Sélectionnez l’option AES-256, puis cliquez sur Save.

SSE-KMS

Datadog prend également en charge le chiffrement côté serveur à l’aide d’un CMK d'AWS KMS. Pour l’activer, suivez les étapes ci-dessous :

  1. Créez votre CMK.
  2. Associez une stratégie CMK à votre CMK avec le contenu suivant, en remplaçant le numéro de compte AWS et le nom de rôle IAM Datadog de façon appropriée :
{
    "Id": "key-consolepolicy-3",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<NUMÉRO_COMPTE_AWS>:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<NUMÉRO_COMPTE_AWS>:role/<NOM_RÔLE_IAM_DATADOG>"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow attachment of persistent resources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<NUMÉRO_COMPTE_AWS>:role/<NOM_RÔLE_IAM_DATADOG>"
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
    ]
}
  1. Accédez à l’onglet Properties dans votre compartiment S3 et sélectionnez Default Encryption. Choisissez l’option “AWS-KMS”, sélectionnez l’ARN de votre CMK et cliquez sur Save.

Validation

Dès que vos paramètres d’archivage ont été correctement configurés sur votre compte Datadog, vos pipelines de traitement commencent à enrichir tous les logs ingérés par Datadog. Ceux-ci sont ensuite transmis à votre archive.

Une fois vos paramètres d’archivage créés ou modifiés, il est parfois nécessaire d’attendre quelques minutes avant la prochaine tentative d’importation des archives. Les logs sont importés vers les archives toutes les 15 minutes. Par conséquent attendez au moins 15 minutes avant de vérifier que les archives sont bien importées vers votre compartiment de stockage depuis votre compte Datadog. Si l’archive est toujours en attente passé ce délai, nous vous conseillons de vérifier vos filtres d’inclusion pour vous assurer que la requête est valide et renvoie les événements de logs dans Live Tail.

Si Datadog détecte un problème de configuration, l’archive correspondante est mise en évidence dans la page de configuration. Cliquez sur l’icône d’erreur pour voir les mesures que vous devez prendre pour corriger ce problème.

Configurer plusieurs archives

Si plusieurs archives sont définies, les logs sont envoyés dans la première archive filtrée à laquelle ils correspondent. Il est donc important d’organiser minutieusement vos archives.

Par exemple, si vous créez une première archive filtrée sur le tag env:prod et une deuxième archive sans filtre (l’équivalent de *), tous vos logs de production seront envoyés dans le premier chemin/compartiment de stockage et tout le reste ira dans l’autre.

Format des archives

Les archives de logs que Datadog transmet à votre compartiment de stockage sont au format JSON compressé (.json.gz). Les archives sont stockées sous le préfixe que vous avez indiqué (ou dans / si aucun préfixe n’a été défini) selon une structure de répertoire qui indique à quelle date et à quelle heure les fichiers d’archives ont été générés. La structure est la suivante :

/mon/compartiment/préfixe/dt=20180515/hour=14/archive_143201.1234.7dq1a9mnSya3bFotoErfxl.json.gz
/mon/compartiment/préfixe/dt=<AAAAMMJJ>/hour=<HH>/archive_<HHmmss.SSSS>.<ID_DATADOG>.json.gz

Cette structure de répertoire vous permet d’interroger plus facilement vos archives de logs en fonction de leur date.

À l’intérieur du fichier JSON compressé, le contenu de chaque événement est formaté comme suit :

{
    "_id": "123456789abcdefg",
    "date": "2018-05-15T14:31:16.003Z",
    "host": "i-12345abced6789efg",
    "source": "source_name",
    "service": "service_name",
    "status": "status_level",
    "message": "2018-05-15T14:31:16.003Z INFO rid='acb-123' status=403 method=PUT",
    "attributes": { "rid": "abc-123", "http": { "status_code": 403, "method": "PUT" } },
    "tags": [ "env:prod", "team:acme" ]
}

Remarque : l’ajout de tags dans les archives est une fonctionnalité que vous devez activer. Pour l’activer pour une archive, consultez la section Tags Datadog.

Pour aller plus loin


Documentation, liens et articles supplémentaires utiles:


*Logging without Limits est une marque déposée de Datadog, Inc.