Zabbix Server/Agent installieren (AlmaLinux aarch64)

Version vom 20. Dezember 2021, 08:38 Uhr von Robin Tönniges (Diskussion | Beiträge) (→‎Kommentare)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Eine Anleitung um Zabbix Server & Zabbix Agent auf AlmaLinux (aarch64) zu installieren.

Zabbix Dashboard.png

LAMP Stack installieren

Apache installieren

dnf install httpd

Apache Webserver starten:

systemctl enable --now httpd

Den Status des Webservers überprüfen:

systemctl status httpd
 
Der httpd Service läuft


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
 
Der mariadb Service läuft

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

http://<IP-Adresse>/zabbix

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/

Kommentare

Loading comments...