Monitorez des serveurs Linux avec Munin

Munin

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

 

 

 

 

 

Retour en haut