Zabbix

Aus Vosp.info
Wechseln zu: Navigation, Suche

zabbix-2016 Notizen 27.11.2016

Zabbix ist ein plattformübergreifendes Werkzeug zur Überwachung von Netzwerkinfrastruktur. Das können Serverdienste, Webseiten oder Router sein. Es gibt Agents für Windows und Linux.

Update

Update: Es gibt bei Zabbix jetzt es offizielles Repo, auch mit wheezy.
Das HowTo ist daran angepasst.

Zabbix-Repository

Zuerst das zabbix-repo hinzufügen.

vim /etc/apt/sources.list.d/zabbix.list

Darin folgende Zeile eintragen.

deb http://repo.zabbix.com/zabbix/2.0/debian wheezy main
/usr/bin/apt-key adv --keyserver keys.gnupg.net --recv-keys D13D58E479EA5ED4
apt-get update

Installation des Zabbix-Server

Konsole

Wichtig: Die Pakete müssen von zabbix bezogen werden. Die Debian-Pakete sind zu alt.
Es gibt eine mysql und eine postgresql Version.
Die postgresql-Version ist buggy und sollte momentan gemieden werden. (25.10.2013)

apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent

Während der Installation wird das admin-Passwort für mysql vergeben.
Passwort eingeben und merken/aufschreiben.

Das Mysql-Passwort für Zabbix kann leer gelassen werden. Es wird dann ein zufälliges generiert.

vim /etc/php5/apache2/php.ini

Und nach zone suchen ...

;date.timezone = 

ersetzen durch

date.timezone = Europe/Berlin

Danach Apach2 neu starten.

apache2ctl restart

Für den Mailversand benötigen wir einen Mailserver.
Postfix ist eine willkürliche, aber gute Wahl.

apt-get install postfix


Webbrowser

Zabbix im Browser aufrufen mit <domain>/zabbix und den Installationsanweisungen folgen.
Frage: Warum muss noch das root-passwort der Datenbank eingegeben werden?

Erstes Login mit user admin und password zabbix.
Wichtig: Sofort ändern!

  • Oberer Reiter: Administration
  • Unterer Reiter: Users
  • In der Zeile Zabbix administrators in der zweiten Spalte Users anklicken.
  • In der ersten Spalte den User Admin auswählen.
  • In der vierten Zeile Change password anklicken und neues Passwort eingeben.
  • Nach unten scrollen und Save anklicken.

Informationen zum Zustand des Zabbix-Server stehen sofort bereit.

Hinzufügen weiterer Maschinen

  • Repository hinzufügen
apt-get install zabbix-agent

In der /etc/zabbix/zabbix_agentd.conf muss unter "Server" der oder die zabbix-server eingetragen werden.

Danach die zabbix-agent.conf anpassen.

vim /etc/zabbix/zabbix-agentd.conf


#Server=127.0.0.1
Server=<Zabbix Server IP>,<noch ein Zabbix-Server>


In Frontend des Zabbix-Servers muss die Maschine hinzugefügt werden.

Zabbix überwacht mehrere Sites oder Knoten/HNs [1]

Jeder Host für sich

Jeder Host, ob virtuell oder bare iron, komuniziert mit dem oder den Zabbix-servern.

Mit Proxy

Ein zabbix-proxy ist ein Programm, das im Komunikationsweg zwischen agent und server liegt.
In der config der agents wird der Proxy als zabbix-server eingetragen.
Die Rechner einer Site oder die Gästes einer HN reporten dem zentralen Proxy, der dann für die Komunikation mit dem Server zuständig ist.
Ist der Proxy down, sind keine Daten mehr erhältlich. Bei einer HN ist das O.K. Ist die HN down, stehen ehedem größere Probleme an.
Bei einer Site muss geschaut werden, wer der Proxy ist. Es muss der Rechner sein, der vor allen anderen eingeschaltet und nach allen andern abgeschaltet wird. Oder halt immer läuft.

Betrieb

Roundtrip Mailserver testen

  • Die Zeit messen, die eine Mail vom Zabbix-Server zum Mailserver und zurück braucht.
  • Das Ziel erreichen wir mit einem eigenen Script.
  • Zabbix liest den Standard Output des Scriptes.

Konsole

alpha

apt-get install wcalc

Das folgende Script kommt in das Verzeichniss (kann in /etc/zabbix_server.conf gändert werden, sollte aber nicht)

vim /usr/lib/zabbix/externalscripts/mail-tester

