Skip to main content
APA
Sponsored byCAST AI — Kubernetes cost optimizationBetter Stack — Uptime monitoring and log managementVictoriaMetrics — Fast, open-source time series database and drop-in Prometheus replacement.

ArgoCD logoArgoCD Prometheus Alert Rules

9 Prometheus alerting rules for ArgoCD.Exported via Embedded exporter.These rules cover critical and warning conditions — copy and paste the YAML into your Prometheus configuration.

⚠️

Alert thresholds depend on the nature of your applications. Some queries may have arbitrary tolerance thresholds. Building an efficient monitoring platform takes time. 😉

8.2.ArgoCD logoEmbedded exporter(9 rules)

wget https://raw.githubusercontent.com/samber/awesome-prometheus-alerts/refs/heads/master/dist/rules/argocd/embedded-exporter.yml
warning

8.2.1.ArgoCD service not synced

Service {{ $labels.name }} run by argo is currently not in sync.

- alert: ArgoCDServiceNotSynced
  expr: argocd_app_info{sync_status!="Synced"} != 0
  for: 15m
  labels:
    severity: warning
  annotations:
    summary: ArgoCD service not synced (instance {{ $labels.instance }})
    description: "Service {{ $labels.name }} run by argo is currently not in sync.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

8.2.2.ArgoCD service unhealthy

Service {{ $labels.name }} run by argo is currently not healthy.

- alert: ArgoCDServiceUnhealthy
  expr: argocd_app_info{health_status!~"Healthy|Progressing"} != 0
  for: 15m
  labels:
    severity: warning
  annotations:
    summary: ArgoCD service unhealthy (instance {{ $labels.instance }})
    description: "Service {{ $labels.name }} run by argo is currently not healthy.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

8.2.3.ArgoCD application sync failed

ArgoCD application {{ $labels.name }} failed to sync (phase {{ $labels.phase }}) in project {{ $labels.project }}, check the application controller logs for the root cause.

- alert: ArgoCDApplicationSyncFailed
  expr: sum(increase(argocd_app_sync_total{phase!="Succeeded"}[10m])) by (name, phase, project) > 0
  for: 1m
  labels:
    severity: warning
  annotations:
    summary: ArgoCD application sync failed (instance {{ $labels.instance }})
    description: "ArgoCD application {{ $labels.name }} failed to sync (phase {{ $labels.phase }}) in project {{ $labels.project }}, check the application controller logs for the root cause.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

8.2.4.ArgoCD cluster connection error

ArgoCD lost connection to the managed Kubernetes cluster {{ $labels.server }}, sync operations targeting this cluster will fail until connectivity is restored.

- alert: ArgoCDClusterConnectionError
  expr: argocd_cluster_connection_status < 1
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: ArgoCD cluster connection error (instance {{ $labels.instance }})
    description: "ArgoCD lost connection to the managed Kubernetes cluster {{ $labels.server }}, sync operations targeting this cluster will fail until connectivity is restored.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

8.2.5.ArgoCD git fetch failures

ArgoCD is failing to fetch git repository {{ $labels.repo }}, which will block application sync and manifest generation.

- alert: ArgoCDGitFetchFailures
  expr: sum(rate(argocd_git_fetch_fail_total[5m])) by (repo) > 0
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: ArgoCD git fetch failures (instance {{ $labels.instance }})
    description: "ArgoCD is failing to fetch git repository {{ $labels.repo }}, which will block application sync and manifest generation.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

8.2.6.ArgoCD high gRPC error rate

More than 5% of gRPC requests handled by ArgoCD are failing ({{ $value | humanize }}%), indicating degraded health of the API server or repo server.

- alert: ArgoCDHighGRPCErrorRate
  expr: sum(rate(grpc_server_handled_total{grpc_code=~"Internal|Unavailable|DeadlineExceeded|ResourceExhausted|Aborted|Unknown"}[5m])) / sum(rate(grpc_server_handled_total[5m])) * 100 > 5 and sum(rate(grpc_server_handled_total[5m])) > 0
  for: 10m
  labels:
    severity: warning
  annotations:
    summary: ArgoCD high gRPC error rate (instance {{ $labels.instance }})
    description: "More than 5% of gRPC requests handled by ArgoCD are failing ({{ $value | humanize }}%), indicating degraded health of the API server or repo server.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

8.2.7.ArgoCD repo server too many pending requests

ArgoCD repo server has more than 50 requests pending on the repository lock for {{ $labels.repo }}, indicating the repo server is overloaded and manifest generation is being delayed.

  # 50 is a rough default; scales with your number of managed apps and sync frequency — adjust based on your workload.
- alert: ArgoCDRepoServerTooManyPendingRequests
  expr: argocd_repo_pending_request_total > 50
  for: 10m
  labels:
    severity: warning
  annotations:
    summary: ArgoCD repo server too many pending requests (instance {{ $labels.instance }})
    description: "ArgoCD repo server has more than 50 requests pending on the repository lock for {{ $labels.repo }}, indicating the repo server is overloaded and manifest generation is being delayed.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

8.2.8.ArgoCD repo server slow git operations

The 95th percentile duration of git operations against repository {{ $labels.repo }} is above 30 seconds, which can be caused by a large repository, network latency, or an overloaded repo server.

  # 30s threshold is a rough default; depends on your repository size and network latency to the git host — adjust based on your baseline.
- alert: ArgoCDRepoServerSlowGitOperations
  expr: histogram_quantile(0.95, sum(rate(argocd_git_request_duration_seconds_bucket[5m])) by (le, repo)) > 30
  for: 10m
  labels:
    severity: warning
  annotations:
    summary: ArgoCD repo server slow git operations (instance {{ $labels.instance }})
    description: "The 95th percentile duration of git operations against repository {{ $labels.repo }} is above 30 seconds, which can be caused by a large repository, network latency, or an overloaded repo server.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

8.2.9.ArgoCD application controller slow reconciliation

The 95th percentile application reconciliation duration is above 60 seconds, which can delay drift detection and slow down sync operations across the cluster.

  # 60s threshold is a rough default; depends on your number of managed apps and manifest complexity — adjust based on your workload.
- alert: ArgoCDApplicationControllerSlowReconciliation
  expr: histogram_quantile(0.95, sum(rate(argocd_app_reconcile_bucket[5m])) by (le)) > 60
  for: 10m
  labels:
    severity: warning
  annotations:
    summary: ArgoCD application controller slow reconciliation (instance {{ $labels.instance }})
    description: "The 95th percentile application reconciliation duration is above 60 seconds, which can delay drift detection and slow down sync operations across the cluster.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"