コンソールテンプレート

コンソールテンプレートを使用すると、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 を共有すると、他のユーザーにも同じグラフが表示されます。

メインコンテンツは通常グラフです。Prometheus からデータをリクエストし、Rickshaw を介してレンダリングする、構成可能な JavaScript グラフライブラリが提供されています。

最後に、右側のテーブルを使用して、統計をグラフよりもコンパクトな形式で表示できます。

コンソールの例

これは基本的なコンソールです。タスクの数、稼働中のタスクの数、平均 CPU 使用率、および右側のテーブルの平均メモリ使用量を示しています。メインコンテンツには、1 秒あたりのクエリ数グラフがあります。

{{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 は、渡された式を評価し、フォーマットして、式ブラウザの式にリンクするテンプレートです。最初の引数は式です。2 番目の引数は使用する単位です。3 番目の引数は出力のフォーマット方法です。最初の引数のみが必須です。

prom_query_drilldown の 3 番目の引数の有効な出力フォーマット

  • 未指定:デフォルトの Go 表示出力。
  • humanize: 接頭辞を使用して結果を表示します。
  • humanizeNoSmallPrefix: 絶対値が 1 より大きい場合は、接頭辞を使用して結果を表示します。絶対値が 1 未満の場合は、有効数字 3 桁で表示します。これは、humanize によって生成される可能性のある 1 秒あたりのミリクエリなどの単位を回避するのに役立ちます。
  • humanize1024: 1000 ではなく 1024 をベースにした人間化された結果を表示します。これは通常、KiBMiB などの単位を生成するために、2 番目の引数として B を使用します。
  • 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 オプション。プロットで使用されるカラースキーム。16 進カラーコードのリスト、または Rickshaw でサポートされている カラースキーム名のいずれかです。デフォルトは 'colorwheel' です。

exprname の両方がリストの場合、同じ長さである必要があります。名前は、対応する式のプロットに適用されます。

yAxisFormatter および yHoverFormatter の有効なオプション

  • PromConsole.NumberFormatter.humanize: 接頭辞を使用してフォーマットします。
  • PromConsole.NumberFormatter.humanizeNoSmallPrefix: 絶対値が 1 より大きい場合は、接頭辞を使用してフォーマットします。絶対値が 1 未満の場合は、有効数字 3 桁でフォーマットします。これは、PromConsole.NumberFormatter.humanize によって生成される可能性のある 1 秒あたりのミリクエリなどの単位を回避するのに役立ちます。
  • PromConsole.NumberFormatter.humanize1024: 1000 ではなく 1024 をベースにして人間化された結果をフォーマットします。

このドキュメントはオープンソースです。問題点やプルリクエストを送信して、改善にご協力ください。