diff --git a/README.md b/README.md index 57c7e544cb2e2be6025e8a8eeabd25cd8ebe0921..2f811c3f8867be2e038056d24016d18ecdcf0711 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ - ## Contexte du projet ICD Meteo est une application web permettant de fournir des prévisions météorologiques “sonifiées”. Elle est responsive et accessible aux personnes déficientes visuelles. Techniquement, c'est une application écrite en Javascript, qui utilise le framework VueJS/Vuetify et la librairie Vite. @@ -88,6 +87,83 @@ L'application méteo a été déployée à l'aide des playbooks suivants: Le job ansible permet de faire le run de l'ensemble des playbooks. Le haproxy est utilisé comme load balancer dans le cluster. Pour accéder au service, il faut configurer le proxy dans tous noeuds et visiter la page http://<ip-address-master>:80. + +## Monitoring: + + +• Utilisation de la machine zabbix-server installé dans le TP de zabbix. + +• Installez l'agent Zabbix sur votre hôte Docker : l'agent Zabbix est un processus léger qui s'exécute sur la même machine que votre hôte Docker et collecte des métriques à partir de votre application et de vos conteneurs. + +• Commandes pour installer l’agent zabbix sur ubuntu 20.04 : + +wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb +sudo dpkg -i zabbix-release_5.0-1+focal_all.deb +sudo apt update +sudo apt install zabbix-agent + +• Configuration de l'agent sur un hôte Ubuntu. Les fichiers de configuration se trouvent dans /etc/zabbix. + +• Réaliser la configuration de l'agent * Server : serveur autorisé à démander des métriques * ServerActive : l'adresse du serveur a qui envoyer les métriques (trapping) * Hostname : le nom de l'hôte. + +• Puis, redémarrer l'agent avec la commande sudo systemctl restart zabbix-agent.service + +• Après avoir installé et configurer l’agent zabbix, il est temps pour créer un host dans l’interface web de zabbix avec le même nom donné avant dans le fichier de configuration de zabbix. + +• Il faut choisir un groupe pour le host et l’adresse IP privé de la machine dans laquelle l’agent zabbix a été configurer. + +• Il va falloir maintenant ajouter un Template qui exploite l'agent. + +• Pour cela, nous pouvons nous baser sur le template "Linux by Zabbix agent" prédéfini. + +• Pour surveiller le service SSH, on ajoute un autre template prédéfini qui est "Template APP SSH Service" + +• On crée un trigger pour l’item utilisé dans le template SSH, qui va déclancher une alerte lorsque le service est down, l’expression utilisée dans ce trigger est la suivante : + +{Hostname:net.tcp.service[ssh].last( )}=0 +avec Hostname c’est le nom du host qui a été créé. +• Pour surveiller le traffic réseau entrant et sortant sur l’interface réseau ens3, on crée deux nouvaux Item un pour le traffic entrant et l’autre pour le traffic sortant. +Les clès à mettre dans chaque item sont les suivants : +traffic entrant : net.if.in[ens3] +traffic sortant : net.if.out[ens3] + +• Pour surveiller l’état d’exécution des containers dans les hosts de la stack swarm, on configurer l’agent zabbix pour collecter des métriques en modifiant le fichier de configuration et en ajoutant les lignes suivantes : +UserParameter=docker.discovery[*],/usr/bin/python3 /usr/local/bin/zabbix-docker.py discover "$1” +UserParameter=docker.stats[*],/usr/bin/python3 /usr/local/bin/zabbix-docker.py stats "$1" "$2" +Ces lignes configurent l'agent Zabbix pour utiliser un script Python appelé "zabbix-docker.py" pour découvrir et collecter des métriques à partir des conteneurs Docker. + +• Dans l'interface Web Zabbix, créer un nouvel élément pour surveiller la santé de votre application. + +• Dans le formulaire de configuration de l'article, vous pouvez spécifier les éléments suivants : + + +Nom : un nom descriptif pour votre élément, tel que "Application Health". + +Type : sélectionnez "Agent Zabbix (actif)" comme type d'élément. + +Clé : spécifiez la clé qui correspond au point de terminaison de vérification de l'état de l’application. La clé utilisé est : net.tcp.service[http,IP publique de l’hote,8000] + +Intervalle de mise à jour : spécifiez l'intervalle auquel Zabbix doit collecter les données de votre application. Par exemple, vous pouvez définir l'intervalle sur 30 secondes. + +• Créer un déclencheur Zabbix pour alerter en cas d'état malsain : Enfin, vous pouvez créer un déclencheur Zabbix pour vous alerter lorsque la vérification de l'état de votre application échoue. Pour cela, rendez-vous dans l'onglet "Configuration", cliquez sur "Triggers", puis cliquez sur "Create Trigger". Dans le formulaire de configuration du déclencheur, vous pouvez spécifier les éléments suivants : +• Nom : un nom descriptif pour votre déclencheur, tel que "Application défectueuse". +• Expression : une expression logique qui prend la valeur true lorsque la vérification de l'état de votre application échoue. L’expression utilisée pour declancher l’alerte si la valeur de l’item = 0 est la suivante : + +{Hostname:net.tcp.service[http,IP publique de l’hote,8000].last( )}=0 + + + + +** Gestion des logs** +Nous avons supervisé un fichier logs généere par la command docker compose log, Ce log contient des informations sur l’execution de l'application meteo qui peuvent nous aider à réagir,aux problèmes potentiels, nous avons utilisé Zabbix qui permet la surveillance centralisé et l’analyse des logs. un element de surveillance de log avec le mode actif de l’agent Zabbix et en utlisant le chemin complet du fichier log qu’on souhaite surveiller. +Nous avons créé un élément qui lit le fichier log. Pour ce faire, nous allons dans l'onglet "Configuration" de l'interface web de Zabbix, sélectionnez "Hosts", puis on sélectionne l'hôte. Cliquez sur l'onglet "Items", puis sur le bouton "Create item". +Dans le formulaire "Create item", on indique le type d'élément par "Zabbix agent (active)" et on définisse la clé "log[file,chemin vers le fichier journal]". +Puis on crée un trigger basé sur la sortie du log de l'élément. Pour ce faire, nous allon dans l'onglet "Configuration" de l'interface web de Zabbix, sélectionnez "Hosts", puis on sélectionne l'hôte que vous souhaitez surveiller. on cliquz sur l'onglet "Triggers", puis sur le bouton "Create trigger". +Dans le formulaire "Créer un trigger", on définit l'expression du trigger comme suit : +{<nom d'hôte>:log[file,<chemin vers le fichier journal>].str("Error")} +On remplace <nom d'hôte> par le nom de l'hôte qu'on surveille dans notre cas c'était "test", par le chemin d'accès au fichier log qu'on surveille. Nous avons mis une condition sur le mot cle qui “error”, on recoit donc une alerte de haut niveau dans le daoshborad de zabbix lorsque le mot "Error" apparaît dans le fichier log +Et pour génère une alerte ou une notification lorsque le trigger est activé, on crée une action en spécifiant les destinataires du courriel, le sujet et le contenu du message dans la configuration de l'action. + ### Customize configuration See [Configuration Reference](https://vitejs.dev/config/).