Prometheus

56142
下载
Prometheus 是一个开源的监控和告警系统,专注于时间序列数据的采集与存储。由 SoundCloud 开发,配备高级查询语言PromQL,便于数据挖掘与分析,并无缝对接多种可视化平台。

控制台模版


控制台模板允许使用 Go模板语言 创建任意控制台。这些模板由 Prometheus 服务器提供。

控制台模板是创建可以轻松在版本控制系统中管理的模板的最强大方式。不过,它的学习曲线可能有些陡峭,因此对于刚开始接触这种监控风格的新用户,建议先尝试使用 Grafana

开始使用

Prometheus 自带了一组示例控制台来帮助你上手。如果 Prometheus 使用job="node"标签抓取 Node Exporters 的话,这些可以在运行中的 Prometheus 的/consoles/index.html.example路径找到,并会在 Prometheus 正在抓取 Node Exporters 时显示 Node Exporter 控制台。

示例控制台包含以下5部分:

  1. 顶部的导航栏
  2. 左侧的菜单
  3. 底部的时间控制
  4. 中间的主内容区域,通常包含图表
  5. 右侧的表格

导航栏用于链接到其他系统,如其他 Prometheus 实例、文档以及任何适合的其他内容。菜单用于在同一个 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_headprom_right_table_tail 模板包含了右侧的表格。这是可选的。

prom_query_drilldown 是一个模板,会计算传入的表达式,对其进行格式化,并链接到表达式表达式浏览器。第一个参数是表达式。第二个参数是使用的单位。第三个参数是输出的格式。只需要第一个参数是必需的。

prom_query_drilldown 的第三个参数的有效输出格式:

  • 未指定:默认的 Go 显示输出。
  • humanize:使用指标单位前缀显示结果。
  • humanizeNoSmallPrefix:对于绝对值大于1的结果,使用指标单位前缀显示结果。对于绝对值小于1的结果,显示3位有效数字。这对于避免产生如每秒毫访问量这样的单位非常有用。
  • humanize1024:使用基于 1024 的基数而非 1000 来格式化人类化的结果。通常与B作为第二个参数一起使用,以产生如KiBMiB这样的单位。
  • 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 轴的标题。默认为时间
yUnits可选。y 轴的单位。默认为空。
yTitle可选。y 轴的标题。默认为空。
yAxisFormatter可选。y 轴的数字格式器。默认为PromConsole.NumberFormatter.humanize
yHoverFormatter可选。悬停详细信息中的数字格式器。默认为PromConsole.NumberFormatter.humanizeExact
colorScheme可选。要使用的图例颜色方案。可以是十六进制颜色代码的列表或 Rickshaw 支持的颜色方案名称之一。默认为'colorwheel'

如果exprname都是列表,它们必须具有相同的长度。名称将应用于对应表达式的图。

yAxisFormatteryHoverFormatter的有效选项:

  • PromConsole.NumberFormatter.humanize:使用指标单位前缀格式化。
  • PromConsole.NumberFormatter.humanizeNoSmallPrefix:对于绝对值大于 1 的结果,使用指标单位前缀格式化。对于绝对值小于1的结果,格式化为3位有效数字。这对于避免产生如每秒毫询问量这样的单位非常有用。
  • PromConsole.NumberFormatter.humanize1024:以1024为基数而非1000格式化人类化的结果。通常与B作为第二个参数一起使用,以产生如KiBMiB这样的单位。

printf.3g: 显示三位有效数字。

支持自定义格式。查看 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可选。图表结束时的时间戳。默认值为当前时间。
width可选。图表的宽度(不包括标题)。默认值为自动检测。
height可选。图表的高度(不包括标题和图例)。默认值为 200 像素。
min可选。x 轴的最小值。默认值为数据的最低值。
max可选。y 轴的最大值。默认值为数据的最高值。
renderer可选。图表类型。选项为 linearea(堆叠图表)。默认值为 line
name可选。图例和悬停详细信息中的图标题。如果传递字符串,则 [[ label ]] 将被标签值替换。如果传递函数,则应返回字符串。可以是列表。
xTitle可选。x 轴的标题。默认值为 时间
yUnits可选。y 轴的单位。默认值为空。
yTitle可选。y 轴的标题。默认值为空。
yAxisFormatter可选。y 轴的数字格式器。默认值为 PromConsole.NumberFormatter.humanize
yHoverFormatter可选。悬停详细信息中的数字格式器。默认值为 PromConsole.NumberFormatter.humanizeExact
colorScheme可选。用于图的配色方案。可以是十六进制颜色代码列表或 Rickshaw 支持的颜色方案名称列表之一。默认值为 'colorwheel'

如果 exprname 都是列表,则它们必须具有相同的长度。名称将应用于与对应表达式相对应的图。

对于 yAxisFormatteryHoverFormatter 的有效选项:

  • PromConsole.NumberFormatter.humanize:使用指标前缀格式化。
  • PromConsole.NumberFormatter.humanizeNoSmallPrefix:对大于1的绝对值使用指标前缀格式化。对小于 1 的绝对值使用 3 位有效数字格式化。这对于避免由 PromConsole.NumberFormatter.humanize 产生的毫秒查询每秒这样的单位非常有用。
  • PromConsole.NumberFormatter.humanize1024:使用 1024 作为基数而不是 1000 来格式化人类化结果。

该文档基于 Prometheus 官方文档翻译而成。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32