Skip to content

Files

Latest commit

 

History

History

webhookeventreceiver

Webhook Event Receiver

Status
Stability alpha: logs
Distributions contrib
Issues Open issues Closed 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.

Configuration

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 events
  • health_path (default: '/health_check'): Path available for checking receiver status
  • read_timeout (default: '500ms'): Maximum wait time while attempting to read a received event
  • write_timeout (default: '500ms'): Maximum wait time while attempting to write a response
  • required_header (optional):
    • key (required if required_header config option is set): Represents the key portion of the required header.
    • value (required if required_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 (excluding required_header if also set) log attributes
  • header_attribute_regex (optional): add headers matching supplied regex as log attributes. Header attributes will be prefixed with header.

Split logs at newline example

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.

Configuration Example

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