Vector Reducer
Read events from Vector and filter them using local/centralized reducer policy. This module is a component of the Reducer app.
Architecture
graph LR
A["📂 Vector sources<br/>file, kubernetes_logs, …"] --> B["📤 socket sink<br/>Unix / text"]
B --> C["🔌 Unix Socket"]
C --> D["⚡ 10x Reducer<br/>filter policy"]
D --> E["🔌 Unix Socket"]
E --> F["📥 fluent source<br/>Forward / Unix"]
F --> G["📤 Final Sinks<br/>ES, Splunk, S3"]
Data Flow
- 📂 Vector sources — Collect logs from files, Kubernetes, journald, OTLP, etc.
- 📤 Socket Sink — Sends ALL logs to Log10x via Unix socket (newline-delimited text or JSON).
- ⚡ 10x Reducer — Applies rate/policy-based filtering, drops noisy events.
- 🔌 Forward Output — Returns FILTERED events via Fluent Forward protocol.
- 📥 Fluent Source — Vector receives filtered events.
- 📤 Final Sinks — Only filtered events ship to final destinations.
Sidecar Relay
This module configures a Unix socket input/output pair that receives events from Vector, applies regulation policy, and returns filtered events via the Fluent Forward protocol. The sidecar relays regulated events back to Vector to ship to outputs (e.g., Splunk, S3).
Install
See the Log10x Reducer Vector run instructions
Deploy to k8s via Helm (see the Vector Helm chart fork with the tenx.* block).
Config Files
To configure the Vector reducer module, Edit these files.
Below is the default configuration from: regulate/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInRlbngiIDogewogICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgfSwKICAgICJ2ZWN0b3JPdXRwdXQiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpZWxkcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhPYmplY3QgZmllbGQgbmFtZXMgdG8gaW5jbHVkZSBhbG9uZ3NpZGUgdGhlIG1haW4gZXZlbnQgaW4gb3V0cHV0XG5cblNwZWNpZmllcyBUZW5YT2JqZWN0IGZpZWxkIG5hbWVzIHRvIGVtaXQgYWxvbmdzaWRlIHRoZSBtYWluIGV2ZW50IHRleHQgd2hlbiB3cml0aW5nIGJhY2sgdG8gdGhlIFZlY3RvciBmb3J3YXJkZXIuIFdoZW4gZW1wdHkgKGRlZmF1bHQpLCBvbmx5IHRoZSBtYWluIGV2ZW50IGZpZWxkIGlzIHdyaXR0ZW4uIEV4YW1wbGUgZmllbGRzOiBsZXZlbCwgZ3JvdXAsIHN5bWJvbE1lc3NhZ2UuIChEZWZhdWx0OiBbXSkiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVmYXVsdCIgOiBbIF0KICAgICAgICB9LAogICAgICAgICJlbmNvZGVUeXBlIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJPdXRwdXQgZm9ybWF0IHdoZW4gb3V0cHV0RmllbGRzIGFyZSBzZXQuIFBvc3NpYmxlIHZhbHVlczogW2pzb24sIGRlbGltaXRlZF1cblxuU3BlY2lmaWVzIGhvdyB0aGUgY29tYmluZWQgb3V0cHV0IChtYWluIGV2ZW50IGZpZWxkIHBsdXMgb3V0cHV0RmllbGRzKSBpcyBlbmNvZGVkIHdoZW4gd3JpdGluZyBiYWNrIHRvIHRoZSBWZWN0b3IgZm9yd2FyZGVyLiBQb3NzaWJsZSB2YWx1ZXM6IC0gKipqc29uKio6IGZvcm1hdHMgYWxsIGZpZWxkcyBhcyBhIEpTT04gb2JqZWN0IC0gKipkZWxpbWl0ZWQqKjogZm9ybWF0cyBmaWVsZCB2YWx1ZXMgc2VwYXJhdGVkIGJ5IHRoZSBvdXRwdXQgZGVsaW1pdGVyIE9ubHkgdGFrZXMgZWZmZWN0IHdoZW4gdmVjdG9yT3V0cHV0RmllbGRzIGlzIHNldC4gKERlZmF1bHQ6IGRlbGltaXRlZCkiLAogICAgICAgICAgImRlZmF1bHQiIDogImRlbGltaXRlZCIKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' Vector reducer configuration
#
# Configure an input that reads events from Vector via a Unix socket and an
# output that writes regulated TenXObjects back via the Fluent Forward
# protocol. When 'reducerOptimize' is enabled, events are encoded for
# volume reduction.
#
# Architecture:
# Vector --[socket/unix]--> Log10x Reducer --[fluent/unix]--> Vector --> Final destinations
#
# Usage:
# tenx run @run/input/forwarder/vector/regulate @apps/reducer
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include:
# Parent module declaring shared forwarder options (outputEncodeField, outputWriteTemplates, encodeObjects)
- run/modules/input/forwarder/module.yaml
- run/modules/input/forwarder/vector/regulate/module.yaml
# Read events from Vector via Unix socket (newline-delimited records)
- run/modules/input/forwarder/vector/input
# Write filtered events back to Vector via Fluent Forward protocol
- run/modules/input/forwarder/vector/output/unix
# =============================== Mode Options ================================
# Mirrors the otel-collector / fluentbit dispatch — see fluentbit/regulate/config.yaml
# for the full explanation.
outputEncodeField: '$=yield TenXEnv.get("compactReducerLookupFile") ? "encoded=shouldEncode() ? encode() : fullText" : (TenXEnv.get("reducerOptimize") ? "encoded=encode()" : "fullText")'
outputWriteTemplates: $=yield TenXEnv.get("reducerOptimize", false) || TenXEnv.get("compactReducerLookupFile", false)
encodeObjects: $=yield TenXEnv.get("reducerOptimize", false) || TenXEnv.get("compactReducerLookupFile", false)
# ========================= Configuration Options =============================
vector:
# '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 Vector reducer:
| Name | Description |
|---|---|
| vectorOutputFields | List of TenXObject field names to include alongside the main event in output |
| vectorOutputEncodeType | Output format when outputFields are set. Possible values: [json, delimited] |
vectorOutputFields
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 Vector forwarder. When empty (default), only the main event field is written. Example fields: level, group, symbolMessage.
vectorOutputEncodeType
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 Vector forwarder. Possible values:
- json: formats all fields as a JSON object
- delimited: formats field values separated by the output delimiter Only takes effect when vectorOutputFields is set.
This module is defined in regulate/module.yaml.