Sitemap

Zabbix

6 min readOct 24, 2026

--

Um programa que serve como sistema de monitoramento e pode ser usado com vários outros programas. Apresentarei com Debian 13, Postgresql, Python, Docker e Nginx.

O que preciso instalar e habilitar além do zabbix:

PHP:

sudo apt install php-fpm php-mysql php-pgsql php-gd php-bcmath php-mbstring 
\php-xml php-ldap

Ver versão do php:

systemctl list-unit-files | grep php

Habilitar o serviço baseado na versão:

sudo systemctl enable --now phpVERSÃO-fpm
Press enter or click to view image in full size

Nginx instalar e habilitar:

sudo apt install nginx
sudo systemctl enable --now nginx

Postgresql instalar:

sudo apt update && sudo apt install postgresql postgresql-contrib -y

Habilitar serviço:

sudo systemctl enable --now postgresql

Logar no psql:

sudo -u postgres psql

Criar usuário:

CREATE USER usuário WITH PASSWORD 'senha' SUPERUSER CREATEDB CREATEROLE;

Criar banco para o usuário:

CREATE DATABASE banco OWNER usuário;

Mais algumas coisas para conferir:

Ver versão postgresql:

pg_lsclusters

Alterar o arquivo:

vim /etc/postgresql/17/main/postgresql.conf
#17 é a versão que estou usando, por isso saber a versão do postgresql

Certificar de ter essas 3 linhas descomentadas:

listen_addresses = 'localhost'
port = 5432
max_connections = 100

Abrir o pg_hba.conf e adicionar as duas linhas pro zabbix conectar:

sudo vim /etc/postgresql/17/main/pg_hba.conf
host    zabbix    zabbix   127.0.0.1/32    scram-sha-256
host zabbix zabbix ::1/128 scram-sha-256

Mais instalações:

sudo apt update

sudo apt install \
zabbix-frontend-php \
zabbix-nginx-conf \
zabbix-sql-scripts \
php8.4-fpm \
php8.4-pgsql \
php8.4-bcmath \
php8.4-mbstring \
php8.4-gd \
php8.4-xml

Instalar: pelo site se encontram instruções de instalação.

Inicialmente:

sudo apt install zabbix-server-pgsql
Press enter or click to view image in full size
Press enter or click to view image in full size
Press enter or click to view image in full size

Principais arquivos de configurações:

Configuração do servidor Zabbix:
/etc/zabbix/zabbix_server.conf

Configuração do agente tradicional:
/etc/zabbix/zabbix_agentd.conf

Configuração do Agent 2:
/etc/zabbix/zabbix_agent2.conf

Configuração do Nginx(configurações de rede, como alterar servidor ou porta):
/etc/zabbix/nginx.conf

Configurações do PHP-FPM:
/etc/php/*/fpm/php.ini

Configuração do PostgreSQL:
/etc/postgresql/*/main/postgresql.conf

