Status | |
---|---|
Stability | alpha: logs |
Distributions | contrib |
Issues | |
Code Owners | @atoulme, @shalper2 |
The Webhook Event Receiver is a push based event collector component meant to act as a generally available receiver for any webhook style data source. It is designed to work alongside other pipeline components like the transform processor to allow the ingestion of generic events as logs into the opentelemetry collector.
The following settings are required:
endpoint
(no default): The endpoint where you may point your webhook to emit events to
The following settings are optional:
path
(default: '/events'): Path where the receiver instance will accept eventshealth_path
(default: '/health_check'): Path available for checking receiver statusread_timeout
(default: '500ms'): Maximum wait time while attempting to read a received eventwrite_timeout
(default: '500ms'): Maximum wait time while attempting to write a responserequired_header
(optional):key
(required ifrequired_header
config option is set): Represents the key portion of the required header.value
(required ifrequired_header
config option is set): Represents the value portion of the required header.
split_logs_at_newline
(default: false): If true, the receiver will create a separate log record for each line in the request body.convert_headers_to_attributes
(optional): add all request headers (excludingrequired_header
if also set) log attributesheader_attribute_regex
(optional): add headers matching supplied regex as log attributes. Header attributes will be prefixed withheader.
If the setting is unconfigured or set to false
, the receiver will create a single log record with the entire request body as the "body" of that record.
If the webhook body looks like the following, use split_logs_at_newline: false
:
{
"name": "francis",
"city": "newyork"
}
a fifth line
A single log record will be created with the multi-line JSON object as the "body" of that record, even the "fifth line" outside the JSON object will be included.
If the body looks like the following, use split_logs_at_newline: true
:
{ "name": "francis", "city": "newyork" }
{ "name": "john", "city": "paris" }
a third line
Three log records will be created from this example. The first two are JSON body objects and the third is just the string "a third line".
This receiver does not attempt to marshal the body into a structured format as it is received so it cannot make a more intelligent determination about where the split records.
receivers:
webhookevent:
endpoint: localhost:8088
read_timeout: "500ms"
path: "eventsource/receiver"
health_path: "eventreceiver/healthcheck"
required_header:
key: "required-header-key"
value: "required-header-value"
split_logs_at_newline: false
The full list of settings exposed for this receiver are documented in config.go with a detailed sample configuration in testdata/config.yaml