Zabbix
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.
Inhaltsverzeichnis
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
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
- Ohne Parameter: script.
- Script mit Parameter: script[<parameter1>,<parameter2>]
- Details: https://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/external
- 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
Trigger erstellen
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
Viele Infos
http://lab4.org/wiki/Hauptseite
- ↑ 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.