OTLP/gRPC Logs Output
Writes TenXObject instances and templates to an OpenTelemetry Collector (or any OTLP-compatible receiver) over OTLP/gRPC. Each rendered event is parsed back into a JSON envelope and emitted as an OTLP LogRecord: the configured body field is lifted into LogRecord.body, every other top-level field becomes a log-record attribute.
For an example configuration, see the OpenTelemetry Collector forwarder output.
Config Files
To configure the OTLP/gRPC logs output module, Edit these files.
Below is the default configuration from: otlp/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInRlbngiIDogewogICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgfSwKICAgICJvdXRwdXRPdGxwIiA6IHsKICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgImhvc3QiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJIb3N0IGFkZHJlc3Mgb2YgdGhlIHRhcmdldCBPVExQL2dSUEMgbG9ncyBlbmRwb2ludFxuXG5Ib3N0bmFtZSBvciBJUCBvZiB0aGUgT3BlblRlbGVtZXRyeSBDb2xsZWN0b3IgKG9yIG90aGVyIE9UTFAtY29tcGF0aWJsZSBlbmRwb2ludCkgYWNjZXB0aW5nIGxvZ3MgdmlhIE9UTFAvZ1JQQy4gKERlZmF1bHQ6IDEyNy4wLjAuMSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiMTI3LjAuMC4xIgogICAgICAgICAgfSwKICAgICAgICAgICJwb3J0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVENQIHBvcnQgb2YgdGhlIHRhcmdldCBPVExQL2dSUEMgbG9ncyBlbmRwb2ludFxuXG5UQ1AgcG9ydCBvZiB0aGUgT1RMUC9nUlBDIGxvZ3MgcmVjZWl2ZXIuIE1hdGNoZXMgdGhlIGBlbmRwb2ludGAgb2YgdGhlIENvbGxlY3RvcidzIGBvdGxwYCByZWNlaXZlci4gKERlZmF1bHQ6IDQzMTcpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIjQzMTciCiAgICAgICAgICB9LAogICAgICAgICAgImluc2VjdXJlIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIklmIHRydWUsIGNvbm5lY3Qgb3ZlciBwbGFpbnRleHQgKG5vIFRMUylcblxuV2hlbiB0cnVlLCB0aGUgZ1JQQyBjaGFubmVsIGlzIG9wZW5lZCBpbiBwbGFpbnRleHQgbW9kZSAobm8gVExTKS4gU2V0IHRvIGZhbHNlIG9ubHkgd2hlbiB0aGUgZGVzdGluYXRpb24gcmVxdWlyZXMgVExTLiAoRGVmYXVsdDogdHJ1ZSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAidHJ1ZSIKICAgICAgICAgIH0sCiAgICAgICAgICAiYm9keUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVG9wLWxldmVsIGZpZWxkIG5hbWUgdG8gbGlmdCBpbnRvIHRoZSBPVExQIExvZ1JlY29yZCBib2R5XG5cbk5hbWUgb2YgdGhlIEpTT04gZmllbGQgb24gZWFjaCByZW5kZXJlZCBldmVudCB0byBzZXQgYXMgdGhlIE9UTFAgYExvZ1JlY29yZC5ib2R5YC4gT3RoZXIgdG9wLWxldmVsIGZpZWxkcyBhcmUgZW1pdHRlZCBhcyBsb2ctcmVjb3JkIGF0dHJpYnV0ZXMuIFNldCB0byBhIG5vbi1leGlzdGVudCBmaWVsZCBuYW1lIHRvIHNlbmQgYWxsIGRhdGEgYXMgYXR0cmlidXRlcyAobm8gYm9keSkuIChEZWZhdWx0OiBib2R5KSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJib2R5IgogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRvcC1sZXZlbCBmaWVsZCBuYW1lIHRvIGRyb3AgZnJvbSBvdXRwdXQgKHN5bnRoZXRpYyBlbnZlbG9wZSB0YWcpXG5cbk5hbWUgb2YgdGhlIHN5bnRoZXRpYyBlbnZlbG9wZSB0YWcgZmllbGQgY2FycmllZCBvbiB0aGUgZXZlbnQuIFRoZSBhcHBlbmRlciBkcm9wcyB0aGlzIGZpZWxkIG9uIG91dHB1dCBzbyBpdCBkb2VzIG5vdCBzdXJmYWNlIGFzIGEgbG9nLXJlY29yZCBhdHRyaWJ1dGUgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUuIChEZWZhdWx0OiB0YWcpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogInRhZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiYmF0Y2hTaXplIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgTG9nUmVjb3JkcyB0byBidWZmZXIgYmVmb3JlIGZsdXNoaW5nXG5cbldoZW4gdGhlIGJ1ZmZlcmVkIExvZ1JlY29yZCBjb3VudCByZWFjaGVzIHRoaXMgdmFsdWUsIHRoZSBhcHBlbmRlciBpbW1lZGlhdGVseSBmbHVzaGVzIHZpYSBnUlBDLiAoRGVmYXVsdDogMTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICIxMDAiCiAgICAgICAgICB9LAogICAgICAgICAgImZsdXNoSW50ZXJ2YWxNcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gYWdlIGluIG1zIG9mIGEgYnVmZmVyZWQgTG9nUmVjb3JkIGJlZm9yZSBmb3JjZWQgZmx1c2hcblxuUGVyaW9kaWMgZmx1c2ggaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzLiBCdWZmZXJlZCBMb2dSZWNvcmRzIGFyZSBmbHVzaGVkIGF0IG1vc3QgdGhpcyBvZnRlbiBldmVuIHdoZW4gdGhlIGJhdGNoIHNpemUgaGFzIG5vdCBiZWVuIHJlYWNoZWQuIEEgbG9uZ2VyIGludGVydmFsIGxldHMgbW9yZSByZWNvcmRzIGNvYWxlc2NlIGludG8gYSBzaW5nbGUgT1RMUCBgRXhwb3J0TG9nc1NlcnZpY2VSZXF1ZXN0YCwgd2hpY2ggcHJlc2VydmVzIHRoZSByZXNvdXJjZS9zY29wZSBncm91cGluZyB0aGUgZGVzdGluYXRpb24gQ29sbGVjdG9yIHdvdWxkIHNlZSBpZiBMb2cxMHggd2VyZW4ndCBpbiB0aGUgcGF0aC4gKERlZmF1bHQ6IDEwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIjEwMDAiCiAgICAgICAgICB9LAogICAgICAgICAgImZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBUZW5YT2JqZWN0IGZpZWxkIG5hbWVzIHRvIGVuY29kZVxuXG5OYW1lcyBvZiBUZW5YT2JqZWN0IGludHJpbnNpYy9leHRyYWN0ZWQvY2FsY3VsYXRlZCBmaWVsZHMgdG8gd3JpdGUgb24gZWFjaCBldmVudC4gV2l0aCBgb3V0cHV0T3RscEVuY29kZVR5cGU6IGRlbGltaXRlZGAgYW5kIGEgc2luZ2xlIGZpZWxkIGNhcnJ5aW5nIGEgSlNPTiBlbnZlbG9wZSAoZS5nLiBgZnVsbFRleHRgKSwgdGhlIGFwcGVuZGVyIHJlLXBhcnNlcyB0aGUgZW52ZWxvcGUgdG8gcmVjb3ZlciB0aGUgb3JpZ2luYWwga2V5L3ZhbHVlIHN0cnVjdHVyZS4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAid3JpdGVPYmplY3RzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIklmIHRydWUsIGVtaXQgVGVuWE9iamVjdCBmaWVsZCB2YWx1ZXMgdG8gdGhpcyBvdXRwdXRcblxuQ29udHJvbHMgd2hldGhlciBpbnN0YW5jZSBmaWVsZCB2YWx1ZXMgZm9yIFRlblhPYmplY3RzIHBhc3NlZCB0byB0aGlzIG91dHB1dCBhcmUgd3JpdHRlbi4gRGlzYWJsZSB0byBrZWVwIHRlbXBsYXRlcy1vbmx5IGVtaXNzaW9uIGFjdGl2ZSB3aXRob3V0IGZlcnJ5aW5nIGV2ZXJ5IGV2ZW50IHBheWxvYWQgb3ZlciBPVExQL2dSUEMuIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJ0cnVlIgogICAgICAgICAgfSwKICAgICAgICAgICJ3cml0ZVRlbXBsYXRlcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJZiB0cnVlLCBlbWl0IG5ldyBUZW5YVGVtcGxhdGVzIHRvIHRoaXMgb3V0cHV0XG5cbkNvbnRyb2xzIHdoZXRoZXIgdGVtcGxhdGUgdmFsdWVzIGZvciBUZW5YT2JqZWN0cyBwYXNzZWQgdG8gdGhpcyBvdXRwdXQgYXJlIHdyaXR0ZW4uIEVhY2ggbmV3IHRlbXBsYXRlIGlzIGVtaXR0ZWQgYXQgbW9zdCBvbmNlLiBFbmFibGUgdGhpcyBhbG9uZ3NpZGUgYHJlY2VpdmVyT3B0aW1pemUgdHJ1ZWAgc28gdGhlIGRlc3RpbmF0aW9uIENvbGxlY3RvciBjYW4gZGVjb2RlIHRoZSBjb21wYWN0IGJvZHkgdXNpbmcgdGhlIG1hdGNoaW5nIHRlbXBsYXRlLiAoRGVmYXVsdDogZmFsc2UpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImZhbHNlIgogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiB0aGF0IGFuIFRlblhPYmplY3QgbXVzdCBldmFsdWF0ZSBhcyAndHJ1dGh5JyBhZ2FpbnN0IHRvIGJlIHdyaXR0ZW4gdG8gdGhpcyBvdXRwdXRcblxuU3BlY2lmaWVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgYSBUZW5YT2JqZWN0IG11c3QgZXZhbHVhdGUgYXMgdHJ1dGh5IHRvIGJlIHdyaXR0ZW4gdG8gdGhpcyBvdXRwdXQuIEZvciBleGFtcGxlLCBgb3V0cHV0T3RscEZpbHRlcjogdGhpcy50aW1lc3RhbXBgIHdpbGwgb25seSBlbWl0IFRlblhPYmplY3RzIHdob3NlIGludHJpbnNpYyBgdGltZXN0YW1wYCBmaWVsZCBpcyBzZXQuIgogICAgICAgICAgfSwKICAgICAgICAgICJlbmNvZGVUeXBlIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIG91dHB1dCBmb3JtYXQgaW4gd2hpY2ggdG8gZW5jb2RlIFRlblhPYmplY3QgdmFsdWVzLiBQb3NzaWJsZSB2YWx1ZXMgW2pzb24sIGRlbGltaXRlZF1cblxuV2lyZSBlbmNvZGluZyB1c2VkIGJ5IHRoZSBlbmdpbmUgdG8gcmVuZGVyIGZpZWxkcyBpbnRvIHRoZSBieXRlcyB0aGUgYXBwZW5kZXIgcmVjZWl2ZXMuIFRoZSBhcHBlbmRlciBhbHdheXMgcGFyc2VzIHRoZSByZW5kZXJlZCB0ZXh0IGFzIEpTT047IHdpdGggYGRlbGltaXRlZGAgYW5kIGEgc2luZ2xlIEpTT04tc2hhcGVkIGZpZWxkIChgZnVsbFRleHRgKSwgdGhlIGVudmVsb3BlIGlzIHJlY292ZXJlZCBpbnRhY3QuIChEZWZhdWx0OiBkZWxpbWl0ZWQpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImRlbGltaXRlZCIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5jb2RlRGVsaW1pdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIGRlbGltaXRlciBwbGFjZWQgYmV0d2VlbiBrZXkgYW5kIHZhbHVlcyBwYWlycyBpZiAnb3V0cHV0T3RscEVuY29kZVR5cGUnIGlzICdkZWxpbWl0ZWQnXG5cbkRlbGltaXRlciB1c2VkIHRvIHNlcGFyYXRlIFRlblhPYmplY3QgZmllbGQgdmFsdWVzIHdoZW4gYG91dHB1dE90bHBFbmNvZGVUeXBlYCBpcyBgZGVsaW1pdGVkYC4gSWdub3JlZCB3aGVuIGBvdXRwdXRPdGxwRW5jb2RlVHlwZWAgaXMgYGpzb25gICh3aGljaCBlbWl0cyBhIEpTT04gb2JqZWN0IGluc3RlYWQgb2YgZGVsaW1pdGVkIHZhbHVlcykuIChEZWZhdWx0OiAsKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICIsIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHRydWUKfQ==
# 🔟❎ 'run' OTLP/gRPC output configuration
# Configure OTLP/gRPC outputs to write TenXObject instance and template field values
# to an OpenTelemetry Collector (or any OTLP-compatible logs receiver).
# To learn more see https://doc.log10x.com/run/output/event/otlp
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include:
- run/modules/output/event/otlp
# ============================== Output Options ===============================
# Multiple OTLP/gRPC outputs can be defined below
outputOtlp:
# 'host' specifies the host address of target OTLP/gRPC logs endpoint
- host: $=TenXEnv.get("TENX_REMOTE_OTLP_HOST", "127.0.0.1")
# 'port' specifies the host port of target OTLP/gRPC logs endpoint
port: $=parseInt(TenXEnv.get("TENX_REMOTE_OTLP_PORT", 4317))
# 'insecure' sets whether to connect over plaintext (no TLS).
# To learn more see https://doc.log10x.com/run/output/event/otlp/#outputotlpinsecure
insecure: "true"
# 'filter' sets a JavaScript expression that TenXObjects must evaluate as truthy to write to the output.
# To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
filter: null
# 'fields' defines the fields to write for each TenXObject sent to this output.
# To learn more see https://doc.log10x.com/run/output/stream/#outputfields
fields:
- fullText # https://doc.log10x.com/api/js/#fulltext-string
# 'encodeType' specifies how 'fields' are encoded to output. Possible values: [json, delimited].
# To learn more see https://doc.log10x.com/run/output/event/otlp/#outputotlpencodetype
encodeType: delimited
# 'writeTemplates' controls whether to write new templates for TenXObjects written to this output.
writeTemplates: "true"
Options
Specify the options below to configure multiple OTLP/gRPC logs output:
| Name | Description | Category |
|---|---|---|
| outputOtlpHost | Host address of the target OTLP/gRPC logs endpoint | Host |
| outputOtlpPort | TCP port of the target OTLP/gRPC logs endpoint | Host |
| outputOtlpInsecure | If true, connect over plaintext (no TLS) | Host |
| outputOtlpBodyField | Top-level field name to lift into the OTLP LogRecord body | Encoding |
| outputOtlpTagField | Top-level field name to drop from output (synthetic envelope tag) | Encoding |
| outputOtlpBatchSize | Maximum number of LogRecords to buffer before flushing | Encoding |
| outputOtlpFlushIntervalMs | Maximum age in ms of a buffered LogRecord before forced flush | Encoding |
| outputOtlpFields | List of TenXObject field names to encode | Encoding |
| outputOtlpWriteObjects | If true, emit TenXObject field values to this output | Encoding |
| outputOtlpWriteTemplates | If true, emit new TenXTemplates to this output | Encoding |
| outputOtlpFilter | A JavaScript expression that an TenXObject must evaluate as 'truthy' against to be written to this output | Encoding |
| outputOtlpEncodeType | The output format in which to encode TenXObject values. Possible values [json, delimited] | Encoding |
| outputOtlpEncodeDelimiter | The delimiter placed between key and values pairs if 'outputOtlpEncodeType' is 'delimited' | Encoding |
Host
outputOtlpHost
Host address of the target OTLP/gRPC logs endpoint.
| Type | Default | Category |
|---|---|---|
| String | 127.0.0.1 | Host |
Hostname or IP of the OpenTelemetry Collector (or other OTLP-compatible endpoint) accepting logs via OTLP/gRPC.
outputOtlpPort
TCP port of the target OTLP/gRPC logs endpoint.
| Type | Default | Category |
|---|---|---|
| String | 4317 | Host |
TCP port of the OTLP/gRPC logs receiver. Matches the endpoint of the
Collector's otlp receiver.
outputOtlpInsecure
If true, connect over plaintext (no TLS).
| Type | Default | Category |
|---|---|---|
| String | true | Host |
When true, the gRPC channel is opened in plaintext mode (no TLS). Set to false only when the destination requires TLS.
Encoding
outputOtlpBodyField
Top-level field name to lift into the OTLP LogRecord body.
| Type | Default | Category |
|---|---|---|
| String | body | Encoding |
Name of the JSON field on each rendered event to set as the OTLP
LogRecord.body. Other top-level fields are emitted as log-record
attributes. Set to a non-existent field name to send all data as
attributes (no body).
outputOtlpTagField
Top-level field name to drop from output (synthetic envelope tag).
| Type | Default | Category |
|---|---|---|
| String | tag | Encoding |
Name of the synthetic envelope tag field carried on the event. The appender drops this field on output so it does not surface as a log-record attribute on the destination side.
outputOtlpBatchSize
Maximum number of LogRecords to buffer before flushing.
| Type | Default | Category |
|---|---|---|
| String | 100 | Encoding |
When the buffered LogRecord count reaches this value, the appender immediately flushes via gRPC.
outputOtlpFlushIntervalMs
Maximum age in ms of a buffered LogRecord before forced flush.
| Type | Default | Category |
|---|---|---|
| String | 1000 | Encoding |
Periodic flush interval in milliseconds. Buffered LogRecords are
flushed at most this often even when the batch size has not been
reached. A longer interval lets more records coalesce into a single
OTLP ExportLogsServiceRequest, which preserves the resource/scope
grouping the destination Collector would see if Log10x weren't in
the path.
outputOtlpFields
List of TenXObject field names to encode.
| Type | Default | Category |
|---|---|---|
| List | [] | Encoding |
Names of TenXObject intrinsic/extracted/calculated fields to write on
each event. With outputOtlpEncodeType: delimited and a single field
carrying a JSON envelope (e.g. fullText), the appender re-parses the
envelope to recover the original key/value structure.
outputOtlpWriteObjects
If true, emit TenXObject field values to this output.
| Type | Default | Category |
|---|---|---|
| String | true | Encoding |
Controls whether instance field values for TenXObjects passed to this output are written. Disable to keep templates-only emission active without ferrying every event payload over OTLP/gRPC.
outputOtlpWriteTemplates
If true, emit new TenXTemplates to this output.
| Type | Default | Category |
|---|---|---|
| String | false | Encoding |
Controls whether template values for TenXObjects passed to this output
are written. Each new template is emitted at most once. Enable this
alongside receiverOptimize true so the destination Collector can
decode the compact body using the matching template.
outputOtlpFilter
A JavaScript expression that an TenXObject must evaluate as 'truthy' against to be written to this output.
| Type | Default | Category |
|---|---|---|
| String | "" | Encoding |
Specifies a JavaScript expression that a TenXObject must evaluate as
truthy to be written to this output. For example,
outputOtlpFilter: this.timestamp will only emit TenXObjects whose
intrinsic timestamp field is set.
outputOtlpEncodeType
The output format in which to encode TenXObject values. Possible values [json, delimited].
| Type | Default | Category |
|---|---|---|
| String | delimited | Encoding |
Wire encoding used by the engine to render fields into the bytes the
appender receives. The appender always parses the rendered text as
JSON; with delimited and a single JSON-shaped field (fullText),
the envelope is recovered intact.
outputOtlpEncodeDelimiter
The delimiter placed between key and values pairs if 'outputOtlpEncodeType' is 'delimited'.
| Type | Default | Category |
|---|---|---|
| String | , | Encoding |
Delimiter used to separate TenXObject field values when
outputOtlpEncodeType is delimited. Ignored when outputOtlpEncodeType
is json (which emits a JSON object instead of delimited values).
This module is defined in otlp/module.yaml.