Logo

dev-resources.site

for different kinds of informations.

Instalando Zabbix Server com MySQL, Grafana e Traefik em Docker

Published at
11/13/2023
Categories
zabbix
docker
grafana
traefik
Author
alfredotavio
Categories
4 categories in total
zabbix
open
docker
open
grafana
open
traefik
open
Author
12 person written this
alfredotavio
open
Instalando Zabbix Server com MySQL, Grafana e Traefik em Docker

O monitoramento eficaz da infraestrutura de TI é uma necessidade crítica para qualquer organização que deseje manter o desempenho e a disponibilidade de seus sistemas. O Zabbix é uma plataforma Open Source amplamente utilizada para monitorar servidores, redes e serviços, oferecendo recursos poderosos de coleta de dados e geração de alertas. Além disso, a combinação do Zabbix com outras ferramentas, como MySQL para armazenamento dos dados, Grafana para visualização de métricas e Traefik para gerenciamento de tráfego, pode criar um ambiente de monitoramento completo e altamente escalável.

Neste tutorial, irei guiá-lo pelo processo de instalação do Zabbix Server utilizando o MySQL como Banco de Dados, o Grafana para criação de Dashboards robustos para analisar métricas geradas pelo Zabbix Server, e o Traefik para gerenciar o tráfego das URLs para os respectivos serviços, além da geração do certificado utilizando o Let's Encrypt, tudo dentro de contêineres Docker. Essa abordagem facilita a implantação e a manutenção do sistema de monitoramento, permitindo que você tenha um ambiente configurado rapidamente. Vamos abordar cada etapa do processo, desde a configuração do Docker até a integração das ferramentas, garantindo que você tenha uma solução robusta de monitoramento em funcionamento. Prepare-se para explorar o mundo do monitoramento de sistemas de forma eficaz e eficiente.

Ambiente

Para está implementação, estou utilizando um servidor Linux com a distribuição Ubuntu na versão 22.04.

O servidor que utilizei possui a seguinte configuração: 2 vCPUs, 2GB RAM e um disco SSD de 30GB.

Para que nosso servidor seja acessível pela internet, e para que o nosso Traefik gere o certificado via Let's Encrypt, precisamos possuir um endereço IP público e precisamos liberar as portas 80 e 443 para a internet.

Também é necessário possuirmos um registro DNS para criarmos as URLs para o Zabbix Server Web e para o nosso Grafana.

Disponibilizei o Docker Compose no seguinte repositório do GitHub: https://github.com/alfredotavio/zabbix-grafana-docker

Imagens utilizadas:

Estrutura:



.
├── env
│   ├── db.env
│   ├── grafana.env
│   ├── traefik.env
│   ├── zbx-rpt.env
│   ├── zbx-srv.env
│   └── zbx-web.env
├── .env
└── docker-compose.yml


Enter fullscreen mode Exit fullscreen mode

Não irei abordar a instalação do Docker Engine, caso ainda não saiba realizar a instalação, consulte este outro post:

https://dev.to/alfredotavio/como-instalar-o-docker-engine-no-linux-5092

Etapa 01 - Criando os registro DNS

Antes de tudo, vamos definir e criar as URLs que iremos utilizar para o Zabbix Server Web e para o nosso Grafana.

Irei utilizar o domínio alfredocastro.com.br, defini a URL zabbix.alfredocastro.com.br para o Zabbix Server e a URL grafana.alfredocastro.com.br para o Grafana.

Acesse o seu gerenciador de registros DNS do seu domínio e crie dois registro do tipo A colocando como valor o endereço IP público do seu servidor.

Veja um exemplo:
Image description

Para consultar a propagação do registro criado, consulte o site: WhatsMyDNS
Image description
Image description

Etapa 02 - Clonando o repositório do Docker Compose

Após realizar a instalação do Docker Engine, vamos dar seguimento com a nossa implementação.
Image description

Execute os seguintes comandos para clonar nosso Docker Compose para dentro do nosso servidor:



cd /opt
git clone https://github.com/alfredotavio/zabbix-grafana-docker.git
cd /opt/zabbix-grafana-docker


Enter fullscreen mode Exit fullscreen mode

Image description

NOTA: Utilizei o diretório /opt do Linux, caso queira você pode alterar para outro diretório de sua escolha.

Etapa 03 - Definindo as variáveis

Primeiro vamos definir as variáveis com as URLs de acesso, edite o arquivo .env na raiz do projeto e altere as variáveis ZABBIX_URL para a URL do Zabbix Server e a GRAFANA_URL para a URL do Grafana, altere a variável ACME_EMAIL para um endereço de e-mail seu:



