コンソールテンプレート - Prometheusドキュメント

このページはPrometheus公式ドキュメント和訳+αの一部です。

コンソールテンプレート

コンソールテンプレートによって、Go templating languageで書かれた任意のコンソールを作成することができる。

コンソールテンプレートは、簡単にバージョン管理できるテンプレートを作成する最も強力な方法である。ただ、学習コストは高いので、このスタイルの監視に慣れていないユーザーは、まずGrafanaを試すのが良い。

Getting started

Prometheusには、コンソールのサンプルセットがある。これらは稼働しているPrometheusの/consoles/index.html.exampleで見ることができ、 Node Exporterがjob="node"というラベルでscrapeしているなら、Node Exporterのコンソールを表示する。

このサンプルコンソールは、5つの部分からなる

  • 上部のナビゲーションバー
  • 左側のメニュー
  • 下部の時間コントロール
  • 中央のメインコンテンツ(普通はグラフ)
  • 右側の表

ナビゲーションバーは、他のPrometheusなどの他システム、ドキュメントなどへのリンクである。メニューは、そのPrometheusサーバー自体の中のナビゲーションに用い、コンソールを新しいタブで開いて情報の相互関連性を見るために便利である。どちらもconsole_libraries/menu.libで設定することが出来る。

時間コントロールによって、グラフの間隔と幅を変更することが出来る。コンソールのURLは共有することが出来て、他の人にも同じグラフを表示する。

メインコンテンツは、普通はグラフである。設定可能なJavaScriptのグラフライブラリが提供されていて、PrometheusからのデータのリクエストとRickshawを通した描画が出来る。

最後に、右側の表は、グラフよりコンパクトに統計情報を表示するために利用できる。

サンプルコンソール

これは、基本的なコンソールで、右側の表にタスクの数、いくつのタスクがupか、平均メモリ使用量を表示し、メインコンテンツとして毎秒のクエリ数のグラフを表示する。

{{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は、渡された式を評価し、フォーマットし、expression browserの式へリンクするテンプレートである。 第1引数が式で、第2引数は単位、第3引数は出力のフォーマット方法である。第1引数のみ必須である。

prom_query_drilldownの第3引数の正当な出力フォーマットは以下の通り。

  • Not specified: Default Go display output.
  • humanize: 結果をSI接頭辞を用いて表示
  • humanizeNoSmallPrefix: 1より大きな値はSI接頭辞を用いて表示、1より小さな値は3桁表示。これは、humanizeで生成されるmilliqueries per secondのような単位を避けるために便利である
  • humanize1024: 1000ではなく1024を底としたhumanize同様の表示をする。これは、KiBMiBのような単位を生成するために、Bを第2引数にしたときによく利用される。
  • 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テンプレートが必要なJavaScriptCSSをロードする。

グラフライブラリのパラメーター

  • expr
    • Required.
    • グラフにする式。リストも可
  • node
    • Required.
    • 描画するためのDOMノード
  • duration
    • Optional.
    • グラフの期間。デフォルトは1時間
  • endTime
    • Optional.
    • グラフの最後のunixtime。デフォルトは現在
  • width
    • Optional.
    • グラフの幅(タイトルを除く)。デフォルトは、自動検出
  • height
    • Optional.
    • グラフの高さ(タイトルと凡例を除く)。デフォルトは200ピクセル
  • min
    • Optional.
    • X軸最小値。デフォルトは、データの最低値。
  • max
    • Optional.
    • Y軸最大値。デフォルトは、データの最高値。
  • renderer
    • Optional.
    • グラフの種類。lineまたはarea。デフォルトは、line
  • name
    • Optional.
    • 凡例とhover detailで使われるプロットのタイトル。文字列が渡された場合、[[ label ]]はラベルの値で置換される。関数が渡された場合、ラベルのマップが渡されるので、文字列として名前を返すこと。リストも可
  • xTitle
    • Optional.
    • X軸のタイトル。デフォルトはTime
  • yUnits
    • Optional.
    • Y軸の単位。デフォルトは、空。
  • yTitle
    • Optional.
    • Y軸のタイトル。デフォルトは、空。
  • yAxisFormatter
    • Optional.
    • Y軸の数値のフォーマッター。デフォルトは、PromConsole.NumberFormatter.humanize
  • yHoverFormatter
    • Optional.
    • hover detailの数値のフォーマッター。デフォルトは、PromConsole.NumberFormatter.humanizeExact
  • colorScheme
    • Optional.
    • プロットで利用されるカラースキーム。hex color codeのリストまたはRickshawでサポートされているカラースキーム名。デフォルトは、'colorwheel'

exprnameの両方がリストの場合、両者は同じ長さでなければならない。nameは、対応する式のプロットに適用される。

yAxisFormatteryHoverFormatterの正当なオプションは以下の通り。

  • PromConsole.NumberFormatter.humanize: SI接頭辞を用いたフォーマット
  • PromConsole.NumberFormatter.humanizeNoSmallPrefix: 1より大きな値はSI接頭辞を用いてフォーマット、1より小さな値は3桁を用いたフォーマット。これは、humanizeで生成されるmilliqueries per secondのような単位を避けるために便利である
  • PromConsole.NumberFormatter.humanize1024: 1000ではなく1024を底としたhumanize同様のフォーマット

参考リンク

おすすめ書籍

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

和訳活動の支援

Prometheusドキュメント和訳が役に立った方は、以下QRコードからPayPayで活動を支援して頂けるとありがたいです。

PayPayによる支援用QRコード
上のQRコードからPayPayによる支援