全部产品

Grafana如何对接TSDB

更新时间:2019-08-16 10:25:51

Grafana是用于展示大型测量数据的开源可视化工具,在互联网应用分析中应用十分广泛,并且也在工业监控、气象监控、家居自动化和过程管理等领域也有着较广泛的用户基础。将 TSDB 接入 Grafana 后,您可以利用 Grafana 的丰富易用的可视化工具更好地监控和分析来自 TSDB 的数据。

本文介绍如何将 TSDB 接入 Grafana。

环境准备

下文假定用户希望在ECS服务器上搭建Grafana服务,并通过VPC网络连接到TSDB实例:

因此用户需要申请一个TSDB 实例,以及一台与TSDB实例在同一个 VPC 网络下的 ECS 服务器,并满足如下要求:

  • 操作系统选择 CentOS 7.3 64 位。
  • 硬件资源需要单核 2G 内存以上,磁盘剩余空间不少于 10G。
  • ECS服务器在VPC网络中的地址已加入TSDB实例的网络白名单
  • 已为ECS服务器配置了一个公网 IP (假设用户希望可以通过公网用浏览器访问Grafana)。
  • 已在 ECS 控制台添加了一个安全组规则,开放 3000 端口的访问,如下图所示:

security rule

注:关于 ECS 的使用,详细请参见云服务器 ECS使用手册

软件安装和设置

接下来,您需要依照以下方法在 ECS 服务器中安装并启用 Grafana。

  1. 在 ECS 服务器中运行类似以下的命令来安装 Grafana:

    1. $ sudo yum install https://dl.grafana.com/oss/release/grafana-6.2.2-1.x86_64.rpm

    注:详细的安装说明可以参照Grafana的官方手册

  2. 启动 Grafana 服务:

    1. $ sudo service grafana-server start

接入 TSDB

按照以下步骤在 Grafana 中接入 TSDB 数据源:

  1. 在浏览器中连接 ECS 的 3000 端口,进入 Grafana 登录页面。例如:ECS 的公网地址是 106.15.195.23,那么在浏览器中输入地址http://106.15.195.23:3000/;

  2. 在 Grafana 登录页面,输入用户名“admin” 和密码 “admin” 。登录成功后,进入 Grafana 主页。

  3. 在 Grafana 中创建一个 data source。创建时需指定以下信息(其他设置采用默认值即可):

    • 数据库类型:选择 OpenTSDB

    • HTTP URL:填写您的 VPC 网络地址。要查看该地址,请在 TSDB 控制台中进入实例详情 下的 基础信息,查看VPC网络地址一栏。

    • OpenTSDB 版本:选择==2.3

      add data source

      点击”Save & Test”按钮后,若界面上弹出提示语Data source is working,则表明Grafana已经成功连接上指定的TSDB实例

设置完毕后,您就可以在 Grafana 中创建 dashboard 并开始使用了。关于具体创建方法,请阅读 Grafana 官方帮助文档

下文将介绍使用Grafana展示TSDB时序数据的一些常用场景的使用方法

创建展示特定指标的监控视图

  1. 在Grafana的界面上选择”Create”,并选择”Dashboard”。如下图所示:

    注:本文后续的截图都是按照Grafana 6.2的提供的界面进行的画面截图。根据Grafana的版本不同,画面展示可能会与本文截图存在出入

    创建新视图

    如果是已有连接至该TSDB实例的Dashboard的情况下,则只需选择已有的Dashboard

  2. 在打开的Dashboard界面中,先点击“New Panel”,并在打开的 New Panel界面中选择“Add Query”。如下图所示:

    New Panel

  3. 在下述Panel编辑画面中,分别根据需要进行以下设置:

    New Panel

    1. 设置要监控的指标(Metric),以及基于该指标是否要进行聚合(Aggregator)
    2. 根据需要设置相应的降精度(Downsample)规则,包括降精度的时间间隔(interval), 降精度的聚合方法(Aggregator), 插值策略(Fill)等
    3. 设置要监控的时间线对象的定义,按组进行Tags定义。如果要对某个Tag的所有标签值所对应的时间线进行监控,则需要在标签值一栏填入*注:在Grafana提供选择的Aggregator中,TSDB支持的Aggregator算子请参见 单值数据查询

      此外,如需在 Grafana 展示 TSDB 多值模型数据。在 metric 栏输入单值模型或者多值模型指标名称,此时下拉菜单只会展示指标名称。输入完多值模型 metric 名称之后,加入特殊符号 @,此时下拉菜单会展示该 metric 下所有 fields 的信息,选取需要查看的 field 即可。(注意:Grafana 只支持数字类型的展示,但是 TSDB 同时支持数字、字符串和布尔类型。)grafana_multi_fields

使用变量简化过滤时间线的数据展示

在章节【创建展示特定指标的监控视图】可以看到,我们可以在Dashboard中创建Query时通过指定metric,tagkey,tagvalue等方式来指定想要展示数据的时间线。但是在时间线比较多而且增加得比较频繁时,若要实时地在已创建的panel中去实时显示一些新创建的时间线,势必需要去一个个指定 metric的值,tagkey的值或者tagvalue的值,这会给使用上带来极大的不便。为了简化相关过程,Grafana提供了变量(Variables)的功能

下文将通过在指定tag的过滤条件中创建并使用变量来介绍如何通过变量来灵活地过滤数据展示时的时间线设置。

  1. 在Grafana的选定Dashboard画面中点击”Settings”

    Dashboard的Settings

  2. 在”Variables”界面中设置要创建的变量以及变量值的获取规则。 其中,

    • “DataSource”需要选择“OpenTSDB”
    • “query”需要根据Grafana对OpenTSDB提供的查询表达式填写相应的表达式。在本例中,由于设置的是Tagvalue的变量,因此写的是tag_values表达式.

      Variables值的设置

    • TSDB 兼容Granfa为OpenTSDB提供的全部查询表达式:

      • metrics(prefix) :根据指定的前缀字符串返回查询到的所有metric(可能为空)
      • tag_names(metric) :根据指定的metric返回查询到的所有tag key的名称
      • tag_values(metric, tagKey) :根据指定的metric和tagKey返回查询到的所有tagvalue
      • suggest_tagk(prefix):根据指定的前缀字符串返回所有metric下满足该查询条件的 tagKey
      • suggest_tagv(prefix) :根据指定的前缀字符串返回所有metric下满足该查询条件的 tagKey

      关于上述查询表达式的详细内容,请参见Grafana官方手册

      注意: 虽然上述查询表达式的描述中多次说到“所有”,但实际上在目前所有已经Release的Grafana版本中返回的查询结果个数是存在一个上限的。这有可能导致存在用户的某些期望的metric, tagkey, tagvalue未被包括在返回的查询结果的情况。目前Grafana社区已经意识到这个问题,但截止到Grafana的6.2.2版本,这个问题尚未被修复。如果用户使用中碰到了该问题,我们建议用户通过更改查询条件等方法来规避。

  3. 变量设置完毕后,在Dashboard中创建Panel或编辑已有Panel时,即可通过$变量名的方式来引用变量所指代的查询。

    using_variables_in_panel

    这样一来,即使用户的场景中有新的tagvalue写入导致创建了新的时间线,Grafana中上述Panel的条件也不需要重新编辑