Verbesserungsideen:

  • besser, wenn es geht: dem script eine config-datei per zabbix übergeben. dann nur ein script notwendig
  • name der config sin die prefixes der fetchmail.iid und fetchid
  • primitivste möglichkeit, verschiedene mailserver zu überwachen


#!/bin/bash
#       Version 0.04
#       Status: funktional
#    Name of the script: mail-tester
#    It sends a email to an mail server, fetch it frm it and shows the time it takes
#    to be used as an external script for zabbix
#    Copyright (C) 2013  Heiko Kokemoor heiko.kokemoor@netz.coop
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

# Config

# Path to the dir, where the CONF file lives
CONF_PATH=/etc/zabbix/externalscripts

# name of the .fetchmailrc
CONF=$1

# wcalc is no standard software. you have to install it by yourself
WCALC=/usr/bin/wcalc

MAIL_USER=$(grep user $CONF_PATH/$CONF|awk '{print $2}')

speed-test(){

#       Seconds+nanoseconds
        START=$(date +%s%N)
#       Send an email
        echo TEST|mail -s TEST $MAIL_USER
#       Get the email
        fetchmail -f $CONF_PATH/$CONF --pidfile /usr/local/run/$CONF.pid  -i /usr/local/run/$CONF.id    &>> /usr/local/run/$CONF.tmplog
#       Seconds+nanoseconds
        STOP=$(date +%s%N)
#       Calculate the time it has taken
        ELAPSED=$(echo $STOP-$START|wcalc -q -EE 2>/dev/null)
#       delete the mail, put nothing into the inbox
        echo > /var/mail/zabbix
#       check, if mail has been received, otherwise echo 11 sec
        if [ $(grep message /usr/local/run/$CONF.tmplog &>> /dev/null;echo $?) = 0 ]
                then
                        #echo the time in seconds
                        echo $(echo $ELAPSED/1000000000|wcalc -q -P2 2>/dev/null)
                else
                        echo 11
        fi
        echo > /usr/local/run/$CONF.tmplog
}
speed-test $CONF $CONF_PATH $MAIL

exit 0
chown zabbix:zabbix /usr/lib/zabbix/externalscripts/mail-tester

Die folgenden Pfade können beliebig geändert werden. Nicht vergessen, das Script zu ändern.
Reißt euch bitte keine Löcher!

Das config file für fetchmail kommt nach

vim /etc/zabbix/externalscripts/<mail.domain.de>
poll <Dein Mailserver>
proto <IMAP|POP3>
user <user> => #gleichzeitig die sendeadresse
password <passwort>
ssl => kann probleme bereiten, wenn zertifikat nicht passt



chown zabbix:zabbix /usr/lib/zabbix/externalscripts/.fetchmailrc
chmod 400 /etc/zabbix/externalscripts/<mail.domain.de>

Das Verzeichniss run in /user/local/ anlegen.

mkdir /usr/local/run
chmod 777 /usr/local/run

Darin speichert fetchmail sein pid file und ein fetchid file und das .tmplog
Ohne gehts nicht.

Die Ausführungszeit für Scripte erhöhen

vim /etc/zabbix/zabbix_server.conf

Der default Timeout liegt bei 3 Sekunden. 5s sollten reichen, 10s ist eine gute Zeit.

Timeout=10

Webbrowser

  • Einloggen
  • Configuration=>Hosts
  • Zabbix-Server, der das Script enthält, auswählen
  • Auf Items klicken
  • Oben rechts auf Create item klicken
  • Im Dropdown Menu Type External check auswählen
  • Im Feld Key den Namen des Scripts ohne Pfade eintragen
  • Type of information: Numeric (float)
  • Im Feld Update interval (in sec) den gewünschten Interval eintragen. Nicht zu knapp, min 10s, siehe Timeout
  • Application
    • Entweder im Feld Application eine Rubrik aussuchen oder
    • mit New application eine Erzeugen.
  • Wechseln nach Monitoring=>Latest data
  • Zabbix Server auswählen
  • Unter Name die Application auswählen.
  • Das neue Item sollte zu sehen sein.
  • Graph zeigt wie gewohnt einen Zeitstrahl.

Bugs und Fehlerquellen

  • Wenn zuviele Mails im testaccount liegen, kann das Script in einen Timeout laufen.
    • Gegebenenfalls Mails auf dem Mailserver händisch löschen und Script neu starten.
  • Das Logfile /var/log/zabbix/zabbix_server.log enthält auch Ausgaben des Scriptes, wenn es welche gibt.
  • Das greben nach message muss eventuell gegen Nachricht oder ächnlichem ausgetauscht werden.

