Server Installation/munin: Unterschied zwischen den Versionen
Erscheinungsbild
Inhalt gelöscht Inhalt hinzugefügt
Lars (Diskussion | Beiträge) Installation detaillierter beschrieben |
Lars (Diskussion | Beiträge) Skript in Anhang verschoben |
||
| Zeile 48: | Zeile 48: | ||
* Rechte und Timing in ''/etc/default/rrdcached'': |
* Rechte und Timing in ''/etc/default/rrdcached'': |
||
OPTS="-w 1800 -z 1800 -f 3600 -s munin -m 660 -l unix:/var/run/rrdcached.sock -j /var/lib/rrdcached/journal/ -F -b /var/lib/munin -B" |
OPTS="-w 1800 -z 1800 -f 3600 -s munin -m 660 -l unix:/var/run/rrdcached.sock -j /var/lib/rrdcached/journal/ -F -b /var/lib/munin -B" |
||
=== AP-Listen-Aktualisierung === |
|||
Regelmäßig läuft ein Skript, das alle APs mit laufendem munin-Dienst ermittelt und daraus eine Konfigurationsdatei für munin erzeugt. Somit müssen die APs lediglich mit munin ausgestattet werden (Paket-Installation ''on-monitoring''), ohne dass eine weitere Interaktion mit dem munin-Server erforderlich ist. |
|||
| ⚫ | |||
* Cron-Jobs unter ''/etc/cron.d/munin-oni-update'' eintragen: |
|||
| ⚫ | |||
| ⚫ | |||
34 4 * * * root /usr/local/bin/munin-oni-update-hosts update-all && /usr/local/bin/munin-oni-update-hosts remove-outdated |
|||
| ⚫ | |||
== Betrieb == |
== Betrieb == |
||
| Zeile 74: | Zeile 84: | ||
* alle APs, die in den üblichen Netzwerkbereichen (192.168.[123].0/24) erreichbar sind, werden automatisch erfasst, sofern auf ihnen ein munin-Dienst läuft |
* alle APs, die in den üblichen Netzwerkbereichen (192.168.[123].0/24) erreichbar sind, werden automatisch erfasst, sofern auf ihnen ein munin-Dienst läuft |
||
** Test: ''telnet 192.168.x.y munin'' (oder mit ''netcat'') |
** Test: ''telnet 192.168.x.y munin'' (oder mit ''netcat'') |
||
== Ressourcen == |
|||
=== Automatische Aktualisierung der AP-Listen === |
|||
Um eine interaktionsfreie Überwachung neuer APs zu ermöglichen, erstellt das folgende Skript regelmäßig eine Host-Liste für munin anhand der aktuell erreichbaren munin-tauglichen APs. |
|||
| ⚫ | |||
#!/bin/sh |
|||
# |
|||
# Erstelle eine munin-Host-Liste (Teil einer munin-Konfiguration) basierend auf der Erreichbarkeit |
|||
# von erreichbaren munin-node-Gegenstellen in einem definierten Netzwerk-Bereich. |
|||
# Somit koennen alle Opennet-Knoten mit aktiviertem munin automatisch ueberwacht werden, ohne dass |
|||
# munin-update aufgrund nicht-erreichbarer Hosts zu viel Zeit benoetigt. |
|||
# |
|||
# Folgende cron-Jobs sind empfehlenswert: |
|||
# |
|||
| ⚫ | |||
| ⚫ | |||
# |
|||
set -eu |
|||
NETWORKS="192.168.1.0/24 192.168.2.0/24 192.168.3.0/24" |
|||
MUNIN_HOST_FILE=/etc/munin/munin-conf.d/ap.conf |
|||
EXPIRE_DAYS=30 |
|||
TIMESTAMP_DIR=/var/lib/munin-oni-host-timestamps |
|||
NET_PREFIX="192.168." |
|||
update_hosts_timestamps() { |
|||
nmap -T insane --min-parallelism 60 --max-parallelism 300 -p munin -oG - "$@" $NETWORKS \ |
|||
| awk '{ if ($5 == "4949/open/tcp//munin///") print $2; }' \ |
|||
| while read host; do touch "$TIMESTAMP_DIR/$host"; done |
|||
} |
|||
update_munin_files() { |
|||
local name |
|||
( |
|||
echo "# ACHTUNG: dieses Skript wird regelmaessig via cron-Job durch $0 ueberschrieben" |
|||
echo |
|||
ls "$TIMESTAMP_DIR" | while read host; do |
|||
name="${host#$NET_PREFIX}" |
|||
echo "[ap;AP$name]" |
|||
echo " address ${name}.aps.on" |
|||
echo " use_node_name yes" |
|||
echo |
|||
done |
|||
) >"${MUNIN_HOST_FILE}.neu" |
|||
mv "${MUNIN_HOST_FILE}.neu" "$MUNIN_HOST_FILE" |
|||
} |
|||
ACTION="${1:-help}" |
|||
mkdir -p "$TIMESTAMP_DIR" |
|||
case "$ACTION" in |
|||
update-all) |
|||
update_hosts_timestamps |
|||
update_munin_files |
|||
;; |
|||
update-unused) |
|||
tmp_file=$(tempfile) |
|||
ls "$TIMESTAMP_DIR" >"$tmp_file" |
|||
update_hosts_timestamps "--excludefile=$tmp_file" |
|||
rm -f "$tmp_file" |
|||
update_munin_files |
|||
;; |
|||
remove-outdated) |
|||
find "$TIMESTAMP_DIR" -type f -maxdepth 1 -mtime "+$EXPIRE_DAYS" -delete |
|||
update_munin_files |
|||
;; |
|||
help|--help) |
|||
echo "Syntax: $0 { update-all | update-unused | remove-outdated }" |
|||
echo |
|||
;; |
|||
*) |
|||
"$0" help >&2 |
|||
exit 1 |
|||
;; |
|||
esac |
|||
| ⚫ | |||
Version vom 10. September 2016, 12:14 Uhr
Software für das Monitoring von Hosts im Opennet (Verkehr, AP-Zustände, ...). Allgemeines zum Opennet Dienst siehe Opennet munin.
Installation
Munin zusammen mit rrdcached einrichten, um die IO-Last zu reduzieren:
apt install munin rrdcached
Graphen werden on-demand (beim Abruf via CGI) erzeugt.
Munin
- die munin-spezifischen Direktiven sind unter /etc/apache2/conf-available/opennet-munin.conf zu finden:
Alias /munin/static /var/cache/munin/www/static
RedirectMatch ^/(munin)?$ /munin/
ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
ScriptAlias /munin-cgi/munin-cgi-html /usr/lib/munin/cgi/munin-cgi-html
ScriptAlias /munin /usr/lib/munin/cgi/munin-cgi-html
<Directory /var/cache/munin/www/>
Require all granted
Options None
ExpiresActive On
ExpiresDefault M310
</Directory>
<Directory /usr/lib/munin/cgi>
Require all granted
Options +ExecCGI
SetHandler cgi-script
</Directory>
<Location /munin-cgi/static>
Options -ExecCGI
SetHandler None
</Location>
# Graphen/HTML-Caching
CacheEnable disk /munin
CacheRoot /var/cache/apache2/mod_cache_disk
CacheDirLevels 2
CacheDirLength 1
# fuer gemeinsamen Cache aller ServerAlias-Namen
CacheKeyBaseURL "http://howmei.opennet-initiative.de/"
# munin setzt fuer die Graphen "expire"-Header, jedoch nicht fuer die html-Seiten (auch dynamisch erzeugt)
ExpiresActive On
ExpiresByType text/html A900
- die obige Datei ist via Include in allen site-Definitionen einzutragen
rrdcached
- Rechte und Timing in /etc/default/rrdcached:
OPTS="-w 1800 -z 1800 -f 3600 -s munin -m 660 -l unix:/var/run/rrdcached.sock -j /var/lib/rrdcached/journal/ -F -b /var/lib/munin -B"
AP-Listen-Aktualisierung
Regelmäßig läuft ein Skript, das alle APs mit laufendem munin-Dienst ermittelt und daraus eine Konfigurationsdatei für munin erzeugt. Somit müssen die APs lediglich mit munin ausgestattet werden (Paket-Installation on-monitoring), ohne dass eine weitere Interaktion mit dem munin-Server erforderlich ist.
- Skript unter /usr/local/bin/munin-oni-update-hosts ablegen
- Cron-Jobs unter /etc/cron.d/munin-oni-update eintragen:
*/10 * * * * root /usr/local/bin/munin-oni-update-hosts update-unused 34 4 * * * root /usr/local/bin/munin-oni-update-hosts update-all && /usr/local/bin/munin-oni-update-hosts remove-outdated
Betrieb
Abfrage von Hosts
Unter /etc/munin/munin-conf.d/ liegen mehrere Dateien, in denen die verschiedenen Hosts aufgeführt sind, die überwacht werden sollen.
Server
- für Server könnte es dieser Block in der Datei server.conf sein:
[<standort>;<servername>]
address <servername>.on
use_node_name yes
- ein paar Minuten später dürfte der neue Rechner im munin-Web-Interface auf Server/howmei auftauchen: https://monitor.opennet-initiative.de/
- falls es nicht klappt, dann simuliere eine Datenabfrage von howmei aus in Richtung des zu überwachenden Servers (mit telnet oder netcat):
telnet <servername>.on munin
- der üblichste Grund für ein Fehlschlagen ist die fehlende allow-Zeile in der munin-node.conf oder der fehlende munin-node-Neustart
Access-Points
- in der Datei /etc/munin/munin-conf.d/ap.conf sind alle aktuell überwachten APs aufgeführt
- die Überwachung wird durch Installation des on-monitoring-Pakets aktiviert
- alternativ: muninlite installieren und xinetd aktivieren
- diese Datei wird automatisiert erstellt (siehe unten) - manuelle Änderungen werden also regelmäßig überschrieben
- alle APs, die in den üblichen Netzwerkbereichen (192.168.[123].0/24) erreichbar sind, werden automatisch erfasst, sofern auf ihnen ein munin-Dienst läuft
- Test: telnet 192.168.x.y munin (oder mit netcat)