Server Installation/munin: Unterschied zwischen den Versionen
Aus Opennet
(→Betrieb: Übernahme aus Dienstebeschreibung) |
Lars (Diskussion | Beiträge) (neues Konzept der interaktionsfreien AP-Überwachung) |
||
Zeile 1: | Zeile 1: | ||
Software für Opennet Monitoring, Allgemeines zum Opennet Dienst siehe [[Opennet munin]] | Software für Opennet Monitoring, Allgemeines zum Opennet Dienst siehe [[Opennet munin]] | ||
− | + | == Installation == | |
− | + | ||
* erzeugt Graphen zum Systemzustand, insbesondere Netztraffic | * erzeugt Graphen zum Systemzustand, insbesondere Netztraffic | ||
* Default-Installation ausreichend, Zugriff via Web (''apache'') | * Default-Installation ausreichend, Zugriff via Web (''apache'') | ||
* ''Require all granted'' in ''/etc/apache2/conf-enables/munin.conf'' aufnehmen | * ''Require all granted'' in ''/etc/apache2/conf-enables/munin.conf'' aufnehmen | ||
− | == | + | == Abfrage von Hosts == |
+ | Unter ''/etc/munin/munin-conf.d/'' liegen mehrere Dateien, in denen verschiedene Hosts aufgeführt sind, die überwacht werden sollen. | ||
− | ==== | + | === Server === |
− | + | ||
− | + | ||
* für Server könnte es dieser Block in der Datei ''server.conf'' sein: | * für Server könnte es dieser Block in der Datei ''server.conf'' sein: | ||
<pre> | <pre> | ||
Zeile 19: | Zeile 17: | ||
</pre> | </pre> | ||
* ein paar Minuten später dürfte der neue Rechner im munin-Web-Interface auf [[Server/howmei]] auftauchen: https://monitor.opennet-initiative.de/ | * 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: | + | * falls es nicht klappt, dann simuliere eine Datenabfrage von howmei aus in Richtung des zu überwachenden Servers (mit ''telnet'' oder ''netcat''): |
<pre> | <pre> | ||
telnet <servername>.on munin | telnet <servername>.on munin | ||
Zeile 25: | Zeile 23: | ||
* der üblichste Grund für ein Fehlschlagen ist die fehlende ''allow''-Zeile in der ''munin-node.conf'' oder der fehlende munin-node-Neustart | * 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'') | ||
− | + | == 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. | |
− | + | <pre> | |
− | + | #!/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: | |
− | + | # | |
− | + | # */10 * * * * root /usr/local/bin/munin-oni-update-hosts update-missing | |
− | + | # 34 4 * * * root /usr/local/bin/munin-oni-update-hosts update-all && /usr/local/bin/munin-oni-update-hosts remove-outdated | |
− | + | # | |
− | + | ||
− | + | set -eu | |
− | + | ||
− | + | NETWORKS="192.168.1.0/24 192.168.2.0/24 192.168.3.0/24" | |
− | echo " | + | 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 | echo | ||
− | + | ls "$TIMESTAMP_DIR" | while read host; do | |
− | done | + | 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 | ||
+ | </pre> | ||
+ | |||
[[Kategorie:Server]] | [[Kategorie:Server]] |
Version vom 10. September 2016, 01:38 Uhr
Software für Opennet Monitoring, Allgemeines zum Opennet Dienst siehe Opennet munin
Inhaltsverzeichnis |
Installation
- erzeugt Graphen zum Systemzustand, insbesondere Netztraffic
- Default-Installation ausreichend, Zugriff via Web (apache)
- Require all granted in /etc/apache2/conf-enables/munin.conf aufnehmen
Abfrage von Hosts
Unter /etc/munin/munin-conf.d/ liegen mehrere Dateien, in denen verschiedene 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)
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: # # */10 * * * * root /usr/local/bin/munin-oni-update-hosts update-missing # 34 4 * * * root /usr/local/bin/munin-oni-update-hosts update-all && /usr/local/bin/munin-oni-update-hosts remove-outdated # 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