Filebeat
Runs 10x Engine as a sidecar to Filebeat for reporting, receiving, and optimizing events before they ship to their destination (Elasticsearch, Logstash, Kafka, S3, โฆ). Filebeat's plugin model doesn't expose the Fluent Forward protocol used by other forwarders, so Log10x and Filebeat exchange events through Filebeat's own native extension points instead: a script processor on every input emits enriched events to Filebeat's stdout, and a unix input loads processed events back over a local socket. Filebeat runs as a child process of the sidecar (filebeat -e 2>&1 | tenx ...); works against any stock Filebeat build (Linux/macOS/Windows) and the upstream elastic/filebeat Helm chart on Kubernetes via an image swap to the prebuilt log10x/filebeat-10x image.
Architecture
graph LR
A["<div style='font-size: 14px;'>๐ Inputs</div><div style='font-size: 10px;'>filestream, container, log</div>"] --> F["<div style='font-size: 14px;'>๐งช script processor</div><div style='font-size: 10px;'>tenx-*.js</div>"]
F --> B["<div style='font-size: 14px;'>๐ค stdout</div><div style='font-size: 10px;'>JSON line per event</div>"]
B --> E["<div style='font-size: 14px;'>โก 10x Engine</div><div style='font-size: 10px;'>Receive/Optimize</div>"]
E --> C["<div style='font-size: 14px;'>๐ unix input</div><div style='font-size: 10px;'>/tmp/tenx_filebeat.sock</div>"]
C --> D["<div style='font-size: 14px;'>๐ค Outputs</div><div style='font-size: 10px;'>ES, Logstash, Kafka, S3</div>"]
classDef input fill:#2563eb,stroke:#1d4ed8,color:#ffffff,stroke-width:2px,rx:8,ry:8
classDef filter fill:#ea580c,stroke:#c2410c,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 socket fill:#0891b2,stroke:#0e7490,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 input
class B filter
class C socket
class D output
class E engine
class F filter
Data Flow
- ๐ Inputs โ Your existing Filebeat inputs (
filestream,container,log,journald, โฆ) collect events and pass them through any processors you've configured on the input (add_kubernetes_metadata,decode_json_fields,dissect, โฆ). Enrichment runs here exactly once before the event is handed off to Log10x. - ๐งช script processor โ A small JavaScript processor on each input (
tenx-receive.jsfor the Receiver,tenx-report.jsfor the Reporter) marks the event, writes it as a single JSON line to Filebeat's stdout, and cancels it from Filebeat's normal output path. This is what keeps your destinations from seeing the unprocessed event. - โก 10x Engine โ Filebeat runs as a child process of the sidecar (
filebeat -e 2>&1 | tenx ...), so its stdout is the engine's stdin. The Receiver app applies rate/policy-based filtering and optionally compacts events for volume reduction. The engine also picks Filebeat's own log lines off the same stream and replays them to Filebeat's configured log destinations (logging.to_files,logging.to_stderr,logging.to_syslog) โ so enabling the integration doesn't change where Filebeat logs go. - ๐ unix input โ Processed events come back to Filebeat through a
unixinput listening on/tmp/tenx_filebeat.sock(loaded viafilebeat.config.inputsfrom a bundled snippet โ same path on both sides). The input's processors decode the JSON payload and remove the script-processor marker, so the second pass oftenx-receive.jslets the event through unmodified. - ๐ค Outputs โ Your destination output (
elasticsearch,logstash,kafka,file, โฆ) ships the returned event.output.consoleis not supported โ it would write to the same stdout pipe that carries events to the engine and corrupt the stream. Useoutput.filefor local testing without a real destination.
What an event looks like on the way back
The record structure of the original Filebeat event is preserved end-to-end โ every field comes back to your destination output with the same name and same position. What changes depends on the Receiver app mode:
| Mode | Difference vs the event Filebeat collected |
|---|---|
| Receive (default) | None. Same record. |
Receive + symbolMessageHashField <name> |
Adds one new field with the symbol-pattern hash (a stable identifier for the message pattern โ usable as a dedup key, metric dimension, or correlation ID). |
receiverOptimize true |
The value of the message field is replaced with a compact encoded form. A separate tenx-template event is emitted carrying the template needed to decode it (Filebeat's decode_json_fields processor on the return socket uses the embedded templateHashDocId to set the Elasticsearch document ID). All other fields stay verbatim. |
receiverOptimize true + symbolMessageHashField <name> |
Both of the above. |
Internally, Log10x's Filebeat input module reads the message text from the event's message field and surfaces the input source (log.file.path, container, etc.) for use in rate-based grouping. When the Receiver app is configured with k8sExtractorName: filebeatK8s, the kubernetes.* sub-object stamped by add_kubernetes_metadata is also materialized as enrichment fields for message-pattern and rate filtering.
Key Files
| File | Purpose |
|---|---|
stream.yaml |
Stdin input (Filebeat events + Filebeat log lines) and Unix-socket output stream definitions |
log4j2.yaml |
Appenders that replay Filebeat's own log lines to the destinations declared in filebeat.yml's logging.* |
script/tenx-receive.js |
Receiver processor โ marks + emits events to stdout, cancels them so they loop back over the socket |
script/tenx-report.js |
Reporter processor โ read-only variant that emits to stdout without canceling |
conf/tenxNix.yml |
unix input snippet for Linux/macOS โ referenced from your filebeat.yml via filebeat.config.inputs.path, and read by the engine to discover the socket address |
conf/tenxWin.yml |
Same as above for Windows (uses ${TEMP}\tenx_filebeat.sock) |
Quickstart
1. Wire up your Filebeat config โ load the return-path unix input and add the script processor to your inputs:
# Loads the unix input that receives processed events back from Log10x.
filebeat.config.inputs:
enabled: true
# Linux/macOS
path: ${TENX_MODULES}/pipelines/run/modules/input/forwarder/filebeat/conf/tenxNix.yml
# Windows
# path: ${TENX_MODULES}/pipelines/run/modules/input/forwarder/filebeat/conf/tenxWin.yml
filebeat.inputs:
- type: filestream
id: app-logs
paths:
- /var/log/app.log
processors:
# Hands every event off to Log10x via Filebeat's stdout, then cancels
# it locally so destinations only see events that came back on the
# unix socket.
- script:
lang: javascript
file: ${TENX_MODULES}/pipelines/run/modules/input/forwarder/filebeat/script/tenx-receive.js
# Use any non-stdout output โ output.console would collide with the stdout
# pipe that carries events to the engine.
output.elasticsearch:
hosts: ["https://elasticsearch:9200"]
2. Run Filebeat through Log10x โ Filebeat is launched as a child process of the sidecar, so start them as a single pipeline:
For Kubernetes deployment, swap the chart's default Filebeat image for the prebuilt log10x/filebeat-10x on top of the upstream elastic/filebeat chart โ see the Helm chart overlay. For read-only Reporter mode (no event diversion) swap tenx-receive.js for tenx-report.js and run against @apps/reporter โ see the Reporter Quickstart.
Config Files
To configure the Filebeat module, Edit these files.
Below is the default configuration from: filebeat/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInRlbngiIDogewogICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgfSwKICAgICJmaWxlYmVhdCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAib3V0cHV0IiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAiZmllbGRzIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhPYmplY3QgZmllbGQgbmFtZXMgdG8gaW5jbHVkZSBhbG9uZ3NpZGUgdGhlIG1haW4gZXZlbnQgaW4gb3V0cHV0XG5cblNwZWNpZmllcyBUZW5YT2JqZWN0IGZpZWxkIG5hbWVzIHRvIGVtaXQgYWxvbmdzaWRlIHRoZSBtYWluIGV2ZW50IHRleHQgd2hlbiB3cml0aW5nIGJhY2sgdG8gdGhlIEZpbGViZWF0IGZvcndhcmRlci4gV2hlbiBlbXB0eSAoZGVmYXVsdCksIG9ubHkgdGhlIG1haW4gZXZlbnQgZmllbGQgaXMgd3JpdHRlbi4gRXhhbXBsZSBmaWVsZHM6IGxldmVsLCBncm91cCwgc3ltYm9sTWVzc2FnZS4gKERlZmF1bHQ6IFtdKSIsCiAgICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAiZGVmYXVsdCIgOiBbIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImVuY29kZVR5cGUiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiT3V0cHV0IGZvcm1hdCB3aGVuIG91dHB1dEZpZWxkcyBhcmUgc2V0LiBQb3NzaWJsZSB2YWx1ZXM6IFtqc29uLCBkZWxpbWl0ZWRdXG5cblNwZWNpZmllcyBob3cgdGhlIGNvbWJpbmVkIG91dHB1dCAobWFpbiBldmVudCBmaWVsZCBwbHVzIG91dHB1dEZpZWxkcykgaXMgZW5jb2RlZCB3aGVuIHdyaXRpbmcgYmFjayB0byB0aGUgRmlsZWJlYXQgZm9yd2FyZGVyLiBQb3NzaWJsZSB2YWx1ZXM6IC0gKipqc29uKio6IGZvcm1hdHMgYWxsIGZpZWxkcyBhcyBhIEpTT04gb2JqZWN0IC0gKipkZWxpbWl0ZWQqKjogZm9ybWF0cyBmaWVsZCB2YWx1ZXMgc2VwYXJhdGVkIGJ5IHRoZSBvdXRwdXQgZGVsaW1pdGVyIE9ubHkgdGFrZXMgZWZmZWN0IHdoZW4gZmlsZWJlYXRPdXRwdXRGaWVsZHMgaXMgc2V0LiAoRGVmYXVsdDogZGVsaW1pdGVkKSIsCiAgICAgICAgICAgICAgImRlZmF1bHQiIDogImRlbGltaXRlZCIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImNvbmZpZ1BhdGgiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoXG5cblBhdGggY29udGFpbmluZyBGaWxlYmVhdCBjb25maWd1cmF0aW9uIGZpbGVzIgogICAgICAgIH0sCiAgICAgICAgImxvZ3NQYXRoIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMb2cgZmlsZSBwYXRoXG5cblBhdGggY29udGFpbmluZyBGaWxlYmVhdCBsb2cgZmlsZXMiCiAgICAgICAgfSwKICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmlsZWJlYXQgbG9nIG5hbWVcblxuTmFtZSBvZiB0aGUgRmlsZWJlYXQgZmlsZXMgd2hlcmUgdGhlIGxvZ3MgYXJlIHdyaXR0ZW4gdG8iCiAgICAgICAgfSwKICAgICAgICAicGF0aCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiT3V0cHV0IHBhdGggZm9yIEZpbGViZWF0IGxvZ3NcblxuQ29uZmlndXJlcyB0aGUgcGF0aCB3aGVyZSB0aGUgRmlsZWJlYXQgbG9ncyBhcmUgd3JpdHRlbiIKICAgICAgICB9LAogICAgICAgICJpbnRlcnZhbCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRW5hYmxlIEZpbGViZWF0IGxvZyBmaWxlIHJvdGF0aW9uXG5cbkVuYWJsZSBGaWxlYmVhdCBsb2cgZmlsZSByb3RhdGlvbiBvbiB0aW1lIGludGVydmFscyBpbiBhZGRpdGlvbiB0byB0aGUgc2l6ZS1iYXNlZCByb3RhdGlvbiIKICAgICAgICB9LAogICAgICAgICJyb3RhdGUiIDogewogICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAgICJldmVyeUJ5dGVzIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmlsZWJlYXQgbG9nIGZpbGUgc2l6ZSBsaW1pdFxuXG5Db25maWd1cmUgRmlsZWJlYXQgbG9nIGZpbGUgc2l6ZSBsaW1pdC4gSWYgbGltaXQgaXMgcmVhY2hlZCwgbG9nIGZpbGUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJvdGF0ZWQgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm9uU3RhcnR1cCIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJSb3RhdGUgZXhpc3RpbmcgRmlsZWJlYXQgbG9ncyB1cG9uIHN0YXJ0dXBcblxuUm90YXRlIGV4aXN0aW5nIEZpbGViZWF0IGxvZ3Mgb24gc3RhcnR1cCByYXRoZXIgdGhhbiBhcHBlbmRpbmcgdGhlbSB0byB0aGUgZXhpc3RpbmcgZmlsZSAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInBlcm1pc3Npb25zIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMb2cgZmlsZSBwZXJtaXNzaW9ucyBtYXNrXG5cblBPU0lYIHBlcm1pc3Npb25zIG1hc2sgdG8gYXBwbHkgd2hlbiByb3RhdGluZyBGaWxlYmVhdCBsb2cgZmlsZXMiCiAgICAgICAgfSwKICAgICAgICAia2VlcEZpbGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTnVtYmVyIG9mIHJvdGF0ZWQgRmlsZWJlYXQgbG9nIGZpbGVzIHRvIGtlZXBcblxuTnVtYmVyIG9mIHJvdGF0ZWQgRmlsZWJlYXQgbG9nIGZpbGVzIHRvIGtlZXAuIE9sZGVzdCBmaWxlcyB3aWxsIGJlIGRlbGV0ZWQgZmlyc3QgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICB9LAogICAgICAgICJpbnB1dFJlYWR5IiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnRlcm5hbFxuXG5BbiBpbnRlcm5hbCBtYXJrZXIgdXNlZCB0byBpbmRpY2F0ZSBGaWxlYmVhdCBpbnB1dCByZWFkeSIKICAgICAgICB9LAogICAgICAgICJsb2dnaW5nVG8iIDogewogICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAgICJmaWxlcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJDb250cm9sIGxvZyBmaWxlIHJvdGF0aW9uXG5cblNldHMgRmlsZWJlYXQgbG9nZ2luZyB0byByb3RhdGluZyBmaWxlcy4gU2V0IGxvZ2dpbmcudG9fZmlsZXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBsb2dnaW5nIHRvIGZpbGVzLiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN0ZGVyciIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWxlYmVhdCBsb2dnaW5nIHRvIHN0ZGVyclxuXG5GaWxlYmVhdCBsb2dnaW5nIHRvIHN0ZGVyci4gU2V0IGxvZ2dpbmcudG9fc3RkZXJyIHRvIGZhbHNlIHRvIGRpc2FibGUgbG9nZ2luZyB0byBzdGRlcnIuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3lzbG9nIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkZpbGViZWF0IGxvZ2dpbmcgdG8gc3lzbG9nXG5cbkZpbGViZWF0IGxvZ2dpbmcgdG8gc3lzbG9nLiBTZXQgbG9nZ2luZy50b19zeXNsb2cgdG8gZmFsc2UgdG8gZGlzYWJsZSBsb2dnaW5nIHRvIHN5c2xvZy4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAicmF3T3V0cHV0VW5peFNvY2tldEFkZHJlc3MiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnRlcm5hbFxuXG5JbnRlcm5hbCB2YXJpYWJsZSB1c2VkIHRvIGxvYWQgc29ja2V0IGFkZHJlc3MgdG8gYmUgdXNlZCBpbiBtdWx0aXBsZSBlbmNvZGVycyIKICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=
# ๐โ 'run' Filebeat receiver configuration
#
# Configures an input that reads events from a Filebeat forwarder (Filebeat
# runs as a subprocess of the sidecar) and an output that writes processed
# events back to Filebeat over a Unix domain socket.
# When 'receiverOptimize' is enabled, events are encoded for volume reduction.
#
# To learn more see https://doc.log10x.com/run/input/forwarder/filebeat/
tenx: run
# =============================== Dependencies ================================
include:
- run/input/forwarder/config.yaml
- run/modules/input/forwarder/filebeat
# ============================== Filebeat Options ==============================
filebeat:
# ----------------------------- Output Options ----------------------------
output:
# 'fields' 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: fields: [level, group, symbolMessage]
fields: []
# 'encodeType' controls the output format when fields is set.
# Possible values: 'json' or 'delimited'
encodeType: delimited
Options
Specify the options below to configure the Filebeat:
| Name | Description | Category |
|---|---|---|
| filebeatOutputFields | List of TenXObject field names to include alongside the main event in output | Output |
| filebeatOutputEncodeType | Output format when outputFields are set. Possible values: [json, delimited] | Output |
| filebeatConfigPath | Configuration file path | FilebeatLog |
| filebeatLogsPath | Log file path | FilebeatLog |
| filebeatLoggingToFiles | Control log file rotation | FilebeatLog |
| filebeatLoggingToStderr | Filebeat logging to stderr | FilebeatLog |
| filebeatLoggingToSyslog | Filebeat logging to syslog | FilebeatLog |
| filebeatName | Filebeat log name | FilebeatLog |
| filebeatPath | Output path for Filebeat logs | FilebeatLog |
| filebeatInterval | Enable Filebeat log file rotation | FilebeatLog |
| filebeatRotateEveryBytes | Filebeat log file size limit | FilebeatLog |
| filebeatRotateOnStartup | Rotate existing Filebeat logs upon startup | FilebeatLog |
| filebeatPermissions | Log file permissions mask | FilebeatLog |
| filebeatKeepFiles | Number of rotated Filebeat log files to keep | FilebeatLog |
| rawOutputUnixSocketAddress | Internal | Internal |
| filebeatInputReady | Internal | Internal |
Output
filebeatOutputFields
List of TenXObject field names to include alongside the main event in output.
| Type | Default | Category |
|---|---|---|
| List | [] | Output |
Specifies TenXObject field names to emit alongside the main event text when writing back to the Filebeat forwarder. When empty (default), only the main event field is written. Example fields: level, group, symbolMessage.
filebeatOutputEncodeType
Output format when outputFields are set. Possible values: [json, delimited].
| Type | Default | Category |
|---|---|---|
| String | delimited | Output |
Specifies how the combined output (main event field plus outputFields) is encoded when writing back to the Filebeat forwarder. Possible values:
- json: formats all fields as a JSON object
- delimited: formats field values separated by the output delimiter Only takes effect when filebeatOutputFields is set.
FilebeatLog
filebeatConfigPath
Configuration file path.
| Type | Default | Category |
|---|---|---|
| File | FilebeatLog |
Path containing Filebeat configuration files.
filebeatLogsPath
Log file path.
| Type | Default | Category |
|---|---|---|
| File | FilebeatLog |
Path containing Filebeat log files.
filebeatLoggingToFiles
Control log file rotation.
| Type | Default | Category |
|---|---|---|
| Boolean | false | FilebeatLog |
Sets Filebeat logging to rotating files. Set logging.to_files to false to disable logging to files.
filebeatLoggingToStderr
Filebeat logging to stderr.
| Type | Default | Category |
|---|---|---|
| Boolean | false | FilebeatLog |
Filebeat logging to stderr. Set logging.to_stderr to false to disable logging to stderr.
filebeatLoggingToSyslog
Filebeat logging to syslog.
| Type | Default | Category |
|---|---|---|
| Boolean | false | FilebeatLog |
Filebeat logging to syslog. Set logging.to_syslog to false to disable logging to syslog.
filebeatName
Filebeat log name.
| Type | Default | Category |
|---|---|---|
| File | FilebeatLog |
Name of the Filebeat files where the logs are written to.
filebeatPath
Output path for Filebeat logs.
| Type | Default | Category |
|---|---|---|
| File | FilebeatLog |
Configures the path where the Filebeat logs are written.
filebeatInterval
Enable Filebeat log file rotation.
| Type | Default | Category |
|---|---|---|
| String | "" | FilebeatLog |
Enable Filebeat log file rotation on time intervals in addition to the size-based rotation.
filebeatRotateEveryBytes
Filebeat log file size limit.
| Type | Default | Category |
|---|---|---|
| Number | 0 | FilebeatLog |
Configure Filebeat log file size limit. If limit is reached, log file will be automatically rotated.
filebeatRotateOnStartup
Rotate existing Filebeat logs upon startup.
| Type | Default | Category |
|---|---|---|
| Boolean | false | FilebeatLog |
Rotate existing Filebeat logs on startup rather than appending them to the existing file.
filebeatPermissions
Log file permissions mask.
| Type | Default | Category |
|---|---|---|
| String | "" | FilebeatLog |
POSIX permissions mask to apply when rotating Filebeat log files.
filebeatKeepFiles
Number of rotated Filebeat log files to keep.
| Type | Default | Category |
|---|---|---|
| Number | 0 | FilebeatLog |
Number of rotated Filebeat log files to keep. Oldest files will be deleted first.
Internal
rawOutputUnixSocketAddress
Internal.
| Type | Default | Category |
|---|---|---|
| String | "" | Internal |
Internal variable used to load socket address to be used in multiple encoders.
filebeatInputReady
Internal.
| Type | Default | Category |
|---|---|---|
| String | "" | Internal |
An internal marker used to indicate Filebeat input ready.
This module is defined in filebeat/module.yaml.