Grafana es una herramienta de visualización que recibe solicitudes del navegador, se conecta a Prometheus para consultar datos y, tras el procesamianto, los renderiza y muestra de forma estructurada. Es importante destacar que, al igual que con Zabbix, Grafana requiere plantillas personalizadas para la consulta de datos, las cuales pueden crearse manualmante o importarse.
La arquitectura fundamental de Grafana se compone de varios elementos clave:
- Interfaz Web Frontend: Construida con JavaScript y React, permite a los usuarios acceder a través de un navegador web para ver datos, visualizar gráficos y diseñar dashboards.
- Servicio Backend: Responsable de la consulta, procesamiento y almacenamiento de datos. Incluye plugins de fuentes de datos, motores de renderizado de gráficos y motores de alertas para manejar las solicitudes del usuario y generar las visualizaciones.
- Plugins de Fuentes de Datos: Grafana soporta diversas fuentes de datos como InfluxDB, Prometheus y Elasticsearch. Estos plugins se encargan de la interacción con dichas fuentes para recuperar y devolver los datos.
- Motor de Renderizado de Gráficos: Transforma los datos consultados en representaciones gráficas, ofreciendo una variedad de tipos como gráficos de líneas, barras y circulares.
- Motor de Alertas: Facilita la monitorización del estado del sistema y el envío de notificaciones de alerta cuando se cumplen ciertas condiciones.
Estos componentes permiten a Grafana funcionar como una plataforma de visualización de datos flexible y escalable. Los usuarios pueden configurar distintas fuentes de datos y plugins para crear dashboards personalizados que permitan la monitorización y análisis en tiempo real de los datos del sistema. Su diseño arquitectónico prioriza el rendimiento, la fiabilidad y la facilidad de uso, consolidando a Grafana como una herramienta ampliamente utilizada en diversos ámbitos.
Instalación de Grafana
Versiones de Grafana
Grafana se ofrece en dos versiones:
- Grafana OSS (Open Source Software)
- Enterprise (versión comercial)
La versión Enterprise puede incluir funcionalidades avanzadas como gestión de permisos más robusta, políticas de retención de datos y capacidades de alerta mejoradas, que podrían ser más limitadas o inexistentes en la versión OSS. Además, la versión Enterprise podría estar más optimizada para requisitos de seguridad y cumplimiento corporativo, y algunos plugins específicos podrían estar disponibles o mejor soportados solo en esta versión.
Instalación mediante RPM
Para instalar Grafana mediante RPM, siga estos pasos:
# Descargar el paquete RPM (asegúrese de obtener la versión más reciente desde el sitio oficial)
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-11.1.4-1.x86_64.rpm
# Instalar dependencias necesarias
yum install -y fontconfig
# Instalar el paquete RPM
rpm -ivh grafana-enterprise-11.1.4-1.x86_64.rpm
# Recargar la configuración del sistema
systemctl daemon-reload
# Habilitar el inicio automático del servicio Grafana
systemctl enable grafana-server.service
# Iniciar el servicio Grafana
systemctl start grafana-server.service
# Verificar que el puerto 3000 esté escuchando
netstat -tnlp|grep 3000
Por defecto, Grafana escucha en el puerto 3000 de todas las interfaces de red.
Instalación en Kubernetes
Puede desplegar Grafana en Kubernetes utilizando los siguientes manifiestos:
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: monitoring
labels:
app: grafana
name: grafana
spec:
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
securityContext:
fsGroup: 472
supplementalGroups:
- 0
containers:
- name: grafana
image: registry-vpc.cn-shanghai.aliyuncs.com/zdbl-base/grafana-enterprise:11.1.4
ports:
- containerPort: 3000
name: http-grafana
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /robots.txt
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 2
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 3000
timeoutSeconds: 1
resources:
requests:
cpu: 500m
memory: 1500Mi
volumeMounts:
- mountPath: /var/lib/grafana
name: grafana-data
volumes:
- name: grafana-data
persistentVolumeClaim:
claimName: grafana-data
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: monitoring-grafana
namespace: monitoring
spec:
ingressClassName: nginx
rules:
- host: t1-grafana.xxxx.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: grafana-data
namespace: monitoring
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100G
---
apiVersion: v1
kind: Service
metadata:
name: grafana
namespace: monitoring
labels:
app: grafana
spec:
ports:
- port: 3000
targetPort: 3000
protocol: TCP
selector:
app: grafana
Si no se utiliza un Ingress, el Service puede configurarse con tipo NodePort para acceder directamente.
Acceso a Grafana
Tras la instalación mediante RPM, acceda a Grafana a través de su navegador web, introduciendo la dirección IP del host y el puerto 3000. Si lo instaló en Kubernetes, acceda mediante el dominio configurado en el Ingress o el puerto NodePort del Service. Las credenciales de acceso por defecto son admin / admin.
Al iniciar sesión por primera vez, se le solicitará que cambie la contraseña del usuario administrador.
Configuración del Archivo
Rutas de Instalación Relevantes
- Directorio de instalación:
/usr/share/grafana/ - Herramienta CLI:
/usr/share/grafana/bin/grafana-cli - Archivo de configuración global:
/etc/grafana/grafana.ini - Archivo de configuración por defecto:
/usr/share/grafana/conf/defaults.ini - Directorio de instalación de plugins:
/var/lib/grafana/plugins/ - Ruta por defecto para el almacenamiento de datos:
/var/lib/grafana/grafana.db - Ruta de almacenamiento de logs:
/var/log/grafana/ - Ruta por defecto para plantillas de correo electrónico:
/usr/share/grafana/public/emails/ - Directorio de configuración de provisionamiento:
/etc/grafana/provisioning
Configuraciones Comunes en /etc/grafana/grafana.ini
Rutas de Datos y Servicios
[paths]
data = /var/lib/grafana ; Directorio para SQLite, archivos temporales, sesiones
temp_data_lifetime = 24h
logs = /var/log/grafana
plugins = /var/lib/grafana/plugins
provisioning = conf/provisioning
Configuración del Servidor Web
[server]
http_addr = 0.0.0.0 ; Dirección IP de escucha (por defecto 0.0.0.0)
http_port = 3000 ; Puerto de escucha (por defecto 3000)
protocol = http ; Protocolo (http o https, por defecto http)
domain = localhost ; Dominio público de acceso
enforce_domain = false ; Forzar coincidencia de dominio
root_url = %(protocol)s://%(domain)s:%(http_port)s/ ; URL completa de acceso
router_logging = false ; Habilitar logs de peticiones web
cert_file = ; Archivo de certificado SSL/TLS
cert_key = ; Archivo de clave privada SSL/TLS
Configuración de la Base de Datos
Por defecto, Grafana utiliza SQLite3. Se puede configurar para usar otras bases de datos como MySQL o PostgreSQL.
[database]
type = sqlite3 ; Opciones: mysql, postgres, sqlite3
path = ; Solo para sqlite3: ruta al archivo de base de datos
host = 127.0.0.1:3306 ; Para mysql/postgres: host y puerto
name = grafana ; Nombre de la base de datos
user = ; Usuario para la conexión
password = ; Contraseña para la conexión
ssl_mode = ; Para postgres: modo SSL
Configuración de Seguridad
[security]
admin_user = admin ; Usuario administrador por defecto
admin_password = admin ; Contraseña administrador por defecto
login_remember_days = 30 ; Días para mantener la sesión iniciada
secret_key = ; Clave secreta para la firma de sesiones
disable_gravatar = false
Configuración de Usuarios
[users]
allow_sign_up = true ; Permitir registro de usuarios
allow_org_create = true ; Permitir creación de organizaciones
auto_assign_org = true ; Asignar nuevos usuarios a la organización 1
auto_assign_org_role = Viewer ; Rol por defecto para nuevos usuarios (Admin, Editor, Viewer)
default_language = en-US ; Idioma por defecto de la interfaz (ej. zh-Hans para chino simplificado)
Configuración de Acceso Anónimo
[auth.anonymous]
enabled = false ; Habilitar acceso anónimo
org_name = Main Org. ; Nombre de la organización para usuarios anónimos
org_role = Viewer ; Rol para usuarios anónimos
Configuración del Servicio de Correo Electrónico (SMTP)
[smtp]
enabled = false
host = localhost:25
user =
password =
cert_file =
key_file =
skip_verify = false
from_address = admin@grafana.localhost
[emails]
welcome_email_on_sign_up = false
templates_pattern = emails/*.html
Configuración de Logs
[log]
mode = console,file ; Modos de salida: console, file. Separar por coma para múltiples.
buffer_len = 10000
level = info ; Niveles: Trace, Debug, Info, Warn, Error, Critical
[log.console]
level =
[log.file]
level =
log_rotate = true ; Habilitar rotación automática de logs
max_lines = 1000000 ; Máximo de líneas por archivo de log
max_lines_shift = 28 ; Máximo tamaño de archivo (en MB, por defecto 256MB)
daily_rotate = true ; Rotación diaria de logs
max_days = 7 ; Días de retención de logs
Instalación de Plugins Básicos
Instalación en Línea
Para instalar plugins directamente desde la línea de comandos:
# Instalar plugin de gráfico circular (piechart)
grafana-cli plugins install grafana-piechart-panel
# Instalar plugin de gráfico de dispersión (plotly)
grafana-cli plugins install natel-plotly-panel
# Instalar plugin de fuente de datos JSON simple
grafana-cli plugins install grafana-simple-json-datasource
# Instalar plugin de tema (boomtheme)
grafana-cli plugins install yesoreyeram-boomtheme-panel
# Ver temas disponibles: https://github.com/gilbN/theme.park/wiki/Themes#grafana-themes
Instalación sin Conexión
Para instalar plugins sin conexión, descargue el plugin (generalmente en formato zip), extráigalo en el directorio de plugins de Grafana y reinicie el servicio.
# Navegar al directorio de plugins
cd /var/lib/grafana/plugins
# Descomprimir el plugin (ejemplo con grafana-piechart-panel)
unzip grafana-piechart-panel-v1.3.8-0-g4f34110.zip
# Renombrar la carpeta si es necesario para estandarizar
mv grafana-piechart-panel-4f34110 grafana-piechart-panel
# Reiniciar el servicio Grafana
systemctl restart grafana-server
Configuración de Prometheus como Fuente de Datos
- En la interfaz de Grafana, navegue a la sección Data sources (en versiones antiguas, podría estar bajo Administration).
- Haga clic en Add data source.
- Seleccione Prometheus de la lista de fuentes de datos disponibles.
- Configure los detalles de conexión de su instancia de Prometheus, incluyendo la URL.
- Haga clic en Save & Test para verificar que la conexión sea exitosa.
Una vez configurada correctamente, podrá empezar a crear dashboards que consulten datos de Prometheus.
Recursos de Referencia:
- Descarga de Grafana: https://grafana.com/grafana/download
- Documentación de Instalación: https://grafana.com/docs/grafana/latest/installation/requirements/