Comment envoyer les journaux des applications Linux à AWS CloudWatch
AWS CloudWatch est un service de surveillance fourni par le cloud AWS. AWS fournit une surveillance par défaut pour les paramètres du serveur comme l’utilisation du processeur, l’entrée réseau, la sortie réseau, etc. AWS CloudWatch peut être utilisé pour une surveillance personnalisée comme l’utilisation du disque et de la mémoire (RAM). Pour la surveillance personnalisée, nous devons suivre certaines étapes pour qu’elle soit surveillée.
De la même manière, AWS CloudWatch peut être utilisé pour surveiller les journaux du serveur ou de l’application. Comme il ne s’agit pas d’une fonctionnalité par défaut d’AWS pour des raisons évidentes, nous pouvons la configurer en fonction de nos besoins. Cela dépendra de l’utilisateur des journaux que nous devons envoyer à AWS CloudWatch pour les surveiller.
Pas limité aux ressources AWS
Même si AWS CloudWatch est un service AWS, cela ne signifie pas qu’il ne peut être utilisé que pour les instances EC2, il peut aussi être configuré pour envoyer des journaux d’application ou de serveur à partir des VM d’autres fournisseurs de cloud et aussi à partir des VM sur le disque physique.
Comment envoyer les journaux d’applications ou de serveurs à AWS CloudWatch ?
Pour envoyer les journaux d’application ou de serveur à AWS CloudWatch, nous devons installer l’agent CloudWatch sur le serveur respectif. Nous utiliserons l’instance AWS EC2 pour atteindre notre objectif dans ce blog.
Étapes
- Rôle approprié à attacher à l’instance pour communiquer avec AWS CloudWatch
- Installation de l’agent AWS CloudWatch
- Configuration de l’agent AWS CloudWatch
- Test des journaux dans le portail AWS CloudWatch
Rôle IAM
Afin d’envoyer les journaux de l’application ou du serveur à AWS CloudWatch, nous devons attacher un rôle à l’instance EC2 avec les autorisations appropriées. Le rôle permettra d’effectuer des modifications dans AWS CloudWatch.
Il doit contenir les politiques ci-dessous.
- CreateLogStream
- DécrireLogStream
- CreateLogGroup
- PutLogEvents
Créons un rôle dans AWS IAM.
Accède à la section IAM depuis la liste des services de la console AWS. Si tu n’as pas encore de compte AWS, crée-en un à partir d’ici.
Sur le tableau de bord IAM, va dans Politique, puis dans Créer une politique.
Sur la page « Créer une politique », sélectionne « JSON » dans l’onglet et colle la politique JSON ci-dessous en supprimant celle par défaut.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
Ta politique devrait ressembler à ce qui suit. Une fois que tu as terminé, clique sur le bouton « Revoir la politique » en bas de la page.
Sur la page suivante, tu dois donner un nom à la politique.
Une fois que tu as terminé, clique sur le bouton « Créer une politique » en bas de la page.
Une fois que tu as créé une politique, tu seras redirigé vers la page du rôle IAM. Comme nous avons déjà créé la politique requise, nous allons créer un rôle qui sera attaché à l’instance.
Sur la page « Créer un rôle », sélectionne « EC2 ». Comme nous allons attacher le rôle à l’instance EC2.
Clique sur le bouton « Next : Permission » en bas à gauche de la page.
Sur la page suivante, tu seras invité à joindre une politique au rôle. Recherche le nom de la politique que tu as fourni à l’étape précédente. Une fois trouvé, sélectionne la politique dans la liste.
Une fois que c’est fait, clique sur le bouton « Suivant : Tags » en bas de la page.
Sur la page suivante, il te sera demandé de donner quelques balises au rôle. Comme il s’agit d’une étape facultative, je n’ai donné aucune balise au rôle et j’ai sauté l’étape.
Une fois que tu auras cliqué sur suivant, tu seras invité à donner un nom au rôle.
Ton rôle sera créé en quelques secondes.
Maintenant que nous avons terminé la configuration requise du côté de l’infrastructure, configurons l’agent AWS CloudWatch sur l’instance EC2.
Pour cette étape, tu as besoin d’une instance EC2 en état de fonctionnement. Connecte-toi à l’instance comme tu le souhaites. Il existe plusieurs façons de se connecter à l’instance. Tu peux les vérifier ici.
Si tu as une instance Amazon Linux, suis les étapes mentionnées ci-dessous.
Si tu te connectes à l’instance pour la première fois, assure-toi d’exécuter la commande de mise à jour ci-dessous.
Les étapes ci-dessous, tu peux les suivre pour les machines Amazon Linux.
sudo yum update -y
Une fois la mise à jour terminée, exécute la commande ci-dessous pour installer le awslogs paquet.
sudo yum install -y awslogs
Une fois le paquet installé, tu peux modifier la région dans le fichier/etc/awslogs/awscli.conf fichier.
Maintenant, pour configurer les journaux que tu souhaites envoyer sur AWS CloudWatch, ouvre le fichier /etc/awslogs/awslogs.conf et vérifie les lignes suivantes.
[/var/log/messages] datetime_format = %b %d %H:%M:%S file = /var/log/messages buffer_duration = 5000 log_stream_name = {instance_id} initial_position = start_of_file log_group_name = Amazon-Linux-2
La configuration ci-dessus indique que le chemin du fichier journal de ton système /var/log/messages va être téléchargé sur AWS CloudWatch. La configuration ci-dessus créera un groupe de journaux dans AWS CloudWatch avec le nom mentionné dans le paramètre log_group_name. Il aura également la hiérarchie mentionnée dans le paramètre log_stream_name. Pour le temps de mise en mémoire tampon, nous pouvons modifier la valeur de buffer_duration. La valeur par défaut de buffer_duration est de 5000ms.
Une fois que tu as effectué les modifications, redémarre l’application en exécutant la commande ci-dessous. Elle redémarrera l’application awslog et l’agent commencera à télécharger les journaux vers AWS CloudWatch.
$ sudo service awslogsd start
Pour installer et configurer l’agent AWS CloudWatch sur RHEL ou CentOS, tu peux suivre les étapes ci-dessous.
Exécute la commande ci-dessous pour télécharger le paquet.
curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
Tu trouveras un fichier portant le nom awslogs-agent-setup.py dans l’emplacement actuel. Comme le fichier téléchargé est un script python, tu dois avoir installé python sur ta machine pour l’étape suivante. Assure-toi que le paquet python est installé, puis exécute la commande ci-dessous. Tu dois spécifier la région dans la commande ci-dessous. Tu peux aussi changer la même chose dans la configuration plus tard si tu veux.
python ./awslogs-agent-setup.py --region ap-south-1
Une fois que tu auras exécuté la commande ci-dessus, elle te demandera quelques entrées. Mentionne-les en fonction de tes besoins.
Le script ci-dessus va générer le fichier de configuration/var/awslogs/etc/awslogs.conf. Les détails que tu as fournis dans le script seront enregistrés dans le fichier de configuration.
tu peux encore modifier le fichier de configuration en fonction de tes besoins.
Une fois que tu as terminé toutes les modifications, redémarre l’agent en exécutant la commande ci-dessous.
# systemctl start awslogs
Vérifie l’installation configurée
- Connecte-toi à nouveau à ton compte AWS.
- Recherche CloudWatch dans la liste des services.
- Choisis l’option Groupe de journaux dans les menus de gauche.
- Recherche la valeur que tu as fournie dans le paramètre log_stram_name dans la configuration.
- Tu verras que les journaux sont poussés du serveur vers AWS CloudWatch.