主控台範本

主控台範本允許使用 Go 範本語言建立任意主控台。這些主控台由 Prometheus 伺服器提供服務。

主控台範本是在原始碼控制中輕鬆管理範本的最強大方法。不過,學習曲線較陡峭,因此不熟悉此監控方式的使用者應先試用 Grafana

入門

Prometheus 隨附一組範例主控台,供您開始使用。這些主控台可在執行中的 Prometheus 上的 /consoles/index.html.example 找到,如果 Prometheus 使用 job="node" 標籤抓取節點匯出器,則會顯示節點匯出器主控台。

範例主控台有 5 個部分

  1. 頂部的導覽列
  2. 左側的選單
  3. 底部的時間控制項
  4. 中央的主要內容,通常是圖表
  5. 右側的表格

導覽列用於連結到其他系統,例如其他 Prometheus 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 作為基數格式化人性化的結果。

此文件是開放原始碼。請透過提交問題或提取要求來協助改進它。