Índice do diárioDockup / nota de campo
Note / self-host-grafana

Como fazer self-host do Grafana em 2026: dashboards, alertas e estado persistente

Faça o deploy do Grafana com a porta correta, armazenamento durável, TLS, autenticação e backups. Resolva problemas quando os dashboards desaparecem junto com o arquivo SQLite em produção.

Há duas versões de “executar o Grafana”: existe um container ou o serviço cumpre sua função de verdade. Apenas a segunda importa. Aqui, a comprovação consiste em adicionar uma data source somente leitura, salvar um painel, avaliar uma regra de alerta e enviar uma notificação de teste por meio de um contact point.

O Grafana serve a este propósito: dashboards e alertas sobre métricas, logs e traces. O deploy precisa preservar os componentes por trás desse comportamento; uma porta, um volume e um certificado são entradas, não o resultado.

A estrutura de produção do Grafana

O processo HTTP do Grafana escuta na porta 3000; mantenha essa porta na rede da aplicação e publique apenas a rota da plataforma. O contrato de rede do Grafana consiste em data sources acessíveis e SMTP, caso a entrega de alertas seja necessária. Mantenha endpoints privados em DNS interno, permita apenas as chamadas de saída necessárias e forneça ao Grafana uma credencial de serviço com escopo limitado.

Registre a fronteira em um contrato curto: quem é responsável pelo requisito, qual credencial é usada, qual timeout é aceitável e como a falha aparece. Em seguida, execute esta transação: adicione uma data source somente leitura, salve um painel, avalie uma regra de alerta e envie uma notificação de teste por meio de um contact point. Observe a distribuição das queries, os intervalos de atualização dos dashboards, a avaliação dos alertas e o uso de memória dos plugins, em vez das próprias métricas armazenadas pelo Grafana durante a execução, pois essa carga fornece um ponto de partida de dimensionamento mais útil do que um container ocioso.

Inicie o Grafana sem ocultar os componentes móveis

Inicie o Grafana de forma que a rota permaneça privada até a conclusão do bootstrap.

docker run -d \
  --name grafana \
  --restart unless-stopped \
  -p 127.0.0.1:3000:3000 \
  -v grafana-data:/var/lib/grafana \
  -e GF_SECURITY_ADMIN_PASSWORD=replace-with-a-long-random-value \
  grafana/grafana:latest

Se o processo entrar em loop, compare o usuário esperado pela image com o proprietário de cada caminho montado. Se ele permanecer ativo, teste a porta 3000 localmente e passe diretamente ao workflow: adicione uma data source somente leitura, salve um painel, avalie uma regra de alerta e envie uma notificação de teste por meio de um contact point. Fixe a versão da image somente depois que essa verificação end-to-end for aprovada e registre a configuração exata junto ao serviço.

Dê ao Grafana um endereço canônico

A emissão de TLS é apenas metade da rota do Grafana. Defina GF_SERVER_ROOT_URL como a URL pública HTTPS. Envie o tráfego internamente para a porta 3000 e encaminhe o scheme externo para manter consistentes as URLs geradas e os cookies seguros.

Use o cenário completo do Grafana a partir de uma rede limpa, não apenas a página inicial. Um erro 502 ou de certificado pode ser isolado com configuração automática de domínio e TLS. Se o tráfego chegar ao processo e os dashboards desaparecerem junto com o arquivo SQLite, ou se os callbacks de OAuth usarem localhost, diagnostique essa condição no ponto em que ela ocorre, em vez de acumular redirects.

Planeje o restore do Grafana antes do launch

O conjunto de recuperação durável inclui o banco de dados do Grafana, os plugins e a configuração provisionada. Monte /var/lib/grafana antes do bootstrap, grave dados de exemplo inofensivos e substitua o container para comprovar que esse caminho é realmente persistente. Um volume protege os dados contra a substituição do container, mas não contra a perda do host, exclusão acidental ou corrupção no nível da aplicação.

Faça backups que entendam a data source: use logical dumps para bancos de dados ativos quando necessário e copie arquivos apenas a partir de um estado consistente. Mantenha uma cópia criptografada fora do host do Grafana. O critério de aceitação de um restore é específico — usuários, pastas, dashboards, regras de alerta e metadados das data sources retornam, e o alerta de teste é avaliado. O guia de backup testado com restore explica por que o sucesso do job, sozinho, não é suficiente.

Encerre o acesso temporário de configuração

Um deploy seguro do Grafana começa removendo autoridade. Evite manter admin/admin ou expor acesso anônimo sem intenção; em vez disso, substitua a senha de administrador do bootstrap, restrinja a edição de data sources e mantenha os tokens de service account com escopo limitado.

Substitua imediatamente o valor de exemplo de GF_SECURITY_ADMIN_PASSWORD, armazene-o fora da image e faça sua rotação como faria com uma credencial de administrador caso ela seja exposta. Restrinja as rotas administrativas, use DNS privado para as dependências e revise cada bind mount. Quando os logs forem enviados centralmente, filtre secrets e conteúdo privado antes que deixem o servidor.

