Comment utiliser un pilote de journal Splunk avec une tâche Amazon ECS sur Fargate ?

Dernière mise à jour : 12/11/2020

Je souhaite utiliser un pilote de journal Splunk avec une tâche Amazon Elastic Container Service (Amazon ECS) sur AWS Fargate.

Brève description

Vous pouvez utiliser le pilote de journal Splunk (également appelé « pilote de journalisation ») de Docker dans Fargate pour envoyer vos journaux de container au collecteur de journaux Splunk Enterprise ou à Splunk Cloud. Pour plus d'informations, consultez Pilote de journalisation Splunk sur le site Web Docker.

Résolution

Configurez votre environnement Splunk Cloud pour recevoir les journaux Fargate

1.    Créez un compte Splunk Cloud à l'aide de l'option Free Splunk. Si vous avez déjà un compte Splunk Cloud, passez à l'étape 2. Pour plus d'informations, consultez Free Splunk sur le site Web de Splunk.

2.    Connectez-vous à votre compte Splunk Cloud.

3.    Dans le volet de navigation, sélectionnez Paramètres.

4.    Dans la section DONNÉES, choisissez Saisie de données.

5.    Dans la section Saisies locales dans la colonne Actions, sélectionnez Ajouter.

Remarque : vous créez un jeton HTTP Event Collector (HEC) afin que vous puissiez envoyer des données et des événements d'application à un déploiement Splunk via des protocoles HTTP et HTTPS (Secure HTTP).

6.    Sous Nom, saisissez un nom pour votre jeton, puis cliquez sur Suivant.

7.    Passez en revue le reste des pages de l'assistant d'installation, puis sélectionnez Soumettre pour créer le jeton HEC.

Remarque : vous pouvez conserver les valeurs par défaut.

8.    Testez le nouveau jeton en utilisant curl ou Docker.

Remarque : par défaut, Splunk écoute sur le port 8088 et accepte les événements sur le chemin /services/collector.

Utilisation de curl :

curl -k  https://prd-p-9l79p.splunkcloud.com:8088/services/collector -H "Authorization: Splunk splunk-token" -d '{"event": "Put this message in Splunk"}'

Remarque : remplacez le jeton splunk-token par le jeton HEC que vous avez créé précédemment. 

Utilisation de Docker :

docker run --publish 80:80 --log-driver=splunk --log-opt splunk-token=splunk token --log-opt splunk-url=https://prd-p-u7z1u.splunkcloud.com:8088 --log-opt splunk-insecureskipverify=true --log-opt splunk-sourcetype=docker-test --log-opt splunk-index=main  nginx

Remarque : remplacez le jeton splunk-token par le jeton HEC que vous avez créé précédemment. 

Configurer AWS Secrets Manager pour utiliser votre jeton HEC

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Pour stocker votre jeton HEC dans AWS Secrets Manager afin que Fargate puisse utiliser votre jeton en toute sécurité, exécutez la commande suivante :

aws secretsmanager create-secret --name splunk-token --secret-string token-value

Remarque : remplacez le jeton splunk-token par votre jeton HEC. Remplacez token-value par votre valeur de jeton.

Configurer un rôle d'exécution de tâche avec l'autorisation d'accéder aux secrets

1.    Ouvrez la console AWS Identity and Access Management (IAM).

2.    Dans le volet de navigation, sélectionnez Rôles.

3.    Dans la liste des rôles, sélectionnez ecsTaskExecutionRole.

4.    Sélectionnez Add inline policy (Ajouter une stratégie en ligne).

5.    Choisissez l'onglet JSON de l'éditeur, puis saisissez la stratégie suivante :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>",
        "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>"
      ]
    }
  ]
}

Remarque : si vous utilisez une clé AWS KMS (AWS Key Management Service) personnalisée pour chiffrer vos secrets, vous devez fournir l'autorisation kms:Decrypt et Amazon Resource Name (ARN) pour votre clé KMS.

6.    Sélectionnez Examiner une stratégie.

7.    Pour Nom, saisissez un nom pour votre stratégie.

8.    Choisissez Créer une stratégie.

Configurez votre définition de tâche pour votre tâche Amazon ECS sur Fargate

1.    Ouvrez la console Amazon ECS.

2.    À partir du volet de navigation, dans la section Amazon ECS choisissez Définitions de tâche.

3.    Choisissez Créer une nouvelle définition de tâche.

4.    Choisissez Fargate, puis sélectionnez Étape suivante.

5.    Dans la section Configurer les définitions de tâche et de container, pour Nom de la définition de tâche, saisissez un nom pour votre définition de tâche.

6.    Sous Rôle de tâche, choisissez le rôle que vous avez configuré précédemment.

7.    Dans la section Taille de la tâche, pour Mémoire des tâches (Go) et CPU de tâche (vCPU), saisissez les valeurs appropriées pour vos tâches.

8.    Dans la section Définitions de container, sélectionnez Ajouter un container.

9.    Choisissez les options appropriées pour vos besoins en container.

10.    Dans la section STOCKAGE ET JOURNALISATION, décochez la case Configuration du journal

11.    Sous Pilote de journal, sélectionnez splunk.

12.    Pour les options de clé et de valeur dans Option de journalisation, saisissez les éléments suivants :

Clé : splunk-url
Valeur : votre point de terminaison splunk (par exemple : https://prd-p-9l79p.splunkcloud.com:8088/)

Clé : plunk-insecureskipverify
Valeur : vrai

Clé : splunk-token
Valeur : le Secret ARN que vous avez créé précédemment

13.    Choisissez Ajouter

Remarque : pour plus de détails sur le code et les configurations de Splunk, consultez le code du pilote de journal sur les options GitHub et Splunk sur le site Web Docker.

14.    Pour créer votre définition de tâche, sélectionnez Créer.

15.    Créez un Amazon ECS service ou exécutez une tâche qui utilise la définition de tâche que vous avez créée précédemment.

Vérifiez vos journaux dans Splunk Cloud

Assurez-vous que votre tâche est en cours d'exécution avant de vérifier vos journaux dans Splunk Cloud.

Remarque : par défaut, vos journaux sont redirigés vers splunk-index dans l'index principal, car vous n'avez pas spécifié splunk-index dans votre configuration de journal.

1.    Connectez-vous à votre compte Splunk Cloud.

2.    Dans le menu de navigation, choisissez Rechercher.

3.    Saisissez index="main» dans la zone de recherche.

Maintenant, vous pouvez voir vos journaux dans le collecteur de journaux Splunk.

Remarque : vous pouvez suivre les étapes précédentes pour créer une définition de tâche dans Amazon ECS pour un type de lancement Amazon Elastic Compute Cloud (Amazon EC2). Ensuite, vous pouvez envoyer vos journaux au collecteur de journaux Splunk à l'aide du pilote de journal Splunk de n'importe laquelle de vos tâches ECS.  


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?