Input Extractor
Extractors filter, redact and select text to transform into TenXObjects from a stream of input events.
Configured extractors scan an input event for specified JSON fields or regex capture groups values on which to perform specified actions.
An extractor can be applied to an input via its targetInput member or by adding the extractor to a target input's extractors list.
For example, the k8s enrichment module uses JSON extractors to add pod and container context to TenXObjects for filtering and aggregation.
Actions
Extractors can perform the following actions on input events:
Capture
Capture actions control which segments of a log/trace event's text to transform into TenXObjects.
JSON extractors select field values to transform into TenXObjects. Regex extractors select values using defined by the extractorPattern.
For example, to capture the message value of the following simple event:
A JSON extractor can specify the message field, while a Regex extractor can specify a capture group (see example).
Each capture action specifies which instances of the JSON field/Regex groups within an event to transform:
All
Transform all matching JSON field/capture group values in an event into TenXObjects.
First
Transform the first matching JSON field/capture group value in an event into an TenXObject.
Last
Transform the last matching JSON field/capture group value in an event into an TenXObject.
Default
Serves as a sink for selecting events that fail to match the extractorFilter pattern or do not contain JSON field names/regex capture groups specified by extractorActions.
This action captures the entire text of an event to transform into an TenXObject and set its extractorKey value to the current action's name.
Only one default capture action is allowed.
Filter
Filter actions allow for filtering an entire event or redacting some of its values. These actions serve a dual purpose of providing a fast mechanism for filtering out unnecessary events to save on the CPU resources as well as redacting sensitive information (i.e., HIPAA, PII).
Drop
Deletes a matched JSON field and its value(s) from the event entirely. Available only for JSON extractors.
Redact
For JSON extractors resets matching field values:
| JSON Field Type | Redacted Value |
|---|---|
| object | {} |
| array | [] |
| number | 0 |
| string | "" |
| boolean | true |
For regex extractors deletes all instances of matching capture groups from an event.
Advanced
Advanced actions allow more granular control over how events are captured:
No Transform
Select events without transforming them into typed TenXObjects. This action enables writing raw events that do not require any structure to output. Only one noTransform action is allowed.
Outer Text
Sets a JSON field/capture group as the outer text value for TenXObjects extracted by captureAll, captureFirst, or captureLast actions.
For example, if a JSON extractor action specifies captureFirst:message,
a setOuterText:event action can set the fullText value of an TenXObject to the JSON message field's enclosing event object.
In the example event, some event is set as the TenXObject's text value and its fullText value is the entire enclosing JSON object.
The encode function returns a compact representation of an TenXObject's text value enclosed within the outer text region.
If no setOuterText selector is specified, an TenXObject's fullText and text fields return the same value.
If outerText actions are defined but not matched, the extractor applies the default capture action (if defined), otherwise, it drops the event.
Configuration
To configure the Input extractor unit, Edit these settings.
Below is the default configuration from: extract/pattern.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZXh0cmFjdG9yIiA6IHsKICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgIm5hbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMb2dpY2FsIG5hbWUgaWRlbnRpZnlpbmcgdGhpcyBleHRyYWN0b3JcblxuUHJvdmlkZXMgYSBsb2dpY2FsIG5hbWUgKGUuZy4sICdtZXNzYWdlJykgZm9yIHRoaXMgSlNPTi9yZWdleCBleHRyYWN0b3IgdGhhdCB0YXJnZXQgaW5wdXQocykgY2FuIHJlZmVyZW5jZSB0byBhcHBseSB0aGlzIGV4dHJhY3RvciB0byBldmVudHMgd2hpY2ggdGhlIHByb2R1Y2UiCiAgICAgICAgICB9LAogICAgICAgICAgImVuYWJsZWQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiB0aGF0IG11c3QgYmUgZXZhbHVhdGVkIGFzICd0cnV0aHknIHRvIGVuYWJsZSB0aGUgZXh0cmFjdG9yXG5cbkVuYWJsZXMvZGlzYWJsZXMgdGhpcyBleHRyYWN0b3IuIElmIHNldCwgdGhlIEphdmFTY3JpcHQgZXhwcmVzc2lvbiByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlIHRvIGVuYWJsZSB0aGUgZXh0cmFjdG9yLiBGb3IgZXhhbXBsZSwgdG8gY29uZmlndXJlIHRoaXMgdmFsdWUgdG8gdXNlIGEgc3RhcnR1cCBhcmd1bWVudC9zaGVsbCB2YXJpYWJsZSwgdXNlOiAgYGBgIHlhbWwgZXh0cmFjdG9yOiAgICBuYW1lOiBteUV4dHJhY3RvciAgICBlbmFibGVkOiBUZW5YRW52LmdldChcInBlcmZvcm1FeHRyYWN0aW9uXCIpICAgIC4uLiAgYGBgIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAidGFyZ2V0SW5wdXQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJSZWdleCBwYXR0ZXJuIGlkZW50aWZ5aW5nIGFsbCBpbnB1dHMgdG8gd2hpY2ggdGhpcyBleHRyYWN0b3Igc2hvdWxkIGJlIGFwcGxpZWRcblxuRGVmaW5lcyBhIHJlZ2V4IHBhdHRlcm4gaWRlbnRpZnlpbmcgYWxsIGlucHV0cyB0byB3aGljaCB0aGlzIGV4dHJhY3RvciBzaG91bGQgYmUgYXBwbGllZC4gRm9yIGV4YW1wbGUsIHRvIGFwcGx5IGFuIGV4dHJhY3RvciB0byBhIFtkYXRhZG9nIGlucHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbnB1dC9hbmFseXplci9kYXRhZG9nTG9ncyksIHNwZWNpZnk6ICBgYGAgeWFtbCBleHRyYWN0b3I6ICAgbmFtZTogbWVzc2FnZSAgIHR5cGU6IGpzb24gICB0YXJnZXRJbnB1dDogZGF0YWRvZyAgIGFjdGlvbnM6ICAgLSBjYXB0dXJlQWxsOm1lc3NhZ2UgIGBgYCAgVGhpcyBhcmd1bWVudCBlbmFibGVzIGFwcGx5aW5nIHRoaXMgZXh0cmFjdG9yIHRvIGlucHV0KHMpIHdpdGhvdXQgY2hhbmdpbmcgdGhlaXIgZGVmaW5pdGlvbi4gdnMuIGRpcmVjdGx5IHRoZSBpbnB1dCByZWZlcmVuY2luZyB0aGUgZXh0cmFjdG9yIGRpcmVjdGx5IHZpYSBbZXh0cmFjdG9yTmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvZXh0cmFjdC8jZXh0cmFjdG9ybmFtZSkuIgogICAgICAgICAgfSwKICAgICAgICAgICJ0eXBlIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIG1ldGhvZCB1c2VkIHRvIGV4dHJhY3QgdmFsdWVzIGZyb20gdGhlIGV2ZW50LiBQb3NzaWJsZSB2YWx1ZXM6W2pzb24sIHBhdHRlcm5dXG5cblNldHMgdGhlIHR5cGUgb2YgZXh0cmFjdGlvbiBtZXRob2QgdG8gc2VsZWN0LCBkcm9wIGFuZCByZWRhY3QgdmFsdWVzIGZyb20gYSB0YXJnZXQgaW5wdXQgc3RyZWFtLiBQb3NzaWJsZSB2YWx1ZXM6IC0ganNvbjogc2NhbiBldmVudHMgZm9yIEpTT04gb2JqZWN0cyBjb250YWluaW5nIGZpZWxkcyBzcGVjaWZpZWQgaW4gW2V4dHJhY3RvckFjdGlvbnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2V4dHJhY3QvI2V4dHJhY3RvcmFjdGlvbnMpLiAtIHBhdHRlcm46IHNjYW4gZXZlbnRzIGZvciByZWdleCBuYW1lZCBjYXB0dXJlIGdyb3VwcyBvZiB0aGUgcGF0dGVybiBzZXQgYnkgW2V4dHJhY3RvclBhdHRlcm5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2V4dHJhY3QvI2V4dHJhY3RvcnBhdHRlcm4pLiAoRGVmYXVsdDoganNvbikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAianNvbiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmVnZXggcGF0dGVybiB0byBtYXRjaCBmb3IgdGhlIGV4dHJhY3RvciB0byBiZSBhcHBsaWVkXG5cblNwZWNpZmllcyBhIHJlZ2V4IHBhdHRlcm4gYW4gZXZlbnQgbXVzdCBtYXRjaCB0byBzY2FuIGZvciBKU09OIGZpZWxkcy9yZWdleCBwYXR0ZXJuIGNhcHR1cmUgZ3JvdXBzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgd2F5IHRvIHJ1bGUgb3V0IGV2ZW50cyBmcm9tIGJlaW5nIHRyYW5zZm9ybWVkIGludG8gVGVuWE9iamVjdC4gIFRvIHNlbGVjdCBldmVudHMgZmFpbGluZyB0byBtZWV0IHRoaXMgZmlsdGVyLCBkZWZpbmUgYSBbY2FwdHVyZURlZmF1bHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2V4dHJhY3QvI2RlZmF1bHQpIGFjdGlvbi4iCiAgICAgICAgICB9LAogICAgICAgICAgInBhdHRlcm4iIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGb3IgcmVnZXggZXh0cmFjdG9ycywgdGhlIHBhdHRlcm4gZm9yIGNhcHR1cmluZyBuYW1lZCBtYXRjaCBncm91cHMuIEZvciBKU09OLCB0aGUgc2VnbWVudCBvZiB0ZXh0IHdpdGhpbiBldmVudHMgdG8gc2NhbiBmb3Igb2JqZWN0c1xuXG5EZWZpbmVzIGEgcmVnZXggcGF0dGVybiB0aGF0IGFwcGxpZXMgdG8gZXZlbnRzIHJlYWQgZnJvbSBhbiBpbnB1dCBzdHJlYW0uIEZvciBbZXh0cmFjdG9yVHlwZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvZXh0cmFjdC8jZXh0cmFjdG9ydHlwZSkgPSBwYXR0ZXJuLCBbbWF0Y2hpbmcgZ3JvdXBzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9SZWd1bGFyX2V4cHJlc3Npb25zL05hbWVkX2NhcHR1cmluZ19ncm91cCkgYXJlIHVzZWQgYXMgdGhlICduYW1lJyBwb3J0aW9ucyBvZiBhY3Rpb25zIHNwZWNpZmllZCBieSAnZXh0cmFjdG9yQWN0aW9ucycuICBJZiBleHRyYWN0b3JUeXBlID0ganNvbiwgb25seSBzY2FuIGV2ZW50cyBmb3IgSlNPTnMgd2l0aGluIHRoZSBib3VuZGFyaWVzIG9mIHRoZSBwYXR0ZXJuJ3MgbWF0Y2hlcy4iCiAgICAgICAgICB9LAogICAgICAgICAgImdyb3VwIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBncm91cCBvZiBleHRyYWN0b3JzIHdoaWNoIHdpbGwgcnVuIHRvZ2V0aGVyXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgZXh0cmFjdG9yIGdyb3VwIHRoaXMgZXh0cmFjdG9yIHdpbGwgYmVsb25nIHRvLiBleHRyYWN0b3JzIG9mIHRoZSBzYW1lIGdyb3VwIHdpbGwgYXR0ZW1wdCB0byBydW4gdG9nZXRoZXIgb24gZXZlbnRzIGluIGEgc2luZ2xlIHByb2Nlc3NpbmcgcGFzcyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIgogICAgICAgICAgfSwKICAgICAgICAgICJhY3Rpb25zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBY3Rpb25zIGluIHRoZSBmb3JtIG9mIGFjdGlvblR5cGU6bmFtZS4gUG9zc2libGUgdmFsdWVzOltjYXB0dXJlQWxsLCBjYXB0dXJlRmlyc3QsIGNhcHR1cmVMYXN0LCBjYXB0dXJlQXJyYXlzLCBjYXB0dXJlRmlyc3RBcnJheSwgY2FwdHVyZUxhc3RBcnJheSwgY2FwdHVyZURlZmF1bHQsIGNhcHR1cmVGaWVsZCwgc2V0T3V0ZXJUZXh0LCBkcm9wLCByZWRhY3QsIG5vVHJhbnNmb3JtXVxuXG5cbkRlZmluZXMgYSBsaXN0IG9mIGFjdGlvbnMgZGVmaW5lZCBhczogJ2FjdGlvblR5cGU6bmFtZTphbGlhcycgKGUuZy4sICdjYXB0dXJlQWxsOm1lc3NhZ2U6YWxpYXMnKSB0byBjYXB0dXJlIGFuZCByZWRhY3QgdmFsdWVzIHRvIHRyYW5zZm9ybSBpbnRvIFRlblhPYmplY3RzLiBGb3IgSlNPTiBleHRyYWN0b3JzLCAnbmFtZScgcmVmZXJzIHRvIGEgZmllbGQgdG8gbG9vayBmb3IgaW4gZXZlbnRzIGFuZCB0aGUgdmFsdWUgdG8gd2hpY2ggdG8gYXBwbHkgdGhlICdhY3Rpb25UeXBlJy4gVGhpcyBjYW4gYmUgaW4gdGhlIGZvcm0gb2YgJ3gueS56JyB3aGljaCB3aWxsIG1hdGNoIGludGVybmFsIGZpZWxkcyBpbiB0aGUganNvbi4gRm9yIGV4YW1wbGU6ICdtZXRhZGF0YS5pZCcgd2lsbCBtYXRjaCB0aGUgJ2lkJyBmaWVsZCBvZiB0aGUgJ21ldGFkYXRhJyBvYmplY3QgaW4ge1wibWV0YWRhdGFcIjoge1wiaWRcIjogXCIxMjM0XCJ9fSAgRm9yIHJlZ2V4IGV4dHJhY3RvcnMsICduYW1lJyByZWZlcnMgdG8gYSBbcmVnZXggcGF0dGVybiBtYXRjaCBncm91cF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvUmVndWxhcl9leHByZXNzaW9ucy9OYW1lZF9jYXB0dXJpbmdfZ3JvdXApIGRlZmluZWQgYnkgJ2V4dHJhY3RvclBhdHRlcm4nIHRvIHdoaWNoIHRvIGFwcGx5IHRoZSAnYWN0aW9uVHlwZScuICBUaGlzIHNldHRpbmcgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBbZXh0cmFjdG9yVHlwZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvZXh0cmFjdC8jZXh0cmFjdG9ydHlwZSkgPSAnanNvbicuIElmIG5vdCBzcGVjaWZpZWQgYW5kIGV4dHJhY3RvclR5cGUgaXMgJ3BhdHRlcm4nLCB0aGUgJ2V4dHJhY3RvclBhdHRlcm4nIHBhdHRlcm4gc2NhbnMgZm9yIHJlZ2V4IGNhcHR1cmUgZ3JvdXBzLCBwZXJmb3JtaW5nIG9uIGVhY2ggYXMnY2FwdHVyZUFsbCcgYWN0aW9uLiAgVGhlICdhbGlhcycgcGFydCBpcyBvcHRpb25hbCwgYW5kIGlmIHByb3ZpZGVkIGlzIHVzZWQgdG8gcmVmZXJlbmNlIHRoZSBvYmplY3QgYXMgaXQncyBuYW1lLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIG11bHRpcGxlIGV4dHJhY3RvcnMgYXJlIHVzZWQgdG8gZXh0cmFjdCBkaWZmZXJlbnQgdGhpbmdzIHdoaWNoIGFyZSBsYXRlciB1c2VkIGluIHRoZSBzYW1lIHdheS4gIElmIG5vIGNhcHR1cmUgZ3JvdXBzIGFyZSBkZWZpbmVkLCBhbnkgbWF0Y2hlcyBvZiB0aGUgcGF0dGVybiB3aXRoaW4gdGhlIGlucHV0IHRleHQgbGluZSBhcmUgY2FwdHVyZWQuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImZvcmVhY2giIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIG9wdGlvbnMgZ3JvdXAgZm9yIHdob3NlIGluc3RhbmNlcyB0byBjcmVhdGUgbWF0Y2hpbmcgZXh0cmFjdG9yc1xuXG5TcGVjaWZpZXMgdGhlIG5hbWUgb2YgYW4gb3B0aW9ucyBncm91cCBmb3Igd2hvc2UgaW5zdGFuY2VzIHRvIHJlcGxpY2F0ZSB0aGlzIGV4dHJhY3Rvci4gRm9yIGV4YW1wbGUsIHRoZSBbRWxhc3RpYyBpbnB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvYW5hbHl6ZXIvZWxhc3RpY3NlYXJjaCkgZGVmaW5lcyB0aGUgJ2VsYXN0aWMnIG9wdGlvbnMgZ3JvdXAgYW5kIGNvbmZpZ3VyZXMgYW4gZXh0cmFjdG9yIHRvIGFwcGx5IHRvIGVhY2ggaW5wdXQgc3RyZWFtIGNyZWF0ZWQgZnJvbSBpdHMgY29uZmlndXJlZCBpbnN0YW5jZXMuIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJuYW1lIiwKICAgICAgICAgICJ0eXBlIgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=
# 🔟❎ 'run' Regex extractor configuration
# Configure input regex pattern extractors.
# To learn more see: https://doc.log10x.com/run/input/extract
# Set the 10x pipeline to 'run'
tenx: run
# ============================= Extractor Options =============================
# multiple extractors can be defined below
extractor:
# 'name' provides a unique name for this extractor that is referenced
# by any inputs to which it is applied
- name: patternExtractor
# 'type' controls the method for parsing input stream text (json or pattern)
type: pattern
# 'targetInput' sets a regex pattern to match all inputs to which the extractor is applied.
# For example, to apply this extractor to an input named 'datadog', set: 'targetInput: datadog'
targetInput: myInput
# 'filter' specifies a regex pattern that must match input events to scan them for capture groups.
# For example, the pattern below will filter out syslog events that are not errors
filter: "error: "
# 'pattern' sets regex pattern whose capture groups to apply extractor actions below.
# To learn more about capture groups, see: https://regexone.com/lesson/capturing_groups
# If the pattern does not define capture groups, matches are captured as events to transform into TenXObjects.
# The example pattern below uses capture groups to parse a syslog event's 'message' field,
# and drop 'password' values.
# For an explanation, see: https://chat.openai.com/share/003ead39-421c-489a-a52f-ee8846028887
pattern: "/(error|info|debug): (?<message>.+?)(\\s+password=(?<password>\\S+))?(\\s+username=(?<username>\\S+))?$?"
# 'actions' specifies the actions taken by this extractor on a matching capture group.
# Actions are defined by their type followed by ':' and the regex capture group they target.
# The following action types are supported (comment in/out the ones needed for your use case):
actions:
# Capture
# 'captureAll' transforms all instances of a matching capture group (i.e., 'message')
# within the current event into TenXObjects
- captureAll:message
# 'captureFirst' transforms only the first instance of a matching capture group (i.e., 'message')
# within the current event into an TenXObject
- captureFirst:message
# 'captureLast' transforms only the last instance of a matching capture group (i.e., 'message')
# within the current event into an TenXObject
- captureLast:message
# Filter
# 'redact' removes all matching capture groups (i.e., 'password') found in the event
- redact:password
# Advanced
# 'captureDefault' serves as a sink for events that fail to match the 'filter' pattern
# or do not contain any of the capture group names specified by 'actions'. These events are
# transformed into TenXObjects whose 'extractorKey' field returns this action's name (i.e., 'other')
- captureDefault:other
# 'noTransform' is the same as 'captureDefault' (see above), except captured events are not
# transformed into TenXObjects and remain as 'plain text' objects.
# This is useful when the events need to be routed by the 10x pipeline to a specific
# output, but do not require access to structured elements (e.g., the intrinsic 'vars' and 'timestamp' fields).
- noTransform:other
Below is the default configuration from: extract/json.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZXh0cmFjdG9yIiA6IHsKICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgIm5hbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMb2dpY2FsIG5hbWUgaWRlbnRpZnlpbmcgdGhpcyBleHRyYWN0b3JcblxuUHJvdmlkZXMgYSBsb2dpY2FsIG5hbWUgKGUuZy4sICdtZXNzYWdlJykgZm9yIHRoaXMgSlNPTi9yZWdleCBleHRyYWN0b3IgdGhhdCB0YXJnZXQgaW5wdXQocykgY2FuIHJlZmVyZW5jZSB0byBhcHBseSB0aGlzIGV4dHJhY3RvciB0byBldmVudHMgd2hpY2ggdGhlIHByb2R1Y2UiCiAgICAgICAgICB9LAogICAgICAgICAgImVuYWJsZWQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiB0aGF0IG11c3QgYmUgZXZhbHVhdGVkIGFzICd0cnV0aHknIHRvIGVuYWJsZSB0aGUgZXh0cmFjdG9yXG5cbkVuYWJsZXMvZGlzYWJsZXMgdGhpcyBleHRyYWN0b3IuIElmIHNldCwgdGhlIEphdmFTY3JpcHQgZXhwcmVzc2lvbiByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlIHRvIGVuYWJsZSB0aGUgZXh0cmFjdG9yLiBGb3IgZXhhbXBsZSwgdG8gY29uZmlndXJlIHRoaXMgdmFsdWUgdG8gdXNlIGEgc3RhcnR1cCBhcmd1bWVudC9zaGVsbCB2YXJpYWJsZSwgdXNlOiAgYGBgIHlhbWwgZXh0cmFjdG9yOiAgICBuYW1lOiBteUV4dHJhY3RvciAgICBlbmFibGVkOiBUZW5YRW52LmdldChcInBlcmZvcm1FeHRyYWN0aW9uXCIpICAgIC4uLiAgYGBgIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAidGFyZ2V0SW5wdXQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJSZWdleCBwYXR0ZXJuIGlkZW50aWZ5aW5nIGFsbCBpbnB1dHMgdG8gd2hpY2ggdGhpcyBleHRyYWN0b3Igc2hvdWxkIGJlIGFwcGxpZWRcblxuRGVmaW5lcyBhIHJlZ2V4IHBhdHRlcm4gaWRlbnRpZnlpbmcgYWxsIGlucHV0cyB0byB3aGljaCB0aGlzIGV4dHJhY3RvciBzaG91bGQgYmUgYXBwbGllZC4gRm9yIGV4YW1wbGUsIHRvIGFwcGx5IGFuIGV4dHJhY3RvciB0byBhIFtkYXRhZG9nIGlucHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbnB1dC9hbmFseXplci9kYXRhZG9nTG9ncyksIHNwZWNpZnk6ICBgYGAgeWFtbCBleHRyYWN0b3I6ICAgbmFtZTogbWVzc2FnZSAgIHR5cGU6IGpzb24gICB0YXJnZXRJbnB1dDogZGF0YWRvZyAgIGFjdGlvbnM6ICAgLSBjYXB0dXJlQWxsOm1lc3NhZ2UgIGBgYCAgVGhpcyBhcmd1bWVudCBlbmFibGVzIGFwcGx5aW5nIHRoaXMgZXh0cmFjdG9yIHRvIGlucHV0KHMpIHdpdGhvdXQgY2hhbmdpbmcgdGhlaXIgZGVmaW5pdGlvbi4gdnMuIGRpcmVjdGx5IHRoZSBpbnB1dCByZWZlcmVuY2luZyB0aGUgZXh0cmFjdG9yIGRpcmVjdGx5IHZpYSBbZXh0cmFjdG9yTmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvZXh0cmFjdC8jZXh0cmFjdG9ybmFtZSkuIgogICAgICAgICAgfSwKICAgICAgICAgICJ0eXBlIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIG1ldGhvZCB1c2VkIHRvIGV4dHJhY3QgdmFsdWVzIGZyb20gdGhlIGV2ZW50LiBQb3NzaWJsZSB2YWx1ZXM6W2pzb24sIHBhdHRlcm5dXG5cblNldHMgdGhlIHR5cGUgb2YgZXh0cmFjdGlvbiBtZXRob2QgdG8gc2VsZWN0LCBkcm9wIGFuZCByZWRhY3QgdmFsdWVzIGZyb20gYSB0YXJnZXQgaW5wdXQgc3RyZWFtLiBQb3NzaWJsZSB2YWx1ZXM6IC0ganNvbjogc2NhbiBldmVudHMgZm9yIEpTT04gb2JqZWN0cyBjb250YWluaW5nIGZpZWxkcyBzcGVjaWZpZWQgaW4gW2V4dHJhY3RvckFjdGlvbnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2V4dHJhY3QvI2V4dHJhY3RvcmFjdGlvbnMpLiAtIHBhdHRlcm46IHNjYW4gZXZlbnRzIGZvciByZWdleCBuYW1lZCBjYXB0dXJlIGdyb3VwcyBvZiB0aGUgcGF0dGVybiBzZXQgYnkgW2V4dHJhY3RvclBhdHRlcm5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2V4dHJhY3QvI2V4dHJhY3RvcnBhdHRlcm4pLiAoRGVmYXVsdDoganNvbikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAianNvbiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmVnZXggcGF0dGVybiB0byBtYXRjaCBmb3IgdGhlIGV4dHJhY3RvciB0byBiZSBhcHBsaWVkXG5cblNwZWNpZmllcyBhIHJlZ2V4IHBhdHRlcm4gYW4gZXZlbnQgbXVzdCBtYXRjaCB0byBzY2FuIGZvciBKU09OIGZpZWxkcy9yZWdleCBwYXR0ZXJuIGNhcHR1cmUgZ3JvdXBzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgd2F5IHRvIHJ1bGUgb3V0IGV2ZW50cyBmcm9tIGJlaW5nIHRyYW5zZm9ybWVkIGludG8gVGVuWE9iamVjdC4gIFRvIHNlbGVjdCBldmVudHMgZmFpbGluZyB0byBtZWV0IHRoaXMgZmlsdGVyLCBkZWZpbmUgYSBbY2FwdHVyZURlZmF1bHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2V4dHJhY3QvI2RlZmF1bHQpIGFjdGlvbi4iCiAgICAgICAgICB9LAogICAgICAgICAgInBhdHRlcm4iIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGb3IgcmVnZXggZXh0cmFjdG9ycywgdGhlIHBhdHRlcm4gZm9yIGNhcHR1cmluZyBuYW1lZCBtYXRjaCBncm91cHMuIEZvciBKU09OLCB0aGUgc2VnbWVudCBvZiB0ZXh0IHdpdGhpbiBldmVudHMgdG8gc2NhbiBmb3Igb2JqZWN0c1xuXG5EZWZpbmVzIGEgcmVnZXggcGF0dGVybiB0aGF0IGFwcGxpZXMgdG8gZXZlbnRzIHJlYWQgZnJvbSBhbiBpbnB1dCBzdHJlYW0uIEZvciBbZXh0cmFjdG9yVHlwZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvZXh0cmFjdC8jZXh0cmFjdG9ydHlwZSkgPSBwYXR0ZXJuLCBbbWF0Y2hpbmcgZ3JvdXBzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9SZWd1bGFyX2V4cHJlc3Npb25zL05hbWVkX2NhcHR1cmluZ19ncm91cCkgYXJlIHVzZWQgYXMgdGhlICduYW1lJyBwb3J0aW9ucyBvZiBhY3Rpb25zIHNwZWNpZmllZCBieSAnZXh0cmFjdG9yQWN0aW9ucycuICBJZiBleHRyYWN0b3JUeXBlID0ganNvbiwgb25seSBzY2FuIGV2ZW50cyBmb3IgSlNPTnMgd2l0aGluIHRoZSBib3VuZGFyaWVzIG9mIHRoZSBwYXR0ZXJuJ3MgbWF0Y2hlcy4iCiAgICAgICAgICB9LAogICAgICAgICAgImdyb3VwIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBncm91cCBvZiBleHRyYWN0b3JzIHdoaWNoIHdpbGwgcnVuIHRvZ2V0aGVyXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgZXh0cmFjdG9yIGdyb3VwIHRoaXMgZXh0cmFjdG9yIHdpbGwgYmVsb25nIHRvLiBleHRyYWN0b3JzIG9mIHRoZSBzYW1lIGdyb3VwIHdpbGwgYXR0ZW1wdCB0byBydW4gdG9nZXRoZXIgb24gZXZlbnRzIGluIGEgc2luZ2xlIHByb2Nlc3NpbmcgcGFzcyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIgogICAgICAgICAgfSwKICAgICAgICAgICJhY3Rpb25zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBY3Rpb25zIGluIHRoZSBmb3JtIG9mIGFjdGlvblR5cGU6bmFtZS4gUG9zc2libGUgdmFsdWVzOltjYXB0dXJlQWxsLCBjYXB0dXJlRmlyc3QsIGNhcHR1cmVMYXN0LCBjYXB0dXJlQXJyYXlzLCBjYXB0dXJlRmlyc3RBcnJheSwgY2FwdHVyZUxhc3RBcnJheSwgY2FwdHVyZURlZmF1bHQsIGNhcHR1cmVGaWVsZCwgc2V0T3V0ZXJUZXh0LCBkcm9wLCByZWRhY3QsIG5vVHJhbnNmb3JtXVxuXG5cbkRlZmluZXMgYSBsaXN0IG9mIGFjdGlvbnMgZGVmaW5lZCBhczogJ2FjdGlvblR5cGU6bmFtZTphbGlhcycgKGUuZy4sICdjYXB0dXJlQWxsOm1lc3NhZ2U6YWxpYXMnKSB0byBjYXB0dXJlIGFuZCByZWRhY3QgdmFsdWVzIHRvIHRyYW5zZm9ybSBpbnRvIFRlblhPYmplY3RzLiBGb3IgSlNPTiBleHRyYWN0b3JzLCAnbmFtZScgcmVmZXJzIHRvIGEgZmllbGQgdG8gbG9vayBmb3IgaW4gZXZlbnRzIGFuZCB0aGUgdmFsdWUgdG8gd2hpY2ggdG8gYXBwbHkgdGhlICdhY3Rpb25UeXBlJy4gVGhpcyBjYW4gYmUgaW4gdGhlIGZvcm0gb2YgJ3gueS56JyB3aGljaCB3aWxsIG1hdGNoIGludGVybmFsIGZpZWxkcyBpbiB0aGUganNvbi4gRm9yIGV4YW1wbGU6ICdtZXRhZGF0YS5pZCcgd2lsbCBtYXRjaCB0aGUgJ2lkJyBmaWVsZCBvZiB0aGUgJ21ldGFkYXRhJyBvYmplY3QgaW4ge1wibWV0YWRhdGFcIjoge1wiaWRcIjogXCIxMjM0XCJ9fSAgRm9yIHJlZ2V4IGV4dHJhY3RvcnMsICduYW1lJyByZWZlcnMgdG8gYSBbcmVnZXggcGF0dGVybiBtYXRjaCBncm91cF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvUmVndWxhcl9leHByZXNzaW9ucy9OYW1lZF9jYXB0dXJpbmdfZ3JvdXApIGRlZmluZWQgYnkgJ2V4dHJhY3RvclBhdHRlcm4nIHRvIHdoaWNoIHRvIGFwcGx5IHRoZSAnYWN0aW9uVHlwZScuICBUaGlzIHNldHRpbmcgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBbZXh0cmFjdG9yVHlwZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvZXh0cmFjdC8jZXh0cmFjdG9ydHlwZSkgPSAnanNvbicuIElmIG5vdCBzcGVjaWZpZWQgYW5kIGV4dHJhY3RvclR5cGUgaXMgJ3BhdHRlcm4nLCB0aGUgJ2V4dHJhY3RvclBhdHRlcm4nIHBhdHRlcm4gc2NhbnMgZm9yIHJlZ2V4IGNhcHR1cmUgZ3JvdXBzLCBwZXJmb3JtaW5nIG9uIGVhY2ggYXMnY2FwdHVyZUFsbCcgYWN0aW9uLiAgVGhlICdhbGlhcycgcGFydCBpcyBvcHRpb25hbCwgYW5kIGlmIHByb3ZpZGVkIGlzIHVzZWQgdG8gcmVmZXJlbmNlIHRoZSBvYmplY3QgYXMgaXQncyBuYW1lLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIG11bHRpcGxlIGV4dHJhY3RvcnMgYXJlIHVzZWQgdG8gZXh0cmFjdCBkaWZmZXJlbnQgdGhpbmdzIHdoaWNoIGFyZSBsYXRlciB1c2VkIGluIHRoZSBzYW1lIHdheS4gIElmIG5vIGNhcHR1cmUgZ3JvdXBzIGFyZSBkZWZpbmVkLCBhbnkgbWF0Y2hlcyBvZiB0aGUgcGF0dGVybiB3aXRoaW4gdGhlIGlucHV0IHRleHQgbGluZSBhcmUgY2FwdHVyZWQuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImZvcmVhY2giIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIG9wdGlvbnMgZ3JvdXAgZm9yIHdob3NlIGluc3RhbmNlcyB0byBjcmVhdGUgbWF0Y2hpbmcgZXh0cmFjdG9yc1xuXG5TcGVjaWZpZXMgdGhlIG5hbWUgb2YgYW4gb3B0aW9ucyBncm91cCBmb3Igd2hvc2UgaW5zdGFuY2VzIHRvIHJlcGxpY2F0ZSB0aGlzIGV4dHJhY3Rvci4gRm9yIGV4YW1wbGUsIHRoZSBbRWxhc3RpYyBpbnB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvYW5hbHl6ZXIvZWxhc3RpY3NlYXJjaCkgZGVmaW5lcyB0aGUgJ2VsYXN0aWMnIG9wdGlvbnMgZ3JvdXAgYW5kIGNvbmZpZ3VyZXMgYW4gZXh0cmFjdG9yIHRvIGFwcGx5IHRvIGVhY2ggaW5wdXQgc3RyZWFtIGNyZWF0ZWQgZnJvbSBpdHMgY29uZmlndXJlZCBpbnN0YW5jZXMuIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJuYW1lIiwKICAgICAgICAgICJ0eXBlIgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=
# 🔟❎ 'run' JSON extractor configuration
# Configure input JSON extractors.
# To learn more see: https://doc.log10x.com/run/input/extract
# Set the 10x pipeline to 'run'
tenx: run
# ============================= Extractor Options =============================
# multiple extractors can be defined below
extractor:
# 'name' provides a unique name for this extractor that is referenced
# by any inputs to which it is applied
- name: jsonExtractor
# 'type' controls the method for parsing input stream text (json or pattern)
type: json
# 'targetInput' sets a regex pattern to match all inputs to which the extractor is applied.
# For example, to apply this extractor to an input named 'datadog', set: 'targetInput: datadog'
targetInput: myInput
# 'filter' specifies a regex pattern the current event must match to scan for JSON objects.
# For example, the pattern below will filter out events that contain "level":"TRACE"
filter: ^((?!"level":"TRACE").)*$
# 'actions' specifies the actions taken by this extractor.
# Define actions using <type> followed by ':' and the JSON field they target.
# The following action types are supported (comment in/out the ones needed for your use case):
actions:
# Capture
# 'captureAll' transforms all instances of a matching JSON field (i.e., 'message')
# within the current event into TenXObjects
- captureAll:message
# 'captureFirst' transforms only the first instance of a matching JSON field (i.e., 'message')
# within the current event into an TenXObject
- captureFirst:message
# 'captureLast' transforms only the last instance matching JSON field (i.e., 'message')
# within the current event into an TenXObject
- captureLast:message
# Filter
# 'redact' resets the value of any matching JSON field (i.e., 'username') found in the event
# based on its JSON value type:
# - number -> 0
# - string -> ""
# - boolean -> true
# - object -> {}
# - array -> []
- redact:username
# 'drop' removes both field name and value of any matching
# JSON field (i.e., 'password') found in the event. This action applies to JSON extractors only.
- drop:password
# Advanced
# 'captureDefault' serves as a sink for events that fail to match the 'filter' pattern
# or do not contain any of the capture group names specified by 'actions'. These events are
# transformed into TenXObjects whose 'extractorKey' field returns this action's name (i.e., 'other')
- captureDefault:other
# 'noTransform' is the same as 'captureDefault' (see above), except captured events are not
# transformed into TenXObjects and remain as 'plain text' objects.
# This is useful when the events need to be routed by the 10x pipeline to a specific
# output, but do not require access to structured elements (e.g., the intrinsic 'vars' and 'timestamp' fields).
- noTransform:other
Options
Specify the options below to configure multiple Input extractor:
| Name | Description | Category |
|---|---|---|
| extractorName | Logical name identifying this extractor | General |
| extractorEnabled | A JavaScript expression that must be evaluated as 'truthy' to enable the extractor | General |
| extractorTargetInput | Regex pattern identifying all inputs to which this extractor should be applied | General |
| extractorType | The method used to extract values from the event. Possible values:[json, pattern] | General |
| extractorGroup | Name of group of extractors which will run together | General |
| extractorActions | Actions in the form of actionType:name. Possible values:[captureAll, captureFirst, captureLast, captureArrays, captureFirstArray, captureLastArray, captureDefault, captureField, setOuterText, drop, redact, noTransform] | General |
| extractorFilter | Regex pattern to match for the extractor to be applied | Pattern |
| extractorPattern | For regex extractors, the pattern for capturing named match groups. For JSON, the segment of text within events to scan for objects | Pattern |
| extractorForeach | Name of options group for whose instances to create matching extractors | Advanced |
General
extractorName
Logical name identifying this extractor.
| Type | Required | Category |
|---|---|---|
| String | ✔ | General |
Provides a logical name (e.g., 'message') for this JSON/regex extractor that target input(s) can reference to apply this extractor to events which the produce.
extractorEnabled
A JavaScript expression that must be evaluated as 'truthy' to enable the extractor.
| Type | Default | Category |
|---|---|---|
| Boolean | true | General |
enables/disables this extractor. If set, the JavaScript expression returns a truthy value to enable the extractor. For example, to configure this value to use a startup argument/shell variable, use:
extractorTargetInput
Regex pattern identifying all inputs to which this extractor should be applied.
| Type | Default | Category |
|---|---|---|
| String | "" | General |
Defines a regex pattern identifying all inputs to which this extractor should be applied.
For example, to apply an extractor to a datadog input, specify:
This argument enables applying this extractor to input(s) without changing their definition. vs. directly the input referencing the extractor directly via extractorName.
extractorType
The method used to extract values from the event. Possible values:[json, pattern].
| Type | Required | Category |
|---|---|---|
| String | ✔ | General |
Sets the type of extraction method to select, drop and redact values from a target input stream. Possible values:
- json: scan events for JSON objects containing fields specified in extractorActions.
- pattern: scan events for regex named capture groups of the pattern set by extractorPattern.
extractorGroup
Name of group of extractors which will run together.
| Type | Default | Category |
|---|---|---|
| String | "" | General |
Defines the name of extractor group this extractor will belong to. extractors of the same group will attempt to run together on events in a single processing pass to improve performance.
extractorActions
Actions in the form of actionType:name. Possible values:[captureAll, captureFirst, captureLast, captureArrays, captureFirstArray, captureLastArray, captureDefault, captureField, setOuterText, drop, redact, noTransform].
| Type | Default | Category |
|---|---|---|
| List | [] | General |
Defines a list of actions defined as: 'actionType:name:alias' (e.g., 'captureAll:message:alias') to capture and redact values to transform into TenXObjects.
For JSON extractors, 'name' refers to a field to look for in events and the value to which to apply the 'actionType'. This can be in the form of 'x.y.z' which will match internal fields in the json. For example: 'metadata.id' will match the 'id' field of the 'metadata' object in {"metadata": {"id": "1234"}}
For regex extractors, 'name' refers to a regex pattern match group defined by 'extractorPattern' to which to apply the 'actionType'.
This setting must be specified when extractorType = 'json'. If not specified and extractorType is 'pattern', the 'extractorPattern' pattern scans for regex capture groups, performing on each as'captureAll' action.
The 'alias' part is optional, and if provided is used to reference the object as it's name. This is useful when multiple extractors are used to extract different things which are later used in the same way.
If no capture groups are defined, any matches of the pattern within the input text line are captured.
Pattern
extractorFilter
Regex pattern to match for the extractor to be applied.
| Type | Default | Category |
|---|---|---|
| String | "" | Pattern |
Specifies a regex pattern an event must match to scan for JSON fields/regex pattern capture groups. This argument provides a way to rule out events from being transformed into TenXObject. To select events failing to meet this filter, define a captureDefault action.
extractorPattern
For regex extractors, the pattern for capturing named match groups. For JSON, the segment of text within events to scan for objects.
| Type | Default | Category |
|---|---|---|
| String | "" | Pattern |
Defines a regex pattern that applies to events read from an input stream.
For extractorType = pattern, matching groups are used as the 'name' portions of actions specified by 'extractorActions'.
If extractorType = json, only scan events for JSONs within the boundaries of the pattern's matches.
Advanced
extractorForeach
Name of options group for whose instances to create matching extractors.
| Type | Default | Category |
|---|---|---|
| String | "" | Advanced |
Specifies the name of an options group for whose instances to replicate this extractor. For example, the Elastic input defines the 'elastic' options group and configures an extractor to apply to each input stream created from its configured instances.
This unit is defined in extract/unit.yaml.