Okay, I fixed the search (I hope) and added stuff to plot a line when the host is down and nothing when the host is up. It is pretty complicated, but this is the only way I could think of to do it: create the table much like you did, then generate a timeline, map the times onto the timeline and finally format the data so it can be displayed with a line chart visualization. Note that I trimmed out a lot of things that you can display in a table, but not on a line chart. So the search part is easier here:
search query (check.status = 2 OR check.status=0)
| rename check.status as check_status
| stats count as occurrences min(timestamp) as minTime by id, client.name, client.address check_status
| where occurrences > 2
| eval tag = id . ":" . client.name . ":" . client.address
| fields - id, client.name, client.address
| eval first_time=if(check_status==2, minTime, null())
| eval recov_time=if(check_status==0, minTime, null())
| stats first(first_time) as first_time first(recov_time) as recov_time by tag
| streamstats count as host_number | eval _time = first_time
| append [ gentimes start=-7 increment=1h | sort 500 -endtime
| transpose 500 header_field=starttime include_empty=true | head 1 ]
| foreach 1* [ eval curPeriod = 1 . <<MATCHSTR>>
| eval <<FIELD>> = if(first_time <= curPeriod, host_num, null())
| eval <<FIELD>> = if('<<FIELD>>' ==host_num AND curPeriod <= recov_time , '<<FIELD>>' , null()) ]
| fields - column first next host_num recov_time first_time occurrences check_status
| table tag *
| transpose 1000 header_field=tag
| rename column as _time
| eval _time = strftime(_time,"%x %X")
I really feel like there should be an easier way, but darned if I can think of it. Maybe someone else will give a brilliant answer.
If you want to do a lot of nice graphics, I recommend that you download and examine the Splunk 6.x Dashboard Examples app; it's great. There is also the Machine Learning Toolkit and even an app for a Gantt chart. (I've never used the Gantt chart, but it might work well for this.)
... View more