310
Commentaire: logo
|
3833
Alert me 2!
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
= Introduction = | = Prometheus = |
Ligne 5: | Ligne 5: |
Prometheus est un outil de monitoring déployé au Crans. Il permet de visualiser ??? et ??? sur tout les serveurs et d'en faire la synthèse dans une belle interface web. | Prometheus est '''un outil de monitoring''' (gestion des alertes par exemple) et '''une base de donnée de stockage''' de séries de temps. Il a été déployé sur {{{prometheus.adm.crans.org}}} et n'est accessible que vis Adm. On peut accéder à [[http://promethus.adm.crans.org:9090/|son interface Web]] en passant par un proxy Sock par exemple. Pour plus d'information, je ne peux que vous conseillez [[https://prometheus.io/docs/introduction/overview/|la documentation officielle]]. == Fonctionnement == '''Prometheus''' représente la base de données de monitoring, mais ne récupère pas de données par lui-même. Il faut donc ajouter des services sur les autres serveurs qui vont lui envoyer les données à monitorer. De plus pour visualiser ces données, il est souhaitable de mettre en place une interface bien plus « humaine » comme '''Grafana''', bien que l'interface de base permette déjà de voir les données. Un de ses gros points forts est que l'on peut exporter à peu près tout ce que l'on souhaite vers Prometheus, par exemple les données collectées par le contrôleur Unifi. Pour monitorer les informations de base d'un serveur, il suffit d'installer {{{prometheus-node-exporter}}} qui va exporter les informations réseaux, CPU, RAM… sans configuration nécessaire. Vous l'avez compris ça fait le café. === Mais dis donc Jamy comment ça marche ? === Prometheus est en réalité un simple collecteur de données. Il va régulièrement (toutes les 15s) charger une page web (par exemple vulcain.adm.crans.org:9100) et récupérer le contenu. C'est donc lui qui interroge les serveurs et pas l'inverse. Du côté des serveurs à monitorer on va alors installer des services comme {{{prometheus-node-exporter}}} qui vont simplement répondre à cette requête HTTP en renvoyant les données à l'instant t. Cela veut dire que Prometheus est très simple à déboguer lorsque un node est inaccessible ! Il suffit d'essayer d'y aller avec son navigateur web. Cela veut également dire que vous pouvez très simplement créer votre service qui va répondre sur un autre port en envoyant d'autres données et que Prometheus les acceptera. === Système d'alerte === Toutes les 15s prometheus récupère les données et regarde si elles respectent des critères définis dans le fichier de règles {{{/etc/prometheus/rules.conf}}}. Si quelque chose n'est pas conforme, alors Prometheus envoie une notification à Prometheus Alertmanager qui se charge ensuite d'envoyer un mail sur la mailinglist roots. L'avantage d'avoir un intermédiaire est de pouvoir regrouper les alertes par type ou par serveur, plutôt qu'envoyer 1000 mails d'un seul coup quand quelque chose casse. L'autre avantage est que l'on reçoit également un mail quand Prometheus Alertmanager arrête de recevoir l'alerte. Pour voir les alertes en court, on peut également se connecter sur [[https://grafana.crans.org|Grafana]] et lire le tableau « Alertes actuelles ». == Maintenance == === Supprimer les données d'une node === Parfois après la suppression d'un serveur on veut drop les anciennes données. Pour cela sur le serveur Prometheus : {{{ curl -X DELETE -g 'http://localhost:9090/api/v1/series?match[]={instance="ANCINNE_NODE:9100"}' }}} == Choses à tester dans le futur == * python3-django-prometheus ; * Intégrer avec les stats de GitLab (de base dans GitLab) ; * Activer le NTP dans {{{prometheus-node-exporter}}} ; * [[https://github.com/knyar/nginx-lua-prometheus|Exporter NGINX]] (pour monitorer les reverseproxy) ; * Exporter les données du contrôleur Unifi avec {{{prometheus-snmp-exporter}}}. |
Prometheus
|
Prometheus est un outil de monitoring (gestion des alertes par exemple) et une base de donnée de stockage de séries de temps.
Il a été déployé sur prometheus.adm.crans.org et n'est accessible que vis Adm. On peut accéder à son interface Web en passant par un proxy Sock par exemple.
Pour plus d'information, je ne peux que vous conseillez la documentation officielle.
Fonctionnement
Prometheus représente la base de données de monitoring, mais ne récupère pas de données par lui-même. Il faut donc ajouter des services sur les autres serveurs qui vont lui envoyer les données à monitorer. De plus pour visualiser ces données, il est souhaitable de mettre en place une interface bien plus « humaine » comme Grafana, bien que l'interface de base permette déjà de voir les données.
Un de ses gros points forts est que l'on peut exporter à peu près tout ce que l'on souhaite vers Prometheus, par exemple les données collectées par le contrôleur Unifi.
Pour monitorer les informations de base d'un serveur, il suffit d'installer prometheus-node-exporter qui va exporter les informations réseaux, CPU, RAM… sans configuration nécessaire. Vous l'avez compris ça fait le café.
Mais dis donc Jamy comment ça marche ?
Prometheus est en réalité un simple collecteur de données. Il va régulièrement (toutes les 15s) charger une page web (par exemple vulcain.adm.crans.org:9100) et récupérer le contenu. C'est donc lui qui interroge les serveurs et pas l'inverse.
Du côté des serveurs à monitorer on va alors installer des services comme prometheus-node-exporter qui vont simplement répondre à cette requête HTTP en renvoyant les données à l'instant t.
Cela veut dire que Prometheus est très simple à déboguer lorsque un node est inaccessible ! Il suffit d'essayer d'y aller avec son navigateur web.
Cela veut également dire que vous pouvez très simplement créer votre service qui va répondre sur un autre port en envoyant d'autres données et que Prometheus les acceptera.
Système d'alerte
Toutes les 15s prometheus récupère les données et regarde si elles respectent des critères définis dans le fichier de règles /etc/prometheus/rules.conf.
Si quelque chose n'est pas conforme, alors Prometheus envoie une notification à Prometheus Alertmanager qui se charge ensuite d'envoyer un mail sur la mailinglist roots.
L'avantage d'avoir un intermédiaire est de pouvoir regrouper les alertes par type ou par serveur, plutôt qu'envoyer 1000 mails d'un seul coup quand quelque chose casse.
L'autre avantage est que l'on reçoit également un mail quand Prometheus Alertmanager arrête de recevoir l'alerte.
Pour voir les alertes en court, on peut également se connecter sur Grafana et lire le tableau « Alertes actuelles ».
Maintenance
Supprimer les données d'une node
Parfois après la suppression d'un serveur on veut drop les anciennes données. Pour cela sur le serveur Prometheus :
curl -X DELETE -g 'http://localhost:9090/api/v1/series?match[]={instance="ANCINNE_NODE:9100"}'
Choses à tester dans le futur
- python3-django-prometheus ;
Activer le NTP dans prometheus-node-exporter ;
Exporter NGINX (pour monitorer les reverseproxy) ;
Exporter les données du contrôleur Unifi avec prometheus-snmp-exporter.