Zabbix z powiadomieniami Slack na Dockerze

Po ostatnim artykule wprowadzającym do Dockera, przyszła pora na użycie go do czegoś, co realnie może się nam przydać – uruchomimy na nim serwer monitoringu – Zabbix. Artykuł nie jest wprowadzeniem do Dockera, ani Zabbiksa. Chcę w nim jedynie pokazać prosty i szybki sposób na uruchomienie całego środowiska Zabbix.

W jaki sposób uruchomić Zabbix na serwerze Docker?

Poniżej zamieszczę krótki skrypt, który wystarczy uzupełnić o odpowiednie zmienne, umieścić na serwerze z Dockerem i uruchomić. Po chwili będziemy mieli działające środowisko do którego można podpinać monitorowane serwery.

Na potrzeby zachowania danych z kontenerów, tworzymy katalog /volumes.

#!/bin/bash

HOST="192.168.1.1"
MYSQL_ROOT_PASSWORD="ieBoqAp2QtF1XpNs"
MYSQL_PASSWORD="jIy4Ua4UIl7E9blD"

docker run -d --name="zabbix-database" --restart=always -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD \
-e MYSQL_DATABASE=monitoring \
-e MYSQL_USER=monitoring \
-e MYSQL_PASSWORD=$MYSQL_PASSWORD \
-v /volumes/zabbix-database:/var/lib/mysql \
mysql:5.7 --character-set-server=utf8 --collation-server=utf8_bin

docker run -d --name="zabbix-server" --restart=always -p 10051:10051 \
-e ZBX_STARTPOLLERS=25 \
-e DB_SERVER_HOST=$HOST \
-e MYSQL_USER="monitoring" \
-e MYSQL_PASSWORD=$MYSQL_PASSWORD \
-v /volumes/zabbix-server/alertscripts:/usr/lib/zabbix/alertscripts \
-v /volumes/zabbix-server/externalscripts:/usr/lib/zabbix/externalscripts \
-v /volumes/zabbix-server/modules:/var/lib/zabbix/modules \
-v /volumes/zabbix-server/enc:/var/lib/zabbix/enc \
-v /volumes/zabbix-server/ssh_keys:/var/lib/zabbix/ssh_keys \
-v /volumes/zabbix-server/ssl/certs:/var/lib/zabbix/ssl/certs \
-v /volumes/zabbix-server/ssl/keys:/var/lib/zabbix/ssl/keys \
-v /volumes/zabbix-server/ssl_ca:/var/lib/zabbix/ssl/ssl_ca \
-v /volumes/zabbix-server/snmptraps:/var/lib/zabbix/snmptraps \
-v /volumes/zabbix-server/mibs:/var/lib/zabbix/mibs \
zabbix/zabbix-server-mysql:centos-latest

docker run -d --name="zabbix-frontend" --restart=always -p 80:80 \
-e PHP_TZ="Europe/Warsaw" \
-e ZBX_SERVER_HOST="$HOST" \
-e DB_SERVER_HOST="$HOST" \
-e MYSQL_USER="monitoring" \
-e MYSQL_PASSWORD=$MYSQL_PASSWORD \
zabbix/zabbix-web-nginx-mysql:centos-latest

Skrypt skonfiguruje i uruchomi 3 kontenery: zabbix-database, zabbix-server oraz zabbix-frontend. Po uruchomieniu skryptu należy odczekać kilka chwil na wystartowanie wszystkich kontenerów i zawartego w nich oprogramowania, następnie można już przejść na stronę http://adres_ip i zalogować się na użytkownika Admin z domyślnym hasłem zabbix.

Dodajemy wtyczkę do powiadomień Slack

Aby dodać obsługę wtyczki do powiadomień Slack, należy zalogować się do kontenera i zainstalować dodatkowe oprogramowanie.

docker exec -it zabbix-server bash 
yum -y install epel-release
yum -y install perl-JSON-XS perl-libwww-perl perl-LWP-Protocol-https perl-parent  git perl-devel perl-ExtUtils-MakeMaker perl-Test-Simple perl-Test-Exception perl-CPAN

cd /root/
git clone https://github.com/v-zhuravlev/zabbix-notify.git

cd zabbix-notify
perl Makefile.PL INSTALLSITESCRIPT=/usr/lib/zabbix/alertscripts
make test
make install

Po wykonaniu powyższych poleceń – wtyczka zostanie zainstalowana i będzie dostępna do dalszej konfiguracji według dokumentacji: https://github.com/v-zhuravlev/zabbix-notify.