Skip to main content

Data Exporters

Data exporters are the way to export alerts, events, and analytics from Otoroshi to external storage and monitoring systems.

To try them out, you can follow this tutorial.

UI page

You can find all data exporters here

Properties

PropertyTypeDefaultDescription
idstringUnique identifier
namestringDisplay name
descriptionstringDescription
enabledbooleantrueWhether the exporter is active
typstringThe type of exporter (see exporter types)
tagsarray of string[]Tags
metadataobject{}Key/value metadata
filteringobjectEvent filtering configuration (see below)
projectionobject{}Projection to export only specific fields
bufferSizenumber5000Number of events to keep in memory buffer
jsonWorkersnumber1Number of workers for JSON serialization
sendWorkersnumber1Number of workers for sending events
groupSizenumber100Number of events to batch together
groupDurationnumber30000Maximum wait time (ms) before sending a batch
configobjectExporter-specific configuration

Matching and projections

Filtering

Filtering is used to include or exclude specific types of events and alerts. Each include/exclude entry is a key-value match.

Example: only keep Otoroshi alerts:

{ "include": [{ "@type": "AlertEvent" }] }

Otoroshi provides rules to filter events based on their content. Given this example event:

{
"foo": "bar",
"type": "AlertEvent",
"alert": "big-alert",
"status": 200,
"codes": ["a", "b"],
"inner": {
"foo": "bar",
"bar": "foo"
}
}
{
  "<key>": "<value>"
}
a field key with value
{
  "foo": "bar"
}
Keep events with foo as key and bar as value
{
  "<key>": {
    "$wildcard": "<value>*"
  }
}
a field starting with value
{
  "type": {
    "$wildcard": "Alert*"
  }
}
Keep events with type field starting with Alert
{
  "<key>": {
    "<key2>": "<value>"
  }
}
a sub-field with value
{
  "inner": {
    "foo": "bar"
  }
}
Keep events with sub field foo at value bar
{
  "<key>": "<number>"
}
a field with the specific value as number
{
  "status": 200
}
Keep events with status code at 200 (as number check)
{
  "<key>": {
    "$gt": "<number>"
  }
}
a field with number value greater than number
{
  "status": {
    "$gt": 100
  }
}
Keep events with status code greater than 100
{
  "<key>": {
    "$gte": "<number>"
  }
}
a field with number value greater or equal to number
{
  "status": {
    "$gte": 100
  }
}
Keep events with status code greater or equal to 100
{
  "<key>": {
    "$lt": "<number>"
  }
}
a field with number value lower than number
{
  "status": {
    "$lt": 100
  }
}
Keep events with status code lower than 100
{
  "<key>": {
    "$lte": "<number>"
  }
}
a field with number value lower or equal to number
{
  "status": {
    "$lte": 100
  }
}
Keep events with status code lower or equal to 100
{
  "<key>": {
    "$between": {
      "min": "<number>",
      "max": "<number>"
    }
  }
}
a field with value between two values (exclusive)
{
  "status": {
    "$between": {
      "min": 100,
      "max": 200
    }
  }
}
Keep events with status code between 100 and 200 (100 and 200 won't match)
{
  "<key>": {
    "$between": {
      "min": "<number>",
      "max": "<number>"
    }
  }
}
a field with value between two values (inclusive)
{
  "status": {
    "$between": {
      "min": 100,
      "max": 200
    }
  }
}
Keep events with status code between 100 and 200 (100 and 200 will match)
{
  "<key>": {
    "$and": [
      {
        "<key2>": "<value>"
      },
      {
        "<key3>": "<value>"
      }
    ]
  }
}
an object with two fields with values
{
  "inner": {
    "$and": [
      {
        "foo": "bar"
      },
      {
        "bar": "foo"
      }
    ]
  }
}
Keep events matching the list of key-value
{
  "$or": [
    {
      "<key2>": "<value>"
    },
    {
      "<key3>": "<value>"
    }
  ]
}
an object matching at least one condition of the list
{
  "$or": [
    {
      "method": "DELETE"
    },
    {
      "protocol": "http"
    }
  ]
}
Keep event whose method is http OR method is DELETE OR both
{
  "$nor": [
    {
      "<key2>": "<value>"
    },
    {
      "<key3>": "<value>"
    }
  ]
}
an object that matches no conditions of the list
{
  "$nor": [
    {
      "method": "DELETE"
    },
    {
      "protocol": "http"
    }
  ]
}
Keep events whose method is not DELETE AND protocol is not http
{
  "<key>": [
    "<value>",
    "<value2>"
  ]
}
an array field with values
{
  "codes": [
    "a",
    "b"
  ]
}
Keep events with an array codes which strictly containing values a and b
{
  "<key>": {
    "$contains": "<value>"
  }
}
an array field containing a specific value
{
  "codes": {
    "$contains": "a"
  }
}
Keep events with an array codes containing an a value
{
  "<key>": {
    "$contains": {
      "key": "<subkey>",
      "value": "<value>"
    }
  }
}
an object containing a key subkey with given value
{
  "target": {
    "$contains": {
      "key": "scheme",
      "value": "https"
    }
  }
}
Keep events whose target contains a field 'scheme' valued to 'https'
{
  "<key>": {
    "$all": [
      "<value>",
      "<value>"
    ]
  }
}
and array field containing all specific values
{
  "codes": {
    "$all": [
      "a",
      "b"
    ]
  }
}
Keep events with an array codes containing at minima a and b values
{
  "<key>": {
    "$regex": "<value>"
  }
}
a string field whose value match given regular expression
{
  "url": {
    "$regex": ".*api.*"
  }
}
Keep events with url containing 'api'
{
  "<key>": {
    "$in": [
      "<value>",
      "<value2>"
    ]
  }
}
a field containing one of the given value
{
  "method": {
    "$in": [
      "PUT",
      "POST"
    ]
  }
}
Keep events whose method is PUT or POST
{
  "<key>": {
    "$nin": [
      "<value>",
      "<value2>"
    ]
  }
}
a field containing none of the given value
{
  "method": {
    "$nin": [
      "PUT",
      "POST"
    ]
  }
}
Keep events whose method is neither PUT nor POST
{
  "<key>": {
    "$size": "<number>"
  }
}
an array field whose size is given value
{
  "headers": {
    "$size": 12
  }
}
Keep events with exactly 12 headers
{
  "<key>": {
    "$not": "<condition>"
  }
}
an object that does not satisfy condition
{
  "url": {
    "$not": {
      "$regex": ".*api.*"
    }
  }
}
Keep events whose url does not contain 'api'
{
  "<key>": {
    "$eq": "<value>"
  }
}
a field key with value
{
  "foo": {
    "$eq": "bar"
  }
}
Keep events with foo as key and bar as value
{
  "<key>": {
    "$ne": "<value>"
  }
}
a field key whose value is not provided value
{
  "foo": {
    "$ne": "bar"
  }
}
Keep events with foo field not equal to bar
{
  "<key>": {
    "$exists": "<entry>"
  }
}
an object field containing given entry as key
{
  "target": {
    "$exists": "scheme"
  }
}
Keep events whose target object contains a schema field

Projection

Projection is a list of fields to export. If empty, all fields are exported. If specified, only the listed fields will be included in exported events.

"<field>": true

Description

{
  "<field>": true
}

Include given field in result.

Expression

{
  "foo": true
}

Event

{
  "headers": [
    {
      "key": 1,
      "value": "1"
    },
    {
      "key": 2,
      "value": "2"
    }
  ],
  "foo": 1
}

Result

{
  "foo": 1
}

$date_from_unix_fmt

Description

{
  "<field>": {
    "$date_from_unix_fmt": {
      "path": "<source>",
      "pattern": "<pattern>"
    }
  }
}

Formats a unix timestamp into a stringified datetime

Expression

{
  "@timestamp": {
    "$date_from_unix_fmt": {
      "path": "@timestamp",
      "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    }
  }
}

Event

{
  "@timestamp": 1764086514458
}

Result

{
  "@timestamp": "2025-11-25T17.00.00.000Z"
}

$at

Description

{
  "<target>": {
    "$at": "<location>"
  }
}

Values <target> with value <at> location

Expression

{
  "h1": {
    "$at": "headers.0.value"
  }
}

Event

{
  "headers": [
    {
      "key": 1,
      "value": "1"
    },
    {
      "key": 2,
      "value": "2"
    }
  ]
}

Result

{
  "h1": "1"
}

$at (with default)

Description

{
  "<target>": {
    "$at": {
      "path": "<location>",
      "default": "<default_value>"
    }
  }
}

Values <target> with value <at> location

Expression

{
  "h1": {
    "$at": {
      "path": "headers.3.value",
      "default": "foo"
    }
  }
}

Event

{
  "headers": [
    {
      "key": 1,
      "value": "1"
    },
    {
      "key": 2,
      "value": "2"
    }
  ]
}

Result

{
  "h3": "foo"
}

$atIf

Description

{
  "<target>": {
    "$atIf": {
      "path": "<path>",
      "predicate": {
        "at": "<at>",
        "value": "<value>"
      },
      "default": "<default_value>"
    }
  }
}

Put <path> value in <target> if value at <at> match <value>

Expression

{
  "r": {
    "$atIf": {
      "path": "hs.0.value",
      "predicate": {
        "at": "scheme",
        "value": "HTTPS"
      }
    }
  }
}

Event

{
  "hs": [
    {
      "key": 1,
      "value": "1"
    },
    {
      "key": 2,
      "value": "2"
    }
  ],
  "scheme": "HTTPS"
}

Result

{
  "r": "1"
}

$pointer

Description

{
  "<target>": {
    "$pointer": "<jsonPointer>"
  }
}

Allow to get a json value using JSON pointer spec. "<jsonPointer>" can be an object with "path" and "default"

Expression

{
  "h1": {
    "$pointer": "/headers/0/value"
  }
}

Event

{
  "headers": [
    {
      "key": 1,
      "value": "1"
    },
    {
      "key": 2,
      "value": "2"
    }
  ]
}

Result

{
  "h1": "1"
}

$pointerIf

Description

{
  "<target>": {
    "$pointerIf": {
      "path": "<path>",
      "predicate": {
        "pointer": "<pointer>",
        "value": "<value>"
      },
      "default": "<default_value>"
    }
  }
}

Put value at <path> in <target> field if and only if value at <pointer> equals <value>. <path> and <pointer> fields are resolved using json pointer spec.

Expression

{
  "h1": {
    "$pointerIf": {
      "path": "/headers/0/value",
      "predicate": {
        "pointer": "/scheme",
        "value": "HTTP"
      }
    }
  }
}

Event

{
  "headers": [
    {
      "key": 1,
      "value": "1"
    },
    {
      "key": 2,
      "value": "2"
    }
  ],
  "scheme": "HTTP"
}

Result

{
  "h1": "1"
}

$path

Description

{
  "<target>": {
    "$path": "<jsonPath>"
  }
}

Put value located at <jsonPath> in <target>. <jsonPath> is resolved using json path specification. "<jsonPath>" can be an object with "path" and "default"

Expression

{
  "hs": {
    "$path": "$.headers[1:]"
  }
}

Event

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    },
    {
      "key": "k2",
      "value": "v2"
    },
    {
      "key": "k3",
      "value": "v3"
    }
  ]
}

