L’objectif de ce travail était de tester l’outil Prometheus pour remonter les statistiques d’usage des modules EOLE.

Prometheus permet d’agréger et de stocker les métriques collectées par les agents nommés Exporters. Une interface rudimentaire permet de visualiser les données. Un gestionnaire d’alarme permet l’envoi d’alertes aux utilisateurs.

https://prometheus.io/

La visualisation des données agrégées peut s’effectuer avec Grafana.

https://grafana.com/

Installation de Prometheus sur Eolebase 2.6.2

Une installation depuis les sources 2.0.0 est un peu laborieuse.

Sur Eolebase Prometheus est empaqueté en version 0.16, la version date un peu.

Le travail de packaging est effectué par ailleurs par un mainteneur : https://github.com/jtyr/prometheus-deb

Installation de curl :

# apt-eole install curl

Ajout du dépôt et installation du paquet Prometheus :

# curl -L https://packagecloud.io/prometheus-deb/release/gpgkey | apt-key add -

# echo 'deb https://packagecloud.io/prometheus-deb/release/ubuntu/ xenial main' > /etc/apt/sources.list.d/prometheus.list

# apt-get update

# apt-get install prometheus

Par défaut il n’y a pas besoin de modifier la configuration /etc/prometheus/prometheus.yml.

Pour démarrer le service Prometheus :

# systemctl start prometheus

En l’état une ouverture du port 9090 est nécessaire pour gagner du temps il est possible de désactiver le pare-feu du module :

# ouvre.firewall

L’application est disponible à l’adresse : http://<adresse_du_serveur>:9090

Les journaux permettent de déboguer la configuration de Promotheus :

# tail -f /var/log/rsyslog/local/prometheus/prometheus.info.log

Installation d’un Exporter sur le serveur lui-même

# apt-eole install prometheus-node-exporter

Il est possible de rafraîchir la configuration à l’aide d’une commande curl.

Rafraîchir la configuration :

# curl -X POST http://localhost:9090/-/reload

La visualisation des données peut se faire dans l’interface, choisir dans le menu déroulant l’information souhaitée et cliquer sur Execute.

Pour afficher sous forme de graphe, cliquer sur Graph.

Les informations du nœud sont disponibles sur le port 9100 :  http://<adresse_du_serveur>:9100/metrics

# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.00039782
go_gc_duration_seconds{quantile="0.25"} 0.00065545
go_gc_duration_seconds{quantile="0.5"} 0.0008008770000000001
go_gc_duration_seconds{quantile="0.75"} 0.000986045
go_gc_duration_seconds{quantile="1"} 0.005430900000000001
go_gc_duration_seconds_sum 3.6383615049999998
go_gc_duration_seconds_count 3921

Installation de Grafana

L’installation peut se faire de plusieurs manières documentés ici : http://docs.grafana.org/installation/debian/

Ajout du dépôt et installation du paquet Grafana :

# curl https://packagecloud.io/gpg.key | apt-key add -

# echo 'deb https://packagecloud.io/grafana/stable/debian/ stretch main' > /etc/apt/sources.list.d/grafana.list

# apt-get update

# apt-get install grafana

Et démarrer le service :

systemctl start grafana-server

L’application est disponible à l’adresse : http://<adresse_du_serveur:3000/

Le compte par défaut pour accéder à l’interface Grafana est admin avec le mot de passe admin.

Ajouter Prometheus comme source de données

Il faut se rendre dans le panneau de configuration : Configuration (icône roue crantée) → Data Sources → + Add data source.

Remplir au minium les champs : Name, Type et URL

Installer un modèle de tableau de bord

Télécharger le modèle Node Exporter Full sous forme de JSON : https://grafana.com/dashboards/1860

Ajouter un tableau de bord : Dashboard (icône +) → import

Ajouter des machines EOLE

Installation de sur chacune des machines 192.168.0.20:9100 et 192.168.0.26 :

# apt install prometheus-node-exporter

# ouvre.firewall

Configuration de Prometheus

scrape_configs:
- job_name: 'Prometheus'

# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.

static_configs:
- targets: ['localhost:9100']

- job_name: 'EOLE'

static_configs:
- targets: ['192.168.0.20:9100','192.168.0.26:9100']

Conclusion

Prometheus est relativement simple à mettre en œuvre. La configuration des tableaux de bord est un peu plus complexe. Prometheus pourrait être intégré à la nouvelle application Zéphir pour monitorer les différents serveurs EOLE.

Liens

Installation avec docker :

https://prometheus.io/docs/prometheus/latest/installation/