| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| wiki:linux:grafana_prometheus [2023/04/21 12:18] – DEROUET Valentin | wiki:linux:grafana_prometheus [2023/04/26 15:44] (Version actuelle) – DEROUET Valentin |
|---|
| |
| Dans cette documentation nous installerons une solution de supervision matérielle avec le couple Grafana/Prometheus | Dans cette documentation nous installerons une solution de supervision matérielle avec le couple Grafana/Prometheus |
| Nous installerons aussi les agents sur les clients à surveiller.rant le | Nous installerons aussi les agents sur les clients à surveiller. |
| |
| 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. |
| 2. **Les réseaux** : La supervision des réseaux permet de s'assurer que les connexions entre les différents composants de l'infrastructure sont rapides, fiables et sécurisées. La supervision peut inclure la surveillance des connexions Internet, des réseaux locaux (''LAN'') et des réseaux étendus (''WAN''). | 2. **Les réseaux** : La supervision des réseaux permet de s'assurer que les connexions entre les différents composants de l'infrastructure sont rapides, fiables et sécurisées. La supervision peut inclure la surveillance des connexions Internet, des réseaux locaux (''LAN'') et des réseaux étendus (''WAN''). |
| |
| 3. **Les bases de données** : Les bases de données sont souvent le cœur de l'activité de nombreuses entreprises. Il est donc essentiel de superviser leur état de santé, leur utilisation des ressources et leur disponibilité pour gaGITEA avec une liaison LDAP et un certificat SSL. | 3. **Les bases de données** : Les bases de données sont souvent le cœur de l'activité de nombreuses entreprises. Il est donc essentiel de superviser leur état de santé, leur utilisation des ressources et leur disponibilité pour garantir leur bon fonctionnement. |
| | |
| Cette documentation est réalisée dans le cadre scolaired'un TP guidé, il peut donc y avoir d'autres méthodes plus ou moins simple pour y parvenir. | |
| Pour mieux s'y retrouver cette documentation disposera de plusieurs screenshots illustrantir leur bon fonctionnement. | |
| |
| 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. | 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, les scanners et les caméras peuvent également être supervisés pour garantir leur bon fonctionnement.s consignes. | 5. **Les périphériques** : Les périphériques tels que les imprimantes, les scanners et les caméras peuvent également être supervisés pour garantir leur bon fonctionnement. |
| | |
| ## Préambule | |
| |
| ### Pourquoi le duo Grafana/Prometheus? | ### Pourquoi le duo Grafana/Prometheus? |
| |
| ``` | ``` |
| tar -xvf prometheus-2.42.00.7.linux-amd64.tar.gz | tar -xvf prometheus-2.42.0.linux-amd64.tar.gz |
| ``` | ``` |
| |
| |
| ``` | ``` |
| mv prometheus-2.42.00.7.linux-amd64 /etc/prometheus | mv prometheus-2.42.0.linux-amd64 /etc/prometheus |
| ``` | ``` |
| |
| ``` | ``` |
| |
| - Ajouter le dépôt dans les sourcess | - Ajouter le dépôt dans les sources |
| |
| ```bash | ```bash |
| ### Accéder au serveur web | ### Accéder au serveur web |
| |
| {{ wiki:linux:fefrfefirefox_k6btnwrlea de c.png?00 |}} | {{ wiki:linux:fefrfefirefox_k6btnwrlea.png?600 |}} |
| web écoute sur le port ''3000''. | |
| | Le serveur web écoute sur le port ''3000''. |
| |
| Les identifiants par défault sont : ''admin''/''admin''. | Les identifiants par défault sont : ''admin''/''admin''. |
| Le mot de passe sera à changer. | Le mot de passe sera à changer. |
| |
| #a | # Configuration de Grafana |
| |
| ## Ajout de la data-source Prometheus | ## Ajout de la data-source Prometheus |
| *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'architecture Prometheus. | *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'architecture Prometheus. |
| |
| Le cycle de vie d'une alerte explique la raison d'un tel délai dans le pire.png?7600 |}} | 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:linux:prometheus.png?700 |}} |
| |
| La charge d'un nœud change constamment, mais elle est analysée par Prometheus tous les `scrape_interval` (c'est-à-dire 20 secondes). | La charge d'un nœud change constamment, mais elle est analysée par Prometheus tous les `scrape_interval` (c'est-à-dire 20 secondes). |
| Les règles d'alerte sont ensuite évaluées par rapport aux métriques scrappées tous les `evaluation_interval` (c'est-à-dire 1 minute). | Les règles d'alerte sont ensuite évaluées par rapport aux métriques scrappées tous les `evaluation_interval` (c'est-à-dire 1 minute). |
| Lorsqu'une expression de règle d'alerte est `TRUE` (c'est-à-dire `node_load1 > 20`), l'alerte passe en `pending`, afin d'honorer la clause ''FOR''. | Lorsqu'une expression de règle d'alerte est `TRUE` (c'est-à-dire `node_load1 > 20`), l'alerte passe en `pending`, afin d'honorer la clause ''FOR''. |
| Lors des cycles d'évaluation suivants, si l'expression de l'alerte est toujours vraie, une fois que la clause FOR est honorée, l'alerte passe finalement au ''firing'' et une notification est envoyée au gestionnaire d'alertes.## Ajout des règles pour Prometheus | Lors des cycles d'évaluation suivants, si l'expression de l'alerte est toujours vraie, une fois que la clause FOR est honorée, l'alerte passe finalement au ''firing'' et une notification est envoyée au gestionnaire d'alertes. |
| | |
| | ## Ajout des règles pour Prometheus |
| |
| |
| |
| <WRAP center round tip 60%> | <WRAP center round tip 60%> |
| Vérifier la dernière version sur: [github.cohttps://github.com/prometheus/alertmanager/releases/). | Vérifier la dernière version sur : [https://github.com/prometheus/alertmanager/releases/](https://github.com/prometheus/alertmanager/releases/). |
| </WRAP> | </WRAP> |
| |
| |
| ``` | ``` |
| VER=0.254.0 | VER=0.25.0 |
| ``` | ``` |
| |
| ``` | ``` |
| |
| #### Vous pouvez retrouver ici plusieurs modèles de règles pour prometheus :https://awesome-prometheus-alerts.grep.to/rules.html](https://awesome-prometheus-alerts.grep.to/rules.html) | #### Vous pouvez retrouver ici plusieurs modèles de règles pour prometheus : |
| | |
| | [https://awesome-prometheus-alerts.grep.to/rules.html](https://awesome-prometheus-alerts.grep.to/rules.html) |
| |
| Il suffit de copier coller les règles dans un fichier ''.yml''. | Il suffit de copier coller les règles dans un fichier ''.yml''. |
| - Via Discord (dans un channel) | - Via Discord (dans un channel) |
| |
| ### Trigger un eConfiguration de la notification par mail | ### Trigger une notification par mail |
| |
| - Ouvrir le fichier de configuration | - Ouvrir le fichier de configuration |
| *Fichier de configuration avec la fonctionnalité d'**emailing**:* | *Fichier de configuration avec la fonctionnalité d'**emailing**:* |
| |
| ```yamlbash | ```yaml |
| global: | global: |
| resolve_timeout: 5m | resolve_timeout: 5m |
| group_by: ['alertname'] | group_by: ['alertname'] |
| group_wait: 10s | group_wait: 10s |
| group_interval: 310s | group_interval: 30s |
| repeat_interval: 1h #envoyer un email toute les heures | repeat_interval: 1h #envoyer un email toute les heures |
| routes: | routes: |
| severity: critical|warning #match le label critical ou warning | severity: critical|warning #match le label critical ou warning |
| continue: true #continuer d'executer les autres trigger | continue: true #continuer d'executer les autres trigger |
| 24h | |
| receiver: 'email' | |
| receivers: | receivers: |
| - name: 'email' | - name: 'email' |
| email_configs: | email_configs: |
| - to: '[email protected]' | - to: '[email protected]' |
| | hello: 'FQDN' #FQDN du serveur de supervision |
| | # important de préciser le parametre hello, lors de la commande EHLO il faut un FQDN |
| from: '[email protected]' | from: '[email protected]' |
| smarthost: 10.192.44.11:25 #ip du serveur relay, choisir entre IPV4 ou un FQDN | smarthost: 10.192.44.11:25 #ip du serveur relay,, choisir entre IPV4 ou un FQDN |
| auth_username: 'relais' | auth_username: 'relais' |
| auth_identity: 'relais' | auth_identity: 'relais' |
| ## Ajout de l'agent dans Prometheus | ## Ajout de l'agent dans Prometheus |
| |
| Dans le fichier ''/etc/prometheus/prometheus``` | Dans le fichier ''/etc/prometheus/prometheus.yml'' |
| | |
| <WRAP center round info 60%> | |
| Aide pour la création du fichier de configuration : [prometheus.io/docs/](https://prometheus.io/docs/alerting/latest/configuration/) | |
| </WRAP> | |
| | |
| - Vérifier le fichier de configuration | |
| | |
| ``` | |
| amtool check-config /etc/alertmanager/alertmanager.yml'' | |
| |
| ```yaml | ```yaml |
| {{ wiki:linux:1280px-go_logo_blue.svg.png?350 |}} | {{ wiki:linux:1280px-go_logo_blue.svg.png?350 |}} |
| |
| Retrouvez la doc de GO ici : [ | Retrouvez la doc de GO ici : [https://go.dev/doc/install](https://go.dev/doc/install) |
| | |
| - Redémarrer le service | |
| | |
| ``` | |
| systemctl restart alertmanager | |
| ``` | |
| | |
| {{ wiki:linux:fefrfefirefox_9txiiw20h1.png?400 |}} | |
| | |
| ## Vérifier le serveur d'alerte | |
| | |
| Un serveur web écoute sur le port ''9093'', accessible sur | |
| ```https://go.dev/doc/install](https://go.dev/doc/install) | |
| |
| *Version actuelle de GO : **1.20.2*** | *Version actuelle de GO : **1.20.2*** |
| Il existe plein d'autres ''exporter'', la liste est disponible ici : | Il existe plein d'autres ''exporter'', la liste est disponible ici : |
| |
| [https://prometheus.io/docs/instrumenting/exporters/](https://prometheus.io/docs/instrumenting/exporters/)localhost:9093/#/alerts``` | [https://prometheus.io/docs/instrumenting/exporters/](https://prometheus.io/docs/instrumenting/exporters/) |
| | |
| {{ wiki:linux:fefrfefirefox_lomzgwgexw.png?900 |}} | |
| | |
| # Conclusion | |
| |
| 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. |
| 2. [https://blog.ataxya.net/supervision-de-proxmox-et-de-mikrotik-via-prometheus-grafana/](https://blog.ataxya.net/supervision-de-proxmox-et-de-mikrotik-via-prometheus-grafana/) | 2. [https://blog.ataxya.net/supervision-de-proxmox-et-de-mikrotik-via-prometheus-grafana/](https://blog.ataxya.net/supervision-de-proxmox-et-de-mikrotik-via-prometheus-grafana/) |
| |
| ### Prometheus B | ### Prometheus Blackbox |
| - ajouter pve_exporter | |
| - ajouter la conf dans grafana de alertmanager de prometheus | |
| |
| ## doc blackbox | 1. [https://blog.ruanbekker.com/blog/2019/05/17/install-blackbox-exporter-to-monitor-websites-with-prometheus/](https://blog.ruanbekker.com/blog/2019/05/17/install-blackbox-exporter-to-monitor-websites-with-prometheus/) |
| | 2. [https://geekflare.com/fr/monitor-website-with-blackbox-prometheus-grafana/](https://geekflare.com/fr/monitor-website-with-blackbox-prometheus-grafana/) |
| 1. | 3. [https://medium.com/techno101/how-to-send-a-mail-using-prometheus-alertmanager-7e880a3676db](https://medium.com/techno101/how-to-send-a-mail-using-prometheus-alertmanager-7e880a3676db) |
| https://blog.ruanbekker.com/blog/2019/05/17/install-blackbox-exporter-to-monitor-websites-with-prometheus/ | |
| 2. | |
| https://geekflare.com/fr/monitor-website-with-blackbox-prometheus-grafana/ | |
| 3. | |
| https://medium.com/techno101/how-to-send-a-mail-using-prometheus-alertmanager-7e880a3676db | |
| 4. [https://github.com/prometheus/blackbox_exporter/issues/14](https://github.com/prometheus/blackbox_exporter/issues/14) | 4. [https://github.com/prometheus/blackbox_exporter/issues/14](https://github.com/prometheus/blackbox_exporter/issues/14) |
| |
| ### Prometheus SNMP | ### Prometheus SNMP |
| |
| 1. | 1. [https://sbcode.net/prometheus/snmp-exporter/](https://sbcode.net/prometheus/snmp-exporter/) |
| ## doc snmp prometheus | 2. [https://medium.com/@openmohan/snmp-monitoring-and-easing-it-with-prometheus-b157c0a42c0c](https://medium.com/@openmohan/snmp-monitoring-and-easing-it-with-prometheus-b157c0a42c0c) |
| | 3. [https://github.com/prometheus/snmp_exporter](https://github.com/prometheus/snmp_exporter) |
| https://sbcode.net/prometheus/snmp-exporter/ | 4. [https://performance-monitoring-with-prometheus.readthedocs.io/en/latest/switch.html](https://performance-monitoring-with-prometheus.readthedocs.io/en/latest/switch.html) |
| 2. https://medium.com/@openmohan/snmp-monitoring-and-easing-it-with-prometheus-b157c0a42c0c | 5. [https://awesome-prometheus-alerts.grep.to/rules.html](https://awesome-prometheus-alerts.grep.to/rules.html) |
| 3. https://github.com/prometheus/snmp_exporter | 6. [https://github.com/cliv/rfc1628_ups_prometheus_module](https://github.com/cliv/rfc1628_ups_prometheus_module) |
| 4. https://performance-monitoring-with-prometheus.readthedocs.io/en/latest/switch.html | 7. [https://github.com/billykwooten/idrac_promethus_snmp_module](https://github.com/billykwooten/idrac_promethus_snmp_module) |
| 5. | 8. [https://github.com/prometheus/snmp_exporter/tree/main/generator](https://github.com/prometheus/snmp_exporter/tree/main/generator) |
| https://awesome-prometheus-alerts.grep.to/rules.html | 9. [https://sbcode.net/prometheus/snmp-exporter-generator](https://sbcode.net/prometheus/snmp-exporter-generator) |
| 6. https://github.com/cliv/rfc1628_ups_prometheus_module | 10. [https://stackoverflow.com/questions/56009729/prometheus-help-editing-configuring-snmp-exporters-generator-yml-file-for-cisc/](https://stackoverflow.com/questions/56009729/prometheus-help-editing-configuring-snmp-exporters-generator-yml-file-for-cisc/) |
| 7. https://github.com/billykwooten/idrac_promethus_snmp_module | 11. [https://grumpysysadmin.medium.com/configuring-prometheus-am-executor-for-automation-87d8f5514056](https://grumpysysadmin.medium.com/configuring-prometheus-am-executor-for-automation-87d8f5514056) |
| 8. https://github.com/prometheus/snmp_exporter/tree/main/generator | |
| 9. https://sbcode.net/prometheus/snmp-exporter-generator | |
| 10. https://stackoverflow.com/questions/56009729/prometheus-help-editing-configuring-snmp-exporters-generator-yml-file-for-cisc/ | |
| 11. https://grumpysysadmin.medium.com/configuring-prometheus-am-executor-for-automation-87d8f5514056 | |
| |
| ### 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. interessant a mettre en place | 1. [https://github.com/MiguelNdeCarvalho/speedtest-exporter](https://github.com/MiguelNdeCarvalho/speedtest-exporter) |
| https://github.com/MiguelNdeCarvalho/speedtest-exporter | |
| |
| - exctinction automoatiquqe via surveillance d'onduleur | - Extinction automatique via surveillance d'onduleur |
| |
| 1. https://asokolsky.github.io/proxmox/nut.html | 1. [https://asokolsky.github.io/proxmox/nut.html](https://asokolsky.github.io/proxmox/nut.html) |
| 2. https://www.linkedin.com/pulse/installer-et-surveiller-votre-onduleur-sous-debian-olivier-henry/?trk=pulse-article_more-articles_related-content-card&originalSubdomain=fr | 2. [https://www.linkedin.com/pulse/installer-et-surveiller-votre-onduleur-sous-debian-olivier-henry/?trk=pulse-article_more-articles_related-content-card](https://www.linkedin.com/pulse/installer-et-surveiller-votre-onduleur-sous-debian-olivier-henry/?trk=pulse-article_more-articles_related-content-card) |
| |