在Grafana使用Prometheus
Grafana包含对Prometheus的内置支持。
将数据源添加到Grafana
- 点击顶部标题中的Grafana图标打开侧边菜单
- 在
Dashboards
链接下的侧边菜单中,你应找到名为Data Sources
的链接 - 点击顶部标题中的
+ Add data source
按钮 - 从类型下拉列表中选择
Prometheus
注意:如果你没有在侧边菜单中看到Data Sources
链接,则表示你当前的用户没有当前组织的Admin
角色。
数据源选项
名称 | 描述 |
---|---|
Name | 数据源名称,这是你在面板和查询中引用数据源的方式 |
Default | 默认数据源意味着它将为新面板预先选择 |
Url | 你的Prometheus服务的http协议,IP和端口(默认端口通常是9090) |
Access | Server (default) = 需要从Grafana后端/服务器访问的URL,Browser = 需要从浏览器访问的URL |
Basic Auth | 启用对Prometheus数据源的基本身份验证 |
User | 你的Prometheus用户名 |
Password | 数据库用户的密码 |
Scrape interval | 这将用作Prometheus步骤查询参数的下限,默认值为15秒 |
查询编辑器
单击标题,以编辑模式打开图形 > 编辑(或在鼠标悬停在面板上时按e
键)。
名称 | 描述 |
---|---|
Query expression | Prometheus查询表达式,请查看Prometheus文档 |
Legend format | 使用名称或模式控制时间系列的名称,例如,{{hostname}} 将替换为标签hostname 的标签值 |
Min step | 设置Prometheus步骤选项的下限,步骤控制Prometheus查询引擎执行范围查询时跳转的大小,遗憾的是,没有官方的prometheus文档链接到这个非常重要的选项 |
Resolution | 控制步骤选项,小步骤可以创建高分辨率图形,但在较大的时间范围内可能会很慢,降低分辨率可以加快速度。1/2 将尝试设置步骤选项以为每个其他像素生成1个数据点,值为1/10 将尝试设置步长选项,因此每10个像素就有一个数据点。 |
Metric lookup | 在此输入字段来搜索指标名称 |
Format as | 在表格,时间序列或心跳图之间切换,表格格式仅适用于表格面板,心跳图格式适用于在心跳图面板上显示具有直方图类型的指标。在引擎盖下,它将累积的直方图转换为规则序列,并按桶绑定对序列进行排序。 |
模板
你可以在指标查询中使用变量代替硬编码服务器、应用程序和传感器名称等内容。变量显示为仪表盘顶部的下拉选择框,这些下拉菜单可以轻松更改仪表盘中显示的数据。查看模板文档,了解模板功能和不同类型的模板变量。
查询变量
查询类型的变量允许你查询Prometheus以获取指标、标签或标签值的列表,Prometheus数据源插件提供了以下可在Query
输入字段中使用的函数。
名称 | 描述 |
---|---|
label_values(label) | 返回每个指标中label 的标签值列表 |
label_values(metric, label) | 返回指定指标中label 的标签值列表 |
metrics(metric) | 返回与指定的metric 正则表达式匹配的指标列表 |
query_result(query) | 返回query 的Prometheus查询结果列表 |
有关指标名称、标签名称和标签值的详细信息,请参阅Prometheus文档。
使用区间和范围变量
支持$__range
,$__range_s
和$__range_ms
,仅适用于Grafana v5.3
可以在查询变量中使用一些全局内置变量;$__interval
,$__interval_ms
,$__range
,$__range_s
和$__range_ms
,有关详细信息,请参阅全局内置变量。当你需要过滤变量查询时,这些可以方便地与query_result
函数一起使用,因为label_values
函数不支持查询。
确保将变量的refresh
触发器设置为On Time Range Change
,以便在更改仪表盘上的时间范围时获取正确的实例。
用法示例:
根据仪表盘中显示的时间范围内的平均QPS,使用最繁忙的5个请求实例填充变量:
Query: query_result(topk(5, sum(rate(http_requests_total[$__range])) by (instance)))
Regex: /"([^"]+)"/
使用更精确的$__range_s
,在仪表板中显示的时间范围内具有特定状态的实例填充变量:
Query: query_result(max_over_time([${__range_s}s]) != )
Regex:
在查询中使用变量
有两种语法:
-
$
例如:rate(http_requests_total{job=~“$job”}[5m])
-
[[varname]]
例如:rate(http_requests_total{job=~”[[job]]“}[5m])
为什么两种方式?第一种语法更易于读写,但不允许你在单词的中间使用变量,启用“多值”或“包括所有值”选项后,Grafana会将标签从纯文本转换为正则表达式兼容的字符串,这意味着你必须使用=〜
而不是=
。
注解
注解允许你在图表上叠加丰富的事件信息,你可以通过仪表盘菜单/注解视图添加注解查询。
Prometheus支持两种查询注解的方法:
- 常规指标查询
- 针对挂起和触发警报的Prometheus查询(有关详细信息,请参阅在运行时检查警报)
步骤选项可用于限制从查询返回的事件数。
将Grafana指标纳入Prometheus
从4.6.0开始,Grafana在/metrics
端点上为Prometheus公开了指标,我们还在Grafana中捆绑了一个仪表盘,以便你可以更快地开始查看指标。你可以通过到数据源编辑页面并点击仪表盘选项卡来导入捆绑的仪表盘,在那里你可以找到一个Grafana仪表盘和一个Prometheus仪表盘,导入并开始查看所有指标!
使用Provisioning配置数据源
现在可以使用Grafana的Provisioning系统使用配置文件配置数据源,你可以在Provisioning文档页面上阅读有关其工作原理以及可以为数据源设置的所有设置的更多信息。
以下是此数据源的一些Provisioning示例:
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://localhost:9090