Skip to main content
O Flowker emite traces, métricas e logs estruturados usando o padrão OpenTelemetry. Este guia explica o que está disponível, como habilitar e como interpretar os dados na sua stack de observabilidade.

Visão geral


A telemetria do Flowker é construída sobre três sinais: Todos os sinais são exportados via OTLP (OpenTelemetry Protocol) para um collector de sua escolha.

Configuração


A telemetria é controlada por variáveis de ambiente.
Se ENABLE_TELEMETRY=true estiver definido sem OTEL_EXPORTER_OTLP_ENDPOINT, o Flowker falhará ao iniciar.

Rastreamento distribuído


Cada requisição HTTP e operação interna cria um span OpenTelemetry. Os spans são propagados por toda a cadeia de execução, de modo que uma única execução de workflow produz um trace conectado desde o handler HTTP até as etapas individuais do executor.

Convenção de nomenclatura dos spans

Os spans seguem o padrão <layer>.<resource>.<operation>: Spans de execução Spans de comandos de workflow Spans de configuração de executor Spans de configuração de provider Spans de consulta
No Grafana Tempo, pesquise 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 um trace completo de workflow.

Métricas


O Flowker expõe métricas HTTP e de sistema automaticamente via o SDK OpenTelemetry. Nenhuma configuração adicional é necessária além de habilitar a telemetria.

Métricas HTTP (via otelfiber)

Coletadas por rota pelo middleware otelfiber: Cada métrica possui os labels: http.method, http.route, http.status_code.

Métricas de sistema

Buckets de histograma

Os histogramas de latência utilizam os seguintes limites de bucket (em segundos):
O Flowker não expõe um endpoint de scrape do Prometheus (/metrics) diretamente. As métricas são exportadas via OTLP para o seu collector, que então encaminha para o Prometheus. Configure o seu OTLP collector para incluir um exporter prometheusremotewrite.

Logs estruturados


O Flowker utiliza logs JSON estruturados via Zap. Cada entrada de log é enriquecida com campos contextuais que podem ser indexados e consultados 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ções incompletas:
Execução com falha:

Probes de saúde


O Flowker expõe probes de liveness e readiness compatíveis com Kubernetes para monitoramento operacional. Liveness indica se o processo está em execução; readiness indica se as dependências (notadamente o banco de dados) estão acessíveis. Configure ambos no nível do cluster, como parte dos seus manifestos de deployment, para que a orquestração possa reiniciar pods não saudáveis e remover instâncias degradadas dos load balancers.

Dashboards do Grafana


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

Painéis recomendados

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