Overview
Flowker’s telemetry uses three signals:
Flowker exports all signals via OTLP (OpenTelemetry Protocol) to a collector of your choice.
Configuration
Environment variables control telemetry.
If you set
ENABLE_TELEMETRY=true without OTEL_EXPORTER_OTLP_ENDPOINT, Flowker will fail to start.Distributed tracing
Every HTTP request and internal operation creates an OpenTelemetry span. Spans propagate through the full execution chain. A single workflow run produces a connected trace from the HTTP handler down to individual executor steps.
Span naming convention
Spans follow a<layer>.<resource>.<operation> pattern:
Execution spans
Workflow command spans
Executor configuration spans
Provider configuration spans
Query spans
Metrics
Flowker exposes HTTP and system metrics automatically via the OpenTelemetry SDK. You only need to enable telemetry.
HTTP metrics (via otelfiber)
Collected per route by theotelfiber middleware:
Each metric carries labels:
http.request.method, http.route, http.response.status_code.
System metrics
Histogram buckets
Latency histograms use the OpenTelemetry SDK default bucket boundaries.http.server.duration values are in milliseconds, so the boundaries are:
Flowker does not expose a Prometheus scrape endpoint (
/metrics) directly. Flowker exports metrics via OTLP to your collector, which then forwards to Prometheus. Configure your OTLP collector to include a prometheusremotewrite exporter.Structured logging
Flowker uses structured JSON logging via Zap. Every log entry carries contextual fields. You can index and query these fields in Loki.
Log fields reference
Log levels
Set the
LOG_LEVEL environment variable to control verbosity.
Example log entries
Workflow execution started:Health probes
Flowker exposes Kubernetes-compatible liveness and readiness probes for operational monitoring. Liveness signals whether the process still runs. Readiness signals whether dependencies (notably the database) are reachable. Configure both at the cluster level as part of your deployment manifests. Orchestration can then restart unhealthy pods and remove degraded instances from load balancers.
Grafana dashboards
Flowker’s telemetry integrates directly with the Lerian observability stack. Pre-configured dashboards are available through the Lerian-managed Grafana instance.
Recommended panels
Request throughput- Query:
sum(rate(http_server_duration_count{service_name="flowker"}[5m])) by (http_route) - Shows requests per second, broken down by route
- Query:
histogram_quantile(0.95, sum(rate(http_server_duration_bucket{service_name="flowker"}[5m])) by (le, http_route)) - Shows the 95th percentile response time per route
- Query:
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])) - Shows the ratio of 5xx responses
- Loki query:
{service_name="flowker"} |= "Starting workflow execution" | count_over_time([1m])
For full observability stack setup, see Platform → Observability.