Autenticação e controle de acesso ao PostgreSQL:
/etc/postgresql/*/main/pg_hba.conf

Plugins:

/etc/zabbix/zabbix_agent2.d/plugins.d

Press enter or click to view image in full size

Configurações iniciais de banco, usuário e recursos pro zabbix:

sudo vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zcxzcxzcxzcxcasdasdsa

LogType=file
LogFile=/var/log/zabbix/zabbix_server.log
PidFile=/run/zabbix/zabbix_server.pid
vim /etc/nginx/conf.d/zabbix.conf
#config requisições php
server {
listen 80;
server_name _;

root /usr/share/zabbix/ui;
index index.php;

location = /favicon.ico {
log_not_found off;
}

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /\.(ht|git) {
deny all;
}
}

Determinar porta ouvinte:

sudo vim /etc/zabbix/nginx.conf:
listen 80;
server_name _;

Teste se os arquivos funcionam:

sudo nginx -t
Press enter or click to view image in full size

Configurar recursos PHP que disponibilizará a inferface web:

sudo vim /etc/zabbix/php-fpm.conf
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = America/Sao_Paulo

#Em timezone, só colocar o timezone do lugar, coloquei de São Paulo como exemplo.

Voltando a confirar o zabbix:

sudo vim /etc/zabbix/zabbix_agent2.conf
# endereço do servidor zabbix
Server=127.0.0.1

# endereço com permissão para comunicação
ServerActive=127.0.0.1

#host
Hostname=Debian-Zabbix
Press enter or click to view image in full size

Configurar zabbix server:

Get Linuxmon’s stories in your inbox

Join Medium for free to get updates from this writer.

Criar diretório de logs com permissões de usuário:

sudo mkdir -p /var/log/zabbix
sudo chown zabbix:zabbix /var/log/zabbix
sudo chmod 755 /var/log/zabbix

Conferir se todos os serviços constam como enable e se não estiverem:

systemctl list-unit-files | grep -E 'zabbix|nginx|postgresql|php.*fpm'
sudo systemctl enable zabbix-server
sudo systemctl enable zabbix-agent
sudo systemctl enable zabbix-agent2 # depende do agent instalado
sudo systemctl enable nginx
sudo systemctl enable postgresql
sudo systemctl enable php8.4-fpm

Criar usuário zabbix no postgres:

sudo -u postgres createuser --pwprompt zabbix

Criar o banco zabbix:

sudo -u postgres createdb -O zabbix -E UTF8 -T template0 zabbix

Ver onde está instalado o sql

dpkg -L zabbix-sql-scripts | grep 'postgresql/server.sql.gz'

Colocar o resultado na parte da esquerda do pipe:

zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Daí as tabelas, funções e triggers foram extraídas.

Ver logs(20 mensagens mais recentes):

sudo tail -20 /var/log/zabbix/zabbix_server.log

Iniciar/Reiniciar serviços:

sudo systemctl restart php*-fpm
sudo systemctl restart nginx
sudo systemctl restart

Extrair arquivos do banco:

Primeiro, desativar serviço:

sudo systemctl stop zabbix-server

Listar arquivos instalados por zabbix-sql-scripts que tenham postgresql no nome:

dpkg -L zabbix-sql-scripts | grep postgresql

zcat descompactará o arquivo server.sql.gz e vai mandar o conteúdo para a saída padrão, depois conectar ao psql com o usuário: zabbix, host: localhost e banco: zabbix.

zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | 
psql -U zabbix -h localhost -d zabbix
Press enter or click to view image in full size
Press enter or click to view image in full size

Verificar arquivos do banco de dados criados:

\dt
Press enter or click to view image in full size

Verificar instalação do zabbix:

dpkg -l | grep zabbix

Verificar stats do zabbix-server:

systemctl status zabbix-server

Ver serviços ativos do zabbix:

systemctl--type=service | grep zabbix
Press enter or click to view image in full size
Press enter or click to view image in full size

Loguei no navegador com:
http://localhost:80

Login padrão do zabbix:
usuário: Admin
senha: zabbix

Press enter or click to view image in full size

Alterar senha:

User settings> Profile.

Press enter or click to view image in full size

Instalar o certbot para poder usar com criptografia:

sudo apt install python3 python3-venv libaugeas0
sudo python3 -m venv /opt/certbot
sudo /opt/certbot/bin/pip install --upgrade pip
sudo /opt/certbot/bin/pip install certbot certbot-nginx
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot

# instalar python, virtualenv e a biblioteca de alterar arquivos de config
# criar o ambiente virtual venv no diretório /opt/certbot
# atualização do pip
# pip instala certbot e certbot-nginx
# cria link simbólico de /opt/certbot/bin/certbot em /usr/bin/certbot

Gerar certificado:

sudo certbot --nginx
Press enter or click to view image in full size
Press enter or click to view image in full size

Não concluí pois não tenho domínio próprio.

Atualizar o certificado:

echo "0 13 * * 5 root /opt/certbot/bin/python -c 'import random; 
import time; time.sleep(random.random() * 3600)' &&
/opt/certbot/bin/certbot renew -q" |
sudo tee -a /etc/crontab > /dev/null


Printa o cronjob que executará toda sexta-feira às 13h como root depois executa a versão do python do certbot, que trará a biblioteca random para executar o cronjob as 13h + minutagem aleatória depois executa a renovação em modo quiet(para reduzir a saída) e o comando será enviado para /etc/crontab, com saída enviada para null para não aparecer no terminal.

Em Data Collection pode-se separar hosts em grupos:

Press enter or click to view image in full size

Criando hosts em Data Collection >hosts> Create host

Press enter or click to view image in full size

Criando script para gerenciamento de rede em /usr/lib/zabbix/externalscripts/ e depois trocar a autoridade do script pro zabbix:

sudo echo > ping.sh  && chmod +x  && vim ping.sh
sudo chown zabbix:zabbix ping.sh
Press enter or click to view image in full size
SCRIPT AQUI

Para poder usar esse script, fui em items no gerenciador de redes, coloquei as definições abaixo(usando o ip 1.1.1.1 da cloudflare como teste).

Press enter or click to view image in full size

Depois em Test e Get value and test

Press enter or click to view image in full size

Fiz um segundo com ping no Quad9(9.9.9.9):

Press enter or click to view image in full size

Segundo script para contagem de hops(saltos):

echo '#!/bin/bash' > hops.sh && 
chmod +x hops.sh &&
sudo chown zabbix:zabbix hops.sh &&
vim hops.sh
Press enter or click to view image in full size

Terceiro script para

echo '#!/bin/bash' > hops.sh && 
chmod +x hops.sh &&
sudo chown zabbix:zabbix hops.sh &&
vim hops.sh

--

--