Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
munin [Le 21/04/2018, 10:07] – [plugins Apache] 82.251.241.242 | munin [Le 07/02/2021, 15:21] (Version actuelle) – [Plugin sensors_] FAWTS | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | ====== Munin : le grapheur pour surveiller les machines d'un parc ====== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Munin fonctionne sur le modèle client-serveur. Un petit démon tourne sur chacune des machines devant être surveillée : // | ||
+ | |||
+ | Pour surveiller un parc informatique, | ||
+ | * le grapheur //munin// sur une machine qui va se charger de la surveillance. | ||
+ | * le démon // | ||
+ | |||
+ | Dans la mythologie nordique, Hugin et Munin sont les deux corbeaux messagers d' | ||
+ | |||
+ | ===== Munin (le grapheur) ===== | ||
+ | |||
+ | ==== Installation ==== | ||
+ | Munin est une application écrite en [[Perl|Perl]] qui génère des graphes grâce à [[rrdtool|rrdtool]]. Pour visualiser ces graphes munin génère des pages HTML. Comme pour toutes application web il faut donc avoir un serveur web déjà installé et fonctionnel. Le paquet munin fournit une configuration de base pour le serveur Apache mais cela peut généralement fonctionner avec [[nginx|Nginx]] ou [[lighttpd|Lighttpd]]. | ||
+ | Cette documentation concerne une installation avec le serveur web Apache2. | ||
+ | |||
+ | Installation des paquets sur le grapheur : | ||
+ | < | ||
+ | |||
+ | Les modules Apache // | ||
+ | |||
+ | Il faut activer le module fcgid pour Apache : | ||
+ | < | ||
+ | < | ||
+ | |||
+ | ==== Configuration ==== | ||
+ | |||
+ | === Serveur web (ici apache) === | ||
+ | |||
+ | Lors de son installation munin active automatiquement sa configuration Apache en créant les liens symboliques sous / | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | Require local | ||
+ | Require ip a.b.c.d w.x.y.z | ||
+ | </ | ||
+ | Options None | ||
+ | </ | ||
+ | |||
+ | ScriptAlias / | ||
+ | < | ||
+ | < | ||
+ | Require local | ||
+ | Require ip a.b.c.d w.x.y.z | ||
+ | </ | ||
+ | < | ||
+ | SetHandler fcgid-script | ||
+ | </ | ||
+ | < | ||
+ | SetHandler cgi-script | ||
+ | </ | ||
+ | </ | ||
+ | où a.b.c.d et w.x.y.z sont les adresses IP des machine autorisées à consulter les graphes munin qui seront accessibles par http:// | ||
+ | Pour plus d' | ||
+ | |||
+ | === Serveur Munin central === | ||
+ | |||
+ | Il faut indiquer à Munin quels hôtes il doit surveiller. Dans le fichier **/ | ||
+ | |||
+ | < | ||
+ | [localhost.localdomain] | ||
+ | address 127.0.0.1 | ||
+ | use_node_name yes | ||
+ | </ | ||
+ | Vous pouvez remplacer // | ||
+ | |||
+ | Pour chacune des machines à surveiller, vous devez indiquer son '' | ||
+ | |||
+ | Par exemple, pour la machine '' | ||
+ | |||
+ | < | ||
+ | [www.ubuntu-fr.org] | ||
+ | address 192.168.0.1 | ||
+ | use_node_name yes | ||
+ | </ | ||
+ | |||
+ | <note tip>Le paramètre **use_node_name yes** permet de prendre en compte la machine même si le nom entre crochets ne correspond pas au nom de la machine. Dans munin la machine sera toujours affichée avec le nom entre crochets. \\ | ||
+ | S'il n'est pas précisé, il est nécessaire de mettre la même chose que le retour de la commande //hostname -f// sur la machine en question, sinon la machine n' | ||
+ | |||
+ | Les informations récupérées par munin pour chaque machine dépendent de la configuration de munin-node que les machine distantes (plugins activés). | ||
+ | |||
+ | Pour être averti par courriel en cas de dépassement d'un seuil d' | ||
+ | < | ||
+ | contacts toto | ||
+ | contact.toto.command mail -s "Munin notif ${var: | ||
+ | contact.toto.always_send warning critical | ||
+ | </ | ||
+ | |||
+ | ou encore envoyer une alerte vers Nagios : | ||
+ | < | ||
+ | contact.nagios.command / | ||
+ | </ | ||
+ | |||
+ | La périodicité des mises à jour des graphes est déterminée par le programme '' | ||
+ | |||
+ | À l' | ||
+ | |||
+ | ==== Voir les graphes ==== | ||
+ | |||
+ | Il vous suffit d' | ||
+ | |||
+ | ==== Mise à jour des indicateurs des nœuds ==== | ||
+ | |||
+ | La mise à jour (télé-relevé) se fait par défaut toutes les 5 minutes, grâce à la cron ''/ | ||
+ | Pour déclencher une mise-à-jour manuelle supplémentaire : < | ||
+ | Et pour suivre ce qui se passe, le fichier journal est ''/ | ||
+ | |||
+ | ===== Munin-node (le démon sur les nœuds) ===== | ||
+ | |||
+ | Sur chaque machine que vous désirez surveiller, il vous faut installer le démon qui va répondre aux requêtes du grapheur. | ||
+ | |||
+ | ==== Installation ==== | ||
+ | Installez les paquets suivants : | ||
+ | < | ||
+ | ==== Configuration ==== | ||
+ | |||
+ | === Accès au nœud === | ||
+ | |||
+ | Pour que le grapheur accède aux informations du nœud, il faut autoriser explicitement le grapheur à se connecter au nœud. | ||
+ | |||
+ | Cette information est indiquée dans le fichier de configuration **/ | ||
+ | < | ||
+ | |||
+ | Pour autoriser votre grapheur à se connecter, vous ajouter une ligne du même type. Par exemple, si votre grapheur possède l'IP 192.168.0.253, | ||
+ | |||
+ | < | ||
+ | |||
+ | === Configuration des plugins === | ||
+ | |||
+ | Chaque information affichée dans les graphes est traitée par un plugin. Les plugins actifs sont en réalité des liens symboliques qui se trouvent dans le répertoire **/ | ||
+ | |||
+ | À l' | ||
+ | |||
+ | Le fichier de configuration des plugins est **/ | ||
+ | |||
+ | Normalement, | ||
+ | |||
+ | Pour visualiser facilement les plugins installés, vous pouvez utiliser la commande : | ||
+ | munin-node-configure | ||
+ | Cette commande vous permet également d' | ||
+ | munin-node-configure --suggest | ||
+ | vous obtiendrez les commandes de création des liens pour l' | ||
+ | munin-node-configure --suggest --shell | ||
+ | |||
+ | === Test des plugins === | ||
+ | |||
+ | Si vous créez vos plugins ou si vous désirez seulement tester la bonne configuration de vos plugins, vous ne devez pas lancer le plugin comme si vous lanciez un script shell. Vous devez utiliser la commande **munin-run**, | ||
+ | munin-run postgres_bgwriter | ||
+ | le plugin sera alors lancé avec les variables nécessaires (nom utilisateur, | ||
+ | |||
+ | === Prise en compte d'une configuration du nœud modifiée === | ||
+ | |||
+ | Une fois les modifications effectuées, | ||
+ | ==== plugins Apache ==== | ||
+ | |||
+ | Les plugins Apache ont besoin de la bibliothèque **[[apt> | ||
+ | |||
+ | Afin de récupérer les données statistique d' | ||
+ | < | ||
+ | |||
+ | ==== plugins Mysql==== | ||
+ | |||
+ | Normalement les plugins mysql sont directement activés à l' | ||
+ | |||
+ | Si ce n'est pas le cas, vous pouvez taper: | ||
+ | |||
+ | Cela vous donnera une liste des plugins en précisant s'ils sont installés et s'ils peuvent fonctionner. | ||
+ | |||
+ | Si vous avez une erreur pour les plugins mysql, vous devrez corriger les erreurs et réactiver manuellement les plugins mysql. | ||
+ | |||
+ | == Erreur Missing dependency Cache:: | ||
+ | Vous pouvez résoudre cette erreur en installant le paquet: **[[apt> | ||
+ | |||
+ | Une fois installé, vérifier que votre problème est bien corrigé avec munin-node-configure. | ||
+ | Vous pouvez ensuite réactiver les plugins mysql: < | ||
+ | Pour finir, rechargez la configuration de munin pour que ce soit pris en compte: reload munin-node | ||
+ | |||
+ | == Installer davantage de plugins MySQL== | ||
+ | < | ||
+ | |||
+ | Vous pouvez installer plusieurs autres plugins mysql pour suivre par exemple la valeur de max_connection, | ||
+ | Pour avoir une liste des plugins que vous pouvez ajouter allez dans le dossier: | ||
+ | < | ||
+ | et faites: | ||
+ | < | ||
+ | Vous obtiendrez donc la liste des graphs que peut faire mysql_. | ||
+ | Exemple: | ||
+ | * bin_relay_log | ||
+ | * commands | ||
+ | * connections | ||
+ | * files_tables | ||
+ | * innodb_bpool | ||
+ | * innodb_bpool_act | ||
+ | * innodb_insert_buf | ||
+ | * innodb_io | ||
+ | * innodb_io_pend | ||
+ | * innodb_log | ||
+ | * innodb_rows | ||
+ | * innodb_semaphores | ||
+ | * innodb_tnx | ||
+ | * myisam_indexes | ||
+ | * network_traffic | ||
+ | * qcache | ||
+ | * qcache_mem | ||
+ | * replication | ||
+ | * select_types | ||
+ | * slow | ||
+ | * sorts | ||
+ | * table_locks | ||
+ | * tmp_tables | ||
+ | |||
+ | Si vous voulez ajouter qcache par exemple, faites un lien de la sorte: | ||
+ | < | ||
+ | C'est donc sous la forme: ln -ls / | ||
+ | |||
+ | ==== Plugins Proftpd ==== | ||
+ | |||
+ | Les plugins Proftpd ont besoin de **[[apt> | ||
+ | |||
+ | < | ||
+ | |||
+ | et repérez la balise TransferLog, | ||
+ | |||
+ | Regardez les permissions et propriétaires du fichier. Si le propriétaire est root et son groupe, root, peut être vaut-il mieux modifier son groupe. Je l'ai mis à adm. Et j'ai autorisé la lecture et l' | ||
+ | |||
+ | < | ||
+ | chmod ug+rw xferlog</ | ||
+ | |||
+ | Ensuite, assurez vous que les plugins proftpd tournent bien dans le bon groupe. Pour ce faire, éditez le fichier / | ||
+ | |||
+ | < | ||
+ | group adm | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | ==== Plugin df ==== | ||
+ | |||
+ | Le plugin df, comme tous les plugins qui affichent l' | ||
+ | |||
+ | < | ||
+ | [df*] | ||
+ | user root | ||
+ | </ | ||
+ | |||
+ | Puis relancer le service : | ||
+ | |||
+ | < | ||
+ | sudo service munin-node restart | ||
+ | </ | ||
+ | |||
+ | Vous devriez alors voir toutes vos partitions sauf /home, c'est une nouveauté avec systemd. | ||
+ | |||
+ | Il vous faudra alors créer un fichier / | ||
+ | |||
+ | < | ||
+ | [Service] | ||
+ | ProtectHome=read-only | ||
+ | </ | ||
+ | |||
+ | Puis relancer systemctl : | ||
+ | |||
+ | < | ||
+ | sudo systemctl daemon-reload | ||
+ | </ | ||
+ | |||
+ | Puis relancer munin : | ||
+ | |||
+ | < | ||
+ | sudo service munin-node restart | ||
+ | </ | ||
+ | |||
+ | Vous devriez maintenant voir toutes vos partitions. | ||
+ | |||
+ | S'il en manque, vous pouvez les forcer en éditant de nouveau / | ||
+ | |||
+ | < | ||
+ | | ||
+ | </ | ||
+ | |||
+ | S'il y en a en trop, ça va ressembler à : | ||
+ | |||
+ | < | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Ce qui chez moi donne : | ||
+ | |||
+ | < | ||
+ | [df*] | ||
+ | user root | ||
+ | env.warning 92 | ||
+ | env.critical 98 | ||
+ | # | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Une fois ces modifications effectuées, | ||
+ | |||
+ | < | ||
+ | sudo service munin-node restart | ||
+ | </ | ||
+ | |||
+ | ==== Plugin sensors_ ==== | ||
+ | |||
+ | Ce plugin permet d' | ||
+ | |||
+ | Théoriquement, | ||
+ | < | ||
+ | [sensors_*] | ||
+ | env.ignore_temp3 | ||
+ | env.ignore_temp4 | ||
+ | env.ignore_temp5 | ||
+ | env.ignore_fan5 | ||
+ | </ | ||
+ | |||
+ | Mais ça ne fonctionne pas. | ||
+ | |||
+ | Le work-around, | ||
+ | |||
+ | Par exemple, si | ||
+ | |||
+ | < | ||
+ | sensors | ||
+ | </ | ||
+ | |||
+ | vous retourne : | ||
+ | |||
+ | < | ||
+ | it8620-isa-0a40 | ||
+ | Adapter: ISA adapter | ||
+ | in0: | ||
+ | in1: 2.51 V (min = +0.00 V, max = +3.06 V) | ||
+ | in2: 2.03 V (min = +0.00 V, max = +3.06 V) | ||
+ | in3: 2.02 V (min = +0.00 V, max = +3.06 V) | ||
+ | in4: 1.06 V (min = +0.00 V, max = +3.06 V) | ||
+ | in5: | ||
+ | in6: 2.50 V (min = +0.00 V, max = +3.06 V) | ||
+ | 3VSB: 3.38 V (min = +0.00 V, max = +6.12 V) | ||
+ | Vbat: 3.14 V | ||
+ | fan1: 0 RPM (min = 0 RPM) | ||
+ | fan2: 0 RPM (min = 0 RPM) | ||
+ | fan3: 0 RPM (min = 0 RPM) | ||
+ | fan4: 0 RPM (min = 0 RPM) | ||
+ | fan5: 0 RPM (min = 0 RPM) | ||
+ | temp1: | ||
+ | temp2: | ||
+ | temp3: | ||
+ | temp4: | ||
+ | temp5: | ||
+ | temp6: | ||
+ | </ | ||
+ | |||
+ | Le nom du chip est it8620-isa-0a40 et grapher les fan et temp3 ne sert à rien. On va donc éditer le fichier / | ||
+ | |||
+ | < | ||
+ | sudo vim / | ||
+ | </ | ||
+ | |||
+ | afin qu'il ressemble à ça : | ||
+ | |||
+ | < | ||
+ | chip " | ||
+ | ignore temp3 | ||
+ | ignore fan1 | ||
+ | ignore fan2 | ||
+ | ignore fan3 | ||
+ | ignore fan4 | ||
+ | ignore fan5 | ||
+ | </ | ||
+ | |||
+ | Ainsi ces 6 capteurs ne seront plus graphés dans Munin et n’apparaitront plus lorsque vous lancerez la commande sensors. | ||
+ | |||
+ | ==== Résolution des problèmes courants ==== | ||
+ | |||
+ | Si au niveau de votre grapheur, une sonde ne génère //aucun// graphe, vérifiez que les access-list configurées dans / | ||
+ | |||
+ | Si certains graphes sont générés mais pas tous, vous avez probablement un plugin qui n'est pas fonctionnel. Connectez vous sur une machine pouvant accéder à la sonde (par exemple le grapheur). Sur cette machine, [[: | ||
+ | |||
+ | < | ||
+ | telnet x.x.x.x 4949 | ||
+ | </ | ||
+ | |||
+ | Vous pouvez alors afficher l'aide en appuyant sur entrée afin de voir quelle commande sont disponibles. On retiendra principalement les trois directives suivantes : | ||
+ | * //list :// liste les plugins munin activés, | ||
+ | * //fetch __nom_du_plugin__ :// déclenche une collecte de point avec ce plugin, | ||
+ | * //quit :// quitte la sonde. | ||
+ | |||
+ | //Exemple :// dans ce qui suit, on liste les plugins (list), on déclenche une collecte de point pour le plugin apache_accesses (fetch apache_accesses) et on quitte (quit) | ||
+ | |||
+ | < | ||
+ | Trying 127.0.0.1... | ||
+ | Connected to localhost.localdomain. | ||
+ | Escape character is ' | ||
+ | # munin node at nom_de_la_machine_sonde | ||
+ | list | ||
+ | apache_accesses apache_processes apache_volume cpu cpuspeed df df_inode entropy exim_mailqueue exim_mailstats forks fw_conntrack fw_forwarded_local http_loadtime if_eth0 interrupts iostat iostat_ios irqstats load memory mysql_queries mysql_slowqueries mysql_threads open_files open_inodes proc_pri processes smart_sda smart_sdb swap threads uptime users vmstat | ||
+ | fetch apache_accesses | ||
+ | accesses80.value 11705 | ||
+ | . | ||
+ | quit | ||
+ | Connection closed by foreign host. | ||
+ | </ | ||
+ | |||
+ | Dans cet exemple, la commande s'est bien déroulée, donc le plugin est fonctionnel. En cas de message d' | ||
+ | ===== Règles Iptables (Firewall) ===== | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | Vous pouvez également autoriser la " | ||
+ | |||
+ | Par exemple, chez moi, seul le pc de la maison est autorisé à récupérer les informations du serveur dédié. En supposant que mon ip à la maison soit 82.xxx.xxx.xxx Les commandes iptables à lancer sur le serveur ressembleraient donc à ceci: | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | ps: ces règles s' | ||
+ | |||
+ | ===== Liens ===== | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * Exemple de Munin en action : [[http:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // |