Descripción general
La telemetría de Flowker está construida sobre tres señales:
| Señal | Backend | Qué cubre |
|---|---|---|
| Trazas | Tempo | Spans distribuidos a través de ejecuciones de workflows y pasos |
| Métricas | Prometheus | Tasas de solicitudes HTTP, latencia y uso de recursos del sistema |
| Logs | Loki | Logs JSON estructurados para cada operación |
Configuración
La telemetría se controla mediante variables de entorno.
Si
ENABLE_TELEMETRY=true está configurado sin OTEL_EXPORTER_OTLP_ENDPOINT, Flowker fallará al iniciar.Trazado distribuido
Cada solicitud HTTP y operación interna crea un span de OpenTelemetry. Los spans se propagan a través de toda la cadena de ejecución, por lo que una sola ejecución de workflow produce una traza conectada desde el HTTP handler hasta los pasos individuales del executor.
Convención de nombres de spans
Los spans siguen el patrón<capa>.<recurso>.<operación>:
Spans de ejecución
| Nombre del span | Descripción |
|---|---|
command.execution.execute | Span raíz para una ejecución de workflow |
command.execution.execute_executor_node | Span para cada nodo executor procesado |
command.execution.execute_with_provider_config | Span para un nodo resuelto con una configuración de provider específica |
command.execution.recover | Span para la recuperación de ejecuciones incompletas al inicio |
| Nombre del span | Descripción |
|---|---|
command.workflow.create | Crear un nuevo workflow |
command.workflow.update | Actualizar un workflow existente |
command.workflow.activate | Activar un workflow |
command.workflow.deactivate | Desactivar un workflow |
command.workflow.clone | Clonar un workflow |
command.workflow.delete | Eliminar un workflow |
| Nombre del span | Descripción |
|---|---|
command.executor_config.create | Crear configuración de executor |
command.executor_config.update | Actualizar configuración de executor |
command.executor_config.activate | Activar configuración de executor |
command.executor_config.enable | Habilitar configuración de executor |
command.executor_config.disable | Deshabilitar configuración de executor |
command.executor_config.mark_configured | Marcar executor como configurado |
command.executor_config.mark_tested | Marcar executor como probado |
command.executor_config.test_connectivity | Probar conectividad del executor |
command.executor_config.delete | Eliminar configuración de executor |
| Nombre del span | Descripción |
|---|---|
command.provider_config.create | Crear configuración de provider |
command.provider_config.update | Actualizar configuración de provider |
command.provider_config.enable | Habilitar configuración de provider |
command.provider_config.disable | Deshabilitar configuración de provider |
command.provider_config.test_connectivity | Probar conectividad del provider |
command.provider_config.delete | Eliminar configuración de provider |
| Nombre del span | Descripción |
|---|---|
query.execution.get | Obtener ejecución por ID |
query.execution.list | Listar ejecuciones |
query.execution.get_results | Obtener resultados de ejecución |
query.workflow.get | Obtener workflow por ID |
query.workflow.get_by_name | Obtener workflow por nombre |
query.workflow.list | Listar workflows |
query.executor_config.get | Obtener configuración de executor por ID |
query.executor_config.get_by_name | Obtener configuración de executor por nombre |
query.executor_config.list | Listar configuraciones de executor |
query.executor_config.exists | Verificar existencia de configuración de executor |
query.executor_config.exists_by_name | Verificar existencia de configuración de executor por nombre |
query.provider_config.get | Obtener configuración de provider por ID |
query.provider_config.list | Listar configuraciones de provider |
Métricas
Flowker expone métricas HTTP y del sistema automáticamente a través del SDK de OpenTelemetry. No se necesita configuración adicional más allá de habilitar la telemetría.
Métricas HTTP (vía otelfiber)
Recopiladas por ruta mediante el middlewareotelfiber:
| Métrica | Tipo | Descripción |
|---|---|---|
http.server.duration | Histograma | Duración de la solicitud en milisegundos |
http.server.request.size | Histograma | Tamaño del payload de la solicitud en bytes |
http.server.response.size | Histograma | Tamaño del payload de la respuesta en bytes |
http.server.active_requests | UpDownCounter | Número de solicitudes en curso |
http.method, http.route, http.status_code.
Métricas del sistema
| Métrica | Tipo | Unidad | Descripción |
|---|---|---|---|
system.cpu.usage | Gauge | porcentaje | Uso de CPU del host del proceso |
system.mem.usage | Gauge | porcentaje | Uso de memoria del host del proceso |
Buckets de histograma
Los histogramas de latencia usan los siguientes límites de bucket (en segundos):Flowker no expone un endpoint de scraping de Prometheus (
/metrics) directamente. Las métricas se exportan vía OTLP a tu colector, que luego las reenvía a Prometheus. Configura tu colector OTLP para incluir un exportador prometheusremotewrite.Logging estructurado
Flowker usa logging JSON estructurado a través de Zap. Cada entrada de log se enriquece con campos contextuales que pueden indexarse y consultarse en Loki.
Referencia de campos de log
| Campo | Descripción | Ejemplo |
|---|---|---|
operation | Nombre del span/operación | command.execution.execute |
workflow.id | Identificador del workflow | wf_abc123 |
execution.id | Identificador de la ejecución | exec_xyz789 |
node.id | Identificador del nodo dentro de un workflow | node-payment |
executor.id | Identificador del executor | exec_cfg_001 |
error.message | Descripción del error cuando aplica | database ping failed: ... |
Niveles de log
| Nivel | Cuándo se usa |
|---|---|
debug | Estado interno detallado — solo para desarrollo |
info | Hitos normales de operación (ejecución iniciada, recuperada, etc.) |
warn | Problemas recuperables o condiciones inesperadas pero no fatales |
error | Fallos de operación que requieren atención |
LOG_LEVEL para controlar la verbosidad.
Ejemplos de entradas de log
Ejecución de workflow iniciada:Endpoints de salud
Flowker expone tres endpoints de salud para monitoreo operacional y configuración de sondas de Kubernetes.
GET /health
Verificación de salud combinada. Retorna el estado del servicio, versión, tiempo de actividad y verificaciones de dependencias. Respuesta (saludable):GET /health/live
Sonda de liveness de Kubernetes. Retorna200 OK si el proceso está en ejecución. No verifica dependencias.
GET /health/ready
Sonda de readiness de Kubernetes. Retorna200 OK cuando todas las dependencias están saludables. Retorna 503 Service Unavailable cuando la base de datos no está disponible.
Configuración de sondas de Kubernetes
Dashboards de Grafana
La telemetría de Flowker se integra directamente con el stack de observabilidad de Lerian. Los dashboards pre-configurados están disponibles a través de la instancia de Grafana administrada por Lerian.
Paneles recomendados
Throughput de solicitudes- Query:
sum(rate(http_server_duration_count{service_name="flowker"}[5m])) by (http_route) - Muestra solicitudes por segundo, desglosadas por ruta
- Query:
histogram_quantile(0.95, sum(rate(http_server_duration_bucket{service_name="flowker"}[5m])) by (le, http_route)) - Muestra el percentil 95 del tiempo de respuesta por ruta
- Query:
sum(rate(http_server_duration_count{service_name="flowker", http_status_code=~"5.."}[5m])) / sum(rate(http_server_duration_count{service_name="flowker"}[5m])) - Muestra la proporción de respuestas 5xx
- Loki query:
{service_name="flowker"} |= "Starting workflow execution" | count_over_time([1m])
Para la configuración completa del stack de observabilidad, consulta Plataforma → Observabilidad.

