---
title: Helm Check
description: Track your Helm deployments with Datadog
breadcrumbs: Docs > Integrations > Helm Check
---

# Helm Check
Supported OS Integration version1.0.0
## Overview{% #overview %}

This check monitors Helm deployments through the Datadog Agent.

Helm supports multiple storage backends. In v3, Helm defaults to Kubernetes secrets and in v2, Helm defaults to ConfigMaps. This check supports both options.

## Setup{% #setup %}

### Installation{% #installation %}

The Helm check is included in the [Datadog Agent](https://docs.datadoghq.com/agent/kubernetes/integrations.md) package. No additional installation is needed on your server.

### Configuration{% #configuration %}

{% tab title="Helm" %}
This is a cluster check. You can enable this check by adding `datadog.helmCheck.enabled` to your Helm chart.

**Note**: If no configuration is required, an empty `conf.d` can be passed.

For more information, see the [Cluster Check documentation](https://docs.datadoghq.com/agent/cluster_agent/clusterchecks.md).
{% /tab %}

{% tab title="Operator (v1.5.0+)" %}
This is a cluster check. You can enable this check by adding `spec.features.helmCheck.enabled` to your `DatadogAgent` deployment configuration.

```yaml
apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  features:
    helmCheck:
      enabled: true
```

{% /tab %}

{% tab title="Operator (below v1.5.0)" %}
This is a cluster check. You can enable this check by providing a configuration file `helm.yaml` to the cluster Agent in your `DatadogAgent` deployment configuration.

```
apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  [...]
  override:
    clusterAgent:
      [...]
      extraConfd:
        configDataMap:
          helm.yaml: |-
            init_config:
            instances:
            - collect_events: false
```

This check requires additional permissions bound to the Kubernetes service account used by the cluster Agent pod to access the releases stored by Helm.

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: datadog-helm-check
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: datadog-helm-check
subjects:
  - kind: ServiceAccount
    name: datadog-cluster-agent
    namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: datadog-helm-check
rules:
- apiGroups:
  - ""
  resources:
  - secrets
  - configmaps
  verbs:
  - get
  - list
  - watch
```

**Note**: The `ServiceAccount` subject is an example with the installation in the `default` namespace. Adjust `name` and `namespace` in accordance with your deployment.
{% /tab %}

### Validation{% #validation %}

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

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

### Metrics{% #metrics %}

This check reports a gauge, `helm.release`, set to 1 for each release deployed in the cluster. The metric has tags that identify the Helm release such as name, app version, chart version, and revision.

|  |
|  |
| **helm.release**(gauge) | a Helm release |

### Events{% #events %}

This check emits events when the `collect_events` option is set to `true`. The default is `false`.

When the option is enabled, the check emits events when:

- A new release is deployed.
- A release is deleted.
- A release is upgraded (new revision).
- There's a status change, for example from deployed to superseded.

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

**helm.release\_state**

Returns `CRITICAL` for a release when its latest revision is in failed state. Returns `OK` otherwise.

*Statuses: ok, critical*

## Troubleshooting{% #troubleshooting %}

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

## Further Reading{% #further-reading %}

- [Monitor your Helm-managed Kubernetes applications with Datadog](https://www.datadoghq.com/blog/monitor-helm-kubernetes-with-datadog/)