vim /opt/zabbix-grafana-docker/.env


Enter fullscreen mode Exit fullscreen mode

Image description

Agora devemos definir as variáveis do Banco de Dados MySQL. Edite o arquivo db.env dentro do diretório env. Irei alterar apenas as variáveis MYSQL_ROOT_PASSWORD e MYSQL_PASSWORD, essas variáveis define a senha para o usuário root e a senha para o usuário da variável MYSQL_USER.



vim /opt/zabbix-grafana-docker/env/db.env


Enter fullscreen mode Exit fullscreen mode

Image description

NOTA: Não irei alterar as demais variáveis pois irei subir apenas para demonstração. Recomendo você ler a documentação do Zabbix para definir as variáveis de acordo com o cenário do seu ambiente a ser monitorado.

Etapa 04 - Executando o Docker Compose

Para subirmos nosso ambiente, basta executarmos o seguinte comando dentro do diretório raiz onde está nosso docker-compose.yml:



docker compose up -d


Enter fullscreen mode Exit fullscreen mode

Image description

NOTA: O Docker irá fazer o download e o provisionamento de todas as imagens. Aguarde alguns minutos até que as imagens concluam a primeira configuração.

Etapa 05 - Acessando o ambiente

Acesse a URL do Zabbix Server que definimos na primeira etapa, será solicitado um usuário e senha para acessar, por padrão o usuário é o "Admin" e a senha é "zabbix".
Image description
Image description

Após o primeiro login, altere a senha do usuário Admin o quanto antes para evitar qualquer acesso indevido, para isso, clique em "User settings > Profile" no campo inferior esquerdo.
Image description

Clique em "Change password".
Image description

Digite a nova senha em "Password" e repita em "Password (once again)", em seguida clique em "Update".
Image description
Image description

Agora acesse a URL do Grafana que definimos na primeira etapa, será solicitado um usuário e senha para acessar, por padrão o usuário é o "admin" e a senha é "admin".
Image description

Em seguida será solicitado a alteração da senha, digite a senha no campo "New password" e repita em "Confirm new password", em seguida clique em "Submit".
Image description
Image description

Etapa 06 - Integrando o Grafana com o Zabbix Server

Para realizar a integração do Grafana com o Zabbix Server, é necessário a instalação de um plugin, em nosso arquivo Docker Compose está configurado para realizar a instalação automaticamente.

Antes de configurar o plugin, devemos acessar o Zabbix Server e criar um usuário para realizar a integração, toda a comunicação entre o Grafana e o Zabbix Server é feita por API e o Grafana irá utilizar esse usuário para acessar a API.

Clique em "Administration > Users" na barra lateral esquerda.
Image description

Clique em "Create user" no canto superior direito.
Image description

Preencha as informações para a criação do usuário:

Username: grafana

Name: Grafana

Last name: User

Groups: Zabbix administrators

Password: DEFINA-UMA-SENHA

Password (once again): DEFINA-UMA-SENHA

Altere para a aba "Permissions".
Image description

Role: Admin role

Em seguida, clique em "Add".
Image description
Image description

Acesse o Grafana, clique nos três tracinhos no canto superior esquerdo, clique em "Administration > Plugins".
Image description

Pesquise por "zabbix", ele irá mostrar o plugin "Zabbix - By Alexander Zobnin" já instalado, clique no plugin.
Image description

No canto superior direito, clique no botão "Enable".
Image description

No menu lateral esquerdo, clique em "Data sources".
Image description

Clique no botão "Add data source".
Image description

Filtre por "zabbix", em seguida clique no plugin do "Zabbix".
Image description

Faça as seguintes configurações:

URL: https://zabbix.alfredocastro.com.br/api_jsonrpc.php
Image description

Username: grafana

Password: SENHA-DEFINIDA-PARA-O-USUÁRIO-GRAFANA

Clique em "Save & test".
Image description

Se tudo ocorreu conforme o esperado, o Grafana exibirá uma mensagem contendo a versão do Zabbix API.
Image description

Etapa 06 - Instalando o Zabbix Agent no próprio servidor

Ao logar no Zabbix Server Web, você pode perceber que possui um alerta falando que o Zabbix Agent no host Zabbix server não está disponível.
Image description

Para corrigir esse alerta, devemos instalar o Zabbix Agent em nosso servidor, onde o nosso Docker está. Acesse o servidor via SSH e siga os procedimentos abaixo:

Adicione o repositório do Zabbix Release 6.0, execute os seguintes comandos:



