---
title: ''
description: Telegraf plugin for collecting metrics from Hashicorp Consul
url: https://docs.influxdata.com/telegraf/v1/input-plugins/consul/
estimated_tokens: 882
product: Telegraf Enterprise
version: v1
publisher: InfluxData
canonical: https://docs.influxdata.com/telegraf/v1/input-plugins/consul/
date: '2026-05-21T20:10:18+02:00'
lastmod: '2026-05-21T20:10:18+02:00'
---

==========

* Telegraf v1.0.0+

[Plugin source](https://github.com/influxdata/telegraf/tree/v1.39.1/plugins/inputs/consul/)[Download configuration](https://raw.githubusercontent.com/influxdata/telegraf/refs/tags/v1.39.1/plugins/inputs/consul/sample.conf)

# Hashicorp Consul Input Plugin

This plugin will collect statistics about all health checks registered in[Consul](https://www.consul.io) using the [Consul API](https://www.consul.io/docs/agent/http/health.html#health_state). The plugin will not report any[telemetry metrics](https://www.consul.io/docs/agent/telemetry.html) but Consul can report those statistics using
the StatsD protocol if needed.

**Introduced in:** Telegraf v1.0.0**Tags:** server**OS support:** all

## Global configuration options

Plugins support additional global and plugin configuration settings for tasks
such as modifying metrics, tags, and fields, creating aliases, and configuring
plugin ordering. See [CONFIGURATION.md](/telegraf/v1/configuration/#plugins) for more details.

## Configuration

```toml
# Gather health check statuses from services registered in Consul
[[inputs.consul]]
  ## Consul server address
  # address = "localhost:8500"

  ## URI scheme for the Consul server, one of "http", "https"
  # scheme = "http"

  ## Metric version controls the mapping from Consul metrics into
  ## Telegraf metrics. Version 2 moved all fields with string values
  ## to tags.
  ##
  ##   example: metric_version = 1; deprecated in 1.16
  ##            metric_version = 2; recommended version
  # metric_version = 1

  ## ACL token used in every request
  # token = ""

  ## HTTP Basic Authentication username and password.
  # username = ""
  # password = ""

  ## Data center to query the health checks from
  # datacenter = ""

  ## Optional TLS Config
  # tls_ca = "/etc/telegraf/ca.pem"
  # tls_cert = "/etc/telegraf/cert.pem"
  # tls_key = "/etc/telegraf/key.pem"
  ## Use TLS but skip chain & host verification
  # insecure_skip_verify = true

  ## Consul checks' tag splitting
  # When tags are formatted like "key:value" with ":" as a delimiter then
  # they will be split and reported as proper key:value in Telegraf
  # tag_delimiter = ":"
```

## Metrics

### metric\_version = 1

* consul\_health\_checks
  * tags:
    * node (node that check/service is registered on)
    * service\_name
    * check\_id

  * fields:
    * check\_name
    * service\_id
    * status
    * passing (integer)
    * critical (integer)
    * warning (integer)

### metric\_version = 2

* consul\_health\_checks
  * tags:
    * node (node that check/service is registered on)
    * service\_name
    * check\_id
    * check\_name
    * service\_id
    * status

  * fields:
    * passing (integer)
    * critical (integer)
    * warning (integer)

`passing`, `critical`, and `warning` are integer representations of the health
check state. A value of `1` represents that the status was the state of the
health check at this sample. `status` is string representation of the same
state.

## Example Output

```text
consul_health_checks,host=wolfpit,node=consul-server-node,check_id="serfHealth" check_name="Serf Health Status",service_id="",status="passing",passing=1i,critical=0i,warning=0i 1464698464486439902
consul_health_checks,host=wolfpit,node=consul-server-node,service_name=www.example.com,check_id="service:www-example-com.test01" check_name="Service 'www.example.com' check",service_id="www-example-com.test01",status="critical",passing=0i,critical=1i,warning=0i 1464698464486519036
```
