Introducción a Prometheus
Prometheus es un sistema de monitoreo y alerta de código abierto ampliamente utilizado para la supervisión de infraestructuras y aplicaciones. Fue desarrollado originalmente en SoundCloud y ha ganado una gran adopción en la comunidad de código abierto. Prometheus es especialmente adecuado para entornos dinámicos de microservicios debido a su modelo de datos multidimensional. Esta guía detalla cómo instalar y configurar Prometheus en Huawei Cloud, incluyendo alertas, visualización, seguridad y mejores prácticas.
Características Clave de Prometheus
- Modelo de Datos Multidimensional: Prometheus recopila métricas como series temporales, identificadas por un nombre de métrica y un conjunto de pares clave-valor.
- Lenguaje de Consulta PromQL: Prometheus proporciona un lenguaje de consulta flexible llamado PromQL que permite a los usuarios seleccionar y agregar series temporales en tiempo real.
- Monitoreo y Alertas: Prometheus no solo recopila métricas, sino que también puede desencadenar alertas si alguna de las métricas cumple ciertas condiciones.
- Integración: Se integra bien con otros sistemas como Grafana para la visualización de datos.
¿Prometheus utiliza IA o Machine Learning?
Prometheus en sí no incorpora inteligencia artificial (IA) ni machine learning (ML) en su núcleo. Es principalmente un sistema de monitoreo basado en reglas. Sin embargo, los datos recopilados por Prometheus pueden ser utilizados por otros sistemas que sí incorporan IA o ML para análisis predictivo, detección de anomalías, y más.
Prerrequisitos
- Cuenta activa en Huawei Cloud.
- Conocimientos básicos de Linux, SSH y YAML.
- Acceso a una terminal y permisos para crear recursos en Huawei Cloud.
Instalación de Prometheus en Huawei Cloud
Paso 1: Crear una Instancia ECS en Huawei Cloud
Iniciar Sesión: Accede a tu cuenta en Huawei Cloud.
Crear ECS: Dirígete al servicio Elastic Cloud Server (ECS) y crea una instancia:
- Sistema Operativo: Ubuntu 20.04 o superior (64 bits).
- Especificaciones: Mínimo 2 vCPUs, 4 GB RAM.
- Disco: Al menos 40 GB para almacenamiento de métricas.
Configurar Red:
- Asigna una IP pública o usa una VPC.
- Crea un grupo de seguridad con las siguientes reglas:
- Puerto 22 (SSH): Restringido a tu IP.
- Puerto 9090 (Prometheus): Acceso desde IPs autorizadas.
- Puerto 9093 (Alertmanager): Acceso desde IPs autorizadas.
- Puerto 3000 (Grafana, opcional): Acceso desde IPs autorizadas.
Ejemplo de Reglas de Grupo de Seguridad
| Protocolo | Puerto | Dirección IP de Origen | Acción |
|---|---|---|---|
| TCP | 22 | Permitir | |
| TCP | 9090 | 0.0.0.0/0 (o IPs específicas) | Permitir |
| TCP | 9093 | 0.0.0.0/0 (o IPs específicas) | Permitir |
| TCP | 3000 | 0.0.0.0/0 (o IPs específicas) | Permitir |
Paso 2: Instalar Prometheus en la Instancia ECS
Acceder a la Instancia: Usa SSH para conectarte.
ssh ubuntu@<dirección-ip-de-la-instancia>Actualizar el Sistema:
sudo apt update && sudo apt upgrade -yDescargar Prometheus:
wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gzExtraer y Configurar:
tar xvfz prometheus-2.47.0.linux-amd64.tar.gz mv prometheus-2.47.0.linux-amd64 /opt/prometheus cd /opt/prometheusConfigurar Prometheus: Crea o edita
prometheus.yml:global: scrape_interval: 15s evaluation_interval: 15s external_labels: monitor: 'huawei-cloud' rule_files: - 'alert.rules' alerting: alertmanagers: - static_configs: - targets: ['localhost:9093'] scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node' static_configs: - targets: ['localhost:9100']Crear Archivo de Reglas de Alertas: Crea
alert.rules:groups: - name: example rules: - alert: HighErrorRate expr: job:request_errors:rate5m > 0.05 for: 10m labels: severity: page annotations: summary: "High error rate on {{ $labels.instance }}" description: "Error rate is {{ $value }} on {{ $labels.instance }}" - alert: InstanceDown expr: up == 0 for: 5m labels: severity: critical annotations: summary: "Instance {{ $labels.instance }} down" description: "{{ $labels.instance }} has been down for more than 5 minutes."Iniciar Prometheus:
./prometheus --config.file=prometheus.yml --storage.tsdb.path=/opt/prometheus/data &Configurar como Servicio (opcional, para ejecución persistente):
sudo nano /etc/systemd/system/prometheus.serviceAñade:
[Unit] Description=Prometheus Monitoring After=network.target [Service] User=ubuntu ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data Restart=always [Install] WantedBy=multi-user.targetActiva el servicio:
sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl enable prometheus
Paso 3: Verificar la Instalación de Prometheus
Accede a la interfaz web:
http://<ip-instancia>:9090.En la pestaña Graph, ejecuta la consulta
up. Deberías ver:up{instance="localhost:9090"} = 1(Prometheus activo).
Explora métricas como
prometheus_build_infopara confirmar la versión.Si no carga, verifica:
- Que el grupo de seguridad permite el puerto 9090.
- Que Prometheus está corriendo:
ps aux | grep prometheus
Paso 4: Configurar Alertmanager
Descargar Alertmanager:
wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz tar xvfz alertmanager-0.25.0.linux-amd64.tar.gz mv alertmanager-0.25.0.linux-amd64 /opt/alertmanager cd /opt/alertmanagerConfigurar Alertmanager: Crea
simple.yml:global: slack_api_url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX' route: receiver: 'slack' group_by: ['alertname', 'instance'] receivers: - name: 'slack' slack_configs: - channel: '#alerts' send_resolved: true title: '{{ .CommonAnnotations.summary }}' text: '{{ .CommonAnnotations.description }}'Nota: Reemplaza la URL de Slack con una válida o configura otro receptor (email, PagerDuty).
Iniciar Alertmanager:
./alertmanager --config.file=simple.yml &Configurar como Servicio (opcional):
sudo nano /etc/systemd/system/alertmanager.serviceAñade:
[Unit] Description=Alertmanager for Prometheus After=network.target [Service] User=ubuntu ExecStart=/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/simple.yml Restart=always [Install] WantedBy=multi-user.targetActiva el servicio:
sudo systemctl daemon-reload sudo systemctl start alertmanager sudo systemctl enable alertmanager
Paso 5: Instalar Node Exporter para Monitoreo del Sistema
Descargar Node Exporter:
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz tar xvfz node_exporter-1.6.1.linux-amd64.tar.gz mv node_exporter-1.6.1.linux-amd64 /opt/node_exporter cd /opt/node_exporterIniciar Node Exporter:
./node_exporter &Configurar como Servicio:
sudo nano /etc/systemd/system/node_exporter.serviceAñade:
[Unit] Description=Node Exporter After=network.target [Service] User=ubuntu ExecStart=/opt/node_exporter/node_exporter Restart=always [Install] WantedBy=multi-user.targetActiva el servicio:
sudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporterVerifica en
http://<ip-instancia>:9100/metricsque las métricas estén disponibles.
Paso 6: Integrar con Grafana
Instalar Grafana:
wget https://dl.grafana.com/oss/release/grafana-10.0.3.linux-amd64.tar.gz tar xvfz grafana-10.0.3.linux-amd64.tar.gz mv grafana-10.0.3 /opt/grafana cd /opt/grafanaIniciar Grafana:
./bin/grafana-server &Configurar como Servicio:
sudo nano /etc/systemd/system/grafana.serviceAñade:
[Unit] Description=Grafana After=network.target [Service] User=ubuntu ExecStart=/opt/grafana/bin/grafana-server Restart=always [Install] WantedBy=multi-user.targetActiva el servicio:
sudo systemctl daemon-reload sudo systemctl start grafana sudo systemctl enable grafanaConfigurar Grafana:
- Accede a
http://<ip-instancia>:3000(usuario:admin, contraseña:admin). - Añade Prometheus como fuente de datos:
- URL:
http://localhost:9090. - Tipo: Prometheus.
- URL:
- Importa un dashboard (por ejemplo, ID 1860 para Node Exporter).
- Accede a
Explorar Métricas:
- Crea un panel con la consulta
node_cpu_seconds_totalpara visualizar el uso de CPU.
- Crea un panel con la consulta
Paso 7: Configurar Persistencia de Datos
Crear un Disco en Huawei Cloud:
- Ve a "Elastic Volume Service (EVS)" y crea un disco de 100 GB.
- Adjunta el disco a tu instancia ECS.
Montar el Disco:
sudo mkfs.ext4 /dev/sdX sudo mkdir /prometheus-data sudo mount /dev/sdX /prometheus-data sudo chown ubuntu:ubuntu /prometheus-dataNota: Reemplaza
/dev/sdXcon el identificador del disco.Actualizar Prometheus:
Modifica el servicio para usar el nuevo almacenamiento:
sudo nano /etc/systemd/system/prometheus.serviceActualiza
ExecStart:ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/prometheus-dataReinicia:
sudo systemctl daemon-reload sudo systemctl restart prometheus
Configurar Retención:
- Añade a
prometheus.yml:global: scrape_interval: 15s evaluation_interval: 15s tsdb: retention: 30d
- Añade a
Paso 8: Mejores Prácticas y Mantenimiento
Seguridad:
- Restringe el acceso a los puertos 9090, 9093 y 3000.
- Usa HTTPS con un proxy inverso como Nginx.
- Implementa autenticación en Grafana y Prometheus.
Actualizaciones:
- Revisa regularmente nuevas versiones de Prometheus, Alertmanager, Node Exporter y Grafana.
- Ejemplo para actualizar Prometheus:
wget <nueva-versión-url> tar xvfz prometheus-*.tar.gz mv prometheus-<nueva-versión> /opt/prometheus sudo systemctl stop prometheus sudo systemctl start prometheus
Alta Disponibilidad (opcional):
- Configura múltiples instancias de Prometheus con almacenamiento remoto (por ejemplo, Thanos).
- Usa balanceadores de carga en Huawei Cloud.
Monitoreo de Prometheus:
- Añade alertas para métricas internas como
prometheus_tsdb_wal_corruption_errors_total.
- Añade alertas para métricas internas como
Conclusión
Prometheus es una herramienta poderosa para el monitoreo y las alertas en entornos de nube como Huawei Cloud. Esta guía cubre desde la configuración inicial hasta la integración con Grafana, notificaciones en Alertmanager, persistencia de datos y mejores prácticas. Con esta configuración, puedes supervisar instancias ECS, aplicaciones y recibir alertas en tiempo real, todo mientras mantienes un entorno seguro y escalable.
