Send Flux Metrics to SigNoz using OpenTelemetry

SigNoz Cloud - This page applies to SigNoz Cloud editions.
Self-Host - This page applies to self-hosted SigNoz editions.

Use the OpenTelemetry Collector to scrape the Flux controllers' Prometheus endpoints and send metrics to SigNoz. The scrape captures reconciliation throughput, errors, duration, controller workqueues, runtime resource usage, and Kubernetes API traffic.

Prerequisites

Flux Metrics Endpoints

Flux controllers such as source, kustomize, helm, and notification expose Prometheus-format metrics on port 8080 at /metrics. Flux names the container port http-prom, and Flux's own PodMonitor selects that port.

The controllers emit three groups of metrics:

  • Flux reconciliation: per-resource reconciliation duration and counts
  • controller-runtime: reconcile totals, errors, active workers, and workqueue state
  • Runtime and API: CPU, memory, goroutines, and Kubernetes API client traffic

For metric names and labels, see the official Flux metrics reference.

Send Metrics to SigNoz

Step 1. Configure the OpenTelemetry Collector

Merge the following into your existing Collector config. It adds a Prometheus scrape job that discovers Flux controller pods by their http-prom port and an OTLP exporter pointing to SigNoz.

otel-collector-config.yaml
receivers:
  prometheus:
    config:
      scrape_configs:
        - job_name: 'flux-controllers'
          kubernetes_sd_configs:
            - role: pod
              namespaces:
                names:
                  - flux-system
          relabel_configs:
            - source_labels: [__meta_kubernetes_pod_container_port_name]
              action: keep
              regex: http-prom

exporters:
  otlphttp:
    endpoint: 'https://ingest.<region>.signoz.cloud:443'
    headers:
      signoz-ingestion-key: '<your-ingestion-key>'

service:
  pipelines:
    metrics:
      receivers: [prometheus]
      exporters: [otlphttp]

Verify these values:

The Collector needs ClusterRole permissions for Kubernetes pod discovery. The OpenTelemetry Collector on Kubernetes guide covers the required RBAC setup.

Step 2. Restart the Collector

kubectl rollout restart deployment/otel-collector -n <collector-namespace>

Step 3. Validate

After the Collector restarts:

  1. In SigNoz, go to Metrics > Metrics Explorer.
  2. Search for gotk_reconcile_duration_seconds to verify Flux reconciliation metrics are flowing.
  3. Search for controller_runtime_reconcile_total to verify controller-runtime metrics are flowing.

SigNoz shows metrics within the first scrape interval (default: 60 seconds).

Flux Metrics
Flux Metrics

Troubleshooting

No metrics in SigNoz

Verify the Collector pod has RBAC permissions to discover Kubernetes pods. Run:

kubectl logs deployment/otel-collector -n <collector-namespace>

Look for scrape errors or permission-denied messages.

Pods discovered but no metrics scraped

Confirm the Flux controllers expose the http-prom port. Run:

kubectl get pods -n flux-system -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[*].ports[*].name}{"\n"}{end}'

Each controller should list a port named http-prom.

Metrics delayed

The default Prometheus scrape interval is 60 seconds. Reduce it for faster feedback:

scrape_configs:
  - job_name: 'flux-controllers'
    scrape_interval: 15s
    # ...

Next steps

Get Help

If you need help with the steps in this topic, please reach out to us on SigNoz Community Slack.

If you are a SigNoz Cloud user, please use in product chat support located at the bottom right corner of your SigNoz instance or contact us at cloud-support@signoz.io.

Last updated: June 2, 2026

Edit on GitHub

Was this page helpful?

Your response helps us improve this page.