cd /tmp
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest%2Bubuntu22.04_all.deb
dpkg -i zabbix-release_latest+ubuntu22.04_all.deb
apt-get update
apt-get install zabbix-agent -y


Enter fullscreen mode Exit fullscreen mode

Image description

Execute os comandos abaixo para realizarmos a configuração do arquivo zabbix_agentd.conf:



cd /etc/zabbix/
mv zabbix_agentd.conf zabbix_agentd.conf.original
echo "##### Zabbix Agent #####" >> /etc/zabbix/zabbix_agentd.conf
cat zabbix_agentd.conf.original | grep -Ev '^#|^$' >> zabbix_agentd.conf
sed -i 's/127.0.0.1/10.10.0.11/g' /etc/zabbix/zabbix_agentd.conf
sed -i 's/Zabbix server/Zabbix server/g' /etc/zabbix/zabbix_agentd.conf
echo "Timeout=15" >> /etc/zabbix/zabbix_agentd.conf
echo "DebugLevel=3" >> /etc/zabbix/zabbix_agentd.conf
systemctl enable zabbix-agent
service zabbix-agent restart


Enter fullscreen mode Exit fullscreen mode

Image description

NOTA: Para o Zabbix Agent do servidor Docker, devemos adicionar o IP privado do container chamado zabbix-server, de acordo com o nosso docker-compose.yml esse IP é o 10.10.0.11.

Agora devemos alterar o IP dentro do Zabbix Server Web, acesse a URL, faça login e clique em "Configuration > Hosts" na barra lateral esquerda.
Image description

Clique no nome do host "Zabbix server".
Image description

Altere o "IP address" de "127.0.0.1" para o endereço IP privado do servidor Docker, você pode visualizar o endereço IP privado executando o comando "ifconfig" ou "ip addr", em seguida clique em "Update".
Image description
Image description

Após alguns instantes o alerta será marcado com o Status "RESOLVED".
Image description

Troubleshooting - Docker Logs

Se por algum motivo você está enfrentado algum problema para subir o ambiente em Docker, você pode utilizar o comando abaixo para verificar os logs dos containers e com isso encontrar um norte para a resolução.



cd /opt/zabbix-grafana-docker/
docker compose logs -f


Enter fullscreen mode Exit fullscreen mode

Image description

Espero tê-lo ajudado! Se houver alguma dúvida, não hesite em entrar em contato.

zabbix Article's
30 articles in total
Favicon
Ubuntu Üzerine SQLite3 kullanılarak Zabbix Proxy Kurulumu, Yapılandırması ve Verilerin Proxy üzerinden Server'da Gösterilmesi
Favicon
Zabbix Üzerinden ODBC Kullanarak PostgreSQL'e Sorgu Atılması ve İzlenmesi
Favicon
Patroni'ye Özel Zabbix Template'ı Oluşturma
Favicon
Zabbix ile REST API Üzerinden Patroni Sağlık Durumunun İzlenebilmesi
Favicon
Patroni Nedir?
Favicon
Zabbix - A powerful and open-source monitoring tool : Day 47 of 50 days DevOps Tools Series
Favicon
Zabbix "Calculated Item" İşlemi
Favicon
Zabbix ile Prometheus Metrik Formatında Kafka İzleme
Favicon
Obter Http Status Code de uma lista de Function Apps do Azure e enviar para o Zabbix
Favicon
Script de Exportação de Hosts do Zabbix para CSV
Favicon
Instalando Zabbix Server com MySQL, Grafana e Traefik em Docker
Favicon
Instalar Zabbix Agent no Sistema Operacional Windows via Script Batch
Favicon
Zabbix Server Kurulumu
Favicon
Do zero ao completo Desastre
Favicon
Zabbix 6.x Agent ile Custom Script Itemları Oluşturma
Favicon
How to overcome data silos in open source server monitoring
Favicon
Pardus 21.x sunucu üzerine Zabbix 6.0 kurulumu
Favicon
Zabbix Proxy and Low Disk Space
Favicon
Tayfa ve Miço ile Zabbix Agent Dağıtımı
Favicon
Zabbix Mail Bildirimleri
Favicon
Server monitoring with Zabbix
Favicon
Monitoring VMware on zabbix
Favicon
OpenNMS On the Horizon – November 8th, 2021
Favicon
OpenNMS On the Horizon – November 1st, 2021
Favicon
Rocky Linux
Favicon
Monitoramento de 1 segundo? Temos !
Favicon
Comandos no Shell do Windows
Favicon
Otimizando seu banco !
Favicon
Saltos duplos
Favicon
Ubuntu 18.04 Üzerinde Zabbix Server Kurulumu

Featured ones: