Habt ihr schon einmal von Munin gehört? Munin ist ein Tool zum Monitoring von Server-Ressourcen, das eine Menge Daten grafisch aufbereitet.
Munin ist ziemlich simpel und schnell aufgesetzt.
Hier halte ich die Konfiguration fest, die ich kürzlich beim Einrichten von munin verwendet habe. Ich gehe davon aus, dass ihr Ubuntu 18.04 LTS verwendet.
$ sudo apt update
$ sudo apt install munin munin-node nginx
Nginx-Konfiguration
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location /munin {
alias /var/www/html/munin;
}
location ^~ /munin-cgi/munin-cgi-graph/ {
access_log off;
fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/var/run/munin/fastcgi-graph.sock;
include fastcgi_params;
}
}
Nginx neu starten.
$ sudo service nginx restart
Munin-Konfiguration
munin.conf
dbdir /var/lib/munin
htmldir /var/www/html/munin
logdir /var/log/munin
rundir /var/run/munin
[servername1.domain]
address 127.0.0.1
use_node_name yes
[servername2.domain]
address [ip address]
use_node_name yes
Munin als FCGI betreiben
$ sudo chown -R munin:www-data /var/run/munin
$ sudo spawn-fcgi -s /var/run/munin/fastcgi-html.sock -U www-data -u www-data -g www-data /usr/lib/munin/cgi/munin-cgi-html
$ sudo spawn-fcgi -s /var/run/munin/fastcgi-graph.sock -U www-data -u www-data -g www-data /usr/lib/munin/cgi/munin-cgi-graph
Das ist der kniffligste Teil.
Standardmäßig gehört /var/run/munin dem Benutzer munin. Zur Laufzeit greift aber der Nginx-Benutzer (www-data) auf diesen Socket zu.
/var/run/munin muss sowohl für munin als auch für www-data zugänglich sein.
Zunächst muss der Besitzer dieses Verzeichnisses geändert werden. Der Besitzer von /var/run/munin ist munin, und Benutzer aus der Gruppe www-data können dort ebenfalls Daten lesen und schreiben. munin führt Cronjobs aus, um die Backend-Daten zu aktualisieren, und ich habe beobachtet, dass es bei jedem Cronjob dieses Verzeichnis prüft. Die Socket-Datei ist schreibgeschützt, andere Dateien können aber vom munin-Cron überschrieben werden. Deshalb habe ich munin als Besitzer eingetragen.
Als Nächstes muss der FCGI-Prozess unter www-data (dem Nginx-Benutzer) laufen. Anders als Apache kann Nginx CGI nicht direkt ausführen, sondern lädt stattdessen einen CGI-Daemon. Was die Serverlast angeht, ist FCGI effizienter als CGI, weil es dauerhaft im Speicher läuft. Bei CGI startet der Webserver bei jedem Benutzerzugriff einen neuen Anwendungsprozess. Das ist ziemlich schwergewichtig und verschwendet die Ressourcen des Webservers.
Heutzutage setzt kein Webanwendungs-Framework mehr auf CGI.
Munin neu starten
$ sudo service munin-node restart
Munin-Nodes installieren
Auf allen Nodes:
$ sudo apt update
$ sudo apt install munin-node
munin-node.conf
Diese Zeile hinzufügen.
allow ^12\.34\.56\.78$ # master server ip address
Den Node neu starten.
$ sudo service munin-node restart
Monitoring im Browser
Glückwunsch, das war’s schon. Jetzt ist es Zeit, http://{your address}/munin aufzurufen. Dort erwarten euch schöne Graphen. Alle Daten werden alle 5 Minuten aktualisiert.
Viel Spaß beim Monitoring!