Server Installation/munin: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
(Betrieb: Übernahme aus Dienstebeschreibung)
(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 ===
+
== 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
  
=== Betrieb ===
+
== Abfrage von Hosts ==
 +
Unter ''/etc/munin/munin-conf.d/'' liegen mehrere Dateien, in denen verschiedene Hosts aufgeführt sind, die überwacht werden sollen.
  
==== Aufnahme von Munin Nodes ====
+
=== 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
  
==== Script für Access Point Nodes Konfiguration ====
+
=== 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'')
  
#!/bin/bash
+
== Ressourcen ==
#
+
=== Automatische Aktualisierung der AP-Listen ===
# Opennet Munin Scripts
+
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.
# Mathias Mahnke, created 2016/08/22
+
<pre>
# Opennet Admin Group <admin@opennet-initiative.de>
+
#!/bin/sh
#
+
#
# stop on error and unset variables
+
# Erstelle eine munin-Host-Liste (Teil einer munin-Konfiguration) basierend auf der Erreichbarkeit
set -eu
+
# von erreichbaren munin-node-Gegenstellen in einem definierten Netzwerk-Bereich.
# define variables, adopt if needed
+
# Somit koennen alle Opennet-Knoten mit aktiviertem munin automatisch ueberwacht werden, ohne dass
MUNINSCRIPT_GROUP="ap"
+
# munin-update aufgrund nicht-erreichbarer Hosts zu viel Zeit benoetigt.
MUNINSCRIPT_RANGE=(1 2 3)
+
#
MUNINSCRIPT_PREFIX="AP"
+
# Folgende cron-Jobs sind empfehlenswert:
MUNINSCRIPT_SUFFIX="aps.on"
+
#
# output the munin configuration part for APs
+
#  */10 *      * * *  root    /usr/local/bin/munin-oni-update-hosts update-missing
for range in "${MUNINSCRIPT_RANGE[@]}"
+
#  34 4        * * *  root    /usr/local/bin/munin-oni-update-hosts update-all && /usr/local/bin/munin-oni-update-hosts remove-outdated
do
+
#
        for num in {1..255}
+
 
         do
+
set -eu
                echo "[$MUNINSCRIPT_GROUP;$MUNINSCRIPT_PREFIX$range.$num]"
+
 
                 echo " address $range.$num.$MUNINSCRIPT_SUFFIX"
+
NETWORKS="192.168.1.0/24 192.168.2.0/24 192.168.3.0/24"
                 echo " use_node_name yes"
+
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
        done
+
                ls "$TIMESTAMP_DIR" | while read host; do
  done
+
                        name="${host#$NET_PREFIX}"
  exit 0
+
                        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, 00: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
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge