文章目录

  • Logkit + InfluxDB + Grafana 性能看板解决方案
  • Logkit:数据采集
  • InfluxDB:数据持久化
  • Grafana:数据可视化
  • Logkit + InfluxDB + Grafana 性能看板的优缺点分析
  • 优点
  • 缺点


Logkit + InfluxDB + Grafana 性能看板解决方案

这里借用 Logkit 的一张图片简单说明三者之间的关系:

grafana api 的用处_InfluxDB

如上图所示,Logkit、InfluxDB 以及 Grafana 在性能监控任务中的分工为:

  • Logkit:数据采集
  • InfluxDB:数据持久化
  • Grafana:数据可视化

Logkit:数据采集

grafana api 的用处_logkit_02

笔者所在项目团队实际用的是 Logkit 的开源版本,这里简要介绍下 Logkit 的大致功能:

logkit-community(社区版)是七牛智能日志管理平台开发的一个配套的日志收集工具,支持海量的数据源,方便地发送到七牛智能日志管理平台以及其他常见的数据存储服务进行分析,除了基本的数据发送功能,logkit 还有容错、并发、监控、删除等功能。其主要的工作流程为:

grafana api 的用处_性能_03

InfluxDB:数据持久化

以下内容整理自:https://zh.wikipedia.org/zh-hans/InfluxDB

InfluxDB是一个由InfluxData开发的开源时序型数据库,它着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。

grafana api 的用处_性能_04

  • InfluxDB在技术实现上充分利用了Go语言的特性,无需任何外部依赖即可独立部署。
  • InfluxDB提供了一个类似于SQL的查询语言并且一系列内置函数方便用户进行数据查询。
  • InfluxDB存储的数据从逻辑上由 Measurement, tag组以及 field组以及一个时间戳组成的:
  • Measurement: 由一个字符串表示该条记录对应的含义。
  • tag组: 由一组键值对组成,表示的是该条记录的一系列属性信息。同样的measurement数据所拥有的tag组不一定相同,它是无模式的(Schema-free)。tag信息是默认被索引的。
  • field组:也是由一组键值对组成,表示的是该条记录具体的value信息(有名称)。field组中可定义的value类型包括:64位整型,64位浮点型,字符串以及布尔型。Field信息是无法被索引的。
  • 时间戳:就是该条记录的时间属性。如果插入数据时没有明确指定时间戳,则默认存储在数据库中的时间戳则为该条记录的入库时间。
  • InfluxDB支持基于HTTP的数据插入与查询。同时也接受直接基于TCP或UDP协议的连接。
  • InfluxDB允许用户定义数据保存策略来实现对存储超过指定时间的数据进行删除或者降采样。

Grafana:数据可视化

直接先看官方给的介绍:

The analytics platform for all your metrics
Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data driven culture.

在我们实际使用而言,Grafana 一大特色就是支持用户根据项目需要灵活的定制看板内容,而且官方也提供了大量的基础 panels (30+)以及 dashboard(1000+)以便快速接入。

例如,Jmeter性能测试结果就可以 Grafana 官网仓库中的 Dashboard 进行展示,效果如下:

grafana api 的用处_logkit_05

Logkit + InfluxDB + Grafana 性能看板的优缺点分析

优点

  • 通过 InfluxDB, 将数据采集与数据可视化完全解耦,功能扩展性超强
  • 无论是 Logkit 还是 Grafana,都具备很高的易操作性(拥有前端配置页面)、可扩展性(插件式设计)

缺点

  • 重大缺陷:Grafana 设计上仅支持时序数据的展示,用作展示各版本的性能数据略显尴尬