Contenu
Monitorez plusieurs serveurs dédiés depuis une seule interface web
Munin est un script pour monitorer un serveur Linux, il monitore des programme comme Apache, Mysql, l’activité du disque, le CPU,les process, le serveur de mail Postfix et plus encore, via un système de plugin, donc une installation standard nécessite d’activer des plugin pour aovir tout ça. On va voir tout ça ne vous inquiétez pas !
Munin a la capacité de monitorer des serveurs autres que ceux sur lequel il est installé. Par exemple, soit le serveur principal sur lequel vous installez Munin Master, ce serveur aura l’affichage sur une page web des graphiques.
Pour monitorer un second serveur dédié, sur ce dernier il faut installer Munin Node, un programme différent spécialement pour ça. Un node est un serveur Linux qui n’est pas principal.
Peu importe le système d’exploitation (Linux, Windows), les données sont rapatriés en mode texte vers le node maître. Donc il suffit pour vous d’installer et de configurer le node secondaire, faire un petit paramétrage, et du côté du node maître de configurer le node secondaire (donc faire une configuration sur les deux serveurs).
Installation de Munin Master
Je suppose que Apache a été déjà installé, on va installer munin maître, cette installatin est plus longue que pour installer munin-node sur un serveur à monitorer.
apt-get install -y munin
Configurer le fichier /etc/munin/munin.conf, décommenter les lignes suivantes en début de fichier
dbdir /var/lib/munin htmldir /var/www/munin logdir /var/log/munin rundir /var/run/munin tmpldir /etc/munin/templates
Créer un utilisateur munin, et le répertoire web dans lequel Apache va accéder pour afficher les informations
Ensuite notion important, configurer le host tree pour le node master (oui on surveille le master et d’autres serveur dédiés)
[MuninMaster] # avant renommage [localhost.localdomain] address 127.0.0.1 use_node_name yes
Ensuite éditer le fichier apache24.conf
Alias /munin /var/www/munin
Ensuite effacer la section Directory pour la remplacer par ça :
<Directory /var/www/munin> Require all granted Options FollowSymLinks SymLinksIfOwnerMatch </Directory>
Et pour la section Location, remplacer Require local par Require all granted pour permettre à toutes les IP de consulter la page de graphique Munin.
Installation de Munin Node
Sur le serveur node 91.111.111.110 :
#debian apt-get install -y munin-node #centos yum install munin-node -y
Ensuite autoriser l’IP d’écoute dans le fichier /etc/munin/munin-node.conf,
allow ^111\.111\.111\.145$ allow ^::1$
Puis redémarrer le noeud
#centos service munin-node restart #debian systemctl restart munin-node
Sur le serveur maître 111.111.111.145, configurer le node dans /etc/munin/munin.conf (ensuite redémarrer):
[MuninNode] address 91.111.111.110 use_node_name yes
Dupliquez ces 3 lignes pour tout noeud supplémentaire.
Activation des plugins
Les plugins sont situés dans le répertoire /usr/share/munin/plugins, pour les activer il faut créer un lien symbolique vers le plugin dans le répertoire /etc/munin/plugins.
Il existe un utilitaire munin-node-configure qui permet d’auditer en ligne de commande les plugins.
Régler les problèmes de Munin
Le node secondaire n’apparait pas dans le panneau d’administration
Pour détecter ce qui ne vas pas, souvent pourquoi le node master n’arrive pas à rapatrier des données d’un node secondaire, il est utile de surtout regarder le fichier munin-update.log. Les raisons peuvent être multiples, vérifiez que vous pouvez réussir un telnet vers l’adresse IP sur le port 4949.(ne pas utiliser nmap).
telnet 91.111.111.110:4949
Si vous avez un message d’erreur, service inaccessible, il se peut qu’une règle du firewall empêche la transmission de données. Ou alors que le service node secondaire n’ai pas redémarré.
Certains processus sont invisibles
Il peut apparaitre que certains processus ne soient pas visibles après le démarrage de munin-node, j’ai eu le cas d’Apache non visible. Dans ce cas l’utilitaire munin-node-configure peut être utile.
Un service n’est pas présent? vous pouvez utiliser munin-node-configure pour voir la liste des services :
munin-node-configure #va donner la liste des plugin actifs et non actifs. munin-node-configure --suggest #va suggérer la liste des plugins à utiliser, et donne aussi un message sur la raison de la non activation.
Voici un cas réel de message suite à l’ajout du paramètre –suggest :
Plugin | Used | Suggestions ------ | ---- | ----------- acpi | no | no [cannot read /sys/class/thermal/thermal_zone*/temp] amavis | no | no apache_accesses | no | no [apache server-status not found. check if mod_status is enabled] apache_processes | no | no [apache server-status not found. check if mod_status is enabled] apache_volume | no | no [apache server-status not found. check if mod_status is enabled] apc_envunit_ | no | no [no units to monitor] bonding_err_ | yes | yes (bond0) courier_mta_mailqueue | no | no [spooldir not found] courier_mta_mailstats | no | no [could not find executable] courier_mta_mailvolume | no | no [could not find executable] cps_ | no | no cpu | yes | yes cpuspeed | no | no [missing /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state] cupsys_pages | no | no [could not find logdir] df | yes | yes df_inode | yes | yes diskstats | yes | yes entropy | yes | yes exim_mailqueue | no | no [no exiqgrep] exim_mailstats | no | no ['/usr/sbin/exim -bP log_file_path' returned an error] fail2ban | no | no forks | yes | yes fw_conntrack | yes | yes fw_forwarded_local | yes | yes fw_packets | yes | yes hddtemp_smartctl | yes | yes http_loadtime | yes | yes if_ | yes | yes (bond0 dummy0 eth0 ip6tnl0 tunl0) if_err_ | yes | yes (bond0 dummy0 eth0 ip6tnl0 tunl0) interrupts | yes | yes ip_ | no | no [could not run iptables as user nobody] ipmi_ | no | no [missing ipmitool command] irqstats | yes | yes load | yes | yes lpstat | no | no [lpstat not found] memory | yes | yes munin_stats | no | no [munin-update was not found at /usr/share/munin/munin-update] mysql_ | no | no [Missing dependency Cache::Cache] netstat | yes | yes nfs4_client | yes | yes nfs_client | yes | yes nfsd | yes | yes nfsd4 | yes | yes nginx_request | no | no [no nginx status on http://localhost/nginx_status] nginx_status | no | no [no nginx status on http://localhost/nginx_status] ntp_kernel_err | no | no ntp_kernel_pll_freq | no | no ntp_kernel_pll_off | no | no ntp_offset | no | no [no ntpq program] ntp_states | no | no [ntpq not found] nvidia_ | no | no [no nvclock executable at /usr/bin/nvclock, please configure] open_files | yes | yes open_inodes | yes | yes pgbouncer_connections | no | no pgbouncer_requests | no | no postfix_mailqueue | yes | yes postfix_mailvolume | yes | yes postgres_autovacuum | no | no postgres_bgwriter | no | no postgres_cache_ | no | no postgres_checkpoints | no | no postgres_connections_ | no | no postgres_connections_db | no | no postgres_locks_ | no | no postgres_oldest_prepared_xact_ | no | no postgres_prepared_xacts_ | no | no postgres_querylength_ | no | no postgres_scans_ | no | no postgres_size_ | no | no postgres_transactions_ | no | no postgres_tuples_ | no | no postgres_users | no | no postgres_xlog | no | no proc | no | no proc_pri | yes | yes processes | yes | yes ps_ | no | no qmailqstat | no | no selinux_avcstat | no | no [missing /selinux/avc/cache_stats file] sendmail_mailqueue | no | no sendmail_mailstats | no | no [no mailstats command] sendmail_mailtraffic | no | no [no mailstats command] slapd_ | no | no [IO::Socket::INET: connect: Connection refused] slapd_bdb_cache_ | no | no [Can't execute db_stat file '/usr/bin/db4.6_stat'] slony_lag_ | no | no smart_ | no | no [no drives accessible] snort_alerts | no | no [/var/snort/snort.stats not readable] snort_bytes_pkt | no | no [/var/snort/snort.stats not readable] snort_drop_rate | no | no [/var/snort/snort.stats not readable] snort_pattern_match | no | no [/var/snort/snort.stats not readable] snort_pkts | no | no [/var/snort/snort.stats not readable] snort_traffic | no | no [/var/snort/snort.stats not readable] squeezebox_ | no | no [no connection on localhost port 9090] squid_cache | no | no [could not connect: Connection refused] squid_objectsize | no | no [could not connect: Connection refused] squid_requests | no | no [could not connect: Connection refused] squid_traffic | no | no [could not connect: Connection refused] swap | yes | yes threads | yes | yes uptime | yes | yes users | yes | yes varnish_ | no | no [varnishstat could not be found] vmstat | yes | yes vserver_cpu_ | no | no [/proc/virtual/info not found] vserver_loadavg | no | no [/proc/virtual/info not found] vserver_resources | no | no [/proc/virtual/info not found] yum | no | no [Could not find statefile. Please read 'munindoc yum'] # The following plugins caused errors: # fail2ban: # Junk printed to stderr # pgbouncer_connections: # Junk printed to stderr # pgbouncer_requests: # Junk printed to stderr # postgres_autovacuum: # Non-zero exit during autoconf (255) # postgres_bgwriter: # Non-zero exit during autoconf (255) # postgres_cache_: # Non-zero exit during autoconf (255) # postgres_checkpoints: # Non-zero exit during autoconf (255) # postgres_connections_: # Non-zero exit during autoconf (255) # postgres_connections_db: # Non-zero exit during autoconf (255) # postgres_locks_: # Non-zero exit during autoconf (255) # postgres_oldest_prepared_xact_: # Non-zero exit during autoconf (255) # postgres_prepared_xacts_: # Non-zero exit during autoconf (255) # postgres_querylength_: # Non-zero exit during autoconf (255) # postgres_scans_: # Non-zero exit during autoconf (255) # postgres_size_: # Non-zero exit during autoconf (255) # postgres_transactions_: # Non-zero exit during autoconf (255) # postgres_tuples_: # Non-zero exit during autoconf (255) # postgres_users: # Non-zero exit during autoconf (255) # postgres_xlog: # Non-zero exit during autoconf (255) # proc: # In family 'auto' but doesn't have 'autoconf' capability # slony_lag_: # Junk printed to stderr
Donc pour activer les affichage de Apache, il faut que mod_status soit activé, normalement c’est le cas. Il ne vous reste plus qu’à créer un lien symbolique linux dans le répertoire /etc/munin/plugins vers un fichier du répertoire /usr/share/munin/plugins/
ln -s /usr/share/munin/plugins/apache_accesses apache_accesses ln -s /usr/share/munin/plugins/apache_processes apache_processes ln -s /usr/share/munin/plugins/apache_volume apache_volume