本日は、OpenResty Edge のもう一つの優れた機能をご紹介します。それは、Metric SQL 言語を使用して新しい動的メトリクスを作成する機能です。

Embeded image

動的メトリクスの紹介

動的メトリクスを使用すると、ユーザーは SQL に似たクエリ文を即座に作成して、測定指標を生成することができます。OpenResty Edge は自動的に効率的なコードを生成し、各ゲートウェイサーバーのメモリ内でメトリクスデータを収集・集計します。その後、データは Web コンソールに報告され、美しいチャートにリアルタイムで表示されます。

Embeded image

効率性については心配する必要はありません。システムは機械コーディング技術を使用して、ユーザー定義の動的メトリクスと組み込みの標準動的メトリクスを効率的なネイティブコードに変換します。固定サイズのメモリを使用してストリーミング集計と統計を行います。

Embeded image

サンプルアプリケーションでの動的メトリクスの有効化

OpenResty Edge の管理者用 Web コンソールにアクセスしましょう。これは当社のコンソールのサンプルデプロイメントです。各ユーザーは独自のローカルデプロイメントを持っています。

スクリーンショット

以前のサンプルアプリケーション、test-edge.com を引き続き使用します。

スクリーンショット

そのアプリケーションに進みます。

スクリーンショット

このメニュー項目をクリックして、動的メトリクスページに移動します。

Screenshot

動的メトリクスには 2 種類あることがわかります。1 つはユーザー定義の動的メトリクスで、ユーザー自身が定義したものです。

Screenshot

もう 1 つは、OpenResty Edge によって事前定義された標準動的メトリクスです。

Screenshot

本日のチュートリアルは標準動的メトリクスに関するものです。カスタム動的メトリクスについては別のチュートリアルで説明します。

標準動的メトリクスの有効化方法と動作の仕組みを説明するために、「Top 10 URIs by Request Counts」というメトリクスを例として使用します。

Screenshot

OpenResty Edge プラットフォームが提供する Metric SQL 言語を使用します。この言語のユーザーマニュアルは当社のドキュメントサイトで確認できます。

Screenshot

このメトリクスの Metric SQL 宣言を見てみましょう。

Screenshot

すべてのリクエストを URI でグループ化し、リクエスト数で降順にソートして、リクエスト数が最も多い上位 10 グループを表示します。

Screenshot

このボタンをクリックして Metric SQL ステートメントを非表示にすることができます。

Screenshot

ここまでで見てきたのは、この標準動的メトリクスの定義だけです。まだ実際に有効化していません。

このメトリクスを有効にするには、「Enable」ボタンをクリックする必要があります。

Screenshot

「Go to Chart」ボタンをクリックして、動的メトリクスのダッシュボードに移動します。

Screenshot

先ほど有効にしたメトリクスがここに表示されています。

Screenshot

このメトリクスを修正したい場合は、編集ボタンをクリックして編集パネルを開きます。

Screenshot

標準動的メトリクスの場合、メトリクスのレポート間隔のみを変更できます。メトリクスの名前と Metric SQL 宣言は読み取り専用です。

Screenshot

メトリクスのレポート間隔を変更します。デモンストレーションのため、メトリクスのレポート間隔を 10 秒に変更します。短いレポート間隔はオーバーヘッドが高くなることに注意してください。レポート間隔は少なくとも 60 秒に設定することをお勧めします。

Screenshot

「Submit」ボタンをクリックして変更を保存します。

Screenshot

テスト

それでは、リクエストを送信して動的メトリクスがどのように機能するかを見てみましょう。ターミナルで wrk というオープンソースツールを使用して、多数のリクエストを素早く送信できます。

wrk -d 1s http://test-edge.com/test1
wrk -d 1s http://test-edge.com/test2

Screenshot

15 秒待ってから、別のバッチのリクエストを送信します。

スクリーンショット

送信したすべてのリクエストを確認します。すべてのリクエストが URI でグループ化され、各グループのリクエスト数が棒グラフで表示され、降順にソートされていることがわかります。

Screenshot

Screenshot

データは円グラフ形式でも表示できます。

スクリーンショット

折れ線グラフ形式でも表示できます。

スクリーンショット

これは期待通りの結果です。

削除ボタンを使用して既存のメトリクスを削除することができます。

Screenshot

または、標準動的メトリクスのリストページに移動します。

Screenshot

「Disable」ボタンをクリックしてこのメトリクスを無効にします。

Screenshot

「Confirm」ボタンをクリックしてこのメトリクスの無効化を確認します。

Screenshot

ダッシュボードに戻ると、このメトリクスが表示されなくなっていることがわかります。

スクリーンショット

openresty.org の標準動的メトリクス

次に、当社のオープンソースウェブサイトの標準動的メトリクスを見てみましょう。これらのメトリクスは、そのウェブサイトの実際のトラフィックに基づいています。

Screenshot

検索ボックスに openresty.org と入力します。

スクリーンショット

スクリーンショット

アプリケーションに進みます。

スクリーンショット

動的メトリクスページに移動します。

スクリーンショット

ご覧のとおり、多くの標準動的メトリクスが有効になっています。データは円グラフ、棒グラフ、折れ線グラフなど、さまざまな方法で表示されています。

Screenshot

例えば、このメトリクスは非常に興味深いものです。

スクリーンショット

このボタンをクリックして、その Metric SQL ステートメントの定義を表示します。

スクリーンショット

このメトリクスは URI でグループ化されたトラフィックデータを表示しています。

スクリーンショット

このようなデータから、ユーザーがどの URI に最も興味を持っているかがわかります。

スクリーンショット

次に、このメトリクスを見てみましょう。

Screenshot

クリックしてその Metric SQL ステートメントを表示します。

スクリーンショット

これは、すべてのリクエストのクライアントとサーバーの都市名、緯度、経度をリストアップしています。

スクリーンショット

地図上でクライアントの都市とサーバーの都市を見ることができます。クライアントからサーバーへの接続を示す弧線が表示されます。地図からすべてのリクエストの地理的分布を見ることができます。

スクリーンショット

以上が本日お伝えしたい内容です。

Screenshot

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 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

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