本日は、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(マイクロサービスおよび分散トラフィックに最適化された多機能ゲートウェイソフトウェア)は、世界中の多くの上場企業および大企業から高い評価を得ております。OpenResty 以外にも、章亦春は Linux カーネル、Nginx、LuaJITGDBSystemTapLLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!