Sistema de vigilancia Prometheus
A medida que los sistemas y las aplicaciones crecen en complejidad, la monitorización se vuelve esencial para garantizar un rendimiento, una fiabilidad y una escalabilidad óptimos. Prometheus, un conjunto de herramientas de supervisión y alerta de código abierto, se ha convertido en una de las soluciones más populares para gestionar y visualizar métricas de diversos sistemas. Desarrollado originalmente por SoundCloud, Prometheus es ahora un proyecto de la Cloud Native Computing Foundation (CNCF) y cuenta con una amplia adopción en todos los sectores.
En este artículo, exploraremos las características clave de Prometheus, cómo funciona y los pasos necesarios para configurarlo para supervisar su infraestructura y aplicaciones.
¿Qué es Prometheus?
Prometheus es un potente sistema de monitorización diseñado para recopilar, almacenar y consultar datos de series temporales, que son mediciones o eventos seguidos a lo largo del tiempo. Los datos recopilados por Prometheus pueden visualizarse, analizarse y utilizarse para activar alertas, lo que ayuda a los equipos a mantenerse al tanto del estado y el rendimiento de su infraestructura.
Prometheus es conocido por varias características clave:
- Modelo de datos de series temporales: Prometheus almacena los datos como series temporales, lo que significa que las métricas se registran a lo largo de intervalos de tiempo.
- Monitorización basada en pull: En lugar de que los sistemas supervisados envíen métricas al servidor, Prometheus utiliza un modelo basado en la extracción para extraer métricas de los puntos finales.
- Potente lenguaje de consulta (PromQL): Prometheus proporciona un potente lenguaje de consulta, PromQL, que permite a los usuarios filtrar y agregar métricas en tiempo real.
- Alertas: Prometheus se integra con el Alertmanager para definir reglas y enviar notificaciones cuando se cumplen condiciones específicas.
- Descubrimiento de servicios: Prometheus puede descubrir y raspar automáticamente métricas de entornos que cambian dinámicamente, como Kubernetes.
Cómo funciona Prometheus
Prometheus sigue una arquitectura sencilla pero robusta diseñada para supervisar datos de series temporales. Así es como funciona:
- Recopilación de métricas (Scraping): Prometheus extrae periódicamente métricas de puntos finales HTTP (denominados exportadores) expuestos por aplicaciones o sistemas.
- Almacenamiento de datos de series temporales: Una vez recopiladas, Prometheus almacena las métricas en una base de datos de series temporales, donde cada punto de datos se asocia a una marca de tiempo y a un conjunto de etiquetas.
- Consultas con PromQL: Los usuarios pueden consultar las métricas almacenadas utilizando el lenguaje de consulta de Prometheus, PromQL, para generar gráficos, cuadros de mando o alertas.
- Alertas: Basándose en condiciones predefinidas, Prometheus puede activar alertas utilizando el Alertmanager, que puede enviar notificaciones por correo electrónico, Slack, PagerDuty u otros servicios.
Prometheus admite un modelo basado en la extracción en el que extrae periódicamente métricas de puntos finales que exponen métricas en un formato que Prometheus puede entender. Esto lo hace ideal para supervisar sistemas distribuidos y microservicios en los que los entornos dinámicos y escalables son habituales.
Componentes de Prometheus
Prometheus está formado por varios componentes principales, cada uno de los cuales tiene un propósito diferente:
- Servidor Prometheus: El componente central responsable de recopilar, almacenar y consultar las métricas. Recoge los puntos finales de destino y almacena las métricas en una base de datos de series temporales.
- Exportadores: Son aplicaciones o servicios que exponen las métricas en un formato compatible con Prometheus. Entre los exportadores comunes se incluyen:
- Exportador de nodos: recopila métricas a nivel de hardware y SO.
- Blackbox Exporter: para sondear puntos finales a través de HTTP, DNS, TCP, etc.
- Exportadores específicos de aplicaciones: Muchas bases de datos (como PostgreSQL, MySQL) y servicios tienen sus propios exportadores.
- Gestor de alertas: Prometheus utiliza el Alertmanager para gestionar las alertas. Puede enrutar alertas a diferentes receptores como Slack, correo electrónico o SMS, y gestionar reglas de silenciamiento e inhibición.
- PromQL (Lenguaje de consulta de Prometheus): Un potente lenguaje de consulta utilizado para recuperar y manipular datos de series temporales.
- Pushgateway: Un componente utilizado para trabajos efímeros o de corta duración que no pueden exponer métricas a través de un scrape directo (por ejemplo, trabajos por lotes). Pushgateway permite que estos trabajos envíen sus métricas a Prometheus.
- Grafana: Aunque no forma parte del propio Prometheus, Grafana es una popular herramienta de código abierto que se utiliza para visualizar datos de Prometheus y crear cuadros de mando interactivos.
Configuración paso a paso de Prometheus
A continuación se explica cómo puede configurar Prometheus en un servidor Linux y comenzar a supervisar las métricas del sistema:
Paso 1: Instalar Prometheus
- Descargue Prometheus: Visite la página de descargas de Prometheus para obtener la última versión de Prometheus.Ejecute los siguientes comandos para descargar y extraer Prometheus:wget https://github.com/prometheus/prometheus/releases/download/v2.32.1/prometheus-2.32.1.linux-amd64.tar.gz tar -xvf prometheus-2.32.1.linux-amd64.tar.gz cd prometheus-2.32.1.linux-amd64
- Inicie Prometheus: Ejecute el siguiente comando para iniciar Prometheus:./prometheus –config.file=prometheus.yml
Por defecto, Prometheus se ejecuta en el puerto 9090, y puede acceder a su interfaz web navegando a http://localhost:9090 en su navegador.
Paso 2: Configurar Prometheus
La configuración principal de Prometheus se realiza a través del archivo prometheus.yml. Este archivo indica a Prometheus qué objetivos (exportadores) debe analizar y con qué frecuencia.
A continuación se muestra una configuración básica de prometheus.yml:
Puede añadir más objetivos o exportadores según sea necesario, y Prometheus empezará a rasparlos automáticamente.
Paso 3: Instalar Node Exporter (para métricas del sistema)
Para supervisar métricas del sistema como el uso de CPU, memoria, disco y red, puede instalar Node Exporter.
- Descargue Node Exporter:wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz cd node_exporter-1.3.1.linux-amd64
- Inicie Node Exporter: Ejecute el siguiente comando para iniciar Node Exporter:./node_exporter
Por defecto, Node Exporter se ejecuta en el puerto 9100 y expone métricas como el uso de CPU, estadísticas de memoria, E/S de disco y métricas de red.
- Configure Prometheus para raspar Node Exporter: Añada la siguiente tarea al archivo de configuración prometheus.yml:scrape_configs: – job_name: ‘node_exporter’ static_configs: – targets: [‘localhost:9100’]
- Reinicie Prometheus: Después de realizar cambios en el archivo de configuración, reinicie Prometheus para comenzar a raspar métricas desde Node Exporter.
Paso 4: Visualizar métricas con Grafana
Para visualizar las métricas de Prometheus, Grafana es una herramienta excelente. Se integra a la perfección con Prometheus y permite crear cuadros de mando interactivos.
- Instale Grafana: En Linux, puede instalar Grafana siguiendo las instrucciones del sitio web de Grafana.
- Configure Prometheus como fuente de datos: Después de instalar Grafana:
- Inicia sesión en Grafana (http://localhost:3000).
- Vaya a Configuración > Fuentes de datos y añada Prometheus como fuente de datos (http://localhost:9090).
- Crear cuadros de mando: Ahora puedes crear tus propios cuadros de mando personalizados o importar cuadros de mando preconstruidos del mercado de Grafana para visualizar métricas como el uso de la CPU, la utilización de la memoria, el rendimiento del disco, etc.
Paso 5: Configurar alertas
Prometheus le permite configurar alertas basadas en condiciones específicas, como un uso elevado de la CPU, poco espacio en disco o fallos de la aplicación.
- Defina reglas de alerta: Las alertas se definen en un archivo rules.yml independiente. He aquí un ejemplo de regla de alerta que se activa cuando el uso de la CPU es superior al 80%:grupos: – nombre: ejemplo_alertas reglas: – alert: HighCPUUsage expr: 100 – (avg by(instance) (rate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: “Detectado un uso elevado de la CPU en {{ $labels.instance }}” description: “El uso de la CPU es superior al 80% durante más de 5 minutos”
- Configurar Alertmanager: Instale y configure el Alertmanager para enviar notificaciones por correo electrónico, Slack u otros canales cuando se active una alerta.
Casos de uso de Prometheus
Prometheus se utiliza en una amplia gama de escenarios para supervisar diversos tipos de sistemas, incluyendo:
- Monitorización de Infraestructura: Recopilar métricas de servidores, bases de datos y dispositivos de red para garantizar que su infraestructura funciona sin problemas.
- Supervisión de aplicaciones: Realice un seguimiento de las métricas de rendimiento, como la latencia, la tasa de solicitudes, las tasas de error y el consumo de recursos para aplicaciones, especialmente en arquitecturas de microservicios.
- Supervisión de Kubernetes: Prometheus se integra de forma nativa con Kubernetes y puede descubrir y raspar automáticamente métricas de pods y servicios en un clúster Kubernetes.
- Métricas personalizadas: Prometheus le permite instrumentar sus propias aplicaciones para exponer métricas personalizadas, proporcionando una visión profunda de los comportamientos específicos de la aplicación.
Conclusión
Prometheus es una solución de monitorización potente y flexible que permite la recopilación, consulta y alerta en tiempo real basadas en datos de series temporales. Tanto si supervisa métricas a nivel de sistema como el rendimiento de aplicaciones en una arquitectura de microservicios, Prometheus es una herramienta valiosa para garantizar la salud y estabilidad de su infraestructura.
Siguiendo los pasos descritos en este artículo, puedes empezar a utilizar Prometheus, recopilar métricas de tus sistemas y visualizarlas con Grafana. Con el tiempo, Prometheus puede ayudarle a obtener información sobre las tendencias de rendimiento, detectar anomalías y responder a los incidentes rápidamente, mejorando tanto el tiempo de actividad del sistema como la fiabilidad.