Splunk Search

How can I show empty timechart with global_time date range?

vmpj
Loves-to-Learn

I have three graphs that show results based on a global time range.
However, if I have no results (no errors) the third graph is not displayed.

vmpj_0-1666350521205.png

I just want to display an empty graph with the same date ranges as the other graphs without displaying artificially inserted results that could be intepreted as errors.

None of the many posts regarding this issue solved my problem as far as I understand it.

Thanks in advance.

Labels (1)
0 Karma

johnhuang
Motivator

What's the search query?

0 Karma

vmpj
Loves-to-Learn

Something like this:

index="applications-esl" 
| spath input=properties.message
| rename message.id as s4-uuid
| eval _time=strptime(time, "%FT%T.%QZ")
| sort +_time limit=0
| stats 
  last(_time) as _time,
  list(logMsg) as log,
  by s4-uuid
| eval status = case(match(log,"(?i).*successfully.*"),"Success", match(log,".*"),"Failed")
| table _time, status
| search status="Success"
| timechart span=1m count

Thanks.

0 Karma

vmpj
Loves-to-Learn

Put another way;

If I select a time range that does not contain any events,
how can I still see a graph for the selected time range, even though it does not contain any data? 

0 Karma

johnhuang
Motivator

For your example, there's an easy solution. Run fillnull:

 

| eval status = case(match(log,"(?i).*successfully.*"),"Success", match(log,".*"),"Failed")
| table _time, status
| fillnull value=0 status

 

0 Karma

vmpj
Loves-to-Learn

I can see how fillnull would be helpful if some events did not have a status value.
However, that is not the problem I'm trying to solve. 

Here is a simplified scenario where the status is set for all events:

index="applications-esl" 
| eval status = "Success"
| table _time, status

But there are no events, in the time range selected, there is nothing to fill.
In this case I just get a "No results found. Try expanding the time range." when I really want an empty graph that reflects the selected time range on the x-axis.

0 Karma

johnhuang
Motivator

Ok, this should work. Note the trick is to set event_ct=1 for real data and event_ct=0 for fake data, then generate fake data if there aren't any results. When you summarize it, you would use sum(event_ct) instead of count.

<base_search>
| eval event_ct=1
| appendpipe [stats count | addinfo | eval _time=info_max_time
| where count=0 | eval event_ct=0 | fields _time event_ct]
| timechart span=10m sum(event_ct) AS event_ct
| fillnull value=0 event_ct

 

<base_search>
| eval event_ct=1
| appendpipe [stats count | addinfo | eval _time=info_max_time 
| where count=0 | eval event_ct=0 | fields _time event_ct] 
| timechart span=10m sum(event_ct) AS event_ct
| fillnull value=0 event_ct

 

 

0 Karma
Got questions? Get answers!

Join the Splunk Community Slack to learn, troubleshoot, and make connections with fellow Splunk practitioners in real time!

Meet up IRL or virtually!

Join Splunk User Groups to connect and learn in-person by region or remotely by topic or industry.

Get Updates on the Splunk Community!

Announcing Modern Navigation: A New Era of Splunk User Experience

We are excited to introduce the Modern Navigation feature in the Splunk Platform, available to both cloud and ...

Observability Simplified: Combining User Experience, Application Performance & ...

Tech Talk Observability Simplified: Combining User Experience, Application Performance & Network ...

Event Series May & June: From Network Visibility to Service Intelligence

Unifying the Network: Moving from Alert Noise to Service Intelligence with Splunk ITSI In today’s hybrid ...