---
title: Telegraf Documentation
description: Telegraf plugin for sending metrics to AMQP
url: https://docs.influxdata.com/telegraf/v1/output-plugins/amqp/
estimated_tokens: 3002
product: Telegraf
version: v1
---

-   Telegraf v0.1.9+

# AMQP Output Plugin

This plugin writes to an Advanced Message Queuing Protocol v0.9.1 broker. A prominent implementation of this protocol is [RabbitMQ](https://www.rabbitmq.com).

This plugin does not bind the AMQP exchange to a queue.

For an introduction check the [AMQP concepts page](https://www.rabbitmq.com/tutorials/amqp-concepts.html) and the [RabbitMQ getting started guide](https://www.rabbitmq.com/getstarted.html).

**Introduced in:** Telegraf v0.1.9 **Tags:** messaging **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.

## Secret-store support

This plugin supports secrets from secret-stores for the `username` and `password` option. See the [secret-store documentation](/telegraf/v1/configuration/#secret-store-secrets) for more details on how to use them.

## Configuration

```toml
# Publishes metrics to an AMQP broker
[[outputs.amqp]]
  ## Brokers to publish to.  If multiple brokers are specified a random broker
  ## will be selected anytime a connection is established.  This can be
  ## helpful for load balancing when not using a dedicated load balancer.
  brokers = ["amqp://localhost:5672/influxdb"]

  ## Maximum messages to send over a connection.  Once this is reached, the
  ## connection is closed and a new connection is made.  This can be helpful for
  ## load balancing when not using a dedicated load balancer.
  # max_messages = 0

  ## Exchange to declare and publish to.
  exchange = "telegraf"

  ## Exchange type; common types are "direct", "fanout", "topic", "header", "x-consistent-hash".
  # exchange_type = "topic"

  ## If true, exchange will be passively declared.
  # exchange_passive = false

  ## Exchange durability can be either "transient" or "durable".
  # exchange_durability = "durable"

  ## Additional exchange arguments.
  # exchange_arguments = { }
  # exchange_arguments = {"hash_property" = "timestamp"}

  ## Authentication credentials for the PLAIN auth_method.
  # username = ""
  # password = ""

  ## Auth method. PLAIN and EXTERNAL are supported
  ## Using EXTERNAL requires enabling the rabbitmq_auth_mechanism_ssl plugin as
  ## described here: https://www.rabbitmq.com/plugins.html
  # auth_method = "PLAIN"

  ## Metric tag to use as a routing key.
  ##   ie, if this tag exists, its value will be used as the routing key
  # routing_tag = "host"

  ## Static routing key.  Used when no routing_tag is set or as a fallback
  ## when the tag specified in routing tag is not found.
  # routing_key = ""
  # routing_key = "telegraf"

  ## Delivery Mode controls if a published message is persistent.
  ##   One of "transient" or "persistent".
  # delivery_mode = "transient"

  ## Static headers added to each published message.
  # headers = { }
  # headers = {"database" = "telegraf", "retention_policy" = "default"}

  ## Connection timeout.  If not provided, will default to 5s.  0s means no
  ## timeout (not recommended).
  # timeout = "5s"

  ## 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 = false

  ## Optional Proxy Configuration
  # use_proxy = false
  # proxy_url = "localhost:8888"

  ## If true use batch serialization format instead of line based delimiting.
  ## Only applies to data formats which are not line based such as JSON.
  ## Recommended to set to true.
  # use_batch_format = false

  ## Content encoding for message payloads, can be set to "gzip" to or
  ## "identity" to apply no encoding.
  ##
  ## Please note that when use_batch_format = false each amqp message contains only
  ## a single metric, it is recommended to use compression with batch format
  ## for best results.
  # content_encoding = "identity"

  ## Data format to output.
  ## Each data format has its own unique set of configuration options, read
  ## more about them here:
  ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md
  # data_format = "influx"
```

### Routing

If `routing_tag` is set, and the tag is defined on the metric, the value of the tag is used as the routing key. Otherwise the value of `routing_key` is used directly. If both are unset the empty string is used.

Exchange types that do not use a routing key, `direct` and `header`, always use the empty string as the routing key.

Metrics are published in batches based on the final routing key.

### Proxy

If you want to use a proxy, you need to set `use_proxy = true`. This will use the system’s proxy settings to determine the proxy URL. If you need to specify a proxy URL manually, you can do so by using `proxy_url`, overriding the system settings.

#### Related

-   [Configure plugins](/telegraf/v1/configure_plugins/)
-   [AMQP Plugin Source](https://github.com/influxdata/telegraf/tree/v1.38.4/plugins/outputs/amqp/README.md)
