Zabbix: Porovnání verzí

Z Poznámkový blok
Přejít na: navigace, hledání
(Instalace serveru)
(APT update)
 
(Není zobrazeno 101 mezilehlých verzí od stejného uživatele.)
Řádka 9: Řádka 9:
 
* Web Service    - generuje reporty
 
* Web Service    - generuje reporty
  
== Instalace serveru ==
+
== Zabbix server ==
Pro Zabbix se doporučuje PostgreSQL. Je na něj lépe optimalizovaná a umí sní komprimaci dat. Před vlastní instalací proto nainstalujeme prvně Apache a PostgreSQL.
+
=== 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 update
 
  apt upgrade -y
 
  apt upgrade -y
  apt install apache2
+
  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 [https://www.zabbix.com/download?zabbix=6.4&os_distribution=debian&os_version=11&components=server_frontend_agent&db=pgsql&ws=apache Zabixu]. Proto doporučuji postupovat dle jejich návodu.
  
Nainstalujeme repozitář a poté vlastní zabbix server včetně potřebných komponent. Vždy je nutné ověřit aktuální požadovanou verzi přímo na stránkách [https://www.zabbix.com/download?zabbix=6.4&os_distribution=debian&os_version=11&components=server_frontend_agent&db=pgsql&ws=apache Zabixu].
+
== Zabbix klient ==
  
  wget wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_6.4-1+debian11_all.deb
+
=== Instalace Zabbix agenta ===
  dpkg -i zabbix-release_6.4-1+debian11_all.deb
+
Pro instalaci agenta využijeme návod přímo na [https://www.zabbix.com/download?zabbix=6.4&os_distribution=debian&os_version=11&components=agent_2&db=&ws= stránkách Zabbixu].
  apt update  
+
 
 +
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
 
   
 
   
  apt install zabbix-server-pgsql zabbix-frontend-php php7.4-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent
+
  ...
 +
...
 +
Server=127.0.0.1
 +
...
 +
...
 +
ServerActive=127.0.0.1
 +
...
 +
#Hostname=Zabbix server  
 +
...
 +
HostnameItem=system.hostname
 +
...
 +
...
  
V databázi vytvoříme uživatele pro Zabbix.
+
  sudo systemctl restart zabbix-agent2.service
  sudo -u postgres createuser --pwprompt zabbix
 
sudo -u postgres createdb -O zabbix zabbix
 
  
Na serveru Zabbix importujeme počáteční schéma a data. Budeme vyzváni k zadání nového hesla.
+
== Zabbix sender ==
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix  
+
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 ===
 +
( <nowiki>wget https://www.slapnet.cz/zabbix/install-debian_apt_zabbix.sh && chmod +x install-debian_apt_zabbix.sh && ./install-debian_apt_zabbix.sh</nowiki> )
 +
 
 +
Tento skript vyžaduje zabbix sender.
 +
sudo apt update
 +
sudo apt install zabbix-sender
 +
Stáhneme pomocný skript
 +
wget http://slapnet.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
 
   
 
   
  set global log_bin_trust_function_creators = 0;
+
  # Script pro kontrolu aktualizaci systemu urceny pro zabbix agenta
  quit;  
+
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 ===
 +
( <nowiki>wget http://slapnet.cz/zabbix/install-raspberrypi_zabbix.sh && chmod +x install-raspberrypi_zabbix.sh && ./install-raspberrypi_zabbix.sh</nowiki> )
 +
 
 +
Na straně Rasberri doinstalujeme pomocný skript:
 +
wget https://slapnet.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
 +
 
 +
=== 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....
 +
 
 +
=== 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.
 +
 
 +
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/
 +
 
 +
=== 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 ...
 +
* https://github.com/hairmare/zabbix-icecast
 +
=== Dalsi ===
 +
* Zajimavy odkaz: https://techexpert.tips/zabbix/
 +
* BTC: https://github.com/zkSNACKs/zbx-bitcoin/tree/master
  
V souboru ''/etc/zabbix/zabbix_server.conf'' nastavíme přístup Zabbixu do databaze.
+
== Laděni ==
  nano /etc/zabbix/zabbix_server.conf
+
=== Klient ===
DBPassword=password
+
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']
  
Nakonec Zabbix spustíme a nastavíme aby se po startu spouštěl automaticky.
+
=== Server ===
systemctl restart zabbix-server zabbix-agent apache2
+
Na server je dobré doinstalovat `zabbix-get` který umožňuje vzdálené načtení jednotlivých položek od klientů.
  systemctl enable zabbix-server zabbix-agent apache2
+
Příklad použití:
 +
  zabbix_get -s ntp.slapnet.cz -p 10050 -k system.run['ntpq -c version']
 +
=== Odkazy ===
 +
* [https://www.zabbix.com/documentation/current/en/manual/appendix/macros/supported_by_location Zeznam vnitřních proměnných zabbixu]

Aktuální verze z 6. 7. 2024, 23:13


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.

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

( wget https://www.slapnet.cz/zabbix/install-debian_apt_zabbix.sh && chmod +x install-debian_apt_zabbix.sh && ./install-debian_apt_zabbix.sh )

Tento skript vyžaduje zabbix sender.

sudo apt update
sudo apt install zabbix-sender

Stáhneme pomocný skript

wget http://slapnet.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

( wget http://slapnet.cz/zabbix/install-raspberrypi_zabbix.sh && chmod +x install-raspberrypi_zabbix.sh && ./install-raspberrypi_zabbix.sh )

Na straně Rasberri doinstalujeme pomocný skript:

wget https://slapnet.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:

Bind9

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....

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.

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.

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

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']

Odkazy