Data Team MICPrometheus es el toolkit open-source de monitoreo y alerting para métricas de tiempo real. Recolecta métricas desde componentes de plataforma (Trino, Spark, Kafka, NiFi, Airflow, Ceph) y sirve como fuente de datos para dashboards en Grafana.
Acceso vía web UI
<tu-url>
Verificar estado y versión
curl <tu-url>/-/healthy
curl <tu-url>/api/v1/status/tsdb
| Parámetro | Valor | Descripción |
|---|---|---|
| URL base | <tu-url> |
UI de Prometheus |
| API endpoint | /api/v1/ |
REST API para queries |
| Almacenamiento | Disco local | Métricas persistidas ~15 días |
| Scrape interval | 30s | Frecuencia de recolección |
En la UI, ir a Graph → Insert Metric at cursor para ver todas las métricas.
O via API:
curl <tu-url>/api/v1/label/__name__/values
Ver estado de targets (servicios monitoreados)
<tu-url>/targets
Targets comunes
| Target | Endpoint | Métricas |
|---|---|---|
| Trino | <tu-url> |
Query duration, active workers |
| Kafka | <tu-url> |
Topics, brokers, lag |
| Airflow | <tu-url> |
DAG runs, task duration |
| Spark | <tu-url> |
Executors, tasks, memory |
| Ceph | <tu-url> |
Cluster health, OSD status |
| Tipo | Ejemplo | Uso |
|---|---|---|
gauge |
trino_active_queries |
Valores que suben y bajan |
counter |
kafka_messages_total |
Solo incrementan, nunca bajan |
histogram |
trino_query_duration_seconds |
Distribución de latencias |
summary |
spark_executor_memory_bytes |
Percentiles y sumas |
Métrica simple (valor actual)
trino_active_queries
Filtrar por etiqueta (label)
kafka_topic_messages_total{topic="eventos_plataforma"}
Comparación de valores
trino_active_queries > 10
Operaciones matemáticas
rate(kafka_messages_total[5m]) # Mensajes por segundo en últimos 5 minutos
| Función | Ejemplo | Descripción |
|---|---|---|
rate() |
rate(metric[5m]) |
Tasa de cambio (velocidad) |
increase() |
increase(metric[1h]) |
Incremento total en ventana |
sum() |
sum(metric) |
Suma de todos los valores |
avg() |
avg(metric) |
Promedio |
max(), min() |
max(metric) |
Máximo / mínimo |
count() |
count(metric) |
Contar series |
topk() |
topk(5, metric) |
Top 5 valores |
histogram_quantile() |
histogram_quantile(0.95, metric) |
Percentil 95 |
Queries activas en Trino
trino_active_queries
Duración promedio de queries (últimos 5 minutos)
rate(trino_query_duration_seconds_sum[5m]) / rate(trino_query_duration_seconds_count[5m])
Queries fallidas por hora
increase(trino_queries_failed_total[1h])
Mensajes por segundo en un topic
rate(kafka_topic_messages_total{topic="eventos_plataforma"}[1m])
Consumer lag (retraso)
kafka_consumergroup_lag
Particiones sin líder (problema de salud)
kafka_topic_partitions{state="offline"}
DAGs en ejecución
airflow_dag_runs{state="running"}
Duración promedio de tareas (percentil 95)
histogram_quantile(0.95, airflow_task_duration_seconds)
Salud del cluster
ceph_health_status
Uso de almacenamiento (%)
(ceph_cluster_used_bytes / ceph_cluster_capacity_bytes) * 100
Las reglas de alertas están en
/etc/prometheus/rules/alerts.yml
Recargar sin reiniciar
curl -X POST <tu-url>/-/reload
groups:
- name: trino_alerts
rules:
- alert: TrinQueriesFailing
expr: rate(trino_queries_failed_total[5m]) > 0.1
for: 5m
labels:
severity: warning
annotations:
summary: 'Trino: > 10% de queries fallando'
description: 'Revisar logs en <tu-url>'
Componentes
| Campo | Descripción |
|---|---|
alert |
Nombre de la alerta |
expr |
Condición PromQL (si true → dispara alerta) |
for |
Tiempo que debe cumplirse antes de disparar |
severity |
critical, warning |
annotations |
Mensaje para humanos (summary, description) |
Trino: queries lentas
- alert: TrinoHighLatency
expr: histogram_quantile(0.95, trino_query_duration_seconds) > 60
for: 10m
Kafka: consumidor atrasado
- alert: KafkaConsumerLag
expr: kafka_consumergroup_lag > 10000
for: 5m
Ceph: cluster degraded
- alert: CephHealthCritical
expr: ceph_health_status != 1
for: 1m
Airflow: DAG failing
- alert: AirflowDagFailed
expr: airflow_dag_runs{state="failed"} > 0
for: 5m
curl '<tu-url>/api/v1/query?query=trino_active_queries'
Respuesta JSON con result
curl '<tu-url>/api/v1/query_range?query=rate(kafka_messages_total[5m])&start=1678867200&end=1678953600&step=300'
Parámetros
| Parámetro | Ejemplo | Descripción |
|---|---|---|
query |
trino_active_queries |
Expresión PromQL |
start |
1678867200 |
Timestamp Unix inicio |
end |
1678953600 |
Timestamp Unix fin |
step |
300 |
Intervalo en segundos |
DOWN, verificar conectividad:curl http://<target-ip>:<puerto>/metrics
curl -X POST <tu-url>/-/reload# Ver top queries más lentas
topk(10, rate(prometheus_tsdb_symbol_table_size_bytes[5m]))
Prometheus almacena ~15 días. Verificar uso:
<tu-url>/api/v1/status/tsdb
Limpiar manualmente (destructivo):
# En contenedor Prometheus
promtool tsdb delete --min-time 1678000000 --max-time 1678086400