クエリグラフは、Mackerel に投稿されたラベル付きメトリックを PromQL クエリ言語を用いてグラフに表示する機能です。
ラベル付きメトリックとは、OpenTelemetry の仕様に準拠した Mackerel の新しい機能の名称です。OpenTelemetry とは、メトリック・ログ・トレースなどのテレメトリーデータを収集し、任意のバックエンドへエクスポートすることを目指して標準規格を定めたオープンソースのプロジェクトです。詳しくは OpenTelemetry のドキュメントをご覧ください。
https://opentelemetry.io/docs/
Mackerel にラベル付きメトリックを投稿する方法については、Mackerel にラベル付きメトリックを投稿する をご覧ください。
PromQL については、サポートされている PromQL の機能 をご覧ください。
クエリグラフを作成する
クエリグラフは カスタムダッシュボード のウィジェットとして利用できます。カスタムダッシュボードを作成・編集する画面で、グラフウィジェットのアイコンをドラッグ&ドロップして、ウィジェットを作成する位置を決定します。
グラフウィジェットを追加するダイアログが表示されたら、「グラフのタイプ」で「クエリ」を選択します。PromQL を記述するエディタが開き、上部のメニューからメトリック一覧を表示できます。
例として nginx.connections_current を選択してみると、以下のようにグラフが表示されます。
グラフの凡例を設定する
デフォルトでは、凡例はクエリとラベルを結合したものが設定されます。nginx.connections_current
のクエリで表示されるグラフの凡例は、以下のように表示されていることがわかります。
nginx.connections_current{state="active"}
nginx.connections_current{state="waiting"}
nginx.connections_current{state="writing"}
nginx.connections_current{state="reading"}
ラベルの数が多くなると凡例の長さも非常に長くなり、グラフのデータポイントがどのラベルに対応するものなのかわからなくなってしまうかもしれません。グラフの凡例を設定することで、凡例の表示方法を変更できます。
設定画面の「凡例」から「値」のセレクトボックスを選択すると、現在のクエリに対応するラベルの一覧が表示されます。ここでは state
を選択してみましょう。
セレクトボックスで選択された値は「凡例」の「表示」に {{state}}
と表示されます。これは凡例のテンプレート構文であり、{{}}
で囲った値がラベルのキーとして存在する場合、その値に置き換えられます。今回は state
がラベルのキーとして存在するため、{{state}}
が active
といった値に置き換えられます。
数値ウィジェットを作成する
ラベル付きメトリックを利用して数値ウィジェットを作成することもできます。数値ウィジェットのアイコンをドラッグ&ドロップして、ウィジェットを作成する位置を決定します。
数値ウィジェットを追加するダイアログが表示されたら、「メトリックのタイプ」で「クエリ」を選択します。数値ウィジェットでは、メトリックの系列を必ず 1 つに絞り込む必要があります。系列を絞り込むには以下の2つの方法があります。
- PromQL の
sum
やavg
などの集約関数を利用して絞り込む - ラベルのフィルタリングにより絞り込む
以下の例では、state
ラベルの値が active
の系列を絞り込んでいます。