菜单

MySQL数据源

从Grafana v5.1你可以命名时间列时间除了早些时候支持time_sec。的使用time_sec最终会被弃用。

Grafana附带一个内置的MySQL插件允许您查询数据源和可视化数据从一个MySQL数据库兼容。

说明如何添加一个数据源Grafana,参考管理文档。只有具有组织管理员角色的用户可以添加数据源。管理员也可以通过YAML配置数据源Grafana准备系统。

配置数据源

数据源的选择

的名字 描述
的名字 数据源名称。这就是指在面板和查询的数据源。
默认的 默认数据源为新面板意味着它将被选中。
主机 你的IP地址/主机名和可选端口MySQL实例。
数据库 你的MySQL数据库的名称。
用户 数据库用户的登录/用户名
密码 数据库用户密码
会话时区 指定数据库会话中使用的时区,等欧洲/柏林+ 02:00。这是必要的,如果数据库的时区(或数据库的主机)将UTC以外的东西。设置在会话中使用的值设置time_zone =“……”。如果你离开这一领域的空,那么时区不更新。有关更多信息,请参考MySQL文档
马克斯开放 打开的数据库连接的最大数量,默认值无限的(Grafana v5.4 +)。
马克斯闲置 空闲连接池的最大连接数,违约2(Grafana v5.4 +)。
马克思一生 最大的时间以秒为单位的连接可能被重用,违约14400年/ 4小时。这应该是低于配置wait_timeout在MySQL (Grafana v5.4 +)。

最小时间间隔

最小时间间隔设置定义的下限__interval美元__interval_ms美元变量。

这个值必须被格式化为一个数量紧随其后的是一个有效的标识符:

标识符 描述
y 一年
w
d 一天
h 小时
一分钟
年代 第二个
女士 毫秒

我们建议设置这个值以匹配您的MySQL编写频率。例如,使用1米如果MySQL写数据的每一分钟。

您还可以在仪表盘面板覆盖该设置在其数据源的选择。

数据库用户权限(重要!)

您所指定的数据库用户添加数据源时只能选择指定的数据库和表的权限授予你想查询。Grafana并不验证查询是安全的。查询可以包含任何SQL语句。例如,语句使用otherdb;删除表的用户;将被执行。为了防止这一点,我们高度建议您创建一个特定的mysql用户与权限受到限制。

例子:

创建用户“grafanaReader”被“密码”;格兰特mydatabase选择。mytable grafanaReader”;

您可以使用通配符(*)的数据库或表如果你想授权访问多个数据库和表。

提供数据源

您可以定义和配置数据源在YAML文件作为Grafana准备系统的一部分。关于配置的更多信息,以及可用的配置选项,请参考供应Grafana

配置示例

apiVersion: 1数据源:名称:MySQL类型:MySQL url: localhost: 3306数据库:grafana用户:grafana jsonData: maxOpenConns: 0 # grafana v5.4 + maxIdleConns: 2 # grafana v5.4 + connMaxLifetime: 14400 # grafana v5.4 + secureJsonData:密码:$ {GRAFANA_MYSQL_PASSWORD}

查询构建器

MySQL查询构建器可以在编辑一个小组使用一个MySQL数据源。

这一主题解释了MySQL查询特定于数据源。一般文档在Grafana查询数据源,明白了查询和转换数据

您可以运行查询按建造运行查询按钮在右上角的编辑器。

格式

MySQL的反应可以被格式化为一个表或时间序列。使用时间序列格式的一个列必须命名时间

数据集和表选择

在数据集下拉,选择MySQL数据库查询。下拉填充数据库,用户可以访问。选择数据集时,表下拉填充的表是可用的。

列和聚合函数(选择)

使用下拉菜单,选择一个列中包含的数据。您还可以指定一个可选的聚合函数。

进一步通过单击+按钮,另一列值列下拉。

过滤数据()

