Nouvelles annonces sur les technologies sans serveur et réseau ainsi que sur le RUM (Real-User Monitoring) dévoilées à la conférence Dash ! Nouvelles annonces dévoilées à la conférence Dash !

Archives sur AWS S3

Présentation

Le stockage de vos logs dans une solution d’archivage à long terme constitue le moyen idéal d’assurer leur auditabilité de façon conforme et économique en cas d’incident. Une fois vos logs archivés pour le long terme, vous pouvez toujours y accéder si vous devez enquêter une situation inattendue ou ayant pu se produire dans un passé lointain.

Ce guide décrit la marche à suivre pour archiver les logs que vous avez recueillis vers votre compartiment Amazon S3 personnel.

Créer et configurer un compartiment S3

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.

Ensuite, autorisez Datadog à écrire des archives de logs dans votre compartiment S3. Si vous utilisez le site américain, faites appel à la délégation de rôles ; si vous utilisez le site européen, configurez une stratégie de compartiment.

  1. Configurez l’intégration AWS pour le compte AWS qui comporte votre compartiment S3. Vous devrez créer un rôle pouvant être utilisé par Datadog pour l’intégration à AWS Cloudwatch.

  2. Ajoutez les deux instructions d’autorisation suivantes aux stratégies IAM de votre rôle Datadog (assurez-vous de modifier les noms de compartiment et, si vous le souhaitez, d’indiquer les chemins vers vos archives de logs). Les autorisations GetObject et ListBucket permettent la réintégration des logs à partir des archives. L’autorisation PutObject est suffisante pour l’importation d’archives.

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "DatadogUploadAndRehydrateLogArchives",
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject",
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::<MY_BUCKET_NAME_1_/_MY_OPTIONAL_BUCKET_PATH_1>/*",
                    "arn:aws:s3:::<MY_BUCKET_NAME_2_/_MY_OPTIONAL_BUCKET_PATH_2>/*"
                ]
            },
            {
                "Sid": "DatadogRehydrateLogArchivesListBucket",
                "Effect": "Allow",
                "Action": "s3:ListBucket",
                "Resource": [
                    "arn:aws:s3:::<MY_BUCKET_NAME_1>",
                    "arn:aws:s3:::<MY_BUCKET_NAME_2>"
                ]
            }
        ]
    }
    
  3. Accédez à la page Archives dans Datadog, puis sélectionnez l’option Add a new archive en bas de la page. Seuls les utilisateurs de Datadog bénéficiant des droits administrateur peuvent effectuer cette étape ainsi que la suivante.

  4. Sélectionnez le compte AWS et le rôle appropriés pour votre compartiment S3, puis saisissez le nom de votre compartiment. Vous avez la possibilité d’ajouter un répertoire comme préfixe vers lequel l’ensemble de vos archives de logs seront envoyées. Il ne vous reste ensuite plus qu’à enregistrer votre archive.

  1. Configurez l’intégration AWS pour le compte AWS qui comporte votre compartiment S3. Vous devrez créer un rôle pouvant être utilisé par Datadog pour l’intégration à AWS Cloudwatch.

  2. Modifiez votre compartiment pour accorder un accès en écriture seule à l’utilisateur Datadog AWS. Pour ce faire, modifiez les autorisations de votre compartiment et configurez la stratégie de compartiment avec le contenu suivant (modifiez la valeur <MY_BUCKET_NAME>) :

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "AllowDatadogArchivesUploader",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "464622532012"
                },
                "Action": [
                    "s3:PutObject",
                    "s3:PutObjectAcl",
                    "s3:ListMultipartUploadParts",
                    "s3:AbortMultipartUpload"
                ],
                "Resource": "arn:aws:s3:::<MY_BUCKET_NAME>/*"
            }
        ]
    }
    
  3. Accédez à la page Archives dans Datadog, puis sélectionnez l’option Add a new archive en bas de la page. Seuls les utilisateurs de Datadog bénéficiant des droits administrateur peuvent effectuer cette étape ainsi que la suivante.

  4. Saisissez le nom de votre compartiment. Vous avez la possibilité d’ajouter un répertoire comme préfixe vers lequel l’ensemble de vos archives de logs seront envoyées. Enregistrez ensuite votre archive.

Dès que vos paramètres d’archivage ont été correctement configurés sur votre compte Datadog, tous les logs que Datadog ingère sont enrichis par vos pipelines de traitement avant d’être transférés vers votre compartiment S3 pour leur archivage.

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. Par conséquent, attendez 15 minutes avant de vérifier que les archives ont bien été importées vers votre compartiment S3 depuis votre compte Datadog.

Format des archives S3

Les archives de logs que Datadog transmet à votre compartiment S3 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 :

/my/s3/prefix/dt=20180515/hour=14/archive_143201.1234.7dq1a9mnSya3bFotoErfxl.json.gz

Cette structure de répertoire vous permet de retrouver 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": " ... log message content ... ",
    "attributes": { ... log attributes content ... }
}

Remarque : les archives incluent uniquement le contenu des logs, qui comprend le message, les attributs personnalisés et les attributs réservés de vos événements de log. Les tags des logs (métadonnées qui connectent vos données de log aux traces et aux métriques liées) ne sont pas inclus.

Archives S3 multiples

Les administrateurs peuvent transmettre des logs spécifiques vers une archive en ajoutant une requête dans le champ filter de l’archive. 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 S3 et toute le reste ira dans l’autre.

Chiffrement côté serveur (SSE)

Pour ajouter le chiffrement côté serveur (SSE) à vos archives de logs S3, accédez à l’onglet Properties dans votre compartiment S3 et sélectionnez Default Encryption. Sélectionnez l’option AES-256, puis cliquez sur Save.