Graphite et Nginx

Cela fait un moment que je travaille sur Graphite et je ne suis vraiment pas fan d’apache. Cela m’a pris un peu de temps mais j’ai finalement reussi a installer et configurer supervisor avec uwsgi et nginx. J’ai installe graphite 0.9.9 depuis les sources. Cette installation est basee sur une Debian stable. Commencons par le commencement et installons quelques paquets : apt-get install python-dev libxml2-dev build-essential python-django-tagging. Decompactez ensuite carbon, whisper et graphite-web dans cet ordre et installez les (le repertoire par default est /opt/graphite).

Recuperez ensuite uwsgi et decompactez le et executez ce qui suit :

wget http://projects.unbit.it/downloads/uwsgi-0.9.9.2.tar.gz
tar xf uwsgi-0.9.9.2.tar.gz 
cd uwsgi-0.9.9.2
make -f Makefile.Py26 
cp uwsgi /usr/local/bin/
cp nginx/uwsgi_params /etc/nginx/

Maintenant que tout ce petit monde est installe, on peux passer a la configuration de supervisor (apt-get install supervisor). Creez un fichier qui s’appelle : /etc/supervisor/conf.d/uwsgi.conf et copiez le contenu ci-dessous dedans. Pour redemarrer supervisor, je conseille un stop/start. Restart ne marche pas correctement pour moi.

[program:uwsgi]
command=/usr/local/bin/uwsgi
  --module 'django.core.handlers.wsgi:WSGIHandler()'
  --socket 127.0.0.1:3031
  --chdir /opt/graphite/webapp
  --processes 1
  --master
  --harakiri 120
  --max-requests 5000
  --pythonpath "['/opt/graphite/webapp'] + sys.path"
directory=/opt/graphite/webapp
environment=DJANGO_SETTINGS_MODULE='graphite.settings'
user=www-data
autostart=true
autorestart=true
stdout_logfile=/var/log/nginx/uwsgi.log
redirect_stderr=true
stopsignal=QUIT

Il vous faut a present configurer nginx, cet exemple considere que j’utilise le repertoire graphite au sein d’un host virtuel, si vous voulez utiliser /, il vous faudra modifier. Voila ma config complete :

server {
        listen 80;
        listen [::]:80; # use this only if using IPv6
        client_max_body_size    4M;
        server_name  graphite.frlinux.net;
        root   /var/www/stats;
        access_log  /var/log/nginx/stats.access.log;
        error_log  /var/log/nginx/stats.error.log;

        location / {
        }
       location /graphite/ {
                gzip off;
                include uwsgi_params;
                uwsgi_pass      127.0.0.1:3031;
        }
       location /content {
                alias /opt/graphite/webapp/graphite/content;
                gzip off;
                include uwsgi_params;
                uwsgi_pass      127.0.0.1:3031;
        }
       location /dashboard {
                alias /opt/graphite/webapp/graphite/dashboard;
                gzip off;
                include uwsgi_params;
                uwsgi_pass      127.0.0.1:3031;
        }
       location /metrics {
                alias /opt/graphite/webapp/graphite/metrics;
                gzip off;
                include uwsgi_params;
                uwsgi_pass      127.0.0.1:3031;
        }
       location /render {
                alias /opt/graphite/webapp/graphite/render;
                gzip off;
                include uwsgi_params;
                uwsgi_pass      127.0.0.1:3031;
        }
       location /browser {
                alias /opt/graphite/webapp/graphite/browser;
                gzip off;
                include uwsgi_params;
                uwsgi_pass      127.0.0.1:3031;
        }
       location /composer {
                alias /opt/graphite/webapp/graphite/composer;
                gzip off;
                include uwsgi_params;
                uwsgi_pass      127.0.0.1:3031;
        }
}

Et voila, il ne vous reste plus qu’a pointer votre navigateur vers : http://site.example.com/graphite et cela devrait vous presenter vos donnees. Il vous faudra egalement securiser votre installation mais ce n’est pas le but de cet article.