控制台模板允许使用 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 可以共享,并将为其他人显示相同的图表。
主要内容通常是图表。 提供了一个可配置的 JavaScript 图表库,该库将处理从 Prometheus 请求数据,并通过 Rickshaw 渲染数据。
最后,右侧的表格可用于以比图表更紧凑的形式显示统计信息。
这是一个基本控制台。 它在右侧表格中显示任务数、其中有多少任务处于运行状态、平均 CPU 使用率和平均内存使用率。 主要内容包含每秒查询数图表。
{{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
的第三个参数的有效输出格式
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
的有效选项
PromConsole.NumberFormatter.humanize
:使用 度量前缀 进行格式化。PromConsole.NumberFormatter.humanizeNoSmallPrefix
:对于绝对值大于 1 的情况,使用 度量前缀 进行格式化。 对于绝对值小于 1 的情况,使用 3 位有效数字进行格式化。 这对于避免诸如 PromConsole.NumberFormatter.humanize
可能产生的每秒毫查询数之类的单位很有用。PromConsole.NumberFormatter.humanize1024
:使用 1024 而不是 1000 作为基数格式化人性化结果。本文档是 开源的。 请通过提交 issue 或 pull request 来帮助改进它。