How-to · OpenTelemetry

How to Monitor ArgoCD with OpenTelemetry

Monitoring ArgoCD with OpenTelemetry means collecting its Prometheus-format metrics and controller logs through the OpenTelemetry Collector and OTLP, so GitOps sync health sits in the same observability pipeline as everything else..

Monitoring ArgoCD with OpenTelemetry means collecting its Prometheus-format metrics and controller logs through the OpenTelemetry Collector and OTLP, so GitOps sync health sits in the same observability pipeline as everything else.

What to observe in ArgoCD

ArgoCD is the control loop for GitOps delivery, so the signals are about whether the cluster is converging on what Git declares: application sync status (Synced vs OutOfSync), health status (Healthy, Degraded, Progressing), sync operation success and duration, and the performance of the repo-server and application controller that do the work. An application stuck OutOfSync or Degraded is a delivery incident, not just a dashboard colour.

The most actionable view is sync and health status per application over time, because a repeated failure to sync, or a drift that keeps reappearing, tells you delivery is broken in a way a one-off glance never would.

How OpenTelemetry collects it

ArgoCD exposes Prometheus-format metrics from its application controller, repo-server and API server. Scrape them with the Collector's prometheus receiver and collect the controller logs with the filelog receiver, then export over OTLP so ArgoCD's delivery health lives in the same pipeline as the workloads it deploys.

The setup detail is exposing the metrics ports for each ArgoCD component and pointing the prometheus receiver at all of them; the application controller carries the sync and health metrics, while repo-server metrics reveal the manifest-generation latency that often explains a slow sync.

ArgoCD metric names below are its standard Prometheus metrics; confirm against your ArgoCD version.

Key metrics to watch

The signals that explain most ArgoCD incidents:

SignalSourceWhat it tells you / watch for
argocd_app_infoapplication controllerCarries sync_status and health_status as labels; the source of truth for which apps are OutOfSync or Degraded.
argocd_app_sync_totalapplication controllerSync operations by result; a rising failed count means syncs are not completing.
argocd_app_reconcile (histogram)application controllerReconciliation duration; a climbing tail means the controller is struggling to keep up.
argocd_git_request_durationrepo-serverManifest generation and Git fetch latency; slow repo-server work makes syncs slow.
controller work queue depthapplication controllerA growing queue means reconciliation is falling behind across applications.

What to put on a dashboard

An ArgoCD dashboard should show delivery health at a glance. Row one: count of applications by sync status (OutOfSync is the alarm) and by health status (Degraded and stuck-Progressing). Row two: sync failures over time and reconciliation duration. Row three: repo-server request latency and controller queue depth, the two signals that explain a slow or backed-up delivery pipeline.

# applications not in sync
count(argocd_app_info{sync_status="OutOfSync"}) by (name)

# degraded applications
count(argocd_app_info{health_status="Degraded"}) by (name)

# sync failure rate
rate(argocd_app_sync_total{phase="Failed"}[15m]) by (name)

Reading the signals: common failure modes

Stuck OutOfSync

An application will not converge to the Git state and stays OutOfSync. Check the sync operation result and the app's conditions: the cause is usually a manifest that fails to apply, a missing dependency, or a resource the controller cannot prune. This is a real delivery failure, not noise.

Degraded application

Health status flips to Degraded because the deployed workload itself is unhealthy, for example pods failing readiness. ArgoCD reports the delivery succeeded but the result is unhealthy; correlate with the workload's own telemetry to find why.

Slow syncs from repo-server

Syncs take longer and longer, and repo-server request duration is high, because manifest generation or Git fetches are slow (large repos, heavy templating). Scale or tune the repo-server rather than assuming the cluster is the bottleneck.

Example alert conditions

Starting thresholds to tune:

ConditionSignalMeaning
app OutOfSync for > 15msyncDelivery is not converging.
app Degraded for > 10mhealthDeployed workload is unhealthy.
sync failure rate risingdeliverySyncs are failing repeatedly.
reconcile p95 climbingcontrollerController falling behind.

From monitoring to autonomous resolution

Ops Singularity's TelemetryOps ingests ArgoCD metrics over OpenTelemetry, and Sentinel AI can act on a failing sync or degraded application through a governed, reversible Action Ticket. Explore TelemetryOps.

Frequently asked questions

Does ArgoCD expose metrics for OpenTelemetry?

Yes. ArgoCD exposes Prometheus-format metrics from its controllers and API server, which the OpenTelemetry Collector can scrape with its prometheus receiver and export over OTLP.

What should I monitor in ArgoCD?

Application sync and health status, sync failures and durations, and repo-server and controller performance, so you can catch broken GitOps delivery early.

See autonomous operations on your own stack.

Bring a real incident. We will show you Sentinel investigate, act and verify end to end, with every action reversible and audited.

Request a Demo → See TelemetryOps