InfrastrukturSoftware

Zabbix network monitoring

Zabbix ist ein open source Monitoring System, das unter der GNU General Public License (GPL) version 2 lizenziert ist. Seit November 2013 wird es von mir eingesetzt. Hauptvorteile sind die einfache Implementierung, die Flexibilität und Skalierbarkeit sowie die geringen Voraussetzungen, die Pflegbarkeit über ein Webfrontend und die Anschaffungs- und Wartungskosten.

Serverplattform:

Softwarepakete:

  • LAMP-Server (tasksel)
  • fping (aptitude)
  • php5-ldap, php5-curl (aptitude)
  • snmp, snmp-mibs-downloader (aptitude)
  • zabbix-server, zabbix-frontend-php und zabbix-agent, Download unter http://www.zabbix.com

Anpassungen:

Filesystem

Mounten der DB-Platte mit den folgenden Optionen, ist empfehlenswert bei  Installationen mit hoher Last:

/var            ext4    noatime,data=ordered,barrier=0 # Sofortiges Schreiben ohne Buffering, Ausschalten Journal

MySQL

  • Tuning der DB mit den folgenden Parametern in der Datei /etc/mysql/conf.d/performance.cnf
innodb_flush_log_at_trx_commit=2
innodb_buffer_pool_size=1500M
innodb_log_buffer_size=4M
innodb_file_per_table

 Löschen historischer Daten bei zu großen Tabellen

  • Erzeugen  MySQL-konformer Zeitstring:
    # date +%s -d "2012/12/24 00:00:00" (JJJJ/MM/TT)
     1356303600
  • Löschen Einträge aus Tabelle history_uint älter 12.12.2013 und Eindampfen Tabelle:
    mysql> DELETE FROM `history_uint` WHERE `clock` < 1346428800;
    mysql> optimize table history_uint;
  • Löschen Einträge aus Tabelle history älter 12.12.2012 und Eindampfen Tabelle:
    mysql> DELETE FROM `history` WHERE `clock` < 1346428800;
    mysql> optimize table history;

Alternativ besteht die Möglichkeit, über den Housekeeper (Administration->General->Housekeeping) alte Einträge periodisch aus der DB zu entfernen. Parameter in der zabbix_server.conf dazu:

  • HousekeepingFrequency=<1-24> (Stunden)
  • MaxHousekeeperDelete=<0-1000000>

Tabellen Defragmentieren

Die Tabellen history_uint und trends_uint werden je nach Einstellung sehr groß. Um sie zu defragmentieren, genügt der Befehl

mysqlcheck -u root -p --auto-repair --optimize zabbix # Passwort in Keepass

Mailing

  • Das mailing erfolgt über das folgende Menü:
Zabbix Mailsettings
Zabbix Mailsettings

Alternativ kann Zabbix auch über Jabber/XMPP und SMS (nur per angeschlossenem GSM-Modem!) alarmieren.

Zabbix Proxy

Ein Proxy entlastet den Server, indem er selbst Daten sammelt und in definierten Abständen entweder an den Server überträgt (active proxy) oder vom Server gepollt wird (passive proxy).

Ist der Proxy erst funktionsfähig, können am Server Hosts angelegt werden, die in der Hostkonfiguration so konfiguriert werden müssen, dass sie vom Proxy gemonitort werden. Das funktioniert sowohl für Agent- simple- und Webchecks.

 Agents

