Ich bin schon seit langem auf der Suche nach einem für meinen „Hausgebrauch“ geegneten Monitoring-Tool. Nagios war mit immer zu aufwändig einzurichten und zu pflegen. Nun habe ich Zabbix ausprobiert. Ich habe noch keine abschließende Meinung, ob ich es „behalte“ – einzurichten ist es jedenfalls relativ einfach.
Grundprinzip
Grundprinzip ist, dass auf den Server ein zabbix-agent läuft, der die lokalen Messdaten sammelt und an den zabbix-server schickt. Hierzu ist im Normalfall eine TCP-Connection vom Agent zum Server nötig. Daher hat es sich als praktisch erwiesen, den zabbix-server im internen Netz einzurichten. Zumindest für meine Zwecke.
Den zabbix-proxy habe ich so noch nicht eingerichtet – so habe ich es jedenfalls verstanden, dass es laufen muss, um externe Rechner zu überwachen.
Was mir gefällt:
- Server können sich selber in Zabbix registrieren – man muss das nicht x Mal per Hand machen.
- Zusammen mit Ansible könnte ich also alle meine Server mit einem Mal einrichten.
- Es gibt verschiedene fertige „Templates“ für die Hosts, die die wesentlichen Dinge für einen Server schon fertig beinhalten – inkl. einige Trigger, die z.B. Alarm schlagen, wenn eine Platte voll läuft.
- Zabbix kann VMware hosts automatisch „durchforsten“ und erkennen. (Dazu schreibe ich evtl. noch separat.)
Was mir nicht so gefällt:
- Die Erst-Einrichtung geht zwar relativ einfach – danach ist aber alles recht viel Klickerei.
- Bedienung nur wenig intuitiv und selbst-erklärend.
- Wenig „Querverbindungen“ zwischen den verschiedenen Ansichten. Wenn ich z.B. einen Graph vor mir habe, dann würde ich gerne dort gleich klicken können und ihn zu einem „Screen“ hinzufügen. Geht aber nicht – stattdessen muss ich mir merken was das für ein Graph war, in die „Screens“ gehen, dort den Graph wieder suchen und hinzufügen.
- Kein „Drilldown“: Z.B. würde ich gerne auf einen Graph aus einem Screen klicken, um zu dessen „ausführlicher“ Variante zu kommen, um mehr Infos zu bekommen. Geht leider nicht.
- Insgesamt wirken Optik und Bedienkonzept wie aus dem letzten Jahrhundert.
Hier ein Beispiel für einen Zabbix-„Screen“, wie ich ihn mir eingerichtet habe:
Und nun, wie ich das alles eingerichtet habe:
Zabbix-Server mit docker einrichten
Auf dem Docker-Hub unter Zabbix habe ich mir die wesentlichen Docker-Images gesucht:
- zabbix-server-mysql und
- zabbix-web-apache-mysql
Ich verwende die mysql-Varianten, weil ich mysql „gut kann“ – inkl. Backup. Leider musste ich mir erst noch einen Docker-Host im internen Netz einrichten – dank Kickstart und Ansible ging das aber recht schnell.
Unten habe ich auch mein docker-compose.yml
eingefügt.
Danach kann man sich mit dem Benutzer Admin (ja, großes A…) – Passwort zabbix erstmalig anmelden.
Zabbix-Agents unter Linux mit Ansible einrichten
Den ersten Testlauf auf einem Server habe ich natürlich mit apt-get install zabbix-agent
begonnen. Richtig „Lustig“ wurde es dann aber, als ich meine Ansible-„Suite“ um den Zabbix-Agent erweitert habe und sich dann alle Server direkt beim Zabbix-Server registriert haben.
Ich verwende dazu die Ansible Role dj-wasabi.zabbix-agent. Untern findet sich mein Role-File.
Zabbix-Agent unter Windows einrichten
Unter Windows hab ich den Zabixx-Agent per Hand eingerichtet, weil ich auch nur einen Windows-Server habe. Erst herunterladen und dann nach dieser Anleitung eingerichtet:
Agent im OS als Service (Dienst) bekannt machen:
c:\zabbix_agents_3.2.0.win\bin\win64\zabbix_agentd.exe --config c:\zabbix_agents_3.2.0.win\conf\zabbix_agentd.win.conf --install
Config-File anpassen:
LogFile=C:\zabbix_agents_3.2.0.win\log\zabbix_agentd.log
LogFileSize=100
Server=docker-int1.steinkopf.net
ServerActive=docker-int1.steinkopf.net
Windows-Server im Zabbix manuell anlegen.
Agent starten:
c:\zabbix_agents_3.2.0.win\bin\win64\zabbix_agentd.exe --start
Später:
c:\zabbix_agents_3.2.0.win\bin\win64\zabbix_agentd.exe --stop
c:\zabbix_agents_3.2.0.win\bin\win64\zabbix_agentd.exe --uninstall
Damit der Server den Agent erreichen kann, musste noch die Windows-Firewall angepasst werden:
E-Mail-Notifications einrichten
Damit bei den automatisch „entstandenen“ Alarmen („Trigger“) mir auch eine Mail geschickt wird muss folgendes korrekt eingerichtet werden:
- Unter „Administration“ -> „Media types“ muss bei „Email“ ein E-Mail-Server eingetragen sein.
- Der User, der der Mail bekommen soll (im einfachsten Fall, wie bei mir, also der „Admin“) muss unter „Administration“ -> „Users“ -> „Media“ eingestellt bekommen, dass er rund um die Uhr für alles benachrichtigt werden soll. (Natürlich geht das aus deutlich ausgefeilter…)
- Unter „Configuration“ -> „Actions“ muss – Achtung: „Event source: Triggers“ muss ausgewählt sein – eine Action „Report problems to Zabbix administrators“ konfiguriert werden. Inklusive „Condition“, bei welchen Triggern die Action ausgeführt werden soll. Ich habe dort „Trigger severity <> Not classified“ eingetragen.
Leider habe ich es nicht geschafft, E-Mail mit Authentifizierung einzurichten.
Anhang: docker-compose.yml
mysql:
image: mysql:5.7
mem_limit: 300m
environment:
- MYSQL_ROOT_PASSWORD=xxx
restart: always
volumes:
- /opt/dockervolumes/zabbix-int/var_lib_mysql:/var/lib/mysql
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
mysql-backup:
image: 'dsteinkopf/backup-all-mysql:latest'
environment:
- BACKUP_INTERVAL=20000
- BACKUP_FIRSTDELAY=3600
links:
- mysql
restart: always
volumes:
- /opt/dockervolumes/zabbix-int/mysql-backup:/var/dbdumps
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
zabbix-server:
image: zabbix/zabbix-server-mysql:ubuntu-latest
environment:
- DB_SERVER_HOST=mysql
- MYSQL_USER=root
- MYSQL_PASSWORD=xxx
links:
- mysql
ports:
- 10051:10051
restart: always
volumes:
- /opt/dockervolumes/zabbix-int/usr_lib_zabbix_alertscripts:/usr/lib/zabbix/alertscripts
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
zabbix-web:
image: zabbix/zabbix-web-apache-mysql:ubuntu-latest
environment:
- DB_SERVER_HOST=mysql
- MYSQL_USER=root
- MYSQL_PASSWORD=xxx
- TZ=Europe/Berlin
links:
- mysql
- zabbix-server
ports:
- 8083:80
restart: always
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
Anhang: Ansible-Konfiguration
- name: install zabbix agent
hosts: all
become: true
become_user: root
# see https://github.com/dj-wasabi/ansible-zabbix-agent
roles:
- role: dj-wasabi.zabbix-agent
agent_server: docker-int1.steinkopf.net,172.17.0.4 # 172.17.0.4 = local docker ip
agent_serveractive: docker-int1.steinkopf.net
zabbix_url: http://docker-int1.steinkopf.net:8083/
zabbix_api_user: Admin
zabbix_api_pass: xxx
zabbix_api_create_hosts: True
zabbix_create_host: present
zabbix_host_groups:
- Linux servers
zabbix_link_templates:
- Template OS Linux
#zabbix_macros:
# - macro_key: apache_type
# macro_value: reverse_proxy
2 thoughts on “Zabbix – Monitoring auch im kleinen Umfeld leicht aufgesetzt”