Result

{
  "hs": [
    {
      "key": "k2",
      "value": "v2"
    },
    {
      "key": "k3",
      "value": "v3"
    }
  ]
}

$pathIf

Description

{
  "<target>": {
    "$pathIf": {
      "path": "<jsonPath>",
      "predicate": {
        "path": "<predicateJsonPath>",
        "value": "<value>"
      },
      "default": "<default_value>"
    }
  }
}

Put value located at <jsonPath> in <target>, if and only if value at <predicateJsonPath> equals <value>.

Expression

{
  "test": {
    "$pathIf": {
      "path": "$.headers[1:]",
      "predicate": {
        "path": "$.scheme",
        "value": "HTTPS"
      }
    }
  }
}

Event

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    },
    {
      "key": "k2",
      "value": "v2"
    },
    {
      "key": "k3",
      "value": "v3"
    }
  ],
  "scheme": "HTTPS"
}

Result

{
  "test": [
    {
      "key": "k2",
      "value": "v2"
    },
    {
      "key": "k3",
      "value": "v3"
    }
  ]
}

$compose (array result)

Description

{
  "<target>": {
    "$compose": [
      {
        "<subtarget>": {
          "$path": "<path>"
        }
      }
    ]
  }
}

Build an array in <target> field, by composing severals operators : $path, $at, $pointer.