Es gibt aktuelle Agenten für nahezu alle großen Serverplattformen. Für Windows (auf http://www.suiviperf.com/zabbix/index.php) und Linux (14.04aufwärts ) in binärer Form, ansonsten als source. Die Installation der Sourcecode-Version auf einem Ubuntu 6.06 läuft wie folgt:

  • groupadd zabbix && useradd -g zabbix zabbix
  • ./configure –enable-agent
  • make install (binaries und Konfigs etc. landen unter /usr/local/bin,  /usr/local/sbin und /usr/local/etc.
  • startskript im Anhang kopieren nach /etc/init.d und mit chmod 755 ausführbar machen
  • update-rc.d <Startskript> defaults erzeugt Links in den runlevel-Verzechnissen
  • Konfig unter /usr/local/etc/zabbix_agentd.conf anpassen
  • Agenten starten mit /etc/init.d/zabbix_agent start

Aktive Agents

Entlasten den Pollerprozeß vom Server, da sie ihre Daten selbst an den Server melden. Dafür  ist allerdings eine eingehende Verbindung auf TCP/10051 zum Server notwendig. Ideal für LAN-Clients. Damit das  klappt, müssen 3 Voraussetzungen aufeinandertreffen:

  • Der Host darf in Zabbix noch nicht existieren und es muss eine Action des Typs Auto Registration existieren.
  • Der Agent benötigt zusätzlich zur passiven Server-Konfiguration den Servernamen als Wert vor der Variable ServerActive.
  • Der Agent benötigt in seiner Konfiguration den Parameter: HostMetadataItem=system.uname. Anhand des zurückgelieferten Werts (Windows/Linux) wird der neue Agent gleich mit den richtigen Templates verknüpft und in die richtige Gruppe gesteckt.

 

Logfile-Überwachung

  • Voraussetzung:active agent
  • Einrichten eines Items
  • ggfs. passenden Trigger einrichten

Passive Agents

Werden vom Pollerprozeß des Servers auf TCP/10050 abgefragt und sind für DMZ-Szenarios zu bevorzugen. Voraussetzungen für die Funktion:

  • die Item-Typen für einen passive agent müssen  Zabbix agent sein.
  • Der Agent benötigt den Servernamen als Wert vor der Variable Server

 

Agents mit mehreren Netzwerkkarten

Wenn ein Agent mehrere Netzwerkkarten hat, registriert er sich mit allen am Server, was sinnfrei sein kann. Um das zu verhindern, müssen die Variablen  SourceIP und ListenIP konfiguriert und der Agent neu gestartet werden.

Besondere Items

aggregate checks

  • Um eine Funktion (avg, max, min, sum) über die (gleichnamigen) Items mehrerer Hosts auszuführen, müssen die entspr. Hosts in eine Gruppe gesteckt werden.
  • Als Zweites wird auf dem Zabbix-Server ein Item des Typs Zabbix-aggregate angelegt, das den folgenden Key erhält:
    grp<avg,max,min,sum>[hostgroup,item,timeperiod,parameter]

Remote Commands

Können als action konfiguriert werden, um beim Zutreffen einer oder mehrerer Bedingungen (UND/ODER) eine Operation auszuführen. So kann die Operation ein Shell-Befehl sein, der vom Server zum Agent geschickt wird (Achtung – nur passive Agents!) oder ein ssh command, der direkt vom Server abgesetzt wird. Bei Linux: Zabbix-User benötigt entsprechende sudo-Rechte.

SNMP-Checks

Über Templates

Im Standardumfang von Zabbix sind einige SNMP-Templates dabei. Hier reicht es, dem jewg. Host unter Macros die Variable {$SNMP_COMMUNITY} zuzuweisen und das entsprechende Template.

Individuell

  1. den Host per snmp an der shell abfragen:
    snmpwalk -c <community> -v2c (version) <hostname/ip>
  2. wenn der Host erreichbar ist, kann ein Item dafür in Zabbix angelegt werden. Dafür ist die Kenntnis der genauen OID notwendig, die aber relativ leicht im Internet abzufragen ist.
  3. Dem Host kann auch wieder unter Macros die Variable {$SNMP_COMMUNITY} verpasst werden.
  4. Im Anschluss wird falls gewünscht ein Trigger dafür eingerichtet.

 

Hosts anhand Inventardaten finden

  • Über den Punkt Inventory können hosts anhand ihrer Inventardaten gruppiert werden! Beispiel: Inventory -> Group Switches, Grouping by -> Location. Es erfolgt eine Anzeige nach Lokationen mit einer Spalte dahinter mit der Anzahl der Switches mit dem jewg. Location Tag. Ein Klick auf die Anzahl zeigt die Switches.

Downloads

Agents (Windows/Linux), Server, Proxy, Frontend und Sources: http://www.zabbix.com/download.

Kompilierte Windows-Agenten können unter http://www.suiviperf.com/zabbix/index.php heruntergeladen werden.

 

Verschlüsselung der Kommunikation

 

Anlegen eines zufälligen PSK-Keys auf agent oder proxy:

openssl rand -hex 48 -out /etc/zabbix/key.psk
chown zabbix:zabbix /etc/zabbix/key.psk
chmod 0400 /etc/zabbix/key.psk

Eintragen folgender Optionen in der Konfiguration des Agenten oder Proxys:

TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=Key1
TLSPSKFile=/etc/zabbix/key.psk

Eintragen des PSK ins Frontend des Servers

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (2 Bewertungen, Durchschnitt: 4,50 von 5)
Loading...

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.