控制檯模板

注意自 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 個部分

  1. 頂部的導航欄
  2. 左側的選單
  3. 底部的時間控制元件
  4. 中央的主內容區,通常是圖表
  5. 右側的表格

導航欄用於連結到其他系統,例如其他 Prometheus 例項 1、文件以及您認為有用的其他任何內容。選單用於在同一個 Prometheus 伺服器內部進行導航,這對於在另一個標籤頁中快速開啟控制檯以關聯資訊非常有用。這兩者都在 console_libraries/menu.lib 中進行配置。

時間控制元件允許更改圖表的時間範圍和跨度。控制檯的 URL 可以共享,其他人訪問時也會顯示相同的圖表。

主內容區通常是圖表。其中提供了一個可配置的 JavaScript 圖表庫,它將處理從 Prometheus 請求資料並將其透過 Rickshaw  渲染出來的過程。

最後,右側的表格可用於以比圖表更緊湊的形式顯示統計資料。

示例控制檯

這是一個基礎控制檯。它在右側的表格中顯示了任務數量、其中正在執行(up)的任務數、平均 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_headprom_right_table_tail 模板包含了右側表格。這是可選的。

prom_query_drilldown 是一個模板,它會評估傳遞給它的表示式,對其進行格式化,並連結到表示式瀏覽器中的該表示式。第一個引數是表示式。第二個引數是要使用的單位。第三個引數是如何格式化輸出。只有第一個引數是必需的。

prom_query_drilldown 第三個引數的有效輸出格式

  • 未指定:預設的 Go 顯示輸出。
  • humanize:使用度量單位字首 顯示結果。
  • humanizeNoSmallPrefix:對於絕對值大於 1 的值,使用度量單位字首 顯示結果。對於絕對值小於 1 的值,顯示 3 位有效數字。這對於避免產生類似由 humanize 產生的“每秒毫查詢數(milliqueries per second)”之類的單位非常有用。
  • 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 產生的“每秒毫查詢數(milliqueries per second)”之類的單位非常有用。
  • PromConsole.NumberFormatter.humanize1024:使用以 1024 為底數(而不是 1000)的人性化結果進行格式化。

本頁內容