Skip to content

Regulate

Read events from OpenTelemetry Collector and filter them using local/centralized regulator policy. This module is a component of the Edge Regulator app.

Architecture

graph LR
    A["<div style='font-size: 14px;'>πŸ“‚ OTel Receivers</div><div style='font-size: 10px;'>filelog, otlp</div>"] --> B["<div style='font-size: 14px;'>πŸ“€ syslog</div><div style='font-size: 10px;'>exporter</div>"]
    B --> C["<div style='font-size: 14px;'>πŸ”Œ Unix Socket</div><div style='font-size: 10px;'>RFC5424</div>"]
    C --> D["<div style='font-size: 14px;'>⚑ 10x Regulator</div><div style='font-size: 10px;'>filter policy</div>"]
    D --> E["<div style='font-size: 14px;'>πŸ”Œ Unix Socket</div><div style='font-size: 10px;'>Forward</div>"]
    E --> F["<div style='font-size: 14px;'>πŸ“₯ fluentforward</div><div style='font-size: 10px;'>receiver</div>"]
    F --> G["<div style='font-size: 14px;'>πŸ“€ Final Exporters</div><div style='font-size: 10px;'>ES, Splunk, S3</div>"]

    classDef receiver fill:#2563eb,stroke:#1d4ed8,color:#ffffff,stroke-width:2px,rx:8,ry:8
    classDef exporter fill:#ea580c,stroke:#c2410c,color:#ffffff,stroke-width:2px,rx:8,ry:8
    classDef socket fill:#0891b2,stroke:#0e7490,color:#ffffff,stroke-width:2px,rx:8,ry:8
    classDef engine fill:#7c3aed,stroke:#6d28d9,color:#ffffff,stroke-width:2px,rx:8,ry:8
    classDef output fill:#16a34a,stroke:#15803d,color:#ffffff,stroke-width:2px,rx:8,ry:8

    class A receiver
    class B,F exporter
    class C,E socket
    class D engine
    class G output

Data Flow

  • πŸ“‚ OTel Receivers - Collect logs from files, OTLP, or other sources
  • πŸ“€ Syslog Exporter - Sends ALL logs to Log10x via Unix socket (RFC5424 format)
  • ⚑ 10x Regulator - Applies rate/policy-based filtering, drops noisy events
  • πŸ”Œ Forward Output - Returns FILTERED events via Forward protocol
  • πŸ“₯ FluentForward Receiver - OTel Collector receives filtered events
  • πŸ“€ Final Exporters - Only filtered events ship to final destinations

Key Characteristics

Feature Description
🚦 Rate Limiting Filter events based on per-template rate limits
πŸ“‹ Policy-Based Apply local or centralized filtering policies
πŸ’° Cost Control Reduce log volume and costs by dropping noisy events
πŸ”„ Two Pipelines logs/to-tenx sends all, logs/from-tenx receives filtered

Sidecar Relay

This module configures a Unix socket input/output pair that receives syslog events from OpenTelemetry Collector, applies regulation policy, and returns filtered events via Forward protocol. The sidecar relays regulated events back to OTel Collector to ship to outputs (e.g., Splunk, S3).

Install

See the Log10x Edge Regulator OTel Collector run instructions

Deploy to k8s via Helm

See the Log10x Edge Regulator OTel Collector deployment instructions

Config Files

To configure the OpenTelemetry Collector regulator module, Edit these files.

Below is the default configuration from: regulate/config.yaml.

Edit Online

Edit config.yaml Locally

# πŸ”ŸβŽ 'run' OpenTelemetry Collector regulator configuration
#
# Configure an input that reads events from OpenTelemetry Collector via syslog
# and an output that writes filtered TenXObjects back via Forward protocol.
#
# Architecture:
#   OTel Collector --[syslog/unix]--> Log10x Regulator --[forward/unix]--> OTel Collector --> Final destinations
#
# Only events that pass the regulation filter are returned to OTel Collector.
# Filtered (dropped) events are not sent to the final destination.
#
# Usage:
#   tenx run @run/input/forwarder/otel-collector/regulate @apps/edge/regulator

# Set the 10x pipeline to 'run'
tenx: run

# =============================== Dependencies ================================

include:

  # Include regulator output options (encodeObjects, outputFields, outputEncodeType)
  - run/modules/input/forwarder/otel-collector/regulate/module.yaml

  # Read events from OTel Collector via Unix socket with syslog parsing
  - run/modules/input/forwarder/otel-collector/input

  # Write filtered events back to OTel Collector via Forward protocol
  - run/modules/input/forwarder/otel-collector/output/unix

# ========================= Configuration Options =============================

otelCollector:
  # Write filtered TenXObjects in their original form (plain-text)
  encodeObjects: false

  # 'outputFields' specifies TenXObject field names to emit alongside the main event.
  #  When set, enrichment fields are included in the sidecar output for forwarder post-processing.
  #  Example: outputFields: [level, group, symbolMessage]
  outputFields: []

  # 'outputEncodeType' controls the output format when outputFields is set.
  #  Possible values: 'json' or 'delimited'
  outputEncodeType: delimited

Options

Specify the options below to configure the OpenTelemetry Collector regulator:

Name Description
otelCollectorEncodeObjects Controls whether events written to an OpenTelemetry Collector forwarder are encoded or written in raw form
otelCollectorOutputFields List of TenXObject field names to include alongside the main event in output
otelCollectorOutputEncodeType Output format when outputFields are set. Possible values: [json, delimited]

otelCollectorEncodeObjects

Controls whether events written to an OpenTelemetry Collector forwarder are encoded or written in raw form.

Type Default
Boolean false

Sets the format in which to serialize TenXObjects back to the OpenTelemetry Collector forwarder. If true, write events using the encode function. If false, write events in their original form as read from the OpenTelemetry Collector forwarder using the fullText field.

otelCollectorOutputFields

List of TenXObject field names to include alongside the main event in output.

Type Default
List []

Specifies TenXObject field names to emit alongside the main event text when writing back to the OpenTelemetry Collector forwarder. When empty (default), only the main event field is written. Example fields: level, group, symbolMessage.

otelCollectorOutputEncodeType

Output format when outputFields are set. Possible values: [json, delimited].

Type Default
String delimited

Specifies how the combined output (main event field plus outputFields) is encoded when writing back to the OpenTelemetry Collector forwarder. Possible values:

  • json: formats all fields as a JSON object
  • delimited: formats field values separated by the output delimiter Only takes effect when otelCollectorOutputFields is set.


This module is defined in regulate/module.yaml.