====== Installation de Munin ======
Munin est un outil en deux parties :
* Munin-node qui est la partie "démon" qui surveille le système et génère les stats brutes
* Munin proprement dit est le grapheur, l'affichage de ces graphes se fait par un serveur web.
Installation des deux parties sur deux machines différentes ou sur une machine unique.\\
Munin-node génére seulement des fichiers html, png, css.. qui sont placés dans le dossier /var/cache/munin/www (pas de perl, php...)
== Ressources ==
* [[http://sorrodje.alter-it.org/index.php?article15/installation-de-munin-sur-debian-6-0|installation de Munin sur Debian]]
* [[http://www.nginxtips.com/nginx-configuration-for-munin/|Configuration du plugin Nginx pour Munin]]
==== Installer les paquets munin ====
* '' apt-get install munin munin-node ''
==== Configuration de Munin-node ====
* Ajouter un module Perl via le CPAN :
* '' cpan '' : valider les options par défaut jusqu'au prompt CPAN
* '' install LWP::UserAgent ''
* Si CPAN n'arrive pas à réaliser un make, il se peut qu'il manque les paquets pour la compilation. Sortir du CPAN (exit) puis lancer la commande : '' apt-get install build-essential autoconf automake libtool gdb''
* '' exit ''
* Éditer le fichier munin-node.conf : '' vi /etc/munin/munin-node.conf ''
* Vérifier la présence de la ligne : '' allow ^127\.0\.0\.1$ ''
* Ajouter des autorisations d'accès au munin local pour d'autres serveurs (si nécessaire) : '' allow ^xxx\.xxx\.xxx\.xxx$ ''
* Penser à modifier les firewalls (shorewall) pour autoriser le port 4949 sur la machine
* Vérification du bon fonctionnement de Munin :
* Se loguer en tant que Munin : '' sudo -u munin bash '' ou '' su - munin -s /bin/bash ''
* Générer les stats : '' /usr/share/munin/munin-update --nofork --debug ''
* De nombreuses lignes apparaissent dans la console, c'est normal
* Si tout c'est bien passé, on obtient une ligne ressemblant à : '' 2013/07/18 14:22:58 [INFO]: Munin-update finished (5.33 sec)''
* Créer un fichier de log spécifique pour //cron// :
* Éditer le fichier : '' vi /etc/rsyslog.conf ''
* Décommenter la ligne : '' cron.* /var/log/cron.log '' et modifié la ligne du dessus pour : '' *.*;cron,auth,authpriv.none -/var/log/syslog ''
* Redémarrez rsyslog : '' service rsyslog restart ''
* Vérifier que le dossier /etc/cron.d/ contient bien les fichiers : munin et munin-node. Vérifier aussi dans /home/log/cron.log que le log de munin fonctionne.
* Éditer le crontab pour y ajouter une entrée munin afin qu'il mette les stats à jour toutes les 5mn :
* '' crontab -e ''
* La ligne à ajouter : '' */5 * * * * /usr/bin/munin-cron 1>/dev/null 2>/dev/null ''
==== Ajouter les plugins **Mysql** à Munin ====
* Éditer le fichier munin-node : '' vi /etc/munin/plugin-conf.d/munin-node '' et y ajouter le contenu indiqué après la liste ci-dessous
* Ajouter les plugins mysql aux plugins munin actifs: '' ln -s /usr/share/munin/plugins/mysql_* /etc/munin/plugins/ ''
* Ajouter une entrée [client] dans /root/.my.cnf (voir installation mysql)
* Redémarrer munin : '' /etc/init.d/munin-node restart ''
==== Ajouter les plugins **Sphinx** à Munin ====
* Se rendre dans le dossier des plugins : '' cd /usr/share/munin/plugins ''
* Télécharger tous les plugins :
* '' wget -nd https://raw.github.com/munin-monitoring/contrib/master/plugins/sphinx/sphinx_{connections,documents,queries} ''
* Donner des droits d'execution : '' chmod +x sphin* ''
* Modifier les scripts des plugins Sphinx pour indiquer le bon emplacement des binaires ou dossier :
* binaire php dans l'entete du script (connections, queries) : '' #!/usr/local/php/5.5/bin/php ''
* binaire mysql (connections, queries) : '' /usr/local/mysql/5.6/bin ''
* binaire indextool (documents) : '' /home/sphinx/bin ''
* dossier data de sphinx (documents) : '' idxpath=/home/sphinx/var/data/ ''
* Ajouter les liens vers les plugins Sphinx :
* '' ln -s /usr/share/munin/plugins/sphinx_connections /etc/munin/plugins/sphinx_connections ''
* '' ln -s /usr/share/munin/plugins/sphinx_documents /etc/munin/plugins/sphinx_documents ''
* '' ln -s /usr/share/munin/plugins/sphinx_queries /etc/munin/plugins/sphinx_queries ''
* Redémarrer munin : '' /etc/init.d/munin-node restart ''
==== Ajouter les plugins **Nginx** à Munin ====
* Se rendre dans le dossier des plugins : '' cd /usr/share/munin/plugins ''
* Télécharger tous les plugins : '' wget -nd http://debianuser.org/nginx/nginx_{memory,status,traffic,request} ''
* Donner les bon droits aux fichiers : '' chmod +x nginx* ''
* Vérifier si toutes les sondes munins sont configurés : '' munin-node-configure --suggest ''
* Redémarrer munin : '' /etc/init.d/munin-node restart ''
==== Ajouter les plugins **Php-Fpm** à munin ====
* Se rendre dans le dossier des plugins : '' cd /usr/share/munin/plugins ''
* Télécharger le plugin : '' wget https://raw.github.com/MorbZ/munin-php-fpm/master/php-fpm.php -O php-fpm ''
* Donner les bon droits aux fichiers : '' chmod +x php-fpm ''
* Éditer le plugin et indiquer le bon emplacement du binaire php cli :
* '' vi /usr/share/munin/plugins/php-fpm ''
* Remplacer '' #!/usr/bin/php '' par '' #!/usr/local/php/5.6/bin/php ''
* Ajouter les plugins Php-fpm à Munin :
* '' ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-memory ''
* '' ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-cpu ''
* '' ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-count ''
* '' ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-time ''
* Vérifier si toutes les sondes munins sont configurés : '' munin-node-configure --suggest ''
* Redémarrer munin : '' service munin-node restart ''
==== Configuration de Munin (le grapheur) ====
* Munin-node génére seulement des fichiers html, png, css.. qui sont placés dans le dossier /var/cache/munin/www
* Créer un lien pour placer Munin sur le compte admin : '' ln -s /var/cache/munin/www /home/admin/www/munin ''
* Utiliser le script d'ajout de domaine virtuel pour ajouter : munin.agathis.tela-botanica.net
Fichier ///etc/munin/plugin-conf.d/munin-node// :
# Ajout de l'instance Mysql 5.6 PROD (jpm) [26-11-2013]
[mysql_56_*]
user root
env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3306
env.mysqladmin /usr/local/mysql/5.6/bin/mysqladmin
env.mysqlopts --defaults-extra-file=/root/.my.cnf
# Ajout de l'instance Mysql 5.6 TEST (jpm) [26-11-2013]
[mysql_56-test_*]
user root
env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3308
env.mysqladmin /usr/local/mysql/5.6-test/bin/mysqladmin
env.mysqlopts --defaults-extra-file=/root/.my.cnf
# Ajout de la sonde Nginx (jpm) [18-07-2013]
[nginx*]
user root
# La ligne suivante ne semble pas utile
# env.url http://agathis.tela-botanica.org/nginx_status
[nginx_traffic]
group adm
env.vhosts api.tela-botanica.org agathis.tela-botanica.net munin.agathis.tela-botanica.net sql.agathis.tela-botanica.net
env.logdir /home/log
env.flogfile nginx-access.log
env.bparam 11
env.aggregate false
Fichier /etc/munin/munin.conf :
# a simple host tree
[Agathis]
address 127.0.0.1
use_node_name yes
[Sequoia]
address 193.54.123.169
use_node_name yes
==== Configurer le fichier de conf Nginx du domaine munin ====
server {
server_name munin.agathis.tela-botanica.net www.munin.agathis.tela-botanica.net;
server_name_in_redirect off;
root "/home/admin/www/munin";
index index.html;
client_max_body_size 10m;
access_log /home/admin/_logs/access.log;
error_log /home/admin/_logs/error.log;
if ($http_user_agent ~* (Baiduspider|webalta|nikto|wkito|pikto|scan|acunetix|morfeus|webcollage|youdao) ) {
return 401;
}
if ($http_user_agent ~* (HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) ) {
return 401;
}
# Acces sécurisé :
# - créer un fichier /home/admin/www/.htpasswd
# - ajouter un utilisateur admin et définir son mot de passe avec la commande :
# htpasswd -c /home/admin/www/.htpasswd admin
# - Décommenter les lignes ci-dessous
#location / {
# auth_basic "Administrator Login";
# auth_basic_user_file /home/admin/.htpasswd;
#}
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}