Instale y use Grafana en Ubuntu: Guía completa
Maestra la configuración de Grafana para monitoreo y visualización
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.
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
- Navega a
http://your-server-ip:3000 - Credenciales por defecto:
- Usuario:
admin - Contraseña:
admin
- Usuario:
- Te pedirán que cambies la contraseña inmediatamente (altamente recomendado)
Configurar tu primera fuente de datos
Ejemplo: Añadir Prometheus
- Haz clic en Configuración (icono de engranaje) → Fuentes de datos
- Haz clic en Añadir fuente de datos
- Selecciona Prometheus
- Configura:
- Nombre: Prometheus
- URL:
http://localhost:9090(ajusta según tu instancia de Prometheus) - Acceso: Servidor (por defecto)
- Haz clic en Guardar y probar
Ejemplo: Añadir InfluxDB
- Selecciona InfluxDB como fuente de datos
- 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
- Haz clic en Guardar y probar
Crear tu primer panel
- Haz clic en Crear (+ icono) → Panel
- Haz clic en Añadir nuevo panel
- Selecciona tu fuente de datos
- Escribe tu consulta (ejemplo para Prometheus):
rate(http_requests_total[5m])
- 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
- Haz clic en Aplicar para guardar el panel
- 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
- Navega a Alertas → Puntos de contacto
- Haz clic en Nuevo punto de contacto
- Elige el tipo (Correo electrónico, Slack, PagerDuty, Webhook, etc.)
- Configura los ajustes (por ejemplo, URL del webhook de Slack)
- Prueba y guarda
Paso 2: Crear regla de alerta
- Edita un panel en tu dashboard
- Haz clic en la pestaña Alerta
- Configura las condiciones:
- Cuando: avg()
- De: query(A, 5m, now)
- Está por encima de: 80
- Establece el intervalo de evaluación
- Añade un canal de notificación
- 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
- Organiza por propósito: Crea dashboards separados para diferentes equipos/servicios
- Usa variables: Crea dashboards dinámicos con variables de plantilla
- Establece rangos de tiempo adecuados: Por defecto, usa ventanas de tiempo significativas
- Añade anotaciones: Marca despliegues e incidentes
- Usa carpetas: Organiza los dashboards lógicamente
- Habilita versiones: Rastrea los cambios en los dashboards
- Establece intervalos de actualización: Equilibra necesidades en tiempo real con el rendimiento
- 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
- Cambiar las credenciales por defecto inmediatamente
- Usar HTTPS con certificados válidos
- Configurar firewall:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable - Deshabilitar el acceso anónimo
- Usar autenticación fuerte (LDAP, OAuth, SAML)
- Actualizaciones periódicas Mantén Grafana actualizado
- Limitar permisos de usuarios Usa el control de acceso basado en roles
- Habilitar registro de auditoría
- Usar fuentes de datos de solo lectura cuando sea posible
- Implementar limitación de tasa
Monitoreo de Grafana
Monitorea tu instancia de Grafana:
- Habilita el endpoint de métricas en
grafana.ini:[metrics] enabled = true - Añade Grafana como objetivo de Prometheus
- 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
- Documentación oficial
- Repositorio de GitHub de Grafana
- Documentación de Prometheus
- Documentación de InfluxDB
- Cómo instalar Ubuntu 24.04 & herramientas útiles
- Aplicaciones de monitoreo de GPU en Linux / Ubuntu
- Atajos de teclado de Ubuntu: Cheatsheet completo
- Cheatsheet de Bash
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.