Expression

{
  "result": {
    "$compose": [
      {
        "values": {
          "$path": "$.headers[0:].value"
        }
      },
      {
        "keys": {
          "$path": "$.headers[0:].key"
        }
      }
    ]
  }
}

Event

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    },
    {
      "key": "k2",
      "value": "v2"
    },
    {
      "key": "k3",
      "value": "v3"
    }
  ],
  "scheme": "HTTPS"
}

Result

{
  "result": [
    {
      "values": [
        "v1",
        "v2",
        "v3"
      ]
    },
    {
      "keys": [
        "k1",
        "k2",
        "k3"
      ]
    }
  ]
}

$compose (object result)

Description

{
  "<target>": {
    "$compose": {
      "<subtarget>": {
        "$path": "<path>"
      }
    }
  }
}

Build an object in <target> field, by composing severals operators : $path, $at, $pointer.

Expression

{
  "result": {
    "$compose": {
      "values": {
        "$path": "$.headers[0:].value"
      },
      "keys": {
        "$path": "$.headers[0:].key"
      }
    }
  }
}

Event

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    },
    {
      "key": "k2",
      "value": "v2"
    },
    {
      "key": "k3",
      "value": "v3"
    }
  ]
}

Result

{
  "result": {
    "values": [
      "v1",
      "v2",
      "v3"
    ],
    "keys": [
      "k1",
      "k2",
      "k3"
    ]
  }
}

