Runbook — Connect CDC
Estructura: síntoma, evidencia, diagnóstico inicial (L1), criterio de escalado.
Convenciones: ⚠️ = acción que puede afectar producción.
RB-CDC-001 — Pipeline detenido / no captura cambios
Síntoma
Lag entre source IBM i y destino crece sin freno. La consola muestra el pipeline "stopped" o "stalled".
Evidencia a recolectar
- •Estado del pipeline en consola Connect.
- •Logs del agente CDC en IBM i (joblog).
- •
WRKACTJOBfiltrado por subsystem de Connect. - •QSYSOPR.
- •Logs del motor Connect.
- •Versión exacta de Connect CDC.
Flujo de diagnóstico inicial (L1)
- •
Verificar el estado del pipeline en la Management Console.
Navegar a:
Management Console → Pipelines → [nombre del pipeline]→ El estado se muestra en la columnaStatus. Los valores posibles sonRunning,Stopped,Error,Starting,Stopping. Si diceError, el panel inferior muestra el último mensaje de error — copiarlo completo antes de cualquier acción. - •
Verificar si el agente IBM i está activo.
WRKACTJOB JOB(CDC*)→ Buscar el job del agente CDC (el nombre exacto varía por instalación; consultar documentación del cliente). Debe estar en status
ACTIVE. Si no aparece o está enMSGW, ese es el problema primario.WRKACTJOB SBS(CDCSBSYS)→ Reemplazar
CDCSBSYScon el nombre real del subsystem de Connect en el cliente. Todos los jobs del agente deben aparecer con statusRUNoDEQW. - •
Verificar el joblog del agente para mensajes de error.
DSPJOBLOG JOB(nombre_job_agente_cdc)→ Buscar mensajes con severidad 30 o mayor. Los mensajes de Connect CDC comienzan típicamente con prefijo
CDCo el propio del producto. Copiar el texto completo del error. - •
Verificar conectividad del agente hacia el motor Connect.
PING RMTSYS('ip_del_servidor_motor_connect')→ Si no responde, la conectividad de red está rota — escalar a redes y al senior simultáneamente.
- •
Buscar mensaje de error específico en QSYSOPR.
WRKMSG MSGQ(QSYS/QSYSOPR) SEQ(*NEW)→ Filtrar por la franja temporal del incidente. Buscar mensajes relacionados con comunicaciones TCP, journaling, o mensajes del subsystem CDC.
Criterio de escalado
- •Pipeline no reanuda con reinicio estándar del agente.
- •Error específico no documentado en este runbook.
- •Lag supera 10 minutos sin señales de recuperación.
RB-CDC-002 — Tabla nueva no journaled (no se captura)
Síntoma
Una tabla recién creada en producción IBM i no aparece en el destino. Sin error explícito; simplemente "no llega".
Evidencia a recolectar
- •Nombre exacto de tabla y biblioteca.
- •
DSPFD FILE(LIB/TABLA)para confirmar journaling. - •Configuración del scope del pipeline (qué bibliotecas/tablas captura).
- •Fecha de creación del objeto.
Flujo de diagnóstico inicial (L1)
- •
Confirmar que la tabla no está journaled o está journaled con imagen incorrecta.
DSPFD FILE(MILIB/MITABLA)→ Buscar la sección "Journaling information". El campo
Journaleddebe decirYes. El campoJournal imagesdebe decir*BOTH(Connect CDC requiere imágenes AFTER para capturar el valor nuevo, y BEFORE cuando el destino necesita reconstruir el before-image). Si dice*AFTERsolamente o*BEFOREsolamente → ver RB-CDC-003. Si diceNo→ la tabla no está journaled y no se captura. - •
Confirmar si la tabla está dentro del scope del pipeline.
En la Management Console:
Pipelines → [pipeline] → Source → Tables→ Verificar si la tabla aparece en la lista de objetos monitoreados. Si no aparece, puede ser por scope de biblioteca, filtro de nombre, o que el pipeline fue configurado antes de que existiera la tabla. - •
Notificar al equipo de aplicación.
- •
⚠️ Iniciar journaling solo bajo procedimiento aprobado.
STRJRNPF FILE(MILIB/MITABLA) JRN(MILIB/MIJRN) IMAGES(*BOTH) OMTJRNE(*OPNCLO)→ Confirmar con
DSPFD FILE(MILIB/MITABLA)que ahoraJournaleddiceYesyJournal imagesdice*BOTH.
Criterio de escalado
- •Si la tabla tiene volumen productivo histórico que se perdió de captura → senior por riesgo de re-sincronización.
(Fuente: Precisely Help — Set up journaling)
RB-CDC-003 — Imagen de journal incorrecta (BEFORE only)
Síntoma
Pipeline reporta error de captura por imagen incompleta. Updates llegan al destino sin valores nuevos o sin valores viejos según el caso.
Evidencia a recolectar
- •
DSPFD FILE(LIB/TABLA)mostrando atributos de journaling. - •Configuración del journal (
DSPJRN). - •Mensaje exacto del error.
Flujo de diagnóstico inicial (L1)
- •
Confirmar la imagen de journaling activa.
DSPFD FILE(MILIB/MITABLA)→ El campo
Journal imagesdebe decir*BOTH. Si dice*BEFOREo*AFTERsolamente, hay que corregirlo. Connect CDC requiere*BOTHpara la mayoría de los destinos. - •
Verificar la configuración del journal para entender la política general.
DSPJRN JRN(MILIB/MIJRN)→ La imagen por defecto del journal puede estar configurada diferente a la del archivo individual. Documentar ambos valores.
- •
Documentar y notificar al senior — el cambio de imagen requiere coordinación.
- •
⚠️ Cambiar la imagen requiere
ENDJRNPF+STRJRNPFcon la imagen correcta — coordinar ventana con aplicación.ENDJRNPF FILE(MILIB/MITABLA) JRN(MILIB/MIJRN) STRJRNPF FILE(MILIB/MITABLA) JRN(MILIB/MIJRN) IMAGES(*BOTH)→ El intervalo entre
ENDJRNPFySTRJRNPFno se captura — debe coordinarse con el equipo de aplicación para que no haya transacciones en esa ventana.
Criterio de escalado
- •Cambio de imagen sobre tabla productiva → senior + ventana coordinada.
RB-CDC-004 — Authentication / authorization error contra destino
Síntoma
Pipeline reporta error tipo "authentication failed", "401", "invalid credentials" hacia Snowflake / Kafka / SQL Server / Oracle / etc.
Evidencia a recolectar
- •Mensaje exacto del destino en logs Connect.
- •Configuración del conector (sin credenciales en claro).
- •Última vez que se rotó el secreto.
- •Estado del certificado / token vigente.
Flujo de diagnóstico inicial (L1)
- •
Verificar el mensaje de error exacto en la Management Console.
Navegar a:
Management Console → Pipelines → [pipeline] → Logs→ El mensaje de error del destino aparece en los logs del motor. Buscar entradas con nivelERRORoFATAL. El mensaje incluye el código de error del destino (ej.401 Unauthorized,JDBC authentication failed,SASL authentication failed). - •
Verificar si hubo rotación de credenciales / certificados reciente. → Consultar al equipo del destino cuándo fue la última rotación. Si fue reciente, ese es el origen probable.
- •
Verificar conectividad de red al destino.
PING RMTSYS('ip_o_hostname_destino')→ Si no responde, el problema es de red, no de autenticación. Escalar a redes.
- •
Notificar al equipo dueño del destino (DBAs / data engineering).
Criterio de escalado
- •Credencial requiere reset → seguridad + senior.
- •Certificado vencido → renovación coordinada.
RB-CDC-005 — Lock / DDL en tabla destino impide aplicar
Síntoma
Pipeline aplica algunos cambios y luego se detiene en una tabla específica con error de lock o DDL incompatible.
Evidencia a recolectar
- •Tabla destino afectada.
- •Mensaje de error.
- •Estado de la tabla en destino (DDL reciente, lock activo).
- •Cambios recientes en el destino (release de aplicación, ETL, mantenimiento).
Flujo de diagnóstico inicial (L1)
- •
Identificar la tabla destino desde los logs de Connect.
En la Management Console:
Pipelines → [pipeline] → Logs→ El error incluye el nombre de la tabla destino y el tipo de error (lock timeout, DDL error, constraint violation). Anotar exactamente. - •
Si el destino es IBM i, verificar lock activo sobre la tabla destino.
WRKOBJLCK OBJ(MILIB/MITABLA) OBJTYPE(*FILE)→ Si hay locks
*EXCLo*EXCLRD, algún job tiene el objeto bloqueado. Anotar el job que tiene el lock. - •
Identificar si hubo cambio DDL reciente en destino (columna agregada, tipo cambiado, índice nuevo). → Consultar al equipo de aplicación/DBA del destino. Un cambio DDL no coordinado con Connect CDC es la causa más común.
- •
Notificar al equipo del destino.
Criterio de escalado
- •Schema mismatch → senior + aplicación de schema evolution.
- •Lock recurrente → DBA del destino.
RB-CDC-006 — Mapping mismatch (columna nueva en source)
Síntoma
Source agregó una columna nueva. El pipeline o no la replica, o falla al intentar aplicarla en destino.
Evidencia a recolectar
- •Diff de schema source vs destino.
- •Configuración del mapping en pipeline.
- •Política configurada para schema evolution.
Flujo de diagnóstico inicial (L1)
- •
Confirmar la columna nueva en source.
DSPFFD FILE(MILIB/MITABLA)→ Lista todos los campos del archivo con sus atributos (tipo, longitud, nulo). Comparar con el schema configurado en el mapping del pipeline.
- •
Confirmar mapping vigente en pipeline.
En la Management Console:
Pipelines → [pipeline] → Mappings → [tabla]→ El mapping muestra columnas de source mapeadas a columnas de destino. Si la columna nueva del source no aparece, el pipeline la ignora. Si aparece pero el destino no tiene la columna correspondiente, el pipeline fallará al intentar aplicar. - •
Notificar al equipo de aplicación + data engineering para coordinar el schema change en destino.
Criterio de escalado
- •Cambio de schema requerido en pipeline → senior + ventana.
RB-CDC-007 — Cola IBM i Data Queue saturada
Síntoma
Backlog en la Data Queue intermedia entre el agente CDC y el motor. Lag crece. Storage en IBM i empieza a presionar.
Evidencia a recolectar
- •Estado de la Data Queue (
WRKDTAQo equivalente del producto). - •
WRKDSKSTSen source. - •Estado del motor Connect (¿está procesando?).
Flujo de diagnóstico inicial (L1)
- •
Verificar el estado y tamaño de la Data Queue.
WRKDTAQ DTAQ(MILIB/CDC_DTAQ)→ Reemplazar
CDC_DTAQcon el nombre real de la data queue del producto (consultar documentación de instalación del cliente). La pantalla muestra el número de mensajes en cola y el tamaño máximo configurado. Si la cola está cerca del máximo, el agente va a empezar a rechazar entradas. - •
Verificar si el motor Connect está procesando (consumiendo la cola).
→ Si la data queue crece pero el motor no la consume, el problema está del lado del motor o del destino — no del agente IBM i. Verificar el estado del motor en la Management Console.
- •
Verificar disco en IBM i.
WRKDSKSTS→ Si el
% USEDsupera el 80%, la data queue puede quedarse sin espacio para crecer. El agente CDC puede empezar a fallar o bloquearse.
Criterio de escalado
- •Storage crítico en IBM i (>85% usado) → senior urgente.
- •Motor o destino caído por causa no clara → escalación combinada.
RB-CDC-008 — Catch-up imposible tras caída larga
Síntoma
Tras una caída prolongada del pipeline, al reanudar se reporta "cannot resume from offset" o "journal receivers no longer available".
Evidencia a recolectar
- •Política de retención de journal receivers en source.
- •Lista de receivers vigentes (
WRKJRNRCV). - •Offset / sequence donde el pipeline se detuvo.
- •Tiempo total caído.
Flujo de diagnóstico inicial (L1)
- •
Confirmar receivers disponibles vs offset requerido.
WRKJRNRCV JRN(MILIB/MIJRN)→ La lista muestra todos los receivers con su rango de secuencias. Connect CDC necesita que el receiver que contiene la secuencia donde se detuvo el pipeline todavía exista. Si ese receiver fue purgado (estado
DLT), el catch-up es imposible. - •
Identificar la secuencia donde el pipeline se detuvo.
En la Management Console:
Pipelines → [pipeline] → Advanced → Current Position→ El número de secuencia de journal se muestra aquí. Comparar con el rango del receiver más viejo disponible. - •
Documentar la situación completa: receiver requerido, receivers disponibles, gap de tiempo.
- •
Notificar al senior — esto puede requerir re-sincronización completa.
Criterio de escalado
- •Casi siempre escalado: requiere planning de re-sync (snapshot inicial + CDC desde X).
RB-CDC-009 — Performance degradation del destino
Síntoma
Pipeline corre pero con lag creciente. El bottleneck es el destino (Snowflake warehouse saturado, Kafka broker lento, base de datos con locks).
Evidencia a recolectar
- •Métricas de throughput en cada etapa (agente, motor, destino).
- •Métricas del destino (Snowflake credit usage, Kafka consumer lag, RDBMS waits).
- •Tamaño de batch configurado.
Flujo de diagnóstico inicial (L1)
- •
Identificar dónde está el bottleneck usando la Management Console.
Navegar a:
Management Console → Pipelines → [pipeline] → Statistics→ El panel de statistics muestra throughput por etapa: capture rate (agente IBM i), apply rate (motor hacia destino). Si el capture rate es alto pero el apply rate es bajo, el bottleneck está en el destino. - •
Si el destino es Kafka, verificar consumer group lag (conceptual — requiere acceso a Confluent Control Center o CLI).
Referencia Confluent CLI:
confluent kafka consumer group lag list --cluster [cluster-id] --group [consumer-group-connect-cdc]→ Un lag de consumer group mayor a 100.000 mensajes indica que el consumidor de Connect CDC no puede procesar a la velocidad que Kafka recibe. Notificar al equipo de data engineering.
- •
Si el destino está claramente saturado: notificar al equipo dueño del destino.
- •
Documentar los números de throughput con timestamps.
Criterio de escalado
- •Tuning de batch / paralelismo → senior.
- •Sizing del destino insuficiente → arquitectura.
RB-CDC-010 — Datos esperados no aparecen en destino (sin error)
Síntoma
Aplicación dice que cierto cambio "se hizo" en source, pero no aparece en destino. No hay error reportado por el pipeline.
Evidencia a recolectar
- •Confirmar que el cambio efectivamente se hizo en source (
DSPJRNfiltrado). - •Confirmar que la tabla está en scope del pipeline.
- •Confirmar mapping.
- •Confirmar timestamp y revisar logs del pipeline en esa franja.
Flujo de diagnóstico inicial (L1)
- •
Reproducir la query en source para confirmar que el dato existe en IBM i.
RUNQRY QRYFILE((MILIB/MITABLA)) QRYTEXT('SELECT * FROM MILIB/MITABLA WHERE CAMPO = ''valor''')→ Si el dato no existe en source, el problema es del lado de la aplicación — la transacción no se completó.
- •
Buscar el cambio en el journal del source.
DSPJRN JRN(MILIB/MIJRN) RCVRNG(*CURCHAIN) JRNCDE(R) ENTTYP(PT UB RB) FILE((MILIB/MITABLA))→
ENTTYP(PT)= put/insert,UB= update before,RB= rollback. Si el cambio tiene una entrada deRB(rollback), la transacción fue deshecha — el dato nunca existió de forma permanente. Explicar al equipo de aplicación. Si hayPToUBsinRB, el cambio está journaled. - •
Si el cambio SÍ está en journal pero no en destino: escalar.
Criterio de escalado
- •Cambio en journal pero no aplicado al destino → senior (RCA en motor o destino).
Anexo — convenciones de escalado a Precisely Support
Cuando se abre un case con Precisely Support, incluir:
- •Versión exacta de Connect CDC (motor + agente IBM i).
- •Versión IBM i + TR.
- •Destino (Snowflake account, Kafka cluster, etc.) y su versión.
- •Logs del agente, motor y destino sincronizados por timestamp.
- •Pipeline ID y configuración (sin secretos en claro).
Plantilla de comunicación P1
Usar cuando el pipeline está detenido y el impacto en el negocio es crítico (datos de producción que no llegan al destino, SLA de latencia roto, destino sin datos frescos). Enviar por email y por el canal de guardia definido en el contrato del cliente.
ASUNTO: [P1] Connect CDC — [cliente] — Pipeline [nombre] detenido — [timestamp]
CLIENTE: [nombre]
PRODUCTO: Connect CDC v[versión motor] / Agente IBM i v[versión agente]
SOURCE: IBM i [hostname/IP] — Biblioteca(s): [lista]
DESTINO: [Snowflake / Kafka / SQL Server / otro] — [endpoint o cluster]
PIPELINE: [nombre o ID del pipeline]
INICIO DEL INCIDENTE: [fecha y hora con timezone]
DETECTADO POR: [quién detectó — alerta automática / usuario / soporte]
IMPACTO:
- [Describe el impacto: datos no replicados, aplicaciones que dependen del destino, etc.]
- Lag actual: [valor] segundos / minutos
- Última secuencia de journal procesada: [sequence number si está disponible]
ESTADO ACTUAL:
- Estado del pipeline en consola: [Running / Stopped / Error]
- Estado del agente IBM i: [ACTIVE / MSGW / no encontrado]
- Estado del motor Connect: [corriendo / caído]
ACCIONES YA EJECUTADAS:
- [Lista de acciones tomadas y resultados observados]
EVIDENCIA RECOLECTADA:
- [x] Joblog del agente CDC — adjunto
- [x] Logs del motor Connect — adjunto
- [x] QSYSOPR source IBM i — adjunto
- [x] Screenshot del estado del pipeline en consola — adjunto
- [ ] [Lo que aún falta]
PRÓXIMA ACCIÓN:
- Esperando instrucción de [senior / cliente / Precisely Support]
CONTACTO GUARDIA SOPORTE SENIOR: [nombre y celular]
CONTACTO CLIENTE (técnico): [nombre y celular]