2026-08-01T22:23:50.983Z
Supervisión de los agentes para el trabajo programado: Construye un envase de ejecución esperada
Detecta arranques perdidos, sobrecargas, ejecuciones duplicadas y falsos éxitos con plazos separados para la programación, ejecución y resultados verificados.
El seguimiento de los agentes para el trabajo programado debe comenzar con una pregunta: ¿ comenzó, terminó y produjo el resultado prometido este evento programado específico dentro de su ventana permitida? Una salida de proceso verde, un latido cardíaco reciente y un rastro completo no pueden responder a esa pregunta por sí solos. El estándar práctico es un envelope expected run . Para cada suceso, registre el tiempo previsto, el retraso permitido en el inicio, el tiempo máximo de ejecución y el plazo para verificar el producto entregado. Mantenga estos sellos de tiempo separados. Un trabajo puede estar esperando legítimamente, tardando en comenzar, todavía trabajando, tardando, duplicado o terminado sin resultado. El colapso de esos estados en running y failed crea alertas ruidosas y oculta el falso éxito. Esta guía construye ese sobre como un contrato neutro en el tiempo de ejecución. El dispositivo incluido de nueve casos es sintético, no prueba de producción, pero es ejecutable y expone las decisiones que debe tomar un sistema de monitoreo. Anclar el registro a la ocurrencia programada No deducir el tiempo esperado de la primera línea de registro. Obtenga la hora prevista de ocurrencia del programador y mantengala como scheduled at . Kubernetes 1.32 y posteriormente añade batch.kubernetes.io/cronjob scheduled timestamp a los trabajos creados. Google Cloud Scheduler envía X CloudScheduler ScheduleTime , que se mantiene constante durante los intentos de repetición. Estos valores sobreviven a un inicio tardío y hacen que los retos se atribuyan a la misma ocurrencia. Utilice una llave de ranura estable: Entonces mantén estos campos: El outcome ref debe identificar la evidencia y no contener el entregable sensible. Puede ser un hash, una versión de objeto, un ID de prueba o una llave de fila de base de datos. Un archivo generado simplemente existente puede no ser suficiente; la verificación debe coincidir con la promesa real, como todays breve existe, tiene cinco elementos citados, y se almacena en el destino esperado. El programador del contrato importa porque la ejecución no es necesariamente exactamente una vez. Kubernetes documenta que un CronJob a veces puede crear dos trabajos o ningún trabajo y aconseja cargas de trabajo impotentes. Cloud Scheduler describe al menos una entrega y también requiere objetivos idempotentes. Por lo tanto, el seguimiento debe tratar los arranques duplicados como un estado de primera clase, no como una anomalía imposible. Calcular tres plazos, no un tiempo de descanso Definir el envase con tres límites independientes: Los valores deben provenir de distribuciones de tiempo de ejecución observadas y de requisitos empresariales, no de un preestablecimiento universal. Una tarea programada a las 09:00 puede ser perfectamente saludable cuando comienza a las 09:00:40. El mismo retraso de 40 segundos puede violar una promesa de envío de menos de un minuto. Amazon EventBridge Scheduler, por ejemplo, documenta la precisión de la invocación de 60 segundos; tratar el segundo 01 como late interpretaría erróneamente el contrato del programador. Los tres límites responden a diferentes preguntas: El Estado Pruebas Respuesta del operador waiting for start No existe ninguna carrera, pero start deadline no ha pasado Espera . missed start No existe ninguna carrera después de start deadline Verificación del cronograma y de la accesibilidad running Una carrera está activa antes de finish deadline Déjalo en paz. overrun La ejecución activa pasó finish deadline Inspeccione el progreso antes de interrumpir outcome pending Proceso terminado; la ventana de verificación sigue abierta Espera al verificador . outcome missing El plazo de verificación pasado sin pruebas Investigar el falso éxito duplicate start Más de una carrera reclama la misma llave de ranura Contiene efectos secundarios; inspeccionar la causa de la reincidencia healthy El resultado prometido fue verificado. Cerrar el evento suspended Una pausa explícita de mantenimiento o aprobación cubre la ranura Eliminar las fallas; conservar las pruebas de auditoría Este orden evita dos errores comunes. En primer lugar, la ausencia no constituye un fracaso hasta que transcurra el plazo aplicable. En segundo lugar, completar el proceso no es completar la tarea. Una carrera que salga a las 09:06 puede permanecer outcome pending hasta que finalice su carga, prueba o verificación de destino. Se convierte en outcome missing solo después de que expire esa ventana de gracia separada. Una invasión tampoco es permiso para matar a un agente. Compruebe si el progreso útil todavía está en movimiento, si está esperando en un sistema externo y si la interrupción es reversible. El envase indica dónde se justifica la atención; no toma la decisión de recuperación. Reproduce el clasificador con nueve casos incómodos El artefacto ejecutado evalúa los accesorios de línea nueva delimitada con un clasificador determinista. Ejecutar con: La fijación utiliza una gracia de inicio de dos minutos, un tiempo máximo de ejecución de diez minutos y una gracia de resultado de dos minutos. Su resultado es: El clasificador central es deliberadamente pequeño: Este experimento demuestra el valor de los límites explícitos, pero no demuestra que los umbrales elegidos se ajusten a una carga de trabajo real. También asume que un programador mapas de ocurrencia limpio a una ranura. El fan out impulsado por eventos, el trabajo histórico reproducido manualmente y las tareas con múltiples entregables requeridos necesitan un modelo de identidad ampliado. Manejo de duplicados, superposición, zonas horarias y pausas explícitamente Los retos y las superposiciones están relacionados, pero no idénticos. Un nuevo intento puede repetir el mismo espacio después de una falla en el transporte. Una superposición puede comenzar la siguiente ranura mientras la anterior todavía está activa. Mantenga tanto slot key como run id , luego aplique el comportamiento de concurrencia declarado por el programador. Kubernetes expone las políticas de concurrencia de Allow , Forbid y Replace . Bajo Forbid , un incidente omitido mientras el trabajo anterior está activo se cuenta como omitido. Bajo Replace , la nueva ocurrencia desplaza al viejo trabajo. Su estado de monitoreo debe preservar esa razón, de lo contrario un reemplazo intencional parece un accidente. Para las tareas de efectos secundarios, deduplicar en la llave de ranura en el destino, así como en el monitor. Una segunda ejecución exitosa puede enviar una segunda factura, sobrescribir un informe más reciente o publicar el mismo mensaje dos veces. El monitor puede exponer el riesgo, pero la impotencia pertenece al contrato de carga de trabajo y destino. Los fusiones horarios necesitan una regla igualmente explícita. Almacenar sellas de tiempo de ocurrencia en UTC mientras se conserva el identificador de zona horaria de la IANA y la expresión original. Las transiciones que ahorran luz diurna son específicas para el programador. EventBridge Scheduler documenta que una hora local inexistente durante la primavera hacia adelante se omite y una hora local repetida durante la caída hacia atrás se ejecuta una vez. No sintetizar un evento perdido que el programador nunca prometió. Por último, las pausas deben ser modeladas y no ocultadas desactivando las alertas. Registrar quién hizo una pausa en el horario, por qué, la hora de inicio y de expiración y si se espera que se recupere. Kubernetes señala que las ocurrencias de CronJob suspendidas se cuentan como perdidas y pueden ejecutarse inmediatamente después de la suspensión cuando no se fije una fecha límite de inicio. Un monitor que olvida la pausa puede inundar al operador precisamente cuando termina el mantenimiento. Convierte el sobre en una regla de funcionamiento silenciosa Comience con un agente programado crítico, no todos los rastros: 1. Lea la marca de tiempo de ocurrencia nativa del programador, el fuso horario, la política de retoma y la política de concurrencia. 2. Asignar una llave de ranura antes de que comience el trabajo y preservarla durante los intentos de retomada. 3. Seleccione start grace , max runtime y outcome grace entre los requisitos reales y las duradas observadas. 4. Definir un verificador de resultados deterministas. 5. Repite la historia reciente a través de los nueve estados antes de activar las notificaciones. 6. Pague solo cuando una promesa relevante para el usuario esté fuera de su envolvente; mantenga waiting for start , running y outcome pending visibles pero silenciosos. Revisar los umbrales después de cambios en el horario, el modelo, la herramienta o el destino. Un modelo más grande puede aumentar el tiempo de ejecución sin cambiar la corrección. Una API externa más lenta puede alargar la verificación de resultados. La deriva del umbral es la deuda de configuración, no evidencia de que un agente se convirtió en poco confiable. Este contrato también establece un límite de datos útil. Necesitas sellos de tiempo, identificadores estables, estado, y una referencia a la evidencia de verificación. No necesitas automáticamente instrucciones, respuestas, cargas útiles de herramientas primas, o rastros completos. Recogerlos sólo cuando un diagnóstico los requiera y su política de privacidad lo permita. Sidewisp está destinado a convertir señales como horarios perdidos, puestos, fallos de herramientas y resultados perdidos en una visión de salud priorizada con pruebas explícitas y límites de aprobación. El motor de monitoreo de producción y los adaptadores de tiempo de funcionamiento generalmente no se envían hoy en día. Sidewisp se encuentra actualmente en versión preliminar privada. Si este contrato de ejecución esperado coincide con un fallo que usted opera, el registro de vista previa privada es el siguiente paso restringidono una afirmación de que Sidewisp ya vigila a sus agentes en vivo. Fuentes primarias Documentación de trabajo de Kubernetes CronJob horarios programados, plazos de inicio, política de concurrencia, suspensión, creación aproximada e idempotencia. Resumen general de Google Cloud Scheduler al menos una entrega, comportamiento de retoma, idempotencia y el encabezado estable de tiempo programado. Amazon EventBridge Tipos de horarios de programación precisión de invocación, zonas horarias y comportamiento de ahorro de luz diurna.