ADR-0001 · Las redes remotas empujan métricas por remote_write; Prometheus no las scrapea¶
- Estado: aceptado
- Decisores: Hugo Quintero (único autor del repo)
- Fecha de la decisión: no registrada. Implementada el 2026-03-13
(commit
e5dfd35, "Configuracion de endpoint para recepcion de metricas del Grafana Agent"); la migración a Grafana Alloy aparece el 2026-03-24.
Contexto y problema¶
Hay tres orígenes de métricas: las VMs de la nube (misma red que el stack), la red SAP (HANA, Service Layer, Windows) y la red de la oficina (servidores dev, staging y docker, MikroTik). Las dos últimas están detrás de NAT y sin IP pública; el Prometheus central no puede abrir conexiones hacia ellas. El stack se opera con una sola persona y sin VPN site-to-site.
Opciones consideradas¶
- Colector local en cada red remota (Grafana Agent, luego Alloy) que scrapea
sus exporters y empuja al Prometheus central con
remote_write, expuesto por Cloudflare Tunnel + Access. - VPN entre la VM devops y cada red, y scrape directo desde el Prometheus central.
- Un Prometheus por red con federación (
/federate) hacia el central.
No hay registro escrito de la evaluación; las opciones 2 y 3 se infieren del diseño resultante.
Decisión¶
Opción 1. Prometheus corre con --web.enable-remote-write-receiver y recibe
en https://prometheus.compulandia.com.py/api/v1/write; Loki recibe logs en
https://loki.compulandia.com.py/loki/api/v1/push. Cada red remota tiene su
colector con la lista de targets y etiquetas red / servidor / exporter,
cuyas configs de referencia viven en este repo (grafana-alloy/,
agent-config-grafana/). Solo lo que está en la misma red (VMs de la nube)
se scrapea directo.
Consecuencias¶
Positivas¶
- No hace falta VPN ni abrir puertos entrantes en las redes remotas.
- Las etiquetas se fijan en el origen: los tableros filtran por
redyservidor. - Un solo Prometheus, una sola TSDB, una sola lista de reglas.
Negativas / deuda asumida¶
- Si el túnel, el token de Cloudflare Access o el colector se caen, las
series simplemente dejan de llegar y ninguna alerta lo detecta: falta
una regla de ausencia (
absent_over_time) por red. - Las credenciales del
remote_write(service token y basic auth) están en texto plano en las configs de referencia del repo. Deuda a resolver con archivos de secretos fuera de git. - Las configs de los colectores viven en dos lugares (este repo y la máquina donde corren); pueden divergir sin que se note.
- Hay dos generaciones de colector (Grafana Agent y Alloy). Grafana Agent está
discontinuado por Grafana; la config de
agent-config-grafana/queda como referencia hasta migrar esa red a Alloy.