Instale e Use o Grafana no Ubuntu: Guia Completo

Domine a configuração do Grafana para monitoramento e visualização

Conteúdo da página

Grafana é a plataforma open-source líder para monitoramento e observabilidade, transformando métricas, logs e rastros em insights acionáveis através de visualizações impressionantes.

grafana Esta é uma captura de tela do site do Grafana.

O que é o Grafana?

O Grafana é uma aplicação web de análise e visualização interativa open-source e multiplataforma. Ele fornece gráficos, diagramas e alertas para a web quando conectado a fontes de dados suportadas. O Grafana é amplamente utilizado em DevOps para monitoramento de infraestrutura, aplicações e serviços.

Principais Características:

  • Painel Universal: Crie painéis bonitos e dinâmicos com modelagem flexível
  • Múltiplas Fontes de Dados: Conecte-se a mais de 150 fontes de dados, incluindo Prometheus, InfluxDB, Elasticsearch, MySQL, PostgreSQL e mais
  • Alertas: Sistema de alertas unificado com canais de notificação (Slack, PagerDuty, e-mail, webhooks)
  • Colaboração em Equipe: Compartilhe painéis, crie equipes e gerencie permissões de usuários
  • Ecossistema de Plugins: Estenda a funcionalidade com painéis, fontes de dados e aplicativos
  • Nativo da Nuvem: Perfeito para Kubernetes, Docker e ambientes em nuvem

Por que usar o Grafana no Ubuntu?

As versões LTS do Ubuntu fornecem uma base estável e segura para hospedar o Grafana. Se você está começando do zero ou precisa configurar um novo ambiente Ubuntu para sua infraestrutura de monitoramento, consulte nosso guia abrangente sobre como instalar o Ubuntu 24.04 com ferramentas úteis para preparar seu sistema.

Os benefícios incluem:

  • Suporte de longo prazo e atualizações de segurança
  • Grande comunidade e documentação extensa
  • Suporte nativo ao repositório APT da Grafana Labs
  • Excelente compatibilidade com Docker
  • Perfeito para ambientes de desenvolvimento e produção

Métodos de Instalação

Método 1: Instalação via Repositório APT (Recomendado)

Este é o método mais direto, fornecendo atualizações automáticas através do gerenciador de pacotes do Ubuntu. Se você é novo no terminal do Ubuntu ou deseja aumentar sua produtividade, nosso cheatsheet de atalhos de teclado do Ubuntu pode ajudar você a navegar no sistema de forma mais eficiente.

Passo 1: Instalar Pré-requisitos

sudo apt-get install -y apt-transport-https software-properties-common wget

Passo 2: Adicionar a Chave GPG do Grafana

sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

Passo 3: Adicionar o Repositório APT do Grafana

Para versões estáveis:

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Passo 4: Atualizar e Instalar o Grafana

sudo apt-get update
sudo apt-get install grafana

Passo 5: Iniciar e Habilitar o Serviço do Grafana

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server.service

Passo 6: Verificar a Instalação

sudo systemctl status grafana-server

O Grafana agora estará em execução em http://localhost:3000

Método 2: Instalação Usando Docker

O Docker fornece isolamento e gerenciamento mais fácil para implantações containerizadas.

Passo 1: Instalar o Docker (se ainda não estiver instalado)

sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker

Passo 2: Executar o Container do Grafana

docker run -d \
  --name=grafana \
  -p 3000:3000 \
  -v grafana-storage:/var/lib/grafana \
  grafana/grafana-oss

Para Persistência com Configuração:

docker run -d \
  --name=grafana \
  -p 3000:3000 \
  -v grafana-storage:/var/lib/grafana \
  -v $(pwd)/grafana.ini:/etc/grafana/grafana.ini \
  -e "GF_SERVER_ROOT_URL=http://your-domain.com" \
  -e "GF_SECURITY_ADMIN_PASSWORD=your-secure-password" \
  grafana/grafana-oss

Método 3: Instalação Usando Docker Compose

