Skip to main content
O Flowker emite traces, métricas e logs estruturados usando o padrão OpenTelemetry.

Visão geral


A telemetria do Flowker usa três sinais: O Flowker exporta todos os sinais via OTLP (OpenTelemetry Protocol) para um collector de sua escolha.

Configuração


Variáveis de ambiente controlam a telemetria.
Se você definir ENABLE_TELEMETRY=true sem OTEL_EXPORTER_OTLP_ENDPOINT, o Flowker não vai iniciar.

Tracing distribuído


Toda requisição HTTP e operação interna cria um span do OpenTelemetry. Os spans se propagam por toda a cadeia de execução. Uma única execução de workflow produz um trace conectado, do handler HTTP até as etapas individuais do executor.

Convenção de nomenclatura de spans

Os spans seguem o padrão <layer>.<resource>.<operation>: Spans de execução Spans de comando de workflow Spans de configuração de executor Spans de configuração de provedor Spans de consulta
No Grafana Tempo, busque pelo nome do serviço (flowker) e filtre pelo nome do span para isolar operações específicas. Use command.execution.execute como ponto de entrada para ver o trace completo de um workflow.

Métricas


O Flowker expõe métricas HTTP e do sistema automaticamente via o SDK do OpenTelemetry. Você apenas precisa habilitar a telemetria.

Métricas HTTP (via otelfiber)

Coletadas por rota pelo middleware otelfiber: Cada métrica carrega labels: http.request.method, http.route, http.response.status_code.

Métricas do sistema

Buckets de histograma

Histogramas de latência usam os limites de bucket padrão do SDK do OpenTelemetry. Os valores de http.server.duration estão em milissegundos, então os limites são:
O Flowker não expõe diretamente um endpoint de scrape do Prometheus (/metrics). O Flowker exporta métricas via OTLP para seu collector, que então encaminha ao Prometheus. Configure seu collector OTLP para incluir um exporter prometheusremotewrite.

Logging estruturado


O Flowker usa logging JSON estruturado via Zap. Toda entrada de log carrega campos contextuais. Você pode indexar e consultar esses campos no Loki.

Referência de campos de log

Níveis de log

Defina a variável de ambiente LOG_LEVEL para controlar a verbosidade.

Exemplos de entradas de log

Execução de workflow iniciada:
Recuperação de execução incompleta:
Nó de executor mal configurado:

Probes de saúde


O Flowker expõe probes de liveness e readiness compatíveis com Kubernetes para monitoramento operacional. Liveness sinaliza se o processo ainda está em execução. Readiness sinaliza se as dependências (principalmente o banco de dados) estão acessíveis. Configure ambas no nível do cluster como parte dos seus manifestos de deploy. A orquestração pode então reiniciar pods não saudáveis e remover instâncias degradadas dos balanceadores de carga.

Dashboards do Grafana


A telemetria do Flowker se integra diretamente à stack de observabilidade da Lerian. Dashboards pré-configurados estão disponíveis por meio da instância do Grafana gerenciada pela Lerian.

Painéis recomendados

Throughput de requisições
  • Consulta: sum(rate(http_server_duration_count{service_name="flowker"}[5m])) by (http_route)
  • Mostra requisições por segundo, detalhadas por rota
Latência P95
  • Consulta: histogram_quantile(0.95, sum(rate(http_server_duration_bucket{service_name="flowker"}[5m])) by (le, http_route))
  • Mostra o tempo de resposta no percentil 95 por rota
Taxa de erro
  • 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]))
  • Mostra a proporção de respostas 5xx
Execuções ativas (via logs)
  • Consulta Loki: {service_name="flowker"} |= "Starting workflow execution" | count_over_time([1m])
Para a configuração completa da stack de observabilidade, veja Plataforma → Observabilidade.