Prácticas recomendadas de observabilidad
Instrumentar una aplicación Claude de manera adecuada significa que un pico de costos, una regresión de latencia o una regresión de caché aparezcan en un panel o una página dentro de la hora, no en la factura del próximo mes.
Esta lista de verificación consolida las prácticas cubiertas en esta sección en reglas contra las cuales puedes verificar tu propia instrumentación.
Cómo usar esta lista de verificación
- Trata la sección A como la base innegociable para cualquier integración de Claude más allá de un script desechable.
- Las secciones B y C valen el esfuerzo una vez que tengas bucles de agente de varios pasos o tráfico de producción para observar.
- Revisa esta lista después de tu primer incidente real y anota qué regla lo habría detectado antes.
- Usa las casillas de verificación como una auditoría literal de tu instrumentación actual, no solo como un ejercicio de lectura.
A - Fundamentos de registro
- Registra cada llamada a Claude en un esquema estructurado consistente. Captura el prompt, la respuesta, el modelo, los recuentos de tokens, la latencia y un ID de solicitud para cada llamada, no solo para las que fallan.
- Usa
logging.Logger, noprint. La salida estructurada a través de un marco de registro real se integra con el filtrado por nivel de registro y la mayoría de los agentes de agregación de registros de forma predeterminada. - Registra los errores en el mismo esquema que los éxitos. Una forma compartida con un campo
statuspermite que una consulta cubra ambos resultados en lugar de mantener registros de errores separados. - Genera el ID de solicitud antes de la llamada, no después. Esto garantiza que tengas un identificador incluso cuando la llamada genera una excepción.
- Centraliza la construcción de registros en una sola función o adaptador. Construir el diccionario de registro en línea en cada sitio de llamada es la forma en que los esquemas se desvían silenciosamente en una base de código.
- Captura campos de tokens relacionados con la caché de forma defensiva. Accede a
cache_read_input_tokensy campos similares congetattr(..., None)ya que solo se rellenan una vez que se aplica el almacenamiento en caché de prompts.
B - Visibilidad de rastreo y costos
- Emite un span raíz por ejecución de agente, con un span hijo por llamada al modelo e invocación de herramienta. Esto es lo que preserva la forma de una ejecución de varios pasos, que los registros planos por sí solos no pueden mostrar.
- Sigue la convención de nomenclatura de atributos
gen_ai.*en los spans. La nomenclatura consistente mantiene los rastreos consultables de la misma manera independientemente de qué servicio o proveedor de modelos los produjo. - Establece explícitamente el estado del span en caso de error, no solo
record_exception. Un span sin un estado de error explícito aún puede renderizarse como exitoso en algunos visores de rastreo. - Mantén el texto completo del prompt/respuesta fuera de los atributos del span. Los spans son para metadatos cortos y estructurados; pon el texto completo en registros estructurados en su lugar, unidos por el ID de solicitud.
- Calcula y envía el costo por llamada, no solo los recuentos de tokens. Los recuentos de tokens por sí solos no responden a "¿cuánto costó esto?"; multiplica por el precio actual por modelo y trata esa tabla de precios como configuración.
- Coloca los costos de Claude y las métricas de latencia en el mismo panel que tus otras métricas de infraestructura. Un panel separado solo para LLM se revisa con mucha menos frecuencia que el que tu equipo observa diariamente.
- Etiqueta cada métrica con al menos el modelo y la característica/endpoint. Las métricas de costos sin etiquetar no pueden decirte qué modelo o qué parte de tu producto está impulsando el gasto.
C - Alertas y respuesta a incidentes
- Alerta sobre el gasto en relación con una línea base móvil, no solo con una cantidad fija en dólares. Un umbral fijo que se ajusta a tu tráfico actual se vuelve obsoleto a medida que aumenta el uso.
- Requiere un piso absoluto mínimo junto con cualquier alerta basada en ratios. Una verificación solo de ratio puede alertar sobre fluctuaciones estadísticamente grandes pero prácticamente insignificantes cuando la línea base es pequeña.
- Alerta sobre la tasa de fallos de caché de forma independiente del gasto. Es un indicador principal que a menudo se mueve antes de que el gráfico de costos se doble visiblemente.
- Ejecuta las verificaciones de alerta según un horario, no en línea en la ruta de solicitud. La lógica de evaluación de alertas no debe agregar latencia o un nuevo modo de fallo al código que ya está en la ruta crítica para los usuarios.
- Usa la deduplicación de tu herramienta de paginación, no lógica de deduplicación personalizada. Reimplementar la escalada y la deduplicación en la propia verificación generalmente produce un peor comportamiento que el manejo incorporado de la herramienta de paginación.
- Verifica la correlación de despliegue antes de asumir un problema del lado del proveedor. La mayoría de los picos de latencia o errores se remontan a un despliegue reciente, una edición de prompt o un cambio de configuración más rápido de lo que se remontan a un incidente del lado de Anthropic.
- Anota lo que verificaste después de cada incidente, incluidos los callejones sin salida. Una nota corta de incidente ahorra a la próxima investigación el tener que recorrer el mismo camino.
D - Consistencia del equipo
- Documenta tu esquema de nombres de spans y atributos en un ADR antes de que un segundo servicio adopte el rastreo. Sin una decisión documentada, cada servicio inventa su propia nomenclatura, y las consultas de rastreo entre servicios se vuelven imposibles.
- Documenta explícitamente tu política de muestreo, incluida la excepción de spans de error. "Muestrear apropiadamente" no es lo suficientemente preciso para que cada servicio lo implemente de la misma manera.
- Reemplaza los ADR en lugar de editarlos en su lugar cuando el esquema cambie. Editar en su lugar destruye el registro histórico de por qué se tomó la decisión original.
- Asigna a los servicios existentes una fecha límite de migración concreta cuando cambie el esquema. Un ADR sin un plan de implementación deja a los servicios ya instrumentados permanentemente fuera de sincronización con los nuevos.
Aplicando la lista de verificación en orden
- Sección A primero, siempre. El registro estructurado casi no cuesta nada de añadir y es la base sobre la que se construye toda otra práctica en esta lista.
- Sección B una vez que tengas un bucle de agente de varios pasos o tráfico de producción que valga la pena observar. El rastreo y los paneles agregan un esfuerzo de ingeniería real, por lo que ganan su lugar una vez que el registro por sí solo deja de responder a tus preguntas.
- Sección C una vez que B esté en su lugar. Alertar sobre métricas que aún no existen no es posible; haz que las señales fluyan antes de establecer umbrales sobre ellas.
- Sección D tan pronto como un segundo equipo o servicio comience a instrumentar. Esperar hasta que tres servicios ya se hayan desviado convierte esto de una decisión proactiva en un proyecto de limpieza.
Preguntas frecuentes
¿Qué práctica de esta lista es más importante si solo puedo hacer una cosa?
Registro estructurado (sección A): un esquema consistente que capture el prompt, la respuesta, los tokens, el modelo, la latencia y el ID de solicitud para cada llamada. Cuesta poco añadirlo, y toda otra práctica en esta lista (rastreo, paneles, alertas) depende de que estos datos existan de forma consultable.
¿Necesito rastreo OpenTelemetry para una integración simple de llamada única?
No necesariamente. El rastreo justifica su costo una vez que tienes un bucle de agente de varios pasos donde el orden y la anidación de las llamadas importan. Una integración de llamada única puede depender solo del registro estructurado hasta que eso cambie.
¿Por qué el costo se trata como una preocupación de observabilidad en lugar de una preocupación financiera en esta lista?
Un bucle de agente descontrolado es un error de confiabilidad que, por casualidad, se manifiesta primero como una anomalía de gasto. Tratar el costo como una señal de ingeniería de primera clase, junto con la latencia y la tasa de error, detecta ese error el mismo día en lugar de al final de un ciclo de facturación.
¿Cuál es el riesgo de omitir la práctica ADR en la sección D?
Cada servicio que adopta el rastreo de forma independiente tiende a inventar sus propios nombres de spans y claves de atributos. Una vez que eso sucede, las consultas de rastreo entre servicios y los paneles compartidos dejan de funcionar, y arreglarlo más tarde requiere una migración en lugar de una decisión única.
¿Deben las verificaciones de alerta ejecutarse como parte de mi código normal de manejo de solicitudes?
No. Ejecuta la evaluación de alertas según un horario, separado de la ruta de solicitud, ya sea como un trabajo cron o un monitor evaluado por tu backend de métricas. Poner la lógica de alerta en línea agrega latencia y un nuevo modo de fallo al código que ya atiende a los usuarios.
¿Por qué la lista de verificación recomienda una línea base móvil en lugar de un umbral de gasto fijo?
Un umbral fijo que se ajusta a tu tráfico actual se vuelve demasiado sensible o demasiado tarde para detectar un pico real a medida que crece el uso. Una línea base móvil (una mediana de ventanas recientes) se adapta automáticamente, manteniendo la alerta significativa sin reajustes manuales.
¿Qué debo hacer de manera diferente una vez que un segundo servicio comience a instrumentar llamadas a Claude?
Escribe el ADR que documente los nombres de spans, atributos y política de muestreo antes de que ese segundo servicio envíe su instrumentación, no después. Este es el punto donde la inconsistencia comienza a acumularse, y es mucho más barato prevenirla que migrar de ella más tarde.
¿Es el muestreo de spans al 100% la elección correcta alguna vez?
Con un bajo volumen de tráfico, sí, ya que el costo y el ruido son insignificantes. A medida que el tráfico crece, la mayoría de los equipos cambian a una tasa de muestreo más baja para spans exitosos de rutina, mientras mantienen los spans de error y de valores atípicos de costos con muestreo completo, lo que el ADR debería documentar explícitamente.
¿Cómo sé si mi esquema de registro se está perdiendo algo importante?
Si no puedes responder "cuánto costó esta llamada específica, cuánto tiempo tomó y qué devolvió" solo con tus registros, sin volver a ejecutar la solicitud, el esquema está incompleto. Los campos en la sección A (prompt, response, model, tokens, latency, request ID) son el mínimo que hace que esta pregunta sea respondible.
¿Cuál es la forma más rápida de verificar si un pico de métricas es causado por mi propio despliegue?
Compara la marca de tiempo de inicio de la anomalía con tu registro de despliegue para la misma ventana, y verifica la página de estado de Anthropic para descartar una causa del lado del proveedor. Este es el primer paso de la lista de verificación de correlación de despliegues vinculada a continuación, y resuelve la mayoría de los incidentes más rápido que empezar desde cero.
¿Deben las métricas de costos vivir en un panel separado específico de LLM o con mis otras métricas de infraestructura?
Con tus otras métricas de infraestructura. Un panel dedicado solo a LLM tiende a ser revisado raramente, mientras que el gasto junto a los gráficos de latencia y tasa de error que tu equipo observa diariamente se nota el día que algo sale mal.
Relacionado
- Cómo funciona la observabilidad para aplicaciones LLM - el modelo mental sobre el que se construye esta lista de verificación.
- Fundamentos de observabilidad - el punto de partida mínimo para la sección A.
- Instrumentación de bucles de agente con rastreo OpenTelemetry - las prácticas de rastreo en la sección B.
- Integración de paneles de uso y costos de Claude con Datadog - las prácticas de panel en la sección B.
- Alertas sobre picos de gasto y tasas crecientes de fallos de caché - las prácticas de alerta en la sección C.
- Correlación de latencia y errores con despliegues de código - la lista de verificación de correlación de despliegues referenciada en la sección C.
- Plantilla ADR: Definición de tu esquema de spans OTel para llamadas a herramientas - las prácticas ADR en la sección D.
Versiones de pila: Escrito contra la línea de modelos Claude actual a partir de ~junio de 2026 - Claude Fable 5, Claude Opus 4.8, Claude Sonnet 5 (el predeterminado), y Claude Haiku 4.5 - y el SDK oficial
anthropicde Python (última versión 0.x). Los nombres de modelos, precios y versiones de SDK cambian rápidamente; verifica los detalles actuales en platform.claude.com/docs antes de confiar en ellos.