Crie um arquivo docker-compose.yml:

version: '3.8'

services:
  grafana:
    image: grafana/grafana-oss:latest
    container_name: grafana
    restart: unless-stopped
    ports:
      - '3000:3000'
    volumes:
      - grafana-storage:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=your-secure-password
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_SERVER_ROOT_URL=http://your-domain.com

volumes:
  grafana-storage:

Inicie com:

docker-compose up -d

Configuração Inicial

Primeiro Login

  1. Navegue para http://seu-ip-do-servidor:3000
  2. Credenciais padrão:
    • Nome de usuário: admin
    • Senha: admin
  3. Você será solicitado a alterar a senha imediatamente (altamente recomendado!)

Configurar Sua Primeira Fonte de Dados

Exemplo: Adicionando Prometheus

  1. Clique em Configuração (ícone de engrenagem) → Fontes de Dados
  2. Clique em Adicionar fonte de dados
  3. Selecione Prometheus
  4. Configure:
    • Nome: Prometheus
    • URL: http://localhost:9090 (ajuste para sua instância Prometheus)
    • Acesso: Servidor (padrão)
  5. Clique em Salvar & Testar

Exemplo: Adicionando InfluxDB

  1. Selecione InfluxDB como fonte de dados
  2. Configure:
    • Linguagem de Consulta: Flux ou InfluxQL
    • URL: http://localhost:8086
    • Banco de Dados: seu_nome_banco_dados
    • Usuário/Senha: suas credenciais
  3. Clique em Salvar & Testar

Criando Seu Primeiro Painel

  1. Clique em Criar (ícone +) → Painel
  2. Clique em Adicionar novo painel
  3. Selecione sua fonte de dados
  4. Escreva sua consulta (exemplo para Prometheus):
rate(http_requests_total[5m])
  1. Personalize a visualização:
    • Escolha o tipo de painel (Gráfico, Medidor, Estatística, Tabela, etc.)
    • Configure legendas, eixos e limiares
    • Adicione transformações se necessário
  2. Clique em Aplicar para salvar o painel
  3. Clique em Salvar painel (ícone de disquete)

Configuração Avançada

Configurar Configurações do Grafana

Edite o arquivo de configuração principal:

sudo nano /etc/grafana/grafana.ini

Configurações Importantes:

[server]
# Protocolo (http, https, h2, socket)
protocol = http
http_port = 3000
domain = your-domain.com
root_url = http://your-domain.com

[security]
admin_user = admin
admin_password = your-secure-password
secret_key = your-secret-key

[users]
# Desabilitar cadastro de usuários
allow_sign_up = false
allow_org_create = false

[auth.anonymous]
enabled = false

[smtp]
enabled = true
host = smtp.gmail.com:587
user = your-email@gmail.com
password = your-app-password
from_address = your-email@gmail.com
from_name = Grafana

Reinicie após as alterações:

sudo systemctl restart grafana-server

Configurar Proxy Reverso (Nginx)

Instalar Nginx:

sudo apt install nginx

Criar Configuração do Nginx:

sudo nano /etc/nginx/sites-available/grafana
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Habilitar e reiniciar:

sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Habilitar HTTPS com Let’s Encrypt

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com

Configurar Alertas

Passo 1: Configurar Canal de Notificação

  1. Navegue para AlertasPontos de contato
  2. Clique em Novo ponto de contato
  3. Escolha o tipo (E-mail, Slack, PagerDuty, Webhook, etc.)
  4. Configure as configurações (ex: URL do webhook Slack)
  5. Teste e salve

Passo 2: Criar Regra de Alerta

  1. Edite um painel no seu painel
  2. Clique na aba Alerta
  3. Configure as condições:
    • Quando: avg()
    • De: query(A, 5m, now)
    • É Acima de: 80
  4. Defina o intervalo de avaliação
  5. Adicione canal de notificação
  6. Salve

Casos de Uso Populares

Monitoramento de Infraestrutura

