SigNoz Cloud - This page is relevant for SigNoz Cloud editions.
Self-Host - This page is relevant for self-hosted SigNoz editions.

Monitor ArgoCD with SigNoz

Overview

ArgoCD exposes Prometheus-format metrics from five components. This guide shows you how to collect those metrics with an OpenTelemetry Collector and send them to SigNoz.

Prerequisites

Setup

Step 1. Set environment variables

export SIGNOZ_OTLP_ENDPOINT="https://ingest.<region>.signoz.cloud:443"
export SIGNOZ_INGESTION_KEY="<your-ingestion-key>"

Step 2. Configure the collector

Append the prometheus receiver and resource/argocd processor to your collector config.yaml. Replace each target with the actual host:port where the ArgoCD component is reachable:

config.yaml
receivers:
  # ... existing receivers ...
  prometheus:
    config:
      global:
        scrape_interval: 60s
        scrape_timeout: 30s
      scrape_configs:
        # Application Controller: sync/health state of all ArgoCD applications
        - job_name: argocd-metrics
          metrics_path: /metrics
          scheme: http
          static_configs:
            - targets:
                - <argocd-host>:8082
              labels:
                argocd_component: application-controller

        # API Server: gRPC/REST request counts and latencies
        - job_name: argocd-server-metrics
          metrics_path: /metrics
          scheme: http
          static_configs:
            - targets:
                - <argocd-host>:8083
              labels:
                argocd_component: api-server

        # Repo Server: Git fetch and manifest generation performance
        - job_name: argocd-repo-server-metrics
          metrics_path: /metrics
          scheme: http
          static_configs:
            - targets:
                - <argocd-host>:8084
              labels:
                argocd_component: repo-server

        # ApplicationSet Controller: template rendering and set reconciliation
        - job_name: argocd-applicationset-controller-metrics
          metrics_path: /metrics
          scheme: http
          static_configs:
            - targets:
                - <argocd-host>:8080
              labels:
                argocd_component: applicationset-controller

        # Notifications Controller: notification delivery and trigger activity
        - job_name: argocd-notifications-controller-metrics
          metrics_path: /metrics
          scheme: http
          static_configs:
            - targets:
                - <argocd-host>:9001
              labels:
                argocd_component: notifications-controller

processors:
  # ... existing processors ...
  resource/argocd:
    attributes:
      - key: service.name
        value: argocd
        action: upsert

exporters:
  # ... existing exporters ...
  otlp:
    endpoint: ${env:SIGNOZ_OTLP_ENDPOINT}
    headers:
      signoz-ingestion-key: ${env:SIGNOZ_INGESTION_KEY}
    tls:
      insecure: false

Add them to your metrics pipeline:

config.yaml
service:
  pipelines:
    metrics:
      receivers: [..., prometheus]
      processors: [..., resource/argocd, batch]
      exporters: [..., otlp]

Step 3. Run the collector

otelcol-contrib --config config.yaml

Advanced Configuration (Optional)

Filter internal metrics

Drop OTel Collector self-telemetry and Prometheus scrape metadata before sending to SigNoz. Append the filter/drop_internal processor and add it to your pipeline:

processors:
  # ... existing processors ...
  filter/drop_internal:
    error_mode: ignore
    metric_conditions:
      - 'IsMatch(metric.name, "^otelcol_.*")'
      - 'IsMatch(metric.name, "^scrape_.*")'
      - 'metric.name == "up"'

Include it in your pipeline before the batch processor:

service:
  pipelines:
    metrics:
      receivers: [..., prometheus]
      processors: [..., resource/argocd, filter/drop_internal, batch]
      exporters: [..., otlp]

Validate

  1. Go to Metrics in SigNoz.
  2. Search for argocd_app_info or any argocd_-prefixed metric.
  3. Confirm the argocd_component label appears on the metrics.

Dashboard

Import the pre-built ArgoCD dashboard to visualize application health, sync status, controller performance, and repository activity. See the ArgoCD Dashboard page for import instructions and a full description of panels.

Troubleshooting

No metrics appearing:

  1. Verify the collector reaches the ArgoCD metrics endpoints:
kubectl port-forward svc/argocd-metrics 8082:8082 -n argocd
curl localhost:8082/metrics
  1. Check collector logs for scrape errors:
kubectl logs -n otel-collector <collector-pod-name>
  1. Confirm service names and ports match your ArgoCD deployment.

Missing component metrics:

Verify the relevant ArgoCD component is running. Some components expose metrics only when enabled (for example, ApplicationSet Controller, Notifications Controller).

Dashboard showing no data:

Confirm the service.name resource attribute equals argocd. The dashboard queries filter on this label.

Next Steps

  • Set up alerts on key ArgoCD metrics such as argocd_app_info health status or out-of-sync application counts.
  • Explore the ArgoCD Dashboard panels for controller performance and repository server activity.

Get Help

If you need help with the steps in this topic, please reach out to us on SigNoz Community Slack.

If you are a SigNoz Cloud user, please use in product chat support located at the bottom right corner of your SigNoz instance or contact us at cloud-support@signoz.io.

Last updated: April 27, 2026

Edit on GitHub

Was this page helpful?

Your response helps us improve this page.