#acl +All:read = 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) . {{{#!highligt 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 : . {{{#!highlight bash # pour l'instant c'est du http (c'est pas bieeeen) ;cert_file = ;cert_key = # The ip address to bind to, empty will bind to all interfaces | http_addr = fy.adm.crans.org protocol = http http_port = 8084 #en vrai on met ce qu'on veut ici [...] [database] # Either "mysql", "postgres" or "sqlite3", it's your choice type = postgres host = pgsql.adm.crans.org name = grafana user = graphite 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 ==== == Sources == :: https://community.rackspace.com/products/f/25/t/6800 :: http://graphite-api.readthedocs.io/en/latest/index.html