Graphique d'utilisation du serveur : Munin (Serveur Web sur Debian Squeeze)

Publié le

Maintenant que le serveur fonctionne et a tous les services requis, il serait bon de savoir si tout fonctionne bien, d'avoir des graphes d'utilisation etc...

Pour céer des graphiques d'utilisation de notre serveur, nous allons utiliser munin.

On l'installe avec quelques librairies utiles au bon fonctionnement de certains plugins et de quoi en ajouter des autres (git et zip) :

aptitude install munin munin-node munin-plugins-extra libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl liburi-perl libwww-perl git zip unzip

Lorsque l'installation est terminée, commençons par ajouter des plugins standard déjà disponibles, et supprimons-en un qui ne fonctionne pas sur Debian apparamment :

ln -s /usr/share/munin/plugins/netstat /etc/munin/plugins/netstat
ln -s /usr/share/munin/plugins/postfix_mailstats /etc/munin/plugins/postfix_mailstats
ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/nginx_request
ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/nginx_status
ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes
ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries
ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads
rm /etc/munin/plugins/cpuspeed

Pour l'utilisation de PHP, nous utilisons PHP-FPM. Et nous avons déjà installé de quoi connaître le nombre de processus, la mémoire utilisée etc... Il existe sur github un panel de plugins munin pour créer les graphiques correspondant. Installons les en quelques lignes de commande :

cd /usr/share/munin/plugins
git clone git://github.com/bummercloud/php5-fpm-munin-plugins.git
chmod +x php5-fpm-munin-plugins/phpfpm_*
ln -s /usr/share/munin/plugins/php5-fpm-munin-plugins/phpfpm_average /etc/munin/plugins/phpfpm_average
ln -s /usr/share/munin/plugins/php5-fpm-munin-plugins/phpfpm_connections /etc/munin/plugins/phpfpm_connections
ln -s /usr/share/munin/plugins/php5-fpm-munin-plugins/phpfpm_memory /etc/munin/plugins/phpfpm_memory
ln -s /usr/share/munin/plugins/php5-fpm-munin-plugins/phpfpm_status /etc/munin/plugins/phpfpm_status
ln -s /usr/share/munin/plugins/php5-fpm-munin-plugins/phpfpm_processes /etc/munin/plugins/phpfpm_processes

De la même façon, il est intéressant d'avoir des statistiques sur APC, pour savoir ce qu'il a en cache et si la configuration est adapté :

cd /usr/share/munin/plugins
wget http://munin-php-apc.googlecode.com/files/munin_plugin_php_apc-0.1.zip
unzip munin_plugin_php_apc-0.1.zip
rm munin_plugin_php_apc-0.1.zip
cp /usr/share/munin/plugins/php_apc/apc_info.php /home/var/www/
chown www-data:www-data /home/var/www/apc_info.php
ln -s /usr/share/munin/plugins/php_apc/php_apc_ /etc/munin/plugins/php_apc_fragmentation
ln -s /usr/share/munin/plugins/php_apc/php_apc_ /etc/munin/plugins/php_apc_hit_miss
ln -s /usr/share/munin/plugins/php_apc/php_apc_ /etc/munin/plugins/php_apc_purge
ln -s /usr/share/munin/plugins/php_apc/php_apc_ /etc/munin/plugins/php_apc_rates
ln -s /usr/share/munin/plugins/php_apc/php_apc_ /etc/munin/plugins/php_apc_usage

Voilà nos plugins installé et prêt à être utilisé. Il ne reste plus qu'à en paramétré quelques un pour bien fonctionner sur notre installation. Dans le fichier /etc/munin/plugin-conf.d/munin-node ajouter tout en bas :

[netstat]
user root

[cpuspeed]
user root

[phpfpm_*]
user root
env.url http://localhost/php_status
env.ports 80
env.phpbin php-fpm

[php_apc_*]
user root
env.url http://localhost/apc_info.php?auto

Munin a un fonctionnement simple : il enregistre les chiffres d'un côté, et créer les fichiers images et HTML de l'autre. On peut paramétrer le dossier de destination de ces HTML :

mkdir /home/var/www/munin
chown munin:munin /home/var/www/munin

Puis dans le fichier /etc/munin/munin.conf :

htmldir /home/var/www/munin

Pour accéder aux statistiques générés par munin, nous allons définir un nouveau sous-domaine, protégé par login/mot de passe et accessible uniquement en SSL.

Commençons par généré le certificat SSL :

make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/munin.key
cp /etc/ssl/private/munin.key /etc/ssl/certs/munin.pem

A la question qui vous sera posé, vous devrez renseigné l'URL pour accéder à vos stats. Par exemple munin.domain.tld

La première commande permet de généré le certificat, avec la clé privée et la clé publique dans le même et unique fichier. Ensuite, il faut la copier puis éditez chacun des fichiers pour séparer en deux fichiers.

Dans le fichier /etc/ssl/private/munin.key, il faut ne laisser que ce qui est entre -----BEGIN RSA PRIVATE KEY----- et -----END RSA PRIVATE KEY----- (la clé privée).

Dans le fichier /etc/ssl/certs/munin.pem, il faut ne laisser que ce qui est entre -----BEGIN CERTIFICATE----- et -----END CERTIFICATE----- (la clé publique).

Puis, il faut ajouter notre sous-domaine à Nginx. Dans le fichier /etc/nginx/sites-available/munin :

server {
    listen   [::]:443 ssl;
    ssl_certificate /etc/ssl/certs/munin.pem;
    ssl_certificate_key /etc/ssl/private/munin.key;

    server_name munin.domain.tld;
    root /home/var/www/munin/;
    
    auth_basic "RESTRICTED ACCESS";
    auth_basic_user_file /home/var/www/munin/.htpasswd;

    location ~ /\. {
        deny  all;
    }
    access_log /var/log/nginx/munin/access.log;
    error_log /var/log/nginx/munin/error.log;
}

Créeons le dossier des logs et activons le site :

mkdir /var/log/nginx/munin
ln -s /etc/nginx/sites-available/munin /etc/nginx/sites-enabled/munin

Enfin, il faut créer le fichier /home/var/www/munin/.htpasswd : Chaque ligne correspond à un utilisateur suivi de son mot de pass crypté, séparé par :. Pour crypter le ot de passe, vous pouvez utilisez ce formulaire en ligne.

 

Comme d'habitude, on termine en rechargeant les démons modifiés :

/etc/init.d/munin-node force-reload
/etc/init.d/nginx force-reload

 

Plus qu'à prendre son mal en patience pour voir les graphes se remplir. En attendont, passons à l'installation de monit, pour surveiller tous ces services.

 

Retour au sommaire du tutorial complet.