Skip to content

Infra · Dashboard de monitoreo "Data Processes"

El dashboard "Data Processes" en Cloud Monitoring (solvento-data-prod) es la fuente principal y única para saber si un proceso de datos falló. El repo dashboard_gcp genera su configuración.

¿Qué es?

Es la herramienta de chequeo de salud de todos los pipelines de datos. En vez de Slack, email o alertas sueltas, el estado real de la ingesta se mira aquí: por cada proceso responde, de un vistazo, si entra tráfico, si se procesa, si hay errores, si crece el dato y si hay backlog.

Campo Valor
Tipo Infraestructura (dashboard de observabilidad)
Dónde vive Cloud Monitoring → Dashboards → Data Processes (proyecto solvento-data-prod)
Repo que lo genera dashboard_gcp
Para qué sirve Saber si un proceso falló y dónde mirar primero
Dueño Martin (data eng)

El repo no despliega infraestructura: solo describe qué monitorear y cómo visualizarlo. main.py arma el layout y produce dash_result.json, que se importa al dashboard existente en GCP.

Qué muestra (la herramienta de health check)

Por cada proceso intenta contestar:

Pregunta Widget
¿Entra tráfico? Pub/Sub messages (rate)
¿Se procesa? Dataflow throughput / eventos Cloud Run
¿Hay problemas? Panel de logs ≥ WARNING
¿Crece el dato? BigQuery table size (stored bytes)
¿Hay backlog? Pub/Sub system lag (edad del mensaje más viejo sin ack, con umbrales amarillo/rojo)

Los procesos se agrupan visualmente por origen (barra de color): Syntage, Shinkansen, xml_data, etc.

Procesos / pipelines que cubre

La lista pipelines en main.py define los bloques. Hoy incluye:

Bloque Origen Tipo de plantilla
Invoices Syntage Pub/Sub + Dataflow + BQ
Items Syntage Pub/Sub + Dataflow + BQ
Carta Porte Syntage with_cloud_run_events (Cloud Run + Pub/Sub + Dataflow)
Insights (NRT + Batch) Syntage Pub/Sub + Dataflow + BQ
Tax Compliance Syntage Pub/Sub + Dataflow + BQ
Buro Syntage Pub/Sub + Dataflow + BQ
Shinkansen Metadata Shinkansen Pub/Sub + Dataflow + BQ
Shinkansen Payout Results Shinkansen Pub/Sub + Dataflow + BQ
xml_data xml_data Cloud Run + BQ (sin Pub/Sub ni Dataflow)
Moratory Interest Syntage Moratory Interest Cloud Run + BQ
CIEC Credential Status Syntage CIEC Credential Status Cloud Run + BQ
KYC (CSF, RPC, accionistas) Syntage KYC Cloud Run + BQ, dos filas: filas por tabla, corridas por resultado, entidades, duración, logs, tamaño
SendGrid · Bird Messaging - Envios 2 Cloud Run + BQ, tres filas

Para conocer la lista exacta y actual, ver la lista pipelines y las funciones de sección (p.ej. _xml_data_section_row()) en main.py.

Tres patrones de widget

  1. Pipeline estándar — Pub/Sub + Dataflow + BQ (ej. Invoices, Items, Buro). Config mínima: topic_id, dataflow_regex, dataset_id, table_name, métrica de throughput.
  2. Con Cloud Run en el medio — block_template: "with_cloud_run_events" (ej. Carta Porte). Agrega un gráfico de eventos del handler Cloud Run a partir de una métrica log-based.
  3. Cloud Run + BQ simple — fila de 3 widgets sin Pub/Sub ni Dataflow (ej. xml_data → svc_master_public.xml_data).
  4. Cloud Run con log de resultado — el servicio cierra cada corrida con un log JSON estructurado (jsonPayload.event) y los gráficos salen de métricas log-based sobre esos campos, sin regex (Messaging, Syntage KYC).

Cómo se despliega

main.py  →  python main.py  →  dash_result.json  →  Cloud Monitoring Dashboard
graph LR
    PY["main.py<br/><i>config + generadores de widgets</i>"]
    JSON[("dash_result.json<br/>(generado)")]
    DASH["📊 Dashboard 'Data Processes'<br/>Cloud Monitoring · solvento-data-prod"]
    GCP["Pub/Sub · Dataflow · Cloud Run · BigQuery<br/>(métricas y logs)"]

    PY -->|python main.py| JSON
    JSON -->|consola o gcloud| DASH
    GCP -.->|métricas / logs| DASH

    classDef store fill:#bfdbfe,stroke:#1e40af,color:#000;
    class JSON store;
  1. Se declaran pipelines/secciones en main.py.
  2. python main.py regenera dash_result.json (no editar el JSON a mano: se pierde en la próxima ejecución).
  3. Se sube el JSON al dashboard:
  4. Consola: Monitoring → Dashboards → Data Processes → Edit → JSON.
  5. gcloud: gcloud monitoring dashboards update DASHBOARD_ID --config-from-file=dash_result.json --project=solvento-data-prod.

Depende de logs y métricas bien formados: los paneles filtran severity>=WARNING y usan service_name/job_name/location; los gráficos de "eventos por tipo" requieren log-based metrics ya creadas en GCP con los labels correctos. Las nuevas se declaran en terraform-gcp-infrastructure → logging_metrics_prod (Messaging messaging-extract-*, Syntage KYC syntage-kyc-*); las más viejas se crearon, o quedan por crear, a mano en la consola.

Cómo usarla (chequeo de salud)

  1. Abrir el dashboard "Data Processes" en Cloud Monitoring (solvento-data-prod).
  2. Recorrer por origen: ¿entra tráfico → se procesa → sin errores WARNING+ → dato crece → sin backlog?
  3. Un panel de logs con errores, throughput en cero o system lag en rojo señala el proceso afectado y por dónde empezar a diagnosticar.

Esta es la única fuente de verdad del estado de los pipelines. Las skills de chequeo diario y diagnóstico de fallos del ecosistema parten siempre de este dashboard.

Lo que un gráfico no muestra bien es la ausencia de una corrida. Para eso está el panel de freshness en Metabase (report.v_freshness_procesos, repo consistencia → freshness/), que pone en fail a un proceso que no corrió o cuyo dato no avanza.

Si algo se ve mal 🛠️

Síntoma en el dashboard Probable causa Acción
Throughput en cero (pipeline activo) Métrica equivocada (elements_produced en un sink) o job caído Revisar job Dataflow; ver README para la métrica correcta
Panel de logs vacío Severity mal puesta o filtro service_name/job_name desalineado Validar en Logs Explorer
System lag en rojo Backlog en Pub/Sub (consumidor lento o caído) Revisar el job/servicio que consume la suscripción
Widget nuevo sin datos Métrica/log no existe aún en GCP Crear la log-based metric antes de pedir el widget

Escalación: dashboard / métricas / Dataflow → Martin · lógica SQL/Metabase → Diego · Airbyte → Gero.

Enlaces

  • 📊 Dashboard: Cloud Monitoring → Dashboards → Data Processes (solvento-data-prod)
  • 📦 Repo: dashboard_gcp (main.py, dash_result.json)
  • 🔗 Jobs Dataflow que monitorea → ver infra-templates-dataflow

Última actualización: 2026-09-25 (secciones Moratory, CIEC, Messaging y Syntage KYC; métricas en Terraform) · Si se agrega o cambia un pipeline en el dashboard, actualizar esta ficha en el mismo MR.