Skip to content

Monorepo Controller Metrics

Both Monorepo Controller and Monorepo Repo Server expose Prometheus metrics

Argocd Monorepo Controler Metrics

Metric Type Description
monorepo_app_info gauge Information about application.
monorepo_app_reconcile histogram Application reconciliation performance in seconds.
monorepo_repo_server_request_total counter Number of repo server requests executed during application reconciliation.
monorepo_repo_server_request_duration histogram Repo server requests duration.
monorepo_kubectl_requests_total counter Number of kubectl request results",
monorepo_kubectl_request_size_bytes histogram Size of kubectl requests
monorepo_kubectl_response_size_bytes histogram Size of kubectl responses
monorepo_kubectl_rate_limiter_duration_seconds histogram Kubectl rate limiter latency
monorepo_kubectl_request_duration_seconds histogram Request latency in seconds

ArgoCD Monorepo Repo Server Metrics

Metric Type Description
monorepo_getchangerevision_request_total counter Number of GetChangeRevision requests executed.
monorepo_getchangerevision_request_duration_seconds histogram GetChangeRevision requests duration seconds.
monorepo_git_request_total counter Number of git requests performed by repo server
monorepo_git_revlist_fail_total counter Number of git rev-list requests failures by repo server
monorepo_git_difftree_fail_total counter Number of git diff-tree requests failures by repo server
monorepo_git_request_duration_seconds histogram Git requests duration seconds
monorepo_repo_pending_request_total counter Number of pending requests requiring repository lock
monorepo_redis_request_total counter Number of redis requests executed.
monorepo_redis_request_duration_seconds histogram Redis requests duration seconds.

The server does not expose the gRPC metrics by default. Those metrics can be enabled using ARGOCD_ENABLE_GRPC_TIME_HISTOGRAM=true environment variable.

Prometheus Operator

If using Prometheus Operator, the following ServiceMonitor example manifests can be used. Add a namespace where Argo CD is installed and change metadata.labels.release to the name of label selected by your Prometheus.

---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: argocd-monorepo-controller
  labels:
    app.kubernetes.io/name: argocd-monorepo-controller
    app.kubernetes.io/component: monorepo-controller
    app.kubernetes.io/part-of: argocd
    release: prometheus-operator
spec:
  endpoints:
    - port: metrics
      interval: 30s
      path: /metrics
      honorLabels: false
  namespaceSelector:
    matchNames:
      - argocd
  selector:
    matchLabels:
      app.kubernetes.io/name: argocd-monorepo-controller-metrics
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: argocd-monorepo-controller
  labels:
    app.kubernetes.io/name: argocd-monorepo-controller
    app.kubernetes.io/component: monorepo-controller
    app.kubernetes.io/part-of: argocd
    release: prometheus-operator
spec:
  endpoints:
    - port: metrics
      interval: 30s
      path: /metrics
      honorLabels: false
  namespaceSelector:
    matchNames:
      - argocd
  selector:
    matchLabels:
      app.kubernetes.io/name: argocd-monorepo-controller-metrics

Grafana Dashboard

You can find an example Grafana dashboard here.