Grafana如何对接TSDB
Grafana是用于展示大型测量数据的开源可视化工具,在互联网应用分析中应用十分广泛,并且也在工业监控、气象监控、家居自动化和过程管理等领域也有着较广泛的用户基础。将TSDB接入Grafana后,您可以利用Grafana的丰富易用的可视化工具,更好地监控和分析来自TSDB的数据。
环境准备
下文以ECS服务器上搭建Grafana服务,并通过VPC网络连接到TSDB实例为示例。关于ECS的使用,详细请参见什么是云服务器ECS。
需要申请一个TSDB实例,以及一台与TSDB实例在同一个VPC网络下的ECS服务器,并满足如下要求:
操作系统选择CentOS 7.3 64位。
硬件资源需要单核2 G及以上内存,磁盘剩余空间不少于10 G。
ECS服务器在VPC网络中的地址已加入TSDB实例的网络白名单。
已为ECS服务器配置了一个公网IP(可以通过公网用浏览器访问Grafana)。
已在ECS控制台添加了一个安全组规则,开放3000端口的访问,具体操作请参见创建安全组。
软件安装和设置
需要依照以下方法在ECS服务器中安装并启用Grafana。详细的安装说明可以参照Grafana官方帮助文档。
在ECS服务器中运行类似以下的命令来安装Grafana:
$ sudo yum install https://dl.grafana.com/oss/release/grafana-6.2.2-1.x86_64.rpm
启动 Grafana 服务:
$ sudo service grafana-server start
接入 TSDB
按照以下步骤在Grafana中接入TSDB数据源:
在浏览器中连接 ECS 的3000端口,进入Grafana 登录页面。
例如:ECS的公网地址是106.15.XX.XX,那么在浏览器中输入地址
http://106.15.XX.XX:3000/
。在Grafana登录页面,输入用户名“admin” 和密码“admin” 。登录成功后,进入Grafana主页。
在Grafana中创建一个data source。创建时需指定以下信息(其他设置采用默认值即可):
数据库类型:选择OpenTSDB。
HTTP URL:填写您的VPC网络地址。要查看该地址,请在TSDB控制台中进入实例详情下的基础信息,查看VPC网络地址一栏。
OpenTSDB 版本:选择==2.3。
如果实例开启了用户管理功能,则还需要选中Basic Auth以及With Credentials,并填入一个具备读权限的用户认证信息。
单击Save & Test按钮后,若界面上弹出提示语
Data source is working
,则表明Grafana已经成功连接上指定的TSDB实例。
设置完毕后,您就可以在Grafana中创建dashboard并开始使用了。关于具体创建方法,请参见Grafana 官方帮助文档。
下文将介绍使用Grafana展示TSDB时序数据的一些常用场景的使用方法。
创建展示特定指标的监控视图
本文后续的截图都是按照Grafana 6.2的提供的界面进行的画面截图,根据Grafana的版本不同,画面展示可能会与本文截图存在出入。
在Grafana的界面上选择“Create”,并选择“Dashboard”。如下图所示:
如果是已有为该TSDB实例创建Dashboard的情况下,则只需选择已有的Dashboard。
在打开的Dashboard界面中,先点击New Panel,并在打开的New Panel界面中选择Add Query。如下图所示:
在下述Panel编辑画面中,分别根据需要进行以下设置。
设置要监控的指标(Metric),以及基于该指标是否要进行聚合(Aggregator)。
根据需要设置相应的降精度(Downsample)规则,包括降精度的时间间隔(interval), 降精度的聚合方法(Aggregator), 插值策略(Fill)等。
设置要监控的时间线对象的定义,按组进行Tags定义。如果要对某个Tag的所有标签值所对应的时间线进行监控,则需要在标签值一栏填入
*
。重要在Grafana提供选择的Aggregator中,TSDB支持的Aggregator算子,详情请参见单值查询数据。
可以使用Grafana展示TSDB多值模型数据。在metric栏输入单值模型或者多值模型指标名称,此时下拉菜单只会展示指标名称。输入完多值模型metric名称之后,加入特殊符号 @,此时下拉菜单会展示该metric下所有fields的信息,选取需要查看的field即可。
重要Grafana 只支持数字类型的展示,但是 TSDB 同时支持数字、字符串和布尔类型
使用变量简化过滤时间线的数据展示
如果在时间线比较多而且增加得比较频繁时,需要实时地在已创建的panel中去实时显示一些新创建的时间线,就需要一个个指定metric的值,tagkey的值或者tagvalue的值,给使用上带来极大的不便。为了简化相关过程,Grafana提供了变量(Variables)的功能。
下文将通过在指定tag的过滤条件中创建并使用变量来介绍如何通过变量来灵活地过滤数据展示时的时间线设置。
在Grafana的选定Dashboard画面中单击Settings。
在Variables界面中设置要创建的变量以及变量值的获取规则。
“DataSource”:选择“OpenTSDB”。
“query”:根据Grafana对OpenTSDB提供的查询表达式填写相应的表达式。
在本例中,由于设置的是Tagvalue的变量,因此写的是
tag_values
表达式。TSDB 兼容Grafana为OpenTSDB提供的全部查询表达式:
metrics(prefix)
:根据指定的前缀字符串返回查询到的所有metric(可能为空)。tag_names(metric)
:根据指定的metric返回查询到的所有tag key的名称。tag_values(metric, tagKey)
:根据指定的metric和tagKey返回查询到的所有tagKey。suggest_tagk(prefix)
:根据指定的前缀字符串返回所有metric下满足该查询条件的tagvalue。suggest_tagv(prefix)
:根据指定的前缀字符串返回所有metric下满足该查询条件的tagvalue。
关于上述查询表达式的详细内容,请参见Grafana官方手册。
重要目前所有已经Release的Grafana版本中返回的查询结果个数是存在一个上限的。这有可能导致存在用户的某些期望的metric, tagkey, tagvalue未被包括在返回的查询结果的情况。目前Grafana社区已经注意到这个问题,但截止到Grafana的6.2.2版本,这个问题尚未被修复。如果使用中碰到了该问题,建议用户通过更改查询条件等方法来规避。
变量设置完毕后,在Dashboard中创建Panel或编辑已有Panel时,即可通过
$变量名
的方式来引用变量所指代的查询。