Metrics collectors and configuration

The Red Hat Edge Manager service exposes Prometheus-compatible metrics through configurable collectors that you can enable or disable independently to balance monitoring coverage with system overhead.

Custom metrics from the system, device, fleet, repository, and resource sync collectors use the flightctl_* name prefix. The HTTP collector exposes standard OpenTelemetry HTTP server metrics (for example, the http_server_request_duration_seconds_* histogram series) and does not use that prefix.

Global metrics settings

The following settings apply to all metrics exposure:

  • enabled — Main switch to enable or disable all metrics (default: true).
  • address — HTTP endpoint for metrics exposure (default: ":15690").

Each collector in the following sections can be configured independently. Default values are shown for each collector.

System collector

Monitors system resource usage on the Red Hat Edge Manager server.

Metrics:

  • flightctl_cpu_utilization — CPU utilization percentage.
  • flightctl_memory_utilization — Memory consumption statistics.
  • flightctl_disk_utilization — Disk I/O operations and performance.

Configuration:

  • enabled — Enable or disable the system collector (default: true).
  • tickerInterval — Collection frequency (default: "5s").

HTTP collector

Tracks HTTP API performance and service level compliance. This collector uses OpenTelemetry and follows standard HTTP semantic conventions. Metrics are exported in Prometheus format.

Characteristics:

  • Captures HTTP request metrics as they occur.
  • Provides standard HTTP observability metrics.
  • Exports metrics in Prometheus format for integration with monitoring stacks.

Metrics:

In Prometheus exposition format, request duration is recorded as a histogram. Series names use the http_server_request_duration_seconds prefix with the usual Prometheus histogram suffixes:

  • http_server_request_duration_seconds_bucket — histogram buckets (seconds).
  • http_server_request_duration_seconds_sum — sum of observed durations (seconds).
  • http_server_request_duration_seconds_count — count of observations.

The example Flight Control API Grafana dashboard (in the contrib/grafana-dashboards/ directory of the Flight Control repository) queries http_server_request_duration_seconds_bucket and http_server_request_duration_seconds_count, for example to compute latency quantiles and request rates. Additional HTTP metric families can appear depending on the OpenTelemetry SDK and semantic convention version.

Labels:

Labels on these metrics follow OpenTelemetry stable HTTP conventions as exported to Prometheus. Examples include:

  • http_response_status_code — HTTP response status code (used by the example API dashboard queries to split success and error traffic).
  • http_request_method — HTTP request method.
  • http_route — HTTP route template, when available.

Resource and network attributes from the instrumentation can also appear as labels (for example, service_name).

Configuration:

  • enabled — Enable or disable HTTP metrics collection (default: true).

Device collector

Monitors device status and health across your fleet.

Metrics:

  • flightctl_devices_summary — Device counts by status and fleet.
  • flightctl_devices_application — Application deployment status across devices.
  • flightctl_devices_update — System update progress and status.

Labels:

  • organization_id — Organization identifier.
  • fleet — Fleet name or identifier.
  • status — Device or deployment status.

Configuration:

  • enabled — Enable or disable device metrics (default: true).
  • tickerInterval — Collection frequency (default: "30s").
  • groupByFleet — Group metrics by fleet (default: true).

Fleet collector

Tracks fleet management operations and status.

Metrics:

  • flightctl_fleets — Total number of fleets managed, grouped by organization and rollout status.

Labels:

  • organization_id — Organization identifier.
  • status — Fleet rollout status.

Configuration:

  • enabled — Enable or disable fleet metrics (default: true).
  • tickerInterval — Collection frequency (default: "30s").

Repository collector

Monitors repository counts per organization.

Metrics:

  • flightctl_repositories_total — Total number of repositories managed per organization.

Labels:

  • organization_id — Organization identifier.

Configuration:

  • enabled — Enable or disable repository metrics (default: true).
  • tickerInterval — Collection frequency (default: "30s").

Resource sync collector

Tracks synchronization between Red Hat Edge Manager and managed devices.

Metrics:

  • flightctl_resourcesyncs — Total number of resource syncs managed, grouped by organization and status.

Labels:

  • organization_id — Organization identifier.
  • status — Resource sync status.

Configuration:

  • enabled — Enable or disable resource sync metrics (default: true).
  • tickerInterval — Collection frequency (default: "30s").

Configuration examples

Minimal configuration:

{
  "metrics": {
    "enabled": true,
    "address": ":9090"
  }
}

Custom configuration:

{
  "metrics": {
    "enabled": true,
    "address": "0.0.0.0:9090",
    "systemCollector": {
      "enabled": true,
      "tickerInterval": "10s"
    },
    "httpCollector": {
      "enabled": true
    },
    "deviceCollector": {
      "enabled": true,
      "tickerInterval": "1m",
      "groupByFleet": false
    },
    "fleetCollector": {
      "enabled": false
    },
    "repositoryCollector": {
      "enabled": true,
      "tickerInterval": "5m"
    },
    "resourceSyncCollector": {
      "enabled": true,
      "tickerInterval": "30s"
    }
  }
}

Usage notes

  • Metric exposure — Metrics are available at the configured HTTP endpoint in Prometheus format.
  • Collection strategy — Periodic collectors run on configurable timers; HTTP metrics are captured in real time through OpenTelemetry instrumentation.
  • Prometheus integration — Prometheus or any compatible monitoring system can scrape these metrics.
  • Labels — Use labels such as organization_id, fleet, and status to filter and group metrics for dashboards and alerts.
  • Performance — Adjust tickerInterval to balance freshness with system load.