• 控制台模板
    • " level="2">快速开始
    • " level="2">控制台示例
    • " level="2">图形库

    控制台模板

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

    控制台模板是创建可在源代码管理中轻松管理模板的最强大方法。不过这是一条学习曲线,因此刚接触这种监控方式的用户应首先尝试使用 Grafana

    快速开始

    Prometheus 附带了一个控制台示例,可以给您一些帮助。可以在正在运行的 Prometheus 的/consoles/index.html.example上找到这些文件,如果 Prometheus 正在采集带有job="node"标签的 Node Exporter,则会显示 Node Exporter 控制台。

    示例控制台包含 5 部分: 1. 顶部的导航栏 2. 左边的菜单栏 3. 底部的时间控制栏 4. 中间的主要内容,通常是图形 5. 右侧的表

    导航栏用于链接到其它系统,例如其它 Prometheis,文档以及对您有意义的任何其它内容。菜单用于在相同 Prometheus 服务中进行导航,这对于能够快速打开一个关联其它信息选项卡的控制台非常有用。两者都在console_libraries/menu.lib中配置。

    时间控件允许更改图表的窗口时间和范围。控制台 URL 可以共享且将显示相同的图形。

    通常主要内容是图形。提供了一个可配置的 JavaScript 图形库,该库处理来自 Prometheus 的请求数据,并通过Rickshaw进行渲染后展示出来。

    最后,右侧的表格可以用来呈现比图形更紧凑的统计信息。

    控制台示例

    以下是一个基本的控制台,它在右侧表格中显示了任务数,正常运行数,CPU 平均使用率和内存平均使用率。主要内容包含一个每秒查询的图。

    1. {{template "head" .}}
    2. {{template "prom_right_table_head"}}
    3. <tr>
    4. <th>MyJob</th>
    5. <th>{{ template "prom_query_drilldown" (args "sum(up{job='myjob'})") }}
    6. / {{ template "prom_query_drilldown" (args "count(up{job='myjob'})") }}
    7. </th>
    8. </tr>
    9. <tr>
    10. <td>CPU</td>
    11. <td>{{ template "prom_query_drilldown" (args
    12. "avg by(job)(rate(process_cpu_seconds_total{job='myjob'}[5m]))"
    13. "s/s" "humanizeNoSmallPrefix") }}
    14. </td>
    15. </tr>
    16. <tr>
    17. <td>Memory</td>
    18. <td>{{ template "prom_query_drilldown" (args
    19. "avg by(job)(process_resident_memory_bytes{job='myjob'})"
    20. "B" "humanize1024") }}
    21. </td>
    22. </tr>
    23. {{template "prom_right_table_tail"}}
    24. {{template "prom_content_head" .}}
    25. <h1>MyJob</h1>
    26. <h3>Queries</h3>
    27. <div id="queryGraph"></div>
    28. <script>
    29. new PromConsole.Graph({
    30. node: document.querySelector("#queryGraph"),
    31. expr: "sum(rate(http_query_count{job='myjob'}[5m]))",
    32. name: "Queries",
    33. yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
    34. yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
    35. yUnits: "/s",
    36. yTitle: "Queries"
    37. })
    38. </script>
    39. {{template "prom_content_tail" .}}
    40. {{template "tail"}}

    prom_right_table_headprom_right_table_tail模板包裹右侧的表。这是可选的

    prom_query_drilldown是一个模板,它将计算传递给它的表达式,对其进行格式设置病链接到表达式浏览器中的表达式。第一个参数是表达式,第二个参数是要使用的单位,第三个参数是如何格式化输出。仅第一个参数是必需的。

    对于prom_query_drilldown第三个参数合法的输出格式:

    • 没有指定: 默认 Go 语言格式的输出
    • humanize: 使用metric prefixes显示结果
    • humanizeNoSmallPrefix: 对于绝对值大于 1 的值,使用metric prefixes显示结果;对于绝对值小于 1 的值,显示 3 位有效数字。这对于避免在humanize过程中产生千分制的单位很有用。
    • humanize1024: 使用 1024 而不是 1000 作为底数显示可读性转化结果。这通常用作将B做为第二个参数使用,以产生可读性更好的单位如,KiBMiB
    • printf.3g: 显示 3 位有效数字

    还可以定义自定义格式。有关示例,请参见 prom.lib

    图形库

    图形库的调用方式为:

    1. <div id="queryGraph"></div>
    2. <script>
    3. new PromConsole.Graph({
    4. node: document.querySelector("#queryGraph"),
    5. expr: "sum(rate(http_query_count{job='myjob'}[5m]))"
    6. })
    7. </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: 使用 metric prefixes 进行格式化
    • PromConsole.NumberFormatter.humanizeNoSmallPrefix: 对于绝对值大于 1 的值,使用metric prefixes显示结果;对于绝对值小于 1 的值,显示 3 位有效数字。这对于避免在PromConsole.NumberFormatter.humanize过程中产生千分制的单位很有用
    • PromConsole.NumberFormatter.humanize1024: 使用 1024 而不是 1000 作为底数显示可读性转化结果