Server Installation/munin: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
(neues Konzept der interaktionsfreien AP-Überwachung)
(= Einsicht in die Munin Datenbank / Schwellwerte)
 
(12 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Software für Opennet Monitoring, Allgemeines zum Opennet Dienst siehe [[Opennet munin]]
+
Software für das Monitoring von Hosts im Opennet (Verkehr, AP-Zustände, ...). Allgemeines zum Opennet Dienst siehe [[Opennet munin]].
  
 
== Installation ==
 
== Installation ==
* erzeugt Graphen zum Systemzustand, insbesondere Netztraffic
+
Munin zusammen mit rrdcached einrichten, um die IO-Last zu reduzieren: <pre>apt install munin rrdcached</pre>
* Default-Installation ausreichend, Zugriff via Web (''apache'')
+
Graphen werden on-demand (beim Abruf via CGI) erzeugt.
* ''Require all granted'' in ''/etc/apache2/conf-enables/munin.conf'' aufnehmen
+
  
== Abfrage von Hosts ==
+
=== Munin ===
Unter ''/etc/munin/munin-conf.d/'' liegen mehrere Dateien, in denen verschiedene Hosts aufgeführt sind, die überwacht werden sollen.
+
* die munin-spezifischen Direktiven sind unter ''/etc/apache2/...'' zu finden:
 +
<pre>
 +
DocumentRoot /var/cache/munin/www
 +
 
 +
<Directory /var/cache/munin/www>
 +
        Require all granted
 +
        Options None
 +
</Directory>
 +
 
 +
ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
 +
<Location /munin-cgi/munin-cgi-graph>
 +
        Require all granted
 +
<IfModule mod_fcgid.c>
 +
    SetHandler fcgid-script
 +
</IfModule>
 +
        <IfModule !mod_fcgid.c>
 +
            SetHandler cgi-script
 +
        </IfModule>
 +
</Location>
 +
</pre>
 +
* die obige Datei ist via ''Include'' in allen site-Definitionen einzutragen
 +
* einen cron-Job zur Beräumung alter rrd- und png-Dateien anlegen:
 +
<pre>
 +
18 5 * * 3      find /var/lib/munin -type f -mtime +365 -delete
 +
</pre>
 +
 
 +
=== 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 [[Media:munin-oni-update-hosts.sh|/usr/local/bin/munin-oni-update-hosts]] ablegen
 +
* Cron-Jobs unter ''/etc/cron.d/munin-oni-update'' eintragen:
 +
<pre>
 +
*/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
 +
</pre>
 +
 
 +
=== E-Mail Alarmierung für Server ===
 +
 
 +
* Mail Werkzeug installieren per ''apt install bsd-mailx''
 +
* Konfiguration unter ''/etc/munin/munin.conf.d/_mail.conf'' ablegen
 +
<pre>
 +
contact.<mailname>.command mail -s "[${var:group};${var:host}] -> ${var:graph_title} ->
 +
                            warnings: ${var:wfields} /
 +
                            criticals: ${var:cfields} /
 +
                            unknowns: ${var:ufields}" <mailaddress>@opennet-initiative.de
 +
[server;]
 +
  contacts <mailname>
 +
[ap;]
 +
  contacts no
 +
</pre>
 +
 
 +
== 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 ===
+
==== 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 75:
 
* falls es nicht klappt, dann simuliere eine Datenabfrage von howmei aus in Richtung des zu überwachenden Servers (mit ''telnet'' oder ''netcat''):
 
* 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
+
netcat <servername>.on munin
 
</pre>
 
</pre>
 
* 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 ===
+
==== Access-Points ====
 
* in der Datei ''/etc/munin/munin-conf.d/ap.conf'' sind alle aktuell überwachten APs aufgeführt
 
* 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
 
** die Überwachung wird durch Installation des ''on-monitoring''-Pakets aktiviert
Zeile 31: Zeile 87:
 
** Test: ''telnet 192.168.x.y munin'' (oder mit ''netcat'')
 
** Test: ''telnet 192.168.x.y munin'' (oder mit ''netcat'')
  
== Ressourcen ==
+
==== Einsicht in die Munin Datenbank / Schwellwerte ====
=== 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"
+
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
+
</pre>
+
  
 +
* die Inhalte der einzelnen Checks und ihren aktuellen Schwellwerten je Plugin sind abrufbar unter
 +
# grep "maki.*avgwrwait.warning" /var/lib/munin/datafile
 +
server;maki:diskstats_latency.mapper_backup_storage.avgwrwait.warning 0:3
 +
[..]
 +
* daraus können in ''/etc/munin/munin-conf.d/'' neue Schwellwerte erzeugt und hinterlegt werden
  
 
[[Kategorie:Server]]
 
[[Kategorie:Server]]

Aktuelle Version vom 8. Februar 2019, 04:53 Uhr

Software für das Monitoring von Hosts im Opennet (Verkehr, AP-Zustände, ...). Allgemeines zum Opennet Dienst siehe Opennet munin.

Inhaltsverzeichnis

[Bearbeiten] 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.

[Bearbeiten] Munin

  • die munin-spezifischen Direktiven sind unter /etc/apache2/... zu finden:
DocumentRoot /var/cache/munin/www

<Directory /var/cache/munin/www>
        Require all granted
        Options None
</Directory>

ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
<Location /munin-cgi/munin-cgi-graph>
        Require all granted
	<IfModule mod_fcgid.c>
	    SetHandler fcgid-script
	</IfModule>
        <IfModule !mod_fcgid.c>
            SetHandler cgi-script
        </IfModule>
</Location>
  • die obige Datei ist via Include in allen site-Definitionen einzutragen
  • einen cron-Job zur Beräumung alter rrd- und png-Dateien anlegen:
18 5 * * 3      find /var/lib/munin -type f -mtime +365 -delete

[Bearbeiten] 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"

[Bearbeiten] 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.

*/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

[Bearbeiten] E-Mail Alarmierung für Server

  • Mail Werkzeug installieren per apt install bsd-mailx
  • Konfiguration unter /etc/munin/munin.conf.d/_mail.conf ablegen
contact.<mailname>.command mail -s "[${var:group};${var:host}] -> ${var:graph_title} ->
                             warnings: ${var:wfields} /
                             criticals: ${var:cfields} /
                             unknowns: ${var:ufields}" <mailaddress>@opennet-initiative.de
[server;]
  contacts <mailname>
[ap;]
  contacts no

[Bearbeiten] Betrieb

[Bearbeiten] Abfrage von Hosts

Unter /etc/munin/munin-conf.d/ liegen mehrere Dateien, in denen die verschiedenen Hosts aufgeführt sind, die überwacht werden sollen.

[Bearbeiten] 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):
netcat <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

[Bearbeiten] 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)

[Bearbeiten] Einsicht in die Munin Datenbank / Schwellwerte

  • die Inhalte der einzelnen Checks und ihren aktuellen Schwellwerten je Plugin sind abrufbar unter
# grep "maki.*avgwrwait.warning" /var/lib/munin/datafile
server;maki:diskstats_latency.mapper_backup_storage.avgwrwait.warning 0:3
[..]
  • daraus können in /etc/munin/munin-conf.d/ neue Schwellwerte erzeugt und hinterlegt werden
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge