コンソールテンプレート

コンソールテンプレートを使用すると、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_headprom_right_table_tailテンプレートには右側のテーブルが含まれています。これはオプションです。

prom_query_drilldownは、渡された式を評価し、書式設定し、式ブラウザで式にリンクするテンプレートです。最初の引数は式です。2番目の引数は使用する単位です。3番目の引数は出力の書式設定方法です。最初の引数のみが必須です。

prom_query_drilldownの3番目の引数の有効な出力形式

  • 指定なし:デフォルトのGo表示出力。
  • humanizeメートル法の接頭辞を使用して結果を表示します。
  • humanizeNoSmallPrefix:絶対値が1より大きい場合、メートル法の接頭辞を使用して結果を表示します。絶対値が1未満の場合、3桁の有効数字で表示します。これは、humanizeによって生成されるミリクエリ/秒などの単位を回避するのに役立ちます。
  • humanize1024:1000ではなく1024を基数として人間化された結果を表示します。これは通常、Bを2番目の引数として使用し、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を読み込みます。

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

名前説明
必須。グラフ化する式。リストにすることができます。
ノード必須。レンダリング先のDOMノード。
期間オプション。グラフの期間。デフォルトは1時間です。
終了時刻オプション。グラフが終了するUnix時間。デフォルトは現在時刻です。
オプション。グラフの幅(タイトルを除く)。デフォルトは自動検出です。
高さオプション。グラフの高さ(タイトルと凡例を除く)。デフォルトは200ピクセルです。
最小値オプション。x軸の最小値。デフォルトは最低データ値です。
最大値オプション。y軸の最大値。デフォルトは最高データ値です。
レンダラーオプション。グラフのタイプ。オプションはlinearea(積み重ねグラフ)です。デフォルトはlineです。
名前オプション。凡例およびホバー詳細でのプロットのタイトル。文字列が渡された場合、[[ label ]]はラベル値に置換されます。関数が渡された場合、ラベルのマップが渡され、文字列として名前を返す必要があります。リストにすることができます。
x軸のタイトルオプション。x軸のタイトル。デフォルトはTimeです。
y軸の単位オプション。y軸の単位。デフォルトは空です。
y軸のタイトルオプション。y軸のタイトル。デフォルトは空です。
y軸の書式設定オプション。y軸の数値フォーマッタ。デフォルトはPromConsole.NumberFormatter.humanizeです。
y軸ホバー書式設定オプション。ホバー詳細の数値フォーマッタ。デフォルトはPromConsole.NumberFormatter.humanizeExactです。
カラースキームオプション。プロットで使用されるカラースキーム。16進カラーコードのリスト、またはRickshawがサポートするカラースキーム名のいずれかになります。デフォルトは'colorwheel'です。

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

yAxisFormatteryHoverFormatterの有効なオプション

  • PromConsole.NumberFormatter.humanizeメートル法の接頭辞を使用して書式設定します。
  • PromConsole.NumberFormatter.humanizeNoSmallPrefix:絶対値が1より大きい場合、メートル法の接頭辞を使用して書式設定します。絶対値が1未満の場合、3桁の有効数字で書式設定します。これは、PromConsole.NumberFormatter.humanizeによって生成されるミリクエリ/秒などの単位を回避するのに役立ちます。
  • PromConsole.NumberFormatter.humanize1024:1000ではなく1024を基数として人間化された結果を書式設定します。

このページの内容