Alert Runbooks

ConfigReloaderSidecarErrors

ConfigReloaderSidecarErrors

Description

This alert fires when the config-reloader sidecar container is repeatedly failing to reload configuration for a monitored component (e.g. Prometheus, Alertmanager, or other Prometheus Operator-managed resources).
The config-reloader watches ConfigMaps and Secrets for changes and triggers a configuration reload in the main container. Errors here mean that the latest configuration changes are not being applied, which may cause the component to run with stale or incorrect configuration.


Possible Causes:


Severity estimation

Low to Medium severity on its own, but can escalate quickly.

The main risk is a silent drift: the monitored component keeps running with the last valid config while new alert rules, scrape configs, or routing changes go unnoticed as unapplied.


Troubleshooting steps

  1. Identify the affected component and namespace

    • Command / Action:
      • Check which pod is triggering the alert by inspecting the alert labels (namespace, pod, container)
      • kubectl get pods -n <namespace> | grep -E ‘prometheus|alertmanager’

    • Expected result:
      • You can identify the pod containing the config-reloader sidecar
    • additional info:
      • The sidecar is typically named config-reloader and runs alongside prometheus or alertmanager containers

  1. Check config-reloader sidecar logs

    • Command / Action:
      • Inspect the sidecar’s log output for error messages
      • kubectl logs <pod-name> -n <namespace> -c config-reloader

      • kubectl logs <pod-name> -n <namespace> -c config-reloader –previous

    • Expected result:
      • Logs show successful reloads: "reloaded config file" or similar success messages
    • additional info:
      • Common error patterns: error reloading config, connection refused, permission denied

  1. Check the main container logs for reload errors

    • Command / Action:
      • The main app may log the reason it rejected the config reload
      • kubectl logs <pod-name> -n <namespace> -c prometheus

      • kubectl logs <pod-name> -n <namespace> -c alertmanager

    • Expected result:
      • No configuration parse or validation errors in the main container logs
    • additional info:
      • Prometheus typically logs "Loading configuration file" on reload; look for lines like "Error loading config" or "invalid config"

  1. Validate the configuration content

    • Command / Action:
      • Identify and inspect the ConfigMap or Secret being reloaded
      • kubectl get configmap -n <namespace> | grep prometheus

      • kubectl describe configmap <configmap-name> -n <namespace>

    • Expected result:
      • Configuration is syntactically valid YAML with no obvious errors
    • additional info:
      • For Prometheus, use promtool check config locally against the config file to validate before applying

  1. Check RBAC permissions for the sidecar

    • Command / Action:
      • Verify the ServiceAccount has permission to read the relevant ConfigMap/Secret
      • kubectl auth can-i get configmaps -n <namespace> –as=system:serviceaccount:<namespace>:<serviceaccount-name>

    • Expected result:
      • Returns yes
    • additional info:
      • If no, inspect the ClusterRole/Role bound to the ServiceAccount and add the missing permissions

  1. Verify the reload endpoint is reachable

    • Command / Action:
      • Confirm the main container’s reload HTTP endpoint is responding
      • kubectl exec <pod-name> -n <namespace> -c config-reloader – wget -qO- http://localhost:<port>/-/reload

    • Expected result:
      • Returns HTTP 200 or a success message
    • additional info:
      • Default reload ports: Prometheus 9090, Alertmanager 9093. If the main container is down, fix that first

  1. Check recent changes to PrometheusRules or Alertmanager configs

    • Command / Action:
      • Look for recently modified PrometheusRule or AlertmanagerConfig custom resources
      • kubectl get prometheusrule -n <namespace>

      • kubectl describe prometheusrule <rule-name> -n <namespace>

    • Expected result:
      • All rules are valid and well-formed
    • additional info:
      • A broken PrometheusRule will cause all pending config reloads to fail until it is fixed or removed

  1. Describe the pod for sidecar-level events

    • Command / Action:
      • Check pod events for OOMKill, probe failures, or restart signals on the sidecar
      • kubectl describe pod <pod-name> -n <namespace>

    • Expected result:
      • No abnormal events on the config-reloader container
    • additional info:
      • If the sidecar itself is crash-looping, treat this as a KubePodCrashLooping scenario for that container

Additional resources