kube-prometheus-stack Helm chart, which bundles Prometheus, Alertmanager, Grafana, node-exporter, and related components.

kube-prometheus-stack into the monitoring namespace. A quick pod check shows Alertmanager, Prometheus, Grafana and other components running (one node-exporter pod is CrashLoopBackOff in this environment — not relevant to Argo CD scraping):
Expose Argo CD metrics to Prometheus
Argo CD exposes Prometheus metrics for several components (Application Controller, API Server, Repo Server, Notifications Controller, etc.). The Prometheus Operator discovers and scrapes services viaServiceMonitor custom resources. The Argo CD docs include example ServiceMonitor manifests that you can adapt.

ServiceMonitor from the Argo CD docs:
metadata.labels.release value on each ServiceMonitor must match the serviceMonitorSelector configured in your Prometheus custom resource (managed by the Prometheus Operator). If they don’t match, Prometheus will ignore the ServiceMonitor.
Find the ServiceMonitor selector configured for Prometheus
Inspect the Prometheus custom resource in themonitoring namespace to discover which labels it accepts for ServiceMonitor discovery:
ServiceMonitor objects with the label release: kode-kloud-prometheus-stack. Adjust your ServiceMonitor manifests to match.
ServiceMonitors for Argo CD
I createdServiceMonitor resources for Argo CD components and gave them the release label that matches the Prometheus selector (kode-kloud-prometheus-stack). These were applied to the argocd namespace.
Summary of applied ServiceMonitors:
Full YAML applied (already present in the cluster for this demo):
Apply ServiceMonitors
Apply the manifests into your Argo CD namespace. In this demo I applied them directly from a Gist:ServiceMonitor objects and reload configuration automatically. It can take a minute or two for targets to appear as up.

Working with Grafana dashboards
Argo CD provides a community Grafana dashboard (JSON) that you can import to visualize key metrics: number of applications, health, sync status, repository counts, and component-level metrics. You can import via JSON upload or by URL. A minimal snippet of the dashboard metadata:

ServiceMonitor targets, Grafana panels querying Prometheus will populate (applications synced/healthy, server/repo statistics, etc.).
Next steps — Alerting with Alertmanager
With metrics and dashboards in place, the next step is to author Prometheus alerting rules that detect conditions such as:- Application drift from desired state
- Unexpected auto-syncs or sync failures
- Repository errors or connection problems

Always ensure the
metadata.labels.release on your ServiceMonitor objects matches the serviceMonitorSelector.matchLabels.release value from your Prometheus CR. If they don’t match, Prometheus will not discover or scrape those ServiceMonitors.- Argo CD metrics documentation: https://argo-cd.readthedocs.io/en/stable/operator-manual/metrics/
- Prometheus Operator / kube-prometheus-stack: https://github.com/prometheus-operator/kube-prometheus
- kube-prometheus-stack Helm chart: https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack
- Grafana dashboard import docs: https://grafana.com/docs/grafana/latest/dashboards/manage-dashboards/import-export/