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 repodashboard_gcpgenera 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.pyarma el layout y producedash_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
pipelinesy las funciones de sección (p.ej._xml_data_section_row()) enmain.py.
Tres patrones de widget
- 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. - 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. - Cloud Run + BQ simple — fila de 3 widgets sin Pub/Sub ni Dataflow (ej.
xml_data→svc_master_public.xml_data). - 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
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;
- Se declaran pipelines/secciones en
main.py. python main.pyregeneradash_result.json(no editar el JSON a mano: se pierde en la próxima ejecución).- Se sube el JSON al dashboard:
- Consola: Monitoring → Dashboards → Data Processes → Edit → JSON.
- 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>=WARNINGy usanservice_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 enterraform-gcp-infrastructure→logging_metrics_prod(Messagingmessaging-extract-*, Syntage KYCsyntage-kyc-*); las más viejas se crearon, o quedan por crear, a mano en la consola.
Cómo usarla (chequeo de salud)
- Abrir el dashboard "Data Processes" en Cloud Monitoring (
solvento-data-prod). - Recorrer por origen: ¿entra tráfico → se procesa → sin errores WARNING+ → dato crece → sin backlog?
- 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, repoconsistencia→freshness/), que pone enfaila 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.