Run
Generate filter tables for Edge Regulator instances by analyzing aggregated event statistics from Prometheus.
Data comes from Edge Reporter instances that publish event frequency metrics, enabling centralized rate-based filtering across your infrastructure.
Setup Guide
Follow the steps below. Steps that require customization link to the relevant Configuration section where you can edit on github.dev or locally.
Step 1: Install
Install the Edge binary flavor:
Step 2: Set Environment Variables
Set these environment variables before running. See path configuration for details.
| Variable | Description |
|---|---|
TENX_CONFIG |
Path to your configuration directory |
TENX_API_KEY |
Your Log10x API key (get one) |
GH_TOKEN |
GitHub personal access token (create one) (if using GitHub output) |
export TENX_CONFIG=/path/to/your/config
export TENX_API_KEY=your-api-key
export GH_TOKEN=your-github-token
See best practices for managing secrets in production.
Step 4: Choose Filter Table Output
Push filter tables to a GitHub repository for centralized distribution. Edge Regulators pull these tables automatically.
Benefits: Version control, automatic updates, easy rollback.
Write filter tables to local files for manual distribution.
Benefits: No external dependencies, works in air-gapped environments.
Distribution: Shared storage (NFS, S3), config management (Ansible, Puppet), or manual copying.
- In the app config, uncomment your chosen output
includeentry - In the event outputs section below, configure your output settings
Step 5: Run
Best for: Isolated testing with local configuration.
Step 6: Output
With File Output enabled, the app generates filter tables containing event patterns and frequency rates:
Sample Filter Table (first 25 lines)
symbolMessage,normalized_rate
products_jpg_HTTP_frontend_proxy_Mozilla_X11,3381.58
products_jpg_HTTP_frontend_proxy_cart_Mozilla,3356.73
service_name_recommendation_trace_sampled,1774.70
opentelemetry_demo_logo_png_HTTP_frontend,1056.09
frontend_proxy_Mozilla_X11_Linux_x86_AppleWebKit,445.86
time_level_msg_Reloading_Product_Catalog,1203.03
time_level_msg_Loaded_products,1148.40
Accounting_Consumer,983.08
Sending_Quote,889.58
orders_u003e_u003e_UTC_u003e_severity_timestamp,926.15
sending_postProcessor_severity_timestamp,691.03
Received_quote,1012.73
POST_send_order_confirmation_HTTP,965.85
message_offset_duration_severity_timestamp,730.05
nanos_creditCard_msg_Charge_request_received,693.80
through_transaction_id_severity_timestamp,692.13
service_name_payment_transactionId_visa_amount,730.43
Tracking_ID_Created,752.38
user_id_user_currency_USD_severity_timestamp,544.75
United_States_zipCode_items_item_productId,451.35
migrator_t_level_msg_Migration_successfully,428.33
cache_size_pod_cache_size_pod_cache_api_updates,273.85
Order_confirmation_email_sent_example_com,293.38
email_sent_example_com_severity_timestamp,113.58
email_sent_reed_example_com_severity_timestamp,117.88
Use to: Review discovered patterns, validate frequency calculations, and understand which events will be filtered by downstream Edge Regulator instances.
Step 7: Verify
Verify no errors appear in the log file.
Check output files:
Verify policy files were generated in your configured output paths.
Configuration
To configure the Regulator Policy app, Edit these settings:
Main Config
Main Config
Below is the default configuration from: policy/config.yaml.
#
# 🔟❎ dev app main config
# The dev app locally tests, and validates structured event processing.
# To learn more see https://doc.log10x.com/apps/dev
# ============================ Bootstrap Runtime ==============================
tenx: run
runtimeName: $=TenXEnv.get("TENX_RUNTIME_NAME", "myRegulatorPolicy")
# ============================ Load App Modules ===============================
# Uncomment and edit selected config.yaml files (e.g., run/input/file/config.yaml)
include:
# ------------------------------ App settings ---------------------------------
# Load general app settings:
- edge/policy
# ------------------------------ Open Inputs ----------------------------------
# read log/trace events from inputs to transform into well-defined TenXObjects:
- run/regulate/policy # https://doc.log10x.com/run/regulate/policy
Advanced Settings
To configure advanced options (optional) for the Regulator Policy app, Edit these settings:
Bootstrap
Bootstrap
Configure the Pipeline Bootstrapper to authenticate the log10x account and launch a target pipeline.
Below is the default configuration from: bootstrap/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBhcGlLZXk6IDxteS1rZXk+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImFwaUtleSIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBhcGkga2V5XG5cblNwZWNpZmllcyBhbiBhcGkga2V5IHVzZWQgZm9yIGF1dGhlbnRpY2F0aW5nIGFnYWluc3QgdGhlIDEweCBzZXJ2aWNlLiBUaGlzIHZhbHVlIGlzIGFjY2Vzc2libGUgZnJvbSB5b3VyIFthY2NvdW50IHNldHRpbmdzXShodHRwczovL2NvbnNvbGUubG9nMTB4LmNvbSkuIgogICAgfSwKICAgICJtZXRyaWNFbmRwb2ludCIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBzZXJ2aWNlIFByb21ldGhldXMgbWV0cmljcyBlbmRwb2ludFxuXG5TcGVjaWZpZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIFByb21ldGhldXMgcmVtb3RlIHdyaXRlIGVuZHBvaW50IHRvIHdyaXRlIHBpcGVsaW5lIHVzYWdlIGFuZCBoZWFsdGggbWV0cmljcy4gICEhISBub3RlIFwiXCIgICAgICBUaGlzIGFyZ3VtZW50IGlzIG9ubHkgc2V0dGFibGUgaW4gdGhlIDEweCAnb24tcHJlbWlzZXMnIGJ1aWxkLiAoRGVmYXVsdDogaHR0cHM6Ly9wcm9tZXRoZXVzLmxvZzEweC5jb20vYXBpL3YxL3dyaXRlKSIsCiAgICAgICJkZWZhdWx0IiA6ICJodHRwczovL3Byb21ldGhldXMubG9nMTB4LmNvbS9hcGkvdjEvd3JpdGUiCiAgICB9LAogICAgInJ1bnRpbWUiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgIm5hbWUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgdG8gcmVwb3J0IHRvIHRoZSAxMHggc2VydmljZSBlbmRwb2ludCBmb3IgdGhpcyBydW50aW1lIGluc3RhbmNlXG5cblNwZWNpZmllcyBhIGxvZ2ljYWwgbmFtZSB1c2VkIGFzIGEgW3RhZyB2YWx1ZV0oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjNC1tZXRlcnMpIGZvciBwaXBlbGluZSBtZXRyaWNzLiBUaGlzIHZhbHVlIGlkZW50aWZpZXMgaW5zdGFuY2VzIG9mIHRoZSAxMHggcnVuL2NvbXBpbGUgcGlwZWxpbmVzIHdoZW4gcmVwb3J0aW5nIHRvIHRoZSAxMHggc2VydmljZS4gRm9yIGV4YW1wbGUsIGZvciBhIDEweCBbRWRnZSBPcHRpbWl6ZXJdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBwcy9lZGdlL29wdGltaXplci8pIGZvciBGbHVlbnQgQml0IGZvcndhcmRlcnMgY29sbGVjdGluZyBldmVudHMgZnJvbSBhIGBicm9rZXJgIHVzZXItYXBwLCB0aGlzIHZhbHVlIGNhbiBiZSBzZXQgdG86IGBvcHRpbWl6ZV9mbHVlbnRiaXRfYnJva2VyYCIKICAgICAgICB9LAogICAgICAgICJhdHRyaWJ1dGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgYXR0cmlidXRlcyB0byBhZGQgdG8gYWxsIG1ldHJpY3MgcmVwb3J0aW5nXG5cblNwZWNpZmllcyBhIGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzIGluIHRoZSBmb3JtYXQgYGtleTp2YWx1ZWAgdG8gYmUgYWRkZWQgYXMgdGFncyB0byBwaXBlbGluZSBtZXRyaWNzIHJlcG9ydGVkIHRvIHRoZSAxMHggc2VydmljZS4gVGhlc2UgdGFncyBlbmFibGUgZmluZXItZ3JhaW5lZCBmaWx0ZXJpbmcgYW5kIGFuYWx5c2lzIGluIG1vbml0b3Jpbmcgc3lzdGVtcyBsaWtlIFByb21ldGhldXMuIE11bHRpcGxlIGF0dHJpYnV0ZXMgY2FuIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHVzaW5nIGEgc2VtaWNvbG9uIChgO2ApLCBlLmcuLCBga2V5MTp2YWwxO2tleTI6dmFsMmAuICBJZiBhIGtleSBkb2VzIG5vdCBzdGFydCB3aXRoIHRlbnhfLCB0aGUgcHJlZml4IHRlbnhfIGlzIGF1dG9tYXRpY2FsbHkgcHJlcGVuZGVkIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBpbiB0YWcgbmFtaW5nIGNvbnZlbnRpb25zLiBGb3IgZXhhbXBsZSwgYSBwcm92aWRlZCBhdHRyaWJ1dGUgYXBwOm15LWFwcCB3aWxsIGJlIHJlcG9ydGVkIGFzIHRlbnhfYXBwOm15LWFwcCAgYGBgIHlhbWwgICBydW50aW1lQXR0cmlidXRlczogICAgIC0gYXBwOnJlcG9ydGVyICAgICAtIGVudjplZGdlIGBgYCIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJpbmNsdWRlUGF0aHMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBpcGVsaW5lIGluY2x1ZGUgZm9sZGVyc1xuXG5TcGVjaWZpZXMgZm9sZGVycyBvbiBkaXNrIGZvciByZXNvbGluZyByZWxhdGl2ZSByZWZlcmVuY2VzIHdpdGhpbiBbaW5jbHVkZSBkaXJlY3RpdmVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbmZpZy95YW1sLyNpbmNsdWRlLWRpcmVjdGl2ZXMpLiAoRGVmYXVsdDogW1wid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzXCJdKSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfSwKICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICJ3b3JraW5nIGRpcmVjdG9yeSBvZiBjdXJyZW50IHByb2Nlc3MiCiAgICAgIF0KICAgIH0sCiAgICAiamFyRmlsZXMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkphciBmaWxlcyB0byBsb2FkXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgLmphciBmaWxlcyB0byBsb2FkIGludG8gdGhlIGhvc3QgSlZNIGZvciB1c2UgYnkgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2NvbXBpbGUvKSwgW2lucHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9pbnB1dC8pIGFuZCBbb3V0cHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9vdXRwdXQvKSBBUEkgZXh0ZW5zaW9ucy4gICEhISBub3RlIFwiXCIgICAgICBUaGlzIGFyZ3VtZW50IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIFtlZGdlXShodHRwczovL2RvYy5sb2cxMHguY29tL2VuZ2luZS9mbGF2b3JzLyNlZGdlKSBydW50aW1lIGZsYXZvci4iLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0KICAgIH0sCiAgICAicXVpZXQiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImJvb2xlYW4iLAogICAgICAgICJzdHJpbmciCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEaXNhYmxlIHByaW50aW5nIGJpbmFyeSB2ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlXG5cbkRpc2FibGUgcHJpbnRpbmcgYnVpbGQvdmVyc2lvbiBpbmZvcm1hdGlvbiB0byB0aGUgY29uc29sZSB1cG9uIGxhdW5jaCAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogZmFsc2UpIiwKICAgICAgImRlZmF1bHQiIDogZmFsc2UKICAgIH0sCiAgICAiZGlzYWJsZWRBcmdzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaW1pdCBhcmd1bWVudCB2YWx1ZXMgdGhhdCBjYW4gYmUgc2V0IGJ5IHVzZXJzXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgbGF1bmNoIGFyZ3VtZW50cyB0aGF0IGFyZSBkaXNhbGxvd2VkIGZyb20gZWl0aGVyIGNvbW1hbmQgbGluZSBvciB1c2VyIGNvbmZpZyBmaWxlcy4gVGhpcyBhcmd1bWVudCBwcm92aWRlcyBhIG1ldGhvZCBvZiBsaW1pdGluZyB0aGUgdGFyZ2V0IFtwaXBlbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9zaGFyZWQvYm9vdHN0cmFwLyNwaXBlbGluZSksIFtzb3VyY2VdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnLyNzb3VyY2VzKSBhbmQgYW5kIFtjb21tYW5kIGxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL2NsaS8pIHNldHRhYmxlIGJ5IHRoZSB1c2VyLiAgVGhpcyBtZWNoYW5pc20gZW5hYmxlcyBwaXBlbGluZSBsYXVuY2hlcnMgc3VjaCBhcyB0aGUgW1F1YXJrdXMgbGF1bmNoZXJdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2xhdW5jaC8jcXVhcmt1cykgdG8gbGltaXQgdXNlciBpbnB1dCByZWNlaXZlZCB2aWEgUkVTVCByZXF1ZXN0cyB0byBhIHRhcmdldCBzdWJzZXQgb2YgJ3NhZmUnIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCBhZGRpbmcgW3Byb2NPdXRDb21tYW5kXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9vdXRwdXQvZXZlbnQvcHJvY2Vzcy8jcHJvY291dGNvbW1hbmQpIHRvIHRoaXMgbGlzdCBlbnN1cmVzIHRoYXQgbm8gZXh0ZXJuYWwgcHJvY2VzcyBvdXRwdXRzIGNhbiBiZSBsYXVuY2hlZCBieSB0aGUgcnVudGltZS4gIEFuIG9wdGlvbmFsIHJlZ2V4IHBhdHRlcm4gY2FuIGxpbWl0IGFyZ3VtZW50cyB0byBhIGNlcnRhaW4gc3Vic2V0IG9mIHZhbHVlcyBpbiB0aGUgZm9ybSBvZjogYDxhcmctbmFtZT5bOnBhdHRlcm5dYCAoZS5nLiwgc3BlY2lmaWMgcHJvY2VzcyBuYW1lcykuIE11bHRpcGxlIHBhdHRlcm5zIGNhbiBiZSBzcGVjaWZpZWQgcGVyIGFyZ3VtZW50LiAgTWF0Y2hpbmcgdGhlIGBzb3VyY2VgIGFyZ3VtZW50IGRldGVybWluZXMgd2hpY2ggc291cmNlIGxvY2F0aW9ucyB0byBpbnNwZWN0IChlLmcuLCBmb2xkZXJzLCBmaWxlcywgR2l0SHViIHJlcG9zKS4gRm9yIGV4YW1wbGUsIGFuIGFkbWluIG1heSBwbGFjZSAueWFtbCBjb25maWcgZmlsZXMgY29udGFpbmluZyBwcmVzZXQgRmx1ZW50IEJpdCBvdXRwdXRzIGluIGAvZXRjL2xvZzEweC9gLCBleGNsdWRpbmcgdGhlaXIgZW5jbG9zZWQgYXJndW1lbnRzIGZyb20gbGltaXRzIHNldCBieSB0aGlzIGxpc3QsIHdoaWxlIGRpc2FsbG93aW5nIHVzZXJzIHRvIGRpcmVjdGx5IHNldCB0aGVtIHZpYSB0aGUgY29tbWFuZC1saW5lIG9yIGJ5IHNvdXJjaW5nIHRoZW0gZnJvbSB0aGVpciBsb2NhbC9HaXRIdWIgY29uZmlnIGZpbGVzIChzZWUgZXhhbXBsZSBiZWxvdykuICBUbyBsaW1pdDogIFRoZSB0YXJnZXQgcGlwZWxpbmUgKGUuZy4sIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLyksIFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvKSk6ICBgYGAgeWFtbCAgIGRpc2FibGVkQXJnczogICAtIFwicGlwZWxpbmU6XnJ1blwiICMgZGlzYWxsb3cgY29tcGlsZSBgYGAgIFRhcmdldCBhcmd1bWVudHMgKGUuZy4sIFtwcm9jZXNzIG91dHB1dHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLykpOiAgYGBgIHlhbWwgICAtIFwicHJvY091dENvbW1hbmQ6XmZsdWVudC1iaXQkXCIgICAjIGxpbWl0IHRvIEZsdWVudCBCaXQgb25seSAgICMgLSBwcm9jT3V0QXJnczogPHNwZWNpZnktcmVnZXg+ICAjIGZ1cnRoZXIgbGltaXQgYXJncyBmb3IgRmx1ZW50IEJpdCBgYGAgIENvbnRyb2wgd2hpY2ggYXJndW1lbnQgW3NvdXJjZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnLyNzb3VyY2VzKSB0byBpbnNwZWN0OiAgYGBgIHlhbWwgICAtIFwic291cmNlOl5naXRodWIuKlwiICAgICAgICAgICAgICMgaW5zcGVjdCBvZiBhbGwgYXJndW1lbnRzIHNvdXJjZWQgZnJvbSBHaXRIdWIgYWdhaW5zdCB0aGlzIGxpc3QgICAtIFwic291cmNlOl4oPyEvZXRjL2xvZzEweC8pLipcIiAgICMgaW5zcGVjdCBvZiBhbGwgYXJndW1lbnRzIHNvdXJjZWQgZnJvbSBjb25maWcgZmlsZXMgTk9UIGNvbnRhaW5lZCBpbjogL2V0Yy9sb2cxMHgvIGBgYCIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfSwKICAgICJkZWJ1Z0VudlZhcnMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3QgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGRlYnVnXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgZW52IHZhciBuYW1lcyBmb3Igd2hpY2ggdG8gbG9nIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIGhvdyB0aGV5IGFyZSByZXNvbHZlZC4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY2FsbDogYEwxRW52LmdldChcIm15VmFyXCIsIFwibXlEZWZhdWx0XCIpYCBjYW4gYmUgcmVzb2x2ZWQgZnJvbSBhIG51bWJlciBvZiBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhFbnYuZ2V0KSByYW5naW5nIGZyb20gbGF1bmNoIGFyZ3VtZW50cywgdG8gT1MvSlZNIHByb3BlcnRpZXMgYW5kIGEgZGVmYXVsdCB2YWx1ZSAoZS5nLiwgbXlEZWZhdWx0KS4gIFNldHRpbmcgdGhpcyB2YWx1ZSB0byBgbXlWYXJgIHdpbGwgbG9nIElORk8gbGV2ZWwgaW5mb3JtYXRpb24gZGV0YWlsaW5nIGhvdyB0aGUgdmFsdWUgb2YgdGhlIGBteVZhcmAgd2FzIHJlc29sdmVkLiIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfQogIH0sCiAgInJlcXVpcmVkIiA6IFsKICAgICJ0ZW54IiwKICAgICJhcGlLZXkiCiAgXSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ run bootstrap configuration
# This config file specifies bootstrap options for the run pipeline.
# To learn more see https://doc.log10x.com/run/bootstrap
# To learn more see https://doc.log10x.com/config/
tenx: run
# =============================== Launch Settings ==============================
# 'apiKey' specifies an api key used authenticating against the 10x service
apiKey: $=TenXEnv.get("TENX_API_KEY", "NO-API-KEY")
# 'includePaths' specifies folders on disk for resolving relative config file/folder references in addition to the working folder
includePaths: []
# 'quiet' disables printing version information to the console.
# quiet: true
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
jarFiles: []
# 'metricEndpoint' specifies the Prometheus endpoint to report usage/health metrics (enterprise version only).
# metricEndpoint: https://prometheus.log10x.com/api/v1/write
# 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
disabledArgs: []
# 'debugEnvVars' list environment variables to debug
debugEnvVars: []
Symbols
Symbols
Below is the default configuration from: symbol/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAic3ltYm9sIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJwYXRocyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnB1dCBzeW1ib2wgZmlsZXMgYW5kIGZvbGRlcnNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBnbG9iIHBhdHRlcm5zIHVzZWQgdG8gbG9hZCBzeW1ib2xzIGZpbGVzICguanNvbiwgLmNzdikgaW50byB0aGUgcGlwZWxpbmUgdXBvbiBpbml0aWFsaXphdGlvbi4gWmlwIGFyY2hpdmVzIGFyZSBleHRyYWN0ZWQgdG8gdGhlIHRlbXAgZm9sZGVyIGFuZCBkZWxldGVkIG9uIGV4aXQuIChEZWZhdWx0OiBbXCJwYXRoKFxcXCJzYW1wbGUvc3ltYm9sc1xcXCIpXCJdKSIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAgICAgInBhdGgoXCJzYW1wbGUvc3ltYm9sc1wiKSIKICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJsaXRlcmFscyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTeW1ib2wgbGl0ZXJhbCB2YWx1ZXNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBsaXRlcmFsIHN5bWJvbCB2YWx1ZXMgdG8gYWRkIHRvIHRoZSBob3N0IHBpcGVsaW5lJ3Mgc3ltYm9sIGNvbGxlY3Rpb24uIFRoaXMgb3B0aW9uIGVuYWJsZXMgZGVjbGFyaW5nIHN5bWJvbCB2YWx1ZXMgZGlyZWN0bHkgdGhyb3VnaCB0aGUgY29tbWFuZCBsaW5lIG9yIHZpYSBZQU1ML0pTT04gY29uZmlndXJhdGlvbi4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAibWF4U3ltYm9sVW5pdHNQZXJUb2tlbiIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAibnVtYmVyIiwKICAgICAgICAic3RyaW5nIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTnVtYmVyIG9mIHN5bWJvbCB1bml0cyB0byByZXRyaWV2ZSB3aGVuIHNlYXJjaGluZyBmb3IgdGhlIG9yaWdpbiBvZiBhbiBUZW5YVGVtcGxhdGUgc3ltYm9sIHNlcXVlbmNlXG5cbkNvbnRyb2xzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzeW1ib2wgdW5pdHMgdG8gbG9hZCBmcm9tIHRoZSBwaXBlbGluZSdzIHN5bWJvbCBsaWJyYXJ5IHdoZW4gc2VhcmNoaW5nIGZvciB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3N5bWJvbC8pIG9mIGEgc3BlY2lmaWMgW1RlblhUZW1wbGF0ZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdGVtcGxhdGUvKSBzeW1ib2wuICAgVGhlIFtzeW1ib2xTZXF1ZW5jZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhPYmplY3Qrc3ltYm9sU2VxdWVuY2UpIGZ1bmN0aW9uIHF1ZXJpZXMgdGhlIHNvdXJjZSBjb2RlL2JpbmFyeSBvcmlnaW4gb2Ygc3ltYm9sIHNlcXVlbmNlcyBpbiBhIHRhcmdldCBUZW5YVGVtcGxhdGUgdG8gaWRlbnRpZnkgdGhlIGxvZ2ljYWwgXCJtZXNzYWdlXCIgcG9ydGlvbnMgb2YgYXBwL2luZnJhIGV2ZW50cyB2cy4gdmFyaWFibGUgdmFsdWVzIGFuZCBbTURDIGNvbnRleHRdKGh0dHBzOi8vbG9nZ2luZy5hcGFjaGUub3JnL2xvZzRqLzIueC9tYW51YWwvdGhyZWFkLWNvbnRleHQuaHRtbCkuICAgU2luY2Ugc3ltYm9scyBtYXkgYXBwZWFyIGluIGh1bmRyZWRzIG9yIG1vcmUgbG9jYXRpb25zIGFjcm9zcyBhIGNvZGUgYmFzZSwgIGxpbWl0aW5nIHRoZSBudW1iZXIgb2Ygc3ltYm9sIHVuaXRzIHRvIGxvYWQgaXMgbmVjZXNzYXJ5IHRvIHJlZHVjZSBtZW1vcnkgY29uc3VtcHRpb24uICAgICBBIHNlY29uZCBjb25zaWRlcmF0aW9uIGluIHBsYWNpbmcgYW4gdXBwZXIgbGltaXQgb24gdGhlIG51bWJlciBvZiB1bml0cyB0byBsb2FkIGZyb20gdGhlIHN5bWJvbCBsaWJyYXJ5ICBpcyB0aGUgbW9yZSBmcmVxdWVudCBhIHN5bWJvbCBpcywgdGhlIGxvd2VyIHRoZSBwcm9iYWJpbGl0eSBvZiBzZWxlY3RpbmcgaXRzIGNvcnJlY3Qgb3JpZ2luLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMjgpIiwKICAgICAgImRlZmF1bHQiIDogMTI4CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' symbol file configuration
# Loads symbol library files to transform events into well-defined TenXObjects.
# To learn more see https://doc.log10x.com/run/symbol
# Set the 10x pipeline to 'run'
tenx: run
# ============================ Symbol Options =================================
symbol:
# 'paths' specifies the file/folder locations to scan for symbol library files.
# To learn more see https://doc.log10x.com/run/symbol/#symbolpaths
paths:
- $=path("data/shared/symbols", false)
- $=path("<TENX_SYMBOLS_PATH>", false)
literals: []
Template
Template
Below is the default configuration from: template/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVtcGxhdGUiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIklucHV0IGZpbGVzIG9yIGdsb2IgcGF0dGVybnMgY29udGFpbmluZyBKU09OLWVuY29kZWQgVGVuWFRlbXBsYXRlc1xuXG5JbnB1dCBmaWxlcyBvciBnbG9iIHBhdHRlcm5zIGZyb20gd2hpY2ggdG8gbG9hZCBKU09OLWVuY29kZWQgVGVuWFRlbXBsYXRlcy4gKERlZmF1bHQ6IFtcInBhdGgoXFxcImRhdGEvc2FtcGxlL3RlbXBsYXRlcy8qLmpzb25cXFwiKVwiXSkiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVmYXVsdCIgOiBbCiAgICAgICAgICAgICJwYXRoKFwiZGF0YS9zYW1wbGUvdGVtcGxhdGVzLyouanNvblwiKSIKICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJjYWNoZVNpemUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBieXRlIHNpemUgb2YgaW4tbWVtb3J5IGNhY2hlZCB0ZW1wbGF0ZXNcblxuQ29udHJvbHMgdGhlIG1heGltdW0gdG90YWwgYnl0ZSBzaXplIG9mIHRlbXBsYXRlcyBoZWxkIGluIHRoZSBpbi1tZW1vcnkgY2FjaGUuIFdoZW4gdGhlIGNhY2hlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgbGVhc3QgcmVjZW50bHkgdXNlZCB0ZW1wbGF0ZXMgYXJlIHBydW5lZCB0byBhIHRlbXBvcmFyeSBmaWxlIG9uIGRpc2suIFBydW5lZCB0ZW1wbGF0ZXMgYXJlIGF1dG9tYXRpY2FsbHkgcmVsb2FkZWQgZnJvbSBkaXNrIHdoZW4gYWNjZXNzZWQgYWdhaW4uICBTZXQgdG8gMCB0byBkaXNhYmxlIHBydW5pbmcgYW5kIGtlZXAgYWxsIHRlbXBsYXRlcyBpbiBtZW1vcnkuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwOTcxNTIwKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAyMDk3MTUyMAogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJ2YXIiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgInBsYWNlaG9sZGVyIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQbGFjZWhvbGRlciBjaGFyYWN0ZXIgZm9yIG5vdGF0aW5nIFRlblhPYmplY3QgaW5zdGFuY2UgdmFyaWFibGVzXG5cblNwZWNpZmllcyBhIGNoYXJhY3RlciB0byB1c2Ugd2hlbiBlbmNvZGluZyBhbiBUZW5YVGVtcGxhdGUgdG8gc2lnbmlmeSB0aGUgbG9jYXRpb24gb2YgYSBydW50aW1lIHZhcmlhYmxlIHZhbHVlLiAgRm9yIGV4YW1wbGUsIGZvciBhbiBUZW5YVGVtcGxhdGUgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIHNlZ21lbnQ6ICAnRVJST1I6IGNvdWxkIG5vdCBjb25uZWN0IHRvIGhvc3QgSVA6ICQuJC4kLiQnICBUaGUgJyQnIGVudHJpZXMgZGVzaWduYXRlIHRoYXQgYW55IFRlblhPYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGVtcGxhdGUgIHdpbGwgc3Vic3RpdHV0ZSB0aGUgJyQnIHNsb3RzIHdpdGggbWF0Y2hpbmcgdmFsdWVzIGZyb20gaXRzIGluZGl2aWR1YWwgW3ZhcnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt2YXJzKSBhcnJheSAoZS5nLiAwLDAsMCwxMjcpLiAoRGVmYXVsdDogJCkiLAogICAgICAgICAgImRlZmF1bHQiIDogIiQiCiAgICAgICAgfSwKICAgICAgICAibWF4UmVjdXJJbmRleGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIHRlbXBsYXRlIHJldXNhYmxlIHZhcmlhYmxlIHZhbHVlXG5cbkNvbnRyb2xzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB2YXJpYWJsZSB2YWx1ZXMgdG8gcmV1c2Ugd2hlbiBlbmNvZGluZyBhbiBUZW5YT2JqZWN0J3MgW3ZhcnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt2YXJzKSBhcnJheSB0byBzdHJlYW0uIFdoZW4gZ2VuZXJhdGluZyBhIG5ldyAgVGVuWFRlbXBsYXRlIGZvciBhbiBUZW5YT2JqZWN0IGluc3RhbmNlIHdob3NlIHZhcmlhYmxlcyBjb250YWluIHJlcGV0aXRpdmUgdmFsdWVzLCAgdGhlIHRlbXBsYXRlIG1heSBpbmRpY2F0ZSB0aGF0IGEgdmFsdWUgaXMgYSByZXBldGl0aW9uIG9mIGEgcHJldmlvdXMgdmFyaWFibGUgdmFsdWUgYW5kICBkb2VzIG5vdCBuZWVkIHRvIGJlIGVuY29kZWQgYWdhaW4uICBGb3IgZXhhbXBsZSwgZm9yIGFuIFRlblhPYmplY3Qgd2hvc2UgW3RleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt0ZXh0KSBmaWVsZCBjb250YWlucyB0aGUgZm9sbG93aW5nIHNlZ21lbnQ6IGB1c2VySUQ9NDVkZmdkZnM0LHBhcmVudElEPTQ1ZGZnZGZzNGAsIHRoZSByZXN1bHRpbmcgVGVuWFRlbXBsYXRlIGNhbiBiZSBlbmNvZGVkIGFzOiBgdXNlcklEPSQscGFyZW50SUQ9JDFgIHNwZWNpZnlpbmcgdGhhdCB0aGUgdmFsdWUgb2YgdGhlIGBwYXJlbnRJRGAgdmFyaWFibGUgY2FuIGJlIGZvdW5kIG9uZSBzbG90IGJlaGluZCBpbiB0aGUgVGVuWE9iamVjdCdzIFt2YXJzIGFycmF5XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdmFycyksIHNhdmluZyB0aGUgbmVlZCB0byBlbmNvZGUgdGhpcyB2YWx1ZSBtdWx0aXBsZSB0aW1lcy4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMTApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDEwCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgInRpbWVzdGFtcCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAicHJlZml4IiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUZW1wbGF0ZSB0aW1lc3RhbXAgcHJlZml4XG5cblNwZWNpZmllcyBhIHByZWZpeCBmb3IgYW4gVGVuWFRlbXBsYXRlJ3Mgc2V0IG9mIHZhcmlhYmxlIGFuZCBzeW1ib2wgdG9rZW5zIGRlc2NyaWJpbmcgYSB0aW1lc3RhbXAgKGUuZy4sICR7REQvTU0vWVkgSEgtbW0tc3N9KS4gKERlZmF1bHQ6ICgpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIoIgogICAgICAgIH0sCiAgICAgICAgInBvc3RmaXgiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRlbXBsYXRlIHRpbWVzdGFtcCBwb3N0Zml4XG5cblNwZWNpZmllcyBhIHZhbHVlIGFwcGVuZGVkIHRvIGFuIFRlblhUZW1wbGF0ZSdzIGFuZCBzZXQgb2YgdmFyaWFibGUgYW5kIHN5bWJvbCB0b2tlbnMgZGVzY3JpYmluZyBhIHRpbWVzdGFtcCAoZS5nLiwgJHtERC9NTS9ZWSBISC1tbS1zc30pLiAoRGVmYXVsdDogKSkiLAogICAgICAgICAgImRlZmF1bHQiIDogIikiCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' template file configuration
# Load TenXTemplates .json files that define the structure/schema of TenXObjects.
# To learn more see https://doc.log10x.com/run/template/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Template ===================================
template:
# 'files' specifies GLOB pattern for finding JSON-encoded TenXTemplates.
files:
- $=path("data/templates/*.json")
- $=path("data/sample/output/*.json")
# 'cacheSize' controls the maximum total byte size of templates held
# in the in-memory cache vs. on disk. Set to 0 to disable pruning.
cacheSize: $=parseBytes("10MB")
# =============================== Variable ===================================
var:
# 'placeholder' specifies a character to use when encoding a TenXTemplate
# to signify the location of a runtime variable value.
placeholder: "$"
# 'maxRecurIndexes' controls the maximum number of variable values to reuse.
maxRecurIndexes: 10
# =============================== Timestamp ==================================
timestamp:
# 'prefix' specifies a prefix for a TenXTemplate's timestamp tokens.
prefix: (
# 'postfix' specifies a postfix for a TenXTemplate's timestamp tokens.
postfix: )
Transform
Transform
Configure the Transform to transform log and trace events into well-defined TenXObjects.
timestamp
Configure the Timestamp parser to extract alphanumeric and epoch timestamp values from input events.
Below is the default configuration from: timestamp/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGltZXN0YW1wIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJwYXR0ZXJucyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEYXRlLXRpbWUgZm9ybWF0cyBmb3IgcGFyc2luZyB0aW1lc3RhbXBzIGZyb20gaW5wdXQgZXZlbnRzXG5cbkxpc3RzIGRhdGUtdGltZSBmb3JtYXRzIGluIFtKYXZhIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS84L2RvY3MvYXBpL2phdmEvdGltZS9mb3JtYXQvRGF0ZVRpbWVGb3JtYXR0ZXIuaHRtbCkgZm9yIHBhcnNpbmcgdGltZXN0YW1wIGVwb2NoIHZhbHVlcyBmcm9tIGlucHV0IGV2ZW50cy4gKERlZmF1bHQ6IFtcIltjb25maWcueWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvY29uZmlnL3RyZWUvbWFpbi9waXBlbGluZXMvcnVuL2NvbmZpZy90cmFuc2Zvcm0vdGltZXN0YW1wL2NvbmZpZy55YW1sKVwiXSkiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVmYXVsdCIgOiBbCiAgICAgICAgICAgICJbY29uZmlnLnlhbWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L2NvbmZpZy90cmVlL21haW4vcGlwZWxpbmVzL3J1bi9jb25maWcvdHJhbnNmb3JtL3RpbWVzdGFtcC9jb25maWcueWFtbCkiCiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAic2VhcmNoRGlyZWN0aW9uIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJDb250cm9scyB0aGUgdGV4dCBkaXJlY3Rpb24ocykgaW4gd2hpY2ggdG8gc2VhcmNoIGZvciB0aW1lc3RhbXBzXG5cbkNvbnRyb2xzIHRoZSBkaXJlY3Rpb24ocykgdG8gc2VhcmNoIGZvciB0aW1lc3RhbXBzIHdpdGhpbiBhbiBUZW5YT2JqZWN0J3MgW3RleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt0ZXh0KSBmaWVsZC4gUG9zc2libGUgdmFsdWVzOiAgIC0gKipmcm9tU3RhcnQqKjogc2VhcmNoIGZvciBbdGltZXN0YW1wTWF4UGVyT2JqZWN0XShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vdGltZXN0YW1wLyN0aW1lc3RhbXBtYXhwZXJvYmplY3QpIGZyb20gdGhlIHN0YXJ0IG9mIFt0ZXh0XWh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt0ZXh0KSB0byByZXN0cmljdCB0aGUgc2VhcmNoIHRvIFtzZWFyY2hMZW5ndGhMaW1pdEZyb21TdGFydF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3RpbWVzdGFtcC8jdGltZXN0YW1wc2VhcmNobGVuZ3RobGltaXRmcm9tc3RhcnQpIGNoYXJhY3RlcnMgICAgLSAqKmZyb21FbmQqKjogc2VhcmNoIGJhY2t3YXJkIGZvciBbdGltZXN0YW1wTWF4UGVyT2JqZWN0XShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vdGltZXN0YW1wLyN0aW1lc3RhbXBtYXhwZXJvYmplY3QpIGZyb20gdGhlIGVuZCBvZiBbdGV4dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K3RleHQpIHRvIGxpbWl0IHRoZSBzZWFyY2ggdG8gW3NlYXJjaExlbmd0aExpbWl0RnJvbUVuZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3RpbWVzdGFtcC8jdGltZXN0YW1wc2VhcmNobGVuZ3RobGltaXRmcm9tZW5kKSBjaGFyYWN0ZXJzICAgIC0gKipmcm9tU3RhcnRBbmRFbmQqKiBzZWFyY2ggZm9yIFt0aW1lc3RhbXBNYXhQZXJPYmplY3RdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS90aW1lc3RhbXAvI3RpbWVzdGFtcG1heHBlcm9iamVjdCkgZnJvbSBib3RoIHRoZSBzdGFydCBhbmQgZW5kIG9mIFt0ZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGV4dCkgdG8gbGltaXQgdGhlIHNlYXJjaCB0byBbc2VhcmNoTGVuZ3RoTGltaXRGcm9tU3RhcnRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS90aW1lc3RhbXAvI3RpbWVzdGFtcHNlYXJjaGxlbmd0aGxpbWl0ZnJvbXN0YXJ0KSBhbmQgIFtzZWFyY2hMZW5ndGhMaW1pdEZyb21FbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS90aW1lc3RhbXAvI3RpbWVzdGFtcHNlYXJjaGxlbmd0aGxpbWl0ZnJvbWVuZCkgcmVzcGVjdGl2ZWx5ICAgIC0gKipub25lKio6IGRvIG5vdCBwYXJzZSB0aW1lc3RhbXBzIChEZWZhdWx0OiBmcm9tU3RhcnQpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJmcm9tU3RhcnQiCiAgICAgICAgfSwKICAgICAgICAibWF4UGVyT2JqZWN0IiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIHRpbWVzdGFtcHMgcGVyIFRlblhPYmplY3RcblxuQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzdGFtcHMgdG8gYWRkIGludG8gYW4gVGVuWE9iamVjdCdzIFt0aW1lc3RhbXBdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YT2JqZWN0K3RpbWVzdGFtcCkgYXJyYXkuIFNldCB0byAwIGZvciB1bmxpbWl0ZWQuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDAKICAgICAgICB9LAogICAgICAgICJzZWFyY2hMZW5ndGhMaW1pdEZyb21TdGFydCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHNjYW4gZm9yIHRpbWVzdGFtcHMgZnJvbSBldmVudCBzdGFydFxuXG5MaW1pdHMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHNlYXJjaCBmb3IgdGltZXN0YW1wcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG9iamVjdCdzIFt0ZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGV4dCkgIGZpZWxkLiBTZXQgMCBmb3IgdW5saW1pdGVkLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAwKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAwCiAgICAgICAgfSwKICAgICAgICAic2VhcmNoTGVuZ3RoTGltaXRGcm9tRW5kIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heCBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBzY2FuIGZvciB0aW1lc3RhbXBzIGZyb20gZXZlbnQgZW5kXG5cbkxpbWl0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2VhcmNoIGZvciB0aW1lc3RhbXBzIGZyb20gdGhlIGVuZCBvZiB0aGUgb2JqZWN0J3MgW3RleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt0ZXh0KSBmaWVsZC4gU2V0IDAgZm9yIHVubGltaXRlZC4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogMAogICAgICAgIH0sCiAgICAgICAgInpvbmUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRpbWV6b25lIHRvIHVzZSB3aGVuIGZvcm1hdHRpbmcgdGltZXN0YW1wIFVuaXggZXBvY2ggdmFsdWVzXG5cbkNvbnRyb2xzIHRoZSB0aW1lem9uZSB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aW1lc3RhbXAgZXBvY2ggc3RyaW5nIHZhbHVlcy4gVGhlIFtab25lSWQub2ZdKGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS84L2RvY3MvYXBpL2phdmEvdGltZS9ab25lSWQuaHRtbCNvZi1qYXZhLmxhbmcuU3RyaW5nLSkgIG9idGFpbnMgdGhlIHRpbWV6b25lIGZyb20gdGhlICd6b25lJyB2YWx1ZS4gKERlZmF1bHQ6IFtob3N0IE9TIHRpbWV6b25lXShodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvOC9kb2NzL2FwaS9qYXZhL3RpbWUvWm9uZUlkLmh0bWwjc3lzdGVtRGVmYXVsdC0tKSkiLAogICAgICAgICAgImRlZmF1bHQiIDogIltob3N0IE9TIHRpbWV6b25lXShodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvOC9kb2NzL2FwaS9qYXZhL3RpbWUvWm9uZUlkLmh0bWwjc3lzdGVtRGVmYXVsdC0tKSIKICAgICAgICB9LAogICAgICAgICJsaXRlcmFscyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaW1lc3RhbXAgbGl0ZXJhbHNcblxuQW4gYXJyYXkgb2Ygc3RyaW5ncyBsaXRlcmFsIHZhbHVlcyB0byB0cmVhdCBhcyB2YWxpZCBwYXJ0cyBvZiB0aW1lc3RhbXAgKGUuZy4sICdaJywgJ1QnLCAnR01UJykuIChEZWZhdWx0OiBbXCJUXCIsXCJaXCJdKSIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAgICAgIlQiLAogICAgICAgICAgICAiWiIKICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' timestamp parser configuration
# Identify unix/alphanumeric timestamp structures within TenXTemplates.
# https://doc.log10x.com/run/transform/timestamp/
# Set the 10x pipeline to 'run'
tenx: run
# ============================= Timestamp Options =============================
timestamp:
# 'maxPerObject' controls the max number of timestamps to add into an TenXObject's
# 'timestamp' array. Set to 0 for unlimited.
maxPerObject: 0
# 'searchDirection' controls the direction(s) from with timestamps are searched for
# within the object's 'text' field. Possible values:
# - fromStart: search for 'maxPerObject' from the start of 'text',
# limiting search to 'searchLengthLimitFromStart' characters
# - fromEnd: search backward for 'maxPerObject' from the end of 'text',
# limiting search to 'searchLengthLimitFromEnd' characters
# - fromStartAndEnd: search for 'maxPerObject' from both the start and end of 'text'
# limiting search to 'searchLengthLimitFromStart' and 'searchLengthLimitFromEnd' respectively
# - none: do not parse timestamps
searchDirection: fromStartAndEnd
# 'searchLengthLimitFromStart' limits the number of characters to search for
# timestamps from the beginning of the object's 'text' field. 0 for unlimited
searchLengthLimitFromStart: 0
# 'searchLengthLimitFromStart' limits the number of characters to search for
# timestamps from the end of the object's 'text' field. 0 for unlimited
searchLengthLimitFromEnd: 0
# 'zone' controls the timezone for formatting timestamp epoch
# values to string. The 'java.time.ZoneId.of(String zoneId)'
# is used to obtain the timezone from the 'zone' value.
# If set to null, the host OS timezone is used.
zone: null
# 'literals' contains an array of strings to treat as a part
# of any timestamp candidate found when structuring an TenXObject.
literals:
- T
- Z
- I # Go INFO
- E # Go ERROR
- W # Go WARN
# 'patterns' specifies an array of date-time formats to attempt when parsing timestamps from input events.
# Timestamp formats that appear frequently within an input stream can be 'bumped' higher within the list below.
patterns:
# Most common formats
- "'I'MMdd HH:mm:ss.S" # Used in Kubernetes kube-apiserver logs with INFO prefix, 1-digit microsecond precision.
- "'I'MMdd HH:mm:ss.SS" # Used in Kubernetes kube-apiserver logs with INFO prefix, 2-digit microsecond precision.
- "'I'MMdd HH:mm:ss.SSS" # Used in Kubernetes kube-apiserver logs with INFO prefix, 3-digit microsecond precision.
- "'I'MMdd HH:mm:ss.SSSS" # Used in Kubernetes kube-apiserver logs with INFO prefix, 4-digit microsecond precision.
- "'I'MMdd HH:mm:ss.SSSSS" # Used in Kubernetes kube-apiserver logs with INFO prefix, 5-digit microsecond precision.
- "'I'MMdd HH:mm:ss.SSSSSS" # Used in Kubernetes kube-apiserver logs with INFO prefix, 6-digit microsecond precision.
- "'W'MMdd HH:mm:ss.S" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 1-digit microsecond precision.
- "'W'MMdd HH:mm:ss.SS" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 2-digit microsecond precision.
- "'W'MMdd HH:mm:ss.SSS" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 3-digit microsecond precision.
- "'W'MMdd HH:mm:ss.SSSS" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 4-digit microsecond precision.
- "'W'MMdd HH:mm:ss.SSSSS" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 5-digit microsecond precision.
- "'W'MMdd HH:mm:ss.SSSSSS" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 6-digit microsecond precision.
- "'E'MMdd HH:mm:ss.S" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 1-digit microsecond precision.
- "'E'MMdd HH:mm:ss.SS" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 2-digit microsecond precision.
- "'E'MMdd HH:mm:ss.SSS" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 3-digit microsecond precision.
- "'E'MMdd HH:mm:ss.SSSS" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 4-digit microsecond precision.
- "'E'MMdd HH:mm:ss.SSSSS" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 5-digit microsecond precision.
- "'E'MMdd HH:mm:ss.SSSSSS" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 6-digit microsecond precision.
- "'F'MMdd HH:mm:ss.S" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 1-digit microsecond precision.
- "'F'MMdd HH:mm:ss.SS" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 2-digit microsecond precision.
- "'F'MMdd HH:mm:ss.SSS" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 3-digit microsecond precision.
- "'F'MMdd HH:mm:ss.SSSS" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 4-digit microsecond precision.
- "'F'MMdd HH:mm:ss.SSSSS" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 5-digit microsecond precision.
- "'F'MMdd HH:mm:ss.SSSSSS" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 6-digit microsecond precision.
- "yyyy-MM-dd HH:mm:ss" # Widely used in Java applications, databases (e.g., MySQL, PostgreSQL), and application servers (e.g., Tomcat, JBoss).
- "yyyy-MM-dd'T'HH:mm:ss.SSSZ" # Common in web services, APIs, Java (with DateTimeFormatter.ISO_OFFSET_DATE_TIME), Python (with datetime.isoformat()), and systems requiring precise timestamps with timezone information.
- "MMM dd HH:mm:ss" # Frequently seen in syslog, Unix-based systems, network devices (e.g., Cisco routers), and web servers (e.g., Apache, Nginx).
- "dd/MMM/yyyy:HH:mm:ss Z" # Standard syslog format, used in firewalls (e.g., Cisco ASA, Palo Alto), network monitoring tools, and Unix-based systems.
- "yyyy-MM-dd HH:mm:ss,SSS" # Common in Java logging frameworks like Log4j and Logback.
- "yyyy-MM-dd'T'HH:mm:ss,SSS" # Common in Java logging with ISO 8601 date-time, comma-separated milliseconds.
- "MM/dd/yyyy HH:mm:ss" # Used in Windows event logs, .NET applications, and U.S.-based systems.
- "EEE MMM dd HH:mm:ss yyyy" # Human-readable format used in various logs, including some web servers and application logs.
- "yyyy-MM-dd'T'HH:mm:ss" # Simplified ISO 8601 format, used in many modern applications and frameworks.
- "HH:mm:ss" # Time-only format, used when the date is implied or provided separately, common in embedded systems and some programming languages.
- "yyyyMMdd HH:mm:ss" # Compact format used in some legacy systems and batch processing logs.
- "MMM dd, yyyy h:mm:ss a" # Human-readable format with 12-hour clock, used in application logs and some U.S.-based systems.
- "MMM dd, yyyy hh:mm:ss a" # Human-readable format with 12-hour clock (padded hour), used in application logs and some U.S.-based systems.
# Common formats with slight variations
- "yyyy-MM-dd HH:mm:ss.SSS" # Extended precision format used in Java applications and databases requiring millisecond accuracy.
- "dd-MMM-yyyy HH:mm:ss.SSS" # Common in Java logging frameworks (e.g., Log4j, SLF4J) and application logs requiring human-readable dates with millisecond precision.
- "yyyy-MM-dd'T'HH:mm:ss.S'Z'" # Microsecond precision ISO 8601 format, 1-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SS'Z'" # Microsecond precision ISO 8601 format, 2-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" # Microsecond precision ISO 8601 format, 3-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SSSS'Z'" # Microsecond precision ISO 8601 format, 4-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SSSSS'Z'" # Microsecond precision ISO 8601 format, 5-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'" # Microsecond precision ISO 8601 format, 6-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.S'Z'" # Nanosecond precision ISO 8601 format, 1-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SS'Z'" # Nanosecond precision ISO 8601 format, 2-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" # Nanosecond precision ISO 8601 format, 3-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SSSS'Z'" # Nanosecond precision ISO 8601 format, 4-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SSSSS'Z'" # Nanosecond precision ISO 8601 format, 5-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'" # Nanosecond precision ISO 8601 format, 6-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'" # Nanosecond precision ISO 8601 format, 7-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSS'Z'" # Nanosecond precision ISO 8601 format, 8-digit precision.
- "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS'Z'" # Nanosecond precision ISO 8601 format, 9-digit precision.
- "yyyy-MM-dd'T'HH:mm:ssZZZZZ" # ISO 8601 with timezone offset, used in systems where timezone information is critical.
- "yyyy-MM-dd HH:mm:ss.SSSZZZZZ" # Similar to above but without the 'T' separator, used in database logs and application servers.
- "yyyy-MM-dd HH:mm:ss.S" # Microsecond precision format, 1-digit precision.
- "yyyy-MM-dd HH:mm:ss.SS" # Microsecond precision format, 2-digit precision.
- "yyyy-MM-dd HH:mm:ss.SSS" # Microsecond precision format, 3-digit precision.
- "yyyy-MM-dd HH:mm:ss.SSSS" # Microsecond precision format, 4-digit precision.
- "yyyy-MM-dd HH:mm:ss.SSSSS" # Microsecond precision format, 5-digit precision.
- "yyyy-MM-dd HH:mm:ss.SSSSSS" # Microsecond precision format, 6-digit precision.
- "MM/dd/yyyy*HH:mm:ss*SSS" # Used in some U.S.-based systems, particularly in legacy applications or specific logging frameworks.
- "M/d/yyyy h:mm:ss a:SSS" # Common in systems using 12-hour time format, such as some Windows applications or older logging systems.
- "M/d/yyyy hh:mm:ss a:SSS" # Common in systems using 12-hour time format with milliseconds and padded hour, such as some Windows applications.
- "M/dd/yyyy hh:mm:ss a" # Similar to above, used in systems where millisecond precision is not needed.
- "yyyy-MM-dd'T'HH:mm:ss.SSSX" # ISO 8601 with basic timezone offset format, used in systems that require standardized timestamps.
- "yyyy-MM-dd'T'HH:mm:ss.SSSz" # ISO 8601 with timezone name, used in applications that need to display timezone information.
- "yyyy-MM-dd'T'HH:mm:ss'Z'" # ISO 8601 format assuming UTC, used in systems where all times are in UTC.
- "yy/MM/dd HH:mm:ss" # Two-digit year format, used in compact logs or older systems.
- "MMM dd HH:mm:ss ZZZZ" # Used in some Unix-based systems and web servers, includes timezone offset.
- "HH:mm:ss,SSS" # Time-only format with milliseconds, used in performance logs or systems where date is provided separately.
- "yyyy-MM-dd*HH:mm:ss" # Used in some application logs where the separator is a space or asterisk.
- "yyyy MMM dd HH:mm:ss.SSS" # Human-readable format with milliseconds, used in some application logs.
- "dd/MMM/yyyy HH:mm:ss" # Used in European systems and some web applications.
- "yyyy-MM-dd'T'HH:mm:ss.SSS''Z''" # ISO 8601 with milliseconds and literal 'Z', used in systems where 'Z' is explicitly included.
- "MMM dd yyyy HH:mm:ss" # Human-readable format, used in various logs.
- "yyyy-MM-dd HH:mm:ss ZZZZ" # Format with timezone offset, used in systems requiring timezone information.
- "yyyy-MM-dd HH:mm:ssZZZZZ" # Similar to above, used in application logs.
- "dd MMM yyyy HH:mm:ss" # European format, used in some web applications and databases.
- "MMdd_HH:mm:ss" # Compact format without separators, used in file names or space-constrained logs.
- "yyyy-MM-dd HH:mm:ss,SSSZZZZZ" # Java logging format with timezone offset.
- "yyyyMMdd HH:mm:ss.SSS" # Compact format with milliseconds, used in some legacy systems.
- "yyyy/MM/dd HH:mm:ss" # Format used in some Asian systems, particularly in Japan.
- "dd/MM/yyyy HH:mm:ss" # Common in European systems, including some web applications and databases.
- "MM-dd-yyyy HH:mm:ss" # U.S. format variant, used in some older systems.
- "yyyyMMddHHmmss" # Compact format for file names or database timestamps, used in systems where space is a concern.
- "EEE, dd MMM yyyy HH:mm:ss zzz" # RFC 1123 format, used in HTTP headers, web servers, and email systems.
fields
Configure the Field parser to scan TenXTemplates for JSON and KV fields.
Below is the default configuration from: fields/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZmllbGQiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImV4dHJhY3QiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNjYW4gVGVuWFRlbXBsYXRlIGZvciBuZXN0ZWQgSlNPTiBvYmplY3RzIG9yIGtleS12YWx1ZSBsaXN0c1xuXG5Db250cm9scyB3aGV0aGVyIHRvIHNjYW4gVGVuWFRlbXBsYXRlcyBmb3IgSlNPTiBvYmplY3RzIG9yIGtleS12YWx1ZSBsaXN0cyAoZS5nLiwgYHtcInByaWNlXCI6IDEwfWAgb3IgYHByaWNlPTEwYCkuIFRlblhPYmplY3RzIGluc3RhbmNlcyBvZiB0aGlzIHRlbXBsYXRlIHdpbGwgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlc2UgZmllbGRzIGFzIG5hbWVkIG1lbWJlcnMgKGUuZy4sIGB0aGlzLnByaWNlYCkuIElmIGEgZmllbGQgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiBbdGV4dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K3RleHQpIGl0IGlzIGFjY2Vzc2libGUgYXMgYW4gYXJyYXkgKGUuZy4sIGB0aGlzLnByaWNlWzFdYCkuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibmFtZUJyZWFrcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiS1YgZmllbGQgbmFtZSB0ZXJtaW5hdG9yIGNoYXJzXG5cbkNvbnRyb2xzIHdoaWNoICd0ZXh0JyBjaGFyYWN0ZXJzIGxlZnQgb2YgYSBjYW5kaWRhdGUgdG9rZW4gZm9yIGJlaW5nIGEgJ2tleScgaW4gYSBLViBmaWVsZCBmb3JtYXRpb24gc2hvdWxkIHNlcnZlIGFzIGEgdGVybWluYXRvciBmb3IgdGhlIHNlYXJjaC4gICBGb3IgZXhhbXBsZSwgZm9yIGFuIFRlblhPYmplY3Qgd2hvc2UgW3RleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt0ZXh0KSBjb250YWlucyB0aGUgZm9sbG93aW5nIGVudHJ5ICcsdHhfcmVzdWx0PU9LJywgdGhlIGRlc2lyZWQga2V5IHNob3VsZCBiZSAndHhfcmVzdWx0JywgYW5kIHNvIHRoZSBuYW1lIHRlcm1pbmF0b3IgY2hhcmFjdGVyIHNob3VsZCBiZSAnLCcgdnMuICdfJyAoaW4gd2hpY2ggY2FzZSB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBuYW1lZCAncmVzdWx0JykuIChEZWZhdWx0OiAsIC9cXHt9LigpW10pIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIsIC9cXHt9LigpW10iCiAgICAgICAgfSwKICAgICAgICAidmFsdWVCcmVha3MiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIktWIGZpZWxkIHZhbHVlIHRlcm1pbmF0b3IgY2hhcnNcblxuQ29udHJvbHMgd2hpY2ggY2hhcmFjdGVycyBmb3VuZCB0byB0aGUgcmlnaHQgb2YgYSB0b2tlbiB3aG9zZSBpcyBhIGNhbmRpZGF0ZSBmb3IgYmVpbmcgYSAndmFsdWUnIGluIGEgS1YgZmllbGQgZm9ybWF0aW9uIHNob3VsZCBzZXJ2ZSAgYXMgYSB0ZXJtaW5hdG9yIGZvciB0aGUgc2VhcmNoLiAgIEZvciBleGFtcGxlLCBmb3IgYW4gb2JqZWN0IHdob3NlIFt0ZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGV4dCkgZmllbGQgY29udGFpbnMgdGhlIGZvbGxvd2luZyBlbnRyeTogJ3N0YXR1cz1SRVNVTFRfU1VDQ0VTUycgdGhlIGRlc2lyZWQgS1YgdmFsdWUgIHNob3VsZCBiZSAnUkVTVUxUX1NVQ0NFU1MnLCBhbmQgYXMgc3VjaCB0aGUgdmFsdWUgdGVybWluYXRvciBjaGFyYWN0ZXIgIHNob3VsZCBiZSAnLCcgdnMuICdfJyAoaW4gd2hpY2ggY2FzZSB0aGUgdmFsdWUgd291bGQgYmUgJ1JFU1VMVCcpLiAoRGVmYXVsdDogL1xce30oKVtdKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiL1xce30oKVtdIgogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=
# 🔟❎ 'run' TenXTemplate field extract configuration
# Configure how to extract JSON objects and KV structures from TenXTemplates.
# To learn more see https://doc.log10x.com/run/transform/fields/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Extract Options =============================
field:
# 'extract' controls whether to scan TenXTemplate for JSON
# objects or key-value lists (e.g., 'X=Y').
extract: true
# 'nameBreaks' controls which characters found to the left of a token
# whose is a candidate for being a 'key' in a KV field formation should serve
# as a terminator for the search. For example, for an object whose 'text' field
# contains the following entry ',tx_result=OK' the desired key name should be 'tx_result'
# and as such, the name terminator character should be ',' vs. '_' (in which case
# the key would have been named 'result').
nameBreaks: ', /\{}.()[]'
# 'valueBreaks' controls which characters found to the right of a token
# whose is a candidate for being a 'value' in a KV field formation should serve
# as a terminator for the search. For example, for an object whose 'text' field
# contains the following entry: 'status=RESULT_SUCCESS' the desired KV value
# should be 'RESULT_SUCCESS', and as such, the value terminator character
# should be ',' vs. '_' (in which case the value would be 'RESULT').
valueBreaks: ', /\{}()[]'
symbol
Configure the Origin selector to select the source code/binary executable origin of TenXTemplate symbol values.
Below is the default configuration from: symbol/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAic3ltYm9sIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJzZXF1ZW5jZVJlc2VydmVkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgdGVybXMgdG8gaWdub3JlIHdoZW4gc2Nhbm5pbmcgc3ltYm9sIHRva2Vuc1xuXG5EZWZpbmVzIGEgbGlzdCBvZiB0ZXJtcyB0aGF0IHRvIGlnbm9yZSB3aGVuIHNlYXJjaGluZyBmb3IgdGhlIHN5bWJvbCB0b2tlbnMgY29uc3RpdHV0aW5nIGFuIFRlblhUZW1wbGF0ZSdzICdtZXNzYWdlJyBwb3J0aW9uIChpLmUuLCB0aGUgbG9uZ2VzdCBjb25zZWN1dGl2ZSBzZXF1ZW5jZSBvZiBbc3ltYm9sXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vc3RydWN0dXJlLyNzeW1ib2xzKSB0b2tlbnMpLiBGb3IgZXhhbXBsZSwgZm9yIGFuIFRlblhPYmplY3Qgd2hvc2UgdGV4dCBjb250YWluczogJ2Nvbm5lY3Qgc3VjY2VzcyA9IHRydWUnLCB0aGUgdmFsdWUgJ3RydWUnIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgYSBwYXJ0IG9mIHRoZSBpbnN0YW5jZSdzIG1lc3NhZ2UsIGFzIGl0IGlzIG1vc3RseSBsaWtlbHkgdGhlIHJlc3VsdCBvZiBhIHZhcmlhYmxlIGJvb2xlYW4gc3RhdGUuIFRvIGxlYXJuIG1vcmUgc2VlIFtzeW1ib2xTZXF1ZW5jZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhPYmplY3Qrc3ltYm9sU2VxdWVuY2UpLiAoRGVmYXVsdDogW1wibnVsbFwiLFwibmlsXCIsXCJ0cnVlXCIsXCJmYWxzZVwiXSkiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVmYXVsdCIgOiBbCiAgICAgICAgICAgICJudWxsIiwKICAgICAgICAgICAgIm5pbCIsCiAgICAgICAgICAgICJ0cnVlIiwKICAgICAgICAgICAgImZhbHNlIgogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgIm1heE9yaWdpbnMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4IG51bWJlciBvZiBzb3VyY2UvYmluYXJ5IG9yaWdpbnMgdG8gbGlzdCBwZXIgc3ltYm9sXG5cbkNvbnRyb2xzIHRoZSBudW1iZXIgb2Ygc291cmNlIGNvZGUvYmluYXJ5IG9yaWdpbnMgdG8gbGlzdCBwZXIgc3ltYm9sIHRva2VuIHNlcXVlbmNlLiBBcyBhIHNlcmllcyBvZiB0b2tlbnMgd2l0aGluICBhIGdpdmVuIHRlbXBsYXRlIChlLmcuLCAnRVJST1InLCAnY291bGQgbm90IGNvbm5lY3QgdG8gXCJ7fScpIG1heSBhcHBlYXIgIGluIG11bHRpcGxlIHNvdXJjZS9iaW5hcnkgZmlsZXMgd2l0aGluIHRoZSBwaXBlbGluZSdzIHN5bWJvbCBmaWxlcywgdGhlIHNvcnRpbmcgYWxnb3JpdGhtIHNlbGVjdHMgW21heFN5bWJvbE9yaWdpbnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI3N5bWJvbG1heG9yaWdpbnMpIGZvciBjb21wYXJpc29uLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA2NCkiLAogICAgICAgICAgImRlZmF1bHQiIDogNjQKICAgICAgICB9LAogICAgICAgICJkZWJ1ZyIgOiB7CiAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgIm9yaWdpbnMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIHNvdXJjZSBzY2FubmVkIGZpbGUgbmFtZXMgZm9yIHdoaWNoIHRvIGxvZyBpbmZvcm1hdGlvblxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGlucHV0IGZpbGUgbmFtZXMgd2l0aGluIHRoZSBsb2FkZWQgc3ltYm9sIGxpYnJhcnkgKGUuZy4sICdteS5zY2FsYScsICdmb28uamF2YScpIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb24gb24gaWYvaG93IHRoZXkgcGFydGljaXBhdGUgaW4gc2VsZWN0aW5nIHRoZSBvcmlnaW4gb2YgYSB0YXJnZXQgVGVuWFRlbXBsYXRlIHN5bWJvbCBzZXF1ZW5jZS4gVGhpcyBvcHRpb24gaGVscHMgZGVidWcgaG93IHRoZSBbc3ltYm9sU2VxdWVuY2VdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YT2JqZWN0K3N5bWJvbFNlcXVlbmNlKSBmdW5jdGlvbiBzZWxlY3RzICBvcmlnaW4gdmFsdWVzIGZvciBhIHRhcmdldCBUZW5YVGVtcGxhdGUgc3ltYm9sIHNlcXVlbmNlLiAgU3BlY2lmeSAnKicgZm9yIGFsbCBpbnB1dCBmaWxlcy4iLAogICAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN5bWJvbHMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhUZW1wbGF0ZSBzeW1ib2wgdmFsdWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb25cblxuTGlzdCBvZiBzeW1ib2wgdmFsdWVzIHN1Y2ggYXMgY2xhc3MgYW5kIG1ldGhvZCBuYW1lcyhlLmcuLCAnTXlDbGFzcycsICdmb28nKSBmb3Igd2hpY2ggdG8gbG9nIGluZm9ybWF0aW9uIG9uIGhvdyB0aGVpciBvcmlnaW4gaW5mb3JtYXRpb24gaXMgc2VsZWN0ZWQuIFRoaXMgb3B0aW9uIGhlbHBzIGRlYnVnIGhvdyB0aGUgW3N5bWJvbFNlcXVlbmNlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWE9iamVjdCtzeW1ib2xTZXF1ZW5jZSkgZnVuY3Rpb24gc2VsZWN0cyAgb3JpZ2luIHZhbHVlcyBmb3IgYSB0YXJnZXQgVGVuWFRlbXBsYXRlIHN5bWJvbCBzZXF1ZW5jZS4gIFNwZWNpZnkgJyonIGZvciBhbGwgc3ltYm9scy4iLAogICAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImxvZ2dlck5hbWUiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGVidWcgbG9nZ2VyIG5hbWVcblxuQ29udHJvbHMgdGhlIG5hbWUgb2YgdGhlIGxvZzRqIGxvZ2dlciB1c2VkIGJ5IFtkZWJ1Z09yaWdpbnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI3N5bWJvbGRlYnVnb3JpZ2lucykgYW5kIFtkZWJ1Z1N5bWJvbHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI3N5bWJvbGRlYnVnc3ltYm9scykuIChEZWZhdWx0OiBbY29uc29sZU91dF0oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvY29uZmlnL2Jsb2IvbWFpbi9sb2c0ajIueWFtbCNMNjYpKSIsCiAgICAgICAgICAgICAgImRlZmF1bHQiIDogIltjb25zb2xlT3V0XShodHRwczovL2dpdGh1Yi5jb20vbG9nLTEweC9jb25maWcvYmxvYi9tYWluL2xvZzRqMi55YW1sI0w2NikiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' symbol origin configuration
# Identify the origin of symbol values within TenXTemplates.
# To learn more see https://doc.log10x.com/run/transform/symbol/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Origin Options ==============================
symbol:
# 'maxOrigins' controls the number of source/binary origins to list
# per symbol token sequence. As a series of tokens within
# a target TenXTemplate (e.g., 'ERROR', 'could not connect to "{}') may appear
# in multiple source/binary files within the pipeline's loaded library.
# The sorting algorithm configured below is used to select the 'maxSymbolOrigins'
# topmost entries to list.
maxOrigins: 64
# 'sequenceReserved' defines a list of terms to ignore when searching
# for the symbol tokens that constitute an TenXTemplate's 'message' portion.
# For example, for an event whose text contains: 'connect success = true',
# the value 'true' will not be considered a part of the event's message,
# as the 'true' value is mostly likely the result of a variable boolean state.
# For more information, see: https://doc.log10x.com/api/js/#TenXObject+symbolSequence
sequenceReserved:
- "null"
- "nil"
- "true"
- "false"
- "to"
- "the"
- "a"
- "at"
- "for"
- "log"
- "info"
- "http"
- TRACE
- DEBUG
- INFO
- NOTICE
- WARN
- ERROR
- CRITICAL
- ALERT
- EMERGENCY
# ----------------------------- Debug Options -------------------------------
debug:
# 'symbol' debugging allows for verbose printing of the selection process
# for symbol tokens from the pipeline's 10x symbol files used to produce the
# results of 10x reflection functions.
# For more information, see: https://doc.log10x.com/api/js/#TenXObject+symbol
# 'origins' outputs information about the origin selection process for an TenXTemplate symbol.
# For example, setting 'units' to 'foo.js' will output information about if/how it
# was selected as the origin of TenXTemplate symbols.
# In other words, if a symbol (e.g., 'MyClass') has 'foo.java' as the source file
# from which it originated, adding 'foo.js' to 'units' will emit information
# about the selection process.
# Specifying '*' will emit information for all source /binary files that have
# been selected as the origin of any TenXTemplate objects within the pipeline.
origins: [
# '*'
]
# 'symbols' logs the origin selection process for symbol tokens within an TenXTemplate.
# For example, set 'symbols' to 'Could not connect to' to log how the 10x JavaScript 'symbolSequence'
# determines the origin source code/binary file within the pipeline's symbol library.
# Specifying '*' will emit information for all source code /binary files that have
# been selected as the origin of any TenXTemplate objects within the pipeline.
symbols: [
# '*'
]
group
Configure the Group sequencer to group and sequence TenXObjects.
Below is the default configuration from: group/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZ3JvdXAiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgIm1heFNpemUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4IG51bWJlciBvZiBvYmplY3RzIHRvIHBsYWNlIGluIGEgZ3JvdXBcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb2JqZWN0cyB0byBwbGFjZSB1bmRlciBvbmUgZ3JvdXAgYmVmb3JlIHN0YXJ0aW5nIGEgbmV3IGdyb3VwLiBTZXQgMCB0byB1bmxpbWl0ZWQuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwMDAwKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAyMDAwMAogICAgICAgIH0sCiAgICAgICAgImZsdXNoVGltZW91dCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSW50ZXJ2YWwgdG8gZmx1c2ggYSBwZW5kaW5nIFRlblhPYmplY3RzIGdyb3VwXG5cblNldHMgdGhlIG1heCBpbnRlcnZhbCBhZnRlciB3aGljaCB0byBmbHVzaCBwZW5kaW5nIFRlblhPYmplY3RzIGludG8gdGhlIHBpcGVsaW5lLiBUaGlzIG9wdGlvbiBwcm92aWRlcyBhIHRpbWVvdXQgcGVyaW9kIHRvIGZsdXNoIHRoZSBjdXJyZW50IGdyb3VwIGhlYWQgYW5kIGNvbXBvc2VkICBUZW5YT2JqZWN0cyBpbnRvIHRoZSBwaXBlbGluZSBmb3IgYWdncmVnYXRpb24sIGZpbHRlcmluZywgYW5kIGVuY29kaW5nIHRvIG91dHB1dC4gKERlZmF1bHQ6IDVzZWMpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICI1c2VjIgogICAgICAgIH0sCiAgICAgICAgImV4cHJlc3Npb25zIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXZhU2NyaXB0IGV4cHJlc3Npb25zIFRlblhPYmplY3QgaW5zdGFuY2UvZ3JvdXAgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgYWdhaW5zdCB0byBiZSBzZXQgYXMgZ3JvdXAgaGVhZFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIEphdmFTY3JpcHQgZXhwcmVzc2lvbnMgdGhhdCBtdXN0IGFsbCBldmFsdWF0ZSBhcyB0cnV0aHkgZm9yIHRoZSB0YXJnZXQgVGVuWE9iamVjdCB0byBiZSBjbGFzc2lmaWVkIGFzIFtncm91cCBoZWFkXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vZ3JvdXAvI2dyb3VwLWhlYWRzKS4gIEZvciBleGFtcGxlLCB0aGUgW2dyb3VwIGluaXRpYWxpemVyXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbml0aWFsaXplL2dyb3VwLykgbW9kdWxlIGNhbGN1bGF0ZXMgYSBbVGVueFRlbXBsYXRlIHZhcmlhYmxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFRlbXBsYXRlLnNldCkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaW5zdGFuY2VzIG9mIGEgdGFyZ2V0IGBUZW5YVGVtcGxhdGVgIHJlcHJlc2VudCBncm91cCBoZWFkcyBiYXNlZCBvbiBhIG51bWJlciBvZiBoZXVyaXN0aWMgaW5kaWNhdG9ycyBhbmQgc2V0cyB0aGUgY2FsY3VsYXRlZCBmaWVsZCBuYW1lIChlLmcuLCBgR3JvdXBUZW1wbGF0ZS5pc0dyb3VwYCkgaG9sZGluZyB0aGUgcmVzdWx0aW5nIHZhbHVlIGludG8gdGhpcyBhcnJheS4gICBVc2luZyBUZW5YVGVtcGxhdGUgdmFyaWFibGVzIGFsbG93cyBmb3IgY29tcHV0aW5nIHRoaXMgc3RhdGUgb25jZSBmb3IgYWxsIGluc3RhbmNlcyBvZiBhIHRhcmdldCBldmVudC4iCiAgICAgICAgfSwKICAgICAgICAiZmlsdGVycyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXZhU2NyaXB0IGV4cHJlc3Npb25zIFRlblhPYmplY3QgaW5zdGFuY2UvZ3JvdXAgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgYWdhaW5zdFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIEphdmFTY3JpcHQgZXhwcmVzc2lvbnMgdGhhdCBtdXN0IGFsbCBldmFsdWF0ZSBhcyB0cnV0aHkgZm9yIHRoZSB0YXJnZXQgb2JqZWN0L2dyb3VwIHRvIGJlIHBhcnQgb2YgYSBzZXF1ZW5jZSBhZ2dyZWdhdGVkL3dyaXR0ZW4gdG8gb3V0cHV0LiAgVG8gbGVhcm4gbW9yZSBzZWUgW2dyb3VwIGZpbHRlcnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9ncm91cC8jZ3JvdXAtZmlsdGVycykuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiYXN5bmMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkdyb3VwIFRlblhPYmplY3RzIGluIGEgZGVkaWNhdGVkIHRocmVhZFxuXG5TcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIFRlblhPYmplY3QgZ3JvdXBpbmcgbG9naWMgaW4gYSBkZWRpY2F0ZWQgdGhyZWFkIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiB0cnVlCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' event grouping configuration
# Group sequences of TenXObjects to filter, aggregate and output as a single logical unit.
# To learn more see https://doc.log10x.com/run/transform/group/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Group Options ===============================
group:
# 'filters' specify JavaScript expressions an TenXObject instance/group must
# evaluate as truthy against to be written to output
filters: []
# 'maxSize' defines the maximum number of TenXObjects to group
# before the group is sealed and forwarded into the pipeline.
# Subsequent TenXObjects can form a new group.
maxSize: 20000
# 'flushTimeout' defines the max interval (e.g., 10s) to wait for
# new events to be read from an input stream before it flushes any
# pending TenXObjects group into the pipeline.
# This mechanism is designed to avoid latencies in dispatching pending event
# groups to output destinations.
flushTimeout: $=parseDuration("5s")
# 'async' specifies whether to sequence and group TenXObjects in a dedicated thread
async: true
parallelize
Configure the Parallel processor to distribute event parsing and transformation workloads across multiple cores..
Below is the default configuration from: parallelize/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAicGFyYWxsZWxFdmVudCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAidGhyZWFkUG9vbFNpemUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk51bWJlciBvZiB0aHJlYWRzIHRvIGFsbG9jYXRlIHRvIHRyYW5zZm9ybSBldmVudHMgaW50byBUZW5YT2JqZWN0cyBjb25jdXJyZW50bHlcblxuQ29udHJvbHMgdGhlIG51bWJlciBvZiB0aHJlYWRzIHRvIGFsbG9jYXRlIHRvIHRyYW5zZm9ybSBldmVudHMgaW50byBUZW5YT2JqZWN0cyBjb25jdXJyZW50bHkuIElmIHRoZSB2YWx1ZSBpcyAtICB8IFNldHRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWxsb2NhdGVkIFRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8IDptYXRlcmlhbC1lcXVhbDogKiowKiogICAgICAgICAgIHwgVHJhbnNmb3JtIGV2ZW50cyBpbnRvIFRlblhPYmplY3RzIHN5bmNocm9ub3VzbHkgdXNpbmcgdGhlaXIgaW5wdXQgc3RyZWFtIGNhbGxpbmcgdGhyZWFkICAgICAgICAgICAgICAgICAgICAgIHwgfCA6bWF0ZXJpYWwtbGVzcy10aGFuOiAqKjEqKiAgICAgICB8IEludGVycHJldGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBjb3JlcyAoZS5nLiwgMC41ID0gdXNlIHVwIHRvIDUwJSBvZiBhdmFpbGFibGUgY29yZXMpIHwgfCA6bWF0ZXJpYWwtZXF1YWw6ICoqMSoqICAgICAgICAgICB8IEFsbG9jYXRlIGEgc2luZ2xlIGRlZGljYXRlZCB0byB0cmFuc2Zvcm0gZXZlbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCA6bWF0ZXJpYWwtZ3JlYXRlci10aGFuOiAqKjEqKiAgICB8IEludGVycHJldGVkIGFzIGEgZml4ZWQgbnVtYmVyIG9mIHRocmVhZHMgKGUuZy4sIDEwID0gMTAgdGhyZWFkcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwiCiAgICAgICAgfSwKICAgICAgICAiYmF0Y2hTaXplIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIGV2ZW50cyB0byBxdWV1ZSBmb3IgY29uY3VycmVudCBwcm9jZXNzaW5nIGJlZm9yZSBmbHVzaGluZ1xuXG5TZXRzIHRoZSBudW1iZXIgb2YgZXZlbnRzIHRvIHF1ZXVlIGJlZm9yZSBmbHVzaGluZyB0aGVtIHRvIHRyYW5zZm9ybSBpbnRvIFRlblhPYmplY3RzLiBJZiBbdGhyZWFkUG9vbFNpemVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9wYXJhbGxlbGl6ZS8jcGFyYWxsZWxldmVudHRocmVhZHBvb2xzaXplKSBpcyAxLCB0aGlzIHZhbHVlIGlzIHVudXNlZCwgYW5kIGV2ZW50cyBhcmUgdHJhbnNmb3JtZWQgaW50byBUZW5YT2JqZWN0IHN5bmNocm9ub3VzbHkgIHRvIHRoZWlyIGNhbGxpbmcgaW5wdXQncyB0aHJlYWQuICBJZiAwLCBmbHVzaCBwZW5kaW5nIGV2ZW50cyBhZnRlciBbZmx1c2hJbnRlcnZhbF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3BhcmFsbGVsaXplLyNwYXJhbGxlbGV2ZW50Zmx1c2hpbnRlcnZhbCkgZXhwaXJlcyBvciB0aGUgc291cmNlIGlucHV0IHJlYWNoZXMgZW5kLW9mLWZpbGUuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDEwMDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDEwMDAKICAgICAgICB9LAogICAgICAgICJmbHVzaEludGVydmFsIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIHdhaXQgZHVyYXRpb24gYmVmb3JlIGZsdXNoaW5nIHF1ZXVlZCBldmVudHNcblxuU2V0cyBhbiBpbnRlcnZhbCBwZXJpb2QgZm9yIChlLmcuICcycykgYmVmb3JlIGZsdXNoaW5nIHBlbmRpbmcgZXZlbnRzIHRvIHRyYW5zZm9ybSBpbnRvIFRlblhPYmplY3RzLiBJZiBbdGhyZWFkUG9vbFNpemVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9wYXJhbGxlbGl6ZS8jcGFyYWxsZWxldmVudHRocmVhZHBvb2xzaXplKSBpcyAxLCB0aGlzIHZhbHVlIGlzIHVudXNlZCwgYW5kIGV2ZW50cyBhcmUgdHJhbnNmb3JtZWQgaW50byBUZW5YT2JqZWN0IHN5bmNocm9ub3VzbHkgIHRvIHRoZWlyIGlucHV0IHRocmVhZC4gSWYgMCwgbm8gd2FpdCBmbHVzaCBpbnRlcnZhbCBpcyBhcHBsaWVkLiAoRGVmYXVsdDogMnMpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIycyIKICAgICAgICB9LAogICAgICAgICJwcm9jZXNzaW5nVGltZW91dCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB3YWl0IGR1cmF0aW9uIGJlZm9yZSBkcm9wcGluZyB1bi1wcm9jZXNzZWQgcXVldWVkIGV2ZW50c1xuXG5TZXRzIGEgdGltZW91dCBwZXJpb2QgKGUuZy4sICczMHMnKSwgYWZ0ZXIgd2hpY2ggdG8gZHJvcCBxdWV1ZWQgZXZlbnRzLiBUaGlzIHZhbHVlIHByb3ZpZGVzIGEgYmFja3N0b3AgZm9yIG92ZXJmbG93aW5nIHRoZSBoZWFwIGlmIHRoZSBwaXBlbGluZSBjYW5ub3QgZGVxdWV1ZSAgcGVuZGluZyBldmVudHMgdG8gdHJhbnNmb3JtIGludG8gVGVuWE9iamVjdC4gSWYgMCwgbm8gdGltZW91dCBpcyBhcHBsaWVkLiAoRGVmYXVsdDogMzBzKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiMzBzIgogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=
# 🔟❎ 'run' event parallel processing configuration
# Transform log/trace events read from inputs into well-defined TenXObjects using multiple cores.
# To learn more see https://doc.log10x.com/run/transform/parallelize/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Parallel Options ============================
parallelEvent:
# 'threadPoolSize' specifies the number of threads allocated to transform events into TenXObjects concurrently.
# If the value is -
# - = 0: transform events into TenXObjects synchronously using their input stream calling thread.
# - < 1: interpreted as a percentage of the number of available cores (e.g., 0.5 = use up to 50% of available cores)
# - = 1: allocate a single dedicated to transform events.
# - > 1: interpreted as a fixed number of threads (e.g., 10 = 10 threads)
threadPoolSize: "0.5"
# 'batchSize' specifies the maximum number of events to queue for concurrent processing before flushing.
# If 'threadPoolSize' is 1, this value is unused, and events are transformed into TenXObject synchronously
# to their calling input's thread. If 0, flush pending events after 'parallelEventFlushInterval' expires or the
# source input reaches end-of-file.
batchSize: 1000
# 'flushInterval' specifies the maximum wait duration before flushing queued events
# If 'parallelThreadPoolSize' is 1, this value is unused, and events are transformed into TenXObject synchronously
# to their input thread. If 0, no wait flush interval is applied.
flushInterval: 2s
# 'processingTimeout' specifies the maximum wait duration before dropping un-processed queued events
# This value provides a backstop for overflowing the heap if the pipeline cannot dequeue
# pending events to transform into TenXObjects. If 0, no timeout is applied.
processingTimeout: 30s
This app is defined in policy/app.yaml.