コンソールテンプレートを使用すると、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 を共有すると、他のユーザーにも同じグラフが表示されます。
メインコンテンツは通常グラフです。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 番目の引数の有効な出力フォーマット
humanize
: 接頭辞を使用して結果を表示します。humanizeNoSmallPrefix
: 絶対値が 1 より大きい場合は、接頭辞を使用して結果を表示します。絶対値が 1 未満の場合は、有効数字 3 桁で表示します。これは、humanize
によって生成される可能性のある 1 秒あたりのミリクエリなどの単位を回避するのに役立ちます。humanize1024
: 1000 ではなく 1024 をベースにした人間化された結果を表示します。これは通常、KiB
や MiB
などの単位を生成するために、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 | オプション。グラフのタイプ。オプションは line と area (積み重ねグラフ) です。デフォルトは line です。 |
name | オプション。凡例とホバー詳細のプロットのタイトル。文字列が渡された場合、[[ label ]] はラベル値に置き換えられます。関数が渡された場合、ラベルのマップが渡され、文字列として名前を返す必要があります。リストにすることができます。 |
xTitle | オプション。x 軸のタイトル。デフォルトは Time です。 |
yUnits | オプション。y 軸の単位。デフォルトは空です。 |
yTitle | オプション。y 軸のタイトル。デフォルトは空です。 |
yAxisFormatter | オプション。y 軸の数値フォーマッタ。デフォルトは PromConsole.NumberFormatter.humanize です。 |
yHoverFormatter | オプション。ホバー詳細の数値フォーマッタ。デフォルトは PromConsole.NumberFormatter.humanizeExact です。 |
colorScheme | オプション。プロットで使用されるカラースキーム。16 進カラーコードのリスト、または Rickshaw でサポートされている カラースキーム名のいずれかです。デフォルトは 'colorwheel' です。 |
expr
と name
の両方がリストの場合、同じ長さである必要があります。名前は、対応する式のプロットに適用されます。
yAxisFormatter
および yHoverFormatter
の有効なオプション
PromConsole.NumberFormatter.humanize
: 接頭辞を使用してフォーマットします。PromConsole.NumberFormatter.humanizeNoSmallPrefix
: 絶対値が 1 より大きい場合は、接頭辞を使用してフォーマットします。絶対値が 1 未満の場合は、有効数字 3 桁でフォーマットします。これは、PromConsole.NumberFormatter.humanize
によって生成される可能性のある 1 秒あたりのミリクエリなどの単位を回避するのに役立ちます。PromConsole.NumberFormatter.humanize1024
: 1000 ではなく 1024 をベースにして人間化された結果をフォーマットします。このドキュメントはオープンソースです。問題点やプルリクエストを送信して、改善にご協力ください。