添加一个过滤器,翻转开关上方的编辑器。使用第一个下拉,选择如果所有的过滤器需要匹配(和)或如果需要的只有一个过滤器匹配(或)。

添加更多的列来过滤使用加号按钮。

集团

列组结果,翻转切换编辑器的顶部。然后,您可以选择哪些列组的结果。group by子句可以删除按X按钮。

预览

通过翻转预览切换编辑器的顶部,你可以得到一个预览查询生成器生成的SQL查询。

代码编辑器

高级查询,点击切换到代码编辑器代码右上角的编辑器。代码编辑器支持自动完成的表、列的SQL关键字,标准的SQL函数,Grafana模板变量和Grafana宏。列之前不能完成一个表指定。

你可以通过按下扩展代码编辑器雪佛龙公司向下的在右下角的代码编辑器。

CTRL / CMD +返回作为键盘快捷键来运行查询。

为了简化语法,并允许动态部分,如日期范围过滤器,查询可以包含宏。

宏的例子 描述
__time美元(dateColumn) 将被替换为一个表达式转换为UNIX时间戳和重命名列time_sec。例如,time_sec UNIX_TIMESTAMP (dateColumn)
__timeEpoch美元(dateColumn) 将被替换为一个表达式转换为UNIX时间戳和重命名列time_sec。例如,time_sec UNIX_TIMESTAMP (dateColumn)
__timeFilter美元(dateColumn) 将被一个时间范围取代过滤器使用指定的列名。例如,dateColumn FROM_UNIXTIME之间(1494410783)和FROM_UNIXTIME (1494410983)
$ __timeFrom () 将取代当前活动的开始时间的选择。例如,FROM_UNIXTIME (1494410783)
$ __timeTo () 将取代当前活动的结束时间的选择。例如,FROM_UNIXTIME (1494410983)
美元__timeGroup (dateColumn 5米) 将取代一个表达式可用在GROUP by子句中。例如,* (cast (UNIX_TIMESTAMP (dateColumn) /(300)签署)* 300年签署),*
美元__timeGroup (dateColumn 5米,0) 同上,但一系列填补参数缺失点,将grafana和0将被用作值。
美元__timeGroup (dateColumn 5米,NULL) 同上,但将使用NULL作为缺失值点。
美元__timeGroup (dateColumn, 5米,之前) 同上,但这个系列的前一个值将被用作填充价值如果没有见过的空值将使用(仅可在Grafana 5.3 +)。
美元__timeGroupAlias (dateColumn 5米) 将取代美元相同__timeGroup但是增加了列别名(仅可在Grafana 5.3 +)。
__unixEpochFilter美元(dateColumn) 将被一个时间范围取代过滤器使用指定的列名,*表示为Unix时间戳。例如,dateColumn > 1494410783和dateColumn < 1494410783
$ __unixEpochFrom () 将取代当前活动的开始时间选择Unix时间戳。例如,1494410783
$ __unixEpochTo () 将取代当前活动的结束时间选择Unix时间戳。例如,1494497183
__unixEpochNanoFilter美元(dateColumn) 将取代一个时间范围过滤器使用指定的列名,*表示为纳秒的时间戳。例如,dateColumn > 1494410783152415214和dateColumn < 1494410783152415214
$ __unixEpochNanoFrom () 将取代当前活动的开始时间选择纳秒时间戳。例如,1494410783152415214
$ __unixEpochNanoTo () 将取代当前活动的结束时间选择纳秒时间戳。例如,1494497183142514872
美元__unixEpochGroup (dateColumn 5米,[fillmode]) 一样__timeGroup但美元*存储为Unix时间戳(仅可在Grafana 5.3 +)。
美元__unixEpochGroupAlias (dateColumn 5米,[fillmode]) 同上,也增加了一列别名(仅可在Grafana 5.3 +)。

我们计划添加更多的宏。如果你有建议你希望看到什么宏,请打开一个问题在我们的GitHub回购。

