A status history visualization displays data in a way that shows periodic states over time. In a status history, each field or series is rendered as a horizontal row, with multiple boxes showing the different statuses. This provides you with a centralized view for the status of a component or service.
For example, if you're monitoring the health status of different services, you can use a status history to visualize the different statuses, such as “True” or "False," over time. Each status is represented by a different color:
{{<figuresrc="/media/docs/grafana/panels-visualizations/screenshot-status-history-v11.6.png"max-width="800px"alt="A status history panel showing the health status of different sensors">}}
A status history is similar to a [state timeline](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/state-timeline/), but has different [configuration options](#status-history-options). Unlike state timelines, status histories don't merge consecutive values.
- Monitor the status of a server, application, or service to know when your infrastructure is experiencing issues over time.
- Identify operational trends over time.
- Spot any recurring issues with the health of your applications.
## Configure a status history
Once you've [created a dashboard](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/dashboards/build-dashboards/create-dashboard/), you can use the following state timeline video as a reference for how to configure a status history:
The status history visualization works best if you have data capturing the various status of entities over time, formatted as a table. The data must include:
- **Timestamps** - Indicate when each status change occurred. This could also be the start time for the status change. You can also add an optional timestamp to indicate the end time for the status change.
- **Entity name/identifier** - Represents the name of the entity you're trying to monitor.
- **Status value** - Represents the state value of the entity you're monitoring. These can be string, numerical, or boolean states.
### Examples
The following tables are examples of the type of data you need for a status history visualization and how it should be formatted.
#### Single time column with null values
| Timestamps | Backend_01 | Backend_02 |
| ------------------ | ---------- | ---------- |
| 2024-02-29 8:00:00 | OK | WARN |
| 2024-02-29 8:15:00 | WARN | |
| 2024-02-29 8:18:00 | | WARN |
| 2024-02-29 8:30:00 | BAD | |
| 2024-02-29 8:36:00 | | OK |
| 2024-02-29 8:45:00 | OK | |
The data is converted as follows, with the null and empty values visualized as gaps in the status history:
{{<figuresrc="/static/img/docs/status-history-panel/status_history_with_null.png"max-width="1025px"alt="A status history panel with null values showing the status of two servers">}}
#### Two time columns without null values
| Start time | End time | Backend_01 | Backend_02 |
{{<figuresrc="/static/img/docs/status-history-panel/status_history.png"max-width="1025px"alt="A status history panel with two time columns showing the status of two servers">}}
| Show values | Controls whether values are rendered inside the state regions. Choose from **Auto**, **Always**, and **Never**. **Auto** renders values if there is sufficient space. |
| Row height | Controls the height of boxes. 1 = maximum space and 0 = minimum space. |
| Column width | Controls the width of boxes. 1 = maximum space and 0 = minimum space. |
| Page size (enable pagination) | The **Page size** option lets you paginate the status history visualization to limit how many series are visible at once. This is useful when you have many series. |
| Line width | Controls line width of state regions. |
| Fill opacity | Controls value alignment inside state regions. |