Run
Identify high-cost log events in your analytics platforms (Splunk, Elasticsearch, Datadog, CloudWatch) to pinpoint optimization targets.
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 Cloud binary flavor:
Step 2: Set Environment Variables (Required)
Set these environment variables before running. See path configuration for details.
| Variable | Description | Required |
|---|---|---|
TENX_CONFIG |
Path to your configuration directory | Yes |
TENX_API_KEY |
Your Log10x API key (get one) | Yes |
API Key Required
Unlike local development apps, the Cloud Reporter requires a valid TENX_API_KEY to run. The app will fail immediately without it.
Analyzer credentials (based on your platform):
| Platform | Variables | Documentation |
|---|---|---|
| Splunk | SPLUNK_USERNAME, SPLUNK_PASSWORD |
Splunk Authentication |
| Elasticsearch | ELASTIC_USERNAME, ELASTIC_PASSWORD |
Elastic Security |
| Datadog | DD_API_KEY, DD_APP_KEY |
Datadog API Keys |
| CloudWatch | AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY |
AWS Access Keys |
export TENX_CONFIG=/path/to/your/config
export TENX_API_KEY=your-api-key
export SPLUNK_USERNAME=your-username
export SPLUNK_PASSWORD=your-password
See best practices for managing secrets in production.
Step 3: Enable Analyzer Input
-
In the app config, uncomment the input line for your analyzer (Splunk, Elasticsearch, Datadog, CloudWatch, Coralogix, or Logz.io)
-
In the analyzer inputs section below, find your analyzer's tab and set the host, credentials, index/log group, and time range
Step 4: Symbol Library (optional)
Load Symbol library files to transform events into typed TenXObjects.
Place symbol files in the symbolPaths folders specified in the symbol config.
Step 5: Enrichments (optional)
Enrichments add context (severity, HTTP codes) for richer aggregation reports.
To enable:
- In the app config, uncomment the desired enrichment
includeentries - In the initializers section below, configure each enrichment's settings
Step 6: Metrics Output (optional)
Publish aggregated metrics to time-series databases (Prometheus, Datadog).
To enable:
- In the app config, uncomment the desired metric output
includeentry - In the metric outputs section below, configure connection details
Step 7: Run
Best for: Quick local testing and development.
Best for: Isolated testing with local configuration.
docker run --rm \
-v $TENX_CONFIG:/etc/tenx/config/ \
-e TENX_CONFIG=/etc/tenx/config/ \
-e TENX_API_KEY=${TENX_API_KEY} \
-e SPLUNK_USERNAME=${SPLUNK_USERNAME} \
-e SPLUNK_PASSWORD=${SPLUNK_PASSWORD} \
ghcr.io/log-10x/pipeline-10x:latest \
@apps/cloud/reporter
Schedule periodically
Create /opt/scripts/cloud-reporter.sh:
#!/bin/bash
docker run --rm \
-v $TENX_CONFIG:/etc/tenx/config/ \
-e TENX_CONFIG=/etc/tenx/config/ \
-e TENX_API_KEY=${TENX_API_KEY} \
-e SPLUNK_USERNAME=${SPLUNK_USERNAME} \
-e SPLUNK_PASSWORD=${SPLUNK_PASSWORD} \
ghcr.io/log-10x/pipeline-10x:latest \
@apps/cloud/reporter
Schedule:
Add (runs every 15 minutes):
Best for: CI/CD pipelines with version-controlled configuration.
docker run --rm \
-e TENX_API_KEY=${TENX_API_KEY} \
-e SPLUNK_USERNAME=${SPLUNK_USERNAME} \
-e SPLUNK_PASSWORD=${SPLUNK_PASSWORD} \
ghcr.io/log-10x/pipeline-10x:latest \
'@github={"token": "${GH_TOKEN}", "repo": "my-user/my-repo"}' \
@apps/cloud/reporter
Schedule periodically
Create /opt/scripts/cloud-reporter-gitops.sh:
#!/bin/bash
docker run --rm \
-e TENX_API_KEY=${TENX_API_KEY} \
-e SPLUNK_USERNAME=${SPLUNK_USERNAME} \
-e SPLUNK_PASSWORD=${SPLUNK_PASSWORD} \
ghcr.io/log-10x/pipeline-10x:latest \
'@github={"token": "${GH_TOKEN}", "repo": "my-user/my-repo"}' \
@apps/cloud/reporter
Schedule:
Add (runs every 15 minutes):
Step 8: Verify
Verify no errors appear in the log file.
Check for Camel route errors:
-
View the log file for errors:
-
If you see connection or authentication errors, enable debug logging for your analyzer's route. See Debugging Camel Routes for detailed instructions.
-
Quick debug example - add to
$TENX_CONFIG/log4j2.yaml:
View results in the dashboard:
Once running, view your cost analytics in the Cloud Reporter Dashboard.
Configuration
To configure the Cloud Reporter app, Edit these settings:
Main Config
Main Config
Below is the default configuration from: reporter/config.yaml.
#
# 🔟❎ Cloud reporter app main config
# Loads the required modules for a Cloud reporter app instance.
# To learn more see https://doc.log10x.com/apps/cloud/reporter
# ============================ Bootstrap Runtime ==============================
# Initialize the runtime. To learn more see https://doc.log10x.com/run/bootstrap
tenx: run
runtimeName: $=TenXEnv.get("TENX_RUNTIME_NAME", "myCloudReporter")
# ============================ Load App Modules ===============================
# Uncomment and edit selected config.yaml files (e.g., run/input/analyzer/elastic/config.yaml)
include:
# ------------------------------ App settings ---------------------------------
# Load app settings:
- cloud/reporter
# Load gitops settings for pulling additional assets from Github.
# Edit the gitops/config.yaml file with specific config
#
# For additional info see - https://doc.log10x.com/config/github
- gitops
# ------------------------------ Select Inputs --------------------------------
# This application supports multiple possible inputs, at least one of which should be enabled
#
# Uncomment and edit to read events from remote log analyzers input(s):
#
# - run/input/analyzer/elastic # https://doc.log10x.com/run/input/analyzer/elasticsearch
# - run/input/analyzer/coralogix # https://doc.log10x.com/run/input/analyzer/elasticsearch
# - run/input/analyzer/logzio # https://doc.log10x.com/run/input/analyzer/elasticsearch
# - run/input/analyzer/datadogLogs # https://doc.log10x.com/run/input/analyzer/datadogLogs
# - run/input/analyzer/splunk # https://doc.log10x.com/run/input/analyzer/splunk
# - run/input/analyzer/cloudwatchLogs # https://doc.log10x.com/run/input/analyzer/cloudwatchLogs
# --------------------------- Enrich TenXObjects ------------------------------
# Uncomment and edit config files to enrich TenXObjects with calculated fields:
- run/initialize/inputField # https://doc.log10x.com/run/initialize/#inputfield
- run/initialize/level # https://doc.log10x.com/run/initialize/level
- run/initialize/group # https://doc.log10x.com/run/initialize/group
- run/initialize/message # https://doc.log10x.com/run/initialize/message
- run/initialize/httpCode # https://doc.log10x.com/run/initialize/httpCode
- run/initialize/lookup # https://doc.log10x.com/run/initialize/lookup
- run/initialize/custom # https://doc.log10x.com/run/transform/script/object
- run/initialize/k8s # https://doc.log10x.com/run/initialize/k8s
# - run/initialize/geoIP # https://doc.log10x.com/run/initialize/geoIP
# -------------------------- Select Metric Outputs ----------------------------
# Uncomment and edit to publish aggregated TenXSummary instances to metric outputs:
#
# NOTE - in order to use the public Log10x grafana dashboards, log10x must be enabled
- run/output/metric/log10x # https://doc.log10x.com/run/output/metric/log10x
# - run/output/metric/prometheus/scrape # https://doc.log10x.com/run/output/metric/prometheus/scrape
# - run/output/metric/prometheus/push-gateway # https://doc.log10x.com/run/output/metric/prometheus/push-gateway
# - run/output/metric/prometheus/remote-write # https://doc.log10x.com/run/output/metric/prometheus/remote-write
# - run/output/metric/cloudwatch # https://doc.log10x.com/run/output/metric/cloudwatch
# - run/output/metric/datadog # https://doc.log10x.com/run/output/metric/datadog
# - run/output/metric/elastic # https://doc.log10x.com/run/output/metric/elastic
# - run/output/metric/signalFx # https://doc.log10x.com/run/output/metric/signalFx
# - run/output/metric/log # https://doc.log10x.com/run/output/metric/log
Analyzer Inputs
Analyzer Inputs
Activate Log analyzer inputs to read events from log analyzers via REST.
splunk
Configure Splunk inputs to read events from a Splunk Cloud/on-premises deployment.
Below is the default configuration from: splunk/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInNwbHVuayIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTG9naWNhbCBuYW1lIG9mIHRoaXMgU3BsdW5rIGlucHV0XG5cblNldHMgYSBsb2dpY2FsIG5hbWUgKGUuZy4sICdteVNwbHVuaycpIGZvciB0aGlzIGlucHV0LiBUaGUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkgZmllbGQgIHJldHVybnMgdGhpcyB2YWx1ZSBhdCBydW4gdGltZSB0byBhbGxvdyBmb3IgaWRlbnRpZnlpbmcgYW5kIG9wZXJhdGluZyBvbiBpbnN0YW5jZXMgb3JpZ2luYXRpbmcgZnJvbSB0aGlzIGlucHV0LiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciB0aGlzIGlucHV0IGlzIGVuYWJsZWQgKGRlZmF1bHQgdHJ1ZSlcblxuU2V0cyB3aGV0aGVyIHRvIG9wZW4gdGhlIGlucHV0IHN0cmVhbS4gVG8gZW5hYmxlIHRoaXMgaW5wdXQgb25seSB3aGVuIGEgW3NwbHVua0hvc3RdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2FuYWx5emVyL3NwbHVuay8jc3BsdW5raG9zdCkgc3RhcnR1cCBhcmd1bWVudCB2YWx1ZSBpcyB0cnV0aHksIHVzZTogYGBgIHlhbWwgc3BsdW5rRW5hYmxlZDogJD1UZW5YRW52LmdldChcInNwbHVua0hvc3RcIikgYGBgIFRvIGxlYXJuIG1vcmUgc2VlIFtUZW5YRW52LmdldF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhFbnYuZ2V0KS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJwcmludFByb2dyZXNzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0cyB3aGV0aGVyIHRoaXMgaW5wdXQgcHJpbnRzIHRocm91Z2hwdXQgc3RhdHMgdG8gdGhlIGNvbnNvbGVcblxuU2V0cyB3aGV0aGVyIHRoaXMgaW5wdXQgcHJpbnRzIHRocm91Z2hwdXQgc3RhdHMgdG8gdGhlIGNvbnNvbGUgZm9yIHRlc3RpbmcgYW4gaW50ZWdyYXRpb24gdG8gYSByZW1vdGUgZW5kcG9pbnQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgICJob3N0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3BsdW5rIGhvc3QgYWRkcmVzc1xuXG5TZXRzIHRoZSBTcGx1bmsgaG9zdCBhZGRyZXNzIHRvIGNvbm5lY3QgdG8gKGUuZy4sIGA8ZGVwbG95bWVudC1uYW1lPi5zcGx1bmtjbG91ZC5jb21gKSIKICAgICAgICAgIH0sCiAgICAgICAgICAicG9ydCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3BsdW5rIHNlcnZlciBwb3J0XG5cblNldHMgdGhlIFNwbHVuayBzZXJ2ZXIgcG9ydCB0byBjb25uZWN0IHRvIChlLmcuLCA4MDg5KSBUaGUgcG9ydCBpcyBub3QgbmVlZGVkIGlmIHRoZSBwcm92aWRlZCBbc3BsdW5rSG9zdF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvYW5hbHl6ZXIvc3BsdW5rLyNzcGx1bmtob3N0KSBhbHJlYWR5IGVuY2Fwc3VsYXRlcyB0aGUgcG9ydCAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJwcm90b2NvbCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRlZmluZXMgdGhlIHByb3RvY29sIHRvIGNvbm5lY3QgdG8gU3BsdW5rXG5cblNldHMgdGhlIHByb3RvY29sIHRvIGNvbm5lY3QgdG8gU3BsdW5rIHdpdGggKGUuZy4sIGh0dHBzKS4gKERlZmF1bHQ6IGh0dHBzKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJodHRwcyIKICAgICAgICAgIH0sCiAgICAgICAgICAidXNlcm5hbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTcGx1bmsgdXNlciBuYW1lXG5cblNldHMgdGhlIFNwbHVuayB1c2VyIG5hbWUgdG8gYXV0aGVudGljYXRlIHdpdGggVGhpcyB2YWx1ZSBpcyBzZXQgaW50byB0aGUgJ3VzZXJuYW1lJyBoZWFkZXIgb2YgdGhlIGAvc2VydmljZXMvc2VhcmNoL3YyL2pvYnMvYCBlbmRwb2ludCIKICAgICAgICAgIH0sCiAgICAgICAgICAicGFzc3dvcmQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTcGx1bmsgdXNlciBwYXNzd29yZFxuXG5TZXRzIHRoZSBTcGx1bmsgdXNlciBwYXNzd29yZCB0byBhdXRoZW50aWNhdGUgd2l0aCBUaGlzIHZhbHVlIGlzIHNldCBpbnRvIHRoZSBwYXNzd29yZCBoZWFkZXIgb2YgdGhlIGAvc2VydmljZXMvc2VhcmNoL3YyL2pvYnMvYCBlbmRwb2ludCIKICAgICAgICAgIH0sCiAgICAgICAgICAidmVyaWZ5U1NMIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiV2hldGhlciB0byB2ZXJpZnkgU1NMIGNlcnRpZmljYXRlcyAoZGVmYXVsdCB0cnVlKVxuXG5TZXRzIHdoZXRoZXIgdG8gdmVyaWZ5IFNTTCBjZXJ0aWZpY2F0ZXMgd2hlbiBjb25uZWN0aW5nIHRvIFNwbHVuay4gU2V0IHRvIGBmYWxzZWAgdG8gYWxsb3cgY29ubmVjdGlvbnMgdG8gU3BsdW5rIGluc3RhbmNlcyB3aXRoIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlcy4gICoqV2FybmluZzoqKiBEaXNhYmxpbmcgU1NMIHZlcmlmaWNhdGlvbiBpcyBub3QgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzLiAgRm9yIGV4YW1wbGU6IGBgYCB5YW1sIHNwbHVua1ZlcmlmeVNTTDogZmFsc2UgYGBgIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicXVlcnkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTZWFyY2ggcXVlcnkgdG8gZXhlY3V0ZVxuXG5TZXRzIHRoZSBTcGx1bmsgc2VhcmNoIHF1ZXJ5IHRvIGV4ZWN1dGUgZm9yIHRoaXMgam9iIChEZWZhdWx0OiBzZWFyY2ggKikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAic2VhcmNoICoiCiAgICAgICAgICB9LAogICAgICAgICAgInBhZ2VTaXplIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOdW1iZXIgb2YgZXZlbnRzIHRvIHJldHJpZXZlIHdpdGggZWFjaCByZXN1bHQgcGFnZVxuXG5TZXRzIHRoZSBudW1iZXIgb2YgZXZlbnRzIHRvIHJldHJpZXZlIHdpdGggZWFjaCByZXN1bHQgcGFnZS4gKipQZXJmb3JtYW5jZToqKiBJbmNyZWFzZSB0byAxMDAwLTIwMDAgZm9yIGhpZ2gtdm9sdW1lIGVudmlyb25tZW50cyB0byByZWR1Y2UgQVBJIHJvdW5kLXRyaXBzLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA1MDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogNTAwCiAgICAgICAgICB9LAogICAgICAgICAgInRvdGFsQnl0ZXNMaW1pdCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBieXRlcyB0byByZWFkIGZyb20gaW5wdXQgYmVmb3JlIGNsb3NpbmdcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgYSB0YXJnZXQgcGlwZWxpbmUgaW5wdXQgd2lsbCByZWFkIGludG8gdGhlIHBpcGVsaW5lLiBUaGlzIHZhbHVlIGxpbWl0cyB0aGUgdm9sdW1lIG9mIGV2ZW50cyB0byByZWFkIGZyb20gYSBsb2NhbC9yZW1vdGUgc291cmNlIChlLmcuLCBsb2cgYW5hbHl6ZXIpLiAgKipQZXJmb3JtYW5jZToqKiBJbmNyZWFzZSBmb3IgbG9uZ2VyIGFuYWx5c2lzIHdpbmRvd3MgKGUuZy4sIDIwME1CIGZvciAxMG1pbiB3aW5kb3dzKS4gIEZvciBleGFtcGxlOiBgYGAgeWFtbCBzcGx1bmtUb3RhbEJ5dGVzTGltaXQ6ICQ9cGFyc2VCeXRlcyhcIjFHQlwiKSBgYGAgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAidG90YWxFdmVudHNMaW1pdCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBldmVudHMgdG8gcmVhZCBmcm9tIGlucHV0IGJlZm9yZSBjbG9zaW5nXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGV2ZW50cyBhIHRhcmdldCBwaXBlbGluZSBpbnB1dCB3aWxsIHJlYWQgaW50byB0aGUgcGlwZWxpbmUuIFRoaXMgdmFsdWUgbGltaXRzIHRoZSB2b2x1bWUgb2YgZXZlbnRzIHRvIHJlYWQgZnJvbSBhIGxvY2FsL3JlbW90ZSBzb3VyY2UgKGUuZy4sIGxvZyBhbmFseXplcikuICAqKlBlcmZvcm1hbmNlOioqIEFkanVzdCBiYXNlZCBvbiBtZW1vcnkgYW5kIHByb2Nlc3NpbmcgY2FwYWNpdHkuIEVhY2ggZXZlbnQgY29uc3VtZXMgbWVtb3J5IGR1cmluZyBwcm9jZXNzaW5nLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMDAwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAxMDAwMAogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbER1cmF0aW9uIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBkdXJhdGlvbiB0byBrZWVwIGlucHV0IG9wZW4gYmVmb3JlIGNsb3NpbmdcblxuU2V0cyB0aGUgbWF4aW11bSBkdXJhdGlvbiBhIHRhcmdldCBwaXBlbGluZSBpbnB1dCB3aWxsIHJlbWFpbiBvcGVuLiBXaGVuIHJlYWNoZWQsIHRoZSBpbnB1dCB3aWxsIGNsb3NlIGFuZCBubyBtb3JlIGRhdGEgd2lsbCBiZSByZWFkLiAgKipQZXJmb3JtYW5jZToqKiBNYXRjaCB0byB5b3VyIGpvYiBzY2hlZHVsaW5nIGludGVydmFsIChlLmcuLCBpZiBydW5uaW5nIGV2ZXJ5IDEwbWluLCBzZXQgdG8gMTBtaW4pLiAgRm9yIGV4YW1wbGU6IGBgYCB5YW1sIHNwbHVua1RvdGFsRHVyYXRpb246ICQ9cGFyc2VEdXJhdGlvbihcIjEwbWluXCIpIGBgYCAoRGVmYXVsdDogNW1pbikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiNW1pbiIKICAgICAgICAgIH0sCiAgICAgICAgICAicXVlcnlJbnRlcnZhbCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUXVlcnkgaW50ZXJ2YWwgKGluIG1pbGxpc2Vjb25kcykgZm9yIGNoZWNraW5nIG5ldyBkYXRhIGZyb20gcmVtb3RlIHNvdXJjZVxuXG5TZXRzIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHF1ZXJpZXMgdG8gdGhlIHJlbW90ZSBTcGx1bmsgQVBJLiBUaGlzIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBpbnB1dCBwb2xscyBmb3IgbmV3IGxvZyBkYXRhLiAgKipQZXJmb3JtYW5jZToqKiBJbmNyZWFzZSBmb3IgcmF0ZS1saW1pdGVkIEFQSXM7IGRlY3JlYXNlIGZvciByZWFsLXRpbWUgbmVlZHMuICBGb3IgZXhhbXBsZTogYGBgIHlhbWwgc3BsdW5rUXVlcnlJbnRlcnZhbDogJD1wYXJzZUR1cmF0aW9uKFwiNXNcIikgYGBgIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogMjAwMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJob3N0IiwKICAgICAgICAgICJxdWVyeSIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' Splunk input configuration
# Configure a Splunk event input
# To learn more see https://doc.log10x.com/run/input/analyzer/splunk/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/input/analyzer/splunk
# =============================== Splunk Options ==============================
# Multiple Splunk inputs can be defined below
splunk:
# ---------------------------- General Options ----------------------------
# 'name' sets a unique logical name across all pipeline inputs
- name: Splunk
# Disabled by default - configure host/port to enable
enabled: false
# --------------------------- Connection Options --------------------------
# 'host' and 'port' set the Splunk host address to connect to (e.g., '<deployment-name>.splunkcloud.com')
host: null # (❗ REQUIRED)
port: null # (Not mandatory if the host already encapsulates it)
protocol: "https"
# 'username' and 'password' used to authenticate against the Splunk deployment
# To learn more see https://docs.splunk.com/Documentation/Splunk/latest/RESTUM/RESTusing#Authentication_and_authorization
username: $=TenXEnv.get("SPLUNK_USERNAME") # (❗ EnvVar REQUIRED)
password: $=TenXEnv.get("SPLUNK_PASSWORD") # (❗ EnvVar REQUIRED)
# ----------------------------- Query Options -----------------------------
# 'pageSize' sets the number of events to retrieve with each result page
# Performance: Increase to 1000-2000 for high-volume environments
pageSize: 500
# 'query' sets the Splunk search query to execute for this job
query: search *
# --------------------------- Backpressure Options -----------------------
# 'queryInterval' sets the interval between queries to the remote API
# Performance: Increase for rate-limited APIs; decrease for real-time needs
queryInterval: $=parseDuration("2s")
# 'totalDuration' sets the max duration to try reading from the the remote input
# Performance: Match to your job scheduling interval
totalDuration: $=parseDuration("5min")
# 'totalBytesLimit' sets the max total bytes to read from the remote input
# Performance: Increase for longer analysis windows (e.g., 200MB for 10min)
totalBytesLimit: $=parseBytes("50MB")
# 'totalEventsLimit' sets the max number of events to read the remote input
# Performance: Adjust based on memory capacity; each event consumes memory
totalEventsLimit: 10000
# --------------------------- Ancillary Options ---------------------------
# 'printProgress' controls whether to print progress gage to the console
# This option helps debug and test the input
printProgress: $=!TenXEnv.get("quiet")
elastic
Configure ElasticSearch inputs to read events from an ElasticSearch hosted/on-premises cluster.
Below is the default configuration from: elastic/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImVsYXN0aWNTZWFyY2giIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxvZ2ljYWwgbmFtZSBmb3IgdGhpcyBlbGFzdGljIGlucHV0XG5cblNldHMgYSBsb2dpY2FsIG5hbWUgKGUuZy4sICdteUVsYXN0aWMnKSBmb3IgdGhpcyBpbnB1dC4gVGhlIFtpbnB1dE5hbWVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtpbnB1dE5hbWUpIGZpZWxkIHJldHVybnMgdGhpcyB2YWx1ZSBhdCBydW4gdGltZSB0byBhbGxvdyBmb3IgaWRlbnRpZnlpbmcgYW5kIG9wZXJhdGluZyBvbiBpbnN0YW5jZXMgb3JpZ2luYXRpbmcgZnJvbSB0aGlzIGlucHV0LiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciB0aGlzIGlucHV0IGlzIGVuYWJsZWRcblxuU2V0cyB3aGV0aGVyIHRvIG9wZW4gdGhlIGlucHV0IHN0cmVhbS4gVG8gZW5hYmxlIHRoaXMgaW5wdXQgb25seSB3aGVuIGEgJ2VsYXN0aWNTZWFyY2hIb3N0JyBzdGFydHVwIGFyZ3VtZW50IHZhbHVlIGlzIHRydXRoeSwgdXNlOiBgYGAgeWFtbCBlbGFzdGljU2VhcmNoRW5hYmxlZDogJD1UZW5YRW52LmdldChcImVsYXN0aWNTZWFyY2hIb3N0XCIpIGBgYCBUbyBsZWFybiBtb3JlIHNlZSBbVGVuWEVudi5nZXRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YRW52LmdldCkuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicHJpbnRQcm9ncmVzcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciB0aGlzIGlucHV0IHByaW50cyB0aHJvdWdocHV0IHN0YXRzIHRvIHRoZSBjb25zb2xlXG5cblNldHMgd2hldGhlciB0aGlzIGlucHV0IHByaW50cyB0aHJvdWdocHV0IHN0YXRzIHRvIHRoZSBjb25zb2xlIGZvciB0ZXN0aW5nIGFuIGludGVncmF0aW9uIHRvIGEgcmVtb3RlIGVuZHBvaW50LiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogZmFsc2UpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICAidG90YWxEdXJhdGlvbiIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgbWF4aW11bSB0aW1lIHRvIHF1ZXJ5IHRoZSBiYWNrZW5kXG5cblNldHMgdGhlIG1heGltdW0gdGltZSB0aGUgcGlwZWxpbmUgd2lsbCBjb250aW51ZSB0byBxdWVyeSB0aGUgYmFja2VuZCBiZWZvcmUgZXhpdGluZy4gRm9yIGV4YW1wbGUsIHNldHRpbmcgdGhpcyB0byAnMW1pbicgbWVhbnMgdGhhdCBxdWVyaWVzIHRvIHRoZSBiYWNrZW5kIHdpbGwgc3RvcCBhZnRlciAxIG1pbnV0ZSBoYXMgcGFzc2VkLiAoRGVmYXVsdDogNW1pbikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiNW1pbiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZXh0cmFjdG9ycyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBleHRyYWN0b3JzIHRvIGFwcGx5IG9uIHRoZSBldmVudHMgcmV0dXJuaW5nIGZyb20gdGhlIHF1ZXJ5XG5cblNldHMgbGlzdCBvZiBleHRyYWN0b3IgbmFtZXMgd2hpY2ggd2lsbCB3b3JrIG9uIHRoZSBldmVudHMgcmV0dXJuaW5nIGZyb20gdGhlIHF1ZXJ5LiBGb3IgbW9yZSBpbmZvIG9uIGV4dHJhY3RvcnMsIHNlZTogaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvZXh0cmFjdCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJob3N0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRWxhc3RpYyBob3N0IGFkZHJlc3NcblxuU2V0IHRoZSBlbGFzdGljIGhvc3QgYWRkcmVzcyB0byBjb25uZWN0IHRvLiBFeGFtcGxlczogY29yYWxvZ2l4LWVzYXBpLmNvcmFsb2dpeC5jb20gYXBpLmxvZ3ouaW8gPGRlcGxveW1lbnQtaWQ+LnVzLWNlbnRyYWwxLmdjcC5jbG91ZC5lcy5pbyIKICAgICAgICAgIH0sCiAgICAgICAgICAicG9ydCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRWxhc3RpYyBzZXJ2ZXIgcG9ydFxuXG5TZXRzIHRoZSBlbGFzdGljIHNlcnZlciBwb3J0IHRvIGNvbm5lY3QgdG8gKGUuZy4sICc5NDQzJykgVGhlIHBvcnQgdmFsdWUgaXMgbm90IG5lZWRlZCBpZiBbZWxhc3RpY1NlYXJjaEhvc3RdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2FuYWx5emVyL2VsYXN0aWNzZWFyY2gvI2VsYXN0aWNzZWFyY2hob3N0KSB2YWx1ZSBlbmNhcHN1bGF0ZXMgdGhlIHBvcnQgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAicHJvdG9jb2wiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEZWZpbmVzIHRoZSBwcm90b2NvbCB0byBjb25uZWN0IHRvIEVsYXN0aWNTZWFyY2hcblxuU2V0cyB0aGUgcHJvdG9jb2wgdG8gY29ubmVjdCB0byBlbGFzdGljIHdpdGggKGUuZy4sIGBodHRwc2ApLiAoRGVmYXVsdDogaHR0cHMpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImh0dHBzIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b2tlbiIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVsYXN0aWMgYXV0aGVudGljYXRpb24gdG9rZW5cblxuU2V0cyB0aGUgQVBJIHRva2VuIHVzZWQgdG8gYXV0aGVudGljYXRlIGFnYWluc3QgdGhlIHRhcmdldCBlbGFzdGljIGNsdXN0ZXIuIFRvIGxlYXJuIG1vcmUgc2VlOiBbYXBpIHRva2Vuc10oaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3NlY3VyaXR5LWFwaS1nZXQtdG9rZW4uaHRtbCkiCiAgICAgICAgICB9LAogICAgICAgICAgImF1dGhvcml6YXRpb25LZXlOYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUHJlZml4IGZvciB0aGUgZWxhc3RpYyBhdXRoZW50aWNhdGlvbiB0b2tlblxuXG5TZXRzIHRoZSBwcmVmaXggZm9yIHRoZSBwcm92aWRlZCBbZWxhc3RpY1NlYXJjaFRva2VuXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbnB1dC9hbmFseXplci9lbGFzdGljc2VhcmNoLyNlbGFzdGljc2VhcmNodG9rZW4pIHdoZW4gdXNpbmcgaXQgaW4gYW4gJ0F1dGhvcml6YXRpb24nIGhlYWRlci4gY29tbW9ubHkgdXNlZCB2YWx1ZXMgYnkgZGlmZmVyZW50IGVsYXN0aWMgdmVuZG9ycyBhcmUgJ0FwaUtleScgYW5kICdCZWFyZXInIChEZWZhdWx0OiBBcGlLZXkpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIkFwaUtleSIKICAgICAgICAgIH0sCiAgICAgICAgICAicXVlcnkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJRdWVyeSB0byBwYXNzIHRvIHRoZSBlbGFzdGljIHNlcnZlclxuXG5TZXRzIHRoZSBlbGFzdGljIHF1ZXJ5IHRvIHJlcXVlc3QgcGFnaW5hdGVkIGRvY3VtZW50cyBmcm9tIHRoZSAgJy9fc2VhcmNoJyBSRVNUIGVuZHBvaW50LiBUaGUgZGVmYXVsdCBxdWVyeSAoZGVmaW5lZCBpbiAnZWxhc3RpY3NlYXJjaC9xdWVyeS50eHQnKSByZXRyaWV2ZXMgcGFnaW5hdGVkIHZhbHVlcyBzb3J0ZWQgaW4gZGVzYyBvcmRlciBieSBAdGltZXN0YW1wLCBzdGFydGluZyBmcm9tIHRoZSB2YWx1ZSBvZiAnbm93KCknLiIKICAgICAgICAgIH0sCiAgICAgICAgICAibWVzc2FnZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgZmllbGQgdXNlZCB0byBleHRyYWN0IHRoZSBsb2cgbWVzc2FnZSBmcm9tIHJldHJpZXZlZCBkb2N1bWVudHNcblxuU2V0cyB0aGUgbmFtZSBvZiB0aGUgZmllbGQgdXNlZCB0byBleHRyYWN0IHRoZSBsb2cgbWVzc2FnZSBmcm9tIHJldHJpZXZlZCBkb2N1bWVudHMgKERlZmF1bHQ6IGxvZykiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAibG9nIgogICAgICAgICAgfSwKICAgICAgICAgICJ0aW1lc3RhbXBGaWVsZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgdGhlIGZpZWxkIHVzZWQgdG8gc29ydCByZXRyaWV2ZWQgZG9jdW1lbnRzIGJ5XG5cblNldHMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIHVzZWQgdG8gc29ydCByZXRyaWV2ZWQgZG9jdW1lbnRzIGJ5IChEZWZhdWx0OiBAdGltZXN0YW1wKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJAdGltZXN0YW1wIgogICAgICAgICAgfSwKICAgICAgICAgICJzdGFydFRpbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgc3RhcnQgb2YgdGhlIHRpbWUgcmFuZ2UsIGV4cHJlc3NlZCBhcyBhIHJlbGF0aXZlIHN0cmluZyAoaS5lLiwgXCJub3ctN2RcIikgb3IgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFuIDEsIDE5NzAgMDA6MDA6MDAgVVRDLlxuXG5TZXRzIHRoZSBzdGFydCBvZiB0aGUgdGltZSByYW5nZSwgZXhwcmVzc2VkIGFzIGEgcmVsYXRpdmUgc3RyaW5nIChpLmUuLCBcIm5vdy03ZFwiKSBvciB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBhZnRlciBKYW4gMSwgMTk3MCAwMDowMDowMCBVVEMuIFRoZSBxdWVyeSBpbmNsdWRlcyBldmVudHMgd2l0aCBhIHRpbWVzdGFtcCBlcXVhbCBvciBsYXRlciB0byB0aGlzIHZhbHVlLiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5kVGltZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBlbmQgb2YgdGhlIHRpbWUgcmFuZ2UsIGV4cHJlc3NlZCBhcyBhIHJlbGF0aXZlIHN0cmluZyAoaS5lLiwgXCJub3ctN2RcIikgb3IgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFuIDEsIDE5NzAgMDA6MDA6MDAgVVRDXG5cblNldHMgdGhlIGVuZCBvZiB0aGUgdGltZSByYW5nZSwgZXhwcmVzc2VkIGFzIGEgcmVsYXRpdmUgc3RyaW5nIChpLmUuLCBcIm5vdy03ZFwiKSBvciB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBhZnRlciBKYW4gMSwgMTk3MCAwMDowMDowMCBVVEMuIFRoZSBxdWVyeSBleGNsdWRlcyBldmVudHMgd2l0aCBhIHRpbWVzdGFtcCBsYXRlciB0aGFuIHRoaXMgdmFsdWUuIgogICAgICAgICAgfSwKICAgICAgICAgICJ0YXJnZXRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGRhdGEgc3RyZWFtcywgaW5kaWNlcywgYW5kIGFsaWFzZXMgdG8gc2VhcmNoXG5cblNldHMgbGlzdCBvZiBkYXRhIHN0cmVhbXMsIGluZGljZXMsIGFuZCBhbGlhc2VzIHRvIHNlYXJjaC4gVG8gc2VhcmNoIGFsbCBkYXRhIHN0cmVhbXMgYW5kIGluZGljZXMsIG9taXQgdGhpcyBwYXJhbWV0ZXIgb3IgdXNlICcqJyBvciAnX2FsbCcuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImVuZHBvaW50IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBzZWFyY2ggUkVTVCBlbmRwb2ludFxuXG5TZXRzIHRoZSBuYW1lIG9mIHRoZSBzZWFyY2ggUkVTVCBlbmRwb2ludC4gKERlZmF1bHQ6IF9zZWFyY2gpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIl9zZWFyY2giCiAgICAgICAgICB9LAogICAgICAgICAgInF1ZXJ5U2l6ZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTnVtYmVyIG9mIGRvY3VtZW50cyB0byByZWFkIHBlciBiYXRjaCBmcm9tIHRoZSBlbGFzdGljIHNlcnZlclxuXG5TZXRzIHRoZSBudW1iZXIgb2YgZG9jdW1lbnRzIHRvIHJldHJpZXZlIHdpdGggZWFjaCBwYWdlIG9mIHJlc3VsdHMuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDUwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiA1MDAKICAgICAgICAgIH0sCiAgICAgICAgICAicmV0cnlUaW1lb3V0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIHRpbWVvdXQgcGVyaW9kIChpbiBtaWxsaXNlY29uZHMpIHRvIHdhaXQgZm9yIHF1ZXJ5aW5nIG9mIG5ldyBkYXRhXG5cbkRldGVybWluZXMgaG93IGxvbmcgdG8gd2FpdCB0byBpbnZva2UgdGhlIHNlYXJjaCBlbmRwb2ludCBBUEkgYWdhaW4gdG8gcXVlcnkgZm9yIG5ldyBkYXRhLiBTZWUgW2VsYXN0aWMtaW5wdXQuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L21vZHVsZXMvYmxvYi9tYWluL3BpcGVsaW5lcy9ydW4vbW9kdWxlcy9pbnB1dC9hbmFseXplci9lbGFzdGljc2VhcmNoL2VsYXN0aWMtaW5wdXQuanMpLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMDAwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAxMDAwMAogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbEJ5dGVzTGltaXQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gdG90YWwgYnl0ZXMgdG8gcmVhZCBmcm9tIGlucHV0IGJlZm9yZSBjbG9zaW5nXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGEgdGFyZ2V0IHBpcGVsaW5lIGlucHV0IHdpbGwgcmVhZCBpbnRvIHRoZSBwaXBlbGluZS4gVGhpcyB2YWx1ZSBsaW1pdHMgdGhlIHZvbHVtZSBvZiBldmVudHMgdG8gcmVhZCBmcm9tIGEgbG9jYWwvcmVtb3RlIHNvdXJjZSAoZS5nLiwgbG9nIGFuYWx5emVyKS4gICBGb3IgZXhhbXBsZTogYGBgIHlhbWwgZWxhc3RpY1NlYXJjaFRvdGFsQnl0ZXNMaW1pdDogJD1wYXJzZUJ5dGVzKFwiMUdCXCIpIGBgYCAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbEV2ZW50c0xpbWl0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIHRvdGFsIGV2ZW50cyB0byByZWFkIGZyb20gaW5wdXQgYmVmb3JlIGNsb3NpbmdcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIGEgdGFyZ2V0IHBpcGVsaW5lIGlucHV0IHdpbGwgcmVhZCBpbnRvIHRoZSBwaXBlbGluZS4gVGhpcyB2YWx1ZSBsaW1pdHMgdGhlIHZvbHVtZSBvZiBldmVudHMgdG8gcmVhZCBmcm9tIGEgbG9jYWwvcmVtb3RlIHNvdXJjZSAoZS5nLiwgbG9nIGFuYWx5emVyKS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMTAwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogMTAwMDAKICAgICAgICAgIH0sCiAgICAgICAgICAicXVlcnlJbnRlcnZhbCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUXVlcnkgaW50ZXJ2YWwgKGluIG1pbGxpc2Vjb25kcykgZm9yIGNoZWNraW5nIG5ldyBkYXRhIGZyb20gcmVtb3RlIHNvdXJjZVxuXG5TZXRzIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHF1ZXJpZXMgdG8gdGhlIHJlbW90ZSBFbGFzdGljc2VhcmNoIEFQSS4gVGhpcyBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgaW5wdXQgcG9sbHMgZm9yIG5ldyBsb2cgZGF0YS4gIEZvciBleGFtcGxlOiBgYGAgeWFtbCBlbGFzdGljU2VhcmNoUXVlcnlJbnRlcnZhbDogJD1wYXJzZUR1cmF0aW9uKFwiNXNcIikgYGBgIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogMjAwMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJob3N0IiwKICAgICAgICAgICJ0b2tlbiIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' Elastic input configuration
# Configure an Elastic event input
# To learn more see https://doc.log10x.com/run/input/analyzer/elasticsearch/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/input/analyzer/elasticsearch
# =============================== Elastic Options ==============================
# Multiple Elastic inputs can be defined below:
elasticSearch:
# 'name' sets a unique logical name across all pipeline inputs
- name: ElasticSearch
# --------------------------- Connection Options --------------------------
# 'host' and 'port' set the ElasticSearch API endpoint to connect to
# For hosted Elastic (e.g. my-project-ec5189.es.us-central1.gcp.elastic.cloud).
# See https://cloud.elastic.co/deployments and https://i.stack.imgur.com/jXjLJ.png
host: null # (❗ REQUIRED)
port: "" # (not mandatory if the host already encapsulates it)
# 'protocol' sets the connection protocol ('https' or 'http' for local testing)
protocol: https
# 'token' used to authenticate with. To learn more see:
# https://www.elastic.co/guide/en/cloud-enterprise/current/ece-restful-api-authentication.html
token: $=TenXEnv.get("ELASTIC_TOKEN") # (❗ REQUIRED)
# ----------------------------- Query Options -----------------------------
# 'targets' lists data streams, indices, and aliases to search.
# To search all data streams and indices, use '*' or '_all'.
targets:
- _all
# 'startTime' and 'endTime' set the time frame of the query.
startTime: now-1h
endTime: now
# --------------------------- Backpressure Options -----------------------
# 'queryInterval' sets the interval between queries to the remote API
queryInterval: $=parseDuration("2s")
# 'totalDuration' sets the max duration to try reading from the the remote input
totalDuration: $=parseDuration("5min")
# 'totalBytesLimit' sets the max total bytes to read from the remote input
totalBytesLimit: $=parseBytes("50MB")
# 'totalEventsLimit' sets the max number of events to read the remote input
totalEventsLimit: 10000
# --------------------------- Ancillary Options ---------------------------
# 'printProgress' controls whether to print a progress gage to the console
# This option helps debug and test the input
printProgress: $=!TenXEnv.get("quiet")
# --------------------------- Advanced Options ---------------------------
# 'querySize' sets the number of documents retrieved with each results page.
querySize: 500
# 'query' sets the elastic query to request paginated documents from the '/_search' REST endpoint.
# The default query (defined in 'input/analyzer/elasticsearch/query.txt')
# retrieves paginated values sorted in desc order by @timestamp
query: null
logzio
Configure ElasticSearch inputs to read events from an ElasticSearch hosted/on-premises cluster.
Below is the default configuration from: logzio/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImVsYXN0aWNTZWFyY2giIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxvZ2ljYWwgbmFtZSBmb3IgdGhpcyBlbGFzdGljIGlucHV0XG5cblNldHMgYSBsb2dpY2FsIG5hbWUgKGUuZy4sICdteUVsYXN0aWMnKSBmb3IgdGhpcyBpbnB1dC4gVGhlIFtpbnB1dE5hbWVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtpbnB1dE5hbWUpIGZpZWxkIHJldHVybnMgdGhpcyB2YWx1ZSBhdCBydW4gdGltZSB0byBhbGxvdyBmb3IgaWRlbnRpZnlpbmcgYW5kIG9wZXJhdGluZyBvbiBpbnN0YW5jZXMgb3JpZ2luYXRpbmcgZnJvbSB0aGlzIGlucHV0LiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciB0aGlzIGlucHV0IGlzIGVuYWJsZWRcblxuU2V0cyB3aGV0aGVyIHRvIG9wZW4gdGhlIGlucHV0IHN0cmVhbS4gVG8gZW5hYmxlIHRoaXMgaW5wdXQgb25seSB3aGVuIGEgJ2VsYXN0aWNTZWFyY2hIb3N0JyBzdGFydHVwIGFyZ3VtZW50IHZhbHVlIGlzIHRydXRoeSwgdXNlOiBgYGAgeWFtbCBlbGFzdGljU2VhcmNoRW5hYmxlZDogJD1UZW5YRW52LmdldChcImVsYXN0aWNTZWFyY2hIb3N0XCIpIGBgYCBUbyBsZWFybiBtb3JlIHNlZSBbVGVuWEVudi5nZXRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YRW52LmdldCkuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicHJpbnRQcm9ncmVzcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciB0aGlzIGlucHV0IHByaW50cyB0aHJvdWdocHV0IHN0YXRzIHRvIHRoZSBjb25zb2xlXG5cblNldHMgd2hldGhlciB0aGlzIGlucHV0IHByaW50cyB0aHJvdWdocHV0IHN0YXRzIHRvIHRoZSBjb25zb2xlIGZvciB0ZXN0aW5nIGFuIGludGVncmF0aW9uIHRvIGEgcmVtb3RlIGVuZHBvaW50LiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogZmFsc2UpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICAidG90YWxEdXJhdGlvbiIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgbWF4aW11bSB0aW1lIHRvIHF1ZXJ5IHRoZSBiYWNrZW5kXG5cblNldHMgdGhlIG1heGltdW0gdGltZSB0aGUgcGlwZWxpbmUgd2lsbCBjb250aW51ZSB0byBxdWVyeSB0aGUgYmFja2VuZCBiZWZvcmUgZXhpdGluZy4gRm9yIGV4YW1wbGUsIHNldHRpbmcgdGhpcyB0byAnMW1pbicgbWVhbnMgdGhhdCBxdWVyaWVzIHRvIHRoZSBiYWNrZW5kIHdpbGwgc3RvcCBhZnRlciAxIG1pbnV0ZSBoYXMgcGFzc2VkLiAoRGVmYXVsdDogNW1pbikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiNW1pbiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZXh0cmFjdG9ycyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBleHRyYWN0b3JzIHRvIGFwcGx5IG9uIHRoZSBldmVudHMgcmV0dXJuaW5nIGZyb20gdGhlIHF1ZXJ5XG5cblNldHMgbGlzdCBvZiBleHRyYWN0b3IgbmFtZXMgd2hpY2ggd2lsbCB3b3JrIG9uIHRoZSBldmVudHMgcmV0dXJuaW5nIGZyb20gdGhlIHF1ZXJ5LiBGb3IgbW9yZSBpbmZvIG9uIGV4dHJhY3RvcnMsIHNlZTogaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvZXh0cmFjdCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJob3N0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRWxhc3RpYyBob3N0IGFkZHJlc3NcblxuU2V0IHRoZSBlbGFzdGljIGhvc3QgYWRkcmVzcyB0byBjb25uZWN0IHRvLiBFeGFtcGxlczogY29yYWxvZ2l4LWVzYXBpLmNvcmFsb2dpeC5jb20gYXBpLmxvZ3ouaW8gPGRlcGxveW1lbnQtaWQ+LnVzLWNlbnRyYWwxLmdjcC5jbG91ZC5lcy5pbyIKICAgICAgICAgIH0sCiAgICAgICAgICAicG9ydCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRWxhc3RpYyBzZXJ2ZXIgcG9ydFxuXG5TZXRzIHRoZSBlbGFzdGljIHNlcnZlciBwb3J0IHRvIGNvbm5lY3QgdG8gKGUuZy4sICc5NDQzJykgVGhlIHBvcnQgdmFsdWUgaXMgbm90IG5lZWRlZCBpZiBbZWxhc3RpY1NlYXJjaEhvc3RdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2FuYWx5emVyL2VsYXN0aWNzZWFyY2gvI2VsYXN0aWNzZWFyY2hob3N0KSB2YWx1ZSBlbmNhcHN1bGF0ZXMgdGhlIHBvcnQgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAicHJvdG9jb2wiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEZWZpbmVzIHRoZSBwcm90b2NvbCB0byBjb25uZWN0IHRvIEVsYXN0aWNTZWFyY2hcblxuU2V0cyB0aGUgcHJvdG9jb2wgdG8gY29ubmVjdCB0byBlbGFzdGljIHdpdGggKGUuZy4sIGBodHRwc2ApLiAoRGVmYXVsdDogaHR0cHMpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImh0dHBzIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b2tlbiIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVsYXN0aWMgYXV0aGVudGljYXRpb24gdG9rZW5cblxuU2V0cyB0aGUgQVBJIHRva2VuIHVzZWQgdG8gYXV0aGVudGljYXRlIGFnYWluc3QgdGhlIHRhcmdldCBlbGFzdGljIGNsdXN0ZXIuIFRvIGxlYXJuIG1vcmUgc2VlOiBbYXBpIHRva2Vuc10oaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3NlY3VyaXR5LWFwaS1nZXQtdG9rZW4uaHRtbCkiCiAgICAgICAgICB9LAogICAgICAgICAgImF1dGhvcml6YXRpb25LZXlOYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUHJlZml4IGZvciB0aGUgZWxhc3RpYyBhdXRoZW50aWNhdGlvbiB0b2tlblxuXG5TZXRzIHRoZSBwcmVmaXggZm9yIHRoZSBwcm92aWRlZCBbZWxhc3RpY1NlYXJjaFRva2VuXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbnB1dC9hbmFseXplci9lbGFzdGljc2VhcmNoLyNlbGFzdGljc2VhcmNodG9rZW4pIHdoZW4gdXNpbmcgaXQgaW4gYW4gJ0F1dGhvcml6YXRpb24nIGhlYWRlci4gY29tbW9ubHkgdXNlZCB2YWx1ZXMgYnkgZGlmZmVyZW50IGVsYXN0aWMgdmVuZG9ycyBhcmUgJ0FwaUtleScgYW5kICdCZWFyZXInIChEZWZhdWx0OiBBcGlLZXkpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIkFwaUtleSIKICAgICAgICAgIH0sCiAgICAgICAgICAicXVlcnkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJRdWVyeSB0byBwYXNzIHRvIHRoZSBlbGFzdGljIHNlcnZlclxuXG5TZXRzIHRoZSBlbGFzdGljIHF1ZXJ5IHRvIHJlcXVlc3QgcGFnaW5hdGVkIGRvY3VtZW50cyBmcm9tIHRoZSAgJy9fc2VhcmNoJyBSRVNUIGVuZHBvaW50LiBUaGUgZGVmYXVsdCBxdWVyeSAoZGVmaW5lZCBpbiAnZWxhc3RpY3NlYXJjaC9xdWVyeS50eHQnKSByZXRyaWV2ZXMgcGFnaW5hdGVkIHZhbHVlcyBzb3J0ZWQgaW4gZGVzYyBvcmRlciBieSBAdGltZXN0YW1wLCBzdGFydGluZyBmcm9tIHRoZSB2YWx1ZSBvZiAnbm93KCknLiIKICAgICAgICAgIH0sCiAgICAgICAgICAibWVzc2FnZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgZmllbGQgdXNlZCB0byBleHRyYWN0IHRoZSBsb2cgbWVzc2FnZSBmcm9tIHJldHJpZXZlZCBkb2N1bWVudHNcblxuU2V0cyB0aGUgbmFtZSBvZiB0aGUgZmllbGQgdXNlZCB0byBleHRyYWN0IHRoZSBsb2cgbWVzc2FnZSBmcm9tIHJldHJpZXZlZCBkb2N1bWVudHMgKERlZmF1bHQ6IGxvZykiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAibG9nIgogICAgICAgICAgfSwKICAgICAgICAgICJ0aW1lc3RhbXBGaWVsZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgdGhlIGZpZWxkIHVzZWQgdG8gc29ydCByZXRyaWV2ZWQgZG9jdW1lbnRzIGJ5XG5cblNldHMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIHVzZWQgdG8gc29ydCByZXRyaWV2ZWQgZG9jdW1lbnRzIGJ5IChEZWZhdWx0OiBAdGltZXN0YW1wKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJAdGltZXN0YW1wIgogICAgICAgICAgfSwKICAgICAgICAgICJzdGFydFRpbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgc3RhcnQgb2YgdGhlIHRpbWUgcmFuZ2UsIGV4cHJlc3NlZCBhcyBhIHJlbGF0aXZlIHN0cmluZyAoaS5lLiwgXCJub3ctN2RcIikgb3IgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFuIDEsIDE5NzAgMDA6MDA6MDAgVVRDLlxuXG5TZXRzIHRoZSBzdGFydCBvZiB0aGUgdGltZSByYW5nZSwgZXhwcmVzc2VkIGFzIGEgcmVsYXRpdmUgc3RyaW5nIChpLmUuLCBcIm5vdy03ZFwiKSBvciB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBhZnRlciBKYW4gMSwgMTk3MCAwMDowMDowMCBVVEMuIFRoZSBxdWVyeSBpbmNsdWRlcyBldmVudHMgd2l0aCBhIHRpbWVzdGFtcCBlcXVhbCBvciBsYXRlciB0byB0aGlzIHZhbHVlLiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5kVGltZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBlbmQgb2YgdGhlIHRpbWUgcmFuZ2UsIGV4cHJlc3NlZCBhcyBhIHJlbGF0aXZlIHN0cmluZyAoaS5lLiwgXCJub3ctN2RcIikgb3IgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFuIDEsIDE5NzAgMDA6MDA6MDAgVVRDXG5cblNldHMgdGhlIGVuZCBvZiB0aGUgdGltZSByYW5nZSwgZXhwcmVzc2VkIGFzIGEgcmVsYXRpdmUgc3RyaW5nIChpLmUuLCBcIm5vdy03ZFwiKSBvciB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBhZnRlciBKYW4gMSwgMTk3MCAwMDowMDowMCBVVEMuIFRoZSBxdWVyeSBleGNsdWRlcyBldmVudHMgd2l0aCBhIHRpbWVzdGFtcCBsYXRlciB0aGFuIHRoaXMgdmFsdWUuIgogICAgICAgICAgfSwKICAgICAgICAgICJ0YXJnZXRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGRhdGEgc3RyZWFtcywgaW5kaWNlcywgYW5kIGFsaWFzZXMgdG8gc2VhcmNoXG5cblNldHMgbGlzdCBvZiBkYXRhIHN0cmVhbXMsIGluZGljZXMsIGFuZCBhbGlhc2VzIHRvIHNlYXJjaC4gVG8gc2VhcmNoIGFsbCBkYXRhIHN0cmVhbXMgYW5kIGluZGljZXMsIG9taXQgdGhpcyBwYXJhbWV0ZXIgb3IgdXNlICcqJyBvciAnX2FsbCcuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImVuZHBvaW50IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBzZWFyY2ggUkVTVCBlbmRwb2ludFxuXG5TZXRzIHRoZSBuYW1lIG9mIHRoZSBzZWFyY2ggUkVTVCBlbmRwb2ludC4gKERlZmF1bHQ6IF9zZWFyY2gpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIl9zZWFyY2giCiAgICAgICAgICB9LAogICAgICAgICAgInF1ZXJ5U2l6ZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTnVtYmVyIG9mIGRvY3VtZW50cyB0byByZWFkIHBlciBiYXRjaCBmcm9tIHRoZSBlbGFzdGljIHNlcnZlclxuXG5TZXRzIHRoZSBudW1iZXIgb2YgZG9jdW1lbnRzIHRvIHJldHJpZXZlIHdpdGggZWFjaCBwYWdlIG9mIHJlc3VsdHMuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDUwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiA1MDAKICAgICAgICAgIH0sCiAgICAgICAgICAicmV0cnlUaW1lb3V0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIHRpbWVvdXQgcGVyaW9kIChpbiBtaWxsaXNlY29uZHMpIHRvIHdhaXQgZm9yIHF1ZXJ5aW5nIG9mIG5ldyBkYXRhXG5cbkRldGVybWluZXMgaG93IGxvbmcgdG8gd2FpdCB0byBpbnZva2UgdGhlIHNlYXJjaCBlbmRwb2ludCBBUEkgYWdhaW4gdG8gcXVlcnkgZm9yIG5ldyBkYXRhLiBTZWUgW2VsYXN0aWMtaW5wdXQuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L21vZHVsZXMvYmxvYi9tYWluL3BpcGVsaW5lcy9ydW4vbW9kdWxlcy9pbnB1dC9hbmFseXplci9lbGFzdGljc2VhcmNoL2VsYXN0aWMtaW5wdXQuanMpLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMDAwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAxMDAwMAogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbEJ5dGVzTGltaXQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gdG90YWwgYnl0ZXMgdG8gcmVhZCBmcm9tIGlucHV0IGJlZm9yZSBjbG9zaW5nXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGEgdGFyZ2V0IHBpcGVsaW5lIGlucHV0IHdpbGwgcmVhZCBpbnRvIHRoZSBwaXBlbGluZS4gVGhpcyB2YWx1ZSBsaW1pdHMgdGhlIHZvbHVtZSBvZiBldmVudHMgdG8gcmVhZCBmcm9tIGEgbG9jYWwvcmVtb3RlIHNvdXJjZSAoZS5nLiwgbG9nIGFuYWx5emVyKS4gICBGb3IgZXhhbXBsZTogYGBgIHlhbWwgZWxhc3RpY1NlYXJjaFRvdGFsQnl0ZXNMaW1pdDogJD1wYXJzZUJ5dGVzKFwiMUdCXCIpIGBgYCAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbEV2ZW50c0xpbWl0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIHRvdGFsIGV2ZW50cyB0byByZWFkIGZyb20gaW5wdXQgYmVmb3JlIGNsb3NpbmdcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIGEgdGFyZ2V0IHBpcGVsaW5lIGlucHV0IHdpbGwgcmVhZCBpbnRvIHRoZSBwaXBlbGluZS4gVGhpcyB2YWx1ZSBsaW1pdHMgdGhlIHZvbHVtZSBvZiBldmVudHMgdG8gcmVhZCBmcm9tIGEgbG9jYWwvcmVtb3RlIHNvdXJjZSAoZS5nLiwgbG9nIGFuYWx5emVyKS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMTAwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogMTAwMDAKICAgICAgICAgIH0sCiAgICAgICAgICAicXVlcnlJbnRlcnZhbCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUXVlcnkgaW50ZXJ2YWwgKGluIG1pbGxpc2Vjb25kcykgZm9yIGNoZWNraW5nIG5ldyBkYXRhIGZyb20gcmVtb3RlIHNvdXJjZVxuXG5TZXRzIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHF1ZXJpZXMgdG8gdGhlIHJlbW90ZSBFbGFzdGljc2VhcmNoIEFQSS4gVGhpcyBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgaW5wdXQgcG9sbHMgZm9yIG5ldyBsb2cgZGF0YS4gIEZvciBleGFtcGxlOiBgYGAgeWFtbCBlbGFzdGljU2VhcmNoUXVlcnlJbnRlcnZhbDogJD1wYXJzZUR1cmF0aW9uKFwiNXNcIikgYGBgIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogMjAwMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJob3N0IiwKICAgICAgICAgICJ0b2tlbiIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' Logz.io ElasticSearch input configuration
# Configures a Logz.io ElasticSearch event input
# To learn more see https://doc.log10x.com/run/input/analyzer/elastic/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/input/analyzer/elasticsearch
# =============================== Logzio Options ==============================
# Multiple Logz.io inputs can be defined below:
elasticSearch:
# 'name' sets a unique logical name across all pipeline inputs
- name: logzioElasticSearch
# --------------------------- Connection Options --------------------------
# 'token' must be set to the Logz.io API token.
# See: https://docs.logz.io/user-guide/tokens/api-tokens.html
token: null # (❗ REQUIRED)
# 'host' and 'port' set the Logz.io service address to connect to
host: api.logz.io
port: 443
# ----------------------------- Query Options -----------------------------
# 'targets' lists data streams, indices, and aliases to search.
# To search all data streams and indices, use '*' or '_all'.
targets:
- v1
# 'startTime' and 'endTime' set the time frame of the query.
startTime: now-5m
endTime: now
# --------------------------- Backpressure Options -----------------------
# 'queryInterval' sets the interval between queries to the remote API
queryInterval: $=parseDuration("2s")
# 'totalDuration' sets the max duration to try reading from the the remote input
totalDuration: $=parseDuration("5min")
# 'totalBytesLimit' sets the max total bytes to read from the remote input
totalBytesLimit: $=parseBytes("50MB")
# 'totalEventsLimit' sets the max number of events to read the remote input
totalEventsLimit: 10000
# --------------------------- Ancillary Options ---------------------------
# 'printProgress' controls whether to print a progress gage to the console
# This option helps debug and test the input
printProgress: $=!TenXEnv.get("quiet")
# --------------------------- Advanced Options ---------------------------
# 'querySize' sets the number of documents retrieved with each results page.
querySize: 500
# 'query' sets the elastic query to request paginated documents from the '/_search' REST endpoint.
# The default query (defined in 'input/analyzer/elasticsearch/query.txt')
# retrieves paginated values sorted in desc order by @timestamp
query: null
# 'endpoint' sets the REST API endpoint to query
endpoint: search
# 'messageField' defines the name of the field to extract from the retrieved
# documents containing the log message.
messageField: message
coralogix
Configure ElasticSearch inputs to read events from an ElasticSearch hosted/on-premises cluster.
Below is the default configuration from: coralogix/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImVsYXN0aWNTZWFyY2giIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxvZ2ljYWwgbmFtZSBmb3IgdGhpcyBlbGFzdGljIGlucHV0XG5cblNldHMgYSBsb2dpY2FsIG5hbWUgKGUuZy4sICdteUVsYXN0aWMnKSBmb3IgdGhpcyBpbnB1dC4gVGhlIFtpbnB1dE5hbWVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtpbnB1dE5hbWUpIGZpZWxkIHJldHVybnMgdGhpcyB2YWx1ZSBhdCBydW4gdGltZSB0byBhbGxvdyBmb3IgaWRlbnRpZnlpbmcgYW5kIG9wZXJhdGluZyBvbiBpbnN0YW5jZXMgb3JpZ2luYXRpbmcgZnJvbSB0aGlzIGlucHV0LiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciB0aGlzIGlucHV0IGlzIGVuYWJsZWRcblxuU2V0cyB3aGV0aGVyIHRvIG9wZW4gdGhlIGlucHV0IHN0cmVhbS4gVG8gZW5hYmxlIHRoaXMgaW5wdXQgb25seSB3aGVuIGEgJ2VsYXN0aWNTZWFyY2hIb3N0JyBzdGFydHVwIGFyZ3VtZW50IHZhbHVlIGlzIHRydXRoeSwgdXNlOiBgYGAgeWFtbCBlbGFzdGljU2VhcmNoRW5hYmxlZDogJD1UZW5YRW52LmdldChcImVsYXN0aWNTZWFyY2hIb3N0XCIpIGBgYCBUbyBsZWFybiBtb3JlIHNlZSBbVGVuWEVudi5nZXRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YRW52LmdldCkuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicHJpbnRQcm9ncmVzcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciB0aGlzIGlucHV0IHByaW50cyB0aHJvdWdocHV0IHN0YXRzIHRvIHRoZSBjb25zb2xlXG5cblNldHMgd2hldGhlciB0aGlzIGlucHV0IHByaW50cyB0aHJvdWdocHV0IHN0YXRzIHRvIHRoZSBjb25zb2xlIGZvciB0ZXN0aW5nIGFuIGludGVncmF0aW9uIHRvIGEgcmVtb3RlIGVuZHBvaW50LiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogZmFsc2UpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICAidG90YWxEdXJhdGlvbiIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgbWF4aW11bSB0aW1lIHRvIHF1ZXJ5IHRoZSBiYWNrZW5kXG5cblNldHMgdGhlIG1heGltdW0gdGltZSB0aGUgcGlwZWxpbmUgd2lsbCBjb250aW51ZSB0byBxdWVyeSB0aGUgYmFja2VuZCBiZWZvcmUgZXhpdGluZy4gRm9yIGV4YW1wbGUsIHNldHRpbmcgdGhpcyB0byAnMW1pbicgbWVhbnMgdGhhdCBxdWVyaWVzIHRvIHRoZSBiYWNrZW5kIHdpbGwgc3RvcCBhZnRlciAxIG1pbnV0ZSBoYXMgcGFzc2VkLiAoRGVmYXVsdDogNW1pbikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiNW1pbiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZXh0cmFjdG9ycyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBleHRyYWN0b3JzIHRvIGFwcGx5IG9uIHRoZSBldmVudHMgcmV0dXJuaW5nIGZyb20gdGhlIHF1ZXJ5XG5cblNldHMgbGlzdCBvZiBleHRyYWN0b3IgbmFtZXMgd2hpY2ggd2lsbCB3b3JrIG9uIHRoZSBldmVudHMgcmV0dXJuaW5nIGZyb20gdGhlIHF1ZXJ5LiBGb3IgbW9yZSBpbmZvIG9uIGV4dHJhY3RvcnMsIHNlZTogaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvZXh0cmFjdCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJob3N0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRWxhc3RpYyBob3N0IGFkZHJlc3NcblxuU2V0IHRoZSBlbGFzdGljIGhvc3QgYWRkcmVzcyB0byBjb25uZWN0IHRvLiBFeGFtcGxlczogY29yYWxvZ2l4LWVzYXBpLmNvcmFsb2dpeC5jb20gYXBpLmxvZ3ouaW8gPGRlcGxveW1lbnQtaWQ+LnVzLWNlbnRyYWwxLmdjcC5jbG91ZC5lcy5pbyIKICAgICAgICAgIH0sCiAgICAgICAgICAicG9ydCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRWxhc3RpYyBzZXJ2ZXIgcG9ydFxuXG5TZXRzIHRoZSBlbGFzdGljIHNlcnZlciBwb3J0IHRvIGNvbm5lY3QgdG8gKGUuZy4sICc5NDQzJykgVGhlIHBvcnQgdmFsdWUgaXMgbm90IG5lZWRlZCBpZiBbZWxhc3RpY1NlYXJjaEhvc3RdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2FuYWx5emVyL2VsYXN0aWNzZWFyY2gvI2VsYXN0aWNzZWFyY2hob3N0KSB2YWx1ZSBlbmNhcHN1bGF0ZXMgdGhlIHBvcnQgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAicHJvdG9jb2wiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEZWZpbmVzIHRoZSBwcm90b2NvbCB0byBjb25uZWN0IHRvIEVsYXN0aWNTZWFyY2hcblxuU2V0cyB0aGUgcHJvdG9jb2wgdG8gY29ubmVjdCB0byBlbGFzdGljIHdpdGggKGUuZy4sIGBodHRwc2ApLiAoRGVmYXVsdDogaHR0cHMpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImh0dHBzIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b2tlbiIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVsYXN0aWMgYXV0aGVudGljYXRpb24gdG9rZW5cblxuU2V0cyB0aGUgQVBJIHRva2VuIHVzZWQgdG8gYXV0aGVudGljYXRlIGFnYWluc3QgdGhlIHRhcmdldCBlbGFzdGljIGNsdXN0ZXIuIFRvIGxlYXJuIG1vcmUgc2VlOiBbYXBpIHRva2Vuc10oaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3NlY3VyaXR5LWFwaS1nZXQtdG9rZW4uaHRtbCkiCiAgICAgICAgICB9LAogICAgICAgICAgImF1dGhvcml6YXRpb25LZXlOYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUHJlZml4IGZvciB0aGUgZWxhc3RpYyBhdXRoZW50aWNhdGlvbiB0b2tlblxuXG5TZXRzIHRoZSBwcmVmaXggZm9yIHRoZSBwcm92aWRlZCBbZWxhc3RpY1NlYXJjaFRva2VuXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbnB1dC9hbmFseXplci9lbGFzdGljc2VhcmNoLyNlbGFzdGljc2VhcmNodG9rZW4pIHdoZW4gdXNpbmcgaXQgaW4gYW4gJ0F1dGhvcml6YXRpb24nIGhlYWRlci4gY29tbW9ubHkgdXNlZCB2YWx1ZXMgYnkgZGlmZmVyZW50IGVsYXN0aWMgdmVuZG9ycyBhcmUgJ0FwaUtleScgYW5kICdCZWFyZXInIChEZWZhdWx0OiBBcGlLZXkpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIkFwaUtleSIKICAgICAgICAgIH0sCiAgICAgICAgICAicXVlcnkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJRdWVyeSB0byBwYXNzIHRvIHRoZSBlbGFzdGljIHNlcnZlclxuXG5TZXRzIHRoZSBlbGFzdGljIHF1ZXJ5IHRvIHJlcXVlc3QgcGFnaW5hdGVkIGRvY3VtZW50cyBmcm9tIHRoZSAgJy9fc2VhcmNoJyBSRVNUIGVuZHBvaW50LiBUaGUgZGVmYXVsdCBxdWVyeSAoZGVmaW5lZCBpbiAnZWxhc3RpY3NlYXJjaC9xdWVyeS50eHQnKSByZXRyaWV2ZXMgcGFnaW5hdGVkIHZhbHVlcyBzb3J0ZWQgaW4gZGVzYyBvcmRlciBieSBAdGltZXN0YW1wLCBzdGFydGluZyBmcm9tIHRoZSB2YWx1ZSBvZiAnbm93KCknLiIKICAgICAgICAgIH0sCiAgICAgICAgICAibWVzc2FnZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgZmllbGQgdXNlZCB0byBleHRyYWN0IHRoZSBsb2cgbWVzc2FnZSBmcm9tIHJldHJpZXZlZCBkb2N1bWVudHNcblxuU2V0cyB0aGUgbmFtZSBvZiB0aGUgZmllbGQgdXNlZCB0byBleHRyYWN0IHRoZSBsb2cgbWVzc2FnZSBmcm9tIHJldHJpZXZlZCBkb2N1bWVudHMgKERlZmF1bHQ6IGxvZykiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAibG9nIgogICAgICAgICAgfSwKICAgICAgICAgICJ0aW1lc3RhbXBGaWVsZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgdGhlIGZpZWxkIHVzZWQgdG8gc29ydCByZXRyaWV2ZWQgZG9jdW1lbnRzIGJ5XG5cblNldHMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIHVzZWQgdG8gc29ydCByZXRyaWV2ZWQgZG9jdW1lbnRzIGJ5IChEZWZhdWx0OiBAdGltZXN0YW1wKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJAdGltZXN0YW1wIgogICAgICAgICAgfSwKICAgICAgICAgICJzdGFydFRpbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgc3RhcnQgb2YgdGhlIHRpbWUgcmFuZ2UsIGV4cHJlc3NlZCBhcyBhIHJlbGF0aXZlIHN0cmluZyAoaS5lLiwgXCJub3ctN2RcIikgb3IgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFuIDEsIDE5NzAgMDA6MDA6MDAgVVRDLlxuXG5TZXRzIHRoZSBzdGFydCBvZiB0aGUgdGltZSByYW5nZSwgZXhwcmVzc2VkIGFzIGEgcmVsYXRpdmUgc3RyaW5nIChpLmUuLCBcIm5vdy03ZFwiKSBvciB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBhZnRlciBKYW4gMSwgMTk3MCAwMDowMDowMCBVVEMuIFRoZSBxdWVyeSBpbmNsdWRlcyBldmVudHMgd2l0aCBhIHRpbWVzdGFtcCBlcXVhbCBvciBsYXRlciB0byB0aGlzIHZhbHVlLiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5kVGltZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBlbmQgb2YgdGhlIHRpbWUgcmFuZ2UsIGV4cHJlc3NlZCBhcyBhIHJlbGF0aXZlIHN0cmluZyAoaS5lLiwgXCJub3ctN2RcIikgb3IgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFuIDEsIDE5NzAgMDA6MDA6MDAgVVRDXG5cblNldHMgdGhlIGVuZCBvZiB0aGUgdGltZSByYW5nZSwgZXhwcmVzc2VkIGFzIGEgcmVsYXRpdmUgc3RyaW5nIChpLmUuLCBcIm5vdy03ZFwiKSBvciB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBhZnRlciBKYW4gMSwgMTk3MCAwMDowMDowMCBVVEMuIFRoZSBxdWVyeSBleGNsdWRlcyBldmVudHMgd2l0aCBhIHRpbWVzdGFtcCBsYXRlciB0aGFuIHRoaXMgdmFsdWUuIgogICAgICAgICAgfSwKICAgICAgICAgICJ0YXJnZXRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGRhdGEgc3RyZWFtcywgaW5kaWNlcywgYW5kIGFsaWFzZXMgdG8gc2VhcmNoXG5cblNldHMgbGlzdCBvZiBkYXRhIHN0cmVhbXMsIGluZGljZXMsIGFuZCBhbGlhc2VzIHRvIHNlYXJjaC4gVG8gc2VhcmNoIGFsbCBkYXRhIHN0cmVhbXMgYW5kIGluZGljZXMsIG9taXQgdGhpcyBwYXJhbWV0ZXIgb3IgdXNlICcqJyBvciAnX2FsbCcuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImVuZHBvaW50IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBzZWFyY2ggUkVTVCBlbmRwb2ludFxuXG5TZXRzIHRoZSBuYW1lIG9mIHRoZSBzZWFyY2ggUkVTVCBlbmRwb2ludC4gKERlZmF1bHQ6IF9zZWFyY2gpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIl9zZWFyY2giCiAgICAgICAgICB9LAogICAgICAgICAgInF1ZXJ5U2l6ZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTnVtYmVyIG9mIGRvY3VtZW50cyB0byByZWFkIHBlciBiYXRjaCBmcm9tIHRoZSBlbGFzdGljIHNlcnZlclxuXG5TZXRzIHRoZSBudW1iZXIgb2YgZG9jdW1lbnRzIHRvIHJldHJpZXZlIHdpdGggZWFjaCBwYWdlIG9mIHJlc3VsdHMuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDUwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiA1MDAKICAgICAgICAgIH0sCiAgICAgICAgICAicmV0cnlUaW1lb3V0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIHRpbWVvdXQgcGVyaW9kIChpbiBtaWxsaXNlY29uZHMpIHRvIHdhaXQgZm9yIHF1ZXJ5aW5nIG9mIG5ldyBkYXRhXG5cbkRldGVybWluZXMgaG93IGxvbmcgdG8gd2FpdCB0byBpbnZva2UgdGhlIHNlYXJjaCBlbmRwb2ludCBBUEkgYWdhaW4gdG8gcXVlcnkgZm9yIG5ldyBkYXRhLiBTZWUgW2VsYXN0aWMtaW5wdXQuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L21vZHVsZXMvYmxvYi9tYWluL3BpcGVsaW5lcy9ydW4vbW9kdWxlcy9pbnB1dC9hbmFseXplci9lbGFzdGljc2VhcmNoL2VsYXN0aWMtaW5wdXQuanMpLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMDAwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAxMDAwMAogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbEJ5dGVzTGltaXQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gdG90YWwgYnl0ZXMgdG8gcmVhZCBmcm9tIGlucHV0IGJlZm9yZSBjbG9zaW5nXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGEgdGFyZ2V0IHBpcGVsaW5lIGlucHV0IHdpbGwgcmVhZCBpbnRvIHRoZSBwaXBlbGluZS4gVGhpcyB2YWx1ZSBsaW1pdHMgdGhlIHZvbHVtZSBvZiBldmVudHMgdG8gcmVhZCBmcm9tIGEgbG9jYWwvcmVtb3RlIHNvdXJjZSAoZS5nLiwgbG9nIGFuYWx5emVyKS4gICBGb3IgZXhhbXBsZTogYGBgIHlhbWwgZWxhc3RpY1NlYXJjaFRvdGFsQnl0ZXNMaW1pdDogJD1wYXJzZUJ5dGVzKFwiMUdCXCIpIGBgYCAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbEV2ZW50c0xpbWl0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIHRvdGFsIGV2ZW50cyB0byByZWFkIGZyb20gaW5wdXQgYmVmb3JlIGNsb3NpbmdcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIGEgdGFyZ2V0IHBpcGVsaW5lIGlucHV0IHdpbGwgcmVhZCBpbnRvIHRoZSBwaXBlbGluZS4gVGhpcyB2YWx1ZSBsaW1pdHMgdGhlIHZvbHVtZSBvZiBldmVudHMgdG8gcmVhZCBmcm9tIGEgbG9jYWwvcmVtb3RlIHNvdXJjZSAoZS5nLiwgbG9nIGFuYWx5emVyKS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMTAwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogMTAwMDAKICAgICAgICAgIH0sCiAgICAgICAgICAicXVlcnlJbnRlcnZhbCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUXVlcnkgaW50ZXJ2YWwgKGluIG1pbGxpc2Vjb25kcykgZm9yIGNoZWNraW5nIG5ldyBkYXRhIGZyb20gcmVtb3RlIHNvdXJjZVxuXG5TZXRzIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHF1ZXJpZXMgdG8gdGhlIHJlbW90ZSBFbGFzdGljc2VhcmNoIEFQSS4gVGhpcyBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgaW5wdXQgcG9sbHMgZm9yIG5ldyBsb2cgZGF0YS4gIEZvciBleGFtcGxlOiBgYGAgeWFtbCBlbGFzdGljU2VhcmNoUXVlcnlJbnRlcnZhbDogJD1wYXJzZUR1cmF0aW9uKFwiNXNcIikgYGBgIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogMjAwMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJob3N0IiwKICAgICAgICAgICJ0b2tlbiIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' Coralogix ElasticSearch input configuration
# This configuration defines a Coralogix ElasticSearch input from
# which events are read and transformed into TenXObjects for aggregation and reporting.
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/input/analyzer/elasticsearch
# ============================== Coralogix Options ============================
# Multiple Coralogix inputs can be defined below
elasticSearch:
# 'name' sets a unique logical name across all pipeline inputs
- name: coralogixElasticSearch
# ------------------------- Connection Options ----------------------------
# 'token' must be set to the Coralogix send data API key
# To learn more see: https://coralogix.com/docs/user-guides/account-management/api-keys/send-your-data-api-key/
token: null # (❗ REQUIRED)
# 'authorizationKeyName' must be set to match Coralogix auth type
# To learn more see: https://coralogix.com/docs/user-guides/visualizations/hosted-opensearch-view/opensearch-api/
authorizationKeyName: Bearer
# 'host' and 'port' set the Coralogix service address to connect to
host: api.coralogix.us/data/os-api
# --------------------------- Query Options -------------------------------
# 'targets' lists data streams, indices, and aliases to search.
# To search all data streams and indices, use '*' or '_all.'
targets:
- '*'
# 'startTime' and 'endTime' set the time frame of the query.
startTime: now-5m
endTime: now
# --------------------------- Backpressure Options -----------------------
# 'queryInterval' sets the interval between queries to the remote API
queryInterval: $=parseDuration("2s")
# 'totalDuration' sets the max duration to try reading from the the remote input
totalDuration: $=parseDuration("5min")
# 'totalBytesLimit' sets the max total bytes to read from the remote input
totalBytesLimit: $=parseBytes("50MB")
# 'totalEventsLimit' sets the max number of events to read the remote input
totalEventsLimit: 10000
# --------------------------- Ancillary Options ---------------------------
# 'printProgress' controls whether to print a progress gage to the console
# This option helps debug and test the input
printProgress: $=!TenXEnv.get("quiet")
# --------------------------- Advanced Options ----------------------------
# 'querySize' sets the number of documents retrieved with each results page.
querySize: 500
# 'query' sets the elastic query to request paginated documents from the '/_search' REST endpoint.
# The default query (defined in 'input/analyzer/elasticsearch/query.txt')
# retrieves paginated values sorted in desc order by @timestamp
query: null
# 'timestampField' specifies the name of the field to get the event timestamp from.
timestampField: coralogix.timestamp
# 'messageField' defines the name of the field to extract from the retrieved
# documents containing the log message.
messageField: log
cloudwatchLogs
Configure AWS Cloudwatch Logs inputs to read events from AWS CloudWatch Logs.
Below is the default configuration from: cloudwatchLogs/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImNsb3Vkd2F0Y2hMb2dzIiA6IHsKICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgIm5hbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMb2dpY2FsIG5hbWUgZm9yIHRoaXMgQVdTIENsb3VkV2F0Y2ggTG9ncyBpbnB1dFxuXG5TZXRzIGEgbG9naWNhbCBuYW1lIChlLmcuLCAnbXlDbG91ZFdhdGNoTG9ncycpIGZvciB0aGlzIGlucHV0LiBUaGUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkgZmllbGQgIHJldHVybnMgdGhpcyB2YWx1ZSBhdCBydW4gdGltZSB0byBhbGxvdyBmb3IgaWRlbnRpZnlpbmcgYW5kIG9wZXJhdGluZyBvbiBpbnN0YW5jZXMgb3JpZ2luYXRpbmcgZnJvbSB0aGlzIGlucHV0LiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciB0aGlzIGlucHV0IGlzIGVuYWJsZWRcblxuU2V0cyB3aGV0aGVyIHRvIG9wZW4gdGhlIGlucHV0IHN0cmVhbS4gVG8gZW5hYmxlIHRoaXMgaW5wdXQgb25seSB3aGVuIGEgJ2Nsb3Vkd2F0Y2hMb2dzTmFtZScgc3RhcnR1cCBhcmd1bWVudCB2YWx1ZSBpcyB0cnV0aHksIHVzZTogYGBgIHlhbWwgY2xvdWR3YXRjaExvZ3NFbmFibGVkOiAkPVRlblhFbnYuZ2V0KFwiY2xvdWR3YXRjaExvZ3NOYW1lXCIpIGBgYCBUbyBsZWFybiBtb3JlIHNlZSBbVGVuWEVudi5nZXRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YRW52LmdldCkuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJwcmludFByb2dyZXNzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0cyB3aGV0aGVyIHRoaXMgaW5wdXQgcHJpbnRzIHRocm91Z2hwdXQgc3RhdHMgdG8gdGhlIGNvbnNvbGVcblxuU2V0cyB3aGV0aGVyIHRoaXMgaW5wdXQgcHJpbnRzIHRocm91Z2hwdXQgc3RhdHMgdG8gdGhlIGNvbnNvbGUgZm9yIHRlc3RpbmcgYW4gaW50ZWdyYXRpb24gdG8gYSByZW1vdGUgZW5kcG9pbnQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgICJhd3NSZWdpb24iIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBV1MgcmVnaW9uXG5cblNldHMgdGhlIEFXUyByZWdpb24gKGUuZy4sICd1cy1lYXN0LTEnKSBob3N0aW5nIHRoZSB0YXJnZXQgQ2xvdWRXYXRjaCBsb2dzIHN0cmVhbS4gICBUbyBsZWFybiBtb3JlIHNlZSBbQVdTIFJlZ2lvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS91c2luZy1yZWdpb25zLWF2YWlsYWJpbGl0eS16b25lcy5odG1sKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiYXdzQWNjZXNzS2V5SUQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBV1MgYXV0aGVudGljYXRpb24gYWNjZXNzIGtleSBJRFxuXG5TZXRzIHRoZSBBV1MgYWNjZXNzIGtleSAoZS5nLiwgJ0FLSUFJT1NGT0ROTjdFWEFNUExFJykgdXNlZCBhcyBwYXJ0IG9mIHRoZSByZXF1ZXN0IHNpZ25pbmcgcHJvY2Vzcy4gICoqSWYgbm90IHNwZWNpZmllZCoqLCB0aGUgc3lzdGVtIGF1dG9tYXRpY2FsbHkgZmFsbHMgYmFjayB0byB0aGUgW0FXUyBkZWZhdWx0IGNyZWRlbnRpYWwgcHJvdmlkZXIgY2hhaW5dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZGstZm9yLWphdmEvbGF0ZXN0L2RldmVsb3Blci1ndWlkZS9jcmVkZW50aWFscy1jaGFpbi5odG1sKSwgd2hpY2ggY2hlY2tzIChpbiBvcmRlcik6ICAxLiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgKGBBV1NfQUNDRVNTX0tFWV9JRGAsIGBBV1NfU0VDUkVUX0FDQ0VTU19LRVlgKSAyLiBKYXZhIHN5c3RlbSBwcm9wZXJ0aWVzIDMuIFdlYiBpZGVudGl0eSB0b2tlbiAoZm9yIEVLUykgNC4gU2hhcmVkIGNyZWRlbnRpYWxzIGZpbGUgKGB+Ly5hd3MvY3JlZGVudGlhbHNgKSA1LiBFQ1MgY29udGFpbmVyIGNyZWRlbnRpYWxzIDYuIEVDMiBpbnN0YW5jZSBwcm9maWxlIGNyZWRlbnRpYWxzICBUbyBsZWFybiBtb3JlIHNlZSBbQVdTIGFjY2VzcyBrZXlzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvaWRfY3JlZGVudGlhbHNfYWNjZXNzLWtleXMuaHRtbCkiCiAgICAgICAgICB9LAogICAgICAgICAgImF3c1NlY3JldEtleSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkFXUyBhdXRoZW50aWNhdGlvbiBzZWNyZXQga2V5XG5cblNldHMgdGhlIEFXUyBhY2Nlc3Mgc2VjcmV0IGtleSAoZS5nLiAnd0phbHJYVXRuRkVNSS9LN01ERU5HL2JQeFJmaUNZRVhBTVBMRUtFWScpIHVzZWQgYXMgcGFydCBvZiB0aGUgcmVxdWVzdCBzaWduaW5nIHByb2Nlc3MuICAqKklmIG5vdCBzcGVjaWZpZWQqKiwgdGhlIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGZhbGxzIGJhY2sgdG8gdGhlIFtBV1MgZGVmYXVsdCBjcmVkZW50aWFsIHByb3ZpZGVyIGNoYWluXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2RrLWZvci1qYXZhL2xhdGVzdC9kZXZlbG9wZXItZ3VpZGUvY3JlZGVudGlhbHMtY2hhaW4uaHRtbCkuIFRoaXMgYWxsb3dzIHVzaW5nIGNyZWRlbnRpYWxzIGZyb20gYH4vLmF3cy9jcmVkZW50aWFsc2AsIElBTSByb2xlcywgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGhvdXQgZXhwbGljaXQgY29uZmlndXJhdGlvbi4gIFRvIGxlYXJuIG1vcmUgc2VlIFtBV1Mgc2VjdXJpdHkgY3JlZGVudGlhbHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nZW5lcmFsL2xhdGVzdC9nci9hd3Mtc2VjLWNyZWQtdHlwZXMuaHRtbCkiCiAgICAgICAgICB9LAogICAgICAgICAgImdyb3VwTmFtZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkFXUyBDbG91ZFdhdGNoIExvZ3MgR3JvdXAgbmFtZVxuXG5Vc2VkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgJ0dldExvZ0V2ZW50cycgQVdTIHJlcXVlc3QgdG8gc3BlY2lmeSB0aGUgbG9nIGdyb3VwIG5hbWUgKGUuZy4sICdteS1sb2ctZ3JvdXAnKS4gICBUbyBsZWFybiBtb3JlIHNlZSBbbG9nR3JvdXBOYW1lXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaExvZ3MvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0TG9nRXZlbnRzLmh0bWwjQ1dMLUdldExvZ0V2ZW50cy1yZXF1ZXN0LWxvZ0dyb3VwTmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgInN0cmVhbU5hbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBV1MgQ2xvdWRXYXRjaCBMb2dzIFN0cmVhbSBuYW1lXG5cblVzZWQgd2l0aGluIHRoZSBib2R5IG9mIHRoZSBBV1MgJ0FHZXRMb2dFdmVudHMnIHJlcXVlc3QgdG8gc3BlY2lmeSB0aGUgbG9nIHN0cmVhbSBuYW1lIChlLmcuLCAnbXktbG9nLXN0cmVhbScpLiAgVG8gbGVhcm4gbW9yZSBzZWUgW2xvZ1N0cmVhbU5hbWVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoTG9ncy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRMb2dFdmVudHMuaHRtbCNDV0wtR2V0TG9nRXZlbnRzLXJlcXVlc3QtbG9nU3RyZWFtTmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgImxpbWl0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOdW1iZXIgb2YgZXZlbnRzIHRvIHJlYWQgcGVyIGJhdGNoIGZyb20gdGhlIEFXUyBDbG91ZFdhdGNoIExvZ3Mgc2VydmljZVxuXG5TZXRzIHRoZSBudW1iZXIgb2YgZG9jdW1lbnRzIHRvIHJldHJpZXZlIHdpdGggZWFjaCBwYWdlIG9mIHJlc3VsdHMuIFRvIGxlYXJuIG1vcmUgc2VlOiBbcmVxdWVzdCBsaW1pdF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2hMb2dzL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldExvZ0V2ZW50cy5odG1sI0NXTC1HZXRMb2dFdmVudHMtcmVxdWVzdC1saW1pdCkgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfSwKICAgICAgICAgICJuZXh0VG9rZW4iIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgdG9rZW4gZm9yIHRoZSBuZXh0IHNldCBvZiBpdGVtcyB0byByZXR1cm4gKHJlY2VpdmVkIHRoaXMgdG9rZW4gZnJvbSBhIHByZXZpb3VzIGNhbGwpXG5cblNldHMgdGhlIHRva2VuIGZyb20gd2hpY2ggdGhlIHJlcXVlc3RlZCByZXN1bHQgcGFnZSBpcyB0byBzdGFydC4gVGhpcyB2YWx1ZSBpcyByZXR1cm5lZCBmcm9tIGEgcHJldmlvdXMgY2FsbCB0byB0aGUgQVdTICdHZXRMb2dFdmVudHMnIGNvbW1hbmQuIFRvIGxlYXJuIG1vcmUgc2VlOiBbbmV4dFRva2VuXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaExvZ3MvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0TG9nRXZlbnRzLmh0bWwjQ1dMLUdldExvZ0V2ZW50cy1yZXF1ZXN0LW5leHRUb2tlbikiCiAgICAgICAgICB9LAogICAgICAgICAgInN0YXJ0RnJvbUhlYWQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJZiB0cnVlLCByZXR1cm4gdGhlIGVhcmxpZXN0IGxvZyBldmVudHMgZmlyc3QuIElmIGZhbHNlLCByZXR1cm4gdGhlIG1vc3QgcmVjZW50IGxvZyBldmVudHMgZmlyc3QuXG5cbkNvbnRyb2xzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNlYXJjaCAob2xkIDwtPiBuZXcgZXZlbnRzKS4gQnkgZGVmYXVsdCwgdGhlIHNlYXJjaCBzdGFydHMgZnJvbSB0aGUgbW9zdCByZWNlbnQgZXZlbnRzLiBUbyBsZWFybiBtb3JlIHNlZTogW3N0YXJ0RnJvbUhlYWRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoTG9ncy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRMb2dFdmVudHMuaHRtbCNDV0wtR2V0TG9nRXZlbnRzLXJlcXVlc3Qtc3RhcnRGcm9tSGVhZCkgKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgInN0YXJ0VGltZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIHN0YXJ0IG9mIHRoZSB0aW1lIHJhbmdlLCBleHByZXNzZWQgYXMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFuIDEsIDE5NzAgMDA6MDA6MDAgVVRDLlxuXG5TZXRzIHRoZSBzdGFydCBvZiB0aGUgdGltZSByYW5nZSwgZXhwcmVzc2VkIGFzIG1pbGxpc2Vjb25kcyBhZnRlciBKYW4gMSwgMTk3MCAwMDowMDowMCBVVEMuIEV2ZW50cyB3aXRoIGEgdGltZXN0YW1wIGVxdWFsIHRvIHRoaXMgdGltZSBvciBsYXRlciB0aGFuIHRoaXMgdGltZSBhcmUgaW5jbHVkZWQuIEV2ZW50cyB3aXRoIGEgdGltZXN0YW1wIGVhcmxpZXIgdGhhbiB0aGlzIHRpbWUgYXJlIGV4Y2x1ZGVkOiBUbyBsZWFybiBtb3JlIHNlZTogW3N0YXJ0VGltZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2hMb2dzL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldExvZ0V2ZW50cy5odG1sI0NXTC1HZXRMb2dFdmVudHMtcmVxdWVzdC1zdGFydFRpbWUpIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgICB9LAogICAgICAgICAgImVuZFRpbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBlbmQgb2YgdGhlIHRpbWUgcmFuZ2UsIGV4cHJlc3NlZCBhcyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBhZnRlciBKYW4gMSwgMTk3MCAwMDowMDowMCBVVENcblxuU2V0cyB0aGUgZW5kIG9mIHRoZSB0aW1lIHJhbmdlLCBleHByZXNzZWQgYXMgbWlsbGlzZWNvbmRzIGFmdGVyIEphbiAxLCAxOTcwIDAwOjAwOjAwIFVUQy4gRXZlbnRzIHdpdGggYSB0aW1lc3RhbXAgZXF1YWwgdG8gb3IgbGF0ZXIgdGhhbiB0aGlzIHRpbWUgYXJlIG5vdCBpbmNsdWRlZDogVG8gbGVhcm4gbW9yZSBzZWU6IFtlbmRUaW1lXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaExvZ3MvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0TG9nRXZlbnRzLmh0bWwjQ1dMLUdldExvZ0V2ZW50cy1yZXF1ZXN0LWVuZFRpbWUpIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgICB9LAogICAgICAgICAgInJldHJ5VGltZW91dCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSB0aW1lb3V0IHBlcmlvZCAoaW4gbWlsbGlzZWNvbmRzKSB0byB3YWl0IGZvciBxdWVyeWluZyBvZiBuZXcgZGF0YVxuXG5Vc2VkIGJ5IFtjbG91ZHdhdGNoTG9ncy1pbnB1dC5qc10oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvbW9kdWxlcy9ibG9iL21haW4vcGlwZWxpbmVzL3J1bi9tb2R1bGVzL2lucHV0L2FuYWx5emVyL2Nsb3Vkd2F0Y2hMb2dzL2Nsb3Vkd2F0Y2hMb2dzLWlucHV0LmpzKSB0byBkZXRlcm1pbmUgaG93IGxvbmcgdG8gd2FpdCB0byBpbnZva2UgdGhlICdHZXRMb2dFdmVudHMnIEFQSSBhZ2FpbiB0byBxdWVyeSBmb3IgbmV3IGRhdGEuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwMDAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDIwMDAwCiAgICAgICAgICB9LAogICAgICAgICAgInRvdGFsQnl0ZXNMaW1pdCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBieXRlcyB0byByZWFkIGZyb20gaW5wdXQgYmVmb3JlIGNsb3NpbmdcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgYSB0YXJnZXQgcGlwZWxpbmUgaW5wdXQgd2lsbCByZWFkIGludG8gdGhlIHBpcGVsaW5lLiBUaGlzIHZhbHVlIGxpbWl0cyB0aGUgdm9sdW1lIG9mIGV2ZW50cyB0byByZWFkIGZyb20gYSBsb2NhbC9yZW1vdGUgc291cmNlIChlLmcuLCBsb2cgYW5hbHl6ZXIpLiAgIEZvciBleGFtcGxlOiBgYGAgeWFtbCB0b3RhbEJ5dGVzTGltaXQ6ICQ9cGFyc2VCeXRlcyhcIjFHQlwiKSBgYGAgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAidG90YWxFdmVudHNMaW1pdCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBldmVudHMgdG8gcmVhZCBmcm9tIGlucHV0IGJlZm9yZSBjbG9zaW5nXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGV2ZW50cyBhIHRhcmdldCBwaXBlbGluZSBpbnB1dCB3aWxsIHJlYWQgaW50byB0aGUgcGlwZWxpbmUuIFRoaXMgdmFsdWUgbGltaXRzIHRoZSB2b2x1bWUgb2YgZXZlbnRzIHRvIHJlYWQgZnJvbSBhIGxvY2FsL3JlbW90ZSBzb3VyY2UgKGUuZy4sIGxvZyBhbmFseXplcikuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDEwMDAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDEwMDAwCiAgICAgICAgICB9LAogICAgICAgICAgInRvdGFsRHVyYXRpb24iIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIGR1cmF0aW9uIHRvIGtlZXAgaW5wdXQgb3BlbiBiZWZvcmUgY2xvc2luZ1xuXG5TZXRzIHRoZSBtYXhpbXVtIGR1cmF0aW9uIGEgdGFyZ2V0IHBpcGVsaW5lIGlucHV0IHdpbGwgcmVtYWluIG9wZW4uIFdoZW4gcmVhY2hlZCwgdGhlIGlucHV0IHdpbGwgY2xvc2UgYW5kIG5vIG1vcmUgZGF0YSB3aWxsIGJlIHJlYWQuICBGb3IgZXhhbXBsZTogYGBgIHlhbWwgY2xvdWR3YXRjaExvZ3NUb3RhbER1cmF0aW9uOiAkPXBhcnNlRHVyYXRpb24oXCIxMG1pblwiKSBgYGAgKERlZmF1bHQ6IHBhcnNlRHVyYXRpb24oXCI1bWluXCIpKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJwYXJzZUR1cmF0aW9uKFwiNW1pblwiKSIKICAgICAgICAgIH0sCiAgICAgICAgICAicXVlcnlJbnRlcnZhbCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUXVlcnkgaW50ZXJ2YWwgKGluIG1pbGxpc2Vjb25kcykgZm9yIGNoZWNraW5nIG5ldyBkYXRhIGZyb20gcmVtb3RlIHNvdXJjZVxuXG5TZXRzIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHF1ZXJpZXMgdG8gdGhlIHJlbW90ZSBDbG91ZFdhdGNoIExvZ3MgQVBJLiBUaGlzIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBpbnB1dCBwb2xscyBmb3IgbmV3IGxvZyBkYXRhLiAgRm9yIGV4YW1wbGU6IGBgYCB5YW1sIGNsb3Vkd2F0Y2hMb2dzUXVlcnlJbnRlcnZhbDogJD1wYXJzZUR1cmF0aW9uKFwiNXNcIikgYGBgIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogMjAwMAogICAgICAgICAgfSwKICAgICAgICAgICJtZXNzYWdlRmllbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKU09OIGZpZWxkIG5hbWUgdG8gZXh0cmFjdCBmcm9tIENsb3VkV2F0Y2ggbG9nIG1lc3NhZ2VzXG5cblNldHMgdGhlIEpTT04gZmllbGQgbmFtZSB0byBleHRyYWN0IGZyb20gZWFjaCBDbG91ZFdhdGNoIGxvZyBtZXNzYWdlLiBXaGVuIHNldCwgdGhlIGV4dHJhY3RvciB3aWxsIGxvb2sgZm9yIHRoaXMgZmllbGQgaW4gZWFjaCBtZXNzYWdlJ3MgSlNPTiBwYXlsb2FkLiBXaGVuIGVtcHR5LCB0aGUgbWVzc2FnZSBleHRyYWN0aW9uIHN0ZXAgaXMgc2tpcHBlZC4gIEZvciBleGFtcGxlLCB0byBleHRyYWN0IHRoZSAnbG9nJyBmaWVsZCBmcm9tIEt1YmVybmV0ZXMvRG9ja2VyIGxvZ3M6IGBgYCB5YW1sIG1lc3NhZ2VGaWVsZDogbG9nIGBgYCAoRGVmYXVsdDogKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICIiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgIm5hbWUiLAogICAgICAgICAgImdyb3VwTmFtZSIsCiAgICAgICAgICAic3RyZWFtTmFtZSIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' AWS CloudWatch Logs input configuration
# Configure an AWS CloudWatch Logs event input
# To learn more see https://doc.log10x.com/run/input/analyzer/cloudwatchLogs/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/input/analyzer/cloudwatchLogs
# ============================ CloudWatch Options =============================
# Multiple CloudWatch inputs can be defined below
cloudwatchLogs:
# 'name' sets a unique logical name across all pipeline inputs
- name: CloudwatchLogs
# --------------------------- Connection Options --------------------------
# 'awsAccessKeyID' sets the AWS access key (e.g. 'AKIAIOSFODNN7EXAMPLE')
# To learn more see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html
awsAccessKeyID: $=TenXEnv.get("AWS_ACCESS_KEY_ID") # (❗ EnvVar REQUIRED)
# 'awsSecretKey' sets the AWS access secret key (e.g. 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY')
# To learn more see: https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html
awsSecretKey: $=TenXEnv.get("AWS_SECRET_ACCESS_KEY") # (❗ EnvVar REQUIRED)
# 'groupName' sets the log group name (e.g., 'my-log-group').
# To learn more see: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetLogEvents.html#CWL-GetLogEvents-request-logGroupName
groupName: "" # (❗ REQUIRED)
# 'streamName' sets the log stream name (e.g., 'my-log-stream').
# To learn more see: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetLogEvents.html#CWL-GetLogEvents-request-logStreamName
streamName: "" # (❗ REQUIRED)
# 'awsRegion' sets the region hosting the CloudWatch Logs stream
# To learn more see: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html
awsRegion: $=TenXEnv.get("AWS_DEFAULT_REGION", "us-east-1")
# ----------------------------- Query Options -----------------------------
# 'limit' sets the number of documents retrieved with each results page.
# To learn more see: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetLogEvents.html#CWL-GetLogEvents-request-limit
limit: 500
# 'startFromHead' controls the direction of the search (old <-> new events).
# To learn more see: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetLogEvents.html#CWL-GetLogEvents-request-startFromHead
startFromHead: true
# 'startTime' sets the start of the time range, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC.
# The search includes events with a timestamp equal to or later than this value.
# The search excludes events with a timestamp earlier than this value.
# To learn more see: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetLogEvents.html#CWL-GetLogEvents-request-startTime
startTime: $=now("-240h")
# 'endTime' sets the end of the time range, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC.
# The search excludes events with a timestamp equal to or later than this value.
# To learn more see: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetLogEvents.html#CWL-GetLogEvents-request-endTime
endTime: $=now()
# --------------------------- Backpressure Options -----------------------
# 'queryInterval' sets the interval between queries to the remote API
queryInterval: $=parseDuration("2s")
# 'totalDuration' sets the max duration to try reading from the the remote input
totalDuration: $=parseDuration("5min")
# 'totalBytesLimit' sets the max total bytes to read from the remote input
totalBytesLimit: $=parseBytes("50MB")
# 'totalEventsLimit' sets the max number of events to read the remote input
totalEventsLimit: 10000
# --------------------------- Ancillary Options ---------------------------
# 'printProgress' controls whether to print a gage to the console
# This option helps debug and test the input
printProgress: $=!TenXEnv.get("quiet")
# 'messageField' sets the JSON field to extract from CloudWatch log messages
# For K8s/Docker logs with 10x encoding, use 'log' to extract the encoded log field
messageField: log
datadogLogs
Configure Datadog Logs inputs to read events from Datadog Logs.
Below is the default configuration from: datadogLogs/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImRhdGFkb2dMb2dzIiA6IHsKICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgIm5hbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMb2dpY2FsIG5hbWUgZm9yIHRoaXMgRGF0YWRvZ0xvZ3MgaW5wdXRcblxuU2V0cyBhIGxvZ2ljYWwgbmFtZSAoZS5nLiwgJ215RGF0YWRvZ0xvZ3MnKSBmb3IgdGhpcyBpbnB1dC4gVGhlIFtpbnB1dE5hbWVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtpbnB1dE5hbWUpIGZpZWxkIHJldHVybnMgdGhpcyB2YWx1ZSBhdCBydW4gdGltZSB0byBhbGxvdyBmb3IgaWRlbnRpZnlpbmcgYW5kIG9wZXJhdGluZyBvbiBpbnN0YW5jZXMgb3JpZ2luYXRpbmcgZnJvbSB0aGlzIGlucHV0LiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciB0aGlzIGlucHV0IGlzIGVuYWJsZWRcblxuU2V0cyB3aGV0aGVyIHRvIG9wZW4gdGhlIGlucHV0IHN0cmVhbS4gVG8gZW5hYmxlIHRoaXMgaW5wdXQgb25seSB3aGVuIGEgJ2RhdGFkb2dMb2dzSG9zdCcgc3RhcnR1cCBhcmd1bWVudCB2YWx1ZSBpcyB0cnV0aHksIHVzZTogYGBgIHlhbWwgZGF0YWRvZ0xvZ3NFbmFibGVkOiAkPVRlblhFbnYuZ2V0KFwiZGF0YWRvZ0xvZ3NIb3N0XCIpIGBgYCBUbyBsZWFybiBtb3JlIHNlZSBbVGVuWEVudi5nZXRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YRW52LmdldCkuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicHJpbnRQcm9ncmVzcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciB0aGlzIGlucHV0IHByaW50cyB0aHJvdWdocHV0IHN0YXRzIHRvIHRoZSBjb25zb2xlXG5cblNldHMgd2hldGhlciB0aGlzIGlucHV0IHByaW50cyB0aHJvdWdocHV0IHN0YXRzIHRvIHRoZSBjb25zb2xlIGZvciB0ZXN0aW5nIGFuIGludGVncmF0aW9uIHRvIGEgcmVtb3RlIGVuZHBvaW50LiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogZmFsc2UpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogZmFsc2UKICAgICAgICAgIH0sCiAgICAgICAgICAidG90YWxEdXJhdGlvbiIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgbWF4aW11bSB0aW1lIHRvIHF1ZXJ5IHRoZSBiYWNrZW5kXG5cblNldHMgdGhlIG1heGltdW0gdGltZSB0aGUgcGlwZWxpbmUgd2lsbCBjb250aW51ZSB0byBxdWVyeSB0aGUgZGF0YWRvZyBhcGkgYmFja2VuZCBiZWZvcmUgZXhpdGluZy4gRm9yIGV4YW1wbGUsIHNldHRpbmcgdGhpcyB0byAnMW1pbicgbWVhbnMgdGhhdCBxdWVyaWVzIHRvIHRoZSBiYWNrZW5kIHdpbGwgc3RvcCBhZnRlciAxIG1pbnV0ZSBoYXMgcGFzc2VkLiAoRGVmYXVsdDogNW1pbikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiNW1pbiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZXh0cmFjdG9ycyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBleHRyYWN0b3JzIHRvIGFwcGx5IG9uIHRoZSBldmVudHMgcmV0dXJuaW5nIGZyb20gdGhlIHF1ZXJ5XG5cblNldHMgbGlzdCBvZiBleHRyYWN0b3IgbmFtZXMgd2hpY2ggd2lsbCB3b3JrIG9uIHRoZSBldmVudHMgcmV0dXJuaW5nIGZyb20gdGhlIHF1ZXJ5LiBGb3IgbW9yZSBpbmZvIG9uIGV4dHJhY3RvcnMsIHNlZTogaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvZXh0cmFjdCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJob3N0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGF0YWRvZ0xvZ3MgaG9zdCBhZGRyZXNzXG5cblNldHMgdGhlIERhdGFkb2cgc2l0ZSBhZGRyZXNzIHRvIGNvbm5lY3QgdG8gKGUuZy4sICd1czUuZGF0YWRvZ2hxLmNvbScpLiBUbyBsZWFybiBtb3JlIHNlZSBbRGF0YWRvZyBzaXRlc10oaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vZ2V0dGluZ19zdGFydGVkL3NpdGUpIgogICAgICAgICAgfSwKICAgICAgICAgICJhcGlLZXkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEYXRhZG9nIEFQSSBrZXkgdG9rZW5cblxuU2V0cyB0aGUgJ0RELUFQSS1LRVknIEFQSSBrZXkgYXV0aGVudGljYXRpb24gcmVxdWVzdCBoZWFkZXIuIFRvIGxlYXJuIG1vcmUgc2VlOiBbQVBJIGtleXNdKGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2FjY291bnRfbWFuYWdlbWVudC9hcGktYXBwLWtleXMvKS4iCiAgICAgICAgICB9LAogICAgICAgICAgImFwcEtleSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRhdGFkb2cgYXBwIGtleVxuXG5TZXRzIHRoZSAnREQtQVBQTElDQVRJT04tS0VZJyBhcHAga2V5IGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QgaGVhZGVyLiBUbyBsZWFybiBtb3JlIHNlZTogW0FQSSBrZXlzXShodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9hY2NvdW50X21hbmFnZW1lbnQvYXBpLWFwcC1rZXlzLykuIgogICAgICAgICAgfSwKICAgICAgICAgICJxdWVyeSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlF1ZXJ5IHRvIHBhc3MgdG8gdGhlIERhdGFkb2cgJ2FwaS92Mi9sb2dzL2V2ZW50cy9zZWFyY2gnIFJFU1QgZW5kcG9pbnRcblxuU2V0cyB0aGUgRGF0YWRvZyBxdWVyeSB1c2VkIHRvIHJlcXVlc3QgcGFnaW5hdGVkIGRvY3VtZW50cyBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgZXZlbnRzIHRvIHRyYW5zZm9ybSBpbnRvIFRlblhPYmplY3RzLiBUaGUgW2RlZmF1bHQgcXVlcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L21vZHVsZXMvYmxvYi9tYWluL3BpcGVsaW5lcy9ydW4vbW9kdWxlcy9pbnB1dC9hbmFseXplci9kYXRhZG9nTG9ncy9xdWVyeS50eHQpIHJldHJpZXZlcyBwYWdpbmF0ZWQgdmFsdWVzIHNvcnRlZCBpbiBkZXNjIG9yZGVyIGJ5IEB0aW1lc3RhbXAsIHN0YXJ0aW5nIGZyb20gdGhlIHZhbHVlIG9mICdub3ctMTVtJyIKICAgICAgICAgIH0sCiAgICAgICAgICAiaW5kZXhlcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBpbmRpY2VzIHRvIHNlYXJjaCBpblxuXG5TZXRzIHRoZSBsaXN0cyBvZiBkYXRhIGluZGljZXMgdG8gc2VhcmNoIGluLiBUbyBzZWFyY2ggYWxsIGRhdGEgc3RyZWFtcyBhbmQgaW5kaWNlcywgb21pdCB0aGlzIHBhcmFtZXRlciBvciB1c2UgKiBvciBfYWxsLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJxdWVyeVNpemUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk51bWJlciBvZiBkb2N1bWVudHMgdG8gcmVhZCBwZXIgYmF0Y2ggZnJvbSB0aGUgRGF0YWRvZyBzZXJ2ZXJcblxuU2V0cyB0aGUgbnVtYmVyIG9mIGRvY3VtZW50cyB0byByZXRyaWV2ZSB3aXRoIGVhY2ggcGFnZSBvZiByZXN1bHRzLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA1MDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogNTAwCiAgICAgICAgICB9LAogICAgICAgICAgInNlYXJjaEZyb20iIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaW1lc3RhbXAgZnJvbSB3aGljaCB0byBiZWdpbiB0aGUgc2VhcmNoXG5cblRoaXMgdmFsdWUgc2V0cyB0aGUgaW5pdGlhbCB2YWx1ZSB1c2VkIHRvIHJlcXVlc3QgdGhlIGZpcnN0IHBhZ2Ugb2YgcmVzdWx0cy4gKERlZmF1bHQ6IG5vdygpIGluIG5hbm8uKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJub3coKSBpbiBuYW5vLiIKICAgICAgICAgIH0sCiAgICAgICAgICAicmV0cnlUaW1lb3V0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIHRpbWVvdXQgcGVyaW9kIChpbiBtaWxsaXNlY29uZHMpIHRvIHdhaXQgZm9yIHF1ZXJ5aW5nIG9mIG5ldyBkYXRhXG5cblVzZWQgYnkgW2RhdGFkb2ctaW5wdXQuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L21vZHVsZXMvYmxvYi9tYWluL3BpcGVsaW5lcy9ydW4vbW9kdWxlcy9pbnB1dC9hbmFseXplci9kYXRhZG9nTG9ncy9kYXRhZG9nLWlucHV0LmpzKSB0byBkZXRlcm1pbmUgaG93IGxvbmcgdG8gd2FpdCB1bnRpbCB0aGUgbmV4dCB0aW1lIHRoZSBzZWFyY2ggZW5kcG9pbnQgQVBJIGlzIGludm9rZWQgdG8gcXVlcnkgZm9yIG5ldyBkYXRhLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMDAwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAxMDAwMAogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbEJ5dGVzTGltaXQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gdG90YWwgYnl0ZXMgdG8gcmVhZCBmcm9tIGlucHV0IGJlZm9yZSBjbG9zaW5nXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGEgdGFyZ2V0IHBpcGVsaW5lIGlucHV0IHdpbGwgcmVhZCBpbnRvIHRoZSBwaXBlbGluZS4gVGhpcyB2YWx1ZSBsaW1pdHMgdGhlIHZvbHVtZSBvZiBldmVudHMgdG8gcmVhZCBmcm9tIGEgbG9jYWwvcmVtb3RlIHNvdXJjZSAoZS5nLiwgbG9nIGFuYWx5emVyKS4gICBGb3IgZXhhbXBsZTogYGBgIHlhbWwgZGF0YWRvZ0xvZ3NUb3RhbEJ5dGVzTGltaXQ6ICQ9cGFyc2VCeXRlcyhcIjFHQlwiKSBgYGAgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAidG90YWxFdmVudHNMaW1pdCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBldmVudHMgdG8gcmVhZCBmcm9tIGlucHV0IGJlZm9yZSBjbG9zaW5nXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGV2ZW50cyBhIHRhcmdldCBwaXBlbGluZSBpbnB1dCB3aWxsIHJlYWQgaW50byB0aGUgcGlwZWxpbmUuIFRoaXMgdmFsdWUgbGltaXRzIHRoZSB2b2x1bWUgb2YgZXZlbnRzIHRvIHJlYWQgZnJvbSBhIGxvY2FsL3JlbW90ZSBzb3VyY2UgKGUuZy4sIGxvZyBhbmFseXplcikuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDEwMDAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDEwMDAwCiAgICAgICAgICB9LAogICAgICAgICAgInF1ZXJ5SW50ZXJ2YWwiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlF1ZXJ5IGludGVydmFsIChpbiBtaWxsaXNlY29uZHMpIGZvciBjaGVja2luZyBuZXcgZGF0YSBmcm9tIHJlbW90ZSBzb3VyY2VcblxuU2V0cyB0aGUgaW50ZXJ2YWwgYmV0d2VlbiBxdWVyaWVzIHRvIHRoZSByZW1vdGUgRGF0YWRvZyBMb2dzIEFQSS4gVGhpcyBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgaW5wdXQgcG9sbHMgZm9yIG5ldyBsb2cgZGF0YS4gIEZvciBleGFtcGxlOiBgYGAgeWFtbCBkYXRhZG9nTG9nc1F1ZXJ5SW50ZXJ2YWw6ICQ9cGFyc2VEdXJhdGlvbihcIjVzXCIpIGBgYCAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAyMDAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDIwMDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAibmFtZSIsCiAgICAgICAgICAiaG9zdCIsCiAgICAgICAgICAiYXBpS2V5IiwKICAgICAgICAgICJhcHBLZXkiCiAgICAgICAgXQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' Datadog Logs input configuration
# Configure a Datadog Logs event input
# To learn more see https://doc.log10x.com/run/input/analyzer/datadogLogs/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/input/analyzer/datadogLogs
# ============================== Datadog Inputs ===============================
# Multiple Datadog inputs can be defined below
datadogLogs:
# 'name' sets a unique logical name across all pipeline inputs
- name: DatadogLogs
# -------------------------- Connection Options ---------------------------
# 'apiKey' and 'appKey' must be set to authenticate with the logs endpoint
# To learn more see: https://docs.datadoghq.com/account_management/api-app-keys/
apiKey: $=TenXEnv.get("DD_API_KEY") # (❗ REQUIRED)
appKey: $=TenXEnv.get("DD_APP_KEY") # (❗ REQUIRED)
# 'host' points to the target Datadog site
# To learn more see: https://docs.datadoghq.com/getting_started/site/
host: us5.datadoghq.com
# ----------------------------- Query Options -----------------------------
# 'query' sets the Datadog query used to request paginated documents.
# The default query (defined in 'run/modules/input/analyzer/datadog/query.txt') retrieves
# values sorted in desc order by @timestamp, starting from the value of 'searchFrom'
query: null
# 'searchFrom sets the initial value used to request the first page of results.
searchFrom: now-1000h
# 'querySize' sets the number of documents to retrieve with each paginated request
querySize: 500
# 'indexes' sets the lists of data indices to search in
# If not provided, will use a default of '*'
indexes: null
# --------------------------- Backpressure Options -----------------------
# 'queryInterval' sets the interval between queries to the remote API
queryInterval: $=parseDuration("5s")
# 'totalDuration' sets the max duration to try reading from the the remote input
totalDuration: $=parseDuration("5min")
# 'totalBytesLimit' sets the max total bytes to read from the remote input
totalBytesLimit: $=parseBytes("50MB")
# 'totalEventsLimit' sets the max number of events to read the remote input
totalEventsLimit: 10000
# --------------------------- Ancillary Options ---------------------------
# 'printProgress' controls whether to print a progress gage to the console
# This option helps test the input
printProgress: $=!TenXEnv.get("quiet")
Initializers
Initializers
Activate an Object initializer to enrich TenXObjects with additional context.
message
Configure the Symbol Message Calculator to enrich TenXObjects with logical message symbol sequence and origin values.
Below is the default configuration from: message/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInN5bWJvbCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiY29udGV4dHMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlR5cGVzIG9mIHN5bWJvbHMgdG8gc2VhcmNoXG5cblNwZWNpZmllcyBhIGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIFtzeW1ib2wgY29udGV4dHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI2NvbnRleHRzKSB2YWx1ZXMuIFRoaXMgaXMgYXJndW1lbnQgaXMgcGFzc2VkIGFzIHRoZSBgc3ltYm9sQ29udGV4dHNgIGFyZ3VtZW50IHZhbHVlIGZvciB0aGUgW3N5bWJvbFNlcXVlbmNlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWE9iamVjdCtzeW1ib2xTZXF1ZW5jZSkgZnVuY3Rpb24uIChEZWZhdWx0OiBsb2csZXhlYykiLAogICAgICAgICAgImRlZmF1bHQiIDogImxvZyxleGVjIgogICAgICAgIH0sCiAgICAgICAgIm1heExlbiIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXggbnVtYmVyIG9mIG91dHB1dCBjaGFyc1xuXG5TcGVjaWZpZXMgdGhlIG1heCBudW1iZXIgb2YgY2hhcnMgb2YgdGhlIFtzeW1ib2xNZXNzYWdlRmllbGRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2luaXRpYWxpemUvbWVzc2FnZS8jc3ltYm9sbWVzc2FnZWZpZWxkKS4gU2V0IDAgdG8gdW5saW1pdGVkLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAwKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAwCiAgICAgICAgfSwKICAgICAgICAibWVzc2FnZUZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWVsZCBuYW1lIHRvIGFzc2lnbiB3aXRoIHN5bWJvbCBzZXF1ZW5jZSB2YWx1ZVxuXG5TcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIHRvIGFzc2lnbiB0aGUgcmV0dXJuIHZhbHVlIG9mIFtzeW1ib2xTZXF1ZW5jZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhPYmplY3Qrc3ltYm9sU2VxdWVuY2UpIGZ1bmN0aW9uIHdoZW4gaW52b2tpbmcgaXQgd2l0aCB0aGUgYSBzeW1ib2xDb250ZXh0IGFyZ3VtZW50IHZhbHVlIG9mIFtzeW1ib2xDb250ZXh0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9tZXNzYWdlLyNzeW1ib2xjb250ZXh0cykuICAgRm9yIGFuIGV4YW1wbGUsIHNlZSBbc3ltYm9sSW5wdXRGaWVsZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9tZXNzYWdlLyNzeW1ib2xpbnB1dGZpZWxkKS4gKERlZmF1bHQ6IHN5bWJvbE1lc3NhZ2UpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJzeW1ib2xNZXNzYWdlIgogICAgICAgIH0sCiAgICAgICAgIm9yaWdpbkZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWVsZCBuYW1lIHRvIGFzc2lnbiB3aXRoIHN5bWJvbCBtZXNzYWdlIG9yaWdpbiBmaWxlXG5cblNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgZmllbGQgdG8gYXNzaWduIHRoZSByZXR1cm4gdmFsdWUgb2YgW3N5bWJvbE9yaWdpbl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhPYmplY3Qrc3ltYm9sT3JpZ2luKSBmdW5jdGlvbi4gKERlZmF1bHQ6IHN5bWJvbE9yaWdpbikiLAogICAgICAgICAgImRlZmF1bHQiIDogInN5bWJvbE9yaWdpbiIKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' symbol lookup configuration
# Configure a symbol origin lookup to enrich TenXObjects
# To learn more see https://doc.log10x.com/run/initialize/message/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/initialize/message
# ============================== Symbol Options ===============================
symbol:
# 'types' specifies the types of symbols to search for; if the first type does not yield a result, the next one is tried etc.
# Supported values (case insensitive), PACKAGE, CLASS, METHOD, LOG, ENUM, CONST, TEXT, EXEC, ANY
# To learn more see https://doc.log10x.com/run/transform/symbol/#contexts
contexts: log,exec
# 'messageField' specifies the field name to assign the source/binary origin file name to target TenXObjects
messageField: message_pattern
# 'maxLen' specifies the max char len of the output messageField
maxLen: 70
level
Configure the Level Classifier to classify TenXObjects with a severity level.
Below is the default configuration from: level/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImxldmVsIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJmaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdHMgbGV2ZWwgc2V2ZXJpdHkgdGVybXNcblxuU3BlY2lmeSB0aGUgZmllbGQgbmFtZSB0byBhc3NpZ24gd2l0aCB0aGUgaW5mZXJyZWQgc2V2ZXJpdHkgbGV2ZWwgKERlZmF1bHQ6IGxldmVsKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAibGV2ZWwiCiAgICAgICAgfSwKICAgICAgICAidGVybXMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdHMgbGV2ZWwgc2V2ZXJpdHkgdGVybXNcblxuU3BlY2lmeSBzZXZlcml0eSBsZXZlbCBjbGFzc2lmaWNhdGlvbiwgc3RhcnQtb2YtbGluZSBtYXRjaGluZy4gVXNlZCB0byBpZGVudGlmeSB0aGUgc2V2ZXJpdHkgbGV2ZWwgKFRSQUNFLCBERUJVRywgSU5GTywgV0FSTiwgRVJST1IsIENSSVRJQ0FMKSBvZiBhIGxvZyBsaW5lLCAgdHlwaWNhbGx5IG1hcmtpbmcgdGhlIHN0YXJ0IG9mIGEgbG9nIGV2ZW50IChoZWFkKS4gU29ydGVkIGJ5IGxpa2VsaWhvb2QgYW5kIHVuaXF1ZW5lc3MuIFVzZWQgaW4gYSBUcmllIGZvciBPKG0pIG1hdGNoaW5nLiAgRm9yIGV4YW1wbGU6ICBgYGAgeWFtbCAgLSAncGFuaWM9Q1JJVElDQUwnICAgICAgICMgR28gcGFuaWMsIGZpcnN0IGxpbmU7IGUuZy4sIFwicGFuaWM6IHJ1bnRpbWUgZXJyb3I6IGluZGV4IG91dCBvZiByYW5nZVwiICAtICdmYXRhbF9lcnJvcj1DUklUSUNBTCcgIyBHbyBmYXRhbCBlcnJvciwgZmlyc3QgbGluZTsgZS5nLiwgXCJmYXRhbCBlcnJvcjogYWxsIGdvcm91dGluZXMgYXJlIGFzbGVlcFwiICAtICd0aHJlYWRfJydtYWluJydfcGFuaWNrZWRfYXQ9Q1JJVElDQUwnICMgUnVzdCBwYW5pYywgZmlyc3QgbGluZTsgZS5nLiwgXCJ0aHJlYWQgJ21haW4nIHBhbmlja2VkIGF0ICdleHBsaWNpdCBwYW5pYydcIiAgLSAnU2VnbWVudGF0aW9uX2ZhdWx0PUNSSVRJQ0FMJyAjIEMvQysrIG1lbW9yeSB2aW9sYXRpb24sIGZpcnN0IGxpbmU7IGUuZy4sIFwiU2VnbWVudGF0aW9uIGZhdWx0IChjb3JlIGR1bXBlZClcIiBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJ0aW1lc3RhbXBQYXR0ZXJucyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0cyB0aW1lc3RhbXAgcGF0dGVybnMgYXNzb2NpYXRlZCB3aXRoIHNldmVyaXR5IGxldmVsXG5cbkxpc3RzIHRoZSB0ZXJtcyBhc3NpZ25lZCB0byBhIHRhcmdldCBUZW5YT2JqZWN0J3MgW2xldmVsRmllbGRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2luaXRpYWxpemUvbGV2ZWwvI2xldmVsRmllbGQpIGJhc2VkIG9uIHdoZXRoZXIgaXRzIFtmdWxsVGV4dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2Z1bGxUZXh0KSBjb250YWlucyBzcGVjaWZpZWQgdGVybXMuIEZvciBleGFtcGxlOiBgYGAgeWFtbCAtIFwiSSdNTWRkIEhIOm1tOnNzLlM9SU5GT1wiICAgICAgICAgICMgVXNlZCBpbiBLdWJlcm5ldGVzIGt1YmUtYXBpc2VydmVyIGxvZ3Mgd2l0aCBJTkZPIHByZWZpeCwgMS1kaWdpdCBtaWNyb3NlY29uZCBwcmVjaXNpb24gYGBgIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' level classifier configuration
# Configuration level classifier to enrich TenXObjects
# To learn more see https://doc.log10x.com/run/initialize/level/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/initialize/level
# =============================== Level Options ===============================
level:
# 'field' specify the field name to assign with the inferred severity level
field: severity_level
# 'terms' specify severity level classification, start-of-line matching
# Used to identify the severity level (TRACE, DEBUG, INFO, WARN, ERROR, CRITICAL) of a log line, typically marking
# the start of a log event (head). Sorted by likelihood and uniqueness. Used in a Trie for O(m) matching.
terms:
- 'trace=TRACE' # Common in JavaScript (Winston) or custom logs; e.g., "trace Variable x = 5"
- 'Trace=TRACE' # Mixed case; e.g., "Trace Variable x = 5"
- 'TRACE=TRACE' # Uppercase, less common; e.g., "TRACE Message"
- 'debug=DEBUG' # Common in JavaScript (Winston) or custom logs; e.g., "debug Entering method foo"
- 'Debug=DEBUG' # Mixed case; e.g., "Debug Entering method foo"
- 'DEBUG=DEBUG' # Uppercase; e.g., "DEBUG Message"
- 'DBG=DEBUG' # Abbreviation, less common; e.g., "DBG Entering method foo"
- 'info=INFO' # Common in JavaScript (Winston) or custom logs; e.g., "info Application started"
- 'Info=INFO' # Mixed case; e.g., "Info Application started"
- 'INFO=INFO' # Uppercase; e.g., "INFO Message"
- 'notice=INFO' # Common in custom logs or lowercase syslog; e.g., "notice Configuration updated"
- 'Notice=INFO' # Mixed case; e.g., "Notice Configuration updated"
- 'NOTICE=INFO' # Uppercase, syslog; e.g., "NOTICE Message"
- 'warn=WARN' # Common in JavaScript (Winston) or custom logs; e.g., "warn Low disk space"
- 'Warn=WARN' # Mixed case; e.g., "Warn Low disk space"
- 'WARN=WARN' # Uppercase; e.g., "WARN Message"
- 'warning=WARN' # Common in custom logs or verbose frameworks; e.g., "warning Low disk space"
- 'Warning=WARN' # Mixed case; e.g., "Warning Low disk space"
- 'WARNING=WARN' # Uppercase; e.g., "WARNING Message"
- 'error=ERROR' # Common in JavaScript (Winston) or custom logs; e.g., "error Failed to connect"
- 'Error=ERROR' # Mixed case; e.g., "Error Failed to connect"
- 'ERROR=ERROR' # Uppercase; e.g., "ERROR Message"
- 'err=ERROR' # Lowercase abbreviation; e.g., "err Failed to connect"
- 'ERR=ERROR' # Uppercase abbreviation; e.g., "ERR Message"
- 'TypeError=ERROR' # JavaScript, stack trace; e.g., "TypeError: undefined is not a function"
- 'ReferenceError=ERROR' # JavaScript, stack trace; e.g., "ReferenceError: x is not defined"
- 'ValueError=ERROR' # Python, stack trace; e.g., "ValueError: invalid literal"
- 'PHP_Warning=ERROR' # PHP, warning message; e.g., "PHP Warning: Undefined variable"
- 'fatal=CRITICAL' # Common in custom logs; e.g., "fatal System crash"
- 'Fatal=CRITICAL' # Mixed case; e.g., "Fatal System crash"
- 'FATAL=CRITICAL' # Uppercase; e.g., "FATAL Message"
- 'critical=CRITICAL' # Common in custom logs; e.g., "critical System crash"
- 'Critical=CRITICAL' # Mixed case; e.g., "Critical System crash"
- 'CRITICAL=CRITICAL' # Uppercase; e.g., "CRITICAL Message"
- 'crit=CRITICAL' # Lowercase abbreviation, syslog; e.g., "crit System crash"
- 'CRIT=CRITICAL' # Uppercase abbreviation, syslog; e.g., "CRIT Message"
- 'alert=CRITICAL' # Common in custom logs or syslog; e.g., "alert High CPU usage"
- 'Alert=CRITICAL' # Mixed case; e.g., "Alert High CPU usage"
- 'ALERT=CRITICAL' # Uppercase, syslog; e.g., "ALERT Message"
- 'emerg=CRITICAL' # Common in custom logs or lowercase syslog; e.g., "emerg System unusable"
- 'Emerg=CRITICAL' # Mixed case; e.g., "Emerg System unusable"
- 'EMERG=CRITICAL' # Uppercase, syslog; e.g., "EMERG Message"
- 'panic=CRITICAL' # Go panic, first line; e.g., "panic: runtime error: index out of range"
- 'fatal_error=CRITICAL' # Go fatal error, first line; e.g., "fatal error: all goroutines are asleep"
- 'thread_main_panicked_at=CRITICAL' # Rust panic, first line; e.g., "thread 'main' panicked at 'explicit panic'"
- 'Segmentation_fault=CRITICAL' # C/C++ memory violation, first line; e.g., "Segmentation fault (core dumped)"
- 'Aborted=CRITICAL' # C/C++ termination, first line; e.g., "Aborted (core dumped)"
- 'Assertion_failed=CRITICAL' # C/C++ assertion failure, first line; e.g., "Assertion failed: x > 0"
- 'PHP_Fatal_error=CRITICAL' # PHP fatal error, first line; e.g., "PHP Fatal error: Out of memory"
- 'Traceback_most_recent_call_last=CRITICAL' # Python stack trace, first line; e.g., "Traceback (most recent call last)"
- 'Stack_trace=CRITICAL' # Generic stack trace, first line; e.g., "Stack trace"
- 'Error=CRITICAL' # JavaScript, stack trace; e.g., "Error: Something went wrong"
- 'Fatal_error=CRITICAL' # PHP, stack trace; e.g., "Fatal error: Uncaught Exception"
- 'Unhandled_exception=CRITICAL' # C#/Dart, stack trace; e.g., "Unhandled exception: System.NullReferenceException"
- 'Exception_in_thread=CRITICAL' # Java, stack trace; e.g., "Exception in thread 'main' java.lang.RuntimeException"
- 'goroutine=CRITICAL' # Go, stack trace; e.g., "goroutine 1 [running]:"
- 'failed=ERROR' # ERROR-level entries in application, system, or web server logs
# 'timestampPatterns' patterns for LogEvent head classification, start-of-line matching
# Used to identify timestamp formats in log lines and infer their implied severity level based on the first character.
# Formats are typical of Kubernetes kube-apiserver logs with varying microsecond precision. The first character
# ('I', 'W', 'E', 'F') determines the severity: I=INFO, W=WARN, E=ERROR, F=CRITICAL. Sorted by precision.
timestampPatterns:
- "'I'MMdd HH:mm:ss.S=INFO" # Used in Kubernetes kube-apiserver logs with INFO prefix, 1-digit microsecond precision
- "'I'MMdd HH:mm:ss.SS=INFO" # Used in Kubernetes kube-apiserver logs with INFO prefix, 2-digit microsecond precision
- "'I'MMdd HH:mm:ss.SSS=INFO" # Used in Kubernetes kube-apiserver logs with INFO prefix, 3-digit microsecond precision
- "'I'MMdd HH:mm:ss.SSSS=INFO" # Used in Kubernetes kube-apiserver logs with INFO prefix, 4-digit microsecond precision
- "'I'MMdd HH:mm:ss.SSSSS=INFO" # Used in Kubernetes kube-apiserver logs with INFO prefix, 5-digit microsecond precision
- "'I'MMdd HH:mm:ss.SSSSSS=INFO" # Used in Kubernetes kube-apiserver logs with INFO prefix, 6-digit microsecond precision
- "'W'MMdd HH:mm:ss.S=WARN" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 1-digit microsecond precision
- "'W'MMdd HH:mm:ss.SS=WARN" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 2-digit microsecond precision
- "'W'MMdd HH:mm:ss.SSS=WARN" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 3-digit microsecond precision
- "'W'MMdd HH:mm:ss.SSSS=WARN" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 4-digit microsecond precision
- "'W'MMdd HH:mm:ss.SSSSS=WARN" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 5-digit microsecond precision
- "'W'MMdd HH:mm:ss.SSSSSS=WARN" # Used in Kubernetes kube-apiserver logs with WARNING prefix, 6-digit microsecond precision
- "'E'MMdd HH:mm:ss.S=ERROR" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 1-digit microsecond precision
- "'E'MMdd HH:mm:ss.SS=ERROR" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 2-digit microsecond precision
- "'E'MMdd HH:mm:ss.SSS=ERROR" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 3-digit microsecond precision
- "'E'MMdd HH:mm:ss.SSSS=ERROR" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 4-digit microsecond precision
- "'E'MMdd HH:mm:ss.SSSSS=ERROR" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 5-digit microsecond precision
- "'E'MMdd HH:mm:ss.SSSSSS=ERROR" # Used in Kubernetes kube-apiserver logs with ERROR prefix, 6-digit microsecond precision
- "'F'MMdd HH:mm:ss.S=CRITICAL" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 1-digit microsecond precision
- "'F'MMdd HH:mm:ss.SS=CRITICAL" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 2-digit microsecond precision
- "'F'MMdd HH:mm:ss.SSS=CRITICAL" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 3-digit microsecond precision
- "'F'MMdd HH:mm:ss.SSSS=CRITICAL" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 4-digit microsecond precision
- "'F'MMdd HH:mm:ss.SSSSS=CRITICAL" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 5-digit microsecond precision
- "'F'MMdd HH:mm:ss.SSSSSS=CRITICAL" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 6-digit microsecond precision
group
Configure the Group initializer to combine multi-line events into TenXObject group instances.
Below is the default configuration from: group/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImdyb3VwIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJpbmRpY2F0b3JzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2Ygc3RyaW5ncyB0aGF0LCB3aGVuIG1hdGNoZWQgYXQgdGhlIHN0YXJ0IG9mIGEgbG9nIGxpbmUncyB0ZXh0LCBkZXNpZ25hdGUgaXQgYXMgYSBncm91cCBoZWFkLlxuXG5BIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0LCB3aGVuIG1hdGNoZWQgYXQgdGhlIHN0YXJ0IG9mIGEgbG9nIGxpbmUncyB0ZXh0LCBkZXNpZ25hdGUgaXQgYXMgYSBncm91cCBoZWFkLiBVbm1hdGNoZWQgbGluZXMgZGVmYXVsdCB0byBgZmFsc2VgLCBpbmRpY2F0aW5nIHRoZXkgYXJlIGdyb3VwIGNoaWxkcmVuLiAgLSBgMTkyLmAgLSBJbmRpY2F0ZXMgYSBwcml2YXRlIElQIGFkZHJlc3MsIGNvbW1vbiBpbiB3ZWIgc2VydmVyIGxvZ3MgKGUuZy4sIFwiMTkyLjE2OC4xLjEgLSAtIFsuLi5dXCIpLiAtIGAxMC5gIC0gSW5kaWNhdGVzIGEgcHJpdmF0ZSBJUCByYW5nZSwgb2Z0ZW4gaW4gS3ViZXJuZXRlcyBvciBpbnRlcm5hbCBuZXR3b3JrIGxvZ3MgKGUuZy4sIFwiMTAuMjQ0LjAuMTI1IC0gLSBbLi4uXVwiKS4gLSBgR0VUIGAgLSBJbmRpY2F0ZXMgYW4gSFRUUCBHRVQgcmVxdWVzdCwgbWFya2luZyB0aGUgc3RhcnQgb2YgYSB3ZWIgdHJhbnNhY3Rpb24gbG9nIChlLmcuLCBcIkdFVCAvaW5kZXguaHRtbCBIVFRQLzEuMVwiKS4gLSBgYXQgYCAtIEluZGljYXRlcyBhIEphdmEvQyMgc3RhY2sgdHJhY2UgY29udGludWF0aW9uLiIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm5lZ2F0b3JzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgcGF0dGVybnMgdGhhdCBtYXJrIGEgbGluZSBhcyBhIGtub3duIGNvbnRpbnVhdGlvbiAoZS5nLiwgc3RhY2sgdHJhY2UgbGluZXMpLCBuZWdhdGluZyBzdGFuZGFsb25lIHN0YXR1cy5cblxuQSBsaXN0IG9mIHN0cmluZ3MgdGhhdCwgd2hlbiBtYXRjaGVkIGF0IHRoZSBzdGFydCBvZiBhIGxvZyBsaW5lJ3MgdGV4dCwgbWFyayBpdCBhcyBhIGtub3duIGNvbnRpbnVhdGlvbiBsaW5lLiBMaW5lcyBtYXRjaGluZyB0aGVzZSBwYXR0ZXJucyBhcmUgaWRlbnRpZmllZCBhcyBjb250aW51YXRpb25zIChlLmcuLCBzdGFjayB0cmFjZSBmcmFtZXMpIGFuZCB3aWxsIG5vdCBoYXZlIG1lc3NhZ2UgcGF0dGVybnMgY2FsY3VsYXRlZCBmb3IgdGhlbSwgb3B0aW1pemluZyBwcm9jZXNzaW5nIHBlcmZvcm1hbmNlLiAgLSBgXHRhdCBgIC0gSmF2YS9Lb3RsaW4gc3RhY2sgdHJhY2UgZnJhbWUgKHRhYi1wcmVmaXhlZCkuIC0gYCAgIGF0IGAgLSAuTkVUIHN0YWNrIHRyYWNlIGZyYW1lIChzcGFjZS1wcmVmaXhlZCkuIC0gYCAgRmlsZSBcImAgLSBQeXRob24gc3RhY2sgdHJhY2UgZnJhbWUuIC0gYCAgICBhdCBgIC0gTm9kZS5qcyBzdGFjayB0cmFjZSBmcmFtZS4gLSBgQ2F1c2VkIGJ5OmAgLSBKYXZhIGNoYWluZWQgZXhjZXB0aW9uLiAtIGBcdC4uLiBgIC0gSmF2YSB0cnVuY2F0ZWQgc3RhY2sgZnJhbWVzLiIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=
# 🔟❎ '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
# =============================== Dependencies ================================
include: run/modules/initialize/group
# =============================== Group Options ===============================
# 'indicators' specifies a list of `value:state` pairs that determine if a log line's start marks a group head (`true`) or child (`false`).
group:
# 'indicators' specifies a list of strings that, when matched at the start of a log line's text, designate it as a group head.
# Unmatched lines default to false, indicating they are group children.
indicators:
- '192.' # Indicates a private IP address, common in web server logs (e.g., "192.168.1.1 - - [...]")
- '10.' # Indicates a private IP range, often in Kubernetes or internal network logs (e.g., "10.244.0.125 - - [...]")
- '172.' # Indicates a private IP range, typical in enterprise network logs (e.g., "172.16.0.1 - - [...]")
- '127.' # Indicates localhost, a common web server log initiator (e.g., "127.0.0.1 - - [...]")
- 'GET ' # Indicates an HTTP GET request, marking the start of a web transaction log (e.g., "GET /index.html HTTP/1.1")
- 'POST ' # Indicates an HTTP POST request, marking the start of a web transaction log (e.g., "POST /api HTTP/1.1")
- 'PUT ' # Indicates an HTTP PUT request, marking the start of a web transaction log (e.g., "PUT /resource HTTP/1.1")
- 'DELETE ' # Indicates an HTTP DELETE request, marking the start of a web transaction log (e.g., "DELETE /resource HTTP/1.1")
- 'HEAD ' # Indicates an HTTP HEAD request, marking the start of a web transaction log (e.g., "HEAD /index.html HTTP/1.1")
- 'OPTIONS ' # Indicates an HTTP OPTIONS request, marking the start of a web transaction log (e.g., "OPTIONS /api HTTP/1.1")
- 'HTTP/' # Indicates an HTTP protocol version, marking the start of a web transaction log (e.g., "GET /index.html HTTP/1.1")
- 'kernel:' # Indicates a Linux kernel log entry, marking the start of a system event (e.g., "kernel: [0.123456] Device initialized")
- 'sshd[' # Indicates an SSH daemon log entry, marking the start of a security event (e.g., "sshd[1234]: Accepted password ...")
- 'systemd[' # Indicates a systemd service log entry, marking the start of a system service event (e.g., "systemd[1]: Started service ...")
- 'cron[' # Indicates a cron daemon log entry, marking the start of a scheduled task event (e.g., "cron[1234]: Running job ...")
- 'syslog:' # Indicates a syslog message, marking the start of a system log event (e.g., "syslog: Message ...")
- 'rsyslogd:' # Indicates an rsyslog daemon log entry, marking the start of a logging system event (e.g., "rsyslogd: Log started ...")
- 'auditd[' # Indicates an audit daemon log entry, marking the start of a security audit event (e.g., "auditd[1234]: Audit event ...")
- 'daemon:' # Indicates a syslog daemon facility log, marking the start of a system service event (e.g., "daemon: Service started ...")
- 'user:' # Indicates a syslog user facility log, marking the start of a user-related event (e.g., "user: User logged in ...")
- 'local0:' # Indicates a syslog local facility log, marking the start of a custom system event (e.g., "local0: Custom message ...")
- 'local1:' # Indicates a syslog local facility log, marking the start of a custom system event (e.g., "local1: Custom message ...")
- 'level=' # Indicates a structured log key, marking the start of a key-value log entry (e.g., "level=info msg=Started")
- 'msg=' # Indicates a structured log key, marking the start of a message log entry (e.g., "msg=Application started")
- 'message=' # Indicates a structured log key, marking the start of a message log entry (e.g., "message=Application started")
- 'event=' # Indicates a structured log key, marking the start of an event log entry (e.g., "event=Service startup")
- 'thread=' # Indicates a structured log key, marking the start of a thread-specific log entry (e.g., "thread=main Processing ...")
- 'Starting ' # Indicates the start of a process initiation log (e.g., "Starting server on port 8080")
- 'Stopping ' # Indicates the start of a process termination log (e.g., "Stopping service ...")
- 'Running ' # Indicates the start of a process status log (e.g., "Running task ...")
- 'Listening ' # Indicates the start of a network service log (e.g., "Listening on port 8080 ...")
- 'Connecting ' # Indicates the start of a connection attempt log (e.g., "Connecting to database ...")
- 'Connected ' # Indicates the start of a successful connection log (e.g., "Connected to database ...")
- 'Disconnected ' # Indicates the start of a disconnection log (e.g., "Disconnected from server ...")
- 'Processing ' # Indicates the start of a task processing log (e.g., "Processing request ...")
- 'Received ' # Indicates the start of a data reception log (e.g., "Received message ...")
- 'Sent ' # Indicates the start of a data transmission log (e.g., "Sent response ...")
- 'User ' # Indicates the start of a user action log (e.g., "User logged in ...")
- 'Authentication ' # Indicates the start of an authentication log (e.g., "Authentication successful ...")
- 'Authorized ' # Indicates the start of an authorization log (e.g., "Authorized user access ...")
- 'Failed ' # Indicates the start of a failure log (e.g., "Failed login attempt ...")
- 'kubelet:=true' # Indicates a Kubernetes kubelet log entry, marking the start of a node event (e.g., "kubelet: Starting kubelet")
- 'pod:=true' # Indicates a Kubernetes pod log entry, marking the start of a pod event (e.g., "pod: Starting container")
- 'container:=true' # Indicates a Kubernetes container log entry, marking the start of a container event (e.g., "container: Started")
- 'namespace:=true' # Indicates a Kubernetes namespace log entry, marking the start of a namespace event (e.g., "namespace: Created")
- 'Traceback ' # Indicates the start of a Python stack trace (e.g., "Traceback (most recent call last):")
- 'File "' # Indicates a Python stack trace line (e.g., "File "/script.py", line 10")
- 'Trace:' # Indicates a Node.js console trace (e.g., "Trace: Show me")
- 'Error:' # Indicates a Node.js error log (e.g., "Error: Something went wrong")
- 'Warning:' # Indicates a Node.js warning log (e.g., "Warning: Deprecated method")
- 'Exception in thread ' # Indicates a Java exception header (e.g., "Exception in thread 'main'")
- 'goroutine ' # Indicates a Go goroutine stack trace (e.g., "goroutine 1 [running]:")
- 'panic:' # Indicates a Go panic (e.g., "panic: runtime error")
- 'thread ' # Indicates a Rust thread panic (e.g., "thread 'main' panicked at")
- 'stack backtrace:' # Indicates a Rust backtrace header (e.g., "stack backtrace:")
- 'PHP Warning:' # Indicates a PHP warning (e.g., "PHP Warning: Undefined variable")
- 'PHP Fatal error:' # Indicates a PHP fatal error (e.g., "PHP Fatal error: Out of memory")
- 'in /' # Indicates a PHP/Ruby file path in stack trace (e.g., "in /path/to/file.php:10")
- 'Exception:' # Indicates a C# exception (e.g., "Exception: Invalid operation")
- 'terminate called' # Indicates a C++ termination (e.g., "terminate called after throwing an instance of 'std::exception'")
- 'syslog:' # Indicates a Linux syslog message (e.g., "syslog: Message ...")
- 'IN=' # Indicates an iptables firewall input log (e.g., "IN=eth0 OUT=")
- 'OUT=' # Indicates an iptables firewall output log (e.g., "OUT=eth0 SRC=")
- 'SRC=' # Indicates an iptables firewall source IP log (e.g., "SRC=192.168.1.1 DST=")
- 'DST=' # Indicates an iptables firewall destination IP log (e.g., "DST=10.0.0.1 LEN=")
- 'KafkaServer:' # Indicates a Kafka server log (e.g., "KafkaServer: Starting Kafka server")
- 'Redis:' # Indicates a Redis server log (e.g., "Redis: Server initialized")
# 'negators' specifies patterns that mark a line as a continuation of a previous event (e.g., stack trace lines).
# Lines matching these patterns are NOT standalone events and typically don't need their own message pattern.
# Events that are NOT negators (isStandalone=true) will get a message even without timestamp/severity.
negators:
# Java/Kotlin/Scala stack traces
- "\tat " # Java stack frame (e.g., "\tat com.example.MyClass.method(MyClass.java:42)")
- " at " # Java stack frame with spaces (e.g., " at com.example.MyClass.method")
- "\t... " # Java truncated stack (e.g., "\t... 15 more")
- " ... " # Java truncated stack with spaces
- "Caused by: " # Java chained exception (e.g., "Caused by: java.io.IOException")
- "Suppressed: " # Java suppressed exception (e.g., "Suppressed: java.lang.Exception")
# .NET/C# stack traces
- " at " # .NET stack frame (e.g., " at MyNamespace.MyClass.Method()")
- "--- End of " # .NET inner exception marker (e.g., "--- End of inner exception stack trace ---")
- " ---> " # .NET inner exception chain
# Python stack traces
- " File \"" # Python stack frame (e.g., ' File "/path/to/script.py", line 10')
- " raise " # Python raise statement in traceback
- " return " # Python return statement in traceback
# Node.js/JavaScript stack traces
- " at " # Node.js stack frame (e.g., " at Object.<anonymous> (/path/file.js:10:15)")
- " at new " # Node.js constructor stack frame
- " at Module." # Node.js module stack frame
- " at Object." # Node.js object stack frame
# Go stack traces
- "\t/" # Go stack frame path (e.g., "\t/go/src/main.go:42 +0x123")
- "created by " # Go goroutine creator (e.g., "created by main.main")
# Ruby stack traces
- "\tfrom " # Ruby stack frame (e.g., "\tfrom /path/to/file.rb:10:in `method'")
- " from " # Ruby stack frame with spaces
# Rust stack traces
- " at " # Rust source location (13 spaces + at)
- " --> " # Rust error pointer
# PHP stack traces
- "#0 " # PHP stack frame (e.g., "#0 /path/to/file.php(10): function()")
- "#1 " # PHP stack frame
- "#2 " # PHP stack frame
- "#3 " # PHP stack frame
- "#4 " # PHP stack frame
- "#5 " # PHP stack frame
- " thrown in " # PHP exception location
httpCode
Configure the HTTP Status Code Extractor to enrich TenXObjects with an extracted HTTP status code.
Below is the default configuration from: httpCode/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImh0dHBDb2RlIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJmaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSFRUUCBjb2RlIHRhcmdldCBmaWVsZCBuYW1lXG5cblNwZWNpZnkgdGhlIGZpZWxkIG5hbWUgdG8gYXNzaWduIHdpdGggdGhlIGluZmVycmVkIEhUVFAgY29kZSAoRGVmYXVsdDogaHR0cENvZGUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJodHRwQ29kZSIKICAgICAgICB9LAogICAgICAgICJwcmVjbHVkZXJzQmVmb3JlIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlByZWNlZGluZyBjaGFyYWN0ZXJzIGZvciBleGNsdWRpbmcgSFRUUCBjb2RlIGNhbmRpZGF0ZXNcblxuQXJyYXkgb2YgY2hhcmFjdGVycyBvciBwYXR0ZXJucyB0aGF0LCB3aGVuIGFwcGVhcmluZyBpbW1lZGlhdGVseSBiZWZvcmUgYSBjYW5kaWRhdGUgSFRUUCBzdGF0dXMgY29kZSBpbiB0b2tlbml6ZWQgbG9ncywgaW5kaWNhdGUgaXQgaXMgbm90IGEgdmFsaWQgSFRUUCBjb2RlLiBVc2VkIHRvIHByZWNsdWRlIGZhbHNlIHBvc2l0aXZlcyBsaWtlIG5lZ2F0aXZlIG51bWJlcnMgKCctMjAwJyksIGZsb2F0cyAoJy4yMDAnKSwgb3IgdmFyaWFibGVzICgnXzIwMCcpLiBFbnRyaWVzIGFyZSBzaW5nbGUgY2hhcmFjdGVycyBvciBzaG9ydCBzdHJpbmdzIGZvciBPKDEpIGxvb2t1cCBlZmZpY2llbmN5IGluIHRoZSBoZXVyaXN0aWMuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicHJlY2x1ZGVyc0FmdGVyIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlN1YnNlcXVlbnQgY2hhcmFjdGVycyBmb3IgZXhjbHVkaW5nIEhUVFAgY29kZSBjYW5kaWRhdGVzXG5cbkFycmF5IG9mIGNoYXJhY3RlcnMgb3IgcGF0dGVybnMgdGhhdCwgd2hlbiBhcHBlYXJpbmcgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjYW5kaWRhdGUgSFRUUCBzdGF0dXMgY29kZSBpbiB0b2tlbml6ZWQgbG9ncywgaW5kaWNhdGUgaXQgaXMgbm90IGEgdmFsaWQgSFRUUCBjb2RlLiBVc2VkIHRvIHByZWNsdWRlIGZhbHNlIHBvc2l0aXZlcyBsaWtlIHBlcmNlbnRhZ2VzICgnMjAwJScpLCBmbG9hdHMgKCcyMDAuJyksIG9yIGV4cHJlc3Npb25zICgnMjAwKycpLiBFbnRyaWVzIGFyZSBzaW5nbGUgY2hhcmFjdGVycyBvciBzaG9ydCBzdHJpbmdzIGZvciBPKDEpIGxvb2t1cCBlZmZpY2llbmN5IGluIHRoZSBoZXVyaXN0aWMuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAidmFsaWRWYWx1ZXMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3RhbmRhcmQgSFRUUCBzdGF0dXMgY29kZXNcblxuQXJyYXkgb2YgYWxsIHN0YW5kYXJkIEhUVFAgc3RhdHVzIGNvZGVzIGFzIGRlZmluZWQgYnkgdGhlIElBTkEgSFRUUCBTdGF0dXMgQ29kZSBSZWdpc3RyeSBhbmQgcmVsZXZhbnQgUkZDcyAoZS5nLiwgUkZDIDkxMTAsIFJGQyA2NTg1LCBSRkMgNzIzMS03MjM1LCBSRkMgNzUzOCwgUkZDIDc3MjUsIFJGQyA4Mjk3LCBSRkMgOTExMSkuIFRoaXMgYXJyYXlzIHZhbGlkYXRlcyBwb3RlbnRpYWwgSFRUUCBzdGF0dXMgY29kZXMgaW4gbG9nIGV2ZW50cywgZW5zdXJpbmcgb25seSByZWNvZ25pemVkIGNvZGVzIGFyZSBleHRyYWN0ZWQuIEVhY2ggZW50cnkgaW5jbHVkZXMgdGhlIG51bWVyaWMgY29kZSBmb2xsb3dlZCBieSBhIGNvbW1lbnQgZGVzY3JpYmluZyBpdHMgbWVhbmluZyBhbmQgcHVycG9zZS4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJrZXl3b3JkcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBcnJheSBvZiBrZXl3b3JkcyBpbmRpY2F0aW5nIEhUVFAtcmVsYXRlZCBjb250ZXh0IGluIGxvZyBldmVudHNcblxuVGhpcyBsaXN0IGZpbHRlcnMgbG9ncyBsaWtlbHkgY29udGFpbmluZyBIVFRQIHN0YXR1cyBjb2RlcywgcmVkdWNpbmcgZmFsc2UgcG9zaXRpdmVzLiBLZXl3b3JkcyBjb3ZlciBIVFRQIG1ldGhvZHMsIGNvbW1vbiBsb2cgZmllbGRzLCBhbmQgZm9ybWF0LXNwZWNpZmljIHRlcm1zIGZyb20gc291cmNlcyBsaWtlIEFwYWNoZSwgTmdpbngsIEhBUHJveHksIFNxdWlkLCBJSVMsIFNwcmluZyBCb290LiIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAiZmllbGQiCiAgICAgIF0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' HTTP code classifier configuration
# The HTTP code classifier enriches TenXObjects with an extracted HTTP numeric response code (e.g., 404) field.
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/initialize/httpCode
# =============================== GeoIP Options ===============================
httpCode:
# 'field' specifies the name of the field in which to assign an extracted HTTP status code, if found
field: http_code
# 'precludersBefore' specifies an array of characters or patterns that, when appearing immediately before a candidate HTTP status code in tokenized logs, indicate it is not a valid HTTP code.
# Used to preclude false positives like negative numbers ('-200'), floats ('.200'), or variables ('_200').
# Entries are single characters or short strings for O(1) lookup efficiency in the heuristic.
precludersBefore: ['+', '$', '#', '@', '(', '[', '~', '-', '.', ':']
# 'precludersAfter' specifies an array of characters or patterns that, when appearing immediately after a candidate HTTP status code in tokenized logs, indicate it is not a valid HTTP code.
# Used to preclude false positives like percentages ('200%'), floats ('200.'), or expressions ('200+').
# Entries are single characters or short strings for O(1) lookup efficiency in the heuristic.
precludersAfter: ['%', ')', ']', '=', '!', '?', '+', '-', '.']
# 'keywords' specifies an array of keywords indicating HTTP-related context in log events.
# Used to filter logs likely containing HTTP status codes, reducing false positives.
# Keywords cover HTTP methods, common log fields, and format-specific terms from sources like Apache, Nginx, HAProxy, Squid, IIS, Spring Boot.
keywords:
- HTTP/ # Indicates HTTP protocol version in request lines (e.g., "GET / HTTP/1.1").
- GET # HTTP method for retrieving resources.
- POST # HTTP method for submitting data.
- PUT # HTTP method for updating resources.
- DELETE # HTTP method for deleting resources.
- HEAD # HTTP method for retrieving headers only.
- OPTIONS # HTTP method for describing communication options.
- TRACE # HTTP method for diagnostic purposes.
- PATCH # HTTP method for partial updates.
- request # Common in log fields referring to HTTP requests (e.g., "requestMethod").
- Request # Title case variant for HTTP requests
- response # Common in log fields referring to HTTP responses (e.g., "responseSize").
- Response # Title case variant for HTTP responses
- status # Common key for HTTP status codes (e.g., "status":200).
- Status # Title case variant for HTTP status
- code # Shorthand for status code (e.g., "code":404).
- Code # Title case variant for status code
- upstream_status # Nginx-specific for backend status codes.
- Upstream_status # Title case variant for Nginx backend status
- Upstream_Status # Title case variant for Nginx backend status
- http_status # JSON key for HTTP status (e.g., "http_status":500).
- Http_status # Title case variant for JSON key for HTTP status
- Http_Status # Title case variant for JSON key for HTTP status
- status_code # Alternative key for status codes (e.g., "status_code":429).
- statusCode # Camel case variant for status codes (e.g., "statusCode":200)
- Completed # Spring Boot DispatcherServlet log indicator (e.g., "Completed 200 OK").
- access # Indicates access logs (e.g., Apache access log).
- Access # Title case variant for access logs
- error # Indicates error logs containing HTTP errors.
- Error # Title case variant for error logs
- method # Refers to HTTP request method (e.g., "method":"GET").
- Method # Title case variant for HTTP method
- path # Refers to request path or URI (e.g., "path":"/api").
- Path # Title case variant for request path
- url # Refers to request URL (e.g., "url":"http://example.com").
- Url # Title case variant for request URL
- URL # Title case variant for request URL
- referrer # HTTP referrer header field.
- referrer # Title case variant for referrer header field.
- Referer # Alternative spelling for HTTP referrer
- Referer # Title case variant for alternative spelling
- user-agent # HTTP user-agent header field.
- User-agent # Title case variant for user-agent
- User-Agent # Title case variant for user-agent
- latency # Common in logs for request/response time (e.g., HAProxy, ELB).
- Latency # Title case variant for latency
- frontend # HAProxy term for incoming connections.
- Frontend # Title case variant for HAProxy frontend
- backend # HAProxy term for upstream servers.
- Backend # Title case variant for HAProxy backend
- TCP_MISS # Squid hierarchy code prefix (e.g., "TCP_MISS/200").
- W3SVC # IIS log prefix (e.g., "W3SVC1").
- DispatcherServlet # Spring Boot servlet class for HTTP handling.
# 'validValues' specifies an array of all standard HTTP status codes as defined by the IANA HTTP Status Code Registry and relevant RFCs (e.g., RFC 9110, RFC 6585, RFC 7231-7235, RFC 7538, RFC 7725, RFC 8297, RFC 9111).
# Used to validate potential HTTP status codes in log events, ensuring only recognized codes are extracted.
# Each entry includes the numeric code followed by a comment describing its meaning and purpose.
validValues:
- '200' # OK: Standard response for successful HTTP requests.
- '304' # Not Modified: Resource has not been modified since last requested.
- '404' # Not Found: Server cannot find the requested resource.
- '301' # Moved Permanently: Resource has been moved permanently to a new URI.
- '302' # Found: Resource temporarily located at a different URI.
- '403' # Forbidden: Client does not have access rights to the content.
- '400' # Bad Request: Server cannot process due to client error.
- '500' # Internal Server Error: Generic server error.
- '206' # Partial Content: Server is delivering only part of the resource due to a range header.
- '503' # Service Unavailable: Server temporarily unable to handle request.
- '401' # Unauthorized: Authentication required and has failed or not provided.
- '204' # No Content: Server processed request but no content is returned.
- '502' # Bad Gateway: Server received an invalid response from upstream.
- '201' # Created: Request has been fulfilled, resulting in new resource creation.
- '429' # Too Many Requests: Client has sent too many requests in a given time.
- '308' # Permanent Redirect: Resource permanently at another URI, method unchanged.
- '307' # Temporary Redirect: Resource temporarily at another URI, method unchanged.
- '303' # See Other: Response can be found under a different URI using GET.
- '405' # Method Not Allowed: Request method is not supported for the resource.
- '406' # Not Acceptable: Server cannot produce a response matching client’s Accept headers.
- '408' # Request Timeout: Server timed out waiting for the request.
- '409' # Conflict: Request conflicts with current state of the resource.
- '410' # Gone: Resource is permanently unavailable.
- '413' # Content Too Large: Request entity is larger than server limits.
- '414' # URI Too Long: Request-URI is longer than the server can handle.
- '415' # Unsupported Media Type: Media format of the requested data is not supported.
- '416' # Range Not Satisfiable: Requested range cannot be fulfilled.
- '422' # Unprocessable Content: Request is well-formed but semantically incorrect.
- '504' # Gateway Timeout: Server, as gateway, did not get timely upstream response.
- '505' # HTTP Version Not Supported: Server does not support the HTTP version.
- '100' # Continue: Client should continue with request.
- '101' # Switching Protocols: Server is switching protocols as requested.
- '202' # Accepted: Request accepted for processing, but processing is not complete.
- '203' # Non-Authoritative Information: Server is a transforming proxy with non-authoritative metadata.
- '205' # Reset Content: Client should reset the document view.
- '300' # Multiple Choices: Indicates multiple options for the resource.
- '411' # Length Required: Content-Length header is required but not provided.
- '412' # Precondition Failed: Server does not meet one of the preconditions.
- '417' # Expectation Failed: Server cannot meet Expect header requirements.
- '421' # Misdirected Request: Request sent to server unable to produce a response.
- '423' # Locked: Resource is locked (WebDAV).
- '424' # Failed Dependency: Request failed due to failure of a previous request.
- '425' # Too Early: Server unwilling to risk processing a request that might be replayed.
- '426' # Upgrade Required: Client should switch to a different protocol.
- '428' # Precondition Required: Server requires conditional request headers.
- '431' # Request Header Fields Too Large: Headers exceed server limits.
- '451' # Unavailable For Legal Reasons: Resource access blocked for legal reasons.
- '501' # Not Implemented: Server does not support the requested functionality.
- '506' # Variant Also Negotiates: Server configuration error in content negotiation.
- '507' # Insufficient Storage: Server cannot store the representation (WebDAV).
- '508' # Loop Detected: Server detected an infinite loop in request processing.
- '510' # Not Extended: Further extensions required for request fulfillment.
- '511' # Network Authentication Required: Client needs to authenticate for network access.
- '102' # Processing: Server has received and is processing the request.
- '103' # Early Hints: Used to return some response headers before final HTTP message.
- '207' # Multi-Status: Conveys information about multiple resources in WebDAV.
- '208' # Already Reported: Used inside a DAV binding to avoid enumerating bindings repeatedly.
- '226' # IM Used: Server has fulfilled a request for the resource using instance-manipulations.
- '305' # Use Proxy: Resource is available only through a proxy.
- '306' # (Unused): Previously used for Switch Proxy, now reserved.
- '402' # Payment Required: Reserved for future use, e.g., digital payments.
- '407' # Proxy Authentication Required: Client must authenticate with proxy.
- '418' # (Unused): Previously “I’m a teapot” (RFC 2324, joke).
lookup
Configure the File Lookup to enrich TenXObjects with lookup table values.
Below is the default configuration from: lookup/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImxvb2t1cCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiZmlsZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVFNWL0NTViBmaWxlIHRvIGxvYWRcblxuVGhlIHRhcmdldCAudHN2Ly5jc3YgbG9va3VwIGZpbGUgdG8gbG9hZCIKICAgICAgICB9LAogICAgICAgICJrZXlGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGVuWE9iamVjdCBmaWVsZCBuYW1lIHRvIHVzZSBhcyBsb29rdXAga2V5XG5cblNwZWNpZmllcyBhIGZpZWxkIG5hbWUgd2hvc2UgdmFsdWUgdG8gZXh0cmFjdCBmcm9tIGEgdGFyZ2V0IFRlblhPYmplY3QgdG8gdXNlIGFzIHRoZSBsb29rdXAga2V5LCB0aGF0IGlzIHRoZSB2YWx1ZSB1c2VkIHRvIHNlYXJjaCBmb3IgYSBtYXRjaGluZyB2YWx1ZSB3aXRoaW4gdGhlIGxvb2t1cCBmaWxlLiIKICAgICAgICB9LAogICAgICAgICJ2YWx1ZUZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUZW5YT2JqZWN0IGZpZWxkIG5hbWUgdG8gdXNlIGFzIHRoZSBsb29rdXAgdmFsdWVcblxuU3BlY2lmaWVzIHRoZSBmaWVsZCBuYW1lIHdpdGggdGhlIHRhcmdldCBUZW5YT2JqZWN0IHRvIHNldCB3aXRoIHRoZSByZXN1bHQgbG9va3VwIHZhbHVlIGFjcXVpcmVkIGJ5IHNlYXJjaGluZyB0aGUgdGFibGUgZm9yIHRoZSB2YWx1ZSBvZiBbbG9va3VwS2V5RmllbGRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2luaXRpYWxpemUvbG9va3VwLyNsb29rdXBrZXlmaWVsZCkuIgogICAgICAgIH0sCiAgICAgICAgInZhbHVlQ29sdW1uIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIGxvb2t1cCB2YWx1ZSBjb2x1bW5cblxuU3BlY2lmaWVzIGEgY29sdW1uIGluIHRoZSBbbG9va3VwRmlsZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9sb29rdXAvI2xvb2t1cGZpbGUpIHdob3NlIHZhbHVlIHRvIGFzc2lnbiBmcm9tIHRoZSBmaXJzdCBjb2x1bW4gaW4gdGhlIHRhYmxlIChpLmUuLCB0aGUga2V5IGNvbHVtbikgaW50byBbbG9va3VwVmFsdWVGaWVsZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9sb29rdXAvI2xvb2t1cHZhbHVlZmllbGQpIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAgdGhlIFtsb29rdXBLZXlGaWVsZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9sb29rdXAvI2xvb2t1cGtleWZpZWxkKSBmaWVsZCB2YWx1ZS4gKERlZmF1bHQ6IHNlY29uZCBjb2x1bW4gaW4gdGFibGUgKGZpcnN0IGNvbHVtbiBpcyBhc3N1bWVkIGFzIHRoZSBrZXkpKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAic2Vjb25kIGNvbHVtbiBpbiB0YWJsZSAoZmlyc3QgY29sdW1uIGlzIGFzc3VtZWQgYXMgdGhlIGtleSkiCiAgICAgICAgfQogICAgICB9LAogICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICJmaWxlIiwKICAgICAgICAia2V5RmllbGQiLAogICAgICAgICJ2YWx1ZUZpZWxkIgogICAgICBdCiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' lookup file configuration
# Configuration text lookup to enrich TenXObjects
# To learn more see https://doc.log10x.com/run/initialize/lookup/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/initialize/lookup
# ============================== Lookup Options ===============================
lookup:
# 'file' specifies the .csv/.tsv lookup table file
file: $=path("pipelines/run/initialize/lookup/http.csv")
# 'keyField' specifies the field whose value is query lookup key.
# The calculated code field below captures the penultimate HTTP code value from a web log event.
# For example, 200 for: Mar 10 12:34:56 webserver nginx: 192.168.1.10 - - [10/Mar/2025:12:34:56 +0000] "GET /index.html HTTP/1.1" 200 1024
keyField: $=yield TenXEnv.get("httpCodeField")
# 'valueField' specifies the name of the result field to assign to the lookup table value
valueField: http_message
k8s
Configure the k8s Context Extractor to enrich TenXObjects with k8s pod and container information.
Below is the default configuration from: k8s/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgIms4cyIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiZXh0cmFjdG9yTmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBleHRyYWN0b3IgdG8gdXNlIGZvciBrOHMgY29udGV4dCBleHRyYWN0aW9uXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFtleHRyYWN0b3JdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2V4dHJhY3QvKSB0byB1c2UgZm9yIGs4cyBjb250ZXh0IGV4dHJhY3Rpb24uIFRvIGxlYXJuIG1vcmUgc2VlIFtrOHMgZXh0cmFjdG9yc10oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvbW9kdWxlcy9ibG9iL21haW4vcGlwZWxpbmVzL3J1bi9tb2R1bGVzL2luaXRpYWxpemUvazhzL3NldHRpbmdzLnlhbWwpIChEZWZhdWx0OiBmbHVlbnRLOHMpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJmbHVlbnRLOHMiCiAgICAgICAgfSwKICAgICAgICAibmFtZXNwYWNlTmFtZUZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJLOHMgbmFtZXNwYWNlIHRhcmdldCBmaWVsZCBuYW1lXG5cblNwZWNpZnkgdGhlIGZpZWxkIG5hbWUgdG8gYXNzaWduIHdpdGggdGhlIGV4dHJhY3RlZCBrOHMgW25hbWVzcGFjZV0oaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvb3ZlcnZpZXcvd29ya2luZy13aXRoLW9iamVjdHMvbmFtZXNwYWNlcy8pIChEZWZhdWx0OiBuYW1lc3BhY2UpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJuYW1lc3BhY2UiCiAgICAgICAgfSwKICAgICAgICAiY29udGFpbmVyTmFtZUZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJLOHMgY29udGFpbmVyIG5hbWUgdGFyZ2V0IGZpZWxkIG5hbWVcblxuU3BlY2lmeSB0aGUgZmllbGQgbmFtZSB0byBhc3NpZ24gd2l0aCB0aGUgZXh0cmFjdGVkIGs4cyBbY29udGFpbmVyIG5hbWVdKGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbnRhaW5lcnMvKSAoRGVmYXVsdDogY29udGFpbmVyKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiY29udGFpbmVyIgogICAgICAgIH0sCiAgICAgICAgInBvZE5hbWVGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSzhzIHBvZCBuYW1lIHRhcmdldCBmaWVsZCBuYW1lXG5cblNwZWNpZnkgdGhlIGZpZWxkIG5hbWUgdG8gYXNzaWduIHdpdGggdGhlIGV4dHJhY3RlZCBrOHMgW3BvZCBuYW1lXShodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy93b3JrbG9hZHMvcG9kcy8pIChEZWZhdWx0OiBwb2QpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJwb2QiCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' k8s lookup configuration
# Configure a k8s field extractors to enrich TenXObjects
# To learn more see https://doc.log10x.com/run/initialize/k8s/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/initialize/k8s
# ============================== Symbol Options ===============================
k8s:
# 'extractorName' specifies which extractor (e.g., fluentK8s/filebeatK8s) to use for k8s metadata extraction
extractorName: fluentK8s # extract k8s context using Fluent schema
# 'namespaceNameField' specifies the name of the field in which to assign an extracted k8 namespace name status code, if found
namespaceNameField: k8s_namespace
# 'containerNameField' specifies the name of the field in which to assign an extracted k8 container name status code, if found
containerNameField: k8s_container
# 'podNameField' specifies the name of the field in which to assign an extracted k8 pod name status code, if found
podNameField: k8s_pod
geoIP
Configure the GeoIP lookup to geo-reference TenXObjects via their ipAddress value.
Below is the default configuration from: geoIP/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImdlb0lQIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJmaWxlIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhNaW5kIEdlb0lQIGZpbGUgKC5tbWRiKVxuXG5UaGUgW01heE1pbmRdKGh0dHBzOi8vd3d3Lm1heG1pbmQuY29tL2VuL2dlb2lwMi1kYXRhYmFzZXMpIEdlb0lQIERCIGZpbGUgKC5tbWRiKSB0byBsb2FkLiBUbyBsZWFybiBtb3JlLCBzZWUgW2xvYWRHZW9JUERCXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWExvb2t1cC5sb2FkR2VvSVBEQikuIgogICAgICAgIH0sCiAgICAgICAgImNvbnRpbmVudEZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWVsZCBuYW1lIGZvciBjb250aW5lbnQgZ2VvLXJlZmVyZW5jZVxuXG5TcGVjaWZpZXMgdGhlIGZpZWxkIG5hbWUgdG8gc3RvcmUgdGhlIGNvbnRpbmVudCBnZW8tcmVmZXJlbmNlIGRhdGEgKGUuZy4sIFwibXlfY29udGluZW50XCIpLiBEZWZhdWx0cyB0byBcImNvbnRpbmVudFwiLiBTZXQgdG8gXCJcIiB0byBkaXNhYmxlIGNvbnRpbmVudCBlbnJpY2htZW50LiAoRGVmYXVsdDogY29udGluZW50KSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiY29udGluZW50IgogICAgICAgIH0sCiAgICAgICAgImNvdW50cnlGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSBmb3IgY291bnRyeSBnZW8tcmVmZXJlbmNlXG5cblNwZWNpZmllcyB0aGUgZmllbGQgbmFtZSB0byBzdG9yZSB0aGUgY291bnRyeSBnZW8tcmVmZXJlbmNlIGRhdGEgKGUuZy4sIFwibXlfY291bnRyeVwiKS4gRGVmYXVsdHMgdG8gXCJjb3VudHJ5XCIuIFNldCB0byBcIlwiIHRvIGRpc2FibGUgY291bnRyeSBlbnJpY2htZW50LiAoRGVmYXVsdDogY291bnRyeSkiLAogICAgICAgICAgImRlZmF1bHQiIDogImNvdW50cnkiCiAgICAgICAgfSwKICAgICAgICAic3ViZGl2aXNpb25GaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSBmb3Igc3ViZGl2aXNpb24gZ2VvLXJlZmVyZW5jZVxuXG5TcGVjaWZpZXMgdGhlIGZpZWxkIG5hbWUgdG8gc3RvcmUgdGhlIHN1YmRpdmlzaW9uIChzdGF0ZS9yZWdpb24pIGdlby1yZWZlcmVuY2UgZGF0YSAoZS5nLiwgXCJteV9yZWdpb25cIikuIERlZmF1bHRzIHRvIFwic3ViZGl2aXNpb25cIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBzdWJkaXZpc2lvbiBlbnJpY2htZW50LiAoRGVmYXVsdDogc3ViZGl2aXNpb24pIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJzdWJkaXZpc2lvbiIKICAgICAgICB9LAogICAgICAgICJjaXR5RmllbGQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkZpZWxkIG5hbWUgZm9yIGNpdHkgZ2VvLXJlZmVyZW5jZVxuXG5TcGVjaWZpZXMgdGhlIGZpZWxkIG5hbWUgdG8gc3RvcmUgdGhlIGNpdHkgZ2VvLXJlZmVyZW5jZSBkYXRhIChlLmcuLCBcIm15X2NpdHlcIikuIERlZmF1bHRzIHRvIFwiY2l0eVwiLiBTZXQgdG8gXCJcIiB0byBkaXNhYmxlIGNpdHkgZW5yaWNobWVudC4gKERlZmF1bHQ6IGNpdHkpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJjaXR5IgogICAgICAgIH0sCiAgICAgICAgInBvc3RhbEZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWVsZCBuYW1lIGZvciBwb3N0YWwgY29kZSBnZW8tcmVmZXJlbmNlXG5cblNwZWNpZmllcyB0aGUgZmllbGQgbmFtZSB0byBzdG9yZSB0aGUgcG9zdGFsIGNvZGUgZ2VvLXJlZmVyZW5jZSBkYXRhIChlLmcuLCBcIm15X3Bvc3RhbFwiKS4gRGVmYXVsdHMgdG8gXCJwb3N0YWxcIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBwb3N0YWwgY29kZSBlbnJpY2htZW50LiAoRGVmYXVsdDogcG9zdGFsKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAicG9zdGFsIgogICAgICAgIH0sCiAgICAgICAgImxhdGl0dWRlRmllbGQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkZpZWxkIG5hbWUgZm9yIGxhdGl0dWRlIGdlby1yZWZlcmVuY2VcblxuU3BlY2lmaWVzIHRoZSBmaWVsZCBuYW1lIHRvIHN0b3JlIHRoZSBsYXRpdHVkZSBnZW8tcmVmZXJlbmNlIGRhdGEgKGUuZy4sIFwibXlfbGF0aXR1ZGVcIikuIERlZmF1bHRzIHRvIFwibGF0aXR1ZGVcIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBsYXRpdHVkZSBlbnJpY2htZW50LiAoRGVmYXVsdDogbGF0aXR1ZGUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJsYXRpdHVkZSIKICAgICAgICB9LAogICAgICAgICJsb25naXR1ZGVGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSBmb3IgbG9uZ2l0dWRlIGdlby1yZWZlcmVuY2VcblxuU3BlY2lmaWVzIHRoZSBmaWVsZCBuYW1lIHRvIHN0b3JlIHRoZSBsb25naXR1ZGUgZ2VvLXJlZmVyZW5jZSBkYXRhIChlLmcuLCBcIm15X2xvbmdpdHVkZVwiKS4gRGVmYXVsdHMgdG8gXCJsb25naXR1ZGVcIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBsb25naXR1ZGUgZW5yaWNobWVudC4gKERlZmF1bHQ6IGxvbmdpdHVkZSkiLAogICAgICAgICAgImRlZmF1bHQiIDogImxvbmdpdHVkZSIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgImZpbGUiCiAgICAgIF0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' GeoIP lookup configuration
# The GeoIP lookup geo-references TenXObjects based on their ipAddress field value.
# To learn more see https://doc.log10x.com/api/js/#TenXObject+ipAddress
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/initialize/geoIP
# =============================== GeoIP Options ===============================
geoIP:
# 'file' specifies the MaxMind GeoIP DB (.mmdb) file to load.
# To learn more see https://doc.log10x.com/api/js/#TenXLookup.loadGeoIPDB
file: data/run/lookup/geo.mmdb
# 'countryField' specifies the field name for country geo-reference data.
# Defaults to "country". Set to "" to disable country enrichment.
countryField: country
# Uncomment the following fields to enable additional geo-reference data as needed:
# continentField: continent
# subdivisionField: subdivision
# cityField: city
# postalField: postal
# latitudeField: latitude
# longitudeField: longitude
Metric Outputs
Metric Outputs
Activate a Metric output to write aggregated TenXSummary instances to metric outputs (e.g., Prometheus, Datadog).
log10x
Configure log10x managed Prometheus outputs to publish TenXSummary metrics to the log10x Prometheus backend.
Below is the default configuration from: log10x/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImxvZzEweE1ldHJpY3MiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVuYWJsZSB0aGlzIG91dHB1dFxuXG5FbmFibGUgb3IgZGlzYWJsZSB0aGlzIG91dHB1dC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJuYW1lRmllbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBpZGVudGlmeWluZyB0aGUgbWV0cmljXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIHdob3NlIHZhbHVlIGlkZW50aWZpZXMgYSBtZXRyaWMgY291bnRlci4gRGVmYXVsdHMgdG8gdGhlIFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykgZmllbGQgd2hpY2ggaG9sZHMgdGhlIHZhbHVlKHMpIGJ5IHdoaWNoIFRlblhPYmplY3RzIGFyZSAgZ3JvdXBlZCBpbnRvIHRoZSBjdXJyZW50IFRlblhTdW1tYXJ5IGluc3RhbmNlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciBjb3VudGVyc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMi1jb3VudGVyKSAoRGVmYXVsdDogW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiY291bnRlckZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZXMgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkcyB1c2VkIHRvIGluY3JlbWVudCB0aGUgbWV0cmljIGNvdW50ZXIgdmFsdWVcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgYnkgd2hvc2UgdmFsdWUgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgVGVuWFN1bW1hcnkgZmllbGRzIHRvIHVzZSBhcyBtZXRyaWMgdGFnIHZhbHVlc1xuXG5EZWZpbmVzIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBuYW1lcyB0byB1c2UgYXMgYHRhZ2AgdmFsdWVzLiBUYWdzIGFyZSBkaW1lbnNpb25zIHRoYXQgZW5hYmxlIHNsaWNpbmcgYSBwYXJ0aWN1bGFyIG5hbWVkIG1ldHJpYyB0byBkcmlsbCBkb3duIHRvIHJlYXNvbiBhYm91dCBpdHMgdmFsdWUuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIHRhZ3NdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGROYW1lcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gdXNlIGZvciBUZW5YU3VtbWFyeSBmaWVsZHMuXG5cbkRlZmluZXMgdGhlIGEgbGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gZ2l2ZSBmaWVsZHMgd2hlbiByZXBvcnRpbmcgdGhlbS4gRm9ybWF0IGFzIGEgbGlzdCBvZiBuYW1lMSwgY3VzdG9tMSwgbmFtZTIsIGN1c3RvbTIuICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgY3VzdG9tIG5hbWUgb2YgJ015LUN1c3RvbS1GaWVsZCcgdG8gYW4gZXhpc3RpbmcgJ2ludHJpbnNpYy1maWVsZCc6IGBgYCB5YW1sIGxvZzEweE1ldHJpY3M6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gYmUgd3JpdHRlbiB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gICBGb3IgZXhhbXBsZSwgdG8gb25seSBlbWl0IFRlblhTdW1tYXJpZXMgcHJvZHVjZWQgYnkgdGhlICdteU1ldHJpYycgYWdncmVnYXRvciwgc3BlY2lmeTogICAgICAgYGBgIHlhbWwgIGxvZzEweE1ldHJpY3M6ICAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgICAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkuIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=
# 🔟❎ 'run' 10x-hosted metrics backend output configuration
# Configuration 10x-hosted metrics backend counter outputs.
# To learn more see https://doc.log10x.com/run/output/metric/log10x/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/output/metric/log10x
# =========================== Log10x Metrics output ===========================
# Define multiple log10x metric outputs below
log10xMetrics:
# ---------------------------- Counter Options ----------------------------
# 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
# The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
# To learn more see https://doc.log10x.com/run/aggregate
- nameField: inputName
# 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
# To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
counterFields:
- summaryVolume
- summaryBytes
- summaryTotals
# 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
# Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
tagFields:
- $=yield TenXEnv.get("enrichmentFields")
# 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
# Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
tagFieldNames:
- $=yield TenXEnv.get("metricFieldNames")
# 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
# To learn more see https://doc.log10x.com/run/output/regulate/#filter-expressions
filter: isSummary
scrape
Configure Prometheus scrape metrics outputs to publish TenXSummary metrics to Prometheus.
Below is the default configuration from: scrape/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInByb21ldGhldXMiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVuYWJsZSB0aGlzIG91dHB1dFxuXG5FbmFibGUgb3IgZGlzYWJsZSB0aGlzIG91dHB1dC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJwb3J0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTY3JhcGVyIHBvcnQgbnVtYmVyXG5cblBvcnQgbnVtYmVyIHRvIGxpc3RlbiB0byB0aGUgUHJvbWV0aGV1cyBzY3JhcGVyIG9uIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgICB9LAogICAgICAgICAgIm5hbWVGaWVsZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGlkZW50aWZ5aW5nIHRoZSBtZXRyaWNcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgd2hvc2UgdmFsdWUgaWRlbnRpZmllcyBhIG1ldHJpYyBjb3VudGVyLiBEZWZhdWx0cyB0byB0aGUgW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSBmaWVsZCB3aGljaCBob2xkcyB0aGUgdmFsdWUocykgYnkgd2hpY2ggVGVuWE9iamVjdHMgYXJlIGdyb3VwZWQgaW50byB0aGUgY3VycmVudCBUZW5YU3VtbWFyeSBpbnN0YW5jZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgY291bnRlcnNdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzItY291bnRlcikgKERlZmF1bHQ6IFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIltzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykiCiAgICAgICAgICB9LAogICAgICAgICAgImNvdW50ZXJGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWVzIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZHMgdXNlZCB0byBpbmNyZW1lbnQgdGhlIG1ldHJpYyBjb3VudGVyIHZhbHVlXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGJ5IHdob3NlIHZhbHVlIHRvIGluY3JlbWVudCB0aGUgY291bnRlci4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhTdW1tYXJ5IGZpZWxkcyB0byB1c2UgYXMgbWV0cmljIHRhZyB2YWx1ZXNcblxuRGVmaW5lcyB0aGUgVGVuWFN1bW1hcnkgZmllbGQgbmFtZXMgdG8gdXNlIGFzIGB0YWdgIHZhbHVlcy4gVGFncyBhcmUgZGltZW5zaW9ucyB0aGF0IGVuYWJsZSBzbGljaW5nIGEgcGFydGljdWxhciBuYW1lZCBtZXRyaWMgdG8gZHJpbGwgZG93biB0byByZWFzb24gYWJvdXQgaXRzIHZhbHVlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciB0YWdzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMxLXRhZ3MpIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkTmFtZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIHVzZSBmb3IgVGVuWFN1bW1hcnkgZmllbGRzLlxuXG5EZWZpbmVzIHRoZSBhIGxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIGdpdmUgZmllbGRzIHdoZW4gcmVwb3J0aW5nIHRoZW0uIEZvcm1hdCBhcyBhIGxpc3Qgb2YgbmFtZTEsIGN1c3RvbTEsIG5hbWUyLCBjdXN0b20yLiAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIGN1c3RvbSBuYW1lIG9mICdNeS1DdXN0b20tRmllbGQnIHRvIGFuIGV4aXN0aW5nICdpbnRyaW5zaWMtZmllbGQnOiBgYGAgeWFtbCBwcm9tZXRoZXVzOiAgIHRhZ0ZpZWxkTmFtZXM6ICAgICAtIGludHJpbnNpYy1maWVsZCAgICAgLSBNeS1DdXN0b20tRmllbGQiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyAndHJ1dGh5JyBhZ2FpbnN0IHRvIGJlIHdyaXR0ZW4gdG8gdGhpcyBvdXRwdXRcblxuU3BlY2lmaWVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgdG8gd3JpdGUgaXRzIGluc3RhbmNlL3RlbXBsYXRlIGZpZWxkIHZhbHVlcyB0byB0aGUgdGFyZ2V0IGNvdW50ZXIuICBGb3IgZXhhbXBsZSwgdG8gb25seSBlbWl0IFRlblhTdW1tYXJpZXMgcHJvZHVjZWQgYnkgdGhlICdteU1ldHJpYycgYWdncmVnYXRvciwgc3BlY2lmeTogYGBgIHlhbWwgcHJvbWV0aGV1czogICBmaWx0ZXI6IHRoaXMuaW5wdXROYW1lID09IFwibXlNZXRyaWNcIiBgYGAgIFRvIGxlYXJuIG1vcmUgc2VlIFtpbnB1dE5hbWVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtpbnB1dE5hbWUpIgogICAgICAgICAgfSwKICAgICAgICAgICJtYXhDYXJkaW5hbGl0eSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJwb3J0IgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=
# 🔟❎ 'run' Prometheus metric output configuration
# Configure Prometheus metric counter outputs.
# To learn more see https://doc.log10x.com/run/output/metric/prometheus/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/output/metric/prometheus/scrape
# ============================== Prometheus Outputs ===========================
# Define multiple Prometheus metric outputs below
prometheus:
# --------------------------- Connection Options --------------------------
# 'port' sets the port number to listen to the Prometheus scraper on
- port: 9100
# ---------------------------- Counter Options ----------------------------
# 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
# The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
# To learn more see https://doc.log10x.com/run/aggregate
nameField: inputName
# 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
# To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
counterFields:
- summaryVolume
- summaryBytes
- summaryTotals
# 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
# Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
tagFields:
- $=yield TenXEnv.get("enrichmentFields")
# 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
# Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
tagFieldNames:
- $=yield TenXEnv.get("metricFieldNames")
# 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
# To learn more see https://doc.log10x.com/run/output/regulate/#filter-expressions
filter: isSummary
push-gateway
Configure Prometheus Push gateway metrics outputs to publish TenXSummary metrics to Prometheus via a Push gateway.
Below is the default configuration from: push-gateway/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInByb21ldGhldXNQRyIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJlbmFibGVkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRW5hYmxlIHRoaXMgb3V0cHV0XG5cbkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgb3V0cHV0LiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogdHJ1ZSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgImhvc3QiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJIb3N0IGFkZHJlc3Mgb2YgUHJvbWV0aGV1cyBwdXNoIGdhdGV3YXkgaW5zdGFuY2UgdG8gcHVzaCBkYXRhIHRvXG5cbkRlZmluZXMgdGhlIGhvc3QgYWRkcmVzcyBvZiB0aGUgcHVzaCBnYXRld2F5IHVzZWQgZm9yIHB1c2hpbmcgdGhlIG1ldHJpY3MuIgogICAgICAgICAgfSwKICAgICAgICAgICJqb2IiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIGpvYiBhc3NpZ25lZCB0byBwdXNoZWQgbWV0cmljc1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBqb2IgdGhhdCB0byBhc3NpZ24gdG8gb3V0cHV0IG1ldHJpY3MuIgogICAgICAgICAgfSwKICAgICAgICAgICJzdGVwIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byBvdXRwdXRcblxuU2V0cyB0aGUgaW50ZXJ2YWwgYXQgd2hpY2ggdG8gcHVibGlzaCBtZXRyaWNzIHRvIHRoZSB0aW1lLXNlcmllcyBkZXN0aW5hdGlvbiAoZS5nLiwgJzFtJykuIFRvIGxlYXJuIG1vcmUgc2VlIFtyYXRlLWFnZ3JlZ2F0aW9uXShodHRwczovL21pY3JvbWV0ZXIuaW8vZG9jcy9jb25jZXB0cyNyYXRlLWFnZ3JlZ2F0aW9uKSAoRGVmYXVsdDogMW1pbikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiMW1pbiIKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgaWRlbnRpZnlpbmcgdGhlIG1ldHJpY1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCB3aG9zZSB2YWx1ZSBpZGVudGlmaWVzIGEgbWV0cmljIGNvdW50ZXIuIERlZmF1bHRzIHRvIHRoZSBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGZpZWxkIHdoaWNoIGhvbGRzIHRoZSB2YWx1ZShzKSBieSB3aGljaCBUZW5YT2JqZWN0cyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBjdXJyZW50IFRlblhTdW1tYXJ5IGluc3RhbmNlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciBjb3VudGVyc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMi1jb3VudGVyKSAoRGVmYXVsdDogW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiY291bnRlckZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZXMgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkcyB1c2VkIHRvIGluY3JlbWVudCB0aGUgbWV0cmljIGNvdW50ZXIgdmFsdWVcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgYnkgd2hvc2UgdmFsdWUgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgVGVuWFN1bW1hcnkgZmllbGRzIHRvIHVzZSBhcyBtZXRyaWMgdGFnIHZhbHVlc1xuXG5EZWZpbmVzIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBuYW1lcyB0byB1c2UgYXMgYHRhZ2AgdmFsdWVzLiBUYWdzIGFyZSBkaW1lbnNpb25zIHRoYXQgZW5hYmxlIHNsaWNpbmcgYSBwYXJ0aWN1bGFyIG5hbWVkIG1ldHJpYyB0byBkcmlsbCBkb3duIHRvIHJlYXNvbiBhYm91dCBpdHMgdmFsdWUuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIHRhZ3NdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGROYW1lcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gdXNlIGZvciBUZW5YU3VtbWFyeSBmaWVsZHMuXG5cbkRlZmluZXMgdGhlIGEgbGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gZ2l2ZSBmaWVsZHMgd2hlbiByZXBvcnRpbmcgdGhlbS4gRm9ybWF0IGFzIGEgbGlzdCBvZiBuYW1lMSwgY3VzdG9tMSwgbmFtZTIsIGN1c3RvbTIuICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgY3VzdG9tIG5hbWUgb2YgJ015LUN1c3RvbS1GaWVsZCcgdG8gYW4gZXhpc3RpbmcgJ2ludHJpbnNpYy1maWVsZCc6IGBgYCB5YW1sIHByb21ldGhldXNQRzogICB0YWdGaWVsZE5hbWVzOiAgICAgLSBpbnRyaW5zaWMtZmllbGQgICAgIC0gTXktQ3VzdG9tLUZpZWxkIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImZpbHRlciIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkEgSmF2YVNjcmlwdCBleHByZXNzaW9uIGFuIFRlblhTdW1tYXJ5IG11c3QgZXZhbHVhdGUgYXMgJ3RydXRoeScgYWdhaW5zdCB0byBiZSB3cml0dGVuIHRvIHRoaXMgb3V0cHV0XG5cblNwZWNpZmllcyBhIEphdmFTY3JpcHQgZXhwcmVzc2lvbiB0aGF0IGFuIFRlblhTdW1tYXJ5IG11c3QgZXZhbHVhdGUgYXMgdHJ1dGh5IHRvIHdyaXRlIGl0cyBpbnN0YW5jZS90ZW1wbGF0ZSBmaWVsZCB2YWx1ZXMgdG8gdGhlIHRhcmdldCBjb3VudGVyLiAgRm9yIGV4YW1wbGUsIHRvIG9ubHkgZW1pdCBUZW5YU3VtbWFyaWVzIHByb2R1Y2VkIGJ5IHRoZSAnbXlNZXRyaWMnIGFnZ3JlZ2F0b3IsIHNwZWNpZnk6IGBgYCB5YW1sIHByb21ldGhldXNQRzogICBmaWx0ZXI6IHRoaXMuaW5wdXROYW1lID09IFwibXlNZXRyaWNcIiBgYGAgIFRvIGxlYXJuIG1vcmUgc2VlIFtpbnB1dE5hbWVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtpbnB1dE5hbWUpIgogICAgICAgICAgfSwKICAgICAgICAgICJtYXhDYXJkaW5hbGl0eSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJob3N0IiwKICAgICAgICAgICJqb2IiCiAgICAgICAgXQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' Prometheus push gateway metric output configuration
# Configures Prometheus push gateway metric counter outputs.
# To learn more see https://doc.log10x.com/run/output/metric/prometheus/push-gateway/
# For the Prometheus push gateway see: https://prometheus.io/docs/practices/pushing/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/output/metric/prometheus/push-gateway
# ========================== Prometheus PG Options ============================
# Define multiple Prometheus push gateway metric outputs below
prometheusPG:
# --------------------------- Connection Options --------------------------
# 'host' sets the address and port number of the push gateway
- host: localhost:9091 # (❗ REQUIRED)
# 'job' sets the logical job name reported to the push gateway
job: my-10x-job
# ---------------------------- Counter Options ----------------------------
# 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
# The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
# To learn more see https://doc.log10x.com/run/aggregate
nameField: inputName
# 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
# To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
counterFields:
- summaryVolume
- summaryBytes
- summaryTotals
# 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
# Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
tagFields:
- $=yield TenXEnv.get("enrichmentFields")
# 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
# Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
tagFieldNames:
- $=yield TenXEnv.get("metricFieldNames")
# 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
# To learn more see https://doc.log10x.com/run/output/regulate/#filter-expressions
filter: isSummary
# ---------------------------- Publish Options ----------------------------
# 'step' sets the interval to send metrics Prometheus PG (e.g., '1m').
# To learn more see https://micrometer.io/docs/concepts#rate-aggregation
step: 5s
remote-write
Configure Prometheus RW metrics outputs to publish TenXSummary metrics to Prometheus via the Remote-Write protocol.
Below is the default configuration from: remote-write/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInByb21ldGhldXNSVyIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJlbmFibGVkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRW5hYmxlIHRoaXMgb3V0cHV0XG5cbkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgb3V0cHV0LiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogdHJ1ZSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgImhvc3QiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJIb3N0IGFkZHJlc3Mgb2YgcmVtb3RlIFByb21ldGhldXMgaW5zdGFuY2UgdG8gd3JpdGUgZGF0YSB0b1xuXG5EZWZpbmVzIHRoZSB0YXJnZXQgaG9zdCBhZGRyZXNzIGZvciByZW1vdGUgd3JpdGUuIFVzZSBmdWxsIFVSTCBwYXRoLCAoaS5lLiBodHRwOi8vPHNlcnZlcj46PHBvcnQ+L2FwaS92MS93cml0ZSkiCiAgICAgICAgICB9LAogICAgICAgICAgInVzZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJVc2VybmFtZSB0byB1c2Ugd2hlbiBhdXRoZW50aWNhdGluZyB3aXRoIHJlbW90ZSB3cml0ZSB0YXJnZXRcblxuRGVmaW5lcyB0aGUgdXNlcm5hbWUgd2l0aCB3aGljaCB0byBwZXJmb3JtIGEgYmFzaWMgYXV0aCB3aXRoIHRoZSByZW1vdGUgd3JpdGUgdGFyZ2V0LiBJZiBzcGVjaWZpZWQsIGV4cGVjdHMgJ3Byb21ldGhldXNSV1Bhc3N3b3JkJyBhbHNvIGJlIHBhc3NlZC4iCiAgICAgICAgICB9LAogICAgICAgICAgInBhc3N3b3JkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUGFzc3dvcmQgdG8gdXNlIHdoZW4gYXV0aGVudGljYXRpbmcgd2l0aCByZW1vdGUgd3JpdGUgdGFyZ2V0XG5cbkRlZmluZXMgdGhlIHBhc3N3b3JkIHdpdGggd2hpY2ggdG8gcGVyZm9ybSBhIGJhc2ljIGF1dGggd2l0aCB0aGUgcmVtb3RlIHdyaXRlIHRhcmdldC4gT25seSB1c2VkIGlmICdwcm9tZXRoZXVzUldVc2VyJyBpcyBhbHNvIHNwZWNpZmllZC4iCiAgICAgICAgICB9LAogICAgICAgICAgInRva2VuIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVG9rZW4gdG8gdXNlIHdoZW4gYXV0aGVudGljYXRpbmcgd2l0aCByZW1vdGUgd3JpdGUgdGFyZ2V0XG5cbkRlZmluZXMgYSB0b2tlbiB3aXRoIHdoaWNoIHRvIHBlcmZvcm0gYSBiZWFyZXIgdG9rZW4gYXV0aCB3aXRoIHRoZSByZW1vdGUgd3JpdGUgdGFyZ2V0LiIKICAgICAgICAgIH0sCiAgICAgICAgICAic3RlcCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gb3V0cHV0XG5cblNldHMgdGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byB0aGUgdGltZS1zZXJpZXMgZGVzdGluYXRpb24gKGUuZy4sICcxbScpLiBUbyBsZWFybiBtb3JlIHNlZSBbcmF0ZS1hZ2dyZWdhdGlvbl0oaHR0cHM6Ly9taWNyb21ldGVyLmlvL2RvY3MvY29uY2VwdHMjcmF0ZS1hZ2dyZWdhdGlvbikgKERlZmF1bHQ6IDFtaW4pIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIjFtaW4iCiAgICAgICAgICB9LAogICAgICAgICAgIm5hbWVGaWVsZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGlkZW50aWZ5aW5nIHRoZSBtZXRyaWNcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgd2hvc2UgdmFsdWUgaWRlbnRpZmllcyBhIG1ldHJpYyBjb3VudGVyLiBEZWZhdWx0cyB0byB0aGUgW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSBmaWVsZCB3aGljaCBob2xkcyB0aGUgdmFsdWUocykgYnkgd2hpY2ggVGVuWE9iamVjdHMgYXJlIGdyb3VwZWQgaW50byB0aGUgY3VycmVudCBUZW5YU3VtbWFyeSBpbnN0YW5jZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgY291bnRlcnNdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzItY291bnRlcikgKERlZmF1bHQ6IFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIltzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykiCiAgICAgICAgICB9LAogICAgICAgICAgImNvdW50ZXJGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWVzIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZHMgdXNlZCB0byBpbmNyZW1lbnQgdGhlIG1ldHJpYyBjb3VudGVyIHZhbHVlXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGJ5IHdob3NlIHZhbHVlIHRvIGluY3JlbWVudCB0aGUgY291bnRlci4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhTdW1tYXJ5IGZpZWxkcyB0byB1c2UgYXMgbWV0cmljIHRhZyB2YWx1ZXNcblxuRGVmaW5lcyB0aGUgVGVuWFN1bW1hcnkgZmllbGQgbmFtZXMgdG8gdXNlIGFzIGB0YWdgIHZhbHVlcy4gVGFncyBhcmUgZGltZW5zaW9ucyB0aGF0IGVuYWJsZSBzbGljaW5nIGEgcGFydGljdWxhciBuYW1lZCBtZXRyaWMgdG8gZHJpbGwgZG93biB0byByZWFzb24gYWJvdXQgaXRzIHZhbHVlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciB0YWdzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMxLXRhZ3MpIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkTmFtZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIHVzZSBmb3IgVGVuWFN1bW1hcnkgZmllbGRzLlxuXG5EZWZpbmVzIHRoZSBhIGxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIGdpdmUgZmllbGRzIHdoZW4gcmVwb3J0aW5nIHRoZW0uIEZvcm1hdCBhcyBhIGxpc3Qgb2YgbmFtZTEsIGN1c3RvbTEsIG5hbWUyLCBjdXN0b20yLiAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIGN1c3RvbSBuYW1lIG9mICdNeS1DdXN0b20tRmllbGQnIHRvIGFuIGV4aXN0aW5nICdpbnRyaW5zaWMtZmllbGQnOiBgYGAgeWFtbCBwcm9tZXRoZXVzUlc6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gYmUgd3JpdHRlbiB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgVGVuWFN1bW1hcmllcyBwcm9kdWNlZCBieSB0aGUgJ215TWV0cmljJyBhZ2dyZWdhdG9yLCBzcGVjaWZ5OiBgYGAgeWFtbCBwcm9tZXRoZXVzUlc6ICAgZmlsdGVyOiB0aGlzLmlucHV0TmFtZSA9PSBcIm15TWV0cmljXCIgYGBgICBUbyBsZWFybiBtb3JlIHNlZSBbaW5wdXROYW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QraW5wdXROYW1lKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4Q2FyZGluYWxpdHkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBtZXRyaWMgY29tYmluYXRpb25zIGFsbG93ZWRcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgKGNhcmRpbmFsaXR5KSBhbGxvd2VkIGZvciB0aGlzIG91dHB1dC4gV2hlbiBleGNlZWRlZCwgbWV0cmljcyB3aWxsIGJlIGRyb3BwZWQgdG8gcHJldmVudCBleGNlc3NpdmUgY2FyZGluYWxpdHkuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDUwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiA1MDAKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAiaG9zdCIsCiAgICAgICAgICAidXNlciIsCiAgICAgICAgICAicGFzc3dvcmQiCiAgICAgICAgXQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' Prometheus remote write metric output configuration
# Configure Prometheus remote write metric counter outputs.
# To learn more see https://doc.log10x.com/run/output/metric/prometheus/remote-write/
# For Prometheus RW, see https://prometheus.io/docs/concepts/remote_write_spec/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/output/metric/prometheus/remote-write
# ========================== Prometheus RW Options ============================
# Define multiple Prometheus RW metric outputs below
prometheusRW:
# --------------------------- Connection Options --------------------------
# 'host' sets the Prometheus remote write endpoint
- host: http://localhost:9090/api/v1/write # (❗ REQUIRED)
# 'user' for authentication
user: null # (❗ REQUIRED)
# 'password' for authentication
password: null # (❗ REQUIRED)
# ---------------------------- Counter Options ----------------------------
# 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
# The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
# To learn more see https://doc.log10x.com/run/aggregate
nameField: inputName
# 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
# To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
counterFields:
- summaryVolume
- summaryBytes
- summaryTotals
# 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
# Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
tagFields:
- $=yield TenXEnv.get("enrichmentFields")
# 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
# Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
tagFieldNames:
- $=yield TenXEnv.get("metricFieldNames")
# 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
# To learn more see https://doc.log10x.com/run/output/regulate/#filter-expressions
filter: isSummary
# ---------------------------- Publish Options ----------------------------
# 'step' sets the interval to send metrics to Prometheus RW (e.g. '1m').
# To learn more see https://micrometer.io/docs/concepts#rate-aggregation
step: 5s
datadog
Configure Datadog metrics outputs to publish TenXSummary metrics to Datadog.
Below is the default configuration from: datadog/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImRhdGFkb2ciIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVuYWJsZSB0aGlzIG91dHB1dFxuXG5FbmFibGUgb3IgZGlzYWJsZSB0aGlzIG91dHB1dC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJuYW1lRmllbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBpZGVudGlmeWluZyB0aGUgbWV0cmljXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIHdob3NlIHZhbHVlIGlkZW50aWZpZXMgYSBtZXRyaWMgY291bnRlci4gRGVmYXVsdHMgdG8gdGhlIFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykgZmllbGQgd2hpY2ggaG9sZHMgdGhlIHZhbHVlKHMpIGJ5IHdoaWNoIFRlblhPYmplY3RzIGFyZSBncm91cGVkIGludG8gdGhlIGN1cnJlbnQgVGVuWFN1bW1hcnkgaW5zdGFuY2UuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIGNvdW50ZXJzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMyLWNvdW50ZXIpIChEZWZhdWx0OiBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIgogICAgICAgICAgfSwKICAgICAgICAgICJjb3VudGVyRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lcyBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGRzIHVzZWQgdG8gaW5jcmVtZW50IHRoZSBtZXRyaWMgY291bnRlciB2YWx1ZVxuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBieSB3aG9zZSB2YWx1ZSB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBUZW5YU3VtbWFyeSBmaWVsZHMgdG8gdXNlIGFzIG1ldHJpYyB0YWcgdmFsdWVzXG5cbkRlZmluZXMgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIG5hbWVzIHRvIHVzZSBhcyBgdGFnYCB2YWx1ZXMuIFRhZ3MgYXJlIGRpbWVuc2lvbnMgdGhhdCBlbmFibGUgc2xpY2luZyBhIHBhcnRpY3VsYXIgbmFtZWQgbWV0cmljIHRvIGRyaWxsIGRvd24gdG8gcmVhc29uIGFib3V0IGl0cyB2YWx1ZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgdGFnc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMS10YWdzKSIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZE5hbWVzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGN1c3RvbSBuYW1lcyB0byB1c2UgZm9yIFRlblhTdW1tYXJ5IGZpZWxkcy5cblxuRGVmaW5lcyB0aGUgYSBsaXN0IG9mIGN1c3RvbSBuYW1lcyB0byBnaXZlIGZpZWxkcyB3aGVuIHJlcG9ydGluZyB0aGVtLiBGb3JtYXQgYXMgYSBsaXN0IG9mIG5hbWUxLCBjdXN0b20xLCBuYW1lMiwgY3VzdG9tMi4gIEZvciBleGFtcGxlLCB0byBzZXQgYSBjdXN0b20gbmFtZSBvZiAnTXktQ3VzdG9tLUZpZWxkJyB0byBhbiBleGlzdGluZyAnaW50cmluc2ljLWZpZWxkJzogYGBgIHlhbWwgZGF0YWRvZzogICB0YWdGaWVsZE5hbWVzOiAgICAgLSBpbnRyaW5zaWMtZmllbGQgICAgIC0gTXktQ3VzdG9tLUZpZWxkIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImZpbHRlciIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkEgSmF2YVNjcmlwdCBleHByZXNzaW9uIGFuIFRlblhTdW1tYXJ5IG11c3QgZXZhbHVhdGUgYXMgJ3RydXRoeScgYWdhaW5zdCB0byBiZSB3cml0dGVuIHRvIHRoaXMgb3V0cHV0XG5cblNwZWNpZmllcyBhIEphdmFTY3JpcHQgZXhwcmVzc2lvbiB0aGF0IGFuIFRlblhTdW1tYXJ5IG11c3QgZXZhbHVhdGUgYXMgdHJ1dGh5IHRvIHdyaXRlIGl0cyBpbnN0YW5jZS90ZW1wbGF0ZSBmaWVsZCB2YWx1ZXMgdG8gdGhlIHRhcmdldCBjb3VudGVyLiAgRm9yIGV4YW1wbGUsIHRvIG9ubHkgZW1pdCBUZW5YU3VtbWFyaWVzIHByb2R1Y2VkIGJ5IHRoZSAnbXlNZXRyaWMnIGFnZ3JlZ2F0b3IsIHNwZWNpZnk6IGBgYCB5YW1sIGRhdGFkb2c6ICAgZmlsdGVyOiB0aGlzLmlucHV0TmFtZSA9PSBcIm15TWV0cmljXCIgYGBgICBUbyBsZWFybiBtb3JlIHNlZSBbaW5wdXROYW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QraW5wdXROYW1lKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4Q2FyZGluYWxpdHkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBtZXRyaWMgY29tYmluYXRpb25zIGFsbG93ZWRcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgKGNhcmRpbmFsaXR5KSBhbGxvd2VkIGZvciB0aGlzIG91dHB1dC4gV2hlbiBleGNlZWRlZCwgbWV0cmljcyB3aWxsIGJlIGRyb3BwZWQgdG8gcHJldmVudCBleGNlc3NpdmUgY2FyZGluYWxpdHkuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDUwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiA1MDAKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVzY3JpcHRpb25zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0cyB3aGV0aGVyIHRvIHNlbmQgbWV0ZXIgZGVzY3JpcHRpb25zIHRvIERhdGFkb2cgc2NyYXBlXG5cblNldHMgd2hldGhlciB0byBzZW5kIG1ldGVyIGRlc2NyaXB0aW9ucyB0byBEYXRhZG9nIFR1cm4gdGhpcyBvZmYgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiBkYXRhIHNlbnQgb24gZWFjaCB3cml0ZSAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAic3RlcCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gb3V0cHV0XG5cblNldHMgdGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byB0aGUgdGltZS1zZXJpZXMgZGVzdGluYXRpb24gKGUuZy4sICcxbScpLiBUbyBsZWFybiBtb3JlIHNlZSBbcmF0ZS1hZ2dyZWdhdGlvbl0oaHR0cHM6Ly9taWNyb21ldGVyLmlvL2RvY3MvY29uY2VwdHMjcmF0ZS1hZ2dyZWdhdGlvbikgKERlZmF1bHQ6IDEgbWludXRlLikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiMSBtaW51dGUuIgogICAgICAgICAgfSwKICAgICAgICAgICJhcGlLZXkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEYXRhZG9nIGFwaUtleVxuXG5TZXRzIHRoZSBEYXRhZG9nIFthcGkga2V5XShodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9hY2NvdW50X21hbmFnZW1lbnQvYXBpLWFwcC1rZXlzLykiCiAgICAgICAgICB9LAogICAgICAgICAgImFwcGxpY2F0aW9uS2V5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGF0YWRvZyBhcHBsaWNhdGlvbiBLZXkuXG5cblNldHMgdGhlIERhdGFkb2cgW2FwcCBLZXldKGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2FjY291bnRfbWFuYWdlbWVudC9hcGktYXBwLWtleXMvKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiaG9zdFRhZyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlZhbHVlIHRvIG1hcCB0byBcImhvc3RcIiB3aGVuIHNoaXBwaW5nIG1ldHJpY3MgdG8gRGF0YWRvZ1xuXG5WYWx1ZSB0byBtYXAgdG8gXCJob3N0XCIgd2hlbiBzaGlwcGluZyBtZXRyaWNzIHRvIERhdGFkb2ciCiAgICAgICAgICB9LAogICAgICAgICAgInVyaSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBVUkkgb2YgYW4gaW50ZXJuYWwgcHJveHkgZW4gcm91dGUgdG8gRGF0YWRvZy5cblxuU2V0cyB0aGUgRGF0YWRvZyBzaXRlIGFkZHJlc3MgdG8gY29ubmVjdCB0byAoZS5nLiAndXM1LmRhdGFkb2docS5jb20nKS4gVG8gbGVhcm4gbW9yZSBzZWUgW0RhdGFkb2cgc2l0ZXNdKGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2dldHRpbmdfc3RhcnRlZC9zaXRlLykgKERlZmF1bHQ6IGh0dHBzOi8vYXBpLmRhdGFkb2docS5jb20pIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImh0dHBzOi8vYXBpLmRhdGFkb2docS5jb20iCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' Datadog metric output configuration
# Configure Datadog metric counter outputs.
# To learn more see https://doc.log10x.com/run/output/metric/datadog/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/output/metric/datadog
# ============================== Datadog Options ==============================
# Define multiple Datadog metric outputs below
datadog:
# --------------------------- Connection Options --------------------------
# 'apiKey' and 'applicationKey' set the Datadog API and app keys (required).
# To learn more see: https://docs.datadoghq.com/account_management/api-app-keys/
- apiKey: $=TenXEnv.get("DD_API_KEY") # (❗ EnvVar REQUIRED)
applicationKey: $=TenXEnv.get("DD_APP_KEY") # (❗ EnvVar REQUIRED)
# 'uri' sets the Datadog site address to which to connect.
# To learn more see: https://docs.datadoghq.com/getting_started/site/
uri: https://us5.datadoghq.com # (or https://api.us3.datadoghq.com)
# ---------------------------- Publish Options ----------------------------
# 'descriptions' sets whether to send meter descriptions to Datadog
# Turn this off to minimize the amount of data sent on each write
descriptions: false
# 'step' sets the interval to send metrics to CloudWatch (e.g., '1m').
# To learn more see: https://micrometer.io/docs/concepts#rate-aggregation
step: 5s
# ---------------------------- Counter Options ----------------------------
# 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
# The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
# To learn more see https://doc.log10x.com/run/aggregate
nameField: inputName
# 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
# To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
counterFields:
- summaryVolume
- summaryBytes
- summaryTotals
# 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
# Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
tagFields:
- $=yield TenXEnv.get("enrichmentFields")
# 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
# Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
tagFieldNames:
- $=yield TenXEnv.get("metricFieldNames")
# 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
# To learn more see https://doc.log10x.com/run/output/regulate/#filter-expressions
filter: isSummary
cloudwatch
Configure AWS CloudWatch metrics outputs to publish TenXSummary metrics to AWS CloudWatch metrics.
Below is the default configuration from: cloudwatch/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImNsb3Vkd2F0Y2giIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVuYWJsZSB0aGlzIG91dHB1dFxuXG5FbmFibGUgb3IgZGlzYWJsZSB0aGlzIG91dHB1dC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJuYW1lRmllbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBpZGVudGlmeWluZyB0aGUgbWV0cmljXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIHdob3NlIHZhbHVlIGlkZW50aWZpZXMgYSBtZXRyaWMgY291bnRlci4gRGVmYXVsdHMgdG8gdGhlIFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykgZmllbGQgd2hpY2ggaG9sZHMgdGhlIHZhbHVlKHMpIGJ5IHdoaWNoIFRlblhPYmplY3RzIGFyZSBncm91cGVkIGludG8gdGhlIGN1cnJlbnQgVGVuWFN1bW1hcnkgaW5zdGFuY2UuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIGNvdW50ZXJzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMyLWNvdW50ZXIpIChEZWZhdWx0OiBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIgogICAgICAgICAgfSwKICAgICAgICAgICJjb3VudGVyRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lcyBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGRzIHVzZWQgdG8gaW5jcmVtZW50IHRoZSBtZXRyaWMgY291bnRlciB2YWx1ZVxuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBieSB3aG9zZSB2YWx1ZSB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBUZW5YU3VtbWFyeSBmaWVsZHMgdG8gdXNlIGFzIG1ldHJpYyB0YWcgdmFsdWVzXG5cbkRlZmluZXMgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIG5hbWVzIHRvIHVzZSBhcyBgdGFnYCB2YWx1ZXMuIFRhZ3MgYXJlIGRpbWVuc2lvbnMgdGhhdCBlbmFibGUgc2xpY2luZyBhIHBhcnRpY3VsYXIgbmFtZWQgbWV0cmljIHRvIGRyaWxsIGRvd24gdG8gcmVhc29uIGFib3V0IGl0cyB2YWx1ZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgdGFnc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMS10YWdzKSIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZE5hbWVzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGN1c3RvbSBuYW1lcyB0byB1c2UgZm9yIFRlblhTdW1tYXJ5IGZpZWxkcy5cblxuRGVmaW5lcyB0aGUgYSBsaXN0IG9mIGN1c3RvbSBuYW1lcyB0byBnaXZlIGZpZWxkcyB3aGVuIHJlcG9ydGluZyB0aGVtLiBGb3JtYXQgYXMgYSBsaXN0IG9mIG5hbWUxLCBjdXN0b20xLCBuYW1lMiwgY3VzdG9tMi4gIEZvciBleGFtcGxlLCB0byBzZXQgYSBjdXN0b20gbmFtZSBvZiAnTXktQ3VzdG9tLUZpZWxkJyB0byBhbiBleGlzdGluZyAnaW50cmluc2ljLWZpZWxkJzogYGBgIHlhbWwgY2xvdWR3YXRjaDogICB0YWdGaWVsZE5hbWVzOiAgICAgLSBpbnRyaW5zaWMtZmllbGQgICAgIC0gTXktQ3VzdG9tLUZpZWxkIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImZpbHRlciIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkEgSmF2YVNjcmlwdCBleHByZXNzaW9uIGFuIFRlblhTdW1tYXJ5IG11c3QgZXZhbHVhdGUgYXMgJ3RydXRoeScgYWdhaW5zdCB0byB3cml0ZSB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgVGVuWFN1bW1hcmllcyBwcm9kdWNlZCBieSB0aGUgYG15TWV0cmljYCBhZ2dyZWdhdG9yLCBzcGVjaWZ5OiBgYGAgeWFtbCBjbG91ZHdhdGNoOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyBhbGxvd2VkXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBtZXRyaWMgY29tYmluYXRpb25zIChjYXJkaW5hbGl0eSkgYWxsb3dlZCBmb3IgdGhpcyBvdXRwdXQuIFdoZW4gZXhjZWVkZWQsIG1ldHJpY3Mgd2lsbCBiZSBkcm9wcGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIGNhcmRpbmFsaXR5LiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA1MDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogNTAwCiAgICAgICAgICB9LAogICAgICAgICAgInN0ZXAiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQdWJsaXNoIG1ldHJpY3MgaW50ZXJ2YWxcblxuU2V0cyB0aGUgaW50ZXJ2YWwgdG8gcHVibGlzaCBtZXRyaWNzIHRvIHRoZSB0aW1lLXNlcmllcyBkZXN0aW5hdGlvbiAoZS5nLiwgJzFtJykuIFRvIGxlYXJuIG1vcmUgc2VlIFtyYXRlLWFnZ3JlZ2F0aW9uXWh0dHBzOi8vZG9jcy5taWNyb21ldGVyLmlvL21pY3JvbWV0ZXIvcmVmZXJlbmNlL2NvbmNlcHRzL3JhdGUtYWdncmVnYXRpb24uaHRtbCkgKERlZmF1bHQ6IDEgbWluKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICIxIG1pbiIKICAgICAgICAgIH0sCiAgICAgICAgICAiYXdzQWNjZXNzS2V5SWQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBV1MgYWNjZXNzIGtleVxuXG5EZWZpbmVzIHRoZSBBV1MgYWNjZXNzIGtleSB1c2VkIHRvIGF1dGhlbnRpY2F0ZS4gVG8gbGVhcm4gbW9yZSBzZWUgW0FXUyBjcmVkZW50aWFsc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dlbmVyYWwvbGF0ZXN0L2dyL2F3cy1zZWMtY3JlZC10eXBlcy5odG1sKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiYXdzU2VjcmV0S2V5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQVdTIHNlY3JldCBrZXlcblxuRGVmaW5lcyB0aGUgdGFyZ2V0IEFXUyBzZWNyZXQga2V5IFRvIGxlYXJuIG1vcmUgc2VlIFtBV1MgY3JlZGVudGlhbHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nZW5lcmFsL2xhdGVzdC9nci9hd3Mtc2VjLWNyZWQtdHlwZXMuaHRtbCkiCiAgICAgICAgICB9LAogICAgICAgICAgIm5hbWVzcGFjZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkFXUyBDbG91ZFdhdGNoIG5hbWVzcGFjZVxuXG5EZWZpbmVzIHRoZSB0YXJnZXQgQVdTIENsb3VkV2F0Y2ggbmFtZXNwYWNlLiBUbyBsZWFybiBtb3JlIHNlZSBbQ2xvdWRXYXRjaCBuYW1lc3BhY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbW9uaXRvcmluZy9jbG91ZHdhdGNoX2NvbmNlcHRzLmh0bWwjTmFtZXNwYWNlKSIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAibmFtZXNwYWNlIgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=
# 🔟❎ 'run' AWS CloudWatch metric output configuration
# Configure AWS CloudWatch metric counter outputs.
# To learn more see https://doc.log10x.com/run/output/metric/cloudwatch/
# ============================== Dependencies =================================
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/output/metric/cloudwatch
# ============================ AWS CloudWatch Options =========================
# Define multiple AWS CloudWatch metric outputs below
cloudwatch:
# -------------------------- Connection Options ---------------------------
# 'awsAccessKeyId' defines the AWS access key (required)
# To learn more see https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html
- awsAccessKeyId: $=TenXEnv.get("AWS_ACCESS_KEY_ID") # (❗ EnvVar REQUIRED)
# 'awsSecretKey' defines the target AWS secret key (required)
# To learn more see https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html
awsSecretKey: $=TenXEnv.get("AWS_SECRET_ACCESS_KEY") # (❗ EnvVar REQUIRED)
# 'namespace' defines the target AWS CloudWatch namespace (required)
# To learn more see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace
namespace: null # (❗ REQUIRED)
# ---------------------------- Counter Options ----------------------------
# 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
# The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
# To learn more see https://doc.log10x.com/run/aggregate
nameField: inputName
# 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
# To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
counterFields:
- summaryVolume
- summaryBytes
- summaryTotals
# 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
# Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
tagFields:
- $=yield TenXEnv.get("enrichmentFields")
# 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
# Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
tagFieldNames:
- $=yield TenXEnv.get("metricFieldNames")
# 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
# To learn more see https://doc.log10x.com/run/output/regulate/#filter-expressions
filter: isSummary
# 'step' sets the interval to send metrics to CloudWatch (e.g., '1m').
# To learn more see https://micrometer.io/docs/concepts#rate-aggregation
step: 5s
elastic
Configure ElasticSearch metrics outputs to publish TenXSummary metrics to ElasticSearch.
Below is the default configuration from: elastic/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImVsYXN0aWMiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVuYWJsZSB0aGlzIG91dHB1dFxuXG5FbmFibGUgb3IgZGlzYWJsZSB0aGlzIG91dHB1dC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJuYW1lRmllbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBpZGVudGlmeWluZyB0aGUgbWV0cmljXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIHdob3NlIHZhbHVlIGlkZW50aWZpZXMgYSBtZXRyaWMgY291bnRlci4gRGVmYXVsdHMgdG8gdGhlIFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykgZmllbGQgd2hpY2ggaG9sZHMgdGhlIHZhbHVlKHMpIGJ5IHdoaWNoIFRlblhPYmplY3RzIGFyZSBncm91cGVkIGludG8gdGhlIGN1cnJlbnQgVGVuWFN1bW1hcnkgaW5zdGFuY2UuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIGNvdW50ZXJzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMyLWNvdW50ZXIpIChEZWZhdWx0OiBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIgogICAgICAgICAgfSwKICAgICAgICAgICJjb3VudGVyRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lcyBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGRzIHVzZWQgdG8gaW5jcmVtZW50IHRoZSBtZXRyaWMgY291bnRlciB2YWx1ZVxuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBieSB3aG9zZSB2YWx1ZSB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBUZW5YU3VtbWFyeSBmaWVsZHMgdG8gdXNlIGFzIG1ldHJpYyB0YWcgdmFsdWVzXG5cbkRlZmluZXMgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIG5hbWVzIHRvIHVzZSBhcyBgdGFnYCB2YWx1ZXMuIFRhZ3MgYXJlIGRpbWVuc2lvbnMgdGhhdCBlbmFibGUgc2xpY2luZyBhIHBhcnRpY3VsYXIgbmFtZWQgbWV0cmljIHRvIGRyaWxsIGRvd24gdG8gcmVhc29uIGFib3V0IGl0cyB2YWx1ZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgdGFnc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMS10YWdzKSIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZE5hbWVzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGN1c3RvbSBuYW1lcyB0byB1c2UgZm9yIFRlblhTdW1tYXJ5IGZpZWxkcy5cblxuRGVmaW5lcyB0aGUgYSBsaXN0IG9mIGN1c3RvbSBuYW1lcyB0byBnaXZlIGZpZWxkcyB3aGVuIHJlcG9ydGluZyB0aGVtLiBGb3JtYXQgYXMgYSBsaXN0IG9mIG5hbWUxLCBjdXN0b20xLCBuYW1lMiwgY3VzdG9tMi4gIEZvciBleGFtcGxlLCB0byBzZXQgYSBjdXN0b20gbmFtZSBvZiAnTXktQ3VzdG9tLUZpZWxkJyB0byBhbiBleGlzdGluZyAnaW50cmluc2ljLWZpZWxkJzogYGBgIHlhbWwgZWxhc3RpYzogICB0YWdGaWVsZE5hbWVzOiAgICAgLSBpbnRyaW5zaWMtZmllbGQgICAgIC0gTXktQ3VzdG9tLUZpZWxkIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImZpbHRlciIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkEgSmF2YVNjcmlwdCBleHByZXNzaW9uIGFuIFRlblhTdW1tYXJ5IG11c3QgZXZhbHVhdGUgYXMgJ3RydXRoeScgYWdhaW5zdCB0byBiZSB3cml0dGVuIHRvIHRoaXMgb3V0cHV0XG5cblNwZWNpZmllcyBhIEphdmFTY3JpcHQgZXhwcmVzc2lvbiB0aGF0IGFuIFRlblhTdW1tYXJ5IG11c3QgZXZhbHVhdGUgYXMgdHJ1dGh5IHRvIHdyaXRlIGl0cyBpbnN0YW5jZS90ZW1wbGF0ZSBmaWVsZCB2YWx1ZXMgdG8gdGhlIHRhcmdldCBjb3VudGVyLiAgRm9yIGV4YW1wbGUsIHRvIG9ubHkgZW1pdCBUZW5YU3VtbWFyaWVzIHByb2R1Y2VkIGJ5IHRoZSAnbXlNZXRyaWMnIGFnZ3JlZ2F0b3IsIHNwZWNpZnk6IGBgYCB5YW1sIGVsYXN0aWM6ICAgZmlsdGVyOiB0aGlzLmlucHV0TmFtZSA9PSBcIm15TWV0cmljXCIgYGBgICBUbyBsZWFybiBtb3JlIHNlZSBbaW5wdXROYW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QraW5wdXROYW1lKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4Q2FyZGluYWxpdHkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBtZXRyaWMgY29tYmluYXRpb25zIGFsbG93ZWRcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgKGNhcmRpbmFsaXR5KSBhbGxvd2VkIGZvciB0aGlzIG91dHB1dC4gV2hlbiBleGNlZWRlZCwgbWV0cmljcyB3aWxsIGJlIGRyb3BwZWQgdG8gcHJldmVudCBleGNlc3NpdmUgY2FyZGluYWxpdHkuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDUwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiA1MDAKICAgICAgICAgIH0sCiAgICAgICAgICAic3RlcCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gb3V0cHV0XG5cblNldHMgdGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byB0aGUgdGltZS1zZXJpZXMgZGVzdGluYXRpb24gKGUuZy4sICcxbScpLiBUbyBsZWFybiBtb3JlIHNlZSBbcmF0ZS1hZ2dyZWdhdGlvbl0oaHR0cHM6Ly9taWNyb21ldGVyLmlvL2RvY3MvY29uY2VwdHMjcmF0ZS1hZ2dyZWdhdGlvbikgKERlZmF1bHQ6IDEgbWludXRlLikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiMSBtaW51dGUuIgogICAgICAgICAgfSwKICAgICAgICAgICJob3N0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSG9zdCB0byBzZW5kIG1ldHJpY3MgdG9cblxuU2V0cyB0aGUgaG9zdCB0byBzZW5kIG1ldHJpY3MgdG8uIChEZWZhdWx0OiBodHRwOi8vbG9jYWxob3N0OjkyMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImh0dHA6Ly9sb2NhbGhvc3Q6OTIwMCIKICAgICAgICAgIH0sCiAgICAgICAgICAiYXBpS2V5Q3JlZGVudGlhbHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJCYXNlNjQtZW5jb2RlZCBjcmVkZW50aWFscyBzdHJpbmdcblxuU2V0cyBhIGJhc2U2NC1lbmNvZGVkIGNyZWRlbnRpYWxzIHN0cmluZyBUbyBsZWFybiBtb3JlIHNlZTogW0VsYXN0aWMgY3JlZGVudGlhbHNdKGh0dHBzOi8vd3d3LmVsYXN0aWMuY28vZ3VpZGUvZW4vZWxhc3RpY3NlYXJjaC9yZWZlcmVuY2UvY3VycmVudC9zZWN1cml0eS1hcGktY3JlYXRlLWFwaS1rZXkuaHRtbCkiCiAgICAgICAgICB9LAogICAgICAgICAgInVzZXJOYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQmFzaWMgQXV0aGVudGljYXRpb24gdXNlcm5hbWVcblxuU2V0cyB0aGUgdGhlIEJhc2ljIEF1dGhlbnRpY2F0aW9uIHVzZXJuYW1lLiBJZiAnZWxhc3RpY0FwaUtleUNyZWRlbnRpYWxzJyBub3QgaXMgc2V0LCBpdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCIKICAgICAgICAgIH0sCiAgICAgICAgICAicGFzc3dvcmQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJCYXNpYyBBdXRoZW50aWNhdGlvbiBwYXNzd29yZFxuXG5TZXRzIGEgQmFzaWMgQXV0aGVudGljYXRpb24gcGFzc3dvcmQuIElmICdlbGFzdGljQXBpS2V5Q3JlZGVudGlhbHMnIGlzIG5vdCBzZXQgaXQgd2lsbCBiZSB1c2VkIGluc3RlYWQiCiAgICAgICAgICB9LAogICAgICAgICAgImluZGV4IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIGluZGV4IG5hbWUgdG8gd3JpdGUgbWV0cmljcyB0b1xuXG5TZXRzIHRoZSBpbmRleCBuYW1lIHRvIHdyaXRlIG1ldHJpY3MgdG8uIChEZWZhdWx0OiBtaWNyb21ldGVyLW1ldHJpY3MpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIm1pY3JvbWV0ZXItbWV0cmljcyIKICAgICAgICAgIH0sCiAgICAgICAgICAiYXV0b0NyZWF0ZUluZGV4IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiV2hldGhlciB0byBjcmVhdGUgdGhlIGluZGV4IGF1dG9tYXRpY2FsbHkgaWYgaXQgZG9lc24ndCBleGlzdFxuXG5TZXRzIHdoZXRoZXIgdG8gY3JlYXRlIHRoZSBpbmRleCBhdXRvbWF0aWNhbGx5IGlmIGl0IGRvZXNuJ3QgZXhpc3QuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicGlwZWxpbmUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgaW5nZXN0IHBpcGVsaW5lIG5hbWVcblxuVGhlIGluZ2VzdCBwaXBlbGluZSBuYW1lIgogICAgICAgICAgfSwKICAgICAgICAgICJpbmRleERhdGVGb3JtYXQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbmRleCBkYXRlIGZvcm1hdCB1c2VkIGZvciByb2xsaW5nIGluZGljZXNcblxuU2V0cyB0aGUgaW5kZXggZGF0ZSBmb3JtYXQgdXNlZCBmb3Igcm9sbGluZyBpbmRpY2VzLiBUaGlzIGlzIGFwcGVuZGVkIHRvIHRoZSBpbmRleCBuYW1lLCBzZXBhcmF0ZWQgYnkgJ2VsYXN0aWNJbmRleERhdGVTZXBhcmF0b3InLiAoRGVmYXVsdDogeXl5eS1NTSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAieXl5eS1NTSIKICAgICAgICAgIH0sCiAgICAgICAgICAidGltZXN0YW1wRmllbGROYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgZWxhc3RpYyB0aW1lc3RhbXAgZmllbGRcblxuU2V0cyB0aGUgbmFtZSBvZiB0aGUgZWxhc3RpYyB0aW1lc3RhbXAgZmllbGQuIChEZWZhdWx0OiBAdGltZXN0YW1wKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJAdGltZXN0YW1wIgogICAgICAgICAgfSwKICAgICAgICAgICJpbmRleERhdGVTZXBhcmF0b3IiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTZXBhcmF0b3IgYmV0d2VlbiB0aGUgaW5kZXggbmFtZSBhbmQgdGhlIGRhdGUgcGFydFxuXG5TZXRzIHRoZSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgaW5kZXggbmFtZSBhbmQgdGhlIGRhdGUgcGFydCAoRGVmYXVsdDogLSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiLSIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' ElasticSearch metric output configuration
# Configure ElasticSearch metric counter outputs.
# To learn more see https://doc.log10x.com/run/output/metric/elastic/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/output/metric/elastic
# =============================== Elastic Options =============================
# Define multiple Elastic metric outputs below
elastic:
# --------------------------- Connection Options --------------------------
# 'host' sets the host to send metrics to (e.g., https://<deployment-name>.us-central1.gcp.cloud.es.io).
- host: "" # (❗ REQUIRED)
# 'apiKeyCredentials' sets base64-encoded credentials string
# To learn more see: https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html
apiKeyCredentials: $=TenXEnv.get("ELASTIC_API_KEY") # (❗ EnvVar REQUIRED)
# 'userName' sets the the Basic Authentication username if 'apiKeyCredentials' is not set.
userName: $=TenXEnv.get("ELASTIC_USERNAME") # (❗ EnvVar REQUIRED)
# 'password' sets a Basic Authentication password.
password: $=TenXEnv.get("ELASTIC_PASSWORD") # (❗ EnvVar REQUIRED)
# ---------------------------- Counter Options ----------------------------
# 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
# The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
# To learn more see https://doc.log10x.com/run/aggregate
nameField: inputName
# 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
# To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
counterFields:
- summaryVolume
- summaryBytes
- summaryTotals
# 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
# Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
tagFields:
- $=yield TenXEnv.get("enrichmentFields")
# 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
# Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
tagFieldNames:
- $=yield TenXEnv.get("metricFieldNames")
# 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
# To learn more see https://doc.log10x.com/run/output/regulate/#filter-expressions
filter: isSummary
# ---------------------------- Publish Options ----------------------------
# 'step' sets the interval for sending metrics to Elastic (e.g., '1m').
# To learn more see: https://micrometer.io/docs/concepts#rate-aggregation
step: 5s
# ----------------------------- Index Options -----------------------------
# 'elasticIndex' sets the index name to which to write metrics.
index: tenx-metrics
# 'autoCreateIndex' sets whether to create the index automatically if it doesn't exist.
autoCreateIndex: true
# 'indexDateFormat' sets the index date format used for rolling indices.
# This is appended to the index name, separated by 'elasticIndexDateSeparator'.
indexDateFormat: 'yyyy-MM'
# 'indexDateFormat' sets the separator between the index name and the date part
indexDateSeparator: '-'
# 'pipeline' sets the ingest pipeline name
pipeline: null
# 'timestampFieldName' sets the name of the elastic timestamp field.
timestampFieldName: '@timestamp'
signalFx
Configure SignalFx metrics outputs to publish TenXSummary metrics to Splunk SignalFx.
Below is the default configuration from: signalFx/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInNpZ25hbGZ4IiA6IHsKICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgImVuYWJsZWQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAiYWNjZXNzVG9rZW4iIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTaWduYWxGeCBhY2Nlc3MgdG9rZW5cblxuU2V0cyB0aGUgU2lnbmFsRnggYWNjZXNzIHRva2VuLiBUbyBsZWFybiBtb3JlIHNlZTogW1NwbHVuayB0b2tlbnNdKGh0dHBzOi8vZGV2LnNwbHVuay5jb20vb2JzZXJ2YWJpbGl0eS9yZWZlcmVuY2UvYXBpL29yZ190b2tlbnMvbGF0ZXN0KSIKICAgICAgICAgIH0sCiAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVmFsdWUgdG8gbWFwIHRvIFwiaG9zdFwiIHdoZW4gc2hpcHBpbmcgbWV0cmljcyB0byBTaWduYWxGeFxuXG5TZXRzIHRoZSB2YWx1ZSB0byBtYXAgdG8gXCJob3N0XCIgd2hlbiBzaGlwcGluZyBtZXRyaWNzIHRvIHNpZ25hbEZ4LiAoRGVmYXVsdDogbG9jYWwgaG9zdG5hbWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImxvY2FsIGhvc3RuYW1lIgogICAgICAgICAgfSwKICAgICAgICAgICJzb3VyY2VVcmkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJVUkkgb2YgYW4gaW50ZXJuYWwgcHJveHkgZW4gcm91dGUgdG8gU2lnbmFsRnhcblxuU2V0cyB0aGUgVVJJIG9mIGFuIGludGVybmFsIHByb3h5IGVuIHJvdXRlIHRvIFNpZ25hbEZ4LiAoRGVmYXVsdDogaHR0cHM6Ly9pbmdlc3Quc2lnbmFsZnguY29tKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJodHRwczovL2luZ2VzdC5zaWduYWxmeC5jb20iCiAgICAgICAgICB9LAogICAgICAgICAgIm5hbWVGaWVsZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGlkZW50aWZ5aW5nIHRoZSBtZXRyaWNcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgd2hvc2UgdmFsdWUgaWRlbnRpZmllcyBhIG1ldHJpYyBjb3VudGVyLiBEZWZhdWx0cyB0byB0aGUgW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSBmaWVsZCB3aGljaCBob2xkcyB0aGUgdmFsdWUocykgYnkgd2hpY2ggVGVuWE9iamVjdHMgYXJlIGdyb3VwZWQgaW50byB0aGUgY3VycmVudCBUZW5YU3VtbWFyeSBpbnN0YW5jZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgY291bnRlcnNdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzItY291bnRlcikgKERlZmF1bHQ6IFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIltzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykiCiAgICAgICAgICB9LAogICAgICAgICAgImNvdW50ZXJGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWVzIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZHMgdXNlZCB0byBpbmNyZW1lbnQgdGhlIG1ldHJpYyBjb3VudGVyIHZhbHVlXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGJ5IHdob3NlIHZhbHVlIHRvIGluY3JlbWVudCB0aGUgY291bnRlci4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhTdW1tYXJ5IGZpZWxkcyB0byB1c2UgYXMgbWV0cmljIHRhZyB2YWx1ZXNcblxuRGVmaW5lcyB0aGUgVGVuWFN1bW1hcnkgZmllbGQgbmFtZXMgdG8gdXNlIGFzIGB0YWdgIHZhbHVlcy4gVGFncyBhcmUgZGltZW5zaW9ucyB0aGF0IGVuYWJsZSBzbGljaW5nIGEgcGFydGljdWxhciBuYW1lZCBtZXRyaWMgdG8gZHJpbGwgZG93biB0byByZWFzb24gYWJvdXQgaXRzIHZhbHVlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciB0YWdzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMxLXRhZ3MpIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkTmFtZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIHVzZSBmb3IgVGVuWFN1bW1hcnkgZmllbGRzLlxuXG5EZWZpbmVzIHRoZSBhIGxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIGdpdmUgZmllbGRzIHdoZW4gcmVwb3J0aW5nIHRoZW0uIEZvcm1hdCBhcyBhIGxpc3Qgb2YgbmFtZTEsIGN1c3RvbTEsIG5hbWUyLCBjdXN0b20yLiAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIGN1c3RvbSBuYW1lIG9mICdNeS1DdXN0b20tRmllbGQnIHRvIGFuIGV4aXN0aW5nICdpbnRyaW5zaWMtZmllbGQnOiBgYGAgeWFtbCBzaWduYWxmeDogICB0YWdGaWVsZE5hbWVzOiAgICAgLSBpbnRyaW5zaWMtZmllbGQgICAgIC0gTXktQ3VzdG9tLUZpZWxkIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImZpbHRlciIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkEgSmF2YVNjcmlwdCBleHByZXNzaW9uIGFuIFRlblhTdW1tYXJ5IG11c3QgZXZhbHVhdGUgYXMgJ3RydXRoeScgYWdhaW5zdCB0byBiZSB3cml0dGVuIHRvIHRoaXMgb3V0cHV0XG5cblNwZWNpZmllcyBhIEphdmFTY3JpcHQgZXhwcmVzc2lvbiB0aGF0IGFuIFRlblhTdW1tYXJ5IG11c3QgZXZhbHVhdGUgYXMgdHJ1dGh5IHRvIHdyaXRlIGl0cyBpbnN0YW5jZS90ZW1wbGF0ZSBmaWVsZCB2YWx1ZXMgdG8gdGhlIHRhcmdldCBjb3VudGVyLiAgRm9yIGV4YW1wbGUsIHRvIG9ubHkgZW1pdCBUZW5YU3VtbWFyaWVzIHByb2R1Y2VkIGJ5IHRoZSAnbXlNZXRyaWMnIGFnZ3JlZ2F0b3IsIHNwZWNpZnk6IGBgYCB5YW1sIHNpZ25hbGZ4OiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyBhbGxvd2VkXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBtZXRyaWMgY29tYmluYXRpb25zIChjYXJkaW5hbGl0eSkgYWxsb3dlZCBmb3IgdGhpcyBvdXRwdXQuIFdoZW4gZXhjZWVkZWQsIG1ldHJpY3Mgd2lsbCBiZSBkcm9wcGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIGNhcmRpbmFsaXR5LiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA1MDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogNTAwCiAgICAgICAgICB9LAogICAgICAgICAgInB1Ymxpc2hDdW11bGF0aXZlSGlzdG9ncmFtIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0IHdoZXRoZXIgdG8gZW1pdCBjdW11bGF0aXZlIGhpc3RvZ3JhbVxuXG5TZXQgd2hldGhlciB0aGUgU2lnbmFsRnggcmVnaXN0cnkgc2hvdWxkIGVtaXQgYSBjdW11bGF0aXZlIGhpc3RvZ3JhbS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgInN0ZXAiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgaW50ZXJ2YWwgYXQgd2hpY2ggdG8gcHVibGlzaCBtZXRyaWNzIHRvIG91dHB1dFxuXG5TZXRzIHRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gdGhlIHRpbWUtc2VyaWVzIGRlc3RpbmF0aW9uIChlLmcuLCAnMW0nKS4gVG8gbGVhcm4gbW9yZSBzZWUgW3JhdGUtYWdncmVnYXRpb25dKGh0dHBzOi8vbWljcm9tZXRlci5pby9kb2NzL2NvbmNlcHRzI3JhdGUtYWdncmVnYXRpb24pIChEZWZhdWx0OiAxbWluKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICIxbWluIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=
# 🔟❎ 'run' SignalFx metric output configuration
# Configures SignalFx remote write metric counter outputs.
# To learn more see https://doc.log10x.com/run/output/metric/signalFx/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/output/metric/signalFx
# ============================ SignalFx Options ===============================
# Define multiple SignalFx metric outputs below
signalfx:
# --------------------------- Connection Options --------------------------
# 'accessToken' sets the SignalFx access token.
# To learn more see https://dev.splunk.com/observability/reference/api/org_tokens/latest
- accessToken: $=TenXEnv.get("SIGNALFX_ACCESS_TOKEN") # (❗ EnvVar REQUIRED)
# 'source' sets the value to map to "host" when shipping metrics to SignalFx.
# Defaults to local hostname
source: null
# 'sourceUri' sets the URI of an internal proxy en route to signalFx.
sourceUri: https://ingest.signalfx.com
# ---------------------------- Counter Options ----------------------------
# 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
# The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
# To learn more see https://doc.log10x.com/run/aggregate
nameField: inputName
# 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
# To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
counterFields:
- summaryVolume
- summaryBytes
- summaryTotals
# 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
# Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
tagFields:
- $=yield TenXEnv.get("enrichmentFields")
# 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
# Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
tagFieldNames:
- $=yield TenXEnv.get("metricFieldNames")
# 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
# To learn more see https://doc.log10x.com/run/output/regulate/#filter-expressions
filter: isSummary
# ---------------------------- Publish Options ----------------------------
# 'step' sets the interval to send metrics to SignalFx (e.g., '1m').
# To learn more see https://micrometer.io/docs/concepts#rate-aggregation
# 'publishCumulativeHistogram' sets whether the SignalFx registry should emit cumulative histogram
publishCumulativeHistogram: false
log
Configure Log4j2 metrics outputs to publish TenXSummary metrics to a log4j2 appender in Micrometer 'simple' format.
Below is the default configuration from: log/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInNpbXBsZSIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJlbmFibGVkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRW5hYmxlIHRoaXMgb3V0cHV0XG5cbkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgb3V0cHV0LiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogdHJ1ZSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgIm5hbWVGaWVsZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGlkZW50aWZ5aW5nIHRoZSBtZXRyaWNcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgd2hvc2UgdmFsdWUgaWRlbnRpZmllcyBhIG1ldHJpYyBjb3VudGVyLiBEZWZhdWx0cyB0byB0aGUgW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSBmaWVsZCB3aGljaCBob2xkcyB0aGUgdmFsdWUocykgYnkgd2hpY2ggVGVuWE9iamVjdHMgYXJlIGdyb3VwZWQgaW50byB0aGUgY3VycmVudCBUZW5YU3VtbWFyeSBpbnN0YW5jZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgY291bnRlcnNdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzItY291bnRlcikgKERlZmF1bHQ6IFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIltzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykiCiAgICAgICAgICB9LAogICAgICAgICAgImNvdW50ZXJGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWVzIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZHMgdXNlZCB0byBpbmNyZW1lbnQgdGhlIG1ldHJpYyBjb3VudGVyIHZhbHVlXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGJ5IHdob3NlIHZhbHVlIHRvIGluY3JlbWVudCB0aGUgY291bnRlci4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhTdW1tYXJ5IGZpZWxkcyB0byB1c2UgYXMgbWV0cmljIHRhZyB2YWx1ZXNcblxuRGVmaW5lcyB0aGUgVGVuWFN1bW1hcnkgZmllbGQgbmFtZXMgdG8gdXNlIGFzIGB0YWdgIHZhbHVlcy4gVGFncyBhcmUgZGltZW5zaW9ucyB0aGF0IGVuYWJsZSBzbGljaW5nIGEgcGFydGljdWxhciBuYW1lZCBtZXRyaWMgdG8gZHJpbGwgZG93biB0byByZWFzb24gYWJvdXQgaXRzIHZhbHVlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciB0YWdzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMxLXRhZ3MpIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkTmFtZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIHVzZSBmb3IgVGVuWFN1bW1hcnkgZmllbGRzLlxuXG5EZWZpbmVzIHRoZSBhIGxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIGdpdmUgZmllbGRzIHdoZW4gcmVwb3J0aW5nIHRoZW0uIEZvcm1hdCBhcyBhIGxpc3Qgb2YgbmFtZTEsIGN1c3RvbTEsIG5hbWUyLCBjdXN0b20yLiAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIGN1c3RvbSBuYW1lIG9mICdNeS1DdXN0b20tRmllbGQnIHRvIGFuIGV4aXN0aW5nICdpbnRyaW5zaWMtZmllbGQnOiBgYGAgeWFtbCBzaW1wbGU6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gYmUgd3JpdHRlbiB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgVGVuWFN1bW1hcmllcyBwcm9kdWNlZCBieSB0aGUgJ215TWV0cmljJyBhZ2dyZWdhdG9yLCBzcGVjaWZ5OiBgYGAgeWFtbCBzaW1wbGU6ICAgZmlsdGVyOiB0aGlzLmlucHV0TmFtZSA9PSBcIm15TWV0cmljXCIgYGBgICBUbyBsZWFybiBtb3JlIHNlZSBbaW5wdXROYW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QraW5wdXROYW1lKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4Q2FyZGluYWxpdHkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBtZXRyaWMgY29tYmluYXRpb25zIGFsbG93ZWRcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgKGNhcmRpbmFsaXR5KSBhbGxvd2VkIGZvciB0aGlzIG91dHB1dC4gV2hlbiBleGNlZWRlZCwgbWV0cmljcyB3aWxsIGJlIGRyb3BwZWQgdG8gcHJldmVudCBleGNlc3NpdmUgY2FyZGluYWxpdHkuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDUwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiA1MDAKICAgICAgICAgIH0sCiAgICAgICAgICAic3RlcCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gb3V0cHV0XG5cblNldHMgdGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byB0aGUgdGltZS1zZXJpZXMgZGVzdGluYXRpb24gKGUuZy4sICcxbScpLiBUbyBsZWFybiBtb3JlIHNlZSBbcmF0ZS1hZ2dyZWdhdGlvbl0oaHR0cHM6Ly9taWNyb21ldGVyLmlvL2RvY3MvY29uY2VwdHMjcmF0ZS1hZ2dyZWdhdGlvbikgKERlZmF1bHQ6IDFtaW4pIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIjFtaW4iCiAgICAgICAgICB9LAogICAgICAgICAgImxvZ2dlck5hbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIGxvZzRqMiBsb2dnZXIgdG8gd2hpY2ggcmVnaXN0cnkgbWV0cmljIGRhdGEgaXMgcGVyaW9kaWNhbGx5IGxvZ2dlZFxuXG5TZXRzIHRoZSBsb2c0ajIgbG9nZ2VyIHRvIHdoaWNoIHJlZ2lzdHJ5IG1ldHJpYyBkYXRhIGlzIHBlcmlvZGljYWxseSBsb2dnZWQgbWV0cmljIGFyZSBsb2dnZWQgYXMgJ0lORk8nIG1lc3NhZ2VzIHVzaW5nIHRoZSBNaWNyb21ldGVyIGRlZmF1bHQgJ3NpbXBsZScgZm9ybWF0LiBUbyBsZWFybiBtb3JlIHNlZTogW1NpbXBsZU1ldGVyUmVnaXN0cnldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb21ldGVyLW1ldHJpY3MvbWljcm9tZXRlci9ibG9iL21haW4vbWljcm9tZXRlci1jb3JlL3NyYy9tYWluL2phdmEvaW8vbWljcm9tZXRlci9jb3JlL2luc3RydW1lbnQvc2ltcGxlL1NpbXBsZU1ldGVyUmVnaXN0cnkuamF2YSkiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgImxvZ2dlck5hbWUiCiAgICAgICAgXQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' Log4j2 metric output configuration
# Configure log4j2 metric counter outputs.
# To learn more see https://doc.log10x.com/run/output/metric/log/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/output/metric/log
# ============================== Log4j2 Options ===============================
# Define multiple log4j2 metric outputs below
simple:
# 'loggerName' sets the log4j2 logger to which registry metric data is periodically logged
# metric are logged a 'INFO' messages using micrometer's default 'simple' format.
# To learn more see: https://github.com/micrometer-metrics/micrometer/blob/main/micrometer-core/src/main/java/io/micrometer/core/instrument/simple/SimpleMeterRegistry.java
- loggerName: consoleOut
# ---------------------------- Counter Options ----------------------------
# 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
# The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
# To learn more see https://doc.log10x.com/run/aggregate
nameField: inputName
# 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
# To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
counterFields:
- summaryVolume
- summaryBytes
- summaryTotals
# 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
# Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
tagFields:
- $=yield TenXEnv.get("enrichmentFields")
# 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
# Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
tagFieldNames:
- $=yield TenXEnv.get("metricFieldNames")
# 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
# To learn more see https://doc.log10x.com/run/output/regulate/#filter-expressions
filter: isSummary
# ---------------------------- Publish Options ----------------------------
# 'step' sets the frequency in which metrics are logged to 'loggerName' in
# ISO-8601 format. To learn more see:
# https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence-
step: PT1S
Advanced Settings
To configure advanced options (optional) for the Cloud Reporter 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: []
Github Sync
Github Sync
Below is the default configuration from: gitops/config.yaml (* Required Fields).
ewogICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyIsCiAgInRpdGxlIjogIkdpdE9wcyBDb25maWd1cmF0aW9uIiwKICAiZGVzY3JpcHRpb24iOiAiQ29uZmlndXJhdGlvbiBmb3IgcHVsbGluZyBzeW1ib2wsIGNvbmZpZyBhbmQgbG9va3VwIGZpbGVzIGZyb20gYSByZW1vdGUgR2l0SHViIHJlcG8gdG8gZW5hYmxlIGNlbnRyYWxpemVkIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCIsCiAgInR5cGUiOiAib2JqZWN0IiwKICAicHJvcGVydGllcyI6IHsKICAgICJ0ZW54IjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHRhcmdldCAxMHggcGlwZWxpbmUgdG8gcnVuIChlLmcuLCBydW4sIGNvbXBpbGUpIgogICAgfSwKICAgICJpbmNsdWRlIjogewogICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJMaXN0IG9mIGluY2x1ZGUgc291cmNlcyIsCiAgICAgICJpdGVtcyI6IHsKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgImNvbnN0IjogImdpdGh1YiIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgc291cmNlIHR5cGUgZm9yIHRoaXMgaW5jbHVkZSIKICAgICAgICAgIH0sCiAgICAgICAgICAib3B0aW9ucyI6IHsKICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9QaXBlbGluZUxhdW5jaEdpdEh1Yk9wdGlvbnMiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiOiBbInNvdXJjZSIsICJvcHRpb25zIl0KICAgICAgfQogICAgfQogIH0sCiAgImRlZmluaXRpb25zIjogewogICAgIlBpcGVsaW5lTGF1bmNoR2l0SHViT3B0aW9ucyI6IHsKICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgImRlc2NyaXB0aW9uIjogIkdpdEh1YiBwdWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyIsCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJlbmFibGVkIjogewogICAgICAgICAgInR5cGUiOiAiYm9vbGVhbiIsCiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udHJvbHMgd2hldGhlciB0byBlbmFibGUgdGhpcyBwdWxsIGNvbmZpZyIsCiAgICAgICAgICAiZGVmYXVsdCI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAidG9rZW4iOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFjY2VzcyB0b2tlbiBmb3IgYWNjZXNzaW5nIHRoZSBHaXRIdWIgcmVwby4gU2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2F1dGhlbnRpY2F0aW9uL2tlZXBpbmcteW91ci1hY2NvdW50LWFuZC1kYXRhLXNlY3VyZS9tYW5hZ2luZy15b3VyLXBlcnNvbmFsLWFjY2Vzcy10b2tlbnMiCiAgICAgICAgfSwKICAgICAgICAicmVwbyI6IHsKICAgICAgICAgICJ0eXBlIjogWyJzdHJpbmciLCAibnVsbCJdLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBHaXRIdWIgdXNlci9yZXBvIGZyb20gd2hpY2ggdG8gcHVsbCAoZS5nLiwgJ293bmVyL3JlcG8nKSIKICAgICAgICB9LAogICAgICAgICJicmFuY2giOiB7CiAgICAgICAgICAidHlwZSI6IFsic3RyaW5nIiwgIm51bGwiXSwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJCcmFuY2ggb24gcmVwby4gSWYgbnVsbCwgdXNlcyB0aGUgcmVwbydzIGRlZmF1bHQgYnJhbmNoIiwKICAgICAgICAgICJkZWZhdWx0IjogbnVsbAogICAgICAgIH0sCiAgICAgICAgInBhdGhzIjogewogICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkdsb2IgcGF0dGVybnMgd2l0aGluICdyZXBvJyB0byBwdWxsIGFuZCBleHRyYWN0IHRvIGEgdGVtcCBmb2xkZXIiLAogICAgICAgICAgIml0ZW1zIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgImV4YW1wbGVzIjogWwogICAgICAgICAgICBbImNvbmZpZy8qLnlhbWwiLCAic3ltYm9scy8qLjEweC50YXIiLCAibG9va3Vwcy8qLmNzdiIsICJzY3JpcHRzLyouanMiXQogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgInN5bmNJbnRlcnZhbCI6IHsKICAgICAgICAgICJ0eXBlIjogWyJzdHJpbmciLCAibnVsbCJdLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkludGVydmFsIHRvIGNoZWNrIHRoZSByZW1vdGUgYnJhbmNoIGZvciB1cGRhdGVzIChlLmcuLCAnNW1pbicpLiBTZXQgdG8gbnVsbCB0byBkaXNhYmxlIHN5bmMiLAogICAgICAgICAgImRlZmF1bHQiOiBudWxsLAogICAgICAgICAgImV4YW1wbGVzIjogWyI1bWluIiwgIjFoIiwgIjMwcyJdCiAgICAgICAgfQogICAgICB9LAogICAgICAicmVxdWlyZWQiOiBbImVuYWJsZWQiLCAicmVwbyJdLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiOiBmYWxzZQogICAgfQogIH0KfQo=
# 🔟❎ GitOps configuration
# This config file pulls symbol, config and lookup files from a remote repo to
# enable centralized configuration management via GitHub.
# To learn more see https://doc.log10x.com/config/github
# The target 10x pipeline to run (e.g., run, compile) is specified in the config files pulled from the repo
tenx: any
include:
- source: github
options:
# 'enabled' controls whether to enable this pull config
enabled: false # (❗ REQUIRED)
# 'token' specifies an access token for accessing the Github repo.
# To learn more see https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
token: $=TenXEnv.get("GH_TOKEN")
# 'repo' specifies the GitHub user/repo from which to pull
repo: null # (❗ REQUIRED)
# 'branch' on 'repo' (if null, uses default repo default branch)
branch: main
# 'paths' specifies Glob patterns within 'repo' to pull and extract to a temp folder.
paths:
- test
# - config/*.yaml # https://doc.log10x.com/config/yaml
# - symbols/*.10x.tar # https://doc.log10x.com/run/symbol
# - lookups/*.csv # https://doc.log10x.com/api/js/#TenXLookup
# - scripts/*.js # https://doc.log10x.com/api/js
# 'syncInterval' specifies an interval by which check to check the remote branch for updates (null to disable)
# This interval works in conjunction with: https://doc.log10x.com/run/reload
syncInterval: 5min
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: []
Aggregators
Aggregators
Configure Aggregators to aggregate and summarize TenXObjects to publish as metrics.
Below is the default configuration from: report/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYWdncmVnYXRvciIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTG9naWNhbCBuYW1lIG9mIGFnZ3JlZ2F0b3JcblxuUHJvdmlkZXMgYSBsb2dpY2FsIG5hbWUgZm9yIHRoaXMgYWdncmVnYXRvciAoZS5nLiwgJ2Vycm9ycycpLiBUaGlzIHZhbHVlIGlzIGFjY2Vzc2libGUgYXQgcnVuLXRpbWUgdmlhIHRoZSBpbnRyaW5zaWMgJ2lucHV0TmFtZScgZmllbGQgdG8gaWRlbnRpZnkgVGVuWFN1bW1hcmllcyBvcmlnaW5hdGluZyBmcm9tIHRoaXMgYWdncmVnYXRvci4iCiAgICAgICAgICB9LAogICAgICAgICAgImVuYWJsZWQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUvZGlzYWJsZSB0aGlzIGFnZ3JlZ2F0b3JcblxuU2V0cyB3aGV0aGVyIHRvIG9wZW4gdGhlIGlucHV0IHN0cmVhbS4gVG8gZW5hYmxlIHRoaXMgaW5wdXQgb25seSB3aGVuIGFuICdhZ2dyZWdhdGVFcnJvcnMnIHN0YXJ0dXAgYXJndW1lbnQgdmFsdWUgaXMgdHJ1dGh5OiAgYGBgIHlhbWwgLi4uIGFnZ3JlZ2F0b3I6ICAgZW5hYmxlZDogJD1UZW5YRW52LmdldChcImFnZ3JlZ2F0ZUVycm9yc1wiKSBgYGAgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogInRydWUiCiAgICAgICAgICB9LAogICAgICAgICAgImZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGZpZWxkIG5hbWVzIGJ5IHdoaWNoIHRvIGFnZ3JlZ2F0ZSBUZW5YT2JqZWN0c1xuXG5Qcm92aWRlcyBhIGxpc3Qgb2YgaW50cmluc2ljL2V4dHJhY3RlZC9jYWxjdWxhdGVkIFtUZW5YT2JqZWN0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWE9iamVjdCkgZmllbGQgbmFtZXMgYnkgd2hpY2ggdG8gYWdncmVnYXRlIGluc3RhbmNlcy4gIFdoZW4gdGhlIGFnZ3JlZ2F0b3IgZmx1c2hlcyB0aGUgaW4tbWVtIHRhYmxlIHRvIHByb2R1Y2VkIFRlblhTdW1tYXJpZXMsIGVhY2ggZ2VuZXJhdGVkIFRlblhTdW1tYXJ5IGluc3RhbmNlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgdG90YWwgdmFsdWVzIHZpYSBpdHMgW3N1bW1hcnlUb3RhbHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSBhcnJheSBmaWVsZC4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZGVmYXVsdFZhbHVlIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSBjb25zdGFudCB2YWx1ZSB0byBkZWZhdWx0IGlmICdtYXhDYXJkaW5hbGl0eScgaXMgZXhjZWVkZWRcblxuRGVmaW5lcyBhIGNvbnN0YW50IHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9mIFtmaWVsZCB2YWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZpZWxkcykgd2hlbiB0aGUgY3VycmVudCBudW1iZXIgb2Ygcm93cyB3aXRoaW4gdGhlIGFnZ3JlZ2F0b3IncyBpbi1tZW0gdGFibGUgZHVyaW5nIFtmbHVzaEludGVydmFsXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmbHVzaGludGVydmFsKSBleGNlZWRzIFttYXhDYXJkaW5hbGl0eV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vYWdncmVnYXRlLyNhZ2dyZWdhdG9ybWF4Y2FyZGluYWxpdHkpLiAgVGhpcyB2YWx1ZSBwcmV2ZW50cyBhbiBvdXQtb2YtbWVtIGVycm9yIGlmIFRlblhPYmplY3RzIHdob3NlIFtmaWVsZCB2YWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZpZWxkcykgYXJlIG9mIGhpZ2ggY2FyZGluYWxpdHksIHdoaWNoIGNhbiBjYXVzZSB0aGUgaW4tbWVtIHRhYmxlIHRvIGdyb3cgYmV5b25kIHRoZSBjb25maW5lcyBvZiB0aGUgaG9zdCBKVk0gaGVhcC4gIFRoaXMgZXJyb3IgaXMgcG9zc2libGUgaWYgW2ZpZWxkc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vYWdncmVnYXRlLyNhZ2dyZWdhdG9yZmllbGRzKSBjb250YWlucyBhIGNhbGN1bGF0ZWQvZXh0cmFjdGVkIGZpZWxkIHdob3NlIHZhbHVlIGlzIGFscGhhbnVtZXJpYyAoZS5nLiwgJ3NwYW5JRCcpIGFuZCBpcyBwcmFjdGljYWxseSB1bmlxdWUgdG8gZWFjaCBUZW5YT2JqZWN0LiIKICAgICAgICAgIH0sCiAgICAgICAgICAidG90YWxGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgZmllbGRzIHdob3NlIHZhbHVlcyB0byB0YWxseSBpbnRvIGdlbmVyYXRlZCBUZW5YU3VtbWFyaWVzXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgaW50cmluc2ljIGNhbGN1bGF0ZWQvZXh0cmFjdGVkIFRlblhPYmplY3QgZmllbGQgbmFtZXMgdG8gdGFsbHkgYW5kIHdyaXRlIGludG8gYWdncmVnYXRlZCBUZW5YU3VtbWFyeSBpbnN0YW5jZXMgd2l0aGluIGEgdGFyZ2V0IGZsdXNoICBbdGhyZXNob2xkXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmbHVzaHRocmVzaG9sZCkgb3IgW2ludGVydmFsXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmbHVzaGludGVydmFsKS4gIEZvciBleGFtcGxlLCBzZXR0aW5nIGEgdmFsdWUgb2Y6IGBwcmljZWAgaW50byB0aGlzIGFycmF5IHdpbGwgdGFsbHkgdGhlIHByaWNlcyBvZiBhbGwgVGVuWE9iamVjdHMgYWdncmVnYXRlZCBpbnRvIGEgdGFyZ2V0IG91dHB1dCBUZW5YU3VtbWFyeSBpbnN0YW5jZS4gICBBIG1hdGNoaW5nIGBwcmljZWAgdmFsdWUgY29udGFpbmluZyB0aGUgc3VtIG9mIGFnZ3JlZ2F0ZWQgcHJpY2VzIHdpbGwgYmUgYWNjZXNzaWJsZSBmb3IgZWFjaCBUZW5YU3VtbWFyeSBpbnN0YW5jZSB2aWEgaXRzICBbc3VtbWFyeVRvdGFsc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlUb3RhbHMpIGFycmF5LiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJtYXhDYXJkaW5hbGl0eSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4IG51bWJlciBvZiBjb25jdXJyZW50IHJvd3Mgd2l0aGluIHRoZSBhZ2dyZWdhdG9yIGluLW1lbSB0YWJsZSB3aXRoaW4gdGhlIGZsdXNoIGludGVydmFsXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSByb3dzIHdpdGhpbiB0aGUgYWdncmVnYXRvcidzIGluLW1lbSB0YWJsZS4gSWYgdGhlIG51bWJlciBvZiByb3dzIGV4Y2VlZHMgdGhpcyB2YWx1ZSBkdXJpbmcgW2ZsdXNoSW50ZXJ2YWxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZsdXNoaW50ZXJ2YWwpICwgdGhlICdhZ2dyZWdhdG9yRGVmYXVsdFZhbHVlJyB2YWx1ZSB3aWxsIGJlIGZvciBhbGwgVGVuWE9iamVjdHMgaW5zdGVhZCBvZiBbZmllbGQgdmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmaWVsZHMpIHVudGlsIHRoZSBhZ2dyZWdhdG9yIGlzIGZsdXNoZWQuICBUaGlzIHZhbHVlIGlzIHVzZWQgYXMgYSBiYWNrc3RvcCB0byBlbnN1cmUgdGhhdCB0aGUgYWdncmVnYXRvcidzIGluLW1lbSB0YWJsZSBkb2VzIG5vdCBvdmVyZmxvdyB3aGVuIGV4dHJhY3RpbmcgYW5kICBhZ2dyZWdhdGluZyB2ZXJ5IGhpZ2ggY2FyZGluYWxpdHkgdmFsdWVzIGZyb20gdGhlIGZpZWxkcyBvZiBUZW5YT2JqZWN0cyBwYXNzZWQgdG8gdGhpcyBhZ2dyZWdhdG9yLiAgSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQgb3Igc2V0IHRvIDAsIHRoZSBhZ2dyZWdhdG9yIGhhcyBubyBjYXAuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbiBvdXQtb2YtbWVtIGVycm9yIHdoZW4gdmVyeSBoaWdoIGNhcmRpbmFsaXR5IChlLmcuLCAnc3BhbklEJywgJ0dVSUQnKSBbZmllbGRzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmaWVsZHMpIGFyZSBzcGVjaWZpZWQuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgICB9LAogICAgICAgICAgImZpbHRlciIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkEgSmF2YVNjcmlwdCBleHByZXNzaW9uIGFuIFRlblhPYmplY3QgbXVzdCBldmFsdWF0ZSBhcyAndHJ1dGh5JyBhZ2FpbnN0IHRvIGJlIGFnZ3JlZ2F0ZWRcblxuUHJvdmlkZXMgYSB3YXkgdG8gY29udHJvbCB3aGljaCBUZW5YT2JqZWN0cyBhcmUgaW5jb3Jwb3JhdGVkIGludG8gdGhpcyBhZ2dyZWdhdG9yLiBVbmxpa2UgdGhlICdhZ2dyZWdhdG9yRW5hYmxlZCcsIHdoaWNoIGVuYWJsZXMvZGlzYWJsZXMgdGhpcyBhZ2dyZWdhdG9yIGFsdG9nZXRoZXIsIHRoaXMgSmF2YVNjcmlwdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBwZXIgVGVuWE9iamVjdCB0byBwcm92aWRlIGdyYW51bGFyIGNvbnRyb2wgb3ZlciB3aGF0IGluZm9ybWF0aW9uIHRvIGFnZ3JlZ2F0ZS4gIEZvciBleGFtcGxlLCB0byBvbmx5IGFnZ3JlZ2F0ZSBUZW5YT2JqZWN0cyByZWFkIGZyb20gYSBzcGVjaWZpZWQgaW5wdXQ6ICBgYGAgeWFtbCBhZ2dyZWdhdG9yOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJlbGFzdGljXCIgYGBgICBUbyBhcHBseSBtb3JlIGNvbXBsZXggbG9naWMsIGludm9rZSBhbiAxMHggSmF2YVNjcmlwdCBmdW5jdGlvbiBkZWNsYXJlZCBpbiBhIC5qcyBmaWxlIGJ5IHBhc3NpbmcgaXQgdG8gdGhlIDEweCBFbmdpbmUgYXQgc3RhcnR1cCAoZS5nLiwgJCB0ZW54IHJ1biBAbXkuanMpLiAgYGBgIHlhbWwgYWdncmVnYXRvcjogICAuLi4gICBmaWx0ZXI6IG15QWdncmVnYXRvckZpbHRlcigpIGBgYCAgRm9yIGFuIGV4YW1wbGUgZnVuY3Rpb24sIHNlZSBbcG9saWN5LXJlZ3VsYXRvci1vYmplY3QuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L21vZHVsZXMvYmxvYi9tYWluL3BpcGVsaW5lcy9ydW4vbW9kdWxlcy9yZWd1bGF0ZS9wb2xpY3kvcG9saWN5LXJlZ3VsYXRvci1vYmplY3QuanMpLiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZmx1c2hUaHJlc2hvbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gdGhlIG51bWJlciBvZiBUZW5YT2JqZWN0cyB0byBhZ2dyZWdhdGUgYmVmb3JlIHRoZSBhZ2dyZWdhdG9yIGZsdXNoZXNcblxuQ29udHJvbHMgaG93IG1hbnkgVGVuWE9iamVjdHMgdG8gdXBzZXJ0IGludG8gdGhpcyBhZ2dyZWdhdG9yIChlLmcuLCAxMDAwMCkgYmVmb3JlIHRoZSBhZ2dyZWdhdG9yIHRyYW5zZm9ybXMgdGhlIHJvd3Mgb2YgaXRzIGluLW1lbSB0YWJsZSBpbnRvIFRlblhTdW1tYXJpZXMgaW5zdGFuY2VzIGFuZCBmbHVzaGVzIHRoZW0gaW50byB0aGUgcGlwZWxpbmUuICBJZiBub3Qgc2V0LCB0aGUgW2ZsdXNoSW50ZXJ2YWxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZsdXNoaW50ZXJ2YWwpIGFyZ3VtZW50IGRldGVybWluZXMgd2hlbiB0byBmbHVzaCB0aGUgYWdncmVnYXRvci4gSWYgbmVpdGhlciBhcmd1bWVudCBpcyBwcmVzZW50LCB0aGUgYWdncmVnYXRvciBvbmx5IGZsdXNoZXMgcGVuZGluZyBUZW5YU3VtbWFyaWVzIHdoZW4gdGhlIHBpcGVsaW5lIHRlcm1pbmF0ZXMuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgICB9LAogICAgICAgICAgImZsdXNoSW50ZXJ2YWwiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnRlcnZhbCB0byB3YWl0IGJlZm9yZSB0aGUgYWdncmVnYXRvciBmbHVzaGVzXG5cblNldHMgdGhlIHBlcmlvZCAoZS5nLiwgJzMwcycpLCBhZnRlciB3aGljaCB0aGUgYWdncmVnYXRvciB0cmFuc2Zvcm1zIHRoZSByb3dzIG9mIGl0cyBpbi1tZW0gdGFibGUgaW50byBUZW5YU3VtbWFyaWVzIGluc3RhbmNlcyBhbmQgZmx1c2hlcyB0aGVtIGludG8gdGhlIHBpcGVsaW5lLiAgSWYgc2V0LCB0aGUgW2ZsdXNoVGhyZXNob2xkXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmbHVzaHRocmVzaG9sZCkgIGFyZ3VtZW50IGRldGVybWluZXMgd2hlbiB0byBmbHVzaCB0aGUgYWdncmVnYXRvci4gSWYgbmVpdGhlciBhcmd1bWVudCBpcyBwcmVzZW50LCB0aGUgYWdncmVnYXRvciBvbmx5IGZsdXNoZXMgcGVuZGluZyBUZW5YU3VtbWFyaWVzIHdoZW4gdGhlIHBpcGVsaW5lIHRlcm1pbmF0ZXMuIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJuYW1lIiwKICAgICAgICAgICJmaWVsZHMiCiAgICAgICAgXQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 'run' aggregator config for the reporter app.
# This file configures aggregators for tracking emitted (non-dropped) events.
# To learn more see https://doc.log10x.com/run/aggregate
# Set the 10x pipeline to 'run'
tenx: run
# ============================== Aggregator Options ===========================
# Multiple aggregators can be defined below
aggregator:
# Defines an aggregator for tracking emitted (non-dropped) events
# This enables an output metric to show an accurate (lossless) metric of the
# data actually emitted to downstream systems.
- name: emitted_events
# 'filter' sets a JavaScript expression that TenXObjects must evaluate as truthy to be aggregated.
# To learn more see https://doc.log10x.com/run/output/regulate/#filter-expressions
#
# This filter excludes dropped events by checking the 'isDropped' property,
# ensuring only emitted events are tracked.
#
# For more info, see https://doc.log10x.com/api/js/#TenXBaseObject+dropped
filter: "this.isObject && !this.isDropped"
# 'fields' set the names of intrinsic/extracted/calculated fields whose combined values
# identify a unique row within the aggregator's in-mem table for
# each object passed to it. This aggregator defaults to enrichment fields.
# To learn more see https://doc.log10x.com/run/initialize/#enrichmentFields
fields:
- $=yield TenXEnv.get("enrichmentFields")
# 'totalFields' specifies fields to extract and tally into generated TenXSummaries
totalFields: []
# 'flushThreshold' sets the max number of TenXObjects whose values to upsert into
# the aggregator's in-mem table. Once exceeded, the aggregator instantiates TenXSummaries
# from the table rows to send to output and reset the table.
flushThreshold: 10000
# 'flushInterval' sets a periodic interval, after which the aggregator
# flushes the rows of its in-mem table into the pipeline as TenXSummary instances.
flushInterval: 2s
# 'maxCardinality' sets the maximum number of rows for the aggregator's
# in-mem table. If an TenXObjects whose 'values' are not contained in the table
# is passed to the aggregator, 'defaultValue' will be used for it instead
# until the aggregator flushes its in-mem table after 'flushInterval' or 'flushThreshold'
# are exceeded.
maxCardinality: 65536
# 'defaultValue' sets a constant value that is used instead of 'values' when
# 'maxCardinality' is exceeded within 'flushInterval'
defaultValue: unknown
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 reporter/app.yaml.