Overview
The Controller Manager runs background control loops that regulate cluster state (replica count, endpoint updates, node health checks, etc.).
Why it’s Useful
- Detects synchronization failures.
- Tracks how quickly cluster state converges to the desired state.
- Identifies unhealthy controllers that may cause outages.
What Users Can Do
- Monitor control loop activity.
- Tune scrape frequency for detailed visibility.
- Troubleshoot issues in workloads not scaling properly.
Steps to Configure
- Get the existing ConfigMap.
kubectl get cm opsramp-k8s-infra-metric-user-config -n <agent-installed-namespace> -o yaml - Edit the ConfigMap.
kubectl edit cm opsramp-k8s-infra-metric-user-config -n <agent-installed-namespace> - Locate the
kube_controller_managersection in ConfigMap.k8s_cluster: enabled: true config: scrape_interval: "2m" - Update the required parameters.
- Save and apply the changes.
Supported Metrics
| Metric Name | Display Name |
|---|---|
| workqueue_unfinished_work_seconds | Workqueue unfinished work seconds |
| cronjob_controller_job_creation_skew_duration_seconds | Cronjob controller job creation skew duration seconds |
| cronjob_controller_job_creation_skew_duration_seconds | Cronjob controller job creation skew duration seconds |
| cronjob_controller_job_creation_skew_duration_seconds | Cronjob controller job creation skew duration seconds |
| disabled_metrics | Disabled metrics |
| endpoint_slice_controller_changes | Endpoint slice controller changes |
| endpoint_slice_controller_desired_endpoint_slices | Endpoint slice controller desired endpoint slices |
| endpoint_slice_controller_endpoints_added_per_sync | Endpoint slice controller endpoints added per sync |
| endpoint_slice_controller_endpoints_added_per_sync | Endpoint slice controller endpoints added per sync |
| endpoint_slice_controller_endpoints_added_per_sync | Endpoint slice controller endpoints added per sync |
| endpoint_slice_controller_endpoints_desired | Endpoint slice controller endpoints desired |
| endpoint_slice_controller_endpoints_removed_per_sync | Endpoint slice controller endpoints removed per sync |
| endpoint_slice_controller_endpoints_removed_per_sync | Endpoint slice controller endpoints removed per sync |
| endpoint_slice_controller_endpoints_removed_per_sync | Endpoint slice controller endpoints removed per sync |
| endpoint_slice_controller_endpointslices_changed_per_sync | Endpoint slice controller endpointslices changed per sync |
| endpoint_slice_controller_endpointslices_changed_per_sync | Endpoint slice controller endpointslices changed per sync |
| endpoint_slice_controller_endpointslices_changed_per_sync | Endpoint slice controller endpointslices changed per sync |
| endpoint_slice_controller_num_endpoint_slices | Endpoint slice controller num endpoint slices |
| endpoint_slice_controller_syncs | Endpoint slice controller syncs |
| endpoint_slice_mirroring_controller_addresses_skipped_per_sync | Endpoint slice mirroring controller addresses skipped per sync |
| endpoint_slice_mirroring_controller_addresses_skipped_per_sync | Endpoint slice mirroring controller addresses skipped per sync |
| endpoint_slice_mirroring_controller_addresses_skipped_per_sync | Endpoint slice mirroring controller addresses skipped per sync |
| endpoint_slice_mirroring_controller_desired_endpoint_slices | Endpoint slice mirroring controller desired endpoint slices |
| endpoint_slice_mirroring_controller_endpoints_added_per_sync | Endpoint slice mirroring controller endpoints added per sync |
| endpoint_slice_mirroring_controller_endpoints_added_per_sync | Endpoint slice mirroring controller endpoints added per sync |
| endpoint_slice_mirroring_controller_endpoints_added_per_sync | Endpoint slice mirroring controller endpoints added per sync |
| endpoint_slice_mirroring_controller_endpoints_desired | Endpoint slice mirroring controller endpoints desired |
| endpoint_slice_mirroring_controller_endpoints_removed_per_sync | Endpoint slice mirroring controller endpoints removed per sync |
| endpoint_slice_mirroring_controller_endpoints_removed_per_sync | Endpoint slice mirroring controller endpoints removed per sync |
| endpoint_slice_mirroring_controller_endpoints_removed_per_sync | Endpoint slice mirroring controller endpoints removed per sync |
| endpoint_slice_mirroring_controller_endpoints_sync_duration | Endpoint slice mirroring controller endpoints sync duration |
| endpoint_slice_mirroring_controller_endpoints_sync_duration | Endpoint slice mirroring controller endpoints sync duration |
| endpoint_slice_mirroring_controller_endpoints_sync_duration | Endpoint slice mirroring controller endpoints sync duration |
| endpoint_slice_mirroring_controller_endpoints_updated_per_sync | Endpoint slice mirroring controller endpoints updated per sync |
| endpoint_slice_mirroring_controller_endpoints_updated_per_sync | Endpoint slice mirroring controller endpoints updated per sync |
| endpoint_slice_mirroring_controller_endpoints_updated_per_sync | Endpoint slice mirroring controller endpoints updated per sync |
| endpoint_slice_mirroring_controller_num_endpoint_slices | Endpoint slice mirroring controller num endpoint slices |
| ephemeral_volume_controller_create_failures | Ephemeral volume controller create failures |
| ephemeral_volume_controller_create | Ephemeral volume controller create |
| node_collector_unhealthy_nodes_in_zone | Node collector unhealthy nodes in zone |
| node_collector_zone_size | Node collector zone size |
| workqueue_adds | Workqueue adds total |
| workqueue_depth | Workqueue depth |
| workqueue_longest_running_processor_seconds | Workqueue longest running processor seconds |
| workqueue_queue_duration_seconds | Workqueue queue duration seconds |
| workqueue_queue_duration_seconds | Workqueue queue duration seconds |
| workqueue_retries | Workqueue retries |
| workqueue_work_duration_seconds | Workqueue work duration seconds |
| workqueue_work_duration_seconds | Workqueue work duration seconds |