$value

Description

{
  "<target>": {
    "$value": "<value>"
  }
}

Put <value> in <target> field. <value> can be either a primitive type, an object or an array.

Expression

{
  "headers": {
    "$value": []
  }
}

Event

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    },
    {
      "key": "k2",
      "value": "v2"
    },
    {
      "key": "k3",
      "value": "v3"
    }
  ]
}

Result

{
  "headers": []
}

$spread

Description

{
  "$spread": true
}

Include all properties of source object, this can be used as base for further transformation with below operators.

Expression

{
  "$spread": true
}

Event

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    }
  ],
  "scheme": "HTTPS",
  "foo": 1
}

Result

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    }
  ],
  "scheme": "HTTPS",
  "foo": 1
}

"<field>": false

Description

{
  "$spread": true,
  "<field>": false
}

Exclude <field> field from resulting object

Expression

{
  "$spread": true,
  "foo": false
}

Event

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    }
  ],
  "scheme": "HTTPS",
  "foo": 1
}

Result

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    }
  ],
  "scheme": "HTTPS"
}

$remove

Description

{
  "$spread": true,
  "<field>": {
    "$remove": true
  }
}

Exclude <field> field from resulting object, like for {"<field>": false}

Expression

{
  "$spread": true,
  "foo": {
    "$remove": true
  }
}

Event

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    }
  ],
  "scheme": "HTTPS",
  "foo": 1
}

Result

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    }
  ],
  "scheme": "HTTPS"
}

$header

Description

{
  "<target>": {
    "$header": {
      "path": "<path>",
      "name": "<name>",
      "default": "<default_value>"
    }
  }
}

Put specified header value in <target>. <path> indicate an array of key/value headers, <name> indicate the name of the header.

Expression

{
  "hostValue": {
    "$header": {
      "path": "headers",
      "name": "Host"
    }
  }
}

Event

{
  "headers": [
    {
      "key": "Host",
      "value": "otoroshi.oto.tools:9999"
    },
    {
      "key": "Accept",
      "value": "application/json"
    }
  ]
}

Result

{
  "hostValue": "otoroshi.oto.tools:9999"
}

$includeAllKeysMatching

Description

{
  "$spread": true,
  "<subname>": {
    "$includeAllKeysMatching": [
      "<expression>"
    ]
  }
}

Filter an object entries based on StartsWith, Wildcard or Regex expression. A logical OR will be applied between filters.

Expression

{
  "$spread": true,
  "_": {
    "$includeAllKeysMatching": [
      "Wildcard(f*)",
      "StartsWith(fi)",
      "bar",
      "Regex(.*lo)"
    ]
  }
}

Event

{
  "foo": 1,
  "foobar": 2,
  "bar": 3,
  "baz": 4,
  "hello": "world",
  "fifou": "test"
}

Result

{
  "foo": 1,
  "foobar": 2,
  "bar": 3,
  "hello": "world",
  "fifou": "test"
}

$excludeAllKeysMatching

Description

{
  "$spread": true,
  "<subname>": {
    "$excludeAllKeysMatching": [
      "<expression>"
    ]
  }
}

Filter an object entries, excluding them based on StartsWith, Wildcard or Regex expression. A logical OR will be applied between filters.

Expression

{
  "$spread": true,
  "_": {
    "$excludeAllKeysMatching": [
      "Wildcard(fo*)",
      "StartsWith(fi)",
      "bar",
      "Regex(.*lo)"
    ]
  }
}

Event

{
  "foo": 1,
  "foobar": 2,
  "bar": 3,
  "baz": 4,
  "hello": "world",
  "fifou": "test"
}

Result

{
  "baz": 4
}

$jq

