I’m working on what should be a pretty basic visualization: plotting events on the y-axis and time on the x-axis, with horizontal bars showing the duration from start to end time. Sounds like a textbook use case for a Gantt chart, right?
Well, I’ve tried everything:
- Time series panel — not built for this.
- Bar gauges — nope.
- State timeline — close, but not reusable in the way the old Gantt plugin was.
The marcusolsson-gantt-panel plugin used to do exactly what I needed, but it’s no longer maintained. The author recommends exploring the state timeline panel instead — but after trying it myself and reading many similar posts, I can confidently say: it’s not the same. It doesn’t offer the same flexibility or clarity for visualizing event durations.
If nothing existing can be reused or repurposed for this, then why not build a core Gantt chart panel into Grafana? This kind of visualization is essential for many use cases - monitoring pipelines, job scheduling, process tracking, etc.
I really hope someone on the team is working on this. Thanks for listening and sorry for the rant!
2 Likes
I never had to use Gantt chart in Grafana, nor that I maintain any of the plugins. Could you detail a bit more what’s missing in State timeline compared to Marcus’ plugin ?
Thanks for jumping in! I totally get that the State Timeline panel is designed for a different use case, but here’s where I ran into trouble trying to use it for event duration visualization:
- Padding with nulls: To show durations that occur at specific times (e.g., a task from 04:00 to 04:11), I had to pad the data with nulls or dummy values for all the times when that event wasn’t active. This gets messy fast, especially when events are sparse or irregular.
- Infinite end times: The State Timeline assumes that the last state continues indefinitely. That makes sense for monitoring stateful systems, but it’s a problem when I want to show discrete durations—like a task that ended 10 minutes ago and isn’t currently active. There’s no clean way to say “this event ended and nothing followed.”
So while I understand the design philosophy behind State Timeline, it’s a bit too rigid for use cases where I just want to show event durations at various points in time—especially when:
- Events don’t happen continuously.
- Some events overlap.
- Some events are in the past and not currently active.
Have you ever needed to visualize discrete event durations like this? If so, how did you approach it?
I played a bit with State timeline, and I believe the main issue is about the data format expected. I would be easier to use as a Gantt with a table formated like:
| Start time | End time | Task | State |
|------------|----------|------|-----------|
| 09:00 | 09:05 | A | Preparing |
| 09:00 | 09:10 | B | Preparing |
| 09:15 | 09:20 | C | Working |
This would allow for simple SQL queries (as I don’t expect calendar events to be stored in a TSDB)
State timeline can display discrete events when using start / end / state format.
But it’s cumbersome to use as it has been designed for timeseries. This following example is kind-of-incorrect™:
Beside start/end columns, it expects one column for each task. On line 1, I defined task A to start at 9:00 and end at 9:06. On line 2, I defined task A (again, because the column exists) to be nulled from 9:03 to 9:04. Result: task starts at 9:00, ends at 9:03, doesn’t start again from 9:04 to 9:06
I am providing contradicting informations to a perfectly working plugin. That’s why I believe adding a newly supported format of table would makes State timeline a good option for Gantt.
Would it make sense ? It’s not a promise to implement anything as I am not managing any of the plugins, just personal interest and curiousity.
Yes, exactly. The State Timeline panel works well for continuous state tracking, but it’s not ideal when repurposed as a Gantt chart. It expects time series data with one column per task and continuous states, which makes it hard to represent discrete event durations - especially when events overlap.
A Gantt chart and a state timeline serve different purposes. I’d really like to see a core Gantt panel in Grafana that supports start/end durations, overlap handling, and a simple table format. Repurposing State Timeline for this feels like a workaround, not a solution.
1 Like
currently there is no such core plugin.
1 Like
I don’t get why adding the ability to read a new table format in State Timeline would be a workaround and not a solution. What would be missing ?