Zabbix Server/Agent installieren (AlmaLinux aarch64)
Eine Anleitung um Zabbix Server & Zabbix Agent auf AlmaLinux (aarch64) zu installieren.
LAMP Stack installieren
Apache installieren
dnf install httpd
Apache Webserver starten:
systemctl enable --now httpd
Den Status des Webservers überprüfen:
systemctl status httpd
AlmaLinux hat standardmäßig eine Firewall installiert.
Falls diese jedoch fehlen sollte kann sie einfach installiert werden:
dnf install firewalld
Jetzt muss dem Webserver und Zabbix noch erlaubt werden durch die Firewall zu kommunizieren... Mit folgendem Befehl werden die Ports für HTTP(80), HTTPS(443) und den Zabbix Server (10051) geöffnet:
firewall-cmd --permanent --zone=public --add-service=http --add-service=https --add-service=zabbix-server
firewall-cmd --reload
Falls auf einem anderen Client mit Firewall, der Zabbix Agent installiert wird muss dort ebenfalls der entsprechende Port freigegeben werden.
firewall-cmd --permanent --zone=public --add-service=zabbix-agent
firewall-cmd --reload
Über http://<IP-Adresse> sollte eine Testseite des Webservers zu sehen sein.
MariaDB installieren
dnf module install mariadb:10.5
Mariadb starten:
systemctl enable --now mariadb
Den Status der Datenbank prüfen:
systemctl status mariadb
Um Mariadb einzurichten sollte folgender Befehl ausgeführt werden:
mysql_secure_installation
Alternativ falls der Befehl nicht funktionieren sollte:
mariadb-secure-installation
- Passwort eingeben
- Switch to unix_socket authentication: N
- Change the root password?: N
- Remove anonymous users?: Y
- Disallow root login remotely?: Y
- Remove test database and access to it?: Y
- Reload privilege tables now?: Y
PHP installieren
dnf install php php-mysqlnd php-bcmath php-gd php-ldap
systemctl restart httpd
In der php.ini müssen noch ein paar Zeilen angepasst werden:
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
Zabbix Source kompilieren
dnf install wget tar
https://www.zabbix.com/download_sources
wget https://cdn.zabbix.com/zabbix/sources/stable/5.4/zabbix-5.4.7.tar.gz
tar -zxvf zabbix-5.4.7.tar.gz
dnf install gcc mariadb-devel libxml2-devel net-snmp-devel libevent-devel curl-devel pcre-devel make
dnf --enablerepo=powertools install OpenIPMI-devel
cd zabbix-5.4.7
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
make install
Zabbix konfigurieren und starten
Datenbank einrichten
mysql -uroot -p<password>
create database zabbix character set utf8 collate utf8_bin;
create user 'zabbix'@'localhost' identified by '<password>';
grant all privileges on zabbix.* to 'zabbix'@'localhost';
quit;
cd database/mysql
mysql -uzabbix -p<password> zabbix < schema.sql
mysql -uzabbix -p<password> zabbix < images.sql
mysql -uzabbix -p<password> zabbix < data.sql
Wenn ihr ein Passwort für die Datenbank vergeben habt, muss dieses in der Konfiguration hinterlegt werden.
Die Server-Konfigurationsdatei öffnen:
vi /usr/local/etc/zabbix_server.conf
Folgenden Eintrag suchen:
### Option: DBPassword
# Database password.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=
Ändern in:
### Option: DBPassword
# Database password.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword=<password>
Zabbix versucht automatisch über den User 'zabbix' zu starten da den Prozess als 'root' zu starten ein Sicherheitsrisiko wäre.
Daher müssen wir diesen Benutzer mitsamt Gruppe zunächst anlegen:
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
Zabbix Agent starten:
zabbix_agentd
Zabbix Server starten:
zabbix_server
Webinterface installieren
mkdir /var/www/html/zabbix
cd ../../ui
cp -a . /var/www/html/zabbix
chown apache:apache -R /var/www/html/zabbix
Die weitere Installation findet im Webinterface statt...
Optionales
Systemd Einträge erstellen
cd /usr/lib/systemd/system
zabbix-agent:
vi zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/usr/local/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/local/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/sh -c '[ -n "$1" ] && kill -s TERM "$1"' -- "$MAINPID"
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
zabbix-server:
vi zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=mysql.service
After=mysqld.service
After=mariadb.service
[Service]
Environment="CONFFILE=/usr/local/etc/zabbix_server.conf"
EnvironmentFile=-/etc/default/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/sh -c '[ -n "$1" ] && kill -s TERM "$1"' -- "$MAINPID"
RestartSec=10s
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
ICMP Ping benutzen
wget https://fping.org/dist/fping-5.0.tar.gz
tar -xvf fping-5.0.tar.gz
cd fping-5.0/
./configure
make && make install
vi /usr/local/etc/zabbix_agentd.conf
### Option: FpingLocation
# Location of fping.
# Make sure that fping binary has root ownership and SUID flag set.
#
# Mandatory: no
# Default:
# FpingLocation=/usr/sbin/fping
### Option: FpingLocation
# Location of fping.
# Make sure that fping binary has root ownership and SUID flag set.
#
# Mandatory: no
# Default:
FpingLocation=/usr/local/sbin/fping
UserParameter=ct.memory.size[*],free -b | awk '$ 1 == "Mem:" {total=$ 2; used=($ 3+$ 5); pused=(($ 3+$ 5)*100/$ 2); free=$ 4; pfree=($ 4*100/$ 2); shared=$ 5; buffers=$
6; cache=$ 6; available=($ 7); pavailable=(($ 7)*100/$ 2); if("$1" == "") {printf("%.0f", total )} else {printf("%.0f", $1 "" )} }'
UserParameter=ct.swap.size[*],free -b | awk '$ 1 == "Swap:" {total=$ 2; used=$ 3; free=$ 4; pfree=($ 4*100/$ 2); pused=($ 3*100/$ 2); if("$1" == "") {printf("%.0f", free
)} else {printf("%.0f", $1 "" )} }'
UserParameter=ct.cpu.load[*],uptime | awk -F'[, ]+' '{avg1=$(NF-2); avg5=$(NF-1); avg15=$(NF)}{print $2/'$(nproc)'}'
Quellen
zabbix.com/documentation/current/manual/installation/install
zabbix.com/documentation/current/manual/appendix/install/db_scripts
tecmint.com/install-lamp-in-almalinux/