命名查询编辑器有一个链接生成的SQL显示查询被执行后,在面板编辑模式。点击它,它将扩大和显示原始插值执行的SQL字符串。

表查询

如果格式查询选项设置为然后你可以做任何类型的SQL查询。表面板会自动显示,无论你的查询返回的行和列的结果。

查询编辑器示例查询:

查询:

作为“标题”,用户选择标题。登录“由”,仪表板。创建为“创建”从仪表板内连接用户的用户。id =仪表板。created_by __timeFilter美元(dashboard.created)

你可以控制面板表列的名称使用常规作为SQL列选择语法。

生成的表板:

时间序列查询

如果您设置格式时间序列查询,那么必须有一个列命名时间返回SQL datetime或者任何数字数据类型代表Unix纪元在几秒钟内。此外,时间序列查询的结果集必须按时间排序面板正确可视化结果。

一个时间序列查询结果中返回广泛的数据帧格式。除了时间或类型的字符串转换成任何列值数据帧中的字段查询结果。任何字符串列转换成数据帧查询结果字段标签。

向后兼容性,上面的规则有一个例外的查询返回三列包括字符串列命名为指标。而不是将度量列转换为字段标签,它成为字段名称,然后系列名称是格式化为指标的值列。请参阅下面的示例与度量列。

选择自定义默认的系列名称格式,请参考标准选项定义

的例子度规专栏:

选择__timeGroup美元(time_date_time, 5米),最小值(value_double),“最小值”指标从test_data __timeFilter美元(time_date_time)集团通过时间顺序

数据帧的结果:

+ - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + |名称:时间|名称:分钟| |标签:|标签:| |类型:[]。时间|类型:[]float64 | + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | 2020-01-02 03:05:00 | 3 | | 2020-01-02 03:10:00 | 6 | + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +

例子使用填充参数$ __timeGroup宏将null值为零:

选择__timeGroup美元(createdAt, 5米,0),笔(value_double)值,主机名从test_data __timeFilter美元(createdAt)组时间,主机名订单时间

考虑到数据帧导致下面的示例,使用图形面板,你将得到两个系列命名价值10.0.1.1价值10.0.1.2。呈现系列的名称10.0.1.110.0.1.2,使用一个标准选项定义显示的值$ {__field.labels.hostname}

数据帧的结果:

+ - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |名称:时间|名称:值|名称:值| |标签:|标签:主机名= 10.0.1.1 |标签:主机名= 10.0.1.2 | |类型:[]。时间|类型:[]float64 |类型:[]float64 | + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | 2020-01-02 03:05:00 | 3 | 4 | | 2020-01-02 03:10:00 | 6 | 7 | + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

多个列的示例:

选择__timeGroup美元(time_date_time, 5米),最小(value_double) min_value,最大(value_double)从test_data max_value __timeFilter美元(time_date_time)集团通过时间顺序

数据帧的结果:

+ - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |名称:时间|名称:min_value |名称:max_value | |标签:|标签:|标签:| |类型:[]。时间|类型:[]float64 |类型:[]float64 | + - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | 2020-01-02 03:04:00 | 3 | 4 | | 2020-01-02 03:05:00 | 6 | 7 | + - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

目前还没有支持基于时间的动态组时间范围和面板宽度。这是我们添加的计划。

模板

这个功能目前只在夜间构建和将包括在5.0.0释放。

而不是硬编码服务器、应用程序和传感器的名字在你的度量查询可以使用变量。变量显示为下拉选择框顶部的仪表板。这些下拉很容易改变的数据显示在仪表板中。

检查模板文档简介模板特性和不同类型的模板变量。

查询变量

如果你添加一个模板变量的类型查询,您可以编写一个MySQL查询可以返回测量名称、关键名称或键值显示为下拉选择框。

例如,您可以有一个变量,包含所有的值主机名列一个表,如果你指定一个查询这样的模板变量查询设置。

从my_host选择主机名