Description

{
  "<target>": {
    "$jq": "<jqExpression>"
  }
}

Fill target field with provided JQ selector

Expression

{
  "headerKeys": {
    "$jq": "[.headers[].key]"
  }
}

Event

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    },
    {
      "key": "k2",
      "value": "v2"
    }
  ]
}

Result

{
  "headerKeys": [
    "k1",
    "k2"
  ]
}

$jqIf

Description

{
  "<target>": {
    "$jqIf": {
      "filter": "<jqExpression>",
      "predicate": {
        "path": "<path>",
        "value": "<value>"
      }
    }
  }
}

Fill target field with provided JQ selector if and only if value located at <path> is equal to <value>

Expression

{
  "headerKeys": {
    "$jqIf": {
      "filter": "[.headers[].key]",
      "predicate": {
        "path": "target.scheme",
        "value": "https"
      }
    }
  }
}

Event

{
  "headers": [
    {
      "key": "k1",
      "value": "v1"
    },
    {
      "key": "k2",
      "value": "v2"
    }
  ],
  "target": {
    "scheme": "https"
  }
}

Result

{
  "headerKeys": [
    "k1",
    "k2"
  ]
}

Exporter types

Elastic

Sends events in batch to an Elasticsearch cluster. Can be used with the elastic analytics dashboard.

PropertyTypeDescription
urisarray of stringElasticsearch cluster URIs
indexstringIndex name
typestringEvent type (not needed for ES 6.x+)
userstringUsername (optional)
passwordstringPassword (optional)
versionstringElasticsearch version (auto-detected if not set)
applyTemplatebooleanAutomatically apply index template
indexSettings.clientSidebooleanOtoroshi manages index creation over time
indexSettings.intervalstringIndex rotation interval: Day, Week, Month, or Year
indexSettings.numberOfShardsnumberNumber of shards
indexSettings.numberOfReplicasnumberNumber of replicas
mtlsConfigobjectCustom TLS settings

Webhook

Sends events in batch to an HTTP endpoint using POST with a JSON array body.

PropertyTypeDescription
urlstringURL to post events to
headersobjectHTTP headers to include
tlsConfigobjectCustom TLS settings

Kafka

Sends events to an Apache Kafka topic. See Kafka tutorials.

PropertyTypeDescription
serversarray of stringKafka broker addresses
topicstringKafka topic name
saslobjectSASL authentication (username, password, mechanism: PLAIN/SCRAM-SHA-256/SCRAM-SHA-512)
keypassstringKeystore password
keystorestringKeystore path
truststorestringTruststore path
tlsConfigobjectCustom TLS settings

Pulsar

Sends events to an Apache Pulsar topic.

PropertyTypeDescription
uristringPulsar server URI
tenantstringPulsar tenant
namespacestringPulsar namespace
topicstringPulsar topic
tlsConfigobjectCustom TLS settings

Splunk

Sends events to a Splunk HTTP Event Collector (HEC).

PropertyTypeDescription
urlstringSplunk HEC URL
tokenstringHEC token
indexstringSplunk index (optional)
typestringEvent source type (optional)
headersobjectAdditional HTTP headers
tlsConfigobjectCustom TLS settings

Datadog

Sends events to Datadog via the Datadog API.

