Skip to main content
Flowker emite traces, métricas y logs estructurados usando el estándar OpenTelemetry.

Resumen


La telemetría de Flowker usa tres señales: Flowker exporta todas las señales mediante OTLP (OpenTelemetry Protocol) a un collector de tu elección.

Configuración


Las variables de entorno controlan la telemetría.
Si defines ENABLE_TELEMETRY=true sin OTEL_EXPORTER_OTLP_ENDPOINT, Flowker no podrá iniciar.

Trazado distribuido


Cada solicitud HTTP y operación interna crea un span de OpenTelemetry. Los spans se propagan a lo largo de toda la cadena de ejecución. Una única ejecución de workflow genera un trace conectado, desde el handler HTTP hasta cada paso individual del ejecutor.

Convención de nombres de spans

Los spans siguen el patrón <layer>.<resource>.<operation>: Spans de ejecución Spans de comandos de workflow Spans de configuración de ejecutor Spans de configuración de proveedor Spans de consultas
En Grafana Tempo, busca por nombre de servicio (flowker) y filtra por nombre de span para aislar operaciones específicas. Usa command.execution.execute como punto de entrada para ver un trace completo del workflow.

Métricas


Flowker expone métricas HTTP y del sistema de forma automática mediante el SDK de OpenTelemetry. Solo necesitas habilitar la telemetría.

Métricas HTTP (mediante otelfiber)

Recopiladas por ruta mediante el middleware otelfiber: Cada métrica lleva labels: http.request.method, http.route, http.response.status_code.

Métricas del sistema

Buckets del histograma

Los histogramas de latencia usan los límites de bucket predeterminados del SDK de OpenTelemetry. Los valores de http.server.duration están en milisegundos, por lo que los límites son:
Flowker no expone un endpoint de scrape de Prometheus (/metrics) directamente. Flowker exporta métricas mediante OTLP a tu collector, que luego las reenvía a Prometheus. Configura tu collector OTLP para incluir un exporter prometheusremotewrite.

Logging estructurado


Flowker usa logging JSON estructurado mediante Zap. Cada entrada de log lleva campos contextuales. Puedes indexar y consultar estos campos en Loki.

Referencia de campos de log

Niveles de log

Define la variable de entorno LOG_LEVEL para controlar el nivel de detalle.

Ejemplos de entradas de log

Ejecución de workflow iniciada:
Recuperación de una ejecución incompleta:
Nodo ejecutor mal configurado:

Sondas de salud


Flowker expone sondas de liveness y readiness compatibles con Kubernetes para el monitoreo operativo. Liveness indica si el proceso sigue en ejecución. Readiness indica si las dependencias (en particular, la base de datos) son alcanzables. Configura ambas en el nivel del clúster, como parte de tus manifiestos de despliegue. La orquestación puede entonces reiniciar los pods no saludables y quitar las instancias degradadas de los balanceadores de carga.

Dashboards de Grafana


La telemetría de Flowker se integra directamente con el stack de observabilidad de Lerian. Hay dashboards preconfigurados disponibles a través de la instancia de Grafana gestionada por Lerian.

Paneles recomendados

Rendimiento de solicitudes
  • Consulta: sum(rate(http_server_duration_count{service_name="flowker"}[5m])) by (http_route)
  • Muestra las solicitudes por segundo, desglosadas por ruta
Latencia P95
  • Consulta: histogram_quantile(0.95, sum(rate(http_server_duration_bucket{service_name="flowker"}[5m])) by (le, http_route))
  • Muestra el tiempo de respuesta del percentil 95 por ruta
Tasa de errores
  • Consulta: sum(rate(http_server_duration_count{service_name="flowker", http_response_status_code=~"5.."}[5m])) / sum(rate(http_server_duration_count{service_name="flowker"}[5m]))
  • Muestra la proporción de respuestas 5xx
Ejecuciones activas (mediante logs)
  • Consulta de Loki: {service_name="flowker"} |= "Starting workflow execution" | count_over_time([1m])
Para la configuración completa del stack de observabilidad, consulta Plataforma → Observabilidad.