Zabbix
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-ldapVer versão do php:
systemctl list-unit-files | grep phpHabilitar o serviço baseado na versão:
sudo systemctl enable --now phpVERSÃO-fpmNginx instalar e habilitar:
sudo apt install nginx
sudo systemctl enable --now nginxPostgresql instalar:
sudo apt update && sudo apt install postgresql postgresql-contrib -yHabilitar serviço:
sudo systemctl enable --now postgresqlLogar no psql:
sudo -u postgres psqlCriar 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_lsclustersAlterar o arquivo:
vim /etc/postgresql/17/main/postgresql.conf
#17 é a versão que estou usando, por isso saber a versão do postgresqlCertificar de ter essas 3 linhas descomentadas:
listen_addresses = 'localhost'
port = 5432
max_connections = 100Abrir o pg_hba.conf e adicionar as duas linhas pro zabbix conectar:
sudo vim /etc/postgresql/17/main/pg_hba.confhost zabbix zabbix 127.0.0.1/32 scram-sha-256
host zabbix zabbix ::1/128 scram-sha-256Mais 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-xmlInstalar: pelo site se encontram instruções de instalação.
Inicialmente:
sudo apt install zabbix-server-pgsqlPrincipais 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
Configurações iniciais de banco, usuário e recursos pro zabbix:
sudo vim /etc/zabbix/zabbix_server.confDBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zcxzcxzcxzcxcasdasdsa
LogType=file
LogFile=/var/log/zabbix/zabbix_server.log
PidFile=/run/zabbix/zabbix_server.pidvim /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 -tConfigurar recursos PHP que disponibilizará a inferface web:
sudo vim /etc/zabbix/php-fpm.confphp_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-ZabbixConfigurar 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/zabbixConferir 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 zabbixCriar o banco zabbix:
sudo -u postgres createdb -O zabbix -E UTF8 -T template0 zabbixVer 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 zabbixDaí as tabelas, funções e triggers foram extraídas.
Ver logs(20 mensagens mais recentes):
sudo tail -20 /var/log/zabbix/zabbix_server.logIniciar/Reiniciar serviços:
sudo systemctl restart php*-fpm
sudo systemctl restart nginx
sudo systemctl restartExtrair arquivos do banco:
Primeiro, desativar serviço:
sudo systemctl stop zabbix-serverListar arquivos instalados por zabbix-sql-scripts que tenham postgresql no nome:
dpkg -L zabbix-sql-scripts | grep postgresqlzcat 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 zabbixVerificar arquivos do banco de dados criados:
\dtVerificar instalação do zabbix:
dpkg -l | grep zabbixVerificar stats do zabbix-server:
systemctl status zabbix-serverVer serviços ativos do zabbix:
systemctl--type=service | grep zabbixLoguei no navegador com:
http://localhost:80
Login padrão do zabbix:
usuário: Admin
senha: zabbix
Alterar senha:
User settings> Profile.
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 --nginxNã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:
Criando hosts em Data Collection >hosts> Create host
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.shSCRIPT AQUIPara 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).
Depois em Test e Get value and test
Fiz um segundo com ping no Quad9(9.9.9.9):
Segundo script para contagem de hops(saltos):
echo '#!/bin/bash' > hops.sh &&
chmod +x hops.sh &&
sudo chown zabbix:zabbix hops.sh &&
vim hops.shTerceiro script para
echo '#!/bin/bash' > hops.sh &&
chmod +x hops.sh &&
sudo chown zabbix:zabbix hops.sh &&
vim hops.sh






