Grafana
Cette page n'est plus du tout à jour. Collectd a été une mauvaise expérience et aujourd'hui on utilise plutôt du Prometheus. Voir CransTechnique/ServicesMineurs/Grafana.
A quoi que ça sert ?
- C'est une jolie interface web pour monitorer les serveurs (et bientot les bornes wifi) et tracer des graphes.
- Il tourne actuellement sur fy.
- On peut lui feed les données via différents softs, actuellement on utilise un serveur graphite et des clients collectd.
Installation et configuration
Server side
Graphite (carbon)
Installation :
- On installe le paquet graphite-carbon (il est dans les dépôts officiels debian)
sudo apt-get install graphite-carbon
Configuration
par défaut il écoute sur localhost:2013 et accepte les query sur localhost:7002 (on peut éditer dans /etc/carbon/carbon.conf)
- On copie le fichier de config par défaut pour l'aggrégation :
sudo cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf
- On autorise le lancement de carbon dans /etc/default/graphite-carbon :
CARBON_CACHE_ENABLED=true
- On démarre le daemon :
sudo systemctl start carbon-cache.service
Il faudra le relancer à chaque fois qu'on ajoute une node collectd
Graphite-api
Installation :
- Il ne se trouve dans les dépôts officiels debian que depuis stretch.
- il faut donc piner le paquet depuis stretch
On ajoute les sources stretch dans /etc/apt/sources.list.d/stretch.list :
deb ftp://mirror.adm.crans.org/debian stretch main contrib non-free
et on met le pine suivant dans /etc/apt/preferences.d/stretch :
Package: graphite-api Pin: release n=stretch Pin-Priority: 500 Package: * Pin: release n=stretch Pin-Priority: 1
Une fois ça fait on installe graphite-api, uwsgi et son plugin python 3
sudo apt install graphite-api uwsgi uwsgi-plugin-python3 nginx
Configuration :
- Configuration de graphite-api (dans /etc/graphite-api.yaml)
finder: - graphite_api.finders.whisper.WhisperFinder functions: - graphite_api.functions.SeriesFunctions - graphite_api.functions.PieFunctions whisper: directories: - /var/lib/graphite/whisper carbon: hosts: - 127.0.0.1:7002 timeout: 1 carbon_prefix: carbon replication_factor: 1
go voir sur http://graphite-api.readthedocs.io/en/latest/configuration.html (j'ai pas compris ce que j'ai fait là)
par défaut le search index n'est pas crée, par défaut c'est /srv/graphite/index.
- On le crée avec :
sudo mkdir /srv/graphite sudo touch /srv/graphite/index
- Ensuite on configure uwsgi pour servir graphite-api à nginx (dans /etc/uwsgi/apps-available/graphite-api.ini)
[uwsgi] processes = 2 socket = localhost:8888 plugins = python3 module = graphite_api.app:app
- On active graphite-api :
ln -s /etc/uwsgi/apps-available/graphite-api.ini /etc/uwsgi/apps-enabled
- On redémarre le service uWSGI :
sudo systemctl restart uwsgi
- Enfin, on configure le vhost dans nginx (dans /etc/nginx/sites-available/graphite.conf) :
server { listen localhost:8083; location / { include uwsgi_params; uwsgi_pass localhost:8888; } }
- On active le vhost :
ln -s /etc/nginx/sites-available/graphite.conf /etc/nginx/sites-enabled
- On redémarre le service uWSGI :
sudo systemctl restart nginx.service
Grafana
Installation :
- On ajoute le dépôt de grafana dans /etc/apt/sources.list.d/grafana.list :
deb https://packagecloud.io/grafana/stable/debian/ jessie main
- On ajoute la clé de packagecloud.io à apt :
curl https://packagecloud.io/gpg.key | sudo apt-key add -
- Le paquet s'appelle grafana :
sudo apt-get install grafana
Configuration :
- Sur le serveur postgresql :
- On crée un utilisateur graphite et une base de donnée grafana (dont graphite est owner).
- Dans /etc/grafana/grafana.ini on peut éditer les lignes suivantes :
1 # pour l'instant c'est du http (c'est pas bieeeen) 2 ;cert_file = 3 ;cert_key = 4 5 # The ip address to bind to, empty will bind to all interfaces | 6 http_addr = fy.adm.crans.org 7 8 protocol = http 9 http_port = 8084 #en vrai on met ce qu'on veut ici 10 11 [...] 12 13 [database] 14 # Either "mysql", "postgres" or "sqlite3", it's your choice 15 type = postgres 16 host = pgsql.adm.crans.org 17 name = grafana 18 user = graphite 19 password = graphite_password
- On permet à grafana de se lancer sur tous les ports :
sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/grafana-server }
- On fait en sorte qu'il se lance au boot :
sudo update-rc.d grafana-server defaults 95 10
- On démarre grafana-server :
sudo service grafana-server start
- On peut alors se connecter sur $server_name:8084
Client side
Collectd