控制檯模板
注意自 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 個部分
- 頂部的導航欄
- 左側的選單
- 底部的時間控制元件
- 中央的主內容區,通常是圖表
- 右側的表格
導航欄用於連結到其他系統,例如其他 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_head 和 prom_right_table_tail 模板包含了右側表格。這是可選的。
prom_query_drilldown 是一個模板,它會評估傳遞給它的表示式,對其進行格式化,並連結到表示式瀏覽器中的該表示式。第一個引數是表示式。第二個引數是要使用的單位。第三個引數是如何格式化輸出。只有第一個引數是必需的。
prom_query_drilldown 第三個引數的有效輸出格式
- 未指定:預設的 Go 顯示輸出。
humanize:使用度量單位字首 顯示結果。humanizeNoSmallPrefix:對於絕對值大於 1 的值,使用度量單位字首 顯示結果。對於絕對值小於 1 的值,顯示 3 位有效數字。這對於避免產生類似由humanize產生的“每秒毫查詢數(milliqueries per second)”之類的單位非常有用。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產生的“每秒毫查詢數(milliqueries per second)”之類的單位非常有用。PromConsole.NumberFormatter.humanize1024:使用以 1024 為底數(而不是 1000)的人性化結果進行格式化。