grafana带有功能丰富的数据源插件influxDB。支持丰富的查询编辑器、注释和templating(模版)查询。

增加数据源(Adding the data source)

  1. 点击顶部Grafana图标打开侧边的菜单。
  2. 在 Dashboards链接下的侧菜单中,您应该找到一个名为Data Sources的链接。
  3. 在顶部点击 + Add data source按钮。
  4. 在Type下拉选项中选择 InfluxDB。

grafana数据源skywalking模板 grafana数据源无法使用_数据源

grafana数据源skywalking模板 grafana数据源无法使用_数据源_02

 

Edit/ADD data source

 name :数据源名称。这就是在面板和查询中引用数据源的方式。

defalut:默认的数据源意味着它将被预先选中用于新的面板。

Type

Http settings

Url:您的http协议、ip和influxDB api的端口(influxdb api端口是默认的8086)

Access:proxy:通过grafana后端访问,Direct:直接通过浏览器访问

Http Auth

Basic Auth

with Credentials

Tls client Auth

With CA Cert

InfluxDB Details

Database:influxdb数据库名称

User:数据库用户名

Password:数据库用户密码

Defalut group by time

注意:如果你没有在你的侧菜单中看到Data Sources链接,这意味着你当前的用户没有当前组织的Admin角色。

详细见;http://docs.grafana.org/features/datasources/influxdb/

 

Proxy vs Direct access

Proxy access means that the Grafana backend will proxy all requests from the browser. So requests to InfluxDB will be channeled through grafana-server. This means that the URL you specify needs to be accessible from the server you are running Grafana on. Proxy access mode is also more secure as the username & password will never reach the browser.

 

Query Editor

grafana数据源skywalking模板 grafana数据源无法使用_数据源_03

 

 你在graph或singlestat面板的metrics 页签找到influxDB编辑器。我也可以通过单击面板标题,然后edit。编辑器允许您选择metrics页签。

Filter data (WHERE)

where 若要添加标记筛选器,请单击Where加号图标”+“。您可以通过单击remove tag filters 来删除所选择的条件。

The $timeFilter or $__timeFilter Variable

grafana数据源skywalking模板 grafana数据源无法使用_聚合函数_04

$timefilter返回当前选择的时间范围为表达。

例如,time range表达时间为Last 7 days ,表达式为time > now() - 7d。

Grafana 会自动添加 $timeFilter,influxDB需要手动添加

如果你使用原始查询,请至少确保where有$timeFilter,也总用时间区间和聚合函数功能。 否则InfluxDB 很容易返回成千上万数据点提供浏览。

 

Regex matching

You can type in regex patterns for metric names or tag filter values, be sure to wrap the regex pattern in forward slashes (/). Grafana will automatically adjust the filter tag condition to use the InfluxDB regex match condition operator (=~)。

Field & Aggregation functions

在select行中,可以指定要使用的字段和函数。如果你有一个时间组(group by time),你需要一个聚合函数,像derivative 。
编辑器尝试简化并统一查询的这一部分。如下例子

grafana数据源skywalking模板 grafana数据源无法使用_聚合函数_05

以上将产生以下InfluxDB SELECT子句:

grafana数据源skywalking模板 grafana数据源无法使用_数据源_06

Select multiple fields

使用加号按钮并选择 Field > field来添加另一个SELECT子句。你也可以指定一个星号*选择所有字段

ALIAS BY

 可以将Series取个别名。 

grafana数据源skywalking模板 grafana数据源无法使用_聚合函数_07

 

 

Group By

GROUP BY,单击组结尾处的+图标。从出现的下拉列表中选择一个标记。您可以通过单击标签删除该组,然后单击X图标。

$interval:没有特别指定,默认是5分钟,$interval与auto一个意思 ,

grafana数据源skywalking模板 grafana数据源无法使用_字段_08

Group by time interval

grafana数据源skywalking模板 grafana数据源无法使用_数据源_09

设置这边可以改变$interval的值。我这写的时候 基本要大于5分钟,目前不是很清楚原因。

 

Group by time是很重要的,否则Grafana查询会返回成千上万的数据点会慢下来。
对于每个查询,将时间字段分组为空,并根据图的时间范围和像素宽度计算该组。
如果使用fill(0)或fill(null),则按时间间隔为自动组设置一个低限
下限只能在您查询的按组时间选项中设置。
在间隔之前添加一个更大的符号来设置一个下限。
例如:如果InfluxDB的metrics 为每60秒

 

Text Editor Mode (RAW)

您可以通过点击汉堡图标“

grafana数据源skywalking模板 grafana数据源无法使用_聚合函数_10

”切换到原始查询模式,更换数据库,然后切换编辑器模式。

如果你使用原始查询确认你的查询至少有WHERE $timeFilter,也请一直有group by time 和聚合函数,否则InfluxDB可以返回的数据点,将浏览器数十万。

Templating

metric 查询中,不必硬编码诸如server, application and sensor name 之类的东西,而是可以在它们的位置使用变量。
变量显示在dashboard顶部的下拉式选择框中。这些下拉菜单就可以很容易地改变在你的仪表板显示的数据。

Query variable

如果你添加的template变量,类型为Query,你可以写一个InfluxDB(meta data)查询。这些查询可以返回诸如measurement 名称, key 名称or key 值。

例如,你可以有一个变量包含标签为hostname的所有值,如果你指定一个查询在templating variable Query设置。

SHOW TAG VALUES WITH KEY = "hostname"
SHOW TAG VALUES WITH KEY = "hostname"

还可以创建嵌套变量。例如,如果您有另一个变量,例如region。然后,您可以拥有hosts变量,只显示当前选择区域中的主机,查询如下:

SHOW TAG VALUES WITH KEY = "hostname" WHERE region =~ /$region/

你可以为一个给定的measurement获取key的名字。

SHOW TAG VALUES WITH KEY = "hostname" WHERE region =~ /$region/

你可以为一个给定的measurement获取key的名字。
SHOW TAG KEYS [FROM <measurement_name>]
SHOW TAG KEYS [FROM <measurement_name>]

如果有一个带有key的变量,可以在一个组子句中使用这个变量。这将允许您通过在仪表板顶部使用变量下拉菜单来更改组。

Ad hoc filters variable

InfluxDB支持特殊的“Ad hoc filters variable”变量类型。这个变量允许您任意指定任意数量的 key/value过滤器。这些过滤器将自动应用到所有的InfluxDB查询。

Annotations(注释)

annotations允许您在图表顶部覆盖丰富的事件信息。通过Dashboard menu / Annotations view添加注释查询。

一个查询例子:

SELECT title, description from events WHERE $timeFilter order asc

对于InfluxDB需要输入一个查询,像上面的例子。where需要在 $timeFilter部分。如果只选择一个列,就不需要在列映射字段中输入任何内容。tag字段可以是一个逗号分隔的字符串。
SELECT title, description from events WHERE $timeFilter order asc