Instale y use Grafana en Ubuntu: Guía completa

Maestra la configuración de Grafana para monitoreo y visualización

Índice

Grafana es la plataforma de código abierto líder para monitoreo y observabilidad, transformando métricas, registros y rastreos en insights accionables mediante visualizaciones impactantes.

grafana Esta es una captura de pantalla del sitio web de Grafana.

¿Qué es Grafana?

Grafana es una aplicación web de análisis y visualización interactiva de código abierto multiplataforma. Proporciona gráficos, gráficos y alertas para la web cuando se conecta a fuentes de datos compatibles. Grafana se utiliza ampliamente en DevOps para monitorear infraestructura, aplicaciones y servicios.

Funciones clave:

  • Panel universal Crea paneles hermosos y dinámicos con plantillas flexibles
  • Varias fuentes de datos Conéctate a más de 150 fuentes de datos, incluyendo Prometheus, InfluxDB, Elasticsearch, MySQL, PostgreSQL y más
  • Alertas Sistema de alertas unificado con canales de notificación (Slack, PagerDuty, correo electrónico, webhooks)
  • Colaboración en equipo Comparte paneles, crea equipos y gestiona permisos de usuarios
  • Ecosistema de plugins Extiende la funcionalidad con paneles, fuentes de datos y aplicaciones
  • Nativo en la nube Ideal para Kubernetes, Docker y entornos en la nube

¿Por qué Grafana en Ubuntu?

Las versiones LTS de Ubuntu ofrecen una base estable y segura para alojar Grafana. Si estás empezando desde cero o necesitas configurar un nuevo entorno de Ubuntu para tu infraestructura de monitoreo, consulta nuestro guía completa sobre cómo instalar Ubuntu 24.04 con herramientas útiles para preparar tu sistema.

Ventajas incluyen:

  • Soporte a largo plazo y actualizaciones de seguridad
  • Gran comunidad y documentación extensa
  • Soporte nativo del repositorio APT de Grafana Labs
  • Excelente compatibilidad con Docker
  • Ideal tanto para entornos de desarrollo como de producción

Métodos de instalación

Método 1: Instalar mediante el repositorio APT (Recomendado)

Este es el método más sencillo, proporcionando actualizaciones automáticas a través del gestor de paquetes de Ubuntu. Si eres nuevo trabajando con el terminal de Ubuntu o quieres mejorar tu productividad, nuestro cheatsheet de atajos de teclado de Ubuntu puede ayudarte a navegar por el sistema de manera más eficiente.

Paso 1: Instalar requisitos previos

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

Paso 2: Agregar la clave GPG de 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

Paso 3: Agregar el repositorio APT de Grafana

Para versiones estables:

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

Paso 4: Actualizar e instalar Grafana

sudo apt-get update
sudo apt-get install grafana

Paso 5: Iniciar y habilitar el servicio de Grafana

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

Paso 6: Verificar la instalación

sudo systemctl status grafana-server

Grafana ahora se ejecutará en http://localhost:3000

Método 2: Instalar usando Docker

Docker proporciona aislamiento y gestión más fácil para despliegues en contenedores.

Paso 1: Instalar Docker (si aún no está instalado)

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

Paso 2: Ejecutar el contenedor de Grafana

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

Para persistencia con configuración:

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: Instalar usando Docker Compose

Crea un archivo 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:

Inicia con:

docker-compose up -d

Configuración inicial

Primer inicio de sesión

  1. Navega a http://your-server-ip:3000
  2. Credenciales por defecto:
    • Usuario: admin
    • Contraseña: admin
  3. Te pedirán que cambies la contraseña inmediatamente (altamente recomendado)

Configurar tu primera fuente de datos

Ejemplo: Añadir Prometheus

  1. Haz clic en Configuración (icono de engranaje) → Fuentes de datos
  2. Haz clic en Añadir fuente de datos
  3. Selecciona Prometheus
  4. Configura:
    • Nombre: Prometheus
    • URL: http://localhost:9090 (ajusta según tu instancia de Prometheus)
    • Acceso: Servidor (por defecto)
  5. Haz clic en Guardar y probar

Ejemplo: Añadir InfluxDB

  1. Selecciona InfluxDB como fuente de datos
  2. Configura:
    • Lenguaje de consulta: Flux o InfluxQL
    • URL: http://localhost:8086
    • Base de datos: tu_nombre_de_base_de_datos
    • Usuario/contraseña: tus credenciales
  3. Haz clic en Guardar y probar

