服务架构——Grafana

673 阅读4分钟

Grafana基本概念

首先Grafana是一个通用的可视化工具。‘通用’意味着Grafana不仅仅适用于展示Prometheus下的监控数据,也同样适用于一些其他的数据可视化需求。在开始使用Grafana之前,我们首先需要明确一些Grafana下的基本概念,以帮助用户能够快速理解Grafana。

数据源广: Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等。

支持混合数据源,在同一个图中混合不同的数据源,可以根据每个查询指定数据源,甚至适用于自定义数据源。

报警:支持可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时进行告警。

过滤器:过滤器允许动态创建新的键/值过滤器,这些过滤器将自动应用于使用该数据源的所有查询。

在整个监控体系中,Exporter 数据生产者,采集需要监控的数据。Prometheus 普罗米修斯时序数据库,用来存储和查询的监控数据,从Exporter上拉取。Grafana 可视化工具仪表盘。

图片.png

Grafana入门使用

这里需要区分两个概念:

  • 看板(dashboard): 一个或多个数据图表形成的集合
  • 面板(panel):组成看板的其中一个图表

(一)创建一个看板 (dashboard)

创建一个数据可视化看板的前提是需要有数据源的接入, 具体具体接入方法见数据与图表的添加与扩展

打开Grafana平台,点击左侧"加号",点击Create类目下的Dashboard 按钮,新创建一个空表的看板, 会默认弹出四个添加panel的选项

图片.png

图片.png

Grafana 的巨大优势

统一数据,而非数据库

Grafana 并不要求你将数据输入到后端存储或供应商数据库。相反,Grafana 采取了一种独特的方法,通过统一你现有的数据,不管它在哪里,来提供一个 "单一的玻璃窗"。

有了 Grafana,你可以利用你的任何现有数据--无论是来自 Kubernetes 集群、树莓派、不同的云服务,甚至是谷歌表格--并以你想要的方式将其可视化,所有这些都来自一个单一的仪表盘。

共享 协作

Grafana 建立在这样一个原则上:数据应该被你组织中的每一个人访问,而不仅仅是单一的运营人员。

通过数据的民主化,Grafana 有助于促进一种文化,在这种文化中,数据可以很容易地被需要它的人使用和访问,帮助打破数据孤岛并赋予团队权力。

Grafana 仪表盘不仅为从众多来源收集的数据赋予了深刻的意义,而且你还可以与其他团队成员分享你创建的仪表盘,让你们一起探索数据。

有了 Grafana,任何人都可以创建和分享动态仪表盘,以促进协作和透明度。

使用Graph面板可视化Histogram

以Prometheus自身的监控指标prometheus_tsdb_compaction_duration为例,该监控指标记录了Prometheus进行数据压缩任务的运行耗时的分布统计情况。如下所示,是Prometheus返回的样本数据:

# HELP prometheus_tsdb_compaction_duration Duration of compaction runs.
# TYPE prometheus_tsdb_compaction_duration histogram
prometheus_tsdb_compaction_duration_bucket{le="1"} 2
prometheus_tsdb_compaction_duration_bucket{le="2"} 36
prometheus_tsdb_compaction_duration_bucket{le="4"} 36
prometheus_tsdb_compaction_duration_bucket{le="8"} 36
prometheus_tsdb_compaction_duration_bucket{le="16"} 36
prometheus_tsdb_compaction_duration_bucket{le="32"} 36
prometheus_tsdb_compaction_duration_bucket{le="64"} 36
prometheus_tsdb_compaction_duration_bucket{le="128"} 36
prometheus_tsdb_compaction_duration_bucket{le="256"} 3

之前我们已经介绍过Histogram的指标,Histogram用于统计样本数据的分布情况,其中标签le定义了分布桶Bucket的边界,如上所示,表示当前Prometheus共进行了36次数据压缩,总耗时为51.31017077500001ms。其中任务耗时在01ms区间内的为2次、在02ms区间范围内为36次,以此类推。如下所示,如果需要在Graph中显示Histogram类型的监控指标,需要在Query Editor中定义查询结果的Format as为Heatmap。通过该设置Grafana会自动计算Histogram中的Bucket边界范围以及该范围内的值

Graph面板重新计算了Bucket边界,如下所示,在01ms范围内的任务次数为2,在12ms范围内的运行任务次数为34。通过图形的面积,可以反映出各个Bucket下的大致数据分布情况:

图片.png

不过通过Graph面板展示Histogram也并不太直观,其并不能直接反映出Bucket的 大小以及分布情况,因此在Grafana V5版本以后更推荐使用Heatmap面板的方式展示Histogram样本数据。