先日のブログ記事でGoogleは、Monitoring Query Language (MQL)をCloud Monitoringで一般供与すると発表した。
MQLは開発者や運用担当者に対して、メトリクスの問い合わせ、分析、グラフ化、アラートといった強力な機能を提供する。トラブルシュート目的や根本原因の調査、レポートと分析、複雑な警告ロジックといったユースケースでの使用が可能だ。
MQLはオペレーション(operation)と関数(function)とで構成される。'pipe'イディオムを使ってオペレーションを結合し、ひとつのオペレーションのアウトプットを次のオペレーションのインプットにする。さらにリンク(linking)によって、複雑なクエリをインクリメンタルに構築することも可能だ。同じような方法で、Linxコマンドライン上のパイプを通じてコマンドやデータのチェーンを作成して、MQLを使用したメトリクスのフェッチと操作を行うことができる。次のような目的に使用可能である。
- 比率に基くチャートとアラートの生成
- タイムシフト分析の実施
- メトリクスに対する数学、論理、テーブル操作、その他の関数の適用
- 複数のメトリクスを対象とした取得、結合、集約
- 事前定義ではない、任意のパーセンタイル値の選択
- 正規表現を含む任意の文字列操作を使用した、集約データに対する新たなラベルの生成
開発者と運用担当者は、Cloud Monitoring Metrics Explorer経由でMQL Query Editorにアクセスすることができる。そこでMetrics ExplorerのUIを使用してクエリを作成し、Query Editorのボタンをクリックすれば、そのクエリがMQLクエリに変換される。
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())
出典: https://cloud.google.com/blog/products/management-tools/introducing-monitoring-query-language-or-mql
もうひとつ、最近追加された機能として、Alertingにナビゲートすることで、クエリをアラートポリシとしても使用できる。'Add Conditon'をクリックするとMertics Explorer内に同じクエリエディタが表示されるので、そこでアラートポリシを定義することが可能になる。しきい値によるアラートであれば、次のような条件オペレーションを使うことができる。
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.%'
他のパブリッククラウドプロバイダも同様に、例えばMicrosoftはKusto Query Language(KQL)というクエリ言語を開発者や運用担当者向けに提供している。KQLでは、Azure Monitorのログをクエリすることができる。さらにAWSも、CloudWatchモニタリングサービス用に独自のクエリ言語を用意している。これら独自の言語はいずれも'パイプ'イディオムを採用し、オペレーションと関数を使用する。
前述のブログ記事では、クラウドモニタリング製品のマネージャであるRory Petty氏が次のように書いている。
MQLは、Googleの社内用メトリクスクエリ言語における、10年にわたる経験と改善の結果を示すものです。Google社内の運用ユーザに高度なクエリ機能を提供している言語と同じものが、今回、Google Cloudのユーザにも提供されることになりました。
Google Cloudのアウトバウンドプロダクトマネージメント担当ディレクタのRichard Seroter氏も、次のようにツイートしている。
10億のユーザを対象とした9つのサービスの運用から私たちが学んだことの多くが、GCPに取り入れられて利用できるようになります。
MQLに関する詳細な情報はCloud Monitoringのドキュメントページで、ガイダンスはquickstarts、sampes、reference guideで、それぞれ確認することができる。