PropertyTypeDescription
hoststringDatadog API host (e.g., https://api.datadoghq.eu)
apiKeystringDatadog API key
applicationKeystringApplication key (optional)
headersobjectAdditional HTTP headers
tlsConfigobjectCustom TLS settings

New Relic

Sends events to New Relic via their API.

PropertyTypeDescription
urlstringNew Relic API URL
licenseKeystringNew Relic license key
accountIdstringNew Relic account ID
headersobjectAdditional HTTP headers
tlsConfigobjectCustom TLS settings

File

Writes events to local files.

PropertyTypeDescription
pathstringFile path to write events
maxFileSizenumberMaximum file size in bytes. When reached, a new timestamped file is created
maxNumberOfFilenumberMaximum number of files to retain

S3

Writes events to an S3-compatible object store.

PropertyTypeDescription
maxFileSizenumberMaximum size per file
maxNumberOfFilenumberMaximum number of files
configobjectS3 configuration (bucket, region, credentials, endpoint)

GoReplay file

Writes events in .gor format compatible with GoReplay.

warning

This exporter only catches TrafficCaptureEvent. These events are generated when a route has the capture flag enabled. See engine docs.

PropertyTypeDescription
pathstringFile path
maxFileSizenumberMaximum file size
captureRequestsbooleanCapture HTTP requests
captureResponsesbooleanCapture HTTP responses

GoReplay S3

Same as GoReplay file but writes to an S3-compatible store.

PropertyTypeDescription
s3objectS3 configuration
maxFileSizenumberMaximum file size
captureRequestsbooleanCapture HTTP requests
captureResponsesbooleanCapture HTTP responses
preferBackendRequestbooleanPrefer backend request over client request
preferBackendResponsebooleanPrefer backend response over client response
methodsarray of stringHTTP methods to capture

TCP

Sends events over raw TCP connections.

PropertyTypeDescription
hoststringTarget host
portnumberTarget port
unixSocketstringUnix socket path (alternative to host/port)
connectTimeoutnumberConnection timeout (ms)
tlsobjectTLS configuration

UDP

Sends events over UDP.

PropertyTypeDescription
hoststringTarget host
portnumberTarget port
unixSocketstringUnix socket path (alternative to host/port)
connectTimeoutnumberConnection timeout (ms)

Syslog

Sends events to a syslog server.

PropertyTypeDescription
hoststringSyslog server host
portnumberSyslog server port
protocolstringProtocol: tcp or udp
unixSocketstringUnix socket path
connectTimeoutnumberConnection timeout (ms)
tlsobjectTLS configuration (for TCP)

JMS

Sends events to a JMS (Java Message Service) queue or topic.

PropertyTypeDescription
urlstringJMS connection URL
namestringQueue/topic name
topicbooleanIf true, sends to a topic; otherwise to a queue
usernamestringJMS username
passwordstringJMS password

PostgreSQL

Writes events to a PostgreSQL database.

PropertyTypeDescription
uristringFull connection URI (alternative to individual fields)
hoststringDatabase host
portnumberDatabase port
databasestringDatabase name
userstringUsername
passwordstringPassword
schemastringSchema name
tablestringTable name
poolSizenumberConnection pool size
sslbooleanEnable SSL

Workflow

Routes events to an Otoroshi workflow for custom processing.

PropertyTypeDescription
refstringWorkflow ID to invoke

Console

Writes events to the standard output. No additional configuration needed.

WASM

Processes events through a WebAssembly plugin.

PropertyTypeDescription
wasmRefstringReference to a WASM plugin entity
paramsobjectAdditional parameters passed to the WASM function

OTLP Metrics

Exports metrics using the OpenTelemetry Protocol (OTLP).

PropertyTypeDescription
otlpobjectOTLP endpoint configuration (URL, headers, protocol)
tagsobjectCustom metric tags/labels
metricsarray of objectMetric definitions to export

OTLP Logs

Exports logs using the OpenTelemetry Protocol (OTLP).

PropertyTypeDescription
otlpobjectOTLP endpoint configuration (URL, headers, protocol)

Custom Metrics

Exposes custom metrics on the /metrics endpoint.

PropertyTypeDescription
tagsobjectCustom metric labels
metricsarray of objectMetric definitions

Metrics

Rewrites metric labels exposed on the /metrics endpoint.

PropertyTypeDescription
labelsobjectMap of existing label names to new label names

Mailer

Sends events as email using one of the following providers:

Console mailer

Writes emails to the standard output (for testing).

Generic mailer

PropertyTypeDescription
urlstringURL to push events
headersobjectHTTP headers
toarray of stringRecipient email addresses

Mailgun

PropertyTypeDescription
eubooleanUse EU server (api.eu.mailgun.net) instead of US
apiKeystringMailgun API key
domainstringMailgun domain
toarray of stringRecipient email addresses

Mailjet

PropertyTypeDescription
publicKeystringMailjet public API key
privateKeystringMailjet private API key
toarray of stringRecipient email addresses

Sendgrid

PropertyTypeDescription
apiKeystringSendgrid API key
toarray of stringRecipient email addresses

Custom exporter

Allows using a custom exporter plugin. Create a plugin of type "exporter" on the plugins page, then select it here.

PropertyTypeDescription
refstringReference to the custom exporter plugin
configobjectExporter configuration

Admin API

GET    /api/data-exporter-configs           # List all data exporters
POST /api/data-exporter-configs # Create a data exporter
GET /api/data-exporter-configs/:id # Get a data exporter
PUT /api/data-exporter-configs/:id # Update a data exporter
DELETE /api/data-exporter-configs/:id # Delete a data exporter
PATCH /api/data-exporter-configs/:id # Partially update a data exporter