【入門編】Grafana Expressions機能の極意:数学演算とデータソース間の複合クエリをダッシュボード上で完結させる裏技 – 運用監視・オブザーバビリティ活用バイブル

「監視ツールをただの『グラフ表示機』だと思っていませんか?」

こんにちは。システムが複雑化する現代において、私たちは日々膨大なメトリクスに溺れています。Prometheus、CloudWatch、Loki……バラバラの場所にあるデータを、頭の中で統合して障害原因を突き止める。そんな神経をすり減らす作業は、もう終わりにしましょう。

今日は、Grafanaが持つ最強の隠し玉「Expressions(式)」機能の極意を伝授します。これを使えば、データソースの垣根を超えて計算し、ダッシュボード上で直接「意味のある指標」を導き出せるようになります。

—

1. なぜ「Expressions」が革命的なのか?

通常、異なるデータソース(例えばPrometheusのメトリクスとCloudWatchの負荷情報)を比較するには、バックエンドで専用の集計スクリプトを書いたり、一度BigQuery等にインポートしたりする必要があります。

しかし、Expressionsを使えば「ブラウザ上の数式」として処理が完結します。

  • 計算の民主化: 開発者がSQLやPromQLを書けなくても、ダッシュボード上で「A / B 100」のような計算が可能。
  • コスト削減: サーバーサイドでの無駄なデータ加工処理を排除。
  • 即時性: 運用中の「これとこれを掛け合わせたらどうなる?」という仮説を即座に視覚化。

—

2. 準備:Grafana Expressionsの基本セットアップ

特別なインストールは不要です。Grafana 7.4以上であれば、標準で組み込まれています。

1. データソースの準備: 「Prometheus」と「CloudWatch」がGrafanaに正しく接続されていることを確認してください。
2. クエリの作成:

  • Query A(Prometheus): `http_requests_total`
  • Query B(CloudWatch): `AWS/EC2 CPUUtilization`
  • これらを実行し、グラフが表示される状態にします。

—

3. 実践:データソースを跨いだ「複合演算」の神髄

今回は、「アプリケーションの処理リクエスト数に対するCPU負荷率」を算出し、コストパフォーマンスを可視化してみましょう。

ステップ1:Queryの追加(AとB)

まずは通常通り、二つの異なるソースからデータを取得します。ここで重要なのは、「Legend(凡例)」を必ず固定することです。

ステップ2:Expressionの追加

クエリ入力画面の「+」ボタンから「Expression」を選択します。

ステップ3:Math演算の記述

「Operation」に`$A / $B`のような数式を入力します。これが、世界で最も強力な計算式の一つです。

現場でよく使う数式の例
リクエストあたりのCPUコストを計算
$A / $B

異常検知用の動的閾値(平均値の1.5倍を超えたら警告)
$A > (mean($A) 1.5)

【重要】ここがプロの技:
異なるデータソースを扱う際、タイムスタンプがずれることがあります。Expression機能は、内部で「Outer Join」に近い形でタイムスタンプを強制的に同期させます。これにより、たとえ収集間隔が違っても、グラフ上で無理やり結合して計算を成立させることが可能です。

—

4. 精度を高める「Hello World」的な動作確認

初めて触る際は、以下の手順で動作を検証してください。

1. 静的な数値で検証:

  • Expressionに `100 + 200` と入力し、結果がグラフ上に「300」の直線として描画されるか確認してください。これが「計算エンジンが動いている」という証明です。

2. データの結合:

  • `$A 0` を作成し、元のメトリクスが「0」に変換されることを確認。
  • 次に `$A / $B` を実行し、データが欠損していないか確認します。もしデータが出ない場合は、「Fill mode」を「Null」から「Previous value」に変更してください。これが現場で最もハマりやすい罠です。

—

5. 伝説のエンジニアからのアドバイス

Expressionsを使いこなす最大のコツは、「ダッシュボードを演算装置にするな」ということです。

複雑すぎる計算をダッシュボードに詰め込むと、ブラウザが重くなり、閲覧のたびに負荷がかかります。

  • ダッシュボードには「結果」のみを出す。
  • 重い集計は、できるだけデータソース側(PromQL等)で済ませる。
  • Expressionsは、あくまで「最後の味付け」に使う。

このバランスを守れば、あなたのダッシュボードは「ただのグラフ」から、「障害の予兆を教えてくれる賢い相棒」へと進化します。

—

まとめ:今日から始めるステップアップ

1. まずは、既存のクエリを `$A 2` のように加工することから始めてください。
2. 次に、異なるデータソースの数値を「+」で合算してみる。
3. 最終的には、それを用いて「アラート用の複合指標」を作成する。

これをマスターすれば、毎日の「このメトリクスとあれを見比べて……」という作業から解放され、あなたはもっと価値のある「アーキテクチャの改善」に時間を割けるようになります。

さあ、Grafanaを開いて、あなたのシステムの「隠れた相関関係」を暴き出しましょう。何か詰まったら、いつでも戻ってきてくださいね。

タイトルとURLをコピーしました