Crear tu primer panel

  1. Haz clic en Crear (+ icono) → Panel
  2. Haz clic en Añadir nuevo panel
  3. Selecciona tu fuente de datos
  4. Escribe tu consulta (ejemplo para Prometheus):
rate(http_requests_total[5m])
  1. Personaliza la visualización:
    • Elige el tipo de panel (Gráfico, Indicador, Estadística, Tabla, etc.)
    • Configura leyendas, ejes, umbrales
    • Añade transformaciones si es necesario
  2. Haz clic en Aplicar para guardar el panel
  3. Haz clic en Guardar panel (icono de disco)

Configuración avanzada

Configurar la configuración de Grafana

Edita el archivo de configuración principal:

sudo nano /etc/grafana/grafana.ini

Configuraciones 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]
# Deshabilitar registro de usuarios
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

Reinicia después de los cambios:

sudo systemctl restart grafana-server

Configurar un proxy inverso (Nginx)

Instalar Nginx:

sudo apt install nginx

Crear configuración de 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 y reiniciar:

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

Habilitar HTTPS con Let’s Encrypt

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

Configurar alertas

Paso 1: Configurar canal de notificación

  1. Navega a AlertasPuntos de contacto
  2. Haz clic en Nuevo punto de contacto
  3. Elige el tipo (Correo electrónico, Slack, PagerDuty, Webhook, etc.)
  4. Configura los ajustes (por ejemplo, URL del webhook de Slack)
  5. Prueba y guarda

Paso 2: Crear regla de alerta

  1. Edita un panel en tu dashboard
  2. Haz clic en la pestaña Alerta
  3. Configura las condiciones:
    • Cuando: avg()
    • De: query(A, 5m, now)
    • Está por encima de: 80
  4. Establece el intervalo de evaluación
  5. Añade un canal de notificación
  6. Guarda

Casos de uso populares

Monitoreo de infraestructura

Pila: Prometheus + Node Exporter + Grafana

Monitorea métricas del sistema:

  • CPU, memoria, uso de disco
  • Tráfico de red
  • Carga del sistema
  • E/S de disco

Para monitoreo específico de GPU de NVIDIA, podrías querer explorar aplicaciones especializadas de monitoreo de GPU en Linux/Ubuntu que se integren bien con Grafana.

Importar dashboard ID: 1860 (Node Exporter Full)

Monitoreo de Kubernetes

Pila: Prometheus + kube-state-metrics + Grafana

Monitorea el clúster K8s:

  • Métricas de pod y contenedor
  • Uso de recursos del clúster
  • Estado de despliegue
  • Monitoreo de ingresos/servicios

Importar dashboard ID: 15757 (Monitoreo del clúster de Kubernetes)

Monitoreo de rendimiento de aplicaciones

Pila: Loki + Promtail + Grafana

Monitorea logs y métricas de aplicaciones:

  • Tasa de solicitudes y latencia
  • Tasa de errores
  • Agregación y filtrado de logs
  • Rastreo distribuido

Monitoreo de bases de datos

Monitorea MySQL, PostgreSQL, MongoDB:

  • Rendimiento de consultas
  • Pools de conexión
  • Consultas lentas
  • Estado de replicación

Mejores prácticas para dashboards

  1. Organiza por propósito: Crea dashboards separados para diferentes equipos/servicios
  2. Usa variables: Crea dashboards dinámicos con variables de plantilla
  3. Establece rangos de tiempo adecuados: Por defecto, usa ventanas de tiempo significativas
  4. Añade anotaciones: Marca despliegues e incidentes
  5. Usa carpetas: Organiza los dashboards lógicamente
  6. Habilita versiones: Rastrea los cambios en los dashboards
  7. Establece intervalos de actualización: Equilibra necesidades en tiempo real con el rendimiento
  8. Añade documentación: Usa paneles de texto para explicar métricas

Solución de problemas comunes

El servicio de Grafana no inicia

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

# Verificar configuración
sudo grafana-cli admin reset-admin-password newpassword

Problemas de conexión con la fuente de datos

  • Verifica la conectividad de red: telnet datasource-host port
  • Verifica las reglas del firewall
  • Verifica las credenciales
  • Verifica los logs del servicio de la fuente de datos

Problemas de rendimiento

  • Reduce los rangos de tiempo de las consultas
  • Optimiza las consultas de la fuente de datos
  • Aumenta los recursos del servidor
  • Usa caché cuando sea posible
  • Considera el caché de resultados de consultas

