Skip to content
Snippets Groups Projects
Verified Commit c6f77913 authored by Quentin Duchemin's avatar Quentin Duchemin
Browse files

[Grafana] Add Compose, doc and config

parent 5f94dade
No related branches found
No related tags found
1 merge request!50Remove CI
## 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.
version: '3.7'
volumes:
grafana:
name: grafana
services:
grafana:
image: registry.picasoft.net/grafana:6.4.4
container_name: grafana
volumes:
- grafana:/var/lib/grafana
- ./ldap.toml:/etc/grafana-ldap/ldap.toml
environment:
- GF_DEFAULT_INSTANCE_NAME=picasoft
- GF_SERVER_ROOT_URL=https://grafana.picasoft.net
- GF_SECURITY_ADMIN_USER=picasoft
- GF_AUTH_LDAP_ENABLED=true
- GF_AUTH_LDAP_CONFIG_FILE=/etc/grafana-ldap/ldap.toml
- GF_AUTH_LDAP_ALLOW_SIGN_UP=false
env_file: ./secrets/grafana.secrets
labels:
- "traefik.frontend.rule=Host:grafana.picasoft.net"
- "traefik.port=3000"
- "traefik.enable=true"
restart: always
# To troubleshoot and get more log info enable ldap debug logging in grafana.ini
# [log]
# filters = ldap:debug
[[servers]]
# Ldap server host (specify multiple hosts space separated)
host = "ldap.picasoft.net"
# Default port is 389 or 636 if use_ssl = true
port = 389
# Set to true if ldap server supports TLS
use_ssl = false
# Set to true if connect ldap server with STARTTLS pattern (create connection in insecure, then upgrade to secure connection with TLS)
start_tls = false
# set to true if you want to skip ssl cert validation
ssl_skip_verify = true # Le LDAP est accessible que depuis les VM Picasoft, il me semble qu'il n'y a pas de ssl configuré
# set to the path to your root CA certificate or leave unset to use system defaults
# root_ca_cert = "/path/to/certificate.crt"
# Authentication against LDAP servers requiring client certificates
# client_cert = "/path/to/client.crt"
# client_key = "/path/to/client.key"
# Search user bind dn
bind_dn = "cn=grafana,ou=Services,dc=picasoft,dc=net"
# Search user bind password
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
bind_password = '${LDAP_GRAFANA_PASSWORD}'
# User search filter, for example "(cn=%s)" or "(sAMAccountName=%s)" or "(uid=%s)"
search_filter = "(&(objectClass=posixAccount)(uid=%s))"
# An array of base dns to search through
search_base_dns = ["ou=People,dc=picasoft,dc=net"]
## For Posix or LDAP setups that does not support member_of attribute you can define the below settings
## Please check grafana LDAP docs for examples
group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"
group_search_base_dns = ["ou=Groups,dc=picasoft,dc=net"]
group_search_filter_user_attribute = "uid" # J'ai laissé la valeur par défaut, aucune idée si ça va marcher
#group_search_filter_user_attribute = "cn" # J'ai laissé la valeur par défaut, aucune idée si ça va marcher
# Specify names of the ldap attributes your ldap uses
[servers.attributes]
name = "givenName"
surname = "sn"
username = "cn"
#member_of = "memberOf" # Celui là on ne l'utilise pas
email = "mail"
# Map ldap groups to grafana org roles
[[servers.group_mappings]]
group_dn = "cn=admin,ou=Groups,dc=picasoft,dc=net"
org_role = "Admin"
# To make user an instance admin (Grafana Admin) uncomment line below
# grafana_admin = true
# The Grafana organization database id, optional, if left out the default org (id 1) will be used
# org_id = 1
[[servers.group_mappings]]
group_dn = "cn=tech,ou=Groups,dc=picasoft,dc=net"
org_role = "Editor"
[[servers.group_mappings]]
# If you want to match all (or no ldap groups) then you can use wildcard
group_dn = "*"
org_role = "Viewer"
GF_SECURITY_ADMIN_PASSWORD=password
LDAP_GRAFANA_PASSWORD=ldap_password
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment