PostgreSQL数据源
Grafana附带一个内置的PostgreSQL数据源的插件让你可以查询和可视化数据从一个PostgreSQL数据库兼容。这一主题解释选项、变量、查询和其他选项特定于该数据源。请示如何向Grafana添加一个数据源,请参考添加一个数据源。只与组织管理角色的用户可以添加数据源。
PostgreSQL的设置
访问PostgreSQL设置,鼠标的配置(齿轮)图标,然后单击数据源,然后单击PostgreSQL数据源。
的名字 | 描述 |
---|---|
的名字 |
数据源名称。这就是指在面板和查询的数据源。 |
默认的 |
默认数据源为新面板意味着它将被选中。 |
主机 |
你的IP地址/主机名和可选端口PostgreSQL实例。不包括数据库名称。连接的连接字符串Postgres不会是正确的,它可能会导致错误。 |
数据库 |
PostgreSQL数据库的名称。 |
用户 |
数据库用户的登录/用户名 |
密码 |
数据库用户密码 |
SSL模式 |
决定是否与优先级安全的SSL TCP / IP连接与服务器协商确定。禁用SSL模式时,SSL方法和身份验证信息不可见。 |
SSL身份验证方法细节 |
决定SSL身份验证细节将配置文件路径或文件内容。Grafana v7.5 + |
SSL身份验证信息的价值 |
文件路径或文件内容的SSL根证书,客户机证书和客户端密钥 |
马克斯开放 |
打开的数据库连接的最大数量,默认值无限的 (Grafana v5.4 +)。 |
马克斯闲置 |
空闲连接池的最大连接数,违约2 (Grafana v5.4 +)。 |
马克思一生 |
最大的时间以秒为单位的连接可能被重用,违约14400年 / 4小时(Grafana v5.4 +)。 |
版本 |
确定哪些功能是可用的query builder(仅可在Grafana 5.3 +)。 |
TimescaleDB |
时间序列数据库建立作为一个PostgreSQL扩展。当启用时,Grafana用途time_bucket 在__timeGroup美元 宏显示TimescaleDB query builder中的特定聚合函数(仅可在Grafana 5.3 +)。有关更多信息,请参见TimescaleDB文档。 |
最小时间间隔
的下限__interval美元和__interval_ms美元变量。建议设置为写频率,例如1米
如果您的数据是每一分钟写的。这个选项也可以覆盖/仪表盘面板中配置数据源的选择。重要的是要注意,这个值需要被格式化为一个数字紧随其后的是一个有效的标识符,例如1米
(1分钟)或30年代
(30秒)。以下时间支持标识符:
标识符 | 描述 |
---|---|
y |
一年 |
米 |
月 |
w |
周 |
d |
一天 |
h |
小时 |
米 |
一分钟 |
年代 |
第二个 |
女士 |
毫秒 |
数据库用户权限(重要!)
您所指定的数据库用户添加数据源时只能选择指定的数据库和表的权限授予你想查询。Grafana并不验证查询是安全的。查询可以包含任何SQL语句。例如,语句删除用户;
和删除表的用户;
将被执行。为了防止这一点,我们高度建议您创建一个特定的PostgreSQL用户与权限受到限制。
例子:
创建用户grafanareader密码“密码”;格兰特使用模式模式grafanareader;格兰特选择模式。表grafanareader;
确保用户不得到任何不必要的公共角色的特权。
查询构建器
PostgreSQL查询构建器可用时使用PostgreSQL数据源编辑面板。建立查询可以通过按下运行运行查询
按钮在右上角的编辑器。
格式
PostgreSQL的反应可以被格式化为一个表或时间序列。使用时间序列格式的一个列必须命名时间
。
数据集和表选择
在数据集下拉,选择PostgreSQL数据库查询。下拉填充数据库,用户可以访问。选择数据集时,表下拉填充的表是可用的。
列和聚合函数(选择)
使用下拉菜单,选择一个列中包含的数据。您还可以指定一个可选的聚合函数。
进一步通过单击+按钮,另一列值列下拉。
过滤数据()
添加一个过滤器,翻转开关上方的编辑器。使用第一个下拉,选择如果所有的过滤器需要匹配(和)或如果需要的只有一个过滤器匹配(或)。
添加更多的列来过滤使用加号按钮。
集团
列组结果,翻转切换编辑器的顶部。然后,您可以选择哪些列组的结果。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查询。表面板会自动显示,无论你的查询返回的行和列的结果。
查询编辑器示例查询:
查询:
选择标题为“标题”、“用户”。登录“由”,仪表板。从仪表板内连接创建为“创建”“用户”“用户”。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)、(价值)和价值,主机名从test_data __timeFilter美元(“createdAt”)组的时候,主机名订单时间
考虑到数据帧导致下面的示例,使用图形面板,你将得到两个系列命名价值10.0.1.1和价值10.0.1.2。呈现系列的名称10.0.1.1和10.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”)作为“max_value”从test_data __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 | + - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
模板
而不是硬编码服务器、应用程序和传感器的名字在你的度量查询可以使用变量。变量显示为下拉选择框顶部的仪表板。这些下拉很容易改变的数据显示在仪表板中。
指模板和变量介绍模板特性和不同类型的模板变量。
查询变量
如果你添加一个模板变量的类型查询
,您可以编写一个PostgreSQL查询可以返回测量名称、关键名称或键值显示为下拉选择框。
例如,您可以有一个变量,包含所有的值主机名
列一个表,如果你指定一个查询这样的模板变量查询设置。
从主机选择主机名
查询可以返回多个列和Grafana将自动创建一个列表。例如,下面的查询将返回一个值的列表主机名
和hostname2
。
选择主机。主机名, other_host.hostname2 FROM host JOIN other_host ON host.city = other_host.city
使用时间范围相关的宏美元__timeFilter(列)
在查询刷新模式模板变量需要设置时间范围变化。
选择从event_log event_name __timeFilter美元(time_column)
另一个选择是一个查询,可以创建一个键/值变量。命名的查询应该返回两个列__text
和__value
。的__text
列的值应该是唯一的(如果不是唯一的,那么第一个值是使用)。下拉选项将文本和价值,让你有一个友好的名称的文本和一个id值。一个示例查询主机名
文本和id
的价值:
选择主机名作为__text, id作为__value从主机
您还可以创建嵌套的变量。使用一个变量命名地区
主机变量,你可以只显示主机从当前这类查询(如果选择区域地区
是一个多值变量然后使用吗在
比较运算符,而不是=
匹配多个值):
从主机地区在选择主机名(地区)美元
使用__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 >
示例模板变量命名主机名
:
选择atimestamp随着时间的,不是如表,价值美元__timeFilter (atimestamp)和主机名(主机名)美元订单atimestamp ASC
[[varname]]
示例模板变量命名主机名
:
选择atimestamp随着时间的,不是如表,价值美元__timeFilter (atimestamp)和主机名([[hostname]])订单atimestamp ASC
禁用对多值引用变量
Grafana自动创建一个引用,逗号分隔字符串多值变量。例如:如果server01
和server02
选择就会被格式化为:“server01”、“server02”
。禁用引用,使用csv格式选项变量:
${服务器:csv}
阅读更多关于变量的格式化选项变量文档。
注释
注释允许您覆盖丰富事件信息的图表。你添加注释查询通过仪表板视图菜单/注释。
示例查询使用时间列与时代的价值观:
选择epoch_time随着时间、metric1为文本concat_ws (', ', metric1::文本、metric2::文本),标签从公众。test_data __unixEpochFilter美元(epoch_time)
使用时间和地区查询示例timeend列与时代的价值观:
仅可在Grafana v6.6 +。
选择epoch_time随着时间,epoch_time_end timeend, metric1作为文本,concat_ws (', ', metric1::文本、metric2::文本),标签从公众。test_data __unixEpochFilter美元(epoch_time)
使用时间列的原生SQL查询示例日期/时间数据类型:
选择native_date_time随着时间、metric1为文本concat_ws (', ', metric1::文本、metric2::文本),标签从公众。test_data __timeFilter美元(native_date_time)
的名字 | 描述 |
---|---|
时间 |
日期/时间字段的名称。可能是一个原生SQL列日期/时间数据类型或时代价值。 |
timeend |
可选的结束日期/时间字段的名称。可能是一个原生SQL列日期/时间数据类型或时代价值。(Grafana v6.6 +) |
文本 |
事件描述字段。 |
标签 |
可选字段名称用于事件标签作为一个逗号分隔的字符串。 |
报警
时间序列查询应该报警条件下工作。表格式化的查询是不支持在预警规则的条件。
配置数据源的配置
现在可以使用配置文件配置数据源Grafana准备系统。你可以阅读更多关于它是如何工作的和所有的设置可以设置的数据源配置文档
这里有一些这个数据源配置示例。
apiVersion: 1数据源:名称:Postgres类型:Postgres url: localhost: 5432数据库:grafana用户:grafana secureJsonData:密码:密码!”jsonData: sslmode:“禁用”#禁用/要求/ verify-ca / verify-full maxOpenConns: 0 # Grafana v5.4 + maxIdleConns: 2 # Grafana v5.4 + connMaxLifetime: 14400 # Grafana v5.4 + postgresVersion: 903 # 903 = 9.3, 904 = 9.4, 905 = 9.5, 906 = 9.6, 1000 = 10 timescaledb:假的
注意:在上面的代码中,
postgresVersion
的价值10
是指版本PostgreSQL 10以上。
如果你遇到规请求错误或其他问题:
- 确保你的数据源YAML文件参数完全匹配的例子。这包括参数名称和使用引号。
- 确保
数据库
名字是不包括在url
。
相关Grafana资源
开幕式主题:新Grafana 9吗?
Raj达特Myrle“将军”,Torkel突袭推出什么新Grafana 9。从2022年GrafanaCONline观看开幕式主题演讲。随需应变。
统一数据与Grafana插件:Datadog, Splunk, MongoDB等等
在这个网络研讨会,学习如何利用Grafana插件的生态系统来访问80 +的数据来源,包括插件Datadog, Splunk, MongoDB等等。
开始使用Grafana企业和可观察性
加入Grafanabob电竞频道实验室团队的30分钟的演示如何开始与Grafana堆栈,所以你可以从0到可观察性在短短几分钟。