控制台模板
注意从 Prometheus 3.0 开始,控制台模板和库不再随 Prometheus 打包。如果您希望使用控制台模板,必须通过指定--web.console.templates和--web.console.libraries命令行标志来提供您自己的模板和库。此文档页面仅供历史参考,并演示控制台模板的功能。请注意,来自 Prometheus 2.x 分支的任何引用控制台库均已不再维护,且可能包含已知的安全漏洞 (CVE)。
控制台模板允许使用 Go 模板语言 创建任意控制台。这些模板由 Prometheus 服务器提供服务。
控制台模板是创建可在源代码控制中轻松管理的模板的最强大方式。不过,它有一定的学习曲线,因此对这种监控方式不熟悉的用户应该先尝试使用 Grafana。
入门
Prometheus 提供了一组示例控制台来帮助您入门。它们位于运行中的 Prometheus 的 /consoles/index.html.example 下。如果 Prometheus 正以 job="node" 标签抓取 Node Exporter,这些控制台将显示 Node Exporter 的相关数据。
示例控制台包含 5 个部分:
- 顶部的导航栏
- 左侧的菜单
- 底部的时间控制器
- 中间的主要内容,通常是图表
- 右侧的表格
导航栏用于链接到其他系统,例如其他 Prometheus 实例 1、文档以及任何您认为有意义的内容。菜单用于在同一 Prometheus 服务器内导航,这对于快速在另一个标签页中打开控制台以关联信息非常有用。这两者均在 console_libraries/menu.lib 中配置。
时间控制器允许更改图表的持续时间和范围。控制台 URL 可以共享,并且会为其他人显示相同的图表。
主要内容通常是图表。Prometheus 提供了一个可配置的 JavaScript 图表库,该库将处理从 Prometheus 请求数据,并通过 Rickshaw 进行渲染。
最后,右侧的表格可以用来以比图表更紧凑的形式显示统计数据。
示例控制台
这是一个基本控制台。它在右侧表格中显示了任务数量、存活任务数量、平均 CPU 使用率和平均内存使用率。主要内容中包含一个每秒查询数 (QPS) 的图表。
{{template "head" .}}
{{template "prom_right_table_head"}}
<tr>
<th>MyJob</th>
<th>{{ template "prom_query_drilldown" (args "sum(up{job='myjob'})") }}
/ {{ template "prom_query_drilldown" (args "count(up{job='myjob'})") }}
</th>
</tr>
<tr>
<td>CPU</td>
<td>{{ template "prom_query_drilldown" (args
"avg by(job)(rate(process_cpu_seconds_total{job='myjob'}[5m]))"
"s/s" "humanizeNoSmallPrefix") }}
</td>
</tr>
<tr>
<td>Memory</td>
<td>{{ template "prom_query_drilldown" (args
"avg by(job)(process_resident_memory_bytes{job='myjob'})"
"B" "humanize1024") }}
</td>
</tr>
{{template "prom_right_table_tail"}}
{{template "prom_content_head" .}}
<h1>MyJob</h1>
<h3>Queries</h3>
<div id="queryGraph"></div>
<script>
new PromConsole.Graph({
node: document.querySelector("#queryGraph"),
expr: "sum(rate(http_query_count{job='myjob'}[5m]))",
name: "Queries",
yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yUnits: "/s",
yTitle: "Queries"
})
</script>
{{template "prom_content_tail" .}}
{{template "tail"}}
prom_right_table_head 和 prom_right_table_tail 模板包含右侧表格。这是可选的。
prom_query_drilldown 是一个模板,它将评估传递给它的表达式,进行格式化,并链接到 表达式浏览器 中的该表达式。第一个参数是表达式。第二个参数是要使用的单位。第三个参数是如何格式化输出。只有第一个参数是必须的。
第三个参数 prom_query_drilldown 的有效输出格式:
- 未指定:默认的 Go 显示输出。
humanize:使用 度量前缀 显示结果。humanizeNoSmallPrefix:对于大于 1 的绝对值,使用 度量前缀 显示结果。对于小于 1 的绝对值,显示 3 位有效数字。这有助于避免humanize可能产生的诸如“每秒毫查询数”之类的单位。humanize1024:使用 1024 作为底数而非 1000 来显示人性化的结果。这通常与B作为第二个参数一起使用,以产生如KiB和MiB之类的单位。printf.3g:显示 3 位有效数字。
可以定义自定义格式。有关示例,请参阅 prom.lib 。
图表库
图表库的调用方式为:
<div id="queryGraph"></div>
<script>
new PromConsole.Graph({
node: document.querySelector("#queryGraph"),
expr: "sum(rate(http_query_count{job='myjob'}[5m]))"
})
</script>
head 模板会加载所需的 Javascript 和 CSS。
图表库的参数:
| 名称 | 描述 |
|---|---|
| expr | 必填。要绘图的表达式。可以是列表。 |
| node | 必填。用于渲染的 DOM 节点。 |
| duration | 可选。图表的持续时间。默认为 1 小时。 |
| endTime | 可选。图表结束时的 Unix 时间戳。默认为当前时间。 |
| width | 可选。图表的宽度(不含标题)。默认为自动检测。 |
| height | 可选。图表的高度(不含标题和图例)。默认为 200 像素。 |
| min | 可选。X 轴最小值。默认为数据中的最小值。 |
| max | 可选。Y 轴最大值。默认为数据中的最大值。 |
| renderer | 可选。图表类型。选项有 line 和 area(堆叠图)。默认为 line。 |
| name | 可选。图例和悬停详情中图表的标题。如果传递一个字符串,[[ label ]] 将被标签值替换。如果传递一个函数,该函数将接收标签映射并应返回作为字符串的名称。可以是列表。 |
| xTitle | 可选。X 轴标题。默认为 Time。 |
| yUnits | 可选。Y 轴单位。默认为空。 |
| yTitle | 可选。Y 轴标题。默认为空。 |
| yAxisFormatter | 可选。Y 轴的数字格式化程序。默认为 PromConsole.NumberFormatter.humanize。 |
| yHoverFormatter | 可选。悬停详情的数字格式化程序。默认为 PromConsole.NumberFormatter.humanizeExact。 |
| colorScheme | 可选。图表使用的配色方案。可以是十六进制颜色代码列表,或者是 Rickshaw 支持的 配色方案名称 。默认为 'colorwheel'。 |
如果 expr 和 name 都是列表,则它们的长度必须相同。名称将应用于相应表达式的图表。
yAxisFormatter 和 yHoverFormatter 的有效选项