---
title: Argo Workflows
description: Monitor the health and performance of Argo Workflows
breadcrumbs: Docs > Integrations > Argo Workflows
---

# Argo Workflows
Supported OS Integration version3.3.0
## Overview{% #overview %}

This check monitors [Argo Workflows](https://argo-workflows.readthedocs.io/en/stable/) through the Datadog Agent.

**Minimum Agent version:** 7.53.0

## Setup{% #setup %}

Follow the instructions below to install and configure this check for an Agent running in your Kubernetes environment. For more information about configuration in containerized environments, see the [Autodiscovery Integration Templates](https://docs.datadoghq.com/agent/kubernetes/integrations/) for guidance.

### Installation{% #installation %}

Starting from Agent release 7.53.0, the Argo Workflows check is included in the [Datadog Agent](https://app.datadoghq.com/account/settings/agent/latest) package. No additional installation is needed in your environment.

This check uses [OpenMetrics](https://docs.datadoghq.com/integrations/openmetrics/) to collect metrics from the OpenMetrics endpoint.

### Configuration{% #configuration %}

The Argo Workflows Workflow Controller has [Prometheus-formatted metrics](https://argo-workflows.readthedocs.io/en/stable/metrics/) available at `/metrics` on port `9090`. For the Agent to start collecting metrics, the Workflow Controller pod needs to be annotated. For more information about annotations, refer to the [Autodiscovery Integration Templates](https://docs.datadoghq.com/agent/kubernetes/integrations/) for guidance. You can find additional configuration options by reviewing the [sample argo_workflows.d/conf.yaml](https://github.com/DataDog/integrations-core/blob/master/argo_workflows/datadog_checks/argo_workflows/data/conf.yaml.example).

The only parameter required for configuring the Argo Workflows check is:

- `openmetrics_endpoint`: This parameter should be set to the location where the Prometheus-formatted metrics are exposed. The default port is `9090`. In containerized environments, `%%host%%` should be used for [host autodetection](https://docs.datadoghq.com/agent/kubernetes/integrations/).

```yaml
apiVersion: v1
kind: Pod
# (...)
metadata:
  name: '<POD_NAME>'
  annotations:
    ad.datadoghq.com/argo-workflows.checks: |
      {
        "argo_workflows": {
          "init_config": {},
          "instances": [
            {
              "openmetrics_endpoint": "http://%%host%%:9090/metrics"
            }
          ]
        }
      }
    # (...)
spec:
  containers:
    - name: 'argo-workflows'
# (...)
```

#### Log collection{% #log-collection %}

*Available for Agent versions >6.0*

Argo Workflows logs can be collected from the different Argo Workflows pods through Kubernetes. Collecting logs is disabled by default in the Datadog Agent. To enable it, see [Kubernetes Log Collection](https://docs.datadoghq.com/agent/kubernetes/log/).

See the [Autodiscovery Integration Templates](https://docs.datadoghq.com/agent/kubernetes/integrations/) for guidance on applying the parameters below.

| Parameter      | Value                                                       |
| -------------- | ----------------------------------------------------------- |
| `<LOG_CONFIG>` | `{"source": "argo_workflows", "service": "<SERVICE_NAME>"}` |

### Validation{% #validation %}

[Run the Agent's status subcommand](https://docs.datadoghq.com/agent/guide/agent-commands/#agent-status-and-information) and look for `argo_workflows` under the Checks section.

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **argo\_workflows.cronworkflows.concurrencypolicy\_triggered.count**(count) | Number of times concurrency policy triggered in cron workflows                                                                                                                                                                                             |
| **argo\_workflows.cronworkflows.triggered.count**(count)                    | Number of cron workflows triggered                                                                                                                                                                                                                         |
| **argo\_workflows.current\_workflows**(gauge)                               | Number of Workflows currently accessible by the controller by status (refreshed every 15s)                                                                                                                                                                 |
| **argo\_workflows.deprecated.feature**(gauge)                               | Indicates usage of deprecated features                                                                                                                                                                                                                     |
| **argo\_workflows.error.count**(count)                                      | Number of errors encountered by the controller by cause*Shown as error*                                                                                                                                                                                    |
| **argo\_workflows.go.gc.duration.seconds.count**(count)                     | The summary count of garbage collection cycles in the Argo Workflows instance                                                                                                                                                                              |
| **argo\_workflows.go.gc.duration.seconds.quantile**(gauge)                  | The pause duration of garbage collection cycles in the Argo Workflows instance by `quantile`                                                                                                                                                               |
| **argo\_workflows.go.gc.duration.seconds.sum**(count)                       | The sum of the pause duration of garbage collection cycles in the Argo Workflows instance*Shown as second*                                                                                                                                                 |
| **argo\_workflows.go.goroutines**(gauge)                                    | Number of goroutines that currently exist.                                                                                                                                                                                                                 |
| **argo\_workflows.go.info**(gauge)                                          | Information about the Go environment.                                                                                                                                                                                                                      |
| **argo\_workflows.go.memstats.alloc\_bytes**(gauge)                         | Number of bytes allocated and still in use.*Shown as byte*                                                                                                                                                                                                 |
| **argo\_workflows.go.memstats.alloc\_bytes.count**(count)                   | Total number of bytes allocated, even if freed.*Shown as byte*                                                                                                                                                                                             |
| **argo\_workflows.go.memstats.buck\_hash.sys\_bytes**(gauge)                | Number of bytes used by the profiling bucket hash table.*Shown as byte*                                                                                                                                                                                    |
| **argo\_workflows.go.memstats.frees.count**(count)                          | Total number of frees.                                                                                                                                                                                                                                     |
| **argo\_workflows.go.memstats.gc.sys\_bytes**(gauge)                        | Number of bytes used for garbage collection system metadata.*Shown as byte*                                                                                                                                                                                |
| **argo\_workflows.go.memstats.heap.alloc\_bytes**(gauge)                    | Number of heap bytes allocated and still in use.*Shown as byte*                                                                                                                                                                                            |
| **argo\_workflows.go.memstats.heap.idle\_bytes**(gauge)                     | Number of heap bytes waiting to be used.*Shown as byte*                                                                                                                                                                                                    |
| **argo\_workflows.go.memstats.heap.inuse\_bytes**(gauge)                    | Number of heap bytes that are in use.*Shown as byte*                                                                                                                                                                                                       |
| **argo\_workflows.go.memstats.heap.objects**(gauge)                         | Number of allocated objects.                                                                                                                                                                                                                               |
| **argo\_workflows.go.memstats.heap.released\_bytes**(gauge)                 | Number of heap bytes released to OS.*Shown as byte*                                                                                                                                                                                                        |
| **argo\_workflows.go.memstats.heap.sys\_bytes**(gauge)                      | Number of heap bytes obtained from system.*Shown as byte*                                                                                                                                                                                                  |
| **argo\_workflows.go.memstats.last\_gc\_time\_seconds**(gauge)              | Number of seconds since 1970 of last garbage collection.*Shown as second*                                                                                                                                                                                  |
| **argo\_workflows.go.memstats.lookups.count**(count)                        | Total number of pointer lookups.                                                                                                                                                                                                                           |
| **argo\_workflows.go.memstats.mallocs.count**(count)                        | Total number of mallocs.                                                                                                                                                                                                                                   |
| **argo\_workflows.go.memstats.mcache.inuse\_bytes**(gauge)                  | Number of bytes in use by mcache structures.*Shown as byte*                                                                                                                                                                                                |
| **argo\_workflows.go.memstats.mcache.sys\_bytes**(gauge)                    | Number of bytes used for mcache structures obtained from system.*Shown as byte*                                                                                                                                                                            |
| **argo\_workflows.go.memstats.mspan.inuse\_bytes**(gauge)                   | Number of bytes in use by mspan structures.*Shown as byte*                                                                                                                                                                                                 |
| **argo\_workflows.go.memstats.mspan.sys\_bytes**(gauge)                     | Number of bytes used for mspan structures obtained from system.*Shown as byte*                                                                                                                                                                             |
| **argo\_workflows.go.memstats.next.gc\_bytes**(gauge)                       | Number of heap bytes when next garbage collection will take place.*Shown as byte*                                                                                                                                                                          |
| **argo\_workflows.go.memstats.other.sys\_bytes**(gauge)                     | Number of bytes used for other system allocations.*Shown as byte*                                                                                                                                                                                          |
| **argo\_workflows.go.memstats.stack.inuse\_bytes**(gauge)                   | Number of bytes in use by the stack allocator.*Shown as byte*                                                                                                                                                                                              |
| **argo\_workflows.go.memstats.stack.sys\_bytes**(gauge)                     | Number of bytes obtained from system for stack allocator.*Shown as byte*                                                                                                                                                                                   |
| **argo\_workflows.go.memstats.sys\_bytes**(gauge)                           | Number of bytes obtained from system.*Shown as byte*                                                                                                                                                                                                       |
| **argo\_workflows.go.threads**(gauge)                                       | Number of OS threads created.                                                                                                                                                                                                                              |
| **argo\_workflows.is\_leader**(gauge)                                       | Indicates if the current instance is the leader                                                                                                                                                                                                            |
| **argo\_workflows.k8s\_request.count**(count)                               | Number of kubernetes requests executed. [https://argo-workflows.readthedocs.io/en/release-3.5/metrics/#argo_workflows_k8s_request_total](https://argo-workflows.readthedocs.io/en/release-3.5/metrics/#argo_workflows_k8s_request_total)*Shown as request* |
| **argo\_workflows.k8s\_request.duration.bucket**(count)                     | Count of Kubernetes request durations split into buckets by upper bounds                                                                                                                                                                                   |
| **argo\_workflows.k8s\_request.duration.count**(count)                      | Total count of Kubernetes request durations                                                                                                                                                                                                                |
| **argo\_workflows.k8s\_request.duration.sum**(count)                        | Sum of Kubernetes request durations*Shown as second*                                                                                                                                                                                                       |
| **argo\_workflows.log\_messages.count**(count)                              | Total number of log messages.*Shown as message*                                                                                                                                                                                                            |
| **argo\_workflows.operation\_duration\_seconds.bucket**(count)              | The count of observations in the histogram of durations of operations split into buckets by upper bound.                                                                                                                                                   |
| **argo\_workflows.operation\_duration\_seconds.count**(count)               | The total count of observations in the histogram of durations of operations                                                                                                                                                                                |
| **argo\_workflows.operation\_duration\_seconds.sum**(count)                 | Total time in seconds spent on operations*Shown as second*                                                                                                                                                                                                 |
| **argo\_workflows.pod.pending.count**(count)                                | Number of pending pods                                                                                                                                                                                                                                     |
| **argo\_workflows.pods**(gauge)                                             | Number of Pods from Workflows currently accessible by the controller by status (refreshed every 15s)                                                                                                                                                       |
| **argo\_workflows.pods\_total.count**(count)                                | Total count of pods                                                                                                                                                                                                                                        |
| **argo\_workflows.queue.duration.bucket**(count)                            | Count of queue durations split into buckets by upper bounds                                                                                                                                                                                                |
| **argo\_workflows.queue.duration.count**(count)                             | Total count of queue durations                                                                                                                                                                                                                             |
| **argo\_workflows.queue.duration.sum**(count)                               | Sum of queue durations*Shown as second*                                                                                                                                                                                                                    |
| **argo\_workflows.queue.longest\_running**(gauge)                           | Duration of the longest running queue                                                                                                                                                                                                                      |
| **argo\_workflows.queue.retries.count**(count)                              | Number of queue retries                                                                                                                                                                                                                                    |
| **argo\_workflows.queue.unfinished\_work**(gauge)                           | Unfinished work in the queue                                                                                                                                                                                                                               |
| **argo\_workflows.queue\_adds.count**(count)                                | Adds to the queue                                                                                                                                                                                                                                          |
| **argo\_workflows.queue\_depth**(gauge)                                     | Depth of the queue                                                                                                                                                                                                                                         |
| **argo\_workflows.queue\_latency.bucket**(count)                            | The count of observations for the time that objects spend waiting in the queue. Split into buckets by upper bounds                                                                                                                                         |
| **argo\_workflows.queue\_latency.count**(count)                             | The total count of observations for the time that objects spend waiting in the queue.                                                                                                                                                                      |
| **argo\_workflows.queue\_latency.sum**(count)                               | The total time that objects spend waiting in the queue.*Shown as second*                                                                                                                                                                                   |
| **argo\_workflows.total.count**(count)                                      | Total count of workflows                                                                                                                                                                                                                                   |
| **argo\_workflows.version**(gauge)                                          | Argo Workflows version                                                                                                                                                                                                                                     |
| **argo\_workflows.workers\_busy**(gauge)                                    | Number of workers currently busy*Shown as worker*                                                                                                                                                                                                          |
| **argo\_workflows.workflow\_condition**(gauge)                              | Workflow condition. [https://argo-workflows.readthedocs.io/en/release-3.5/metrics/#argo_workflows_workflow_condition](https://argo-workflows.readthedocs.io/en/release-3.5/metrics/#argo_workflows_workflow_condition)                                     |
| **argo\_workflows.workflows\_processed.count**(count)                       | Number of workflow updates processed                                                                                                                                                                                                                       |
| **argo\_workflows.workflowtemplate.runtime**(gauge)                         | Runtime of the workflow template                                                                                                                                                                                                                           |
| **argo\_workflows.workflowtemplate.triggered.count**(count)                 | Number of times workflow templates triggered                                                                                                                                                                                                               |

### Events{% #events %}

The Argo Workflows integration does not include any events.

### Service Checks{% #service-checks %}

**argo\_workflows.openmetrics.health**

Returns `CRITICAL` if the check cannot access the OpenMetrics metrics endpoint of Argo Workflows.

*Statuses: ok, critical*

## Troubleshooting{% #troubleshooting %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
