コンソールテンプレート
コンソールテンプレートは、Go テンプレート言語 を使用して任意のコンソールを作成できるようにします。これらは Prometheus サーバーから提供されます。
コンソールテンプレートは、ソース管理で簡単に管理できるテンプレートを作成するための最も強力な方法です。ただし、学習曲線があるため、このスタイルの監視に慣れていないユーザーは、まず Grafana を試してください。
はじめに
Prometheus には、すぐに使えるコンソール例が付属しています。これらは実行中の Prometheus の /consoles/index.html.example で見つけることができ、Prometheus が job="node" ラベルを持つ Node Exporter をスクレイピングしている場合、Node Exporter コンソールが表示されます。
例のコンソールは 5 つの部分から構成されます
- 上部のナビゲーションバー
- 左側のメニュー
- 下部の時間コントロール
- 中央のメインコンテンツ、通常はグラフ
- 右側のテーブル
ナビゲーションバーは、他の Prometheus、ドキュメント、その他意味のあるものへのリンクに使用されます。メニューは、同じ Prometheus サーバー内のナビゲーション用で、情報を相関させるために別のタブでコンソールをすばやく開くことができるため非常に便利です。どちらも console_libraries/menu.lib で設定されます。
時間コントロールにより、グラフの期間と範囲を変更できます。コンソールの URL を共有すると、他の人も同じグラフを見ることができます。
メインコンテンツは通常グラフです。設定可能な JavaScript グラフィングライブラリが提供されており、Prometheus からデータを要求し、Rickshaw を介してレンダリングします。
最後に、右側のテーブルは、グラフよりもコンパクトな形式で統計を表示するために使用できます。
コンソール例
これは基本的なコンソールです。タスクの数、正常に実行されているタスクの数、平均 CPU 使用率、平均メモリ使用率を右側のテーブルに表示します。メインコンテンツには、クエリ/秒グラフがあります。
{{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 を基数として使用して表示します。これは通常、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 をロードします。
グラフライブラリのパラメータ
| 名前 | 説明 |
|---|---|
| 式 | 必須。グラフ化する式。リストにすることもできます。 |
| node | 必須。レンダリング先の DOM ノード。 |
| duration | オプション。グラフの期間。デフォルトは 1 時間です。 |
| endTime | オプション。グラフが終了するユニックスタイムスタンプ。デフォルトは現在時刻です。 |
| 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によって生成される可能性のあるミリクエリ/秒のような単位を回避するのに役立ちます。PromConsole.NumberFormatter.humanize1024: 人間化された結果を、1000 ではなく 1024 を基数として使用してフォーマットします。