Using InfluxDB in Grafana,influxDB在grafana中使用
grafana带有功能丰富的数据源插件influxDB。支持丰富的查询编辑器、注释和templating(模版)查询。
增加数据源(Adding the data source)
- 点击顶部Grafana图标打开侧边的菜单。
- 在
Dashboards
链接下的侧菜单中,您应该找到一个名为Data Sources的链接。 - 在顶部点击
+ Add data source
按钮。 - 在Type下拉选项中选择 InfluxDB。
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
你在graph或singlestat面板的metrics 页签找到influxDB编辑器。我也可以通过单击面板标题,然后edit。编辑器允许您选择metrics页签。
Filter data (WHERE)
where 若要添加标记筛选器,请单击Where加号图标”+“。您可以通过单击remove tag filters 来删除所选择的条件。
The $timeFilter or $__timeFilter Variable
$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 。
编辑器尝试简化并统一查询的这一部分。如下例子
以上将产生以下InfluxDB SELECT子句:
Select multiple fields
使用加号按钮并选择 Field > field来添加另一个SELECT子句。你也可以指定一个星号*选择所有字段
ALIAS BY
可以将Series取个别名。
Group By
GROUP BY,单击组结尾处的+图标。从出现的下拉列表中选择一个标记。您可以通过单击标签删除该组,然后单击X图标。
$interval:没有特别指定,默认是5分钟,$interval与auto一个意思 ,
Group by time interval
设置这边可以改变$interval的值。我这写的时候 基本要大于5分钟,目前不是很清楚原因。
Group by time是很重要的,否则Grafana查询会返回成千上万的数据点会慢下来。
对于每个查询,将时间字段分组为空,并根据图的时间范围和像素宽度计算该组。
如果使用fill(0)或fill(null),则按时间间隔为自动组设置一个低限
下限只能在您查询的按组时间选项中设置。
在间隔之前添加一个更大的符号来设置一个下限。
例如:如果InfluxDB的metrics 为每60秒
Text Editor Mode (RAW)
您可以通过点击汉堡图标“”切换到原始查询模式,更换数据库,然后切换编辑器模式。
如果你使用原始查询确认你的查询至少有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"
还可以创建嵌套变量。例如,如果您有另一个变量,例如region。然后,您可以拥有hosts变量,只显示当前选择区域中的主机,查询如下:
SHOW TAG VALUES WITH KEY = "hostname" WHERE region =~ /$region/
你可以为一个给定的measurement获取key的名字。
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字段可以是一个逗号分隔的字符串。