98 lines
4.2 KiB
Markdown
98 lines
4.2 KiB
Markdown
|
# Azure Event Hubs input plugin
|
||
|
|
||
|
This plugin provides a consumer for use with Azure Event Hubs and Azure IoT Hub. The implementation is in essence a wrapper for [Microsoft Azure Event Hubs Client for Golang](https://github.com/Azure/azure-event-hubs-go).
|
||
|
|
||
|
## Configuration
|
||
|
|
||
|
```toml
|
||
|
[[inputs.eventhub]]
|
||
|
## The default behavior is to create a new Event Hub client from environment variables.
|
||
|
## This requires one of the following sets of environment variables to be set:
|
||
|
##
|
||
|
## 1) Expected Environment Variables:
|
||
|
## - "EVENTHUB_NAMESPACE"
|
||
|
## - "EVENTHUB_NAME"
|
||
|
## - "EVENTHUB_CONNECTION_STRING"
|
||
|
##
|
||
|
## 2) Expected Environment Variables:
|
||
|
## - "EVENTHUB_NAMESPACE"
|
||
|
## - "EVENTHUB_NAME"
|
||
|
## - "EVENTHUB_KEY_NAME"
|
||
|
## - "EVENTHUB_KEY_VALUE"
|
||
|
|
||
|
## Uncommenting the option below will create an Event Hub client based solely on the connection string.
|
||
|
## This can either be the associated environment variable or hard coded directly.
|
||
|
# connection_string = "$EVENTHUB_CONNECTION_STRING"
|
||
|
|
||
|
## Set persistence directory to a valid folder to use a file persister instead of an in-memory persister
|
||
|
# persistence_dir = ""
|
||
|
|
||
|
## Change the default consumer group
|
||
|
# consumer_group = ""
|
||
|
|
||
|
## By default the event hub receives all messages present on the broker, alternative modes can be set below.
|
||
|
## The timestamp should be in https://github.com/toml-lang/toml#offset-date-time format (RFC 3339).
|
||
|
## The 3 options below only apply if no valid persister is read from memory or file (e.g. first run).
|
||
|
# from_timestamp =
|
||
|
# latest = true
|
||
|
|
||
|
## Set a custom prefetch count for the receiver(s)
|
||
|
# prefetch_count = 1000
|
||
|
|
||
|
## Add an epoch to the receiver(s)
|
||
|
# epoch = 0
|
||
|
|
||
|
## Change to set a custom user agent, "telegraf" is used by default
|
||
|
# user_agent = "telegraf"
|
||
|
|
||
|
## To consume from a specific partition, set the partition_ids option.
|
||
|
## An empty array will result in receiving from all partitions.
|
||
|
# partition_ids = ["0","1"]
|
||
|
|
||
|
## Max undelivered messages
|
||
|
# max_undelivered_messages = 1000
|
||
|
|
||
|
## Set either option below to true to use a system property as timestamp.
|
||
|
## You have the choice between EnqueuedTime and IoTHubEnqueuedTime.
|
||
|
## It is recommended to use this setting when the data itself has no timestamp.
|
||
|
# enqueued_time_as_ts = true
|
||
|
# iot_hub_enqueued_time_as_ts = true
|
||
|
|
||
|
## Tags or fields to create from keys present in the application property bag.
|
||
|
## These could for example be set by message enrichments in Azure IoT Hub.
|
||
|
application_property_tags = []
|
||
|
application_property_fields = []
|
||
|
|
||
|
## Tag or field name to use for metadata
|
||
|
## By default all metadata is disabled
|
||
|
# sequence_number_field = "SequenceNumber"
|
||
|
# enqueued_time_field = "EnqueuedTime"
|
||
|
# offset_field = "Offset"
|
||
|
# partition_id_tag = "PartitionID"
|
||
|
# partition_key_tag = "PartitionKey"
|
||
|
# iot_hub_device_connection_id_tag = "IoTHubDeviceConnectionID"
|
||
|
# iot_hub_auth_generation_id_tag = "IoTHubAuthGenerationID"
|
||
|
# iot_hub_connection_auth_method_tag = "IoTHubConnectionAuthMethod"
|
||
|
# iot_hub_connection_module_id_tag = "IoTHubConnectionModuleID"
|
||
|
# iot_hub_enqueued_time_field = "IoTHubEnqueuedTime"
|
||
|
|
||
|
## Data format to consume.
|
||
|
## 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_INPUT.md
|
||
|
data_format = "influx"
|
||
|
```
|
||
|
## Testing
|
||
|
|
||
|
The main focus for development of this plugin is Azure IoT hub:
|
||
|
|
||
|
1. Create an Azure IoT Hub by following any of the guides provided here: https://docs.microsoft.com/en-us/azure/iot-hub/
|
||
|
2. Create a device, for example a [simulated Raspberry Pi](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-raspberry-pi-web-simulator-get-started)
|
||
|
3. The connection string needed for the plugin is located under *Shared access policies*, both the *iothubowner* and *service* policies should work
|
||
|
|
||
|
## Untested features:
|
||
|
|
||
|
- Authentication with [AAD TokenProvider environment variables](https://github.com/Azure/azure-event-hubs-go#aad-tokenprovider-environment-variables)
|
||
|
|
||
|
## Not implemented:
|
||
|
- [Event Processor Host](https://github.com/Azure/azure-event-hubs-go#event-processor-host) (should only be needed when using multiple Telegraf instances consuming the same partition)
|