Visão geral
A telemetria do Flowker é construída sobre três sinais:
| Sinal | Backend | O que cobre |
|---|---|---|
| Traces | Tempo | Spans distribuídos por execuções de workflows e steps |
| Métricas | Prometheus | Taxas de requisições HTTP, latência e uso de recursos do sistema |
| Logs | Loki | Logs JSON estruturados para cada operação |
Configuração
A telemetria é controlada por variáveis de ambiente.
Se
ENABLE_TELEMETRY=true estiver configurado sem OTEL_EXPORTER_OTLP_ENDPOINT, o Flowker falhará ao iniciar.Rastreamento distribuído
Cada requisição HTTP e operação interna cria um span do 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 HTTP handler até os steps individuais do executor.
Convenção de nomes de spans
Os spans seguem o padrão<camada>.<recurso>.<operação>:
Spans de execução
| Nome do span | Descrição |
|---|---|
command.execution.execute | Span raiz para uma execução de workflow |
command.execution.execute_executor_node | Span para cada nó executor processado |
command.execution.execute_with_provider_config | Span para um nó resolvido com uma configuração de provider específica |
command.execution.recover | Span para recuperação de execuções incompletas na inicialização |
| Nome do span | Descrição |
|---|---|
command.workflow.create | Criar um novo workflow |
command.workflow.update | Atualizar um workflow existente |
command.workflow.activate | Ativar um workflow |
command.workflow.deactivate | Desativar um workflow |
command.workflow.clone | Clonar um workflow |
command.workflow.delete | Excluir um workflow |
| Nome do span | Descrição |
|---|---|
command.executor_config.create | Criar configuração de executor |
command.executor_config.update | Atualizar configuração de executor |
command.executor_config.activate | Ativar configuração de executor |
command.executor_config.enable | Habilitar configuração de executor |
command.executor_config.disable | Desabilitar configuração de executor |
command.executor_config.mark_configured | Marcar executor como configurado |
command.executor_config.mark_tested | Marcar executor como testado |
command.executor_config.test_connectivity | Testar conectividade do executor |
command.executor_config.delete | Excluir configuração de executor |
| Nome do span | Descrição |
|---|---|
command.provider_config.create | Criar configuração de provider |
command.provider_config.update | Atualizar configuração de provider |
command.provider_config.enable | Habilitar configuração de provider |
command.provider_config.disable | Desabilitar configuração de provider |
command.provider_config.test_connectivity | Testar conectividade do provider |
command.provider_config.delete | Excluir configuração de provider |
| Nome do span | Descrição |
|---|---|
query.execution.get | Obter execução por ID |
query.execution.list | Listar execuções |
query.execution.get_results | Obter resultados de execução |
query.workflow.get | Obter workflow por ID |
query.workflow.get_by_name | Obter workflow por nome |
query.workflow.list | Listar workflows |
query.executor_config.get | Obter configuração de executor por ID |
query.executor_config.get_by_name | Obter configuração de executor por nome |
query.executor_config.list | Listar configurações de executor |
query.executor_config.exists | Verificar existência de configuração de executor |
query.executor_config.exists_by_name | Verificar existência de configuração de executor por nome |
query.provider_config.get | Obter configuração de provider por ID |
query.provider_config.list | Listar configurações de provider |
Métricas
O Flowker expõe métricas HTTP e do sistema automaticamente via SDK do OpenTelemetry. Nenhuma configuração adicional é necessária além de habilitar a telemetria.
Métricas HTTP (via otelfiber)
Coletadas por rota pelo middlewareotelfiber:
| Métrica | Tipo | Descrição |
|---|---|---|
http.server.duration | Histograma | Duração da requisição em milissegundos |
http.server.request.size | Histograma | Tamanho do payload da requisição em bytes |
http.server.response.size | Histograma | Tamanho do payload da resposta em bytes |
http.server.active_requests | UpDownCounter | Número de requisições em andamento |
http.method, http.route, http.status_code.
Métricas do sistema
| Métrica | Tipo | Unidade | Descrição |
|---|---|---|---|
system.cpu.usage | Gauge | percentual | Uso de CPU do host do processo |
system.mem.usage | Gauge | percentual | Uso de memória do host do processo |
Buckets de histograma
Histogramas de latência usam os seguintes limites de bucket (em segundos):O Flowker não expõe um endpoint de scraping do Prometheus (
/metrics) diretamente. As métricas são exportadas via OTLP para o seu collector, que as repassa ao Prometheus. Configure seu collector OTLP para incluir um exportador prometheusremotewrite.Logging estruturado
O Flowker usa logging JSON estruturado via Zap. Cada entrada de log é enriquecida com campos contextuais que podem ser indexados e consultados no Loki.
Referência de campos de log
| Campo | Descrição | Exemplo |
|---|---|---|
operation | Nome do span/operação | command.execution.execute |
workflow.id | Identificador do workflow | wf_abc123 |
execution.id | Identificador da execução | exec_xyz789 |
node.id | Identificador do nó dentro de um workflow | node-payment |
executor.id | Identificador do executor | exec_cfg_001 |
error.message | Descrição do erro quando aplicável | database ping failed: ... |
Níveis de log
| Nível | Quando usado |
|---|---|
debug | Estado interno detalhado — apenas para desenvolvimento |
info | Marcos normais de operação (execução iniciada, recuperada, etc.) |
warn | Problemas recuperáveis ou condições inesperadas mas não fatais |
error | Falhas de operação que requerem atenção |
LOG_LEVEL para controlar a verbosidade.
Exemplos de entradas de log
Execução de workflow iniciada:Endpoints de saúde
O Flowker expõe três endpoints de saúde para monitoramento operacional e configuração de probes do Kubernetes.
GET /health
Verificação de saúde combinada. Retorna o status do serviço, versão, uptime e verificações de dependências. Resposta (saudável):GET /health/live
Probe de liveness do Kubernetes. Retorna200 OK se o processo está em execução. Não verifica dependências.
GET /health/ready
Probe de readiness do Kubernetes. Retorna200 OK quando todas as dependências estão saudáveis. Retorna 503 Service Unavailable quando o banco de dados está indisponível.
Configuração de probes do Kubernetes
Dashboards do Grafana
A telemetria do Flowker se integra diretamente com o stack de observabilidade da Lerian. Dashboards pré-configurados estão disponíveis através da instância do 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, por rota
- Query:
histogram_quantile(0.95, sum(rate(http_server_duration_bucket{service_name="flowker"}[5m])) by (le, http_route)) - Mostra o percentil 95 do tempo de resposta por rota
- 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
- Loki query:
{service_name="flowker"} |= "Starting workflow execution" | count_over_time([1m])
Para a configuração completa do stack de observabilidade, consulte Plataforma → Observabilidade.

