控制台模板

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

控制台模板是创建模板的最强大方式,这些模板可以轻松地在源代码控制中管理。但是,这需要一定的学习曲线,因此不熟悉这种监控方式的用户应该先尝试使用 Grafana

入门

Prometheus 带有一组示例控制台,可以帮助您入门。这些控制台可以在运行中的 Prometheus 上的 /consoles/index.html.example 中找到,如果 Prometheus 使用 job="node" 标签抓取 Node Exporter,它们将显示 Node Exporter 控制台。

示例控制台包含 5 个部分

  1. 顶部的导航栏
  2. 左侧的菜单
  3. 底部的时序控件
  4. 中间的主要内容,通常是图表
  5. 右侧的表格

导航栏用于链接到其他系统,例如其他 Prometheis 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_headprom_right_table_tail 模板包含右侧表格。这是可选的。

prom_query_drilldown 是一个模板,它将评估传递给它的表达式,对其进行格式化,并链接到 表达式浏览器 中的表达式。第一个参数是表达式。第二个参数是要使用的单位。第三个参数是输出的格式化方式。只需要第一个参数。

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

  • 未指定:默认的 Go 显示输出。
  • humanize:使用 度量前缀 显示结果。
  • humanizeNoSmallPrefix:对于大于 1 的绝对值,使用 度量前缀 显示结果。对于小于 1 的绝对值,显示 3 位有效数字。这对于避免 humanize 可能产生的毫秒查询每秒等单位非常有用。
  • 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 可选。图表类型。选项包括 linearea(堆叠图表)。默认值为 line
name 可选。图例和悬停详细信息中图表的标题。如果传递字符串,则 [[ label ]] 将被替换为标签值。如果传递函数,则将传递一个标签映射,该函数应返回名称作为字符串。可以是列表。
xTitle 可选。x 轴的标题。默认值为 Time
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 作为基数格式化人性化结果。

此文档是 开源的。请通过提交问题或拉取请求帮助改进它。