Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Munin ====== * [[https://doc.ubuntu-fr.org/munin]] * [[https://angristan.fr/monitorer-serveur-linux-munin/]] * [[https://www.noobunbox.net/serveur/monitoring/generation-dynamique-de-graphiques-sous-munin]] * [[https://www.geek17.com/fr/content/debian-8-jessie-monitorer-nginx-et-mysql-grace-a-munin-37]] Fonctionnement: un serveur va se connecter à des nœuds pour récupérer les données toutes les 5 min. ----------- ==== Installation d'un nœud ==== <code bash> apt install munin-node munin-plugins-extra </code> Il est possible de visualiser l'état des plugins (données collectées): <code bash> munin-node-configure </code> En rajoutant ''%%--%%suggest'', il est possible de savoir quels plugins il est pertinent d'activer et lesquels posent problème. L'activation d'un plugin se fait en faisant un lien symbolique de ''/usr/share/munin/plugins/<plugin>'' vers ''/etc/munin/plugins/''. Pour les plugins qui proposent plusieurs infos (signalés par un plus dans la liste), il faut créer le lien symbolique en ajoutant un underscore et le nom du sous-plugin. Après chaque modification, il faut redémarrer le service ''munin-node''. === Plugins === == Nginx == Pour Nginx, il faut installer le paquet ''libwww-perl'' et ajouter dans la partie ''server'' du fichier ''/etc/nginx/conf.d/default.conf'': <code nginx> location /nginx_status { stub_status on; # return basic status information access_log off; allow 127.0.0.1; # restrict access to local only deny all; } </code> == MySQL == Pour MySQL, il faut installer le paquet ''libcache-cache-perl''. == PiHole == Plugin pour monitorer PiHole: [[https://github.com/Rauks/MuninPiholePlugins]] mais préférer le fork [[https://github.com/RenWal/MuninPiholePlugins]] qui contient un graphe en plus. Il faut créer un token depuis l'interface d'administration de PiHole et l'utiliser : * ''/admin/api.php?summary&auth=$envtoken'', il faut ensuite supprimer le séparateur des milliers : <code bash>stats=$(echo $apicall | sed 's/[{}"]//g' | sed -E "s/([0-9]),([0-9])/\1\2/g" | tr "," "\n")</code> * ''/admin/api.php?getQueryTypes&auth=$envtoken'' == Débit Internet == Pour monitorer le débit de la connexion Internet, utiliser l'outil de Ookla : https://www.speedtest.net/apps/cli. Il est ensuite possible de stocker le résultat de la commande suivante dans un fichier : <code bash> speedtest --accept-license --accept-gdpr --format=json-pretty </code> et ensuite utiliser les deux plugins suivants : <file bash latency> #!/bin/bash case $1 in config) echo "graph_category network" echo "graph_title Latency" echo "graph_args -l 0" echo "graph_vlabel ms" echo "graph_scale no" echo "latency.label Latency" echo "latency.type GAUGE" echo "latency.draw LINE1" echo "graph_info Graph of Internet Connection Latency" exit 0;; esac OUTPUT=$(jq .ping.latency speedtest.out) echo "latency.value $OUTPUT" </file> <file bash speedtest> #!/bin/bash case $1 in config) echo "graph_category network" echo "graph_title Speedtest" echo "graph_args --base 1000 -l 0" echo "graph_vlabel DL / UL" echo "graph_scale no" echo "down.label DL" echo "down.type GAUGE" echo "down.draw LINE1" echo "up.label UL" echo "up.type GAUGE" echo "up.draw LINE1" echo "graph_info Graph of Internet Connection Speed" exit 0;; esac DOWNLOAD=$(jq ".download.bandwidth*8/1e6" speedtest.out) UPLOAD=$(jq ".upload.bandwidth*8/1e6" speedtest.out) echo "down.value $DOWNLOAD" echo "up.value $UPLOAD" </file> == Taille de dossiers == <file bash du_> #!/bin/bash : <<=cut =head1 NAME du - Size of directories =head1 CONFIGURATION Put this file in "/usr/local/share/munin/plugins/du_". Then, create a symbolic link to this file called, for instance, "du_work". "work" will be the name of the graph. The configuration should look like the following: [du_work] env.directories /path/to/dir1 /path/to/dir2 env.prefix /path/to/ env.critical 1073741824 - "directories" contains a space-separated list of directories to report size of. - "prefix" (optionnal) is the prefix of directories to hide in graph labels. - "critical" (optionnal) is the critical size (in bytes) for all directories. =cut GRAPH_NAME=${0##*du_} DIRECTORIES=${directories:-UNSET} CRITICAL=${critical:-UNSET} PREFIX=${prefix:-UNSET} case $1 in config) echo "graph_title Directory size $GRAPH_NAME" echo "graph_category disk" echo "graph_args --base 1024 -l 0" echo "graph_vlabel Size" echo "graph_info Graph of size occupied by directories" if [ "$DIRECTORIES" != "UNSET" ]; then for d in $DIRECTORIES do slug=$(echo $d | sed 's/\//_/g') if [ "$PREFIX" != "UNSET" ]; then echo "${slug}.label ${d#"$PREFIX"}" else echo "${slug}.label $d" fi echo "${slug}.type GAUGE" echo "${slug}.draw LINE1" if [ "$CRITICAL" != "UNSET" ]; then echo "${slug}.critical $CRITICAL" fi done fi exit 0;; esac if [ "$DIRECTORIES" != "UNSET" ]; then for d in $DIRECTORIES do slug=$(echo $d | sed 's/\//_/g') echo "${slug}.value $(du -sb $d | cut -f 1)" done fi </file> == Données SMART d'un disque dur == [[linux:disks_partitions|Installer et activer]] les données SMART du disque dur. Copier le plugin ''smart_<disque dur>'', même si Munin ne le suggère pas. Il est possible de désactiver les avertissements en désactivant la variable ''report_warnings'' directement dans le script. == Données des disques durs montés dans un sous-dossier de /home == Il faut ajouter ''ProtectHome=false'' à la surcharge du service (voir //Autoriser les plugins à accéder au dossier temporaire//) ([[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=921985|Source]]) == SSH == [[https://github.com/munin-monitoring/contrib/blob/master/plugins/ssh/sshd_log]] <code conf> [sshd_log] user root group root env.logfile /var/log/auth.log env.type DERIVE </code> == Autoriser les plugins à accéder au dossier temporaire == [[linux:service#surcharger_un_service|Surcharger le service]] ''munin-node'' avec le contenu suivant: <code service> [Service] PrivateTmp=false </code> [[https://github.com/munin-monitoring/munin/issues/1236|Source]] === Debuguer === Il est possible d'exécuter la commande suivante pour simuler la réponse que recevra Munin en interrogeant le plugin: <code bash> sudo munin-run <plugin> </code> Une façon plus sûre de tester (pour vraiment voir ce que va obtenir le serveur Munin): <code bash> nc localhost 4949 # munin node at <hostname> fetch <plugin> # ... réponse ... </code> ------ ==== Installation du serveur ==== <code bash> apt install munin </code> Les noeuds dont il faut récolter les données sont définis dans le fichier ''/etc/munin/munin.conf''. Il est possible de spécifier le port d'écoute des noeuds (par défaut Munin communique sur le port 4949, ne pas oublier de l'ouvrir sur les pare-feus !): <code conf> [host] address 127.0.0.1 port 4950 use_node_name yes </code> Pour préciser les groupes, visibles dans l'interface web: <code conf> [groupe;host] </code> Les fichiers de l'interface web sont générés dans le dossier ''/var/cache/munin/www''. === Changer le thème === [[https://github.com/munin-monitoring/contrib/tree/master/templates/munstrap]] === Déplacement des données vers un nouveau serveur === Il faut copier tous les fichiers ''*.rrd'' du répertoire ''/var/lib/munin/''. [[https://serverfault.com/questions/130830/change-a-munin-server-and-keep-the-data|Source]] munin/accueil.txt Dernière modification : 2024/12/25 12:48de phsw