Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
wiki:linux:grafana_prometheus [2023/04/26 16:07] – [Préambule] DEROUET Valentin | wiki:linux:grafana_prometheus [2023/04/26 17:44] (Version actuelle) – DEROUET Valentin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Mise en place et exploitation d'un serveur Grafana et Prometheus ====== | ====== Mise en place et exploitation d'un serveur Grafana et Prometheus ====== | ||
- | {{ : | ||
- | |||
- | Dans cette documentation nous installerons une solution de supervision matérielle avec le couple Grafana/ | ||
- | Nous installerons aussi les agents sur les clients à surveiller. | ||
- | |||
- | Pour mieux s'y retrouver, cette documentation disposera de plusieurs screenshots illustrant les consignes. | ||
- | ====== Mise en place et exploitation d'un serveur Grafana et Prometheus ====== | ||
{{ : | {{ : | ||
Ligne 16: | Ligne 9: | ||
Pour mieux s'y retrouver, cette documentation disposera de plusieurs screenshots illustrant les consignes. | Pour mieux s'y retrouver, cette documentation disposera de plusieurs screenshots illustrant les consignes. | ||
- | ## Préambule | + | ## Préambule |
La supervision d'une infrastructure informatique consiste à surveiller et à analyser l' | La supervision d'une infrastructure informatique consiste à surveiller et à analyser l' | ||
Ligne 29: | Ligne 22: | ||
5. Amélioration de la **sécurité** : La supervision peut aider à détecter les tentatives d' | 5. Amélioration de la **sécurité** : La supervision peut aider à détecter les tentatives d' | ||
- | | ||
En résumé, la supervision d'une infrastructure informatique est essentielle pour garantir le bon fonctionnement de l' | En résumé, la supervision d'une infrastructure informatique est essentielle pour garantir le bon fonctionnement de l' | ||
Ligne 49: | Ligne 41: | ||
**Prometheus** est un logiciel de supervision open-source créé par SoundCloud. En 2013, SoundCloud a décidé d' | **Prometheus** est un logiciel de supervision open-source créé par SoundCloud. En 2013, SoundCloud a décidé d' | ||
- | Prometheus, écrit en *GO*, s' | + | Prometheus, écrit en _GO_, s' |
Il existe plusieurs autres solutions de supervision sur le marché : | Il existe plusieurs autres solutions de supervision sur le marché : | ||
- | - Zabbix ; | + | - |
- | - Nagios ; | + | - |
- | - Centreon ; | + | - |
- | - Sensu ; | + | - |
Mais sont généralement assez couteuses à déployer. | Mais sont généralement assez couteuses à déployer. | ||
Ligne 64: | Ligne 56: | ||
#### Comparaison avec Kibana, une alternative à Grafana : | #### Comparaison avec Kibana, une alternative à Grafana : | ||
- | La principale nuance est l' | + | La principale nuance est l' |
**Grafana** prends en charge plusieurs autres méthodes de stlsockage de metrics. (basé sur les **metrics**) | **Grafana** prends en charge plusieurs autres méthodes de stlsockage de metrics. (basé sur les **metrics**) | ||
{{ wiki: | {{ wiki: | ||
- | ### Prérequis | + | ### Prérequis |
Nous considérons que vous avez déjà montés plusieurs serveurs afin de pouvoir les surveiller. | Nous considérons que vous avez déjà montés plusieurs serveurs afin de pouvoir les surveiller. | ||
Nous considérons que vous êtes équipé de cette manière : | Nous considérons que vous êtes équipé de cette manière : | ||
- | \- Une VM sous Debian 11 vierge **\[Grafana/ | + | - Une VM sous Debian 11 vierge **[Grafana/ |
- | \- Une VM sous Debian 11 vierge **\[Le serveur à monitorer\]** | + | - Une VM sous Debian 11 vierge **[Le serveur à monitorer]** |
Les allocations de matériel (CPU/ | Les allocations de matériel (CPU/ | ||
Pour le duo **Grafana/ | Pour le duo **Grafana/ | ||
- | \- *2GB* de ram | + | - *2GB* de ram |
- | \- *2* cœurs de CPU | + | - *2* cœurs de CPU |
- | \- *20GB* d' | + | - *20GB* d' |
- | \- *Debian 11* | + | - *Debian 11* |
Nos IP pour notre infrastructure seront : | Nos IP pour notre infrastructure seront : | ||
- | \- \[Grafana\]: **10.192.43.12** (*:3000 pour le port WEB*) | + | - [Grafana]: **10.192.43.12** (*:3000 pour le port WEB*) |
- | \- \[Supervision\] : **10.192.43.13** (*Le serveur à surveiller*) | + | - [Supervision] : **10.192.43.13** (*Le serveur à surveiller*) |
Mot de passe par défaut sur toutes les sessions : **Not24get** | Mot de passe par défaut sur toutes les sessions : **Not24get** | ||
Rappel des deux commandes essentiels : | Rappel des deux commandes essentiels : | ||
- | \- '' | + | - '' |
- | \- '' | + | - '' |
- | <WRAP center round tip 60%> | + | <WRAP center round tip 60%> |
Ajouter les deux machines dans un logiciel tel que mRemoteNG pour faciliter l' | Ajouter les deux machines dans un logiciel tel que mRemoteNG pour faciliter l' | ||
+ | </ | ||
- | # Installation de Prometheus | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Depuis les sources provenant de Prometheus | ||
- | |||
- | ### Ajout d'un compte de service " | ||
- | |||
- | - Ajouter le compte de service : | ||
- | |||
- | ``` | ||
- | groupadd --system prometheus | ||
- | ``` | ||
- | |||
- | - Assigner un groupe et retirer la possibilité de se connecter | ||
- | |||
- | ``` | ||
- | useradd -s / | ||
- | ``` | ||
- | |||
- | ### Création des dossiers pour Prometheus | ||
- | |||
- | - Créer les dossiers que Prometheus aura besoin pour enregistrer les configurations. | ||
- | |||
- | ``` | ||
- | mkdir / | ||
- | mkdir / | ||
- | ``` | ||
- | |||
- | ### Téléchargement et installation à partir de la source | ||
- | |||
- | Changer de répertoire temporaire pour le téléchargement, | ||
- | |||
- | - Télécharger la source avec la commande '' | ||
- | |||
- | & | ||
- | La commande vient directement chercher la dernière version de Prometheus, il n'est pas nécessaire de renseigner la version. | ||
- | |||
- | ```bash | ||
- | curl -s https:// | ||
- | ``` | ||
- | |||
- | - Extraire l' | ||
- | |||
- | Trouver le nom du fichier télécharger avec la commande '' | ||
- | |||
- | ``` | ||
- | tar -xvf prometheus-2.42.0.linux-amd64.tar.gz | ||
- | ``` | ||
- | |||
- | - Copier les fichiers dans le dossier créé précédemment | ||
- | |||
- | ``` | ||
- | mv prometheus-2.42.0.linux-amd64 / | ||
- | ``` | ||
- | |||
- | - Attribuer les permissions à l' | ||
- | |||
- | ``` | ||
- | chown prometheus: | ||
- | chown prometheus: | ||
- | chown -R prometheus: | ||
- | chown -R prometheus: | ||
- | ``` | ||
- | |||
- | ### Copie des fichiers | ||
- | |||
- | ``` | ||
- | cp / | ||
- | cp / | ||
- | ``` | ||
- | |||
- | ### Ajout au démarrage automatique | ||
- | |||
- | - Création du service | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | - Ajouter la configuration dans le fichier de service | ||
- | |||
- | ```bash | ||
- | [Unit] | ||
- | Description=Prometheus | ||
- | Documentation=https:// | ||
- | Wants=network-online.target | ||
- | After=network-online.target | ||
- | [Service] | ||
- | User=prometheus | ||
- | Group=prometheus | ||
- | Type=simple | ||
- | ExecStart=/ | ||
- | --config.file / | ||
- | --storage.tsdb.path / | ||
- | --web.console.templates=/ | ||
- | --web.console.libraries=/ | ||
- | |||
- | [Install] | ||
- | WantedBy=multi-user.target | ||
- | ``` | ||
- | |||
- | - Redémarrer le deamon | ||
- | |||
- | ``` | ||
- | systemctl daemon-reload | ||
- | ``` | ||
- | |||
- | - Activer le service au démarrage | ||
- | |||
- | ``` | ||
- | systemctl enable prometheus | ||
- | ``` | ||
- | |||
- | - Vérifier la bonne exécution de Prometheus | ||
- | |||
- | ``` | ||
- | systemctl status prometheus | ||
- | ``` | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ### Accès à l' | ||
- | |||
- | Le serveur web de Prometheus est disponible à l' | ||
- | |||
- | #### Ajouter une règle au Pare-feu local | ||
- | |||
- | - Autoriser le port 9090 | ||
- | |||
- | `ufw allow 9090` | ||
- | |||
- | ## Utilisation de Prometheus derrière un Firewall | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Pour superviser une infrastructure complexe qui comporte plusieurs niveaux d' | ||
- | |||
- | Le *Proxy* est décomposé en deux parties : | ||
- | |||
- | - Le proxy qui s' | ||
- | - L' | ||
- | |||
- | L' | ||
- | |||
- | - Comme standalone serveur ; | ||
- | - Embarqué dans un autre serveur ; | ||
- | - Comme simple Agent Java. | ||
- | |||
- | Un *proxy* peut gérer un ou plusieurs agents. | ||
- | |||
- | # Installation des agents sur les clients | ||
- | |||
- | ## Fonctionnement mode Pull / Push | ||
- | |||
- | Par défaut, Prometheus fonctionne en mode *Pull*, c'est à dire que le serveur interroge à intervalle régulier les instances clientes sur lesquelles les *Exporters* sont installés. | ||
- | |||
- | Il est possible, quand cela s' | ||
- | |||
- | ## Sur Linux : node_exporter | ||
- | |||
- | ### Télécharger node_exporter par les sources | ||
- | |||
- | Changer de répertoire temporaire pour le téléchargement, | ||
- | |||
- | - Récupérer l' | ||
- | |||
- | & | ||
- | La commande vient directement chercher la dernière version de node_exporter, | ||
- | |||
- | ```bash | ||
- | curl -s https:// | ||
- | ``` | ||
- | |||
- | - Extraire l' | ||
- | |||
- | ``` | ||
- | tar -xvf node_exporter-*.linux-amd64.tar.gz | ||
- | ``` | ||
- | |||
- | - Copier les fichiers dans le répertoire '' | ||
- | |||
- | *Utiliser la commande '' | ||
- | |||
- | ``` | ||
- | mv node_exporter-*.linux-amd64/ | ||
- | ``` | ||
- | |||
- | - Création du compte de service | ||
- | |||
- | ``` | ||
- | useradd -rs /bin/false node_exporter | ||
- | ``` | ||
- | |||
- | ### Ajouter le service node_exporter | ||
- | |||
- | - Création du fichier de service | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | - Ajouter la configuration dans le fichier de service | ||
- | |||
- | ```bash | ||
- | [Unit] | ||
- | Description=Node Exporter Node02 | ||
- | After=network.target | ||
- | |||
- | [Service] | ||
- | User=node_exporter | ||
- | Group=node_exporter | ||
- | Type=simple | ||
- | ExecStart=/ | ||
- | |||
- | [Install] | ||
- | WantedBy=multi-user.target | ||
- | ``` | ||
- | |||
- | - Redémarrer le daemon | ||
- | |||
- | ``` | ||
- | systemctl daemon-reload | ||
- | ``` | ||
- | |||
- | - Activer le service au démarrage | ||
- | |||
- | ``` | ||
- | systemctl enable node_exporter | ||
- | ``` | ||
- | |||
- | - Vérifier la bonne exécution de node_exporter | ||
- | |||
- | ``` | ||
- | systemctl status node_exporter | ||
- | ``` | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Sur Windows : windows_exporter | ||
- | |||
- | ### Téléchargement et installation à partir la source | ||
- | |||
- | - Télécharger la source | ||
- | |||
- | Choisir la version **x64**. | ||
- | |||
- | ``` | ||
- | https:// | ||
- | ``` | ||
- | |||
- | - Lancer l' | ||
- | |||
- | & | ||
- | Plusieurs arguments sont disponibles sur la documentation de [windows_exporter](https:// | ||
- | |||
- | ```powershell | ||
- | msiexec /i < | ||
- | ``` | ||
- | |||
- | L' | ||
- | |||
- | #### Vérification si l' | ||
- | |||
- | - Dans les services Windows | ||
- | |||
- | Démarrer l’utilitaire de gestion des services Windows avec '' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | On retrouve bien le service '' | ||
- | |||
- | - Via la page web de l'API | ||
- | |||
- | Accéder à la page : '' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Ajout des agents dans Prometheus | ||
- | |||
- | ### Modification du fichier de configuration | ||
- | |||
- | Ici, vous ajouterez les différents clients dans la configuration de Prometheus. | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | A la fin du fichier ajouter toutes les clients, vous pouvez trier par type d'OS. | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ```yaml | ||
- | - job_name: ' | ||
- | static_configs: | ||
- | - targets: [' | ||
- | ``` | ||
- | |||
- | #### Vérification du fichier de configuration | ||
- | |||
- | Utiliser l' | ||
- | |||
- | ``` | ||
- | promtool check config / | ||
- | ``` | ||
- | |||
- | {{ wiki: | ||
- | |||
- | & | ||
- | Aucune erreur n'a été détectée. | ||
- | Pensez à utiliser cette commande dès qu'une modification est faite dans le fichier config. | ||
- | |||
- | ### Appliquer la configuration | ||
- | |||
- | - Redémarrer le service Prometheus | ||
- | |||
- | ``` | ||
- | systemctl restart prometheus | ||
- | ``` | ||
- | |||
- | - Vérifier l' | ||
- | |||
- | ``` | ||
- | systemctl status prometheus | ||
- | ``` | ||
- | |||
- | ### Vérification dans l' | ||
- | |||
- | Sur l' | ||
- | |||
- | Dans le menu '' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Dans l' | ||
- | |||
- | & | ||
- | Utilisez l' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | & | ||
- | Toutes les machines sont désormais dans Prometheus. | ||
- | La configuration de Prometheus reste assez simple, le traitement des données est effectué par Grafana. | ||
- | |||
- | # Installation de Grafana | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ### Téléchargement et installation à partir du repo | ||
- | |||
- | - Installer le gestionnaire de dépôt (permet de rajouter un dépôt facilement) : | ||
- | |||
- | ``` | ||
- | apt-get install -y apt-transport-https | ||
- | ``` | ||
- | |||
- | ``` | ||
- | apt-get install -y software-properties-common wget | ||
- | ``` | ||
- | |||
- | - Ajouter la clé '' | ||
- | |||
- | ``` | ||
- | wget -q -O / | ||
- | ``` | ||
- | |||
- | - Ajouter le dépôt dans les sources | ||
- | |||
- | ```bash | ||
- | echo "deb [signed-by=/ | ||
- | ``` | ||
- | |||
- | - Mettez à jour vos sources | ||
- | |||
- | ``` | ||
- | apt update | ||
- | ``` | ||
- | |||
- | - Démarrer l' | ||
- | |||
- | ``` | ||
- | apt -y install grafana | ||
- | ``` | ||
- | |||
- | ### Ajout au démarrage automatique | ||
- | |||
- | ``` | ||
- | systemctl daemon-reload | ||
- | ``` | ||
- | |||
- | ``` | ||
- | systemctl enable grafana-server | ||
- | ``` | ||
- | |||
- | ### Démarrer le serveur web | ||
- | |||
- | ``` | ||
- | systemctl start grafana-server | ||
- | ``` | ||
- | |||
- | - Vérifier le bon fonctionnement | ||
- | |||
- | ``` | ||
- | systemctl status grafana-server | ||
- | ``` | ||
- | |||
- | {{ wiki: | ||
- | |||
- | & | ||
- | |||
- | - Le nom du service pour le serveur Grafana est '' | ||
- | - Les fichiers de configurations sont dans ''/ | ||
- | - Les logs sont disponibles dans ''/ | ||
- | - La BDD qui contient les configurations est dans ''/ | ||
- | - Les autres fichiers (html/ | ||
- | |||
- | ### Accéder au serveur web | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Le serveur web écoute sur le port '' | ||
- | |||
- | Les identifiants par défault sont : '' | ||
- | Le mot de passe sera à changer. | ||
- | |||
- | # Configuration de Grafana | ||
- | |||
- | ## Ajout de la data-source Prometheus | ||
- | |||
- | - Ajouter une data-source depuis le menu latéral | ||
- | |||
- | {{ wiki: | ||
- | |||
- | - Sélectionner '' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | - Renseigner l'IP du serveur Prometheus (en local) | ||
- | |||
- | {{ wiki: | ||
- | |||
- | & | ||
- | Si votre installation de Prometheus est en local, c’est à dire sur la même machine qui exécute Grafana vous devez renseigner '' | ||
- | |||
- | Terminer en validant la configuration, | ||
- | |||
- | ## Ajout de tableaux | ||
- | |||
- | ### Par importation avec un code d' | ||
- | |||
- | Voici donc deux tableaux que je recommande à l' | ||
- | |||
- | - Le tableau n°14451 pour les données `windows_exporter`. | ||
- | - Le tableau n°11074 pour les données `node_exporter`. | ||
- | |||
- | Ils sont très bien construit et permettent une utilisation "Out of the box". | ||
- | |||
- | - Ouvrir le gestionnaire d' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | - Indiquer le n° de tableau puis importer. | ||
- | |||
- | {{ wiki: | ||
- | |||
- | & | ||
- | Il est aussi possible de coller un code '' | ||
- | |||
- | - Renseigner la source de données | ||
- | |||
- | Pensez à le renommer avec de l' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | #### Votre tableau est désormais disponible et commence déjà à traiter les données. | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Personnalisation des tableaux | ||
- | |||
- | ### Modification par le JSON | ||
- | |||
- | Si vous souhaitez modifier un tableau importé ou un tableau que vous avez créé, vous pouvez utiliser l' | ||
- | |||
- | {{ wiki: | ||
- | {{ wiki: | ||
- | |||
- | # Ajout d'un AlertManager | ||
- | |||
- | Dans Grafana, les alertes sont directement liées au graphiques, c’est la raison pour laquelle nous créons un tableau de bord par serveur. | ||
- | Vous devez ensuite définir le seuil critique. Par exemple 75 % pour l’utilisation disque. | ||
- | Une fois votre alerte en place, vous devriez avoir un cœur s’affichant à côté du titre de votre graphique, affiché en vert quand tout va bien et en rouge en cas d’alerte. | ||
- | Prometheus gère aussi les alertes avec un plugin à installer. | ||
- | |||
- | ## Fonctionnement d' | ||
- | |||
- | Prenons un exemple pour mieux expliquer le cycle de vie d'une alerte. Nous avons une alerte simple qui surveille la charge 1m d'un noeud, et qui se déclenche lorsqu' | ||
- | |||
- | ```yaml | ||
- | ALERT NODE_LOAD_1M | ||
- | IF node_load1 > 20 | ||
- | FOR 1m | ||
- | ``` | ||
- | |||
- | Prometheus est configuré pour récupérer les métriques toutes les 20 secondes, et l' | ||
- | |||
- | ```yaml | ||
- | global : | ||
- | scrape_interval : 20s | ||
- | evaluation_interval : 1m | ||
- | ``` | ||
- | |||
- | *Question* : combien de temps faut-il pour lancer `NODE_LOAD_1M`, | ||
- | |||
- | *Réponse* : il faut un temps compris entre `1m et 20s + 1m + 1m`. La limite supérieure est probablement plus élevée que ce à quoi vous vous attendez lorsque vous fixez FOR 1m, mais elle est tout à fait logique dans l' | ||
- | |||
- | Le cycle de vie d'une alerte explique la raison d'un tel délai dans le pire des cas. Le diagramme suivant montre la séquence des événements sur une ligne de temps : | ||
- | |||
- | {{ wiki: | ||
- | |||
- | La charge d'un nœud change constamment, | ||
- | Les règles d' | ||
- | Lorsqu' | ||
- | Lors des cycles d' | ||
- | |||
- | ## Ajout des règles pour Prometheus | ||
- | |||
- | Toujours dans le répertoire ''/ | ||
- | |||
- | ``` | ||
- | touch prometheus_rules.yml | ||
- | nano prometheus_rules.yml | ||
- | ``` | ||
- | |||
- | {{ wiki: | ||
- | |||
- | - Vérification avec '' | ||
- | |||
- | ``` | ||
- | promtool check rules / | ||
- | ``` | ||
- | |||
- | *Résultat :* | ||
- | |||
- | ``` | ||
- | Checking prometheus_rules.yml | ||
- | SUCCESS: 4 rules found | ||
- | ``` | ||
- | |||
- | ## Installation d' | ||
- | |||
- | - Création du compte de service | ||
- | |||
- | ``` | ||
- | useradd -M -r -s /bin/false alertmanager | ||
- | ``` | ||
- | |||
- | - Téléchargement des sources avec la commande '' | ||
- | |||
- | & | ||
- | Vérifier la dernière version sur : https:// | ||
- | |||
- | - Définir une variable provisoire pour le wget | ||
- | |||
- | ``` | ||
- | VER=0.25.0 | ||
- | ``` | ||
- | |||
- | - Téléchargement de la source | ||
- | |||
- | ``` | ||
- | wget https:// | ||
- | ``` | ||
- | |||
- | - Extraire la source | ||
- | |||
- | ``` | ||
- | tar xzf alertmanager-$VER.linux-amd64.tar.gz | ||
- | ``` | ||
- | |||
- | - Copie des fichiers sources dans ''/ | ||
- | |||
- | ``` | ||
- | cp alertmanager-$VER.linux-amd64/ | ||
- | ``` | ||
- | |||
- | - Copie des fichiers de configuration dans ''/ | ||
- | |||
- | ``` | ||
- | mkdir / | ||
- | mkdir / | ||
- | cp alertmanager-$VER.linux-amd64/ | ||
- | ``` | ||
- | |||
- | - Définition des droits pour l' | ||
- | |||
- | ``` | ||
- | chown alertmanager: | ||
- | ``` | ||
- | |||
- | ## Création du service d' | ||
- | |||
- | - Création du service '' | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | ```bash | ||
- | [Unit] | ||
- | Description=AlertManager Serveur Service | ||
- | Wants=network-online.target | ||
- | After=network-online.target | ||
- | |||
- | [Service] | ||
- | User=alertmanager | ||
- | Group= | ||
- | Type=simple | ||
- | ExecStart=/ | ||
- | |||
- | [Install] | ||
- | WantedBy=multi-user.target | ||
- | ``` | ||
- | |||
- | - Exécution du service | ||
- | |||
- | ``` | ||
- | systemctl daemon-reload | ||
- | ``` | ||
- | |||
- | ``` | ||
- | systemctl enable --now alertmanager | ||
- | ``` | ||
- | |||
- | - Vérifier l' | ||
- | |||
- | ``` | ||
- | systemctl status alertmanager | ||
- | ``` | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Modification de la configuration de Prometheus | ||
- | |||
- | Dans le répertoire ''/ | ||
- | |||
- | - Ajouter l' | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | - Créer un dossier pour mettre toutes les règles d' | ||
- | |||
- | ``` | ||
- | mkdir / | ||
- | ``` | ||
- | |||
- | ```yaml | ||
- | # Alertmanager configuration | ||
- | alerting: | ||
- | alertmanagers: | ||
- | - static_configs: | ||
- | - targets: | ||
- | - <IP du serveur>: | ||
- | |||
- | # Load rules once and periodically evaluate them according to the global evaluation_interval. | ||
- | rule_files: | ||
- | - " | ||
- | ``` | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Création de la première règle | ||
- | |||
- | Dans le répertoire ''/ | ||
- | |||
- | ``` | ||
- | touch general.yml | ||
- | nano general.yml | ||
- | ``` | ||
- | |||
- | Pour cet exemple nous allons donner une seule règle, en l’occurrence la vérification des targets. | ||
- | Nous serons alerté dès qu'un service de prometheus (targets) est DOWN. | ||
- | |||
- | ```yaml | ||
- | groups: | ||
- | - name: GeneralGroup | ||
- | rules: | ||
- | - alert: InstanceDown | ||
- | expr: up == 0 | ||
- | for: 1m #au bout d'une minute, trigger l' | ||
- | labels: | ||
- | severity: critical | ||
- | annotations: | ||
- | summary: " | ||
- | description: | ||
- | |||
- | ``` | ||
- | |||
- | #### Vous pouvez retrouver ici plusieurs modèles de règles pour prometheus : | ||
- | |||
- | https:// | ||
- | |||
- | Il suffit de copier coller les règles dans un fichier '' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | - Vérification du fichier d' | ||
- | |||
- | ``` | ||
- | promtool check rules / | ||
- | ``` | ||
- | |||
- | *Résultat :* | ||
- | |||
- | ``` | ||
- | Checking prometheus_rules.yml | ||
- | SUCCESS: 1 rule found | ||
- | ``` | ||
- | |||
- | Exemple avec plusieurs règles : | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Gestion des notifications | ||
- | |||
- | & | ||
- | Aide pour la création du fichier de configuration : [prometheus.io/ | ||
- | |||
- | La manière la plus connue de prévenir d'un événement est via l' | ||
- | Il existe d' | ||
- | |||
- | - Via SMS (dans le cas de graves alertes) | ||
- | - Via Slack (beaucoup utilisé dans les entreprises) | ||
- | - Via Discord (dans un channel) | ||
- | |||
- | ### Trigger une notification par mail | ||
- | |||
- | - Ouvrir le fichier de configuration | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | *Fichier de configuration avec la fonctionnalité d' | ||
- | |||
- | ```yaml | ||
- | global: | ||
- | resolve_timeout: | ||
- | |||
- | route: | ||
- | group_by: [' | ||
- | group_wait: 10s | ||
- | group_interval: | ||
- | repeat_interval: | ||
- | routes: | ||
- | - receiver: ' | ||
- | match_re: | ||
- | severity: critical|warning #match le label critical ou warning | ||
- | continue: true #continuer d' | ||
- | |||
- | receivers: | ||
- | - name: ' | ||
- | email_configs: | ||
- | - to: ' | ||
- | from: ' | ||
- | smarthost: 10.192.44.11: | ||
- | auth_username: | ||
- | auth_identity: | ||
- | auth_password: | ||
- | require_tls: | ||
- | headers: | ||
- | From: [email protected] #modifier le nom du mail affiché sur le client | ||
- | send_resolved: | ||
- | ``` | ||
- | |||
- | ### Trigger un webhook Discord | ||
- | |||
- | Depuis la dernière version d' | ||
- | |||
- | Commencer par ajouter la '' | ||
- | |||
- | ```yaml | ||
- | - receiver: ' | ||
- | match_re: | ||
- | severity: critical|warning | ||
- | continue: true | ||
- | ``` | ||
- | |||
- | Puis dans les '' | ||
- | |||
- | ```yaml | ||
- | - name: ' | ||
- | discord_configs: | ||
- | - webhook_url: | ||
- | send_resolved: | ||
- | ``` | ||
- | |||
- | Exemple de trigger : | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ### Vérifier le fichier de configuration | ||
- | |||
- | ``` | ||
- | amtool check-config / | ||
- | ``` | ||
- | |||
- | - Redémarrer le service | ||
- | |||
- | ``` | ||
- | systemctl restart alertmanager | ||
- | ``` | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Vérifier le serveur d' | ||
- | |||
- | Un serveur web écoute sur le port '' | ||
- | `http:// | ||
- | |||
- | {{ wiki: | ||
- | |||
- | # Surveiller les machines avec les agents node et windows exporter | ||
- | |||
- | ## Pour les machines Linux | ||
- | |||
- | En se basant sur les modèles d' | ||
- | |||
- | - Créer un fichier dans ''/ | ||
- | |||
- | ``` | ||
- | touch / | ||
- | ``` | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | - Ajouter les règles | ||
- | |||
- | Elles viendront surveiller : | ||
- | |||
- | - Si une machine à moins de 10% de ram disponible pendant plus de 2 minutes | ||
- | - Si les interfaces réseau de l' | ||
- | - Si les interfaces réseau de l' | ||
- | - Si le disque lit trop de données (> 50 MB/s) pendant 5 minutes | ||
- | - Si le disque écrit trop de données (> 50 MB/s) pendant 2 minutes | ||
- | - Si il reste moins de 10% d' | ||
- | - Si le processeur de l' | ||
- | |||
- | ```yaml | ||
- | groups: | ||
- | - name: NodeExporterGroup | ||
- | rules: | ||
- | - alert: HostOutOfMemory | ||
- | expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10 | ||
- | for: 2m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Host out of memory (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: HostUnusualNetworkThroughputIn | ||
- | expr: sum by (instance) (rate(node_network_receive_bytes_total[2m])) / 1024 / 1024 > 100 | ||
- | for: 5m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Host unusual network throughput in (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: HostUnusualNetworkThroughputOut | ||
- | expr: sum by (instance) (rate(node_network_transmit_bytes_total[2m])) / 1024 / 1024 > 100 | ||
- | for: 5m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Host unusual network throughput out (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: HostUnusualDiskReadRate | ||
- | expr: sum by (instance) (rate(node_disk_read_bytes_total[2m])) / 1024 / 1024 > 50 | ||
- | for: 5m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Host unusual disk read rate (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: HostUnusualDiskWriteRate | ||
- | expr: sum by (instance) (rate(node_disk_written_bytes_total[2m])) / 1024 / 1024 > 50 | ||
- | for: 2m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Host unusual disk write rate (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: HostOutOfDiskSpace | ||
- | expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0 | ||
- | for: 2m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Host out of disk space (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: HostHighCpuLoad | ||
- | expr: sum by (instance) (avg by (mode, instance) (rate(node_cpu_seconds_total{mode!=" | ||
- | for: 0m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Host high CPU load (instance {{ $labels.instance }}) | ||
- | description: | ||
- | ``` | ||
- | |||
- | On retrouve dans Prometheus toutes les alertes pour les machines Linux. | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Pour les machines Windows | ||
- | |||
- | En se basant sur les modèles d' | ||
- | |||
- | - Créer un fichier dans ''/ | ||
- | |||
- | ``` | ||
- | touch / | ||
- | ``` | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | - Ajouter les règles | ||
- | |||
- | Elles viendront surveiller : | ||
- | |||
- | - Si le disque dur de l' | ||
- | - Si la ram de l' | ||
- | - Si le processeur de l' | ||
- | |||
- | ```yaml | ||
- | groups: | ||
- | - name: WindowsExporterGroup | ||
- | rules: | ||
- | - alert: WindowsServerCpuUsage | ||
- | expr: 100 - (avg by (instance) (rate(windows_cpu_time_total{mode=" | ||
- | for: 0m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Windows Server CPU Usage (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: WindowsServerMemoryUsage | ||
- | expr: 100 - ((windows_os_physical_memory_free_bytes / windows_cs_physical_memory_bytes) * 100) > 90 | ||
- | for: 2m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Windows Server memory Usage (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: WindowsServerDiskSpaceUsage | ||
- | expr: 100.0 - 100 * ((windows_logical_disk_free_bytes / 1024 / 1024 ) / (windows_logical_disk_size_bytes / 1024 / 1024)) > 80 | ||
- | for: 2m | ||
- | labels: | ||
- | severity: critical | ||
- | annotations: | ||
- | summary: Windows Server disk Space Usage (instance {{ $labels.instance }}) | ||
- | description: | ||
- | ``` | ||
- | |||
- | On retrouve dans Prometheus toutes les alertes pour les machines Linux. | ||
- | |||
- | {{ wiki: | ||
- | |||
- | # Agent de monitoring WEB : blackbox_exporter | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Qu' | ||
- | |||
- | ## Installation de l' | ||
- | |||
- | Changer de répertoire temporaire pour le téléchargement, | ||
- | |||
- | - Créer le compte de service pour blackbox : | ||
- | |||
- | ``` | ||
- | useradd --no-create-home --shell /bin/false blackbox_exporter | ||
- | ``` | ||
- | |||
- | - Télécharger le binary (vérifier la dernière version) : | ||
- | |||
- | ``` | ||
- | wget https:// | ||
- | ``` | ||
- | |||
- | - Extraire et copier le binary | ||
- | |||
- | ``` | ||
- | tar xvzf blackbox_exporter-0.23.0.linux-amd64.tar.gz | ||
- | ``` | ||
- | |||
- | ``` | ||
- | cp blackbox_exporter-0.23.0.linux-amd64/ | ||
- | ``` | ||
- | |||
- | - Définir les permissions du binary | ||
- | |||
- | ``` | ||
- | chown blackbox_exporter: | ||
- | ``` | ||
- | |||
- | - Créer le dossier pour la configuration : | ||
- | |||
- | ``` | ||
- | mkdir / | ||
- | ``` | ||
- | |||
- | - Editer ce fichier : | ||
- | |||
- | ``` | ||
- | / | ||
- | ``` | ||
- | |||
- | ```yaml | ||
- | modules: | ||
- | http_2xx: #vérifier si la réponse est bien 200 | ||
- | prober: http | ||
- | timeout: 5s | ||
- | http: | ||
- | valid_status_codes: | ||
- | method: GET | ||
- | preferred_ip_protocol: | ||
- | icmp_ipv4: #vérifier si une machine répond au ping | ||
- | timeout: 5s | ||
- | prober: icmp | ||
- | icmp: | ||
- | | ||
- | # | ||
- | tcp_connect: | ||
- | prober: tcp | ||
- | ``` | ||
- | |||
- | - Donner la propriété au compte de service | ||
- | |||
- | ``` | ||
- | chown blackbox_exporter: | ||
- | ``` | ||
- | |||
- | - Créer le service Blackbox | ||
- | |||
- | ``` | ||
- | / | ||
- | ``` | ||
- | |||
- | ```bash | ||
- | [Unit] | ||
- | Description=Blackbox Exporter | ||
- | Wants=network-online.target | ||
- | After=network-online.target | ||
- | |||
- | [Service] | ||
- | User=blackbox_exporter | ||
- | Group=blackbox_exporter | ||
- | Type=simple | ||
- | ExecStart=/ | ||
- | |||
- | [Install] | ||
- | WantedBy=multi-user.target | ||
- | ``` | ||
- | |||
- | - Démarrer et vérifier le statut du service | ||
- | |||
- | ``` | ||
- | systemctl daemon-reload | ||
- | systemctl enable blackbox_exporter | ||
- | systemctl start blackbox_exporter | ||
- | systemctl status blackbox_exporter | ||
- | ``` | ||
- | |||
- | & | ||
- | Le service écoute sur le port 9115 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Configuration dans Prometheus | ||
- | |||
- | Dans cet exemple nous allons monitorer plusieurs terminaisons : | ||
- | |||
- | - ICMP (penser à autoriser la machine pour les requêtes ICMP) | ||
- | - TCP | ||
- | - HTTP | ||
- | |||
- | Ces trois modules ont été configuré dans le fichier de blackbox. | ||
- | |||
- | ```yaml | ||
- | - job_name: " | ||
- | scrape_interval: | ||
- | metrics_path: | ||
- | params: | ||
- | module: [ " | ||
- | static_configs: | ||
- | - targets: | ||
- | - http:// | ||
- | relabel_configs: | ||
- | - source_labels: | ||
- | target_label: | ||
- | - source_labels: | ||
- | target_label: | ||
- | - target_label: | ||
- | replacement: | ||
- | - job_name: ' | ||
- | metrics_path: | ||
- | params: | ||
- | module: [icmp_ipv4] | ||
- | scrape_interval: | ||
- | static_configs: | ||
- | - targets: | ||
- | - 10.192.45.2 #monitorer une IPV4 publique ou privée | ||
- | relabel_configs: | ||
- | - source_labels: | ||
- | target_label: | ||
- | - source_labels: | ||
- | target_label: | ||
- | - target_label: | ||
- | replacement: | ||
- | - job_name: ' | ||
- | metrics_path: | ||
- | params: | ||
- | module: [tcp_connect] | ||
- | scrape_interval: | ||
- | static_configs: | ||
- | - targets: | ||
- | - 82.127.69.111: | ||
- | relabel_configs: | ||
- | - source_labels: | ||
- | target_label: | ||
- | - source_labels: | ||
- | target_label: | ||
- | - target_label: | ||
- | replacement: | ||
- | ``` | ||
- | |||
- | ### Autoriser le ping par blackbox | ||
- | |||
- | Vous avez l' | ||
- | |||
- | ``` | ||
- | ts=2023-03-09T17: | ||
- | ``` | ||
- | |||
- | & | ||
- | Pour que blackbox_exporter puisse exécuter des ping, il faut changer les capibilities du binary pour qu'il accède à la fonction. | ||
- | |||
- | - Se positionner dans ''/ | ||
- | |||
- | ``` | ||
- | cd / | ||
- | ``` | ||
- | |||
- | - Changer les capabilities du binary de blackbox : | ||
- | |||
- | ```bash | ||
- | setcap cap_net_raw+ep blackbox_exporter | ||
- | ``` | ||
- | |||
- | Avec ce paramètre, l' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Une fois la configuration validée, les services sont en ligne : | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Création des alertes | ||
- | |||
- | En se basant sur les modèles d' | ||
- | |||
- | - Créer un fichier dans ''/ | ||
- | |||
- | ``` | ||
- | touch / | ||
- | ``` | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | - Ajouter les règles | ||
- | |||
- | Elles viendront surveiller : | ||
- | |||
- | - Si une probe blackbox tombe | ||
- | - Si une probe prend du temps à répondre | ||
- | - Si une probe ne retourne pas une réponse HTTP entre 200 et 399 | ||
- | - Si un certificat exprire dans moins de 3 jours | ||
- | - Si une requête HTTP prend plus d'1 seconde | ||
- | - Si le ping prend plus d'1 seconde | ||
- | |||
- | ```yaml | ||
- | groups: | ||
- | - name: BlackboxGroup | ||
- | rules: | ||
- | - alert: BlackboxProbeFailed | ||
- | expr: probe_success == 0 | ||
- | for: 0m | ||
- | labels: | ||
- | severity: critical | ||
- | annotations: | ||
- | summary: Blackbox probe failed (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: BlackboxConfigurationReloadFailure | ||
- | expr: blackbox_exporter_config_last_reload_successful != 1 | ||
- | for: 0m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Blackbox configuration reload failure (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: BlackboxSlowProbe | ||
- | expr: avg_over_time(probe_duration_seconds[1m]) > 1 | ||
- | for: 1m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Blackbox slow probe (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: BlackboxProbeHttpFailure | ||
- | expr: probe_http_status_code <= 199 OR probe_http_status_code >= 400 | ||
- | for: 0m | ||
- | labels: | ||
- | severity: critical | ||
- | annotations: | ||
- | summary: Blackbox probe HTTP failure (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: BlackboxProbeSlowHttp | ||
- | expr: avg_over_time(probe_http_duration_seconds[1m]) > 1 | ||
- | for: 1m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Blackbox probe slow HTTP (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: BlackboxProbeSlowPing | ||
- | expr: avg_over_time(probe_icmp_duration_seconds[1m]) > 1 | ||
- | for: 1m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: Blackbox probe slow ping (instance {{ $labels.instance }}) | ||
- | description: | ||
- | ``` | ||
- | |||
- | On retrouve dans Prometheus toutes les alertes pour l' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Ajout du tableau dans Grafana | ||
- | |||
- | Il existe un tableau pour traiter les données de blackbox_exporter : | ||
- | |||
- | - *7587* (https:// | ||
- | |||
- | Il suffit donc de l' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Une fois le tableau importé, les valeurs sont affichées : | ||
- | |||
- | {{ wiki: | ||
- | |||
- | & | ||
- | Penser à autoriser les réponses aux ping dans le pare-feu windows ! | ||
- | |||
- | ``` | ||
- | netsh firewall set icmpsetting 8 | ||
- | ``` | ||
- | |||
- | # Agent de monitoring SQL : mysqld_exporter | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Il est possible de superviser des bases de données SQL avec le service Prometheus, l' | ||
- | |||
- | ## Installation de l' | ||
- | |||
- | ##### Sur la machine dont le serveur SQL est installé | ||
- | |||
- | - Création du groupe et de l' | ||
- | |||
- | ``` | ||
- | groupadd --system prometheus | ||
- | useradd -s / | ||
- | ``` | ||
- | |||
- | - Télécharger l' | ||
- | |||
- | Cette opération doit être effectuée sur les serveurs MySQL / MariaDB, qu'ils soient esclaves ou maîtres. Il se peut que vous deviez consulter la page Prometheus MySQL exporter releases pour connaître la dernière version, puis exporter la dernière version vers la variable VER comme indiqué ci-dessous : | ||
- | |||
- | - Télécharger la dernière version de l' | ||
- | |||
- | ``` | ||
- | curl -s https:// | ||
- | ``` | ||
- | |||
- | - Extraire et définir les permissions sur '' | ||
- | |||
- | (spécifier la bonne version à la place de *) | ||
- | |||
- | ``` | ||
- | tar xvf mysqld_exporter*.tar.gz | ||
- | mv mysqld_exporter-*.linux-amd64/ | ||
- | chmod +x / | ||
- | ``` | ||
- | |||
- | ## Créer les accès sur la base SQL | ||
- | |||
- | - Se connecter sur la BDD | ||
- | |||
- | ``` | ||
- | mysql -h localhost -u root -p | ||
- | ``` | ||
- | |||
- | - Créer l' | ||
- | |||
- | L' | ||
- | |||
- | ```sql | ||
- | CREATE USER ' | ||
- | GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO ' | ||
- | FLUSH PRIVILEGES; | ||
- | EXIT | ||
- | ``` | ||
- | |||
- | ## Configurer la base de données | ||
- | |||
- | - Éditer le fichier '' | ||
- | |||
- | ``` | ||
- | / | ||
- | ``` | ||
- | |||
- | ``` | ||
- | [client] | ||
- | user=mysqld_exporter | ||
- | password=Not24get | ||
- | ``` | ||
- | |||
- | - Changer le propriétaire du fichier de configuration | ||
- | |||
- | ``` | ||
- | chown root: | ||
- | ``` | ||
- | |||
- | ## Création du service | ||
- | |||
- | - Créer le fichier dans '' | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | ```bash | ||
- | [Unit] | ||
- | Description=Prometheus MySQL Exporter | ||
- | After=network.target | ||
- | User=prometheus | ||
- | Group=prometheus | ||
- | |||
- | [Service] | ||
- | Type=simple | ||
- | Restart=always | ||
- | ExecStart=/ | ||
- | --config.my-cnf / | ||
- | --collect.global_status \ | ||
- | --collect.info_schema.innodb_metrics \ | ||
- | --collect.auto_increment.columns \ | ||
- | --collect.info_schema.processlist \ | ||
- | --collect.binlog_size \ | ||
- | --collect.info_schema.tablestats \ | ||
- | --collect.global_variables \ | ||
- | --collect.info_schema.query_response_time \ | ||
- | --collect.info_schema.userstats \ | ||
- | --collect.info_schema.tables \ | ||
- | --collect.perf_schema.tablelocks \ | ||
- | --collect.perf_schema.file_events \ | ||
- | --collect.perf_schema.eventswaits \ | ||
- | --collect.perf_schema.indexiowaits \ | ||
- | --collect.perf_schema.tableiowaits \ | ||
- | --collect.slave_status \ | ||
- | --web.listen-address=10.192.43.11: | ||
- | |||
- | [Install] | ||
- | WantedBy=multi-user.target | ||
- | ``` | ||
- | |||
- | - Activer le service et vérifier son statut | ||
- | |||
- | ``` | ||
- | systemctl daemon-reload | ||
- | systemctl enable mysql_exporter | ||
- | systemctl start mysql_exporter | ||
- | ``` | ||
- | |||
- | ``` | ||
- | systemctl status mysql_exporter | ||
- | ``` | ||
- | |||
- | ## Ajout de l' | ||
- | |||
- | Dans le fichier ''/ | ||
- | |||
- | ```yaml | ||
- | scrape_configs: | ||
- | - job_name: ' | ||
- | static_configs: | ||
- | - targets: | ||
- | - 10.192.43.11: | ||
- | labels: | ||
- | alias: db1 | ||
- | |||
- | ``` | ||
- | |||
- | & | ||
- | Le serveur Prometheus doit être en mesure d' | ||
- | |||
- | Redémarrer le service '' | ||
- | |||
- | ## Création des alertes | ||
- | |||
- | En se basant sur les modèles d' | ||
- | |||
- | - Créer un fichier dans ''/ | ||
- | |||
- | ``` | ||
- | touch / | ||
- | ``` | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | - Ajouter les règles | ||
- | |||
- | Elles viendront surveiller : | ||
- | |||
- | - Si le serveur SQL a redémarré | ||
- | - Si il prend du temps à répondre | ||
- | - Si une requête prend trop de temps | ||
- | - Si il y a trop de connexions | ||
- | - Si le serveur SQL est DOWN | ||
- | |||
- | ```yaml | ||
- | groups: | ||
- | - name: MySQLGroup | ||
- | rules: | ||
- | - alert: MysqlDown | ||
- | expr: mysql_up == 0 | ||
- | for: 0m | ||
- | labels: | ||
- | severity: critical | ||
- | annotations: | ||
- | summary: MySQL down (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: MysqlTooManyConnections(> | ||
- | expr: max_over_time(mysql_global_status_threads_connected[1m]) / mysql_global_variables_max_connections * 100 > 80 | ||
- | for: 2m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: MySQL too many connections (> 80%) (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: MysqlHighThreadsRunning | ||
- | expr: max_over_time(mysql_global_status_threads_running[1m]) / mysql_global_variables_max_connections * 100 > 60 | ||
- | for: 2m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: MySQL high threads running (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: MysqlSlowQueries | ||
- | expr: increase(mysql_global_status_slow_queries[1m]) > 0 | ||
- | for: 2m | ||
- | labels: | ||
- | severity: warning | ||
- | annotations: | ||
- | summary: MySQL slow queries (instance {{ $labels.instance }}) | ||
- | description: | ||
- | - alert: MysqlRestarted | ||
- | expr: mysql_global_status_uptime < 60 | ||
- | for: 0m | ||
- | labels: | ||
- | severity: info | ||
- | annotations: | ||
- | summary: MySQL restarted (instance {{ $labels.instance }}) | ||
- | description: | ||
- | ``` | ||
- | |||
- | On retrouve dans Prometheus toutes les alertes pour le SQL | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Ajout du tableau dans Grafana | ||
- | |||
- | Il existe un tableau pour traiter les données de mysqld_exporter: | ||
- | |||
- | - *7362* https:// | ||
- | |||
- | Il suffit donc de l' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Une fois le tableau importé, les valeurs sont affichées : | ||
- | |||
- | {{ wiki: | ||
- | |||
- | # Agent de monitoring SNMP : snmp_exporter | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Le protocole SNMP **permet à une application de gestion de demander des informations provenant d'une unité gérée**. L' | ||
- | Cet exportateur est le moyen recommandé pour exposer les données SNMP dans un format que Prometheus peut intégrer. | ||
- | |||
- | Dans notre cas nous souhaitons monitorer un UPS de la marque Eaton en SNMP. | ||
- | |||
- | ## Installation de l' | ||
- | |||
- | #### Téléchargement de la dernière version | ||
- | |||
- | - Télécharger la dernière version de '' | ||
- | |||
- | ``` | ||
- | wget https:// | ||
- | ``` | ||
- | |||
- | - Extraire et définir les permissions sur '' | ||
- | |||
- | ``` | ||
- | tar xzf snmp_exporter-0.21.0.linux-amd64.tar.gz | ||
- | cd snmp_exporter-0.21.0.linux-amd64 | ||
- | cp ./ | ||
- | cp ./snmp.yml / | ||
- | cd / | ||
- | chmod +x / | ||
- | ``` | ||
- | |||
- | #### Création du service | ||
- | |||
- | - Créer le fichier dans '' | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | ```bash | ||
- | [Unit] | ||
- | Description=Prometheus SNMP Exporter Service | ||
- | After=network.target | ||
- | |||
- | [Service] | ||
- | Type=simple | ||
- | User=prometheus | ||
- | ExecStart=/ | ||
- | |||
- | [Install] | ||
- | WantedBy=multi-user.target | ||
- | ``` | ||
- | |||
- | - Activer le service et vérifier son statut | ||
- | |||
- | ``` | ||
- | systemctl daemon-reload | ||
- | systemctl enable snmp-exporter | ||
- | systemctl start snmp-exporter | ||
- | ``` | ||
- | |||
- | ``` | ||
- | systemctl status snmp-exporter | ||
- | ``` | ||
- | |||
- | & | ||
- | Le serveur web de snmp_exporter écoute sur le port '' | ||
- | Le protocole SNMP utilise les ports 160 et 161 en UDP pour communiquer, | ||
- | |||
- | ## Configuration de l' | ||
- | |||
- | - Editer le fichier de configuration de prometheus pour ajouter l'UPS en target | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | ```yaml | ||
- | - job_name: ' | ||
- | scrape_interval: | ||
- | scrape_timeout: | ||
- | # SNMP device. | ||
- | metrics_path: | ||
- | params: | ||
- | module: [rfc1628_ups] #MIB pour l'UPS ; que l'ont va générer après | ||
- | static_configs: | ||
- | - targets: | ||
- | - 10.192.20.10 #adresse ip de l'UPS | ||
- | relabel_configs: | ||
- | - source_labels: | ||
- | target_label: | ||
- | - source_labels: | ||
- | target_label: | ||
- | - target_label: | ||
- | replacement: | ||
- | ``` | ||
- | |||
- | - Vérifier la configuration du fichier Prometheus | ||
- | |||
- | ``` | ||
- | promtool check config / | ||
- | ``` | ||
- | |||
- | ### Génération du fichier de configuration avec des MIBS personnelles | ||
- | |||
- | Le plugin '' | ||
- | En effet, le plugin fonctionne par module, un module correspond à une MIB. | ||
- | Ce générateur de configuration utilise NetSNMP pour analyser les MIB, et génère des configurations pour le snmp_exporter qui les utilise. | ||
- | |||
- | - Installation des dépendances | ||
- | |||
- | ``` | ||
- | apt-get install unzip build-essential libsnmp-dev | ||
- | ``` | ||
- | |||
- | - Cloner le repo | ||
- | |||
- | ``` | ||
- | git clone https:// | ||
- | ``` | ||
- | |||
- | - Se placer dans le repo github de '' | ||
- | |||
- | ``` | ||
- | cd snmp_exporter/ | ||
- | ``` | ||
- | |||
- | - Ajout des mibs dans le dossier ''/ | ||
- | |||
- | Nous nous basons sur la MIB [RFC1628UPS-MIB](https:// | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Pack de MIBS : [eaton.com](https:// | ||
- | |||
- | ``` | ||
- | wget https:// | ||
- | mv RFC1628UPS-MIB mibs | ||
- | ``` | ||
- | |||
- | - Modification du fichier '' | ||
- | |||
- | ``` | ||
- | nano generator.yml | ||
- | ``` | ||
- | |||
- | Ajouter à la toute fin du fichier : | ||
- | |||
- | ```yaml | ||
- | rfc1628_ups: | ||
- | version: 1 | ||
- | walk: | ||
- | - sysUpTime | ||
- | - interfaces | ||
- | # Use OIDs to avoid conflict with APCUPS if using with prometheus' | ||
- | # Comment out anything you don't want prometheus to query | ||
- | - 1.3.6.1.2.1.33.1.1 # upsIdent | ||
- | - 1.3.6.1.2.1.33.1.2 # upsBattery | ||
- | - 1.3.6.1.2.1.33.1.3 # upsInput | ||
- | - 1.3.6.1.2.1.33.1.4 # upsOutput | ||
- | - 1.3.6.1.2.1.33.1.5 # upsBypass | ||
- | - 1.3.6.1.2.1.33.1.6 # upsAlarm | ||
- | - 1.3.6.1.2.1.33.1.7 # upsTest | ||
- | - 1.3.6.1.2.1.33.1.8 # upsControl | ||
- | - 1.3.6.1.2.1.33.1.9 # upsConfig | ||
- | lookups: | ||
- | - source_indexes: | ||
- | # Use OID to avoid conflict with ifDescr in other modules | ||
- | lookup: 1.3.6.1.2.1.2.2.1.2 | ||
- | drop_source_indexes: | ||
- | overrides: | ||
- | ifType: | ||
- | type: EnumAsInfo | ||
- | upsBatteryStatus: | ||
- | type: EnumAsStateSet | ||
- | upsOutputSource: | ||
- | type: EnumAsStateSet | ||
- | upsTestResultsSummary: | ||
- | type: EnumAsStateSet | ||
- | upsShutdownType: | ||
- | type: EnumAsStateSet | ||
- | upsAutoRestart: | ||
- | type: EnumAsStateSet | ||
- | upsConfigAudibleStatus: | ||
- | type: EnumAsStateSet | ||
- | ``` | ||
- | |||
- | - Compiler le générateur | ||
- | |||
- | ``` | ||
- | make generator mibs | ||
- | ``` | ||
- | |||
- | - Générer le fichier avec le générateur de fichier '' | ||
- | |||
- | ``` | ||
- | make generate | ||
- | ``` | ||
- | |||
- | - Copie du fichier généré dans '' | ||
- | |||
- | ``` | ||
- | cp snmp.yml / | ||
- | ``` | ||
- | |||
- | - Redémarrer le service | ||
- | |||
- | ``` | ||
- | systemctl restart snmp-exporter | ||
- | ``` | ||
- | |||
- | ### Essais de récupération des traps SNMP | ||
- | |||
- | & | ||
- | Pensez à activer le SNMP v1 et de définir la communauté sur '' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Rendez vous sur '' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Exécuter et vous devez avoir des metrics de l' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ### Ajout et test de requêtage dans Prometheus | ||
- | |||
- | Nous avons précedemment modifier le fichier '' | ||
- | |||
- | Vous pouvez désormais le redémarrer : | ||
- | |||
- | ``` | ||
- | systemctl restart prometheus | ||
- | ``` | ||
- | |||
- | Il doit désormais apparaître dans les targets l'UPS : | ||
- | |||
- | {{ wiki: | ||
- | |||
- | #### Rédaction d'une requête PromQL de test : | ||
- | |||
- | Nous souhaitons calculer la puissance en Watts de sorties de l' | ||
- | |||
- | '' | ||
- | |||
- | Résultat : la réponse est **289W** en instantané. | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Création d' | ||
- | |||
- | Nous avons vu précedemment comment faire une requête PromQL pour aller chercher une valeur précise. | ||
- | Nous allons réutiliser ces techniques pour générer des règles. | ||
- | |||
- | - Créer un fichier dans ''/ | ||
- | |||
- | ``` | ||
- | touch / | ||
- | ``` | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | - Ajouter les règles | ||
- | |||
- | Elles viendront surveiller : | ||
- | |||
- | - Si il y a une alarme sur l' | ||
- | - Si la charge de l' | ||
- | - Si le temps restant sur batterie est inférieur à 25 minutes | ||
- | - Si la tension des batteries sont inférieurs à 75V | ||
- | - Si la tension de sortie est supérieur à 246V | ||
- | |||
- | ```yaml | ||
- | groups: | ||
- | - name: UpsGroup | ||
- | rules: | ||
- | - alert: UpsAlertsDefault | ||
- | expr: upsAlarmsPresent == 2 | ||
- | for: 0s | ||
- | labels: | ||
- | severity: critical | ||
- | annotations: | ||
- | summary: Défaut onduleur | ||
- | description: | ||
- | - alert: UpsAlertsLoad | ||
- | expr: upsOutputPercentLoad > 11 | ||
- | for: 2m | ||
- | labels: | ||
- | severity: critical | ||
- | annotations: | ||
- | summary: Défaut puissance onduleur | ||
- | description: | ||
- | - alert: UpsAlertsRemainingTime | ||
- | expr: upsEstimatedMinutesRemaining < 25 | ||
- | for: 0s | ||
- | labels: | ||
- | severity: critical | ||
- | annotations: | ||
- | summary: Défaut onduleur temps restant secteur | ||
- | description: | ||
- | - alert: UpsAlertsBatteryVoltage | ||
- | expr: upsBatteryVoltage / 10 < 75 | ||
- | for: 0s | ||
- | labels: | ||
- | severity: critical | ||
- | annotations: | ||
- | summary: Défaut onduleur tension batterie | ||
- | description: | ||
- | - alert: UpsAlertsOutputVoltage | ||
- | expr: upsOutputVoltage > 246 | ||
- | for: 0s | ||
- | labels: | ||
- | severity: critical | ||
- | annotations: | ||
- | summary: Défaut onduleur tension secteur sortie | ||
- | description: | ||
- | ``` | ||
- | |||
- | On retrouve dans Prometheus toutes les alertes pour l' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Nous verrons par la suite comment créer un tableau sur mesure pour traiter les données. | ||
- | |||
- | # Création d'un tableau Grafana sur mesure | ||
- | |||
- | La documentation de Grafana est disponible ici : https:// | ||
- | |||
- | ## Définir le besoin des données | ||
- | |||
- | Nous souhaitons récupérer un maximum d' | ||
- | |||
- | Comme par exemple : | ||
- | |||
- | - La tension d' | ||
- | - La fréquence d' | ||
- | - La charge de l' | ||
- | - Calculer le coût moyen de l' | ||
- | |||
- | #### Créer un nouveau tableau vierge | ||
- | |||
- | - Créer un nouveau tableau vierge depuis Grafana | ||
- | |||
- | {{ wiki: | ||
- | |||
- | - Ajouter le premier '' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ## Rédiger les requêtes PromQL | ||
- | |||
- | Pour exemple nos souhaitons avoir : | ||
- | |||
- | - La consommation en direct de l' | ||
- | - La consommation en kWh | ||
- | - Le coût moyen par mois | ||
- | |||
- | #### La consommation en direct de l' | ||
- | |||
- | '' | ||
- | |||
- | ``` | ||
- | upsOutputVoltage * upsOutputCurrent / 10 | ||
- | ``` | ||
- | |||
- | Puis choisir l' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | #### La consommation en kWh | ||
- | |||
- | '' | ||
- | |||
- | ``` | ||
- | (24 * 365 * (upsOutputVoltage * upsOutputCurrent / 10)) / 1000 | ||
- | ``` | ||
- | |||
- | #### Le coût moyen par mois | ||
- | |||
- | En prenant compte que le prix moyen du kWh fournit par EDF est de 0,18 centimes. | ||
- | |||
- | ``` | ||
- | (((24 * 365 * (upsOutputVoltage * upsOutputCurrent / 10)) / 1000 ) * 0.18 ) / 12 | ||
- | ``` | ||
- | |||
- | ## Essais et exemple | ||
- | |||
- | Après avoir ajouter toutes les requêtes dans les '' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | # Supervision active : prometheus\_am\_executor | ||
- | |||
- | Prometheus-am-executor est un serveur HTTP qui reçoit des alertes du Prometheus Alertmanager et exécute une commande donnée avec les détails de l' | ||
- | |||
- | ## Installation de l' | ||
- | |||
- | ### Installation des dépendances | ||
- | |||
- | - Installation de git : | ||
- | |||
- | ``` | ||
- | apt install git -y | ||
- | ``` | ||
- | |||
- | - Installation de GO | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Retrouvez la doc de GO ici : https:// | ||
- | |||
- | *Version actuelle de GO : **1.20.2*** | ||
- | |||
- | ``` | ||
- | wget https:// | ||
- | ``` | ||
- | |||
- | - **Supprimez toute installation antérieure de Go** en supprimant le dossier / | ||
- | |||
- | ``` | ||
- | rm -rf / | ||
- | ``` | ||
- | |||
- | **Ne pas décompressez l' | ||
- | |||
- | - Ajoutez / | ||
- | |||
- | Vous pouvez le faire en ajoutant la ligne suivante à votre $HOME/ | ||
- | |||
- | ``` | ||
- | export PATH=$PATH:/ | ||
- | ``` | ||
- | |||
- | - Tester votre version de GO | ||
- | |||
- | ``` | ||
- | go version | ||
- | ``` | ||
- | |||
- | ### Installation de Prometheus AM executor | ||
- | |||
- | - Cloner le repo de l' | ||
- | |||
- | ``` | ||
- | git clone https:// | ||
- | ``` | ||
- | |||
- | - Télécharger les dépendances | ||
- | |||
- | ``` | ||
- | go test -count 1 -v ./... | ||
- | ``` | ||
- | |||
- | - Compiler le binary avec GO | ||
- | |||
- | ``` | ||
- | go build | ||
- | ``` | ||
- | |||
- | - Copier le binary dans ''/ | ||
- | |||
- | ``` | ||
- | cp prometheus-am-executor / | ||
- | chmod +x / | ||
- | ``` | ||
- | |||
- | - Créer le répertoire de configuration | ||
- | |||
- | ``` | ||
- | mkdir / | ||
- | ``` | ||
- | |||
- | #### Création du service | ||
- | |||
- | - Créer le fichier dans '' | ||
- | |||
- | ``` | ||
- | nano / | ||
- | ``` | ||
- | |||
- | ```bash | ||
- | [Unit] | ||
- | Description=Prometheus script executor | ||
- | Documentation=https:// | ||
- | |||
- | [Service] | ||
- | Restart=always | ||
- | ExecStart=/ | ||
- | ExecReload=/ | ||
- | TimeoutStopSec=20s | ||
- | SendSIGKILL=no | ||
- | |||
- | [Install] | ||
- | WantedBy=multi-user.target | ||
- | ``` | ||
- | |||
- | - Activer le service et vérifier son statut | ||
- | |||
- | ``` | ||
- | systemctl daemon-reload | ||
- | systemctl enable prometheus-am-executor | ||
- | systemctl start prometheus-am-executor | ||
- | ``` | ||
- | |||
- | ``` | ||
- | systemctl status prometheus-am-executor | ||
- | ``` | ||
- | |||
- | Une erreur sera présente car le fichier configuration n'est pas encore créé. | ||
- | |||
- | ## Configuration de l' | ||
- | |||
- | ### Créer le fichier de configuration d'AM executor | ||
- | |||
- | ``` | ||
- | nano / | ||
- | |||
- | ``` | ||
- | |||
- | ```yaml | ||
- | #port d' | ||
- | listen_address: | ||
- | # Display more output | ||
- | verbose: true | ||
- | commands: | ||
- | - cmd: / | ||
- | match_labels: | ||
- | " | ||
- | notify_on_failure: | ||
- | resolved_signal: | ||
- | ignore_resolved: | ||
- | ``` | ||
- | |||
- | Nous pouvons redémarrer le service '' | ||
- | |||
- | ``` | ||
- | systemctl restart prometheus-am-executor | ||
- | ``` | ||
- | |||
- | Avec la commande '' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ### Ajout dans le service Alertmanager | ||
- | |||
- | - Rajouter dans les routes | ||
- | |||
- | ```yaml | ||
- | - receiver: ' | ||
- | match_re: | ||
- | severity: critical | ||
- | continue: true | ||
- | ``` | ||
- | |||
- | - Ajouter dans les receivers | ||
- | |||
- | ```yaml | ||
- | - name: ' | ||
- | webhook_configs: | ||
- | - url: ' | ||
- | send_resolved: | ||
- | ``` | ||
- | |||
- | - Redémarrer le service Alertmanager | ||
- | |||
- | ``` | ||
- | systemctl restart alertmanager | ||
- | ``` | ||
- | |||
- | ## Rédaction d'un script d' | ||
- | |||
- | & | ||
- | Rappel : A noter que ce script s' | ||
- | |||
- | Créer le fichier '' | ||
- | |||
- | ```bash | ||
- | touch am-executor_hook.sh | ||
- | chmod a+x am-executor_hook.sh | ||
- | ``` | ||
- | |||
- | Selon la documention de '' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ### Execution d'une commande sur une machine distante | ||
- | |||
- | Dans notre exemple nous souhaitons redémarrer le service '' | ||
- | |||
- | #### Ajout des clés SSH sur les machines | ||
- | |||
- | Documentation : https:// | ||
- | |||
- | ##### Sur le serveur de supervision | ||
- | |||
- | - Générer la clé SSH | ||
- | |||
- | ``` | ||
- | ssh-keygen | ||
- | ``` | ||
- | |||
- | - Copier la clé sur le serveur distant : | ||
- | |||
- | ``` | ||
- | ssh-copy-id -i ~/ | ||
- | ``` | ||
- | |||
- | ##### Sur le serveur BDD | ||
- | |||
- | - Générer la clé SSH | ||
- | |||
- | ``` | ||
- | ssh-keygen | ||
- | ``` | ||
- | |||
- | - Copier la clé sur le serveur distant : | ||
- | |||
- | ``` | ||
- | ssh-copy-id -i ~/ | ||
- | ``` | ||
- | |||
- | - Test de l' | ||
- | |||
- | ``` | ||
- | ssh [email protected] | ||
- | ``` | ||
- | |||
- | {{ wiki: | ||
- | |||
- | #### Modification du script | ||
- | |||
- | La commande `'ssh [email protected] ' | ||
- | |||
- | ```bash | ||
- | #!/bin/bash | ||
- | # logger toutes les variables dans un fichier log avec un timecode | ||
- | touch executor.log | ||
- | echo " | ||
- | echo $AMX_RECEIVER >> executor.log | ||
- | echo $AMX_STATUS >> executor.log | ||
- | echo $AMX_EXTERNAL_URL >> executor.log | ||
- | echo $AMX_LABEL_alertname >> | ||
- | echo " | ||
- | Instance=$(echo $AMX_LABEL_instance| cut -f1 -d":" | ||
- | echo "" | ||
- | |||
- | BDD_HOSTNAME=" | ||
- | |||
- | if [[ " | ||
- | then | ||
- | #écrire la commande à exécuter ici | ||
- | |||
- | ssh root@$BDD_HOSTNAME ' | ||
- | |||
- | else | ||
- | echo "Label is different, ${AMX_LABEL_alertname}" | ||
- | fi | ||
- | ``` | ||
- | |||
- | #### Essais de déclenchement | ||
- | |||
- | Sur la VM de BDD couper les services '' | ||
- | |||
- | ``` | ||
- | systemctl stop mariadb* | ||
- | ``` | ||
- | |||
- | {{ wiki: | ||
- | |||
- | Vérifier le status de prometheus-am-executor : | ||
- | |||
- | ``` | ||
- | systemctl status prometheus-am-executor | ||
- | ``` | ||
- | |||
- | {{ wiki: | ||
- | |||
- | La commande est bien exécutée et le serveur de BDD est de nouveau en ligne | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ### Execution d'une requête cURL pour appeler une API | ||
- | |||
- | Dans une [autre documention](/ | ||
- | |||
- | Suivant la [documentation de RaspiSMS](https:// | ||
- | |||
- | ```bash | ||
- | curl -X POST http:// | ||
- | ``` | ||
- | |||
- | On passe dedans toutes les variables qui nous intéresse afin d' | ||
- | |||
- | {{ wiki: | ||
- | |||
- | # Conclusion | ||
- | |||
- | Il existe plein d' | ||
- | |||
- | https:// | ||
- | |||
- | Tous les objectifs que nous voulions pour notre solution de monitoring ont été atteints. | ||
- | Grafana et Prometheus sont des outils libres et gratuit, cela les rends beaucoup plus accessible pour les TPE et PME. | ||
- | Il existe une version Enterprise de Grafana qui rajoute des moyens d' | ||
- | Ici, il est nullement nécessaire de financer une licence, la version OSS répond parfaitement au besoin. | ||
- | |||
- | {{ wiki: | ||
- | ;#; | ||
- | *Infrastructure finale de supervision* | ||
- | ;#; | ||
- | |||
- | # Mes sources | ||
- | |||
- | 1. https:// | ||
- | 2. https:// | ||
- | 3. https:// | ||
- | |||
- | ### Prometheus | ||
- | |||
- | 1. https:// | ||
- | 2. https:// | ||
- | 3. https:// | ||
- | 4. https:// | ||
- | |||
- | ### Grafana | ||
- | |||
- | 1. https:// | ||
- | 2. https:// | ||
- | 3. https:// | ||
- | 4. https:// | ||
- | 5. http:// | ||
- | 6. https:// | ||
- | 7. https:// | ||
- | 8. https:// | ||
- | 9. https:// | ||
- | |||
- | #### Tableaux utilisés : | ||
- | |||
- | - https:// | ||
- | - https:// | ||
- | - https:// | ||
- | |||
- | ### node_exporter | ||
- | |||
- | 1. https:// | ||
- | 2. https:// | ||
- | 3. https:// | ||
- | |||
- | ### windows_exporter | ||
- | |||
- | 1. https:// | ||
- | 2. https:// | ||
- | |||
- | ### pve_exporter | ||
- | |||
- | 1. https:// | ||
- | 2. https:// | ||
- | |||
- | ### Prometheus Blackbox | ||
- | |||
- | 1. https:// | ||
- | 2. https:// | ||
- | 3. https:// | ||
- | 4. https:// | ||
- | |||
- | ### Prometheus SQL | ||
- | |||
- | 1. https:// | ||
- | |||
- | ### Prometheus SNMP | ||
- | |||
- | 1. https:// | ||
- | 2. https:// | ||
- | 3. https:// | ||
- | 4. https:// | ||
- | 5. https:// | ||
- | 6. [https:// | ||
- | 7. [https:// | ||
- | 8. https:// | ||
- | 9. https:// | ||
- | 10. https:// | ||
- | 11. https:// | ||
- | |||
- | ### Pour aller plus loin... | ||
- | |||
- | - agent prometheus pour mesurer la débit du lien Internet | ||
- | |||
- | 1. https:// | ||
- | |||
- | - extinction automatique via surveillance d' | ||
- | |||
- | 1. https:// | ||
- | 2. [https:// | ||
- | |||
- | ### Que superviser ? | ||
- | |||
- | 1. Les **serveurs** : Les serveurs sont l'un des éléments les plus critiques de toute infrastructure informatique. Il est donc essentiel de superviser leur état de santé, leur charge de travail, leurs performances et leurs temps de réponse pour garantir leur disponibilité et leur bon fonctionnement. | ||
- | | ||
- | 2. **Les réseaux** : La supervision des réseaux permet de s' | ||
- | | ||
- | 3. **Les bases de données** : Les bases de données sont souvent le cœur de l' | ||
- | | ||
- | 4. **Les applications** : Les applications sont souvent les interfaces les plus visibles pour les utilisateurs finaux. La supervision des applications peut inclure la surveillance de leur temps de réponse, de leur disponibilité et de leur utilisation des ressources. | ||
- | | ||
- | 5. **Les périphériques** : Les périphériques tels que les imprimantes, | ||
- | | ||
- | |||
- | ### Pourquoi le duo Grafana/ | ||
- | |||
- | **Prometheus** est un logiciel de supervision open-source créé par SoundCloud. En 2013, SoundCloud a décidé d' | ||
- | |||
- | Prometheus, écrit en *GO*, s' | ||
- | |||
- | Il existe plusieurs autres solutions de supervision sur le marché : | ||
- | |||
- | - Zabbix ; | ||
- | - Nagios ; | ||
- | - Centreon ; | ||
- | - Sensu ; | ||
- | |||
- | Mais sont généralement assez couteuses à déployer. | ||
- | |||
- | **Grafana** est un logiciel Open Source pour la visualisation et la supervision d'une infrastructure. Ce logiciel propose une connexion native à **Prometheus** et propose une liste de dashboards pré-générés pour récupérer les informations en provenance de **Prometheus**. | ||
- | |||
- | #### Comparaison avec Kibana, une alternative à Grafana : | ||
- | |||
- | La principale nuance est l' | ||
- | **Grafana** prends en charge plusieurs autres méthodes de stlsockage de metrics. (basé sur les **metrics**) | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ### Prérequis | ||
- | |||
- | Nous considérons que vous avez déjà montés plusieurs serveurs afin de pouvoir les surveiller. | ||
- | |||
- | Nous considérons que vous êtes équipé de cette manière : | ||
- | - Une VM sous Debian 11 vierge **[Grafana/ | ||
- | - Une VM sous Debian 11 vierge **[Le serveur à monitorer]** | ||
- | |||
- | Les allocations de matériel (CPU/ | ||
- | |||
- | Pour le duo **Grafana/ | ||
- | - *2GB* de ram | ||
- | - *2* cœurs de CPU | ||
- | - *20GB* d' | ||
- | - *Debian 11* | ||
- | |||
- | Nos IP pour notre infrastructure seront : | ||
- | - [Grafana]: **10.192.43.12** (*:3000 pour le port WEB*) | ||
- | - [Supervision] : **10.192.43.13** (*Le serveur à surveiller*) | ||
- | |||
- | Mot de passe par défaut sur toutes les sessions : **Not24get** | ||
- | |||
- | Rappel des deux commandes essentiels : | ||
- | - '' | ||
- | - '' | ||
- | |||
- | <WRAP center round tip 60%> | ||
- | Ajouter les deux machines dans un logiciel tel que mRemoteNG pour faciliter l' | ||
# Installation de Prometheus | # Installation de Prometheus | ||
Ligne 2514: | Ligne 129: | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
La commande vient directement chercher la dernière version de Prometheus, il n'est pas nécessaire de renseigner la version. | La commande vient directement chercher la dernière version de Prometheus, il n'est pas nécessaire de renseigner la version. | ||
+ | </ | ||
```bash | ```bash | ||
Ligne 2541: | Ligne 157: | ||
chown -R prometheus: | chown -R prometheus: | ||
``` | ``` | ||
- | + | ### Copie des fichiers | |
- | ### Copie des fichiers | + | |
``` | ``` | ||
Ligne 2551: | Ligne 166: | ||
### Ajout au démarrage automatique | ### Ajout au démarrage automatique | ||
- | - Création du service | + | - Création du service |
``` | ``` | ||
Ligne 2557: | Ligne 172: | ||
``` | ``` | ||
- | - Ajouter la configuration dans le fichier de service | + | - Ajouter la configuration dans le fichier de service |
```bash | ```bash | ||
Ligne 2607: | Ligne 222: | ||
- Autoriser le port 9090 | - Autoriser le port 9090 | ||
- | `ufw allow 9090` | + | ```ufw allow 9090``` |
## Utilisation de Prometheus derrière un Firewall | ## Utilisation de Prometheus derrière un Firewall | ||
Ligne 2613: | Ligne 228: | ||
{{ wiki: | {{ wiki: | ||
- | Pour superviser une infrastructure complexe qui comporte plusieurs niveaux d' | + | Pour superviser une infrastructure complexe qui comporte plusieurs niveaux d' |
- | Le *Proxy* | + | Le _Proxy_ |
- | - Le proxy qui s' | + | - |
- | - L' | + | - |
L' | L' | ||
- | - Comme standalone serveur ; | + | - |
- | - Embarqué dans un autre serveur ; | + | - |
- | - Comme simple Agent Java. | + | - |
- | Un *proxy* | + | Un _proxy_ |
# Installation des agents sur les clients | # Installation des agents sur les clients | ||
Ligne 2632: | Ligne 247: | ||
## Fonctionnement mode Pull / Push | ## Fonctionnement mode Pull / Push | ||
- | Par défaut, Prometheus fonctionne en mode *Pull*, c'est à dire que le serveur interroge à intervalle régulier les instances clientes sur lesquelles les *Exporters* | + | Par défaut, Prometheus fonctionne en mode _Pull_, c'est à dire que le serveur interroge à intervalle régulier les instances clientes sur lesquelles les _Exporters_ |
- | Il est possible, quand cela s' | + | Il est possible, quand cela s' |
## Sur Linux : node_exporter | ## Sur Linux : node_exporter | ||
Ligne 2646: | Ligne 261: | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
La commande vient directement chercher la dernière version de node_exporter, | La commande vient directement chercher la dernière version de node_exporter, | ||
+ | </ | ||
```bash | ```bash | ||
Ligne 2656: | Ligne 272: | ||
tar -xvf node_exporter-*.linux-amd64.tar.gz | tar -xvf node_exporter-*.linux-amd64.tar.gz | ||
``` | ``` | ||
+ | |||
- Copier les fichiers dans le répertoire '' | - Copier les fichiers dans le répertoire '' | ||
Ligne 2732: | Ligne 348: | ||
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
Plusieurs arguments sont disponibles sur la documentation de [windows_exporter](https:// | Plusieurs arguments sont disponibles sur la documentation de [windows_exporter](https:// | ||
+ | </ | ||
```powershell | ```powershell | ||
Ligne 2786: | Ligne 403: | ||
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
- | Aucune erreur n'a été détectée. | + | Aucune erreur n'a été détectée. |
Pensez à utiliser cette commande dès qu'une modification est faite dans le fichier config. | Pensez à utiliser cette commande dès qu'une modification est faite dans le fichier config. | ||
+ | </ | ||
### Appliquer la configuration | ### Appliquer la configuration | ||
Ligne 2807: | Ligne 425: | ||
Sur l' | Sur l' | ||
- | Dans le menu '' | + | Dans le menu '' |
{{ wiki: | {{ wiki: | ||
Ligne 2815: | Ligne 433: | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
Utilisez l' | Utilisez l' | ||
+ | </ | ||
+ | |||
{{ wiki: | {{ wiki: | ||
Ligne 2821: | Ligne 440: | ||
Toutes les machines sont désormais dans Prometheus. | Toutes les machines sont désormais dans Prometheus. | ||
La configuration de Prometheus reste assez simple, le traitement des données est effectué par Grafana. | La configuration de Prometheus reste assez simple, le traitement des données est effectué par Grafana. | ||
+ | </ | ||
# Installation de Grafana | # Installation de Grafana | ||
Ligne 2867: | Ligne 487: | ||
systemctl daemon-reload | systemctl daemon-reload | ||
``` | ``` | ||
- | |||
``` | ``` | ||
systemctl enable grafana-server | systemctl enable grafana-server | ||
Ligne 2893: | Ligne 512: | ||
- La BDD qui contient les configurations est dans ''/ | - La BDD qui contient les configurations est dans ''/ | ||
- Les autres fichiers (html/ | - Les autres fichiers (html/ | ||
+ | |||
+ | </ | ||
### Accéder au serveur web | ### Accéder au serveur web | ||
Ligne 2921: | Ligne 542: | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
Si votre installation de Prometheus est en local, c’est à dire sur la même machine qui exécute Grafana vous devez renseigner '' | Si votre installation de Prometheus est en local, c’est à dire sur la même machine qui exécute Grafana vous devez renseigner '' | ||
+ | </ | ||
Terminer en validant la configuration, | Terminer en validant la configuration, | ||
Ligne 2945: | Ligne 567: | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
Il est aussi possible de coller un code '' | Il est aussi possible de coller un code '' | ||
+ | </ | ||
- Renseigner la source de données | - Renseigner la source de données | ||
Ligne 2967: | Ligne 590: | ||
# Ajout d'un AlertManager | # Ajout d'un AlertManager | ||
- | Dans Grafana, les alertes sont directement liées au graphiques, c’est la raison pour laquelle nous créons un tableau de bord par serveur. | + | Dans Grafana, les alertes sont directement liées au graphiques, c’est la raison pour laquelle nous créons un tableau de bord par serveur. |
- | Vous devez ensuite définir le seuil critique. Par exemple 75 % pour l’utilisation disque. | + | Vous devez ensuite définir le seuil critique. Par exemple 75 % pour l’utilisation disque. |
Une fois votre alerte en place, vous devriez avoir un cœur s’affichant à côté du titre de votre graphique, affiché en vert quand tout va bien et en rouge en cas d’alerte. | Une fois votre alerte en place, vous devriez avoir un cœur s’affichant à côté du titre de votre graphique, affiché en vert quand tout va bien et en rouge en cas d’alerte. | ||
Prometheus gère aussi les alertes avec un plugin à installer. | Prometheus gère aussi les alertes avec un plugin à installer. | ||
Ligne 2998: | Ligne 621: | ||
{{ wiki: | {{ wiki: | ||
- | La charge d'un nœud change constamment, | + | La charge d'un nœud change constamment, |
- | Les règles d' | + | Les règles d' |
- | Lorsqu' | + | Lorsqu' |
Lors des cycles d' | Lors des cycles d' | ||
## Ajout des règles pour Prometheus | ## Ajout des règles pour Prometheus | ||
+ | |||
Toujours dans le répertoire ''/ | Toujours dans le répertoire ''/ | ||
Ligne 3027: | Ligne 651: | ||
``` | ``` | ||
- | ## Installation d'Alertmanager | + | ## Installation d'AlertManager |
- Création du compte de service | - Création du compte de service | ||
Ligne 3038: | Ligne 662: | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
- | Vérifier la dernière version sur : https:// | + | Vérifier la dernière version sur : [https:// |
+ | </ | ||
- Définir une variable provisoire pour le wget | - Définir une variable provisoire pour le wget | ||
Ligne 3107: | Ligne 732: | ||
systemctl daemon-reload | systemctl daemon-reload | ||
``` | ``` | ||
- | |||
``` | ``` | ||
systemctl enable --now alertmanager | systemctl enable --now alertmanager | ||
Ligne 3142: | Ligne 766: | ||
- static_configs: | - static_configs: | ||
- targets: | - targets: | ||
- | | + | |
# Load rules once and periodically evaluate them according to the global evaluation_interval. | # Load rules once and periodically evaluate them according to the global evaluation_interval. | ||
Ligne 3152: | Ligne 776: | ||
## Création de la première règle | ## Création de la première règle | ||
+ | |||
Dans le répertoire ''/ | Dans le répertoire ''/ | ||
Ligne 3180: | Ligne 805: | ||
#### Vous pouvez retrouver ici plusieurs modèles de règles pour prometheus : | #### Vous pouvez retrouver ici plusieurs modèles de règles pour prometheus : | ||
- | https:// | + | [https:// |
Il suffit de copier coller les règles dans un fichier '' | Il suffit de copier coller les règles dans un fichier '' | ||
Ligne 3207: | Ligne 832: | ||
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
Aide pour la création du fichier de configuration : [prometheus.io/ | Aide pour la création du fichier de configuration : [prometheus.io/ | ||
+ | </ | ||
La manière la plus connue de prévenir d'un événement est via l' | La manière la plus connue de prévenir d'un événement est via l' | ||
Il existe d' | Il existe d' | ||
- | + | ||
- | - Via SMS (dans le cas de graves alertes) | + | - Via SMS (dans le cas de graves alertes) |
- | - Via Slack (beaucoup utilisé dans les entreprises) | + | - Via Slack (beaucoup utilisé dans les entreprises) |
- | - Via Discord (dans un channel) | + | - Via Discord (dans un channel) |
### Trigger une notification par mail | ### Trigger une notification par mail | ||
Ligne 3244: | Ligne 870: | ||
email_configs: | email_configs: | ||
- to: ' | - to: ' | ||
+ | hello: ' | ||
+ | # important de préciser le parametre hello, lors de la commande EHLO il faut un FQDN | ||
from: ' | from: ' | ||
smarthost: 10.192.44.11: | smarthost: 10.192.44.11: | ||
Ligne 3297: | Ligne 925: | ||
## Vérifier le serveur d' | ## Vérifier le serveur d' | ||
- | Un serveur web écoute sur le port '' | + | Un serveur web écoute sur le port '' |
- | `http:// | + | ```http:// |
{{ wiki: | {{ wiki: | ||
Ligne 3321: | Ligne 949: | ||
Elles viendront surveiller : | Elles viendront surveiller : | ||
- | + | ||
- | - Si une machine à moins de 10% de ram disponible pendant plus de 2 minutes | + | - Si une machine à moins de 10% de ram disponible pendant plus de 2 minutes |
- | - Si les interfaces réseau de l' | + | - Si les interfaces réseau de l' |
- | - Si les interfaces réseau de l' | + | - Si les interfaces réseau de l' |
- | - Si le disque lit trop de données (> 50 MB/s) pendant 5 minutes | + | - Si le disque lit trop de données (> 50 MB/s) pendant 5 minutes |
- | - Si le disque écrit trop de données (> 50 MB/s) pendant 2 minutes | + | - Si le disque écrit trop de données (> 50 MB/s) pendant 2 minutes |
- | - Si il reste moins de 10% d' | + | - Si il reste moins de 10% d' |
- | - Si le processeur de l' | + | - Si le processeur de l' |
```yaml | ```yaml | ||
Ligne 3413: | Ligne 1041: | ||
Elles viendront surveiller : | Elles viendront surveiller : | ||
- | + | ||
- | - Si le disque dur de l' | + | - Si le disque dur de l' |
- | - Si la ram de l' | + | - Si la ram de l' |
- | - Si le processeur de l' | + | - Si le processeur de l' |
```yaml | ```yaml | ||
Ligne 3501: | Ligne 1129: | ||
/ | / | ||
``` | ``` | ||
- | |||
```yaml | ```yaml | ||
modules: | modules: | ||
Ligne 3560: | Ligne 1187: | ||
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
Le service écoute sur le port 9115 | Le service écoute sur le port 9115 | ||
+ | </ | ||
{{ wiki: | {{ wiki: | ||
Ligne 3566: | Ligne 1194: | ||
Dans cet exemple nous allons monitorer plusieurs terminaisons : | Dans cet exemple nous allons monitorer plusieurs terminaisons : | ||
- | + | ||
- | - ICMP (penser à autoriser la machine pour les requêtes ICMP) | + | - ICMP (penser à autoriser la machine pour les requêtes ICMP) |
- | - TCP | + | - TCP |
- | - HTTP | + | - HTTP |
Ces trois modules ont été configuré dans le fichier de blackbox. | Ces trois modules ont été configuré dans le fichier de blackbox. | ||
Ligne 3631: | Ligne 1259: | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
Pour que blackbox_exporter puisse exécuter des ping, il faut changer les capibilities du binary pour qu'il accède à la fonction. | Pour que blackbox_exporter puisse exécuter des ping, il faut changer les capibilities du binary pour qu'il accède à la fonction. | ||
+ | </ | ||
- Se positionner dans ''/ | - Se positionner dans ''/ | ||
Ligne 3669: | Ligne 1298: | ||
Elles viendront surveiller : | Elles viendront surveiller : | ||
- | + | ||
- | - Si une probe blackbox tombe | + | - Si une probe blackbox tombe |
- | - Si une probe prend du temps à répondre | + | - Si une probe prend du temps à répondre |
- | - Si une probe ne retourne pas une réponse HTTP entre 200 et 399 | + | - Si une probe ne retourne pas une réponse HTTP entre 200 et 399 |
- | - Si un certificat exprire dans moins de 3 jours | + | - Si un certificat exprire dans moins de 3 jours |
- | - Si une requête HTTP prend plus d'1 seconde | + | - Si une requête HTTP prend plus d'1 seconde |
- | - Si le ping prend plus d'1 seconde | + | - Si le ping prend plus d'1 seconde |
```yaml | ```yaml | ||
Ligne 3739: | Ligne 1368: | ||
Il existe un tableau pour traiter les données de blackbox_exporter : | Il existe un tableau pour traiter les données de blackbox_exporter : | ||
- | - *7587* (https:// | + | - _7587_ ([https:// |
Il suffit donc de l' | Il suffit donc de l' | ||
Ligne 3748: | Ligne 1377: | ||
{{ wiki: | {{ wiki: | ||
+ | |||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
Penser à autoriser les réponses aux ping dans le pare-feu windows ! | Penser à autoriser les réponses aux ping dans le pare-feu windows ! | ||
- | |||
``` | ``` | ||
netsh firewall set icmpsetting 8 | netsh firewall set icmpsetting 8 | ||
``` | ``` | ||
+ | </ | ||
# Agent de monitoring SQL : mysqld_exporter | # Agent de monitoring SQL : mysqld_exporter | ||
Ligne 3903: | Ligne 1533: | ||
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
Le serveur Prometheus doit être en mesure d' | Le serveur Prometheus doit être en mesure d' | ||
+ | </ | ||
Redémarrer le service '' | Redémarrer le service '' | ||
+ | |||
## Création des alertes | ## Création des alertes | ||
Ligne 3979: | Ligne 1611: | ||
{{ wiki: | {{ wiki: | ||
+ | |||
## Ajout du tableau dans Grafana | ## Ajout du tableau dans Grafana | ||
Ligne 3984: | Ligne 1617: | ||
Il existe un tableau pour traiter les données de mysqld_exporter: | Il existe un tableau pour traiter les données de mysqld_exporter: | ||
- | - *7362* https:// | + | - _7362_ [https:// |
Il suffit donc de l' | Il suffit donc de l' | ||
Ligne 4061: | Ligne 1694: | ||
Le serveur web de snmp_exporter écoute sur le port '' | Le serveur web de snmp_exporter écoute sur le port '' | ||
Le protocole SNMP utilise les ports 160 et 161 en UDP pour communiquer, | Le protocole SNMP utilise les ports 160 et 161 en UDP pour communiquer, | ||
+ | </ | ||
## Configuration de l' | ## Configuration de l' | ||
Ligne 4108: | Ligne 1742: | ||
``` | ``` | ||
- | - Cloner le repo | + | - Cloner le repo |
``` | ``` | ||
Ligne 4211: | Ligne 1845: | ||
{{ wiki: | {{ wiki: | ||
- | Rendez vous sur '' | + | </ |
+ | |||
+ | Rendez vous sur '' | ||
{{ wiki: | {{ wiki: | ||
Ligne 4244: | Ligne 1880: | ||
## Création d' | ## Création d' | ||
+ | |||
Nous avons vu précedemment comment faire une requête PromQL pour aller chercher une valeur précise. | Nous avons vu précedemment comment faire une requête PromQL pour aller chercher une valeur précise. | ||
Ligne 4322: | Ligne 1959: | ||
# Création d'un tableau Grafana sur mesure | # Création d'un tableau Grafana sur mesure | ||
- | La documentation de Grafana est disponible ici : https:// | + | La documentation de Grafana est disponible ici : [https:// |
## Définir le besoin des données | ## Définir le besoin des données | ||
Ligne 4365: | Ligne 2002: | ||
{{ wiki: | {{ wiki: | ||
- | #### La consommation en kWh | + | #### La consommation en kWh |
'' | '' | ||
Ligne 4373: | Ligne 2010: | ||
``` | ``` | ||
- | #### Le coût moyen par mois | + | #### Le coût moyen par mois |
En prenant compte que le prix moyen du kWh fournit par EDF est de 0,18 centimes. | En prenant compte que le prix moyen du kWh fournit par EDF est de 0,18 centimes. | ||
Ligne 4405: | Ligne 2042: | ||
{{ wiki: | {{ wiki: | ||
- | Retrouvez la doc de GO ici : https:// | + | Retrouvez la doc de GO ici : [https:// |
*Version actuelle de GO : **1.20.2*** | *Version actuelle de GO : **1.20.2*** | ||
Ligne 4550: | Ligne 2187: | ||
``` | ``` | ||
- | - Ajouter dans les receivers | + | - Ajouter dans les receivers |
```yaml | ```yaml | ||
Ligne 4569: | Ligne 2206: | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
Rappel : A noter que ce script s' | Rappel : A noter que ce script s' | ||
+ | </ | ||
Créer le fichier '' | Créer le fichier '' | ||
Ligne 4587: | Ligne 2225: | ||
#### Ajout des clés SSH sur les machines | #### Ajout des clés SSH sur les machines | ||
- | Documentation : https:// | + | Documentation : [https:// |
##### Sur le serveur de supervision | ##### Sur le serveur de supervision | ||
- | - Générer la clé SSH | + | - Générer la clé SSH |
``` | ``` | ||
Ligne 4605: | Ligne 2243: | ||
##### Sur le serveur BDD | ##### Sur le serveur BDD | ||
- | - Générer la clé SSH | + | - Générer la clé SSH |
``` | ``` | ||
Ligne 4651: | Ligne 2289: | ||
else | else | ||
- | | + | echo "Label is different, ${AMX_LABEL_alertname}" |
fi | fi | ||
``` | ``` | ||
Ligne 4679: | Ligne 2317: | ||
### Execution d'une requête cURL pour appeler une API | ### Execution d'une requête cURL pour appeler une API | ||
- | Dans une [autre documention](/ | + | Dans une [autre documention](LIEN%20VERS%20LA%20DOCUMENTATION) j' |
Suivant la [documentation de RaspiSMS](https:// | Suivant la [documentation de RaspiSMS](https:// | ||
Ligne 4695: | Ligne 2333: | ||
Il existe plein d' | Il existe plein d' | ||
- | https:// | + | [https:// |
- | Tous les objectifs que nous voulions pour notre solution de monitoring ont été atteints. | + | Tous les objectifs que nous voulions pour notre solution de monitoring ont été atteints. |
Grafana et Prometheus sont des outils libres et gratuit, cela les rends beaucoup plus accessible pour les TPE et PME. | Grafana et Prometheus sont des outils libres et gratuit, cela les rends beaucoup plus accessible pour les TPE et PME. | ||
Il existe une version Enterprise de Grafana qui rajoute des moyens d' | Il existe une version Enterprise de Grafana qui rajoute des moyens d' | ||
Ligne 4709: | Ligne 2347: | ||
# Mes sources | # Mes sources | ||
- | 1. https:// | + | 1. [https:// |
- | 2. https:// | + | 2. [https:// |
- | 3. https:// | + | 3. [https:// |
### Prometheus | ### Prometheus | ||
- | 1. https:// | + | 1. [https:// |
- | 2. https:// | + | 2. [https:// |
- | 3. https:// | + | 3. [https:// |
- | 4. https:// | + | 4. [https:// |
### Grafana | ### Grafana | ||
- | 1. https:// | + | 1. [https:// |
- | 2. https:// | + | 2. [https:// |
- | 3. https:// | + | 3. [https:// |
- | 4. https:// | + | 4. [https:// |
- | 5. http:// | + | 5. [http:// |
- | 6. https:// | + | 6. [https:// |
- | 7. https:// | + | 7. [https:// |
- | 8. https:// | + | 8. [https:// |
- | 9. https:// | + | 9. [https:// |
#### Tableaux utilisés : | #### Tableaux utilisés : | ||
- | - https:// | + | - [https:// |
- | - https:// | + | - [https:// |
- | - https:// | + | - [https:// |
### node_exporter | ### node_exporter | ||
- | 1. https:// | + | 1. [https:// |
- | 2. https:// | + | 2. [https:// |
- | 3. https:// | + | 3. [https:// |
### windows_exporter | ### windows_exporter | ||
- | 1. https:// | + | 1. [https:// |
- | 2. https:// | + | 2. [https:// |
### pve_exporter | ### pve_exporter | ||
- | 1. https:// | + | 1. [https:// |
- | 2. https:// | + | 2. [https:// |
### Prometheus Blackbox | ### Prometheus Blackbox | ||
- | 1. https:// | + | 1. [https:// |
- | 2. https:// | + | 2. [https:// |
- | 3. https:// | + | 3. [https:// |
- | 4. https:// | + | 4. [https:// |
### Prometheus SQL | ### Prometheus SQL | ||
- | 1. https:// | + | 1. [https:// |
- | ### Prometheus SNMP | + | ### Prometheus SNMP |
- | 1. https:// | + | 1. [https:// |
- | 2. https:// | + | 2. [https:// |
- | 3. https:// | + | 3. [https:// |
- | 4. https:// | + | 4. [https:// |
- | 5. https:// | + | 5. [https:// |
- | 6. https:// | + | 6. [https:// |
- | 7. https:// | + | 7. [https:// |
- | 8. https:// | + | 8. [https:// |
- | 9. https:// | + | 9. [https:// |
- | 10. https:// | + | 10. [https:// |
- | 11. https:// | + | 11. [https:// |
### Pour aller plus loin... | ### Pour aller plus loin... | ||
- | - agent prometheus pour mesurer la débit du lien Internet | + | - Agent prometheus pour mesurer la débit du lien Internet |
+ | |||
+ | 1. [https:// | ||
- | 1. https:// | + | - Extinction automatique via surveillance d' |
- | - extinction automatique via surveillance d'onduleur | + | 1. [https:// |
+ | 2. [https:// | ||
- | 1. https:// | ||
- | 2. https:// |