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