> ## Documentation Index
> Fetch the complete documentation index at: https://otel.fyi/llms.txt
> Use this file to discover all available pages before exploring further.

# Honeycombmarker

> OpenTelemetry exporter for Honeycombmarker

# Honeycombmarker Exporter

![Status](https://img.shields.io/badge/status-alpha-red)

**Available in:** `contrib`

**Maintainers:** [@VinozzZ](https://github.com/VinozzZ), [@codeboten](https://github.com/codeboten)

**Source:** [opentelemetry-collector-contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/honeycombmarkerexporter)

## Supported Telemetry

![Logs](https://img.shields.io/badge/logs-alpha-blue)

## Overview

> **Note:** The exporter type has been renamed from `honeycombmarker` to `honeycomb_marker` to follow the
> snake\_case naming convention. The old name `honeycombmarker` is preserved as a deprecated alias and
> will continue to work, but a deprecation warning will be logged at startup. Please update your
> configuration to use `honeycomb_marker:`.

This exporter allows creating [markers](https://docs.honeycomb.io/working-with-your-data/markers/), via the [Honeycomb Markers API](https://docs.honeycomb.io/api/tag/Markers#operation/createMarker), based on the look of incoming telemetry.

The following configuration options are supported:

* `api_key` (Required): This is the API key for your Honeycomb account.
* `api_url` (Optional): This sets the hostname to send marker data to. If not set, will default to `https://api.honeycomb.io/`
* `markers` (Required): This is a list of configurations to create an event marker.
  * `type` (Required): Specifies the marker type.
  * `rules` (Required): This is a list of [OTTL](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl) rules that determine when to create an event marker.
    * `log_conditions` (Required): A list of [OTTL log](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/contexts/ottllog) conditions that determine a match. The marker will be created if **ANY** condition matches.
  * `dataset_slug` (Optional): The dataset in which to create the marker. If not set, will default to `__all__`.
  * `message_key` (Optional): The key of the attribute whose value will be used as the marker's message. If necessary the value will be converted to a string.
  * `url_key` (Optional): The key of the attribute whose value will be used as the marker's url. If necessary the value will be converted to a string.

`log_conditions` accept both the legacy un-prefixed form (`body == "x"`) and the new OTTL path-context form (`log.body == "x"`). Resource and scope paths are also reachable via `resource.attributes["..."]`, `scope.name`, etc. Un-prefixed paths continue to work for now; the parser logs the rewritten statements on startup. It is recommended to switch to the new syntax to avoid breaking changes in the future.

Example:

```yaml theme={null}
exporters:
  honeycomb_marker:
    api_key: {{env:HONEYCOMB_API_KEY}}
    markers:
      # Creates a new marker anytime the exporter sees a k8s event with a reason of Backoff
      - type: k8s-backoff-events
        rules:
          log_conditions:
            - IsMap(log.body) and IsMap(log.body["object"]) and log.body["object"]["reason"] == "Backoff"
      # Path-context syntax allows referencing resource and scope fields directly
      - type: deployment-events
        rules:
          log_conditions:
            - log.body["event"] == "deploy" and resource.attributes["service.name"] == "checkout"
```

## Configuration

### Example Configuration

```yaml theme={null}
honeycomb_marker:
  api_key: "test-apikey"
  markers:
    - type: "fooType"
      rules:
        log_conditions:
          - body == "test"
honeycomb_marker/all_fields:
  api_key: "test-apikey"
  api_url: "https://api.testhost.io"
  sending_queue:
    enabled: true
    num_consumers: 10
    queue_size: 1000
    sizer: requests
  retry_on_failure:
    enabled: true
    initial_interval: 5000000000
    randomization_factor: 0.5
    multiplier: 1.5
    max_interval: 30000000000
    max_elapsed_time: 300000000000
  markers:
    - type: "fooType"
      message_key: "test message"
      url_key: "https://api.testhost.io"
      dataset_slug: "testing"
      rules:
        log_conditions:
          - body == "test"

honeycomb_marker/bad_syntax_log:
  api_key: "test-apikey"
  api_url: "https://api.testhost.io"
  markers:
    - type: "fooType"
      message_key: "test message"
      url_key: "https://api.testhost.io"
      dataset_slug: "__all__"
      rules:
        log_conditions:
          - body == "test"
          - set(attributes["body"], body)

honeycomb_marker/no_conditions:
  api_key: "test-apikey"
  api_url: "https://api.testhost.io"
  markers:
    - type: "test-apikey"
      message_key: "test message"
      url_key: "https://api.testhost.io"
      dataset_slug: "__all__"
      rules:

honeycomb_marker/no_api_key:
  api_key: ""
  api_url: "https://api.testhost.io"
  markers:
    - type: "fooType"
      message_key: "test message"
      url_key: "https://api.testhost.io"
      dataset_slug: "__all__"
      rules:
        log_conditions:
          - body == "test"

honeycomb_marker/no_markers_supplied:
  api_key: "test-apikey"
  api_url: "https://api.testhost.io"
  markers:

honeycomb_marker/no_dataset_slug:
  api_key: "test-apikey"
  api_url: "https://api.testhost.io"
  markers:
    - type: "fooType"
      message_key: "test message"
      url_key: "https://api.testhost.io"
      rules:
        log_conditions:
          - body == "test"

honeycomb_marker/path_context_log:
  api_key: "test-apikey"
  markers:
    - type: "fooType"
      rules:
        log_conditions:
          - log.body == "test"
          - log.attributes["level"] == "ERROR"

honeycomb_marker/path_context_mixed:
  api_key: "test-apikey"
  markers:
    - type: "fooType"
      rules:
        log_conditions:
          - body == "test"
          - resource.attributes["service.name"] == "checkout"

honeycomb_marker/path_context_invalid:
  api_key: "test-apikey"
  markers:
    - type: "fooType"
      rules:
        log_conditions:
          - metric.name == "foo"
```

***

*Last generated: 2026-07-06*