Stack: Prometheus + Node Exporter + Grafana

Monitore métricas do sistema:

  • Uso de CPU, memória e disco
  • Tráfego de rede
  • Carga do sistema
  • I/O de disco

Para monitoramento específico de GPU NVIDIA, você pode querer explorar aplicações de monitoramento de GPU para Linux/Ubuntu que se integram bem com o Grafana.

Importe ID do painel: 1860 (Node Exporter Full)

Monitoramento de Kubernetes

Stack: Prometheus + kube-state-metrics + Grafana

Monitore o cluster K8s:

  • Métricas de pods e containers
  • Uso de recursos do cluster
  • Status de implantação
  • Monitoramento de ingress/serviço

Importe ID do painel: 15757 (Monitoramento de Cluster Kubernetes)

Monitoramento de Desempenho de Aplicações

Stack: Loki + Promtail + Grafana

Monitore logs e métricas de aplicações:

  • Taxas de requisição e latências
  • Taxas de erro
  • Agregação e filtragem de logs
  • Rastreamento distribuído

Monitoramento de Banco de Dados

Monitore MySQL, PostgreSQL, MongoDB:

  • Desempenho de consultas
  • Pools de conexão
  • Consultas lentas
  • Status de replicação

Melhores Práticas para Painéis

  1. Organize por Propósito: Crie painéis separados para diferentes equipes/serviços
  2. Use Variáveis: Crie painéis dinâmicos com variáveis de modelo
  3. Defina Intervalos de Tempo Adequados: Padrão para janelas de tempo significativas
  4. Adicione Anotações: Marque implantações e incidentes
  5. Use Pastas: Organize painéis logicamente
  6. Habilite Versionamento: Rastreie alterações de painéis
  7. Defina Intervalos de Atualização: Equilibre necessidades em tempo real com desempenho
  8. Adicione Documentação: Use painéis de texto para explicar métricas

Solução de Problemas Comuns

Serviço do Grafana Não Inicia

# Verificar logs
sudo journalctl -u grafana-server -f

# Verificar configuração
sudo grafana-cli admin reset-admin-password newpassword

Problemas de Conexão com Fonte de Dados

  • Verifique a conectividade de rede: telnet host-da-fonte-de-dados porta
  • Verifique as regras do firewall
  • Verifique as credenciais
  • Verifique os logs do serviço da fonte de dados

Problemas de Desempenho

  • Reduza os intervalos de tempo das consultas
  • Otimize as consultas da fonte de dados
  • Aumente os recursos do servidor
  • Use cache sempre que possível
  • Considere o cache de resultados de consultas

Painel Não Carrega

  • Limpe o cache do navegador
  • Verifique o console do navegador para erros
  • Verifique se o JSON do painel não está corrompido
  • Verifique os logs do servidor do Grafana

Backup e Manutenção

Fazer Backup do Banco de Dados do Grafana

# Parar Grafana
sudo systemctl stop grafana-server

# Fazer backup do banco de dados SQLite
sudo cp /var/lib/grafana/grafana.db /backup/grafana-$(date +%Y%m%d).db

# Fazer backup da configuração
sudo cp /etc/grafana/grafana.ini /backup/grafana-ini-$(date +%Y%m%d).bak

# Iniciar Grafana
sudo systemctl start grafana-server

Script de Backup Automatizado

Aqui está um script bash para automatizar seus backups do Grafana. Se você precisar de uma referência rápida para sintaxe e comandos de scripting bash, consulte nosso cheat sheet de Bash para dicas e exemplos úteis.

#!/bin/bash
BACKUP_DIR="/backup/grafana"
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)

# Backup do banco de dados
sudo cp /var/lib/grafana/grafana.db $BACKUP_DIR/grafana-$DATE.db

# Backup de painéis via API
curl -H "Authorization: Bearer YOUR_API_KEY" \
  http://localhost:3000/api/search?type=dash-db | \
  jq -r '.[] | .uid' | \
  xargs -I{} curl -H "Authorization: Bearer YOUR_API_KEY" \
  http://localhost:3000/api/dashboards/uid/{} > $BACKUP_DIR/dashboards-$DATE.json

