Server Installation/munin: Unterschied zwischen den Versionen
Erscheinungsbild
Inhalt gelöscht Inhalt hinzugefügt
→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 === |
|||
* in der Datei ''/etc/munin/munin-conf.d/ap.conf'' sind bereits alle Access Points erfasst (AP1.x, AP2.x, AP3.x), siehe Script unten |
|||
* 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 == |
|||
#!/bin/bash |
|||
=== 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. |
|||
# Opennet Munin Scripts |
|||
<pre> |
|||
# Mathias Mahnke, created 2016/08/22 |
|||
#!/bin/sh |
|||
# Opennet Admin Group <admin@opennet-initiative.de> |
|||
# |
|||
# Erstelle eine munin-Host-Liste (Teil einer munin-Konfiguration) basierend auf der Erreichbarkeit |
|||
# stop on error and unset variables |
|||
# von erreichbaren munin-node-Gegenstellen in einem definierten Netzwerk-Bereich. |
|||
set -eu |
|||
# Somit koennen alle Opennet-Knoten mit aktiviertem munin automatisch ueberwacht werden, ohne dass |
|||
# define variables, adopt if needed |
|||
# munin-update aufgrund nicht-erreichbarer Hosts zu viel Zeit benoetigt. |
|||
MUNINSCRIPT_GROUP="ap" |
|||
# |
|||
MUNINSCRIPT_RANGE=(1 2 3) |
|||
# Folgende cron-Jobs sind empfehlenswert: |
|||
MUNINSCRIPT_PREFIX="AP" |
|||
# |
|||
MUNINSCRIPT_SUFFIX="aps.on" |
|||
# */10 * * * * root /usr/local/bin/munin-oni-update-hosts update-missing |
|||
# output the munin configuration part for APs |
|||
# 34 4 * * * root /usr/local/bin/munin-oni-update-hosts update-all && /usr/local/bin/munin-oni-update-hosts remove-outdated |
|||
for range in "${MUNINSCRIPT_RANGE[@]}" |
|||
# |
|||
do |
|||
for num in {1..255} |
|||
set -eu |
|||
do |
|||
echo "[$MUNINSCRIPT_GROUP;$MUNINSCRIPT_PREFIX$range.$num]" |
|||
NETWORKS="192.168.1.0/24 192.168.2.0/24 192.168.3.0/24" |
|||
echo " address $range.$num.$MUNINSCRIPT_SUFFIX" |
|||
MUNIN_HOST_FILE=/etc/munin/munin-conf.d/ap.conf |
|||
echo " use_node_name yes" |
|||
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}" |
|||
done |
|||
echo "[ap;AP$name]" |
|||
exit 0 |
|||
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 9. September 2016, 23:38 Uhr
Software für Opennet Monitoring, Allgemeines zum Opennet Dienst siehe Opennet munin
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