diff --git a/pica-grafana-prom/README.md b/pica-grafana-prom/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c66c6afa100b638313521497683c0bd7ab16d6a7 --- /dev/null +++ b/pica-grafana-prom/README.md @@ -0,0 +1,56 @@ +# Grafana et Prometheus + +Ce dossier contient les ressources nécessaires pour lancer une instance de Grafana **et** de Prometheus, qui nous servent à collecter et visualiser les métriques des services (via [pica-metrics-bot](../pica-metrics-bot)) et des machines (via Prometheus). + +Pour plus de facilité, ces deux services doivent communiquer via le même réseau, c'est pourquoi ils sont dans le même Docker Compose. Il n'y a pas de raisons de mettre ces deux services sur une machine différente, ce qui aurait pour seul effet de créer de la complexité supplémentaire. + +Notez que Rhizome a aussi un compte créé manuellement sur l'instance Grafana : il faudra faire attention à les prévenir en cas de mise à jour ou de déplacement de l'instance. + +## Configuration + +Prometheus est un logiciel libre qui permet la collecte et le traitement de métriques, ainsi que le déclenchement d'alertes. Son fonctionnement est simple : un serveur va collecter régulièrement des métriques auprès de plusieurs *exporters*. Par exemple pour exporter des métriques systèmes, on utilise un *node_exporter* que l'on installe sur la machine, et on configure le serveur Prometheus (distant potentiellement) pour scraper cet exporter régulièrement. + +### Prometheus + +La configuration se fait dans [prometheus.yml](./prometheus.yml). + +Pour collecter des métriques, il est nécessaire d'installer des *exporters* sur les machines cible : [voir la documentation](https://wiki.picasoft.net/doku.php?id=technique:monitoring:metrics:system_metrics). + +### Grafana + +Attention : même si l'authentification LDAP est activée, elle semble ne pas fonctionner : la connexion ne fonctionne que grâce à l'utilisateur administrateur. Voir [cette page](https://grafana.com/docs/grafana/latest/auth/ldap/#ldap-debug-view) pour investiguer et régler le problème. + +#### Emplacements + +La configuration est réalisée : + +* Par les variables d'environnement de [Compose](./docker-compose.yml), qui permettent d'accéder à tous les paramètres de la configuration (voir la [documentation](https://grafana.com/docs/grafana/latest/administration/configuration/#configure-with-environment-variables)) : cette méthode est utilisée pour tous les paramètres non-critiques. +* Par le fichier [ldap.toml](./ldap.toml) pour la configuration spécifique au LDAP. Ce fichier peut faire référence à des variables d'environnement avec [cette syntaxe](https://grafana.com/docs/grafana/latest/auth/ldap/#using-environment-variables), pour les données critiques (*e.g.* mot de passe) +* Par le fichier [grafana.secrets](./secrets/grafana.secrets.example), pour les secrets. + +#### Utilisateurs + +Il y a trois types d'utilisateurs : + +* L'administrateur de l'instance, configuré via l'environnement (Compose et secret) +* Les utilisateurs LDAP +* Les utilisateurs créés manuellement, comme Rhizome + +### Lancement + +Copier `grafana.secrets.example` dans `grafana.secrets` et remplacer les valeurs. +Lancer : + +```bash +docker-compose up -d +``` + +### Mise à jour + +Il suffit de mettre à jour le tag dans Compose. + +Concernant Grafana, pour le moment, nous utilisons une image de notre registre privé, mais il probable qu'il soit plus pertinent d'utiliser les images officielles (`grafana/grafana`). + +Cette possibilité devra être étudiée à la prochaine mise à jour. + +Il ne devrait pas y avoir de manipulation spécifiques pour mettre à jour une instance Docker : voir [la documentation de Grafana](https://grafana.com/docs/grafana/latest/installation/upgrading/#docker) et la [documentation de Prometheus](https://hub.docker.com/r/prom/prometheus) pour le vérifier. diff --git a/pica-grafana/docker-compose.yml b/pica-grafana-prom/docker-compose.yml similarity index 62% rename from pica-grafana/docker-compose.yml rename to pica-grafana-prom/docker-compose.yml index 4a94ff55c9b4655193184ec01dba5a56a6b29614..2a6a8c1894d2271fcf3f10194f8f477e0e1def3b 100644 --- a/pica-grafana/docker-compose.yml +++ b/pica-grafana-prom/docker-compose.yml @@ -1,8 +1,15 @@ version: '3.7' +networks: + metrics: + docker_default: + name: docker_default + volumes: grafana: name: grafana + prometheus: + name: prometheus services: grafana: @@ -23,4 +30,17 @@ services: - "traefik.frontend.rule=Host:grafana.picasoft.net" - "traefik.port=3000" - "traefik.enable=true" - restart: always + networks: + - docker_default + - metrics + restart: unless-stopped + + prometheus: + image: "prom/prometheus:v2.14.0" + container_name: prometheus + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml + - prometheus:/prometheus + networks: + - metrics + restart: unless-stopped diff --git a/pica-grafana/ldap.toml b/pica-grafana-prom/ldap.toml similarity index 100% rename from pica-grafana/ldap.toml rename to pica-grafana-prom/ldap.toml diff --git a/pica-grafana-prom/prometheus.yml b/pica-grafana-prom/prometheus.yml new file mode 100644 index 0000000000000000000000000000000000000000..de3a5876cf6eb730fcca8518c7d4d3217889aa60 --- /dev/null +++ b/pica-grafana-prom/prometheus.yml @@ -0,0 +1,36 @@ +# my global config +global: + scrape_interval: 1m # Set the scrape interval to every 1 minute + evaluation_interval: 1m # Evaluate rules every 1 minute +scrape_configs: + - job_name: 'voice-mumble' + static_configs: + - targets: + - 'voice.picasoft.net' + - job_name: 'pica01' + static_configs: + - targets: + - 'pica01.picasoft.net:9100' + relabel_configs: + - source_labels: [__address__] + regex: '.*' + target_label: instance + replacement: 'pica01' + - job_name: 'pica02' + static_configs: + - targets: + - 'pica02.picasoft.net:9100' + relabel_configs: + - source_labels: [__address__] + regex: '.*' + target_label: instance + replacement: 'pica02' + - job_name: 'monitoring' + static_configs: + - targets: + - 'monitoring.picasoft.net:9100' + relabel_configs: + - source_labels: [__address__] + regex: '.*' + target_label: instance + replacement: 'monitoring' diff --git a/pica-grafana/secrets/grafana.secrets.example b/pica-grafana-prom/secrets/grafana.secrets.example similarity index 100% rename from pica-grafana/secrets/grafana.secrets.example rename to pica-grafana-prom/secrets/grafana.secrets.example diff --git a/pica-grafana/README.md b/pica-grafana/README.md deleted file mode 100644 index a1553e92bca41ccc8f4d5c8fa7e40777774aea9f..0000000000000000000000000000000000000000 --- a/pica-grafana/README.md +++ /dev/null @@ -1,42 +0,0 @@ -## Grafana - -Ce dossier contient les ressources nécessaires pour lancer une instance Grafana, qui nous sert à visualiser les métriques des services (via [pica-metrics-bot](../pica-metrics-bot)) et Prometheus. - -Notez que Rhizome a aussi un compte créé manuellement sur l'instance : il faudra faire attention à les prévenir en cas de mise à jour ou de déplacement de l'instance. - -Attention : même si l'authentification LDAP est activée, elle semble ne pas fonctionner : la connexion ne fonctionne que grâce à l'utilisateur administrateur. Voir [cette page](https://grafana.com/docs/grafana/latest/auth/ldap/#ldap-debug-view) pour investiguer et régler le problème. - -### Configuration - -#### Emplacements - -La configuration est réalisée : - -* Par les variables d'environnement de [Compose](./docker-compose.yml), qui permettent d'accéder à tous les paramètres de la configuration (voir la [documentation](https://grafana.com/docs/grafana/latest/administration/configuration/#configure-with-environment-variables)) : cette méthode est utilisée pour tous les paramètres non-critiques. -* Par le fichier [ldap.toml](./ldap.toml) pour la configuration spécifique au LDAP. Ce fichier peut faire référence à des variables d'environnement avec [cette syntaxe](https://grafana.com/docs/grafana/latest/auth/ldap/#using-environment-variables), pour les données critiques (*e.g.* mot de passe) -* Par le fichier [grafana.secrets](./secrets/grafana.secrets.example), pour les secrets. - -#### Utilisateurs - -Il y a trois types d'utilisateurs : - -* L'administrateur de l'instance, configuré via l'environnement (Compose et secret) -* Les utilisateurs LDAP -* Les utilisateurs créés manuellement, comme Rhizome - -### Lancement - -Copier `grafana.secrets.example` dans `grafana.secrets` et remplacer les valeurs. -Lancer : - -```bash -docker-compose up -d -``` - -### Mise à jour - -Il suffit de mettre à jour le tag dans Compose. Pour le moment, nous utilisons une image de notre registre privé, mais il probable qu'il soit plus pertinent d'utiliser les images officielles (`grafana/grafana`). - -Cette possibilité devra être étudiée à la prochaine mise à jour. - -Il ne devrait pas y avoir de manipulation spécifiques pour mettre à jour une instance Docker : voir [la documentation](https://grafana.com/docs/grafana/latest/installation/upgrading/#docker) pour le vérifier.