Process Output
Spawns a process and writes TenXObject instance and template field values to its stdin.
This output enables the runtime to leverage external processes (e.g., FluentBit) as a means of transmitting processed data to local and remote destinations.
Configuration
To configure the Process output module, Edit these settings.
Below is the default configuration from: process/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInByb2NPdXQiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiY29tbWFuZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkNvbW1hbmQgdG8gbGF1bmNoXG5cblNwZWNpZmllcyB0aGUgY29tbWFuZCB0byBleGVjdXRlIHRvIGxhdW5jaCB0aGUgc3ViLXByb2Nlc3MuIFRoaXMgY29tbWFuZCBjYW4gc3BlY2lmeSBhIHNoaXBwZXIgKGUuZy4sIEZsdWVudCBCaXQsIEZpbGViZWF0KSBvciBPUyB1dGlsIChlLmcuLCBuYykgcHJvY2VzcyB0aGF0IHdpbGwgZm9yd2FyZCB0aGUgb3V0cHV0IG9iamVjdCB2YWx1ZXMgdG8gYSByZW1vdGUgZGVzdGluYXRpb24uIgogICAgICAgICAgfSwKICAgICAgICAgICJhcmdzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgc3Bhd25lZCBzdWItcHJvY2Vzc1xuXG5MaXN0IG9mIHZhbHVlcyB0byBwYXNzIGFzIHN0YXJ0dXAgYXJndW1lbnRzIHRvIHRoZSBzcGF3bmVkIHN1Yi1wcm9jZXNzLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJsYXp5TGF1bmNoIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0cyB3aGV0aGVyIHRvIGxhdW5jaCB0aGUgcHJvY2VzcyBvbi1kZW1hbmRcblxuQ29udHJvbHMgd2hldGhlciB0byBzcGF3biB0aGUgdGFyZ2V0IHN1Yi1wcm9jZXNzIHVwb24gdGhlIGNyZWF0aW9uIG9mIHRoZSBvdXRwdXQgb3Igb24tZGVtYW5kLiBJZiB0cnVlLCBsYXVuY2ggdGhlIHN1Yi1wcm9jZXNzIHdoZW4gdGhlIGZpcnN0IFRlblhPYmplY3QgaW5zdGFuY2UgaXMgd3JpdHRlbiB0byBpdHMgc3RkaW4uIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJzdGFydHVwV2FpdE1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJXYWl0IHRpbWUgZm9yIHByb2Nlc3MgdG8gc3RhcnR1cFxuXG5TZXRzIGEgc3RhcnR1cCBkZWxheSB3YWl0IHRpbWUgaW4gbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgcHJvY2VzcyBpcyBjb25zaWRlcmVkIGF2YWlsYWJsZSBmb3IgZXZlbnRzLiBpZiBwcm92aWRlZCwgd2lsbCBhZGQgYSB3YWl0IGFzIHBhcnQgb2Ygc3RhcnRpbmcgdGhlIHByb2Nlc3MgYmVmb3JlIGVtaXR0aW5nIGV2ZW50cyBpbnRvIGl0LiBtYXggdmFsdWUgZm9yIHRoaXMgYXJndW1lbnQgaXMgMTAsMDAwIChpZSAxMCBzZWNvbmRzKS4gaWYgW3Byb2NPdXRTdGFydHVwV2FpdFBhdHRlcm5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0c3RhcnR1cHdhaXRwYXR0ZXJuKSBpcyBhbHNvIHByb3ZpZGVkLCB0aGUgcHJvY2VzcyB3aWxsIGJlIGNvbnNpZGVyZWQgYSBmYWlsdXJlIGlmIHRoZSB3YWl0IHRpbWUgaGFzIHBhc3NlZCBiZWZvcmUgYSBsaW5lIG1hdGNoaW5nICdwcm9jT3V0U3RhcnR1cFdhaXRQYXR0ZXJuJyB3YXMgZW1pdHRlZC4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAic3RhcnR1cFdhaXRQYXR0ZXJuIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiV2FpdCBmb3IgYW4gb3V0cHV0IGZyb20gdGhlIHByb2Nlc3MgYXQgc3RhcnR1cFxuXG5TZXRzIGEgcmVnZXggcGF0dGVybiB0byB3YWl0IGZvciB0aGUgcHJvY2VzcyB0byBlbWl0IGZvciBpdCB0byBiZSBjb25zaWRlcmVkIGF2YWlsYWJsZSBmb3IgZXZlbnRzLiBpZiBwcm92aWRlZCwgd2lsbCB3YWl0IHVudGlsIHRoZSBwcm9jZXNzIGhhcyBlbWl0dGVkIGEgbGluZSB0byBpdCdzIG91dHB1dCB0aGF0IG1hdGNoZXMgdGhlIHJlZ2V4IGJlZm9yZSBlbWl0dGluZyBldmVudHMgaW50byBpdC4gaWYgW3Byb2NPdXRTdGFydHVwV2FpdE1zXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9vdXRwdXQvZXZlbnQvcHJvY2Vzcy8jcHJvY091dFN0YXJ0dXBXYWl0TXMpIGlzIGFsc28gcHJvdmlkZWQsIHdpbGwgb25seSB3YWl0IGZvciB0aGUgc3BlY2lmaWVkIHdhaXQgdGltZSwgYWZ0ZXIgd2hpY2ggaWYgbm8gbGluZSB3YXMgZW1pdHRlZCB0byBtYXRjaCB0aGUgcHJvdmlkZWQgcmVnZXggdGhlIHByb2Nlc3Mgd2lsbCBiZSBjb25zaWRlcmVkIGEgZmFpbHVyZS4iCiAgICAgICAgICB9LAogICAgICAgICAgImRlc3Ryb3lNb2RlIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQ29udHJvbCBob3cgdG8gdGVybWluYXRlIHRoZSBzdWItcHJvY2VzcyBvbiBvdXRwdXQgY2xvc2VcblxuQ29udHJvbHMgaG93IHRvIHRyZWF0IHNwYXduZWQgc3ViLXByb2Nlc3Mgd2hlbiB0aGlzIG91dHB1dCBjbG9zZXMuIFBvc3NpYmxlIHZhbHVlczogfCBWYWx1ZSAgICAgIHwgRGVzY3JpcHRpb24gfCB8LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18IHwgKipncmFjZWZ1bCoqIChkZWZhdWx0KSAgIHwgVGhlIHN1Yi1wcm9jZXNzIGlzIGRlc3Ryb3llZCBncmFjZWZ1bGx5IHdpdGggYSB0aW1lb3V0IHBlcmlvZCBvZiBbcHJvY091dERlc3Ryb3lXYWl0XShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9vdXRwdXQvZXZlbnQvcHJvY2Vzcy8jcHJvY291dGRlc3Ryb3l3YWl0KS4gfCB8ICoqZm9yY2libGUqKiAgICAgICAgICAgICB8IFRlcm1pbmF0ZXMgdGhlIHN1Yi1wcm9jZXNzIGltbWVkaWF0ZWx5LiB8IHwgKipjYWNoZWQqKiAgICAgICAgICAgICAgIHwgVGhlIHN1Yi1wcm9jZXNzIHJlbWFpbnMgYWxpdmUgZm9yIGZ1dHVyZSBwaXBlbGluZXMgdGhhdCBsYXVuY2ggdGhlIHNhbWUgY29tbWFuZCBhbmQgYXJndW1lbnQgY29tYmluYXRpb24gd2l0aGluIHRoZSBob3N0IEpWTS4gQSBtYXhpbXVtIG9mIFtwcm9jT3V0TWF4Q2FjaGVTaXplXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9vdXRwdXQvZXZlbnQvcHJvY2Vzcy8jcHJvY291dG1heGNhY2hlc2l6ZSkgY2FuIGJlIGtlcHQgYWxpdmUuIFVzZWZ1bCBmb3IgbGF1bmNoaW5nIHNoaXBwZXJzIChlLmcuLCBGaWxlYmVhdCwgRmx1ZW50IEJpdCkgYWNyb3NzIG11bHRpcGxlIDEweCBwaXBlbGluZSBydW5zIGluIGEgbG9uZy1saXZpbmcgc2VydmVyIGVudmlyb25tZW50LiB8IgogICAgICAgICAgfSwKICAgICAgICAgICJkZXN0cm95V2FpdCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkR1cmF0aW9uIHRvIHdhaXQgZm9yIHNwYXduZWQgc3ViLXByb2Nlc3MgdG8gdGVybWluYXRlXG5cbkNvbnRyb2xzIHRoZSB0aW1lIGR1cmF0aW9uIHRoYXQgdGhlIG91dHB1dCBzdHJlYW0gd2lsbCB3YWl0IGZvciB0aGUgc3ViLXByb2Nlc3MgdG8gdGVybWluYXRlIGdyYWNlZnVsbHkgKGUuZy4sICc1cycpLiBJZiB0aGUgcHJvY2VzcyB0aW1lb3V0cywgdGhlIG91dHB1dCB3aWxsIGZvcmNpYmx5IHRlcm1pbmF0ZSBpdC4gSWYgc2V0IHRvIDAsIHRoZSBvdXRwdXQgc3RyZWFtIHdpbGwgd2FpdCBpbmRlZmluaXRlbHkgZm9yIHRoZSBzdWItcHJvY2VzcyB0byB0ZXJtaW5hdGUuIFRoaXMgdmFsdWUgb25seSBhcHBsaWVzIHdoZW4gW3Byb2NPdXREZXN0cm95TW9kZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvI3Byb2NvdXRkZXN0cm95bW9kZSkgaXMgc2V0IHRvIGBncmFjZWZ1bGAuIgogICAgICAgICAgfSwKICAgICAgICAgICJtYXhDYWNoZVNpemUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heCBudW1iZXIgb2Ygc3ViLXByb2Nlc3NlcyB0byBrZWVwIGFsaXZlIGFjcm9zcyBzdWJzZXF1ZW50IDEweCBwaXBlbGluZSBleGVjdXRpb25zXG5cblNldHMgdGhlIGdsb2JhbCBtYXhpbXVtIG51bWJlciBvZiBwcm9jZXNzZXMgdGhhdCBjYW4gcmV0YWluZWQgZ2xvYmFsbHkgYWNyb3NzIDEweCBwaXBlbGluZSBleGVjdXRpb25zIHdpdGhpbiB0aGUgaG9zdCBKVk0uIFRoaXMgdmFsdWUgaXMgdXNlZnVsIHdoZW4gbGF1bmNoaW5nIHNoaXBwZXJzIChlLmcuLCBGaWxlYmVhdCwgRmx1ZW50IEJpdCkgZm9yIHVzZSBhY3Jvc3MgbXVsdGlwbGUgMTB4IHBpcGVsaW5lIGV4ZWN1dGlvbnMgd2l0aGluIGEgc2VydmVyIGVudmlyb25tZW50LiBUaGlzIHZhbHVlIG9ubHkgYXBwbGllcyB3aGVuIFtwcm9jT3V0RGVzdHJveU1vZGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0ZGVzdHJveW1vZGUpIGlzIHNldCB0byBgY2FjaGVkYC4gSWYgW3Byb2NPdXRNYXhDYWNoZVNpemVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0bWF4Y2FjaGVzaXplKSBpcyBzZXQgdG8gMCwgbm8gY2FjaGluZyBpcyBwZXJmb3JtZWQsIGFuZCBzdWItcHJvY2Vzc2VzIGFyZSBkZXN0cm95ZWQgZ3JhY2VmdWxseS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiYWxsb3dNdWx0aXBsZVN0cmVhbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBbGxvdyBtdWx0aXBsZSBjb25jdXJyZW50IG91dHB1dHMgdG8gc2hhcmUgYSBzdWJwcm9jZXNzXG5cbklmIHRoaXMgdmFsdWUgaXMgdHJ1ZSwgbXVsdGlwbGUgb3V0cHV0IHN0cmVhbXMgc2hhcmluZyBhbiBpZGVudGljYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHdpbGwgZW1pdCB0aGVpciB2YWx1ZXMgdG8gYSBzaW5nbGUgc3VicHJvY2Vzcy4gV3JpdGUgYWNjZXNzIHRvIHRoZSBzdWJwcm9jZXNzJyBzdGRpbiBkZXZpY2Ugd2lsbCBiZSBzeW5jaHJvbml6ZWQgYmV0d2VlbiBjb25jdXJyZW50IG91dHB1dCBzdHJlYW1zLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSB0YXJnZXQgc3VicHJvY2VzcyBpcyBhIGxvZyBmb3J3YXJkZXIgKGUuZy4sIEZsdWVudGQvQml0KSBpdCBjYW4gYmUgY29uZmlndXJlZCB0byByb3V0ZSBUZW5YT2JqZWN0cyBmcm9tIG11bHRpcGxlIG91dHB1dCBzdHJlYW1zIHRvIHRoZWlyIHRhcmdldCBkZXN0aW5hdGlvbnMgd2l0aG91dCByZXF1aXJpbmcgYSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiB0aGUgZm9yd2FyZGVyIGZvciBlYWNoIGNvbmZpZ3VyZWQgb3V0cHV0IHN0cmVhbS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgImZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBUZW5YT2JqZWN0IGZpZWxkIG5hbWVzIHRvIGVuY29kZVxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIFRlblhPYmplY3QgaW50cmluc2ljL2NhbGN1bGF0ZWQvZXh0cmFjdGVkIGZpZWxkIG5hbWVzIHRvIGV4dHJhY3QgYW5kIHdyaXRlIHRvIHRoZSBvdXRwdXQuIChEZWZhdWx0OiBbXCJlbmNvZGVkT3V0ZXJUZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrZW5jb2RlZE91dGVyVGV4dClcIl0pIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGVmYXVsdCIgOiBbCiAgICAgICAgICAgICAgImVuY29kZWRPdXRlclRleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtlbmNvZGVkT3V0ZXJUZXh0KSIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YT2JqZWN0IG11c3QgZXZhbHVhdGUgYXMgJ3RydXRoeScgYWdhaW5zdCB0byBiZSB3cml0dGVuIHRvIHRoaXMgb3V0cHV0XG5cblNwZWNpZmllcyBhIEphdmFTY3JpcHQgZXhwcmVzc2lvbiB0aGF0IGFuIFRlblhPYmplY3QgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgdG8gd3JpdGUgaXRzIGluc3RhbmNlL3RlbXBsYXRlIGZpZWxkIHZhbHVlcyB0byB0aGlzIG91dHB1dC4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgW3RpbWVzdGFtcGVkXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGltZXN0YW1wZWQpIFRlblhPYmplY3RzLCBzcGVjaWZ5OiBgYGAgeWFtbCBwcm9jT3V0RmlsdGVyOiB0aGlzLnRpbWVzdGFtcGVkIGBgYCIKICAgICAgICAgIH0sCiAgICAgICAgICAid3JpdGVPYmplY3RzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSWYgdHJ1ZSwgVGVuWE9iamVjdCBmaWVsZCB2YWx1ZXMgc3BlY2lmaWVkIGJ5IFtwcm9jT3V0RmllbGRzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9vdXRwdXQvZXZlbnQvcHJvY2Vzcy8jcHJvY291dGZpZWxkcykgYXJlIGVuY29kZWQgdG8gdGhpcyBvdXRwdXRcblxuRGV0ZXJtaW5lIHdoZXRoZXIgdG8gd3JpdGUgW3Byb2NPdXRGaWVsZHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0ZmllbGRzKSB2YWx1ZXMgb2YgYW4gVGVuWE9iamVjdCBwYXNzZWQgdG8gdGhpcyBvdXRwdXQuIFRoaXMgY29uZmlndXJhdGlvbiBpcyB0eXBpY2FsbHkgZGVmaW5lZCB1c2luZyBhIEphdmFTY3JpcHQgZXhwcmVzc2lvbi4gIFRvIGVuYWJsZS9kaXNhYmxlIHRoZSBvdXRwdXQgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYSBsYXVuY2ggYXJndW1lbnQsIGVudmlyb25tZW50IHZhcmlhYmxlLCBvciBKVk0gLUQgb3B0aW9uIGV2YWx1YXRlcyBhcyB0cnV0aHksIHVzZTogYGBgIHlhbWwgICBwcm9jT3V0V3JpdGVPYmplY3RzOiAkPVRlblhFbnYuZ2V0KFwibXlQcm9jQ21kXCIpIGBgYCBUbyBsZWFybiBtb3JlIHNlZSBbVGVuWEVudi5nZXRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YRW52LmdldCkuIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJ0cnVlIgogICAgICAgICAgfSwKICAgICAgICAgICJ3cml0ZVRlbXBsYXRlcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIklmIHRydWUsIHdyaXRlIG5ldyBUZW5YVGVtcGxhdGVzIHRvIHRoaXMgb3V0cHV0XG5cbkNvbnRyb2xzIHdoZXRoZXIgdG8gd3JpdGUgdGVtcGxhdGUgdmFsdWVzIG9mIFRlblhPYmplY3RzIHBhc3NlZCB0byB0aGlzIG91dHB1dC4gVGhlIG91dHB1dCB3aWxsIG9ubHkgZW1pdCBUZW5YVGVtcGxhdGVzIHRoYXQgdGhlIHBpcGVsaW5lIGRpZCBub3QgbG9hZCBhdCBzdGFydHVwIHZpYSB0aGVbdGVtcGxhdGVGaWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90ZW1wbGF0ZS8jdGVtcGxhdGVmaWxlcykgYXJndW1lbnQsIGFuZCB3aWxsIG9ubHkgZW1pdCBhbiBUZW5YVGVtcGxhdGUgb25jZSBiYXNlZCBvbiBpdHMgW3RlbXBsYXRlSGFzaF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K3RlbXBsYXRlSGFzaCkgdmFsdWUuIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiZmFsc2UiCiAgICAgICAgICB9LAogICAgICAgICAgImVuY29kZVR5cGUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgb3V0cHV0IGZvcm1hdCBpbiB3aGljaCB0byBlbmNvZGUgVGVuWE9iamVjdCB2YWx1ZXMuIFBvc3NpYmxlIHZhbHVlczpbanNvbiwgZGVsaW1pdGVkXVxuXG5TcGVjaWZpZXMgaG93IHRvIGVuY29kZSBbcHJvY091dEZpZWxkc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvI3Byb2NvdXRmaWVsZHMpIHZhbHVlcyB0byB0aGlzIG91dHB1dC4gUG9zc2libGUgdmFsdWVzOiAtICoqanNvbioqOiBmb3JtYXRzIG5hbWVzIGFuZCB2YWx1ZXMgZm9yIHRoZSBjdXJyZW50IFRlblhPYmplY3QgYXM6IHtcImZpZWxkXCI6XCJzdHJcIixcImZpZWxkMlwiOjEsIFwiZmllbGQzXCI6IHRydWV9IC0gKipkZWxpbWl0ZWQqKjogZm9ybWF0cyB2YWx1ZXMgZm9yIHRoZSBjdXJyZW50IFRlblhPYmplY3QgYXM6IFwic3RyXCIsMSx0cnVlICAgIFRoZSBbcHJvY091dEVuY29kZURlbGltaXRlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvI3Byb2NvdXRlbmNvZGVkZWxpbWl0ZXIpIGFyZ3VtZW50IGRldGVybWluZXMgdGhlIHNlcGFyYXRvciB0byB1c2UuIChEZWZhdWx0OiBkZWxpbWl0ZWQpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImRlbGltaXRlZCIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5jb2RlZExpbmVQcmVmaXgiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgbGluZSBwcmVmaXggcHJlcGVuZGVkIHRvIHRoZSBlbmNvZGVkIGV2ZW50IGlmICdwcm9jT3V0RW5jb2RlVHlwZScgaXMgJ2RlbGltaXRlZCdcblxuU2V0cyB0aGUgY2hhciB3aGljaCBpcyBwcmVwZW5kZWQgdG8gdGhlIGVtaXR0ZWQgVGVuWE9iamVjdCBmaWVsZCB2YWx1ZXMgd2hlbiBbcHJvY091dEVuY29kZVR5cGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0ZW5jb2RldHlwZSkgaXMgYGRlbGltaXRlZGAuIChEZWZhdWx0OiApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5jb2RlRGVsaW1pdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIGRlbGltaXRlciBwbGFjZWQgYmV0d2VlbiBrZXkgYW5kIHZhbHVlcyBwYWlycyBpZiAncHJvY091dEVuY29kZVR5cGUnIGlzICdkZWxpbWl0ZWQnXG5cblNldHMgdGhlIGNoYXIgZGVsaW1pdGVyIHRvIHNlcGFyYXRlIFRlblhPYmplY3QgZmllbGQgdmFsdWVzIHdoZW4gW3Byb2NPdXRFbmNvZGVUeXBlXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9vdXRwdXQvZXZlbnQvcHJvY2Vzcy8jcHJvY291dGVuY29kZXR5cGUpIGlzIGBkZWxpbWl0ZWRgLiAoRGVmYXVsdDogICkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiICIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAiY29tbWFuZCIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' Fluent Bit output configuration
# Launch a Fluent Bit process into whose stdin pipe to write TenXObject instance/template field values.
# To learn more see https://doc.log10x.com/run/output/event/process/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/output/event/process
# ============================ Fluent Bit Options =============================
# Multiple sub-process outputs can be defined below
procOut:
# ----------------------------- Object Output -------------------------------
# 'writeObjects' controls whether to write TenXObject field values to output.
- writeObjects: false # (❗ REQUIRED)
# -------------------------- Process Options ------------------------------
# 'command' defines the OS-resolvable path of the sub-process to spawn
command: /opt/fluent-bit/bin/fluent-bit
args:
- -i
- stdin
- -o
- stdout
# 'destroyMode' is set to 'cached' to allow a fluent-bit sub-process to
# to be reused across multiple 10x pipeline executions within a host JVM.
destroyMode: cached
# 'maxCacheSize' sets the size of the cache to used for caching fluent-bit instances
maxCacheSize: 1
# 'lazyLaunch' determines whether the fluent-bit instance will launch immediately
# during the pipeline initialization, or only on-demand.
lazyLaunch: true
# 'startupWaitMs' and 'startupWaitPattern' controls the wait for the fluent-bit instance
# to be ready for receiving events, before starting to emit to it.
startupWaitMs: $=parseDuration("5s")
startupWaitPattern: \[\s*sp\s*]\s+stream\s+processor\s+started\b
# ------------------------------ Encoding ---------------------------------
# 'filter' specifies an expression that any TenXObject passed to this output must
# evaluate as truthy against to write its instance/template values to stdout.
# For example, 'filter: this.timestamp' will only emit timestamped objects.
# To learn more see: https://doc.log10x.com/api/js/#TenXBaseObject+timestamped
filter: null
# 'fields' specifies a list of 10x intrinsic/calculated/extracted fields
# to extract from each target object passed to the output
# and written to stdout in the format specified by 'encodeType'
# If no fields are specified, encode/decode the target TenXObject.
# This example corresponds to the stdin format defined by fluent-bit in:
# https://docs.fluentbit.io/manual/pipeline/inputs/standard-input
# The 'text' argument below could be replaced by any list of intrinsic/calculated/extracted fields.
# The "" delimiter instructs 'joinFields' to produce JSON output.
fields: #
- open="["
- timestamp=dateFormat("+%s.%N")
- separator=","
- fields=joinFields("", "text")
- close="]"
# 'encodeType' specifies how 'fields' are encoded to stdout. Possible values:
# - 'json': formats names and values for the current TenXObject as: {"field":"str","field2":1, "field3": true}
# - 'delimited': formats values for the current TenXObject as: "str",1,true
# The value separator (e.g., ',') is set by: 'encodeDelimiter'
encodeType: delimited
# 'encodeDelimiter' sets the char delimiter used to separate TenXObject
# field values when 'encodeType' is set to: 'delimited'
encodeDelimiter: ' '
# ----------------------------- Template Output -----------------------------
# 'writeTemplates' controls whether to write new templates for TenXObjects written to
# this output. To learn more https://doc.log10x.com/run/template
- writeTemplates: false # (❗ REQUIRED)
# -------------------------- Process Options ------------------------------
# The output below writes the template values of TenXObjects
# passed to this location. To learn more about TenXTemplates, see:
# https://doc.log10x.com/run/template
# 'command' defines the OS-resolvable path of the sub-process to spawn
command: /opt/fluent-bit/bin/fluent-bit
args:
- -i
- stdin
- -o
- stdout
# 'destroyMode' is set to 'cached' to allow a fluent-bit sub-process to
# to be reused across multiple 10x pipeline executions within a host JVM.
destroyMode: cached
# 'maxCacheSize' sets the size of the cache to used for caching fluent-bit instances
maxCacheSize: 1
# 'lazyLaunch' determines whether the fluent-bit instance will launch immediately
# during the pipeline initialization, or only on-demand.
lazyLaunch: true
# 'startupWaitMs' and 'startupWaitPattern' controls the wait for the fluent-bit instance
# to be ready for receiving events, before starting to emit to it.
startupWaitMs: $=parseDuration("5s")
startupWaitPattern: \[\s*sp\s*]\s+stream\s+processor\s+started\b
Options
Specify the options below to configure multiple Process output:
| Name | Description | Category |
|---|---|---|
| procOutCommand | Command to launch | Process |
| procOutArgs | Arguments to pass to the spawned sub-process | Process |
| procOutLazyLaunch | Sets whether to launch the process on-demand | Process |
| procOutStartupWaitMs | Wait time for process to startup | Process |
| procOutStartupWaitPattern | Wait for an output from the process at startup | Process |
| procOutDestroyMode | Control how to terminate the sub-process on output close | Lifecycle |
| procOutDestroyWait | Duration to wait for spawned sub-process to terminate | Lifecycle |
| procOutMaxCacheSize | Max number of sub-processes to keep alive across subsequent 10x pipeline executions | Lifecycle |
| procOutAllowMultipleStreams | Allow multiple concurrent outputs to share a subprocess | Lifecycle |
| procOutFields | List of TenXObject field names to encode | Encoding |
| procOutFilter | A JavaScript expression an TenXObject must evaluate as 'truthy' against to be written to this output | Encoding |
| procOutWriteObjects | If true, TenXObject field values specified by [procOutFields](https://doc.log10x.com/run/output/event/process/#procoutfields) are encoded to this output | Encoding |
| procOutWriteTemplates | If true, write new TenXTemplates to this output | Encoding |
| procOutEncodeType | The output format in which to encode TenXObject values. Possible values:[json, delimited] | Encoding |
| procOutEncodedLinePrefix | The line prefix prepended to the encoded event if 'procOutEncodeType' is 'delimited' | Encoding |
| procOutEncodeDelimiter | The delimiter placed between key and values pairs if 'procOutEncodeType' is 'delimited' | Encoding |
Process
procOutCommand
Command to launch.
| Type | Required | Category |
|---|---|---|
| String | ✔ | Process |
Specifies the command to execute to launch the sub-process. This command can specify a shipper (e.g., Fluent Bit, Filebeat) or OS util (e.g., nc) process that will forward the output object values to a remote destination.
procOutArgs
Arguments to pass to the spawned sub-process.
| Type | Default | Category |
|---|---|---|
| List | [] | Process |
List of values to pass as startup arguments to the spawned sub-process.
procOutLazyLaunch
Sets whether to launch the process on-demand.
| Type | Default | Category |
|---|---|---|
| Boolean | false | Process |
Controls whether to spawn the target sub-process upon the creation of the output or on-demand. If true, launch the sub-process when the first TenXObject instance is written to its stdin.
procOutStartupWaitMs
Wait time for process to startup.
| Type | Default | Category |
|---|---|---|
| Number | 0 | Process |
Sets a startup delay wait time in milliseconds before the process is considered available for events. if provided, will add a wait as part of starting the process before emitting events into it. max value for this argument is 10,000 (ie 10 seconds). if procOutStartupWaitPattern is also provided, the process will be considered a failure if the wait time has passed before a line matching 'procOutStartupWaitPattern' was emitted.
procOutStartupWaitPattern
Wait for an output from the process at startup.
| Type | Default | Category |
|---|---|---|
| String | "" | Process |
Sets a regex pattern to wait for the process to emit for it to be considered available for events. if provided, will wait until the process has emitted a line to it's output that matches the regex before emitting events into it. if procOutStartupWaitMs is also provided, will only wait for the specified wait time, after which if no line was emitted to match the provided regex the process will be considered a failure.
Lifecycle
procOutDestroyMode
Control how to terminate the sub-process on output close.
| Type | Default | Category |
|---|---|---|
| String | "" | Lifecycle |
Controls how to treat spawned sub-process when this output closes. Possible values:
| Value | Description |
|---|---|
| graceful (default) | The sub-process is destroyed gracefully with a timeout period of procOutDestroyWait. |
| forcible | Terminates the sub-process immediately. |
| cached | The sub-process remains alive for future pipelines that launch the same command and argument combination within the host JVM. A maximum of procOutMaxCacheSize can be kept alive. Useful for launching shippers (e.g., Filebeat, Fluent Bit) across multiple 10x pipeline runs in a long-living server environment. |
procOutDestroyWait
Duration to wait for spawned sub-process to terminate.
| Type | Default | Category |
|---|---|---|
| String | "" | Lifecycle |
Controls the time duration that the output stream will
wait for the sub-process to terminate gracefully (e.g., '5s').
If the process timeouts, the output will forcibly terminate it. If set to 0,
the output stream will wait indefinitely for the sub-process to terminate.
This value only applies when procOutDestroyMode is set to graceful.
procOutMaxCacheSize
Max number of sub-processes to keep alive across subsequent 10x pipeline executions.
| Type | Default | Category |
|---|---|---|
| Number | 0 | Lifecycle |
Sets the global maximum number of processes that can retained globally
across 10x pipeline executions within the host JVM. This value is useful
when launching shippers (e.g., Filebeat, Fluent Bit) for use
across multiple 10x pipeline executions within a server environment.
This value only applies when procOutDestroyMode is set to cached.
If procOutMaxCacheSize is set to 0, no caching is performed, and sub-processes
are destroyed gracefully.
procOutAllowMultipleStreams
Allow multiple concurrent outputs to share a subprocess.
| Type | Default | Category |
|---|---|---|
| Boolean | false | Lifecycle |
If this value is true, multiple output streams sharing an identical command and arguments will emit their values to a single subprocess. Write access to the subprocess' stdin device will be synchronized between concurrent output streams.
For example, if the target subprocess is a log forwarder (e.g., Fluentd/Bit) it can be configured to route TenXObjects from multiple output streams to their target destinations without requiring a separate instance of the forwarder for each configured output stream.
Encoding
procOutFields
List of TenXObject field names to encode.
| Type | Default | Category |
|---|---|---|
| List | [encodedOuterText](https://doc.log10x.com/api/js/#TenXBaseObject+encodedOuterText)] | Encoding |
Specifies a list of TenXObject intrinsic/calculated/extracted field names to extract and write to the output.
procOutFilter
A JavaScript expression an TenXObject must evaluate as 'truthy' against to be written to this output.
| Type | Default | Category |
|---|---|---|
| String | "" | Encoding |
Specifies a JavaScript expression that an TenXObject must evaluate as truthy to write its instance/template field values to this output.
For example, to only emit timestamped TenXObjects, specify:
procOutWriteObjects
If true, TenXObject field values specified by [procOutFields](https://doc.log10x.com/run/output/event/process/#procoutfields) are encoded to this output.
| Type | Default | Category |
|---|---|---|
| String | true | Encoding |
Determine whether to write procOutFields values of an TenXObject passed to this output. This configuration is typically defined using a JavaScript expression.
To enable/disable the output depending on whether a launch argument, environment variable, or JVM -D option evaluates as truthy, use:
To learn more see TenXEnv.get.
procOutWriteTemplates
If true, write new TenXTemplates to this output.
| Type | Default | Category |
|---|---|---|
| String | false | Encoding |
Controls whether to write template values of TenXObjects passed to this output. The output will only emit TenXTemplates that the pipeline did not load at startup via thetemplateFile argument, and will only emit an TenXTemplate once based on its templateHash value.
procOutEncodeType
The output format in which to encode TenXObject values. Possible values:[json, delimited].
| Type | Default | Category |
|---|---|---|
| String | delimited | Encoding |
Specifies how to encode procOutFields values to this output. Possible values:
- json: formats names and values for the current TenXObject as: {"field":"str","field2":1, "field3": true}
- delimited: formats values for the current TenXObject as: "str",1,true The procOutEncodeDelimiter argument determines the separator to use.
procOutEncodedLinePrefix
The line prefix prepended to the encoded event if 'procOutEncodeType' is 'delimited'.
| Type | Default | Category |
|---|---|---|
| String | Encoding |
Sets the char which is prepended to the emitted TenXObject field values when procOutEncodeType is delimited.
procOutEncodeDelimiter
The delimiter placed between key and values pairs if 'procOutEncodeType' is 'delimited'.
| Type | Default | Category |
|---|---|---|
| String | Encoding |
Sets the char delimiter to separate TenXObject field values when procOutEncodeType is delimited.
This module is defined in process/module.yaml.