Festplattenplatz in openVZ Conatinern anzeigen

Der freie oder genutzte Festplattenplatz eines Containers wird per default in Zabbix nicht angezeigt.
Der Grund ist, dass die zuständige Discovery-Rule mit einem Regex arbeitet, der das Dateisystem simfs nicht beinhaltet.

Im Webfrontend

  • Reiter "Administration => General" auswählen.
  • Im Drop-Downmenu auf der rechten Seite "Regual expressions" auswählen.
  • "File systems for discovery" anklicken
  • Auf der rechten Seite mit "Edit" den regular expression bearbeiten und "simfs" hinzufügen
  • default ^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|ntfs|fat32)$
  • geändert ^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|ntfs|fat32|simfs)$
  • Den geänderten Ausdruck abspeichern.
  • Auf der linken Seite ein zweites mal auf "Save" klicken.

Es kann bis zu einer Stunde dauern, bis die Änderung wirksam wird. Die Discovery rule "File system for discovery" wird defaultmäßg nur einmal Stündlich ausgeführt. Das sollte auch nicht geändert werden.

Softraid überwachen

Dieser Test prüft, ob RAIDs degenerated sind.

Auf dem Server

vim /etc/zabbix_agend.conf

Ganz unten einfügen.

UserParameter=softraid_failed_drives,test -e /proc/mdstat&&grep blocks /proc/mdstat|grep -vc "\[U*\]"

Im Webfrontend

Item erstellen
Zabbix-soft-raid-test.png


Trigger erstellen
Zabbix-soft-raid-trigger.png

Links

http://lab4.org/mediawiki/index.php?title=Zabbix_linux_software_raid_ueberwachen&oldid=1338

Server duplizieren

  • Auf Host 1 läuft ein Zabbix-Server
mysqldump -p zabbix > zabbix.sql
  • Auf Host 2 ist der Zabbix-Server installiert, aber noch nicht konfiguriert.
mysql -u root -p < zabbix.conf

Da die Userverwaltung auch aus der zabbix-DB kommt, loggt mensch sich mit den Passwörtern der alten Installation ein.

Problem: konsitent halten

Mal drüber nachdenken.

  • Datenbank automatisch dumpen, Dump auf die andere Maschine kopieren und einspielen.

Damit werden Änderungen auf Maschine 1 automatisch auch auf Maschine 2 übernommen.
Schauen, welche Tabellen aus der Datenbank gesynct werden sollen, da die Maschine 2 auch in allen agents und proxys als Zabbix-Server eingerichtet sein muss, damit sie Sinn macht. Dadurch hat sie den gleichen Datenbestand wie Maschine 1, vorausgesetzt, die Konfiguration ist die selbe.

Best Practice

Zu viele Warnungen

Mache Trigger nerven einfach.
Z.B. Disk I/O is overloaded on.... hört sich anfangs schlimm an. Ist es aber nicht.
Zu viele Warnungen führen zu nachlassender Aufmerksamkeit, deshalb sollte das System so eingestellt werden, dass es nur wichtige Warnungen rausschickt. Das ist eine Gradwanderung zwischen zu viel Informationen und Wichtiges nicht bemerkt.

Mensch kann den Item abschalten, dann werden die Daten nicht mehr gesammelt.
Oder, besser, den Trigger selber. Dann werden z.B. keine Warnmails mehr rausgeschickt, aber die Daten lassen sich im Webfrontend trotzdem einsehen.

Unter Umständen ist es sinnvoller, den Trigger anzupassen.
Z.B., wenn eine root-Partition immer einen Füllstand um die 80 Prozent hat. Da kann Logrotate schon zu einer Mailflut führen, da der Default-Trigger bei 80% Warnungen rausschickt. Einfach den Default-Trigger Free disk space is less than 20% on volume / durch XYZ: Free disk space is less than 10% on volume / ersetzen.

Links

Repository

http://repo.zabbixzone.com/

Viele Infos

http://lab4.org/wiki/Hauptseite




  1. Definitionsproblem
Knoten, Hardwarenode, usw. sind verschiedene Begriffe für die selbe Sache: Ein Host, der Trägersystem für virtuelle Hosts ist. Nur nennt es jeder Anbieter anders.