El dashboard no carga

  • Limpia la caché del navegador
  • Verifica los errores en la consola del navegador
  • Verifica que el JSON del dashboard no esté dañado
  • Verifica los logs del servidor de Grafana

Copia de seguridad y mantenimiento

Copia de seguridad de la base de datos de Grafana

# Detener Grafana
sudo systemctl stop grafana-server

# Copia de seguridad de la base de datos SQLite
sudo cp /var/lib/grafana/grafana.db /backup/grafana-$(date +%Y%m%d).db

# Copia de seguridad de la configuración
sudo cp /etc/grafana/grafana.ini /backup/grafana-ini-$(date +%Y%m%d).bak

# Iniciar Grafana
sudo systemctl start grafana-server

Script de copia de seguridad automática

Aquí hay un script bash para automatizar tus copias de seguridad de Grafana. Si necesitas una referencia rápida para la sintaxis y comandos de scripting bash, consulta nuestro cheatsheet de bash para consejos útiles y ejemplos.

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

# Copia de seguridad de la base de datos
sudo cp /var/lib/grafana/grafana.db $BACKUP_DIR/grafana-$DATE.db

# Copia de seguridad de dashboards mediante 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

# Mantener solo los últimos 30 días
find $BACKUP_DIR -mtime +30 -delete

Actualizar 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

Fortalecimiento de la seguridad

  1. Cambiar las credenciales por defecto inmediatamente
  2. Usar HTTPS con certificados válidos
  3. Configurar firewall:
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable
    
  4. Deshabilitar el acceso anónimo
  5. Usar autenticación fuerte (LDAP, OAuth, SAML)
  6. Actualizaciones periódicas Mantén Grafana actualizado
  7. Limitar permisos de usuarios Usa el control de acceso basado en roles
  8. Habilitar registro de auditoría
  9. Usar fuentes de datos de solo lectura cuando sea posible
  10. Implementar limitación de tasa

Monitoreo de Grafana

Monitorea tu instancia de Grafana:

  1. Habilita el endpoint de métricas en grafana.ini:
    [metrics]
    enabled = true
    
  2. Añade Grafana como objetivo de Prometheus
  3. Importa el dashboard de métricas de Grafana

Plugins útiles

Instalar plugins mediante CLI:

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

Plugins recomendados:

  • grafana-piechart-panel: Gráficos de tarta mejorados
  • grafana-worldmap-panel: Visualización de datos geográficos
  • grafana-clock-panel: Mostrar hora y fecha
  • grafana-simple-json-datasource: Conectar a APIs JSON personalizadas
  • alexanderzobnin-zabbix-app: Integración con Zabbix

Ejemplos de integración

Grafana + Prometheus + Node Exporter

Configuración completa del stack de monitoreo:

# 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

# Crear servicio 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 con InfluxDB y Telegraf

Configuración de monitoreo de series temporales:

# 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

Optimización del rendimiento

Optimización de consultas

  • Usa rangos de tiempo adecuados
  • Limita los puntos de datos devueltos
  • Usa estrategias de caché
  • Agrega datos en la fuente cuando sea posible
  • Usa reglas de grabación en Prometheus

Optimización del servidor

[database]
# Aumentar conexiones máximas
max_open_conn = 300
max_idle_conn = 100

[dataproxy]
# Configuraciones de tiempo de espera
timeout = 30
keep_alive_seconds = 30

[rendering]
# Habilitar límite de renderizado concurrente
concurrent_render_limit = 10

Enlaces útiles

Conclusión

Grafana en Ubuntu proporciona una plataforma poderosa y flexible para monitoreo y observabilidad. Ya estés monitoreando un solo servidor o un clúster de Kubernetes masivo, las capacidades de visualización ricas de Grafana, el amplio soporte para fuentes de datos y su activa comunidad lo hacen una excelente opción para equipos de DevOps.

Comienza con una configuración simple usando el método del repositorio APT, conecta tu primera fuente de datos y expande gradualmente tus capacidades de monitoreo. Recuerda priorizar la seguridad, copias de seguridad periódicas y la optimización del rendimiento a medida que crece tu despliegue de Grafana.

Con una configuración adecuada y buenas prácticas, Grafana se convierte en una herramienta indispensable en tu pila de observabilidad, proporcionando insights accionables que ayudan a mantener sistemas confiables y de alto rendimiento.