管理ツール

Cloud Monitoring で Monitoring Query Language の一般提供を開始

#managementtools

※この投稿は米国時間 2020 年 12 月 24 日に、Google Cloud blog に投稿されたものの抄訳です。

IT や開発チームのデベロッパーとオペレーターは、サービス停止のトラブルシューティング、根本原因分析の実行、カスタム SLI / SLO やレポート、分析の作成、複雑なアラート ロジックの設定などを行うために、強力な指標クエリ、分析、グラフ作成、アラートの機能を必要としています。そのニーズにお応えするため、このたび Cloud MonitoringMonitoring Query Language(MQL)の一般提供を開始しました。

MQL は Google 社内の指標クエリ言語で、10 年にわたり学習と改善を重ねて完成したものです。これにより、Google 社内の本番環境で使用されている高度なクエリを可能にする言語を、Google Cloud ユーザーも利用できるようになります。たとえば、MQL を使用すると以下のようなことができます。

  • 比率ベースのチャートやアラートを作成する

  • タイムシフト分析を実行する(指標データを週ごと、月ごと、年ごとに比較するなど)

  • 数学演算、論理演算、テーブル オペレーション、その他の関数を指標に適用する

  • 複数の指標をフェッチ、結合、集約する

  • 事前定義された値ではなく、任意でパーセンタイル値を選択する

  • 正規表現を含む任意の文字列操作を使用して、データを集計する新しいラベルを作成する

以下では、Cloud Monitoring 内から MQL にアクセスして使用する方法をご紹介します。

MQL を使ってみる

MQL の使い方は簡単です。Cloud Monitoring Metrics Explorer でボタンをクリックして MQL Query Editor にアクセスします。

MQL Query Editor.jpg

次に、Metrics Explorer UI でクエリを作成し、[Query Editor] ボタンをクリックします。これで既存のクエリが MQL クエリに変換されます。

Query Editor.jpg

MQL はオペレーションと関数を使用して構成されています。オペレーションは共通の「パイプ」イディオムを使用してリンクされ、1 つのオペレーションの出力が次のオペレーションの入力になります。オペレーションをリンクすることで、複雑なクエリを段階的に構築していくことができます。Linux コマンドラインでパイプを介してコマンドとデータを作成、チェーンするのと同じように、MQL を使用して指標をフェッチしてオペレーションを適用できます。

より高度な例として、Compute Engine VM インスタンスで実行される分散ウェブサービスをビルドして Cloud Load Balancing を使用し、SRE の「ゴールデン シグナル」の一つであるエラー率を分析する場合を考えてみましょう。

リクエストの合計数に対する HTTP 500 レスポンス(内部エラー)を返すリクエストの比率、つまり、リクエスト失敗率を示すグラフを表示するとします。loadbalancing.googleapis.com/https/request_count 指標タイプには response_code_class というラベルがあり、これでレスポンス コードのクラスを取得します。

この例では、比率の分子と分母が同じ時系列から導出されるため、グループ化するだけで比率を計算できます。次のクエリはこの方法を示しています。

  fetch https_lb_rule::loadbalancing.googleapis.com/https/request_count
| group_by [matched_url_path_rule],
    sum(if(response_code_class = 500, val(), 0)) / sum(val())

このクエリでは、次の 2 つの合計の比率に基づいて作成された集計式が使用されます。

  • 最初の合計では、if 関数を使用して 500 の値を持つ HTTP レスポンスをカウントし、他の HTTP レスポンス コードの場合はカウントしません。sum 関数で 500 を返したリクエストの数を計算します。

  • 2 番目の合計では、val() で表されるすべてのリクエストのカウントを合計します。

この 2 つの合計が除算され、すべてのレスポンスに対する 500 の値を持つレスポンスの比率になります。

次にこのクエリからアラート ポリシーを作成してみましょう。アラートに進み、[ポリシーを作成]、[条件を追加] の順にクリックすると、Metrics Explorer に表示されていたものと同じ [Query Editor] ボタンが表示されます。

上述の同じクエリを使用し、これにアラートのしきい値を指定する条件演算子を追加します。

  fetch https_lb_rule::loadbalancing.googleapis.com/https/request_count
| group_by [matched_url_path_rule],
    sum(if(response_code_class = 500, val(), 0)) / sum(val())
| condition val() > .50 '10^2.%'

条件で、比率の値がしきい値の 50% を超えているかどうか判断するために、アライメントされた入力テーブルの各データポイントをテストします。文字列 '10^2.%' は、値をパーセンテージとして使用する必要があることを指定します。

比率に加えて、MQL のもう一つの一般的なユースケースとしてタイムシフトがあります。簡潔にするため、このブログ投稿ではタイムシフトについては取り上げませんが、サンプル ドキュメントでは、週ごとまたは月ごとの比較を実行する手順について説明しています。これは、カスタム指標と Prometheus 指標の 24 か月の長期保持と組み合わせると特に強力です。

モニタリングを次のレベルに引き上げる

MQL ではあらゆるユースケースが実現可能です。すべてのお客様が MQL を使用して、結合の実行、任意の割合の表示、高度な計算の実行などの操作を実行できるようになります。皆様がモニタリング、アラート、オペレーションのニーズを解決するために MQL をどのように利用するのか、拝見するのを楽しみにしています。MQL の詳細については、ドキュメントクイックスタート、例(クエリアラート)、言語と関数のリファレンスなどをご覧ください。

-Cloud Monitoring プロダクト マネージャー Rory Petty