Faça um ensaio da alteração de risco no Grafana

Um container verde é necessário, mas não suficiente. O indicador de nível de serviço é a conclusão bem-sucedida de “adicionar uma data source somente leitura, salvar um painel, avaliar uma regra de alerta e enviar uma notificação de teste por meio de um contact point”, enquanto os sinais de pressão mais prováveis são a distribuição das queries, os intervalos de atualização dos dashboards, a avaliação dos alertas e o uso de memória dos plugins, em vez das próprias métricas armazenadas pelo Grafana.

O controle de mudanças é importante porque as migrações do banco de dados do Grafana e a compatibilidade dos plugins exigem um upgrade em etapas com os mesmos arquivos de provisionamento. Preserve a image antiga, teste as migrações em um estado copiado e documente se o rollback é compatível depois que o schema for alterado. Se os dashboards desaparecerem junto com o arquivo SQLite ou os callbacks de OAuth usarem localhost, diagnostique a primeira fronteira que difere do ambiente funcional.

Registre um deploy do Grafana conhecido como funcional

Para o Grafana, defina uma transação conhecida como funcional antes do launch: adicione uma data source somente leitura, salve um painel, avalie uma regra de alerta e envie uma notificação de teste por meio de um contact point. Registre seus pré-requisitos, a resposta esperada e as etapas de limpeza no version control, sem valores de secrets. Fixe a image usada para estabelecer essa referência.

Use a transação para validar uma substituição e um restore independente. O serviço restaurado só é aceitável quando usuários, pastas, dashboards, regras de alerta e metadados das data sources retornam, e o alerta de teste é avaliado. Ao mesmo tempo, observe a distribuição das queries, os intervalos de atualização dos dashboards, a avaliação dos alertas e o uso de memória dos plugins, em vez das próprias métricas armazenadas pelo Grafana, e transforme a parte mais lenta ou mais limitada em um alerta de nível de serviço.

O gate também precisa de um caso negativo: negue temporariamente à identidade de teste o acesso às data sources acessíveis e ao SMTP, caso a entrega de alertas seja necessária. Confirme que o Grafana produz um erro acionável preservando os dados, restaure a condição válida e repita a transação conhecida como funcional. Manter os dois resultados impede que um health endpoint superficial se torne a única evidência em produção.

Onde o Dockup elimina trabalho para o Grafana

Roteamento, certificados, substituição de serviços e armazenamento anexado são alvos razoáveis para automação. O Dockup cuida desses aspectos para o Grafana e pode provisionar o banco de dados gerenciado relacionado ou conectar-se a serviços no servidor do próprio cliente.

O que ele não deve inventar é a trust policy do Grafana. Após o deploy, defina GF_SERVER_ROOT_URL como a URL pública HTTPS, aplique esta fronteira — substitua a senha de administrador do bootstrap, restrinja a edição de data sources e mantenha os tokens de service account com escopo limitado — e verifique o resultado deste cenário: adicione uma data source somente leitura, salve um painel, avalie uma regra de alerta e envie uma notificação de teste por meio de um contact point. O resultado é uma infraestrutura one-click com um teste de aceitação específico da aplicação.

Perguntas frequentes

O que o Grafana precisa para um deploy de produção?

Encaminhe o container do Grafana na porta 3000 por meio de uma única origem HTTPS. O requisito de rede de suporte consiste em data sources acessíveis e SMTP, caso a entrega de alertas seja necessária. Não considere o Grafana pronto até conseguir adicionar uma data source somente leitura, salvar um painel, avaliar uma regra de alerta e enviar uma notificação de teste por meio de um contact point.

Quais dados do Grafana devem entrar no backup?

Persista /var/lib/grafana e inclua o banco de dados do Grafana, os plugins e a configuração provisionada no mesmo manifesto de recuperação. Um restore limpo do Grafana só é aprovado quando usuários, pastas, dashboards, regras de alerta e metadados das data sources retornam, e o alerta de teste é avaliado.

O Grafana precisa de HTTPS atrás de um reverse proxy?

Use HTTPS para a origem pública do Grafana e mantenha a porta 3000 na rota interna. Aplique corretamente a configuração do Grafana: defina GF_SERVER_ROOT_URL como a URL pública HTTPS. Para o Grafana, o HTTPS protege credenciais ou conteúdo de usuários em trânsito e mantém consistente o comportamento do cliente sensível à origem.

Como testar um upgrade do Grafana?

Restaure o estado atual do Grafana em um deploy isolado, aplique a versão candidata e repita sua transação de aceitação. Dê atenção especial a esse processo, pois as migrações do banco de dados do Grafana e a compatibilidade dos plugins exigem um upgrade em etapas com os mesmos arquivos de provisionamento. Mantenha a image anterior do Grafana até compreender os limites da migração de dados e do rollback.