Zabbix
Rozdělení
- Server, Frontend, Agent - Vlastni server
- Proxy - pro propojení mezi různými sítěmi, nebo pro lokalní chace
- Agent - původní agent psany v #C
- Agent 2 - nový agent v Go
- Jawa Gateway - gw pro monitoring jawa aplikaci
- Web Service - generuje reporty
Zabbix server
Instalace úvod
Pro Zabbix server je potřeba webserver, ten osobně preferuji Apache. Dále je potřeba databáze. Podporovaná je DBMaria a PostgreSQL. Obecně se doporučuje PostgreSQL. Je na něj lépe optimalizovaná a umí sní komprimaci dat.
Instalace Apache
Prvně nainstalujeme Apache a pomocne programy
apt update apt upgrade -y apt install sudo apache2 php
Aby se Zabbix otevřel po připojeni na server, tak si nastavime rovnou přesměrováni.
nano /var/www/html/index.html !DOCTYPE html> <html> <head> <meta http-equiv="refresh" content="0; url='/zabbix'" /> </head> </html>
Pokud chceme, nastavíme si přes sudo root práva.
nano /etc/sudoers.d/"uzivatel" # Komplet prava "uzivatel" ALL=(ALL:ALL) NOPASSWD: ALL
Instalace PostgreSQL
Poté podle postupu na webu nainstalujeme PostgreSQL - https://docs.timescale.com/self-hosted/latest/install/installation-linux . K tomuto postupu je i odkaz přímo na stránkach Zabixe -https://www.zabbix.com/documentation/current/en/manual/appendix/install/timescaledb
Instalace Zabbix serveru
Postup je pěkně zpracovaný přímo na stránkách Zabixu. Proto doporučuji postupovat dle jejich návodu. Jen pro jistotu připomínám nastavení pro automatické spuštění
sudo systemctl enable zabbix-agent2
Zabbix klient
Instalace Zabbix agenta
Pro instalaci agenta využijeme návod přímo na stránkách Zabbixu.
Pro Rasperry to znamena:
wget https://repo.zabbix.com/zabbix/6.4/raspbian/pool/main/z/zabbix-release/zabbix-release_6.4-1+debian11_all.deb sudo dpkg -i zabbix-release_6.4-1+debian11_all.deb sudo apt update && sudo apt install -y zabbix-agent2 sudo systemctl enable zabbix-agent2
Nastavení Zabbix agenta
Po instalaci nastavíme konfiguraci agenta
sudo mcedit /etc/zabbix/zabbix_agent2.conf ... ... Server=127.0.0.1 ... ... ServerActive=127.0.0.1 ... #Hostname=Zabbix server ... HostnameItem=system.hostname ... ...
sudo systemctl restart zabbix-agent2.service
Zabbix sender
sudo apt install zabbix-sender
Rozšíření
Ne všechny hodnoty jdou načíst přímo agentem. Je nutné pro některé věci přidat
APT update
Rychlá instalace:
bash -c "$(wget -nv -O - https://rxw.cz/zabbix/install-debian_apt_zabbix.sh)"
Pokud si vše chcete udělat postupně:
Vlastni skript vyžaduje zabbix sender.
sudo apt update sudo apt install zabbix-sender
Stáhneme pomocný skript
wget http://rxw.cz/zabbix/debian_apt_zabbix.sh chmod 755 debian_apt_zabbix.sh sudo chown root:root debian_apt_zabbix.sh sudo mkdir -p /etc/zabbix/scripts sudo mv debian_apt_zabbix.sh /etc/zabbix/scripts/
Nastavime cron, aby prováděl pravidelne zpracovaní
sudo nano /etc/cron.d/debian_apt_zabbix # Script pro kontrolu aktualizaci systemu urceny pro zabbix agenta 30 7,15,23 * * * root /etc/zabbix/scripts/debian_apt_zabbix.sh
Na zabbix serveru přidáme šablonu k hostovi a otestujeme skript
sudo /etc/zabbix/scripts/debian_apt_zabbix.sh
Raspberi PI
Rychlá instalace:
bash -c "$(wget -nv -O - https://rxw.cz/zabbix/install-raspberrypi_zabbix.sh)"
Pokud chcete instalova ručne:
Na straně Rasberri doinstalujeme pomocný skript:
wget https://rxw.cz/zabbix/raspberrypi.sh chmod 755 raspberrypi.sh sed -i 's/\/opt\/vc\/bin\/vcgencmd/\/bin\/vcgencmd/g' raspberrypi.sh sudo mkdir -p /etc/zabbix/scripts sudo mv raspberrypi.sh /etc/zabbix/scripts/ sudo usermod -aG video zabbix
Přidáme konfiguraci Zabbixu:
sudo nano /etc/zabbix/zabbix_agent2.d/raspberrypi.conf # Nastav uzivatelsky skript pro cteni dat z RaspbeeriPI UnsafeUserParameters=1 UserParameter=raspberrypi.sh[*],/etc/zabbix/scripts/raspberrypi.sh $1
a klienta restartujeme:
sudo systemctl restart zabbix-agent2.service
Na straně Zabbix serveru importujeme šablony `Template-Raspberry-Pi.xml`,
Odkazy:
- https://github.com/bobbolous/zabbix-agent-on-RasPi/tree/master
- https://pimylifeup.com/raspberry-pi-low-voltage-warning/
- https://elinux.org/RPI_vcgencmd_usage
NTP
Zhromažďyje a kontroluje data z NTP serveru. Nezáleží o jaký řád vlastního NTP serveru jde, využívá výpisu stavu pomocí ntpq -p.
Rychlá instalace: bash -c "$(wget -nv -O - https://rxw.cz/zabbix/install-ntpq_zabbix.sh)"
Ruční nastavení:
Na Zabbix agentovi musíme povolit spouštění utility ntpq.
sudo nano /etc/zabbix/zabbix_agent2.d/ntpq.conf # Allow ntpd for template NTP AllowKey=system.run[ntpq -*]
sudo systemctl restart zabbix-agent2.service
Poté na strane Zabbix serveru nainstalujeme vlastní temlejtu.
- Odkaz na originalni projekt: https://github.com/zabbix/community-templates/tree/main/Applications/NTP/template_ntp_accuracy/
Chrony
Zhromažďyje a kontroluje data z Chrony serveru. Nezáleží o jaký řád vlastního NTP serveru jde, využívá výpisu stavu pomocí chronyc tracking.
Rychlá instalace:
bash -c "$(wget -nv -O - https://rxw.cz/zabbix/install-chrony_zabbix.sh)"
Ruční nastavení:
Na Zabbix agentovi musíme povolit spouštění utility chronyc.
sudo nano /etc/zabbix/zabbix_agent2.d/chrony.conf # Nastav uzivatelsky skript pro cteni dat z RaspbeeriPI UnsafeUserParameters=1 AllowKey=system.run[chronyc tracking*] AllowKey=system.run[chronyc sources*] AllowKey=system.run[chronyc -v] AllowKey=system.run[chronyd --version]
Následně zajistíme načtení nové konfigurace:
sudo systemctl restart zabbix-agent2.service
Na konec na strane Zabbix serveru nainstalujeme vlastní templejtu.
Odkaz na originalni projekt:
- https://github.com/zabbix/community-templates/tree/main/Applications/NTP/template_chrony_accuracy_english
- https://github.com/zabbix/community-templates/tree/main/Applications/NTP/template_chrony_accuracy
Bind9
- Originální odkaz: https://github.com/zabbix/community-templates/tree/main/Applications/DNS/template_bind_stat/6.0
V konfiguraci Bind9 musí být někde, například v named.conf nastaveno:
statistics-channels { inet 127.0.0.1 port 8053 allow { 127.0.0.1; }; };
Doinstalujeme potřebné pomocné utility:
sudo apt install curl xml2
Dála nestavíme uživatelské parametry pro zabbix agenta:
sudo nano /etc/zabbix/zabbix_agent2.d/bind9.conf UserParameter=bind.net.udp,netstat -nua | grep :53 | wc -l UserParameter=bind.net.tcp,netstat -nta | grep :53 | wc -l UserParameter=bind.queries.in[*],curl http://127.0.0.1:8053/ 2>/dev/null | xml2 | grep -A1 "/statistics/server/counters/counter/@name=$1$" | tail -1 | cut -d= -f2 UserParameter=bind.queries.out[*],curl http://127.0.0.1:8053/ 2>/dev/null | xml2 | grep -A1 "/statistics/views/view/counters/counter/@name=$1$" | tail -1 | cut -d= -f2 UserParameter=bind.queries.query[*],curl http://127.0.0.1:8053/ 2>/dev/null | xml2 | grep -A1 "/statistics/server/counters/counter/@name=Qry$1$" | tail -1 | cut -d= -f2
Restartujeme agenta:
sudo systemctl restart zabbix-agent2.service
Pak již stačí naimportovat šablonu do Zabbix serveru a přiřadit hostovi....
GPS
https://github.com/chrisgilldc/gpsd_status
Stáhneme pomocný skript na GPS server. Pozor potřebuje upravit výstup pro -l.
wget https://raw.githubusercontent.com/chrisgilldc/gpsd_status/master/gpsd_status.py chmod 755 gpsd_status.py sudo mkdir -p /etc/zabbix/scripts sudo mv gpsd_status.py /etc/zabbix/scripts/
Ve vlastním skriptu pak nahradime print(json.dumps(discovery_final, indent=4)) za print(json.dumps(discovery)).
Vytvoříme konfiguraci pro Zabbix agenta
sudo nano /etc/zabbix/zabbix_agent2.d/gpsd_status.conf # GPSD status' > /etc/zabbix/zabbix_agent2.d/gpsd_status.conf UserParameter=gpsd.info[*],/etc/zabbix/scripts/gpsd_status.py -d "$1" -k "$2" UserParameter=gpsd.discover,/etc/zabbix/scripts/gpsd_status.py -l -d /dev -s Timeout=5 # Nevim ktery z tech dvou je spravny ... PluginTimeout=5
Doinstalujeme Zabix sender a restartneme agenta
sudo apt install zabbix-sender sudo systemctl restart zabbix-agent2.service
Nastavíme cron pro odesílání dat kde nastavíme:
- <device> - cesta k GPS přijímači
- <Host> - hostname gpsd serveru
- <Zabbix Server> - adresa Zabbix serveru
sudo nano /etc/cron.d/gpsd_status # Update GPSd satellite data every 15m */15 * * * * root /etc/zabbix/scripts/gpsd_status.py -d <device> -s | zabbix_sender -s <Host> -z <Zabbix Server> -i -
Icecast
Zatím neověřeno, ale uvidime ...
Dalsi
- Zajimavy odkaz: https://techexpert.tips/zabbix/
- BTC: https://github.com/zkSNACKs/zbx-bitcoin/tree/master
Laděni
Klient
Na klientovi můžeme spustit agenta z parametrem `-t` a tím ověřit správnost zadání parametru. Například:
sudo zabbix_agent2 -t system.run['ntpq -c version']
Server
Na server je dobré doinstalovat `zabbix-get` který umožňuje vzdálené načtení jednotlivých položek od klientů. Příklad použití:
zabbix_get -s ntp.slapnet.cz -p 10050 -k system.run['ntpq -c version']