Agence web » Actualités du digital » Comment configurer le service d'agrégation de journaux de CloudWatch

Comment configurer le service d'agrégation de journaux de CloudWatch

L'agrégation et l'analyse de journaux est un domaine énorme, avec des piles de produits entières construites autour de lui pour le rendre plus facile. Le service CloudWatch d'AWS collecte automatiquement les métriques d'utilisation, mais il peut également être configuré pour agréger les journaux de vos instances EC2.

Pourquoi agréger les journaux en premier lieu?

Supposons que vous exécutiez un serveur Web tel que nginx. Chaque fois que quelqu'un se connecte à votre site Web, une nouvelle ligne dans un fichier journal est créée contenant des détails sur la visite. Cette information peut être très utile; par exemple, nginx enregistre les données suivantes pour chaque requête:

  • Adresse IP de l'utilisateur qui se connecte
  • Nom d'utilisateur, si vous utilisez l'authentification de base (vide la plupart du temps)
  • Heure de la demande
  • La demande elle-même (par exemple, "GET /index.php?url=abc")
  • Code d'état renvoyé
  • Octets envoyés, à l'exclusion des en-têtes HTTP (utile pour suivre la taille réelle du trafic)
  • Le référent HTTP (c'est-à-dire le site d'où provient l'utilisateur)
  • Agent utilisateur du navigateur de l'utilisateur

Alors qu'une suite d'analyse comme Google Analytics fournit également une grande partie de ces informations, les fichiers journaux sont créés automatiquement et mis à jour en temps réel. Si vous souhaitez connaître le trafic que vous recevez d'une plage d'adresses IP particulière ou quelles sont vos principales sources de référence, l'interrogation de vos fichiers journaux peut renvoyer des résultats très rapidement. (Elasticsearch est bon pour cela; AWS le propose en tant que service géré qui fonctionne bien avec CloudWatch Logs.)

Maintenant, disons que vous avez beaucoup de serveurs Web – tout à coup, le problème devient un peu plus compliqué qu'une simple recherche d'un seul fichier journal. Même avec seulement deux serveurs, vous n'obtiendrez pas de résultats précis à moins que les journaux ne soient regroupés en un seul endroit. C’est là que la fonction de streaming de journaux de CloudWatch est utile.

Comment configurer les journaux CloudWatch

Pour connecter une instance EC2 à CloudWatch Logs, vous devez installer l'agent de journaux qui gère l'envoi des journaux à CloudWatchFirst, et vous devez configurer un nouveau rôle IAM pour que l'agent fonctionne en tant que.

Ce rôle doit être associé à votre instance. Par conséquent, dans la console de gestion EC2, cliquez avec le bouton droit de la souris sur votre instance et choisissez «Paramètres d'instance»> «Joindre / Remplacer le rôle IAM»:

Si c'est la première fois que vous procédez ainsi, choisissez de créer un nouveau rôle dans la console IAM. Créez un nouveau rôle, puis choisissez «EC2» comme service qui utilise le rôle.

Ensuite, ajoutez des autorisations au rôle. Créez une nouvelle autorisation et collez-la dans le JSON suivant:

{
  "Version": "2012-10-17",
  "Statement": (
    {
      "Effect": "Allow",
      "Action": (
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
    ),
      "Resource": (
        "arn:aws:logs:*:*:*"
    )
  }
 )
}

Une fois que cela est fait, revenez à l'onglet de création de rôle et sélectionnez l'autorisation nouvellement créée.

Donnez un nom au rôle et vous devriez être prêt à partir. Revenez à la console EC2 et appuyez sur Actualiser dans la liste déroulante des rôles. Vous devriez voir le rôle d'agent de journaux.

Une fois les autorisations supprimées, vous pouvez installer l'agent. Si vous utilisez Amazon Linux, choisissez le package disponible sur yum:

sudo yum install -y awslogs

Si vous utilisez Debian / Ubuntu, vous devez télécharger le programme d’installation à la place:

curl https://s3.amazonaws.com//aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O

Ensuite, exécutez le programme d'installation en spécifiant la région:

sudo python ./awslogs-agent-setup.py --region us-east-1

Ici, vous configurez les fichiers journaux traités par l'agent de journalisation. Par défaut, il envoie /var/log/syslog, qui enregistre de nombreuses actions système. Vous pouvez ajouter plusieurs fichiers journaux ici. Chaque fichier journal est agrégé dans un groupe (dont le nom est défini par défaut sur l'emplacement du journal) et reçoit un horodatage.

Les journaux des instances individuelles sont séparés par ID d'instance, mais vous pouvez afficher un flux total pour chaque groupe de journaux comprenant toutes les instances envoyant des journaux à ce groupe. Une fois que vous avez configuré l'agent, les journaux commencent à s'afficher dans CloudWatch immédiatement (environ cinq secondes).

À partir de là, vous pouvez utiliser la barre de recherche de la visionneuse de journaux pour effectuer des recherches simples et utiliser l'outil Insights intégré de CloudWatch pour interroger vos journaux.

Si vous souhaitez plus de puissance de recherche ou si vous souhaitez visualiser des éléments avec Kibana, vous pouvez utiliser le service Elasticsearch hébergé d'AWS, qui s'intègre bien à CloudWatch Logs.

★★★★★