Splunk Search

stream rex substitution to stats

ddebroy
Engager

I have the following rex substitution in a query to aggregate various log messages (with the string Liveness and Readiness):

 

index=k8s ("event.go") AND (kind="Pod") AND (type="Warning" OR type="Error") source="*kubelet.log" | rex mode=sed "s/(object=\"[^\s]+\")(.*)Liveness(.*)/\1 message=\"Liveness Error\"/g" | rex mode=sed "s/(object=\"[^\s]+\")(.*)Readiness(.*)/\1 message=\"Readiness Error\"/g"| dedup object message

 

The above appears to work correctly and provide the desired result.

For example, the above transforms events like below:

 I0903 17:12:49.308289 2024433 event.go:211] "Event occurred" object="namespace1/podfoo" message="Readiness probe failed: + cd /sandbox\\n++ curl --output /dev/null --max-time 28 --silent --write-out '%{http_code}' http://0.0.0.0:20012/heartbeat\\n+ ret=000\\n+ for expected_status in 200\\n+ [[ 000 == 200 ]]\\n+ [[ '' == \\\\t\\\\r\\\\u\\\\e ]]\\n+ false\\n" 

nicely into  the following:

I0903 17:12:49.308289 2024433 event.go:211] "Event occurred" object="namespace1/podfoo" message="Readiness Error" 


However when I try to stream the above query into stats ("stats count by message"), the transformed events generated as part of the rex substitution disappears for some reason and stats seem to be acting on the original event messages (as if the rex sed had no effect).

 

index=k8s ("event.go") AND (kind="Pod") AND (type="Warning" OR type="Error") source="*kubelet.log" | rex mode=sed "s/(object=\"[^\s]+\")(.*)Liveness(.*)/\1 message=\"Liveness Error\"/g" | rex mode=sed "s/(object=\"[^\s]+\")(.*)Readiness(.*)/\1 message=\"Readiness Error\"/g"| dedup object message | stats count by message

 

With the above, stats appears to aggregate on the original message contents of the events rather than the output of the rex substitution. For example, I see:

message                                                                 count
Readiness probe errored: rpc error: code = Unknown ...                  1059
Readiness probe failed: HTTP probe failed with statuscode: 503          2003


rather than the substituted message fields aggregated to something along the lines of 

message                                                               count
Readiness Error                                                       3062

 


How can I get the output of the rex sed (like in the example above) to pass the substituted message fields in the events to stats?

Labels (1)
0 Karma
1 Solution

ITWhisperer
SplunkTrust
SplunkTrust

rex mode=sed has modified the _raw field, not the message field - either perform the rex on the message field (assuming has already been extracted), or re-extract the message field from the updated version of _raw

View solution in original post

ITWhisperer
SplunkTrust
SplunkTrust

rex mode=sed has modified the _raw field, not the message field - either perform the rex on the message field (assuming has already been extracted), or re-extract the message field from the updated version of _raw

Get Updates on the Splunk Community!

Announcing Scheduled Export GA for Dashboard Studio

We're excited to announce the general availability of Scheduled Export for Dashboard Studio. Starting in ...

Extending Observability Content to Splunk Cloud

Watch Now!   In this Extending Observability Content to Splunk Cloud Tech Talk, you'll see how to leverage ...

More Control Over Your Monitoring Costs with Archived Metrics GA in US-AWS!

What if there was a way you could keep all the metrics data you need while saving on storage costs?This is now ...