# Manter apenas os últimos 30 dias
find $BACKUP_DIR -mtime +30 -delete

Atualizar Grafana

# Método APT
sudo apt update
sudo apt upgrade grafana

# Método Docker
docker pull grafana/grafana-oss:latest
docker-compose down
docker-compose up -d

Endurecimento de Segurança

  1. Altere as Credenciais Padrão imediatamente
  2. Use HTTPS com certificados válidos
  3. Configure o Firewall:
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable
    
  4. Desabilite Acesso Anônimo
  5. Use Autenticação Forte (LDAP, OAuth, SAML)
  6. Atualizações Regulares Mantenha o Grafana atualizado
  7. Limite Permissões de Usuário Use controle de acesso baseado em funções
  8. Habilite Auditoria de Logs
  9. Use Fontes de Dados Somente Leitura sempre que possível
  10. Implemente Limitação de Taxa

Monitorando o Próprio Grafana

Monitore sua instância do Grafana:

  1. Habilite o endpoint de métricas em grafana.ini:
    [metrics]
    enabled = true
    
  2. Adicione o Grafana como alvo Prometheus
  3. Importe o painel de métricas do Grafana

Plugins Úteis

Instale plugins via CLI:

sudo grafana-cli plugins install <plugin-id>
sudo systemctl restart grafana-server

Plugins Recomendados:

  • grafana-piechart-panel: Gráficos de pizza aprimorados
  • grafana-worldmap-panel: Visualização de dados geográficos
  • grafana-clock-panel: Exibir hora e data
  • grafana-simple-json-datasource: Conecte-se a APIs JSON personalizadas
  • alexanderzobnin-zabbix-app: Integração Zabbix

Exemplos de Integração

Grafana + Prometheus + Node Exporter

Configuração completa da pilha de monitoramento:

# Instalar Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz
sudo cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
sudo useradd -rs /bin/false node_exporter

# Criar serviço systemd
sudo tee /etc/systemd/system/node_exporter.service << EOF
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl start node_exporter
sudo systemctl enable node_exporter

Grafana com InfluxDB e Telegraf

Configuração de monitoramento de séries temporais:

# Instalar InfluxDB
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt update && sudo apt install influxdb
sudo systemctl start influxdb
sudo systemctl enable influxdb

# Instalar Telegraf
sudo apt install telegraf
sudo systemctl start telegraf
sudo systemctl enable telegraf

Otimização de Desempenho

Otimização de Consultas

  • Use intervalos de tempo apropriados
  • Limite os pontos de dados retornados
  • Use estratégias de cache
  • Agregue dados na origem sempre que possível
  • Use regras de gravação no Prometheus

Otimização do Servidor

[database]
# Aumente conexões máximas
max_open_conn = 300
max_idle_conn = 100

[dataproxy]
# Configurações de tempo limite
timeout = 30
keep_alive_seconds = 30

[rendering]
# Limite de renderização concorrente
concurrent_render_limit = 10

Conclusão

O Grafana no Ubuntu fornece uma plataforma poderosa e flexível para monitoramento e observabilidade. Seja monitorando um único servidor ou um cluster Kubernetes massivo, as ricas capacidades de visualização do Grafana, o extenso suporte a fontes de dados e a comunidade ativa o tornam uma excelente escolha para equipes de DevOps.

Comece com uma configuração simples usando o método do repositório APT, conecte sua primeira fonte de dados e expanda gradualmente suas capacidades de monitoramento. Lembre-se de priorizar segurança, backups regulares e otimização de desempenho à medida que sua implantação do Grafana cresce.

Com a configuração adequada e melhores práticas, o Grafana torna-se uma ferramenta indispensável em sua pilha de observabilidade, fornecendo insights acionáveis que ajudam a manter sistemas confiáveis e com alto desempenho.