OpenResty Edge でカスタム動的メトリクスを使用する方法
本日は、OpenResty Edge のもう一つの機能をご紹介します。それは、Metric SQL 言語を使用して全く新しい動的メトリクスを作成する機能です。
動的メトリクスの概要
動的メトリクスを使用すると、ユーザーは SQL に似たクエリをその場で作成してカスタムメトリクスを作成できます。OpenResty Edge は自動的に効率的なコードを生成し、各ゲートウェイサーバーのメモリ内でメトリクスデータを収集および集計します。その後、データは Web コンソールに報告され、美しいグラフにリアルタイムで表示されます。
ご心配なく。固定サイズのメモリを使用してストリーミング集計と統計を行います。最適化されたコンパイラが、ユーザー定義の各メトリクスに対して効率的なネイティブコードを生成します。
サンプルアプリケーション用のカスタム動的メトリクスの作成
OpenResty Edge の管理用 Web コンソールに移動しましょう。これは当社のコンソールのサンプルデプロイメントです。各ユーザーは独自のローカルデプロイメントを持っています。
以前のサンプルアプリケーション、test-edge.com を引き続き使用できます。
アプリケーションに入ります。
このメニュー項目をクリックして、動的メトリクスページに移動します。
動的メトリクスには 2 種類あります。1 つはカスタム動的メトリクスと呼ばれ、ユーザー自身が定義します。
もう 1 つは、OpenResty Edge によって事前定義された標準動的メトリクスです。
今日は「カスタム動的メトリクス」に焦点を当てます。標準動的メトリクスは別のチュートリアルで説明します。
このボタンをクリックして、新しい動的メトリクスを作成します。このメトリクスは、リクエストを最も多く送信した上位 10 都市を計算します。
このメトリクスに名前を入力します:Client Cities。
説明を追加します:リクエスト数が最も多い上位 10 都市。
データを報告する時間間隔を指定します。この間隔は、ゲートウェイサーバーのメモリから Edge ログサーバーに集計統計データを報告する時間間隔です。その後、データは Edge の管理用 Web コンソールに表示されます。便宜上、ここでは 10 秒を間隔として使用します。実際には、このような短い報告間隔はオーバーヘッドが比較的高くなります。
Edge 製品が提供する Metric SQL 言語を使用します。これは一般的な SQL 言語の構文を使用しています。
完全なユーザーマニュアルは当社のドキュメントサイトで見つけることができます。
ここにこの言語の詳細な説明があります。「語彙構造」から「演算子と式」、「選択クエリ文」まで。
このメトリクスの Metric SQL クエリ文を入力します。すべてのリクエストからクライアントの都市を選択します。リクエストを送信した都市でグループ化します。そして都市を降順で並べ替えます。上位 10 都市のみを保持します。
select client_city, count(*) as count
from reqs
group by client_city
order by count desc
limit 10
このメトリクスを保存します。
保存に成功しました。
テスト
新しい動的メトリクスは、個別の設定リリースなしで即座に有効になります。今からいくつかのリクエストを送信して、どのように機能するか見てみましょう。
ターミナルで、ドイツのフランクフルト市にあるリモートサーバーにログインします。
「curl」コマンドラインツールを使用して HTTP リクエストを送信します。
curl http://test-edge.com
サーバーからログアウトします。
次に、アメリカのサンノゼ市にある別のサーバーにログインします。
同様にリクエストを送信します。
curl http://test-edge.com
サーバーからログアウトします。
次に、イギリスのロンドンにある 3 台目のサーバーにログインします。今回は 4 つのリクエストを送信します。
最初のリクエストを送信します。
curl http://test-edge.com
10 秒待ってから、2 つ目と 3 つ目を送信します。さらに 10 秒後に 4 つ目のリクエストを送信します。
先ほど送信したすべてのリクエストを確認します。フランクフルトからのリクエストが 1 つあることがわかります。
サンノゼからのリクエストが 1 つあります。
ロンドンからのリクエストが 4 つあります。
データは円グラフでも表示できます。
折れ線グラフでも表示できます。
これは私たちが期待していた通りの結果です。
このボタンをクリックすると、この動的メトリクスの Metric SQL クエリを表示できます。
Metric SQL 文がここに表示されます。
「編集」ボタンを使用してこのメトリクスを編集できます。
または「削除」ボタンを使用して削除できます。
グラフが小さすぎると感じる場合は、拡大ボタンをクリックしてください。グラフはより大きなウィンドウで表示されます。
1 分から 1 年までの異なる時間間隔でメトリクスを表示できます。
または任意の時間範囲を直接選択することもできます。
閉じるボタンをクリックして、この大きなウィンドウを閉じます。
ここにも時間範囲のオプションがあります。ただし、選択肢は少なくなっています。
自動更新が有効になっている場合、メトリクスは先ほど指定した 10 秒間隔で自動的に更新されます。
「データのクリア」ボタンは、すべての履歴データをクリアしてデータ収集を再開するために使用します。
openresty.org の実際のトラフィックに基づく動的メトリクス
ここで、実際のトラフィックに基づいた動的メトリクスをいくつか見てみましょう。例として、当社が OpenResty Edge を使用している自社のウェブサイトを取り上げます。
検索ボックスに openresty.org と入力します。
このアプリケーションに入ります。
動的メトリクスページに移動します。
ここには既に多くのカスタム動的メトリクスがあります。データは円グラフ、棒グラフ、折れ線グラフなど、さまざまな方法で表示されています。
これは興味深そうです。クライアントの IP アドレスでグループ化されたすべてのリクエストを表示しています。
このボタンをクリックして、そのメトリクスの Metric SQL 文がどのようなものか見てみましょう。
このメトリクスを通じて、サイトがサービス拒否(DoS)攻撃を受けているかどうかを知ることができます。
このメトリクスを見てみましょう。北米地域でリクエストを最も多く送信している上位 10 カ国を表示しています。
クリックして Metric SQL 文を確認します。
以下がグラフです。
これらの例が興味深く、お役に立てば幸いです。以上が本日お伝えしたい内容です。
OpenResty Edge について
OpenResty Edge は、マイクロサービスと分散トラフィックアーキテクチャ向けに設計された多機能ゲートウェイソフトウェアで、当社が独自に開発しました。トラフィック管理、プライベート CDN 構築、API ゲートウェイ、セキュリティ保護などの機能を統合し、現代のアプリケーションの構築、管理、保護を容易にします。OpenResty Edge は業界をリードする性能と拡張性を持ち、高並発・高負荷シナリオの厳しい要求を満たすことができます。K8s などのコンテナアプリケーショントラフィックのスケジューリングをサポートし、大量のドメイン名を管理できるため、大規模ウェブサイトや複雑なアプリケーションのニーズを容易に満たすことができます。
著者について
章亦春(Zhang Yichun)は、オープンソースの OpenResty® プロジェクトの創始者であり、OpenResty Inc. の CEO および創業者です。
章亦春(GitHub ID: agentzh)は中国江蘇省生まれで、現在は米国ベイエリアに在住しております。彼は中国における初期のオープンソース技術と文化の提唱者およびリーダーの一人であり、Cloudflare、Yahoo!、Alibaba など、国際的に有名なハイテク企業に勤務した経験があります。「エッジコンピューティング」、「動的トレーシング」、「機械プログラミング」 の先駆者であり、22 年以上のプログラミング経験と 16 年以上のオープンソース経験を持っております。世界中で 4000 万以上のドメイン名を持つユーザーを抱えるオープンソースプロジェクトのリーダーとして、彼は OpenResty® オープンソースプロジェクトをベースに、米国シリコンバレーの中心部にハイテク企業 OpenResty Inc. を設立いたしました。同社の主力製品である OpenResty XRay動的トレーシング技術を利用した非侵襲的な障害分析および排除ツール)と OpenResty Edge(マイクロサービスおよび分散トラフィックに最適化された多機能
翻訳
英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!