Implantando o Grafana Corretamente no Docker

O Grafana faz parte do ecossistema de ferramentas de Observabilidade, porém ele não gera dados nem métricas. O papel do Grafana é visualizar e expor informações coletadas por outras ferramentas, consumindo dados a partir de endpoints como Zabbix, Prometheus, Node Exporter, entre muitos outros.

Vamos para prática

Este conteúdo parte do pressuposto de que você já possui um ambiente com Docker e Docker Compose configurados. No meu ambiente, para facilitar a administração e o gerenciamento dos containers, optei por instalar o Portainer, que fornece uma interface web simples e eficiente para acompanhar, gerenciar e manter os serviços em execução.

Quer instalar o Portainer em seu ambiente, aqui abaixo vou deixar um tutorial no meu canal do Youtube:

Vamos lá! Ao acessar o portainer, vamos na Opção STACKS -> ADD STACK

Dê um nome a sua Stack, e deixe a opção Web Editor selecionado

Copie o compose abaixo e cole no seu Web Editor, se você esta fazendo pelo portainer, crie o arquivo docker-compose.yml e cole o compose.


version: "3.8"

services:
  # CONTAINER GRAFANA SERVER
  grafana-server:
    image: grafana/grafana:11.5-ubuntu
    environment:
      - GF_LOG_LEVEL=debug
      - GF_DATABASE_TYPE=postgres
      - GF_DATABASE_HOST=postgres-grafana:5432
      - GF_DATABASE_USER=grafana
      - GF_DATABASE_PASSWORD=grafana
      - GF_DATABASE_NAME=grafana_db
    volumes:
      - /seu-volume-grafana-server:/var/lib/grafana
    ports:
      - "3000:3000"
    networks:
      - rede-grafana-local
      

  # CONTAINER BANCO DE DADOS
  postgres-grafana:
    image: postgres:15
    environment:
      POSTGRES_DB: grafana_db 
      POSTGRES_USER: grafana
      POSTGRES_PASSWORD: grafana
      TZ: America/Sao_Paulo
    volumes:
      - /seu-volume-banco-dados/:/var/lib/postgresql/data
      - /seu-volume-banco-dados-tmp:/tmp
    networks:
      - rede-grafana-local

networks:

  rede-grafana-local:
    driver: bridge

Vamos inspecionar este docker-compose. É muito comum encontrar tutoriais na internet ensinando como subir o Grafana no Docker, e de fato isso não tem muita complexidade. Porém, em muitos desses conteúdos, a forma apresentada não é a mais recomendada para ambientes de produção.

Em cenários simples, subir apenas o container do Grafana é suficiente para que o serviço funcione. Nesse modelo, o próprio Grafana cria o arquivo grafana.db, onde ficam armazenadas todas as informações da aplicação, como credenciais, dashboards, data sources e outras configurações.

O problema é que esse arquivo é muito suscetível a falhas e corrupção, especialmente em ambientes com reinícios frequentes, falhas de disco ou volumes mal configurados. Eu mesmo já enfrentei esse tipo de problema em produção.

Foi ao perceber essa limitação que decidi apresentar uma abordagem mais adequada. No meu caso, optei por implantar o Grafana utilizando uma stack com um container dedicado exclusivamente para o banco de dados, garantindo maior confiabilidade, persistência e segurança das informações.

DICA IMPORTANTE

Algumas informações sensíveis devem ser passadas em variáveis de ambiente, se você esta implatando via CLI, crie o arquivo .env e acrescente as suas credenciais

Após ter realizado os seus ajustes, clique no botão Deploy the Stack no portainer se tiver fazendo via CLI e ter salvo o seu arquivo docker-compose. yml rode o comando docker compose up -d

Se tudo ocorreu bem você verá no seu portainer a informação que os dois containers estão funcionando.

Agora é só abrir o navegador e digitar http://SEU-IP:3000 

As credenciais padrão são: 

Usuário: admin – Senha: admin

Se esse material foi útil para você e te ajudou no processo, considere acompanhar o meu trabalho e ficar por dentro de novos conteúdos.

Minhas Redes:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *