* No servidor de database, crie a base de dados.
# mariadb -u root -p
MariaDB> CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
MariaDB> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@'<IP_or_%>' IDENTIFIED BY '<SENHA>';
MariaDB> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY '<SENHA>';
MariaDB> FLUSH PRIVILEGES;
MariaDB> quit;
Nota: O passo abaixo é opcional, após iniciar o container com o apontamento da configuração para o servidor de base de dados sera importado de maneira automática os requerimento abaixo.
Importe os dados iniciais.
# wget https://cdn.zabbix.com/zabbix/sources/stable/5.4/zabbix-5.4.4.tar.gz
# tar zvxf zabbix-5.4.4.tar.gz
# cd zabbix-5.4.4/database/mysql
# mariadb -u zabbix -p<Senha> zabbix < schema.sql
##### stop here if you are creating database for Zabbix proxy
# mariadb -u zabbix -p<Senha> zabbix < images.sql
# mariadb -u zabbix -p<Senha> zabbix < data.sql
Link 1 / 2 /
* Acesse o servidor Docker e execute os comandos abaixo para instalar os containers Zabbix.
$ docker stop Zabbix_Server && \
docker stop Zabbix_Web && \
docker stop zabbix-java-gateway && \
docker rm Zabbix_Server && \
docker rm Zabbix_Web && \
docker rm zabbix-java-gateway && \
docker rmi zabbix/zabbix-java-gateway:latest && \
docker rmi zabbix/zabbix-server-mysql:latest && \
docker rmi zabbix/zabbix-web-nginx-mysql:latest
$ docker run --name Zabbix_Server -t \
-e DB_SERVER_HOST="<IP_DATA_BASE>" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e ZBX_JAVAGATEWAY_ENABLE="true" \
-e ZBX_CACHESIZE="64M" \
-e ZBX_STARTPOLLERS="40" \
-e ZBX_STARTPOLLERSUNREACHABLE="40" \
-e ZBX_MAXHOUSEKEEPERDELETE="5000" \
-e ZBX_STARTDBSYNCERS="4" \
-e ZBX_HISTORYCACHESIZE="32M" \
-e ZBX_TRENDCACHESIZE="4M" \
-e ZBX_VALUECACHESIZE="8M" \
-e ZBX_STARTPINGERS="20" \
-e ZBX_STARTDISCOVERERS="20" \
-e ZBX_TIMEOUT="30" \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:latest
$ docker run --name Zabbix_Web -t \
--link Zabbix_Server:zabbix-server \
-e DB_SERVER_HOST="<IP_DATA_BASE>" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e PHP_TZ="America/Sao_Paulo" \
-p 8082:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:latest
$ docker run --name zabbix-java-gateway -t \
--link Zabbix_Server:zabbix-server \
-p 10052:10052 \
-d zabbix/zabbix-java-gateway:latest
$ docker run --name zabbix-agent -t \
--link Zabbix_Server:zabbix-server \
--restart unless-stopped \
-d zabbix/zabbix-agent:latest
Nota: Ajustes os parâmetros conforme seu ambiente.
Acesse pelo navegador
http://IP_SERVIDOR:8082
Usuario: Admin
Senha: zabbix
Descobrir o IP do container.
$ docker ps -a
...
7c228dbd75c9 zabbix/zabbix-agent:latest
...
$ docker inspect 7c228dbd75c9
...
"IPAddress": "172.17.0.7",
...
Execute o reload do Cache
$ docker exec -it a814f8509ddb zabbix_server -R config_cache_reload <- UID do zabbix_server
Teste o acesso a interface Web do Zabbix com o endereço http://IP_SERVIDOR com o Username Admin e Password zabbix.
Link - https://www.zabbix.com/documentation/current/pt/manual/quickstart/login
Altere o IP do host local para o IP do container.
Crie o script abixo para atualização do Zabbix.
$ vi ~/deploy_zabbix.sh
#!/usr/bin/env bash
DOCKER=`which docker`
MKDIR=`which mkdir`
TOUCH=`which touch`
###CONTAINERS
COMPANY="NOME"
NCZBXS="Zabbix_Server"
NCZBXF="Zabbix_Frontend"
NCZBXJ="Zabbix_Java_Gateway"
NCZBXW="Zabbix_Web_Service"
NCZBXST="Zabbix_SNMP_Trap"
###PACOTES
PCZBXS="zabbix/zabbix-server-mysql:latest"
PCZBXF="zabbix/zabbix-web-nginx-mysql:latest"
PCZBXJ="zabbix/zabbix-java-gateway:latest"
PCZBXW="zabbix/zabbix-web-service:latest"
PCZBXST="zabbix/zabbix-snmptraps:latest"
### NET
CTDRI="bridge"
CTSUB="192.168.254.0/24"
CTRAN="192.168.254.0/24"
CTGAT="192.168.254.1"
CTNET="zabbix-net"
#VARIAVEIS
TIMEZONE="America/Sao_Paulo"
RESTART="unless-stopped"
HOMEZBX="/mnt/resource/CONTAINER/zabbix"
PATHSNMPTRAP="$HOMEZBX/snmptraps"
PATHMIBS="$HOMEZBX/mibs"
PATHCONF="$HOMEZBX/conf"
PATHODBCINST="$PATHCONF/odbcinst.ini"
PATHODBC="$PATHCONF/odbc.ini"
IPEXTZBX="IP_DB_SERVER"
MYLAN="IP/CIDR"
###DATABASE
DBSERVER="IP"
DBDATABASE="zabbix"
DBUSER="zabbix"
DBPASS="<PASS>"
echo "### CRIANDO OS DIRETORIOS E ARQUIVOS"
echo ""
if [[ -d $HOMEZBX ]]; then
echo "Diretorios existentes."
else
$MKDIR -p $HOMEZBX $PATHSNMPTRAP $PATHMIBS $PATHCONF
echo "Diretorios criados."
fi
if [[ -f $PATHODBCINST && -f $PATHODBC ]]; then
echo "Arquivos ODBC existentes."
else
echo "Criando arquivos ODBC."
$TOUCH $PATHODBCINST
$TOUCH $PATHODBC
echo "[FreeTDS]
Driver=/usr/lib/libtdsodbc.so.0" > $PATHODBCINST
echo "[MSSQLSERVER]
Driver=FreeTDS
Server=<IP_MSSQL>
PORT=1433
TDS_Version=8.0" > $PATHODBC
fi
echo ""
echo "### REMOVENDO CONTAINERS"
### REMOVE CONTAINERS AND IMAGES
$DOCKER stop $NCZBXS && \
$DOCKER stop $NCZBXF && \
$DOCKER stop $NCZBXJ && \
$DOCKER stop $NCZBXW &&\
$DOCKER stop $NCZBXST &&\
$DOCKER rm $NCZBXS && \
$DOCKER rm $NCZBXF && \
$DOCKER rm $NCZBXJ && \
$DOCKER rm $NCZBXW && \
$DOCKER rm $NCZBXST && \
$DOCKER rmi $PCZBXS && \
$DOCKER rmi $PCZBXF && \
$DOCKER rmi $PCZBXJ && \
$DOCKER rmi $PCZBXW && \
$DOCKER rmi $PCZBXST && \
$DOCKER network rm $CTNET
$DOCKER system prune --all --volumes --force
echo ""
echo "### CRIANDO CONTAINERS"
### CREATE NETWORK
$DOCKER network create \
--driver=$CTDRI \
--subnet=$CTSUB \
--ip-range=$CTRAN \
--gateway=$CTGAT \
$CTNET
### CREATE ZABBIX SNMPTRAP
$DOCKER run --name $NCZBXST -t \
-e TZ=$TIMEZONE \
-v $PATHSNMPTRAP:/var/lib/zabbix/snmptraps:rw \
-v $PATHMIBS:/usr/share/snmp/mibs:ro \
--restart $RESTART \
--network=$CTNET \
-p 162:1162/udp \
-d $PCZBXST
### CREATE ZABBIX JAVA GATEWAY
$DOCKER run --name $NCZBXJ -t \
-e TZ=$TIMEZONE \
--restart $RESTART \
--network=$CTNET \
-p 10052:10052 \
-d $PCZBXJ
### CREATE ZABBIX WEB SERVICE
$DOCKER run --name $NCZBXW -t \
-e ZBX_ALLOWEDIP="127.0.0.1,::1,$MYLAN,$CTSUB" \
-e TZ=$TIMEZONE \
--cap-add=SYS_ADMIN \
--restart $RESTART \
--network=$CTNET \
-p 10053:10053 \
-d $PCZBXW
### CREATE ZABBIX SERVER
$DOCKER run --name $NCZBXS -t \
-e DB_SERVER_HOST=$DBSERVER \
-e MYSQL_DATABASE=$DBDATABASE \
-e MYSQL_USER=$DBUSER \
-e MYSQL_PASSWORD=$DBPASS \
-e ZBX_JAVAGATEWAY_ENABLE="true" \
-e ZBX_ENABLE_SNMP_TRAPS="true" \
-e ZBX_CACHESIZE="256M" \
-e ZBX_STARTPOLLERS="140" \
-e ZBX_STARTPOLLERSUNREACHABLE="40" \
-e ZBX_STARTODBCPOLLERS="10" \
-e ZBX_MAXHOUSEKEEPERDELETE="5000" \
-e ZBX_STARTDBSYNCERS="4" \
-e ZBX_HISTORYCACHESIZE="32M" \
-e ZBX_TRENDCACHESIZE="4M" \
-e ZBX_VALUECACHESIZE="16M" \
-e ZBX_STARTPINGERS="20" \
-e ZBX_STARTDISCOVERERS="20" \
-e ZBX_TIMEOUT="30" \
-e ZBX_LOGSLOWQUERIES="3000" \
-e ZBX_STARTREPORTWRITERS="3" \
-e ZBX_WEBSERVICEURL="http://$IPEXTZBX:10053/report" \
-e TZ=$TIMEZONE \
--volumes-from $NCZBXST \
-v $PATHODBCINST:/etc/odbcinst.ini:ro \
-v $PATHODBC:/etc/odbc.ini:ro \
--restart $RESTART \
--network=$CTNET \
-p 10051:10051 \
-d $PCZBXS
### CREATE ZABBIX FRONTEND
$DOCKER run --name $NCZBXF -t \
-e ZBX_SERVER_NAME=$COMPANY \
-e ZBX_SERVER_HOST=$NCZBXS \
-e DB_SERVER_HOST=$DBSERVER \
-e MYSQL_DATABASE=$DBDATABASE \
-e MYSQL_USER=$DBUSER \
-e MYSQL_PASSWORD=$DBPASS \
-e PHP_TZ=$TIMEZONE \
-e TZ=$TIMEZONE \
--restart $RESTART \
--network=$CTNET \
-p 8080:8080 \
-d $PCZBXF
### INSTALL FREETDS
sleep 5
echo ""
echo "### Install FreeTDS"
$DOCKER exec -it -u root $NCZBXS apk add freetds > /dev/null 2>&1
echo ""
echo "### SCRIPT FINALIZADO"
echo ""
#########################################
### EM AVALIACAO
docker run --name zabbix-agent -t \
--link Zabbix_Server:zabbix-server \
--restart unless-stopped \
-d zabbix/zabbix-agent:latest
#-p 10050:10050 \ <- em avaliação
#-e ZBX_SERVER_HOST="Zabbix_Server" \ <- em avaliação
Install zabbix-agent2 no servidor e configurar
# vi /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agentd2.pid
LogFile=/var/log/zabbix/zabbix_agentd2.log
LogFileSize=0
Server=192.168.1.102,192.168.254.0/24 <- Adicionar o IP do servidor host e do Zabbix Server Container
ServerActive=192.168.1.102 <- Opcional
Hostname=Hostname do servidor
Nas configurações de Hosts no Zabbix, ter duas configurações:
Servidor
Hostname: Hostname do Servidor
IP: 192.168.1.102:10050
Template: Docker by Zabbix agent2, ICMP Ping, Linux by Zabbix agent
Zabbix Server
Hostname: Zabbix server
IP: 192.168.254.5:10050
Template: Zabbix server health
Reiniciar o serviço
# systemctl restart zabbix-agent2.service
Depois de atualizar o container avaliar se os logs do SYSLOG que estão apresentando falhas de conexão com o MariaDB, caso sim é necessário atualizar o banco de dados.
# mariadb-upgrade -u root -p --force