查询可以返回多个列和Grafana将自动创建一个列表。例如,下面的查询将返回一个值的列表主机名hostname2

选择my_host。主机名, my_other_host.hostname2 FROM my_host JOIN my_other_host ON my_host.city = my_other_host.city

使用时间范围相关的宏美元__timeFilter(列)在查询刷新模式模板变量需要设置时间范围变化

选择从event_log event_name __timeFilter美元(time_column)

另一个选择是一个查询,可以创建一个键/值变量。命名的查询应该返回两个列__text__value。的__text列的值应该是唯一的(如果不是唯一的,那么第一个值是使用)。下拉选项将文本和价值,让你有一个友好的名称的文本和一个id值。一个示例查询主机名文本和id的价值:

选择主机名作为__text, id作为__value my_host

您还可以创建嵌套的变量。例如,如果你有另一个变量命名地区。然后你可以有主机变量只显示主机从当前这类查询(如果选择区域地区是一个多值变量然后使用吗比较运算符,而不是=匹配多个值):

选择主机名从my_host地区(地区)美元

使用__searchFilter在查询变量来过滤结果

可以从Grafana 6.5及以上

使用__searchFilter在查询字段将过滤查询结果基于用户类型的下拉选择框。当没有输入的用户的默认值__searchFilter%

重要的是你包围__searchFilter表达与引号Grafana不为你做这个。

下面的例子展示了如何使用__searchFilter作为查询的一部分字段启用搜索主机名而用户类型下拉选择框。

查询

从my_host选择主机,主机名如“__searchFilter美元”

在查询中使用变量

从模板安装Grafana 4.3.0 4.6.0,变量总是引用自动如果它是一个字符串值不包装他们在where子句的引用。

从Grafana 4.7.0,模板变量的值只引用模板变量多值

如果变量是一个多值变量然后使用比较运算符,而不是=对多个值匹配。

有两种语法:

$ < varname >示例模板变量命名主机名:

选择UNIX_TIMESTAMP (atimestamp)随着时间的,不是价值,avarchar作为度量从my_table __timeFilter美元(atimestamp)和主机名(主机名)美元订单atimestamp ASC

[[varname]]示例模板变量命名主机名:

选择UNIX_TIMESTAMP (atimestamp)随着时间的,不是价值,avarchar作为度量从my_table __timeFilter美元(atimestamp)和主机名([[hostname]])订单atimestamp ASC

禁用对多值引用变量

Grafana自动创建一个引用,逗号分隔字符串多值变量。例如:如果server01server02选择就会被格式化为:“server01”、“server02”。禁用引用,使用csv格式选择变量:

${服务器:csv}

阅读更多关于变量的格式化选项变量文档。

注释

注释允许您覆盖丰富事件信息的图表。你添加注释查询通过仪表板视图菜单/注释。

示例查询使用时间列与时代的价值观:

选择epoch_time随着时间、metric1为文本CONCAT(标签1,',',标签2)标签从公众。test_data __unixEpochFilter美元(epoch_time)

使用时间和地区查询示例timeend列与时代的价值观:

仅可在Grafana v6.6 +。

选择epoch_time随着时间,epoch_timeend timeend, metric1作为文本,CONCAT(标签1,',',标签2)标签从公众。test_data __unixEpochFilter美元(epoch_time)

使用时间列的原生SQL查询示例日期/时间数据类型:

选择native_date_time随着时间、metric1为文本CONCAT(标签1,',',标签2)标签从公众。test_data __timeFilter美元(native_date_time)
的名字 描述
时间 日期/时间字段的名称。可能是一个原生SQL列日期/时间数据类型或时代价值。
timeend 可选的结束日期/时间字段的名称。可能是一个原生SQL列日期/时间数据类型或时代价值。(Grafana v6.6 +)
文本 事件描述字段。
标签 可选字段名称用于事件标签作为一个逗号分隔的字符串。

报警

时间序列查询应该报警条件下工作。表格式化的查询是不支持在预警规则的条件。