All Projects → flant → Grafana Statusmap

flant / Grafana Statusmap

Licence: mit
Grafana panel plugin to visualize status of multiple objects over time

Programming Languages

typescript
32286 projects

Labels

Projects that are alternatives of or similar to Grafana Statusmap

Go Project Sample
Introduce the best practice experience of Go project with a complete project example.通过一个完整的项目示例介绍Go语言项目的最佳实践经验.
Stars: ✭ 344 (-33.33%)
Mutual labels:  grafana
Kubernetes App
A set of dashboards and panels for kubernetes.
Stars: ✭ 398 (-22.87%)
Mutual labels:  grafana
Grafana Flowcharting
Flowcharting, plugin for Grafana to create complexe visio's draws style like technical architectures, floorplan, diagrams, hierarchical schema based on draw.io
Stars: ✭ 463 (-10.27%)
Mutual labels:  grafana
Devops Guide
DevOps Guide - Development to Production all configurations with basic notes to debug efficiently.
Stars: ✭ 4,119 (+698.26%)
Mutual labels:  grafana
Pihole Exporter
A Prometheus exporter for PI-Hole's Raspberry PI ad blocker
Stars: ✭ 352 (-31.78%)
Mutual labels:  grafana
Victoriametrics
VictoriaMetrics: fast, cost-effective monitoring solution and time series database
Stars: ✭ 5,558 (+977.13%)
Mutual labels:  grafana
Grafana On Raspberry
Grafana packages for raspberry pi (armv6/armv7) and aarch64/arm64
Stars: ✭ 318 (-38.37%)
Mutual labels:  grafana
Tgres
Time Series in Go and PostgreSQL
Stars: ✭ 481 (-6.78%)
Mutual labels:  grafana
Version Checker
Kubernetes utility for exposing image versions in use, compared to latest available upstream, as metrics.
Stars: ✭ 371 (-28.1%)
Mutual labels:  grafana
Wizzy
Manage & automate Grafana with easy wizzy
Stars: ✭ 461 (-10.66%)
Mutual labels:  grafana
Docker Statsd Influxdb Grafana
Docker Image with Telegraf (StatsD), InfluxDB and Grafana
Stars: ✭ 352 (-31.78%)
Mutual labels:  grafana
Awesome Monitoring
INFRASTRUCTURE、OPERATION SYSTEM and APPLICATION monitoring tools for Operations.
Stars: ✭ 356 (-31.01%)
Mutual labels:  grafana
Ansible Playbooks
Ansible playbook collection that have been written for Ubuntu. Some of the playbooks are Elasticsearch, Mesos, AWS, MySql, Sensu, Nginx etc..
Stars: ✭ 429 (-16.86%)
Mutual labels:  grafana
Kubegraf
Grafana-plugin for k8s' monitoring
Stars: ✭ 345 (-33.14%)
Mutual labels:  grafana
Clickhouse Grafana
Clickhouse datasource for grafana
Stars: ✭ 462 (-10.47%)
Mutual labels:  grafana
Ansible Grafana
Platform for analytics and monitoring
Stars: ✭ 340 (-34.11%)
Mutual labels:  grafana
Dockprom
Docker hosts and containers monitoring with Prometheus, Grafana, cAdvisor, NodeExporter and AlertManager
Stars: ✭ 4,489 (+769.96%)
Mutual labels:  grafana
Monitoring
Monitor ESXi, Synology, Docker, PiHole and Raspberry Pi and Windows using Grafana, InfluxDB and Telegraf
Stars: ✭ 493 (-4.46%)
Mutual labels:  grafana
Docker monitoring logging alerting
Docker host and container monitoring, logging and alerting out of the box using cAdvisor, Prometheus, Grafana for monitoring, Elasticsearch, Kibana and Logstash for logging and elastalert and Alertmanager for alerting.
Stars: ✭ 479 (-7.17%)
Mutual labels:  grafana
Cluster Monitoring
Cluster monitoring stack for clusters based on Prometheus Operator
Stars: ✭ 453 (-12.21%)
Mutual labels:  grafana

Statusmap panel for Grafana

Download from GitHub GH Discussions Telegram chat RU Follow Flant on Twitter

Panel to show discrete statuses of multiple targets over time.

Statusmap sample panel

Statusmap sample panel with dark theme

Features

  • Grouping values into rows and buckets using legend from query
  • User defined color mapping
  • Multiple values in bucket are displayed via tooltip
  • Increasing rows/buckets' interval for better visual representation
  • Representing null values as empty bucket or zero value

Supported environment

  • Tested with datasources:
    • Prometheus
    • InfluxDB
    • Mysql
  • Supported Grafana versions:
    • 6.7+ are the most priority (6.7, 7.0-7.4)
    • also works in 5.4.3 and 6.0+

Motivation

We had a desperate need to visualize a set of timeseries statuses over time period, so we can see a history of changes for objects' status. Since we maintain a lot of Kubernetes clusters (and related infrastructure), our main cases for that are visualization of servers & Kubernetes pods health states as well as HTTP services health checks. We've tried a variety of Grafana plugins available (they are listed in Acknowledgements below) but none of them could provide the features and visualization really close to what we've been looking for.

NB: You can find more details about our journey of creating the plugin in this post.

Objects being visualized with this plugin may be different: not only IT components (e.g. server hosts and Kubernetes pods) but just anything you can imagine like coffee makers on the picture above. These objects should have discrete statuses which are sets of predefined values, e.g. ok = 0, off = 1, fail = 2, etc.

Configuration

Datasource notes

To create neat graphs your datasource should return good data. Plugin adjust $__interval variable depending on bucket width in panel options. Your queries should aggregate statuses over $__interval.

To make multiple values mode works as expected you should define multiple queries: one query for each possible status.

Plugin doesn't aggregate data in time for now, it only renders input data as buckets. Because of this data should contain points for each timestamp in time range and equal timestamps for every possible target (y-axis label). This limitation is addressed by issue #53.

Prometheus

To work with data from Prometheus you will need to setup discrete statuses for your objects. Requirements to store these statuses in metrics are as follows:

  • metrics should have two values: 0 and 1;
  • there should be a label with status' value.

When it's done, you can collect all the data via query, e.g.:

(max_over_time(coffee_maker_status{status="<STATUS_VALUE>"}[$__interval]) == 1) * <STATUS_VALUE>

If there was no such status (<STATUS_VALUE>) during query's interval, Prometheus would return nothing. Otherwise, status' value will be returned.

For example, if you have 5 types of statuses and a metric (coffee_maker_status) with 5 allowed values (0, 1, 2, 3, 4), you should transform this metric using following rule:

- record: coffee_maker_status:discrete
  expr: |
    count_values("status", coffee_maker_status)

That's how coffee_maker_status metric with value 3 will be transformed into new metric:

coffee_maker_status:discrete{status="3"} 1

Now, when Prometheus has 0 and 1 values for each status, all these metrics can be aggregated, so you will get all available statuses of your objects over time.

InfluxDB

Choose 'Time series' for 'Format as' and use GROUP BY ($__interval) in query. $tag_<tag name> can be used in 'Alias by' to define y-axis labels.

Mysql

Example query with aggregation over $__interval is like this (you need one query for each possible status value):

SELECT
  $__timeGroupAlias(date_insert,$__interval),
  name AS metric,
  min(statusi) AS "statusi"
FROM coffee_makers
WHERE
  $__timeFilter(date_insert) AND statusi=1
GROUP BY 1,2
ORDER BY $__timeGroup(date_insert,$__interval)

metric column is used as y-axis label.

Panel

First of all, an individual query for each possible status' value should be created. Each query should also have similar legend for grouping:

Query setup

Then, color mapping for status' values should be defined in Discrete color mode:

Color mapping

Use can use presets to define a trafic light colors or 8 colors from solarized palette:

Color mapping empty

Color mapping trafic lights

Note: Spectrum and Opacity color modes function the same way they do in Heatmap plugin.

More options

Bucket

Bucket options

Multiple values checkbox specifies how they should be displayed:

  • If it's off, multiple values for one bucket are treated as error;
  • If it's on, color for such bucket would be determined by the value having least index in color mapping.

Color mapping

Display nulls can be treated as empty buckets or displayed with the color of 0 value.

Color mapping

Min width and spacing are used to specify minimal bucket width and spacing between buckets. Rounding may be used to round edges.

Min width, spacing, rounding 1

Min width, spacing, rounding 2

Values index set to positive number to display only values from specified timeseries.

Display

Display options

Show legend checkbox toggles legend at the bottom of the panel.

Rows sort can be used to sort labels on Y axis. Metrics — sort y labels as they are defined on Metrics tab. a→z and z→a sort labels descending or ascending in a natural order.

Pagination

Pagination controls

Enable pagination toggles pagination controls on graph.

Rows per page a number of rows to display on graph.

Tooltip

Tooltip in frozen state

Show tooltip toggles tooltip display on mouse over buckets.

Freeze on click toggles tooltip "freezing" on click. Frozen tooltip can be used to compare data with floating tooltip or to follow URLs.

Show items toggles display of additional items in tooltip.

Items is a list of definitions to display URLs in tooltip.

Each URL has a template, icon, label and formating options: lowercase and date format for variables.

Tooltip items editor

Learn more

Acknowledgements

The first public release of this plugin has been fully made by Flant engineers. The whole idea has come from Dmitry Stolyarov (@distol), initial version has been written by Sergey Gnuskov (@gsmetal) and final changes has been made by Ivan Mikheykin (@diafour).

This plugin is based on "Heatmap" panel by Grafana and partly inspired by ideas from Carpet plot, Discrete panel, Status Panel, Status Dot, Status By Group.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].