OpenResty XRay の自動分析レポート
OpenResty XRay は、人手を一切介さず、人間が読める診断レポートを自動生成します。どのプロセスに対して、いつ、どのアナライザーを実行するかを自ら判断し、まず汎用ツールで全体像をつかんでから、より専門的なツールへ連鎖させて各問題の原因を段階的に絞り込みます。さらにフレームグラフを自動解読して最もホットなコードパスを特定し、前回からの新規・変化した問題を明示した簡潔なレポートを作成します。実質的に、本番ソフトウェアの健康状態を 24 時間体制で見守る専属の主治医のような存在です。現在のレポートシステムが何をできるのか、そして近い将来何ができるようになるのか、一緒に見ていきましょう。
OpenResty XRay は動的トレーシング製品で、実行中のアプリケーションを自動的に分析し、パフォーマンスの問題、動作の問題、セキュリティの脆弱性を解決し、実行可能な提案を提供します。基盤技術として、OpenResty XRay は弊社の Y 言語によって駆動され、Stap+、eBPF+、GDB、ODB など、さまざまな環境で複数のランタイムをサポートしています。
過去
まず、過去を振り返り、ユーザーが OpenResty XRay の旧バージョンを使用する際によく遭遇した問題を見てみましょう。比較のため、新バージョンについても簡単に触れます。
アナライザーが多すぎる問題
OpenResty XRay は数百種類の動的トレーシング技術に基づく高度なアナライザーを提供しています。この数は急速に増加しています。これだけ多くのアナライザーがあることは良いことですが、ほとんどのユーザーにとっては急峻な学習曲線を意味します。ユーザーは特定のアナライザーの使用方法を学ぶだけでなく、適切なタイミングで適切なプロセスに対して正しいツールを実行する能力も必要です。後者は、オンラインの本番サーバーにとっては困難です。重要なイベントは指定した時間内に発生するとは限らず、あなたが眠っている間に発生する可能性があるからです。
もちろん、OpenResty XRay は定期的に、または CPU スパイクやメモリ増加などの重要なイベントが発生したときに、基本的なアナライザーを自動的に実行することをサポートしています。しかし、現在の環境や問題に基づいて、より高度なアナライザーを自動的に実行することはできませんでした。
幸いなことに、OpenResty XRay は現在、どのプロセスに対してどのアナライザーを実行するか、そしていつ実行するかについて、より賢くなっています。また、アナライザーやツールの実行結果を自動的に分析し、次に何をすべきかを決定するために有用な情報を抽出することもできます。例えば、特定の時間内に特定のプロセスの問題の根本原因を特定するために、現在の状況でどのような専門的なツールを実行する必要があるかを判断できます。言い換えれば、現在は複雑な意思決定と問題解決を独立して行うことができるのです。
グラフとデータが多すぎる問題
時間が経つにつれ、OpenResty XRay は大量のデータを収集します。データ量は大多数の監視システム、ログシステム、従来の APM 製品よりもはるかに少ないですが、それでも 1 人の人間が毎日、あるいは毎時間消化するには多すぎる量です。大量のデータは、アナライザーが大量のグラフ、表、テキストレポートを出力することにつながり、人々(弊社自身を含む)を圧倒しやすくなります。これは、人々が弊社のウェブコンソールですべてのアナライザーレポートを見ようとしたときに、どこから手をつけていいかわからなくなるという悪い状況を生み出しています。
新バージョンの OpenResty XRay は現在、新しい能力を持っています:大量のグラフとデータを自動的に解釈し、類似のグラフとデータを組み合わせ、最も典型的または極端な例を選び出し、簡潔でありながら依然として内容の濃い報告書を作成し、一般のユーザーが読めるようにすることができます。
フレームグラフの解釈
驚くべきことに、フレームグラフは概念的には単純ですが、ほとんどのユーザーがフレームグラフを正しく解釈できないことがわかりました。自分は解釈できると思っている人でさえ、グラフの中の本当の手がかりを見逃すことがよくあります。これは弊社自身のエンジニアリングチームでさえ頻繁に起こることです!
新バージョンの OpenResty XRay は現在、フレームグラフを自動的に分析することができます。
- 最もホットなコードパスまたは GC オブジェクト参照パス(GC ルートから)を見つけ、意味的レベルで一般的なコードパスを識別し、
- これらの発見(ホットスポット)を人々に説明します。
現在
OpenResty XRay は、オンラインソフトウェアアプリケーションの監視、分析、トラブルシューティングの方法を根本的に変えました。ほとんどのユーザーにとって、必要なのは OpenResty XRay のエージェントデーモンサービスをインストールし、サーバー上で実行し続けることだけです。その後、ユーザーは毎時更新される日次レポートまたは週次レポートを読むだけで、アプリケーションをより効率的、安定的、信頼性が高く、安全にするためのすべての結論と提案を見ることができます。OpenResty XRay の iPhone および Android 向けモバイルアプリケーションでは、新しいレポートや問題の通知さえプッシュすることができます!
要約レポート
ユーザーは OpenResty XRay ウェブコンソール(またはモバイルアプリケーション)の「Insights」ページで要約レポートを見ることができます。
日次レポート
デフォルトで表示されるレポートは、1時間ごとに更新される今日の日次レポートです。過去の日付の日次レポートを選択することも簡単です。日次レポートの時間範囲は1日です。
各レポートは 2 層のヘッダーで構成されています。第1層はユーザーアプリケーションです。異なる実行可能バイナリと異なるコマンドラインを持つアプリケーションは異なるものとみなされます。第 2 層は問題のタイプを示し、CPU、off-CPU、メモリ、エラーと例外などがあります。
CPU 時間の問題
上記のレポートサンプルは、CPU リソースカテゴリにおけるソースコードレベルのボトルネック問題をいくつか示しています。ほとんどのユーザーがすでに知っているように、OpenResty XRay はユーザーのソースコードにアクセスすることなく、問題のあるコードの正確な行まで迅速に特定することができます。上記の矢印で接続された緑のボックスは、関数呼び出しチェーンで表された Lua または C のコードパスです。これも動的トレーシング技術の魅力の一つです。
off-CPU 時間の問題
off-CPU(またはブロッキング/スリープ)タイプの問題について、サンプルレポートをいくつか紹介します。
メモリ使用の問題
本番環境でターゲットアプリケーションプロセスがどのようにメモリを使用しているか、そしてなぜそれほど多くのメモリを占有しているのかを知りたいですか?レポートのこのメモリ問題タイプセクションでお知らせします。OpenResty または Nginx アプリケーションの場合、libc(glibc または jemalloc)、Nginx メモリプール、Nginx 共有メモリ領域、そしてガベージコレクター(GC)によって管理される LuaJIT メモリをカバーすることができます。以下は一例です。
エラーと例外
本番マシンで発生した例外とエラーは、このカテゴリの下にリストされます。ターゲットアプリケーション内部でキャッチされた例外でさえも、ここに表示されます。以下は Lua 例外に関するいくつかの例です。
その他の問題タイプ
ディスク I/O、ネットワーク I/O、レイテンシ、セキュリティなど、より多くの問題タイプをカバーするよう努めています。新しい問題タイプが登場した場合、すぐにお知らせします。
レポートの比較と差分
OpenResty XRay は各日次(週次)レポートと前回の日次(週次)レポートとの差分または変更を自動的に計算します。したがって、レポートに表示される問題には異なるタイプがあります。例えば、前回のレポートには存在しなかった問題は「新しい問題」タイプになります(上記のスクリーンショットに表示されている “New” ラベルに注目してください)。前回のレポートに存在し、今回のレポートで消えた問題は「消失した問題」です。両方のレポートに存在するが、数値が変化した問題もあります。
問題の数値の変化(上昇と下降)は以下の通りです。
前回の数値の 5% 未満の差は同等とみなされます。
週次レポート
週次レポートのフォーマットは日次レポートと同じです。唯一の違いは、時間範囲が 1 週間であることです。1 週間が終わると、新しい週次レポートが自動的に生成されます。
完全なレポート
要約レポートと比較して、完全なレポートはより包括的です。ユーザーは要約レポートの「完全なレポートを表示」リンクをクリックして、対応する完全なレポートを表示できます。この手順は一般のユーザーにとっては省略可能です。
オンプレミスユーザー向けのレポートアップロード機能
OpenResty XRay をオンプレミスで運用しているお客様も、レポートを OpenResty XRay チームに自動的にアップロードして人間の専門家によるレビューを受けるオプションがあります。弊社の専門家チームは機械生成されたレポートをレビューし、未解決の問題についてより詳細に議論するためにお客様とのミーティングをアレンジすることができます。レポート生成エンジンと様々な技術スタックに関する知識ベースをまだ磨いている段階であるため、自動レポートに欠落している部分がある可能性があります。
OpenResty XRay が問題を自動的に絞り込む仕組み
OpenResty XRay は現在、CPU 使用率、ブロッキングまたはスリープ時間(off-CPU)、エラーまたは例外、メモリ使用など、多くの問題タイプに対して自動推論を行うことができます。まず、より一般的なツールを実行して概要を把握し、その後、より専門的なツールを使用して概要内の様々な発見事項を掘り下げます。例えば、システムが Gzip 圧縮に多くの CPU 時間を要していることを検出した場合、システムはより多くのツールを実行して根本原因を絞り込みます。例えば、Gzip 圧縮レベルが高すぎるかどうか、または Gzip 圧縮アルゴリズムに適していないバイナリリソースを圧縮しようとしているかどうかなどです。
いつ、どのプロセスに対して、どのアナライザーを実行するか
OpenResty XRay は、イベント、タイマー、システムメトリクスに基づく自動サンプリング方法を使用しています。OpenResty XRay が実行中のプログラムをサンプリングしていない場合、そのプログラムのオーバーヘッドは厳密にゼロです(動的トレーシングの非侵入性による)。サンプリング中でさえ、オーバーヘッドは通常非常に低く(5% 未満で、多くの場合測定不可能)なっています。
OpenResty XRay は、いつ、どのプロセスに対して、どのツールを実行するかを決定するためのスマート戦略を持っています。システムメトリクスや既に実行された他のアナライザーの結果に基づいて、次に実行する適切なアナライザーを慎重に選択します。目的は、事象が発生したときに、「犯行現場」で適切な量と種類のデータを収集することです。問題がすでに消失している場合、ターゲットプロセスを分析することは意味がありません。
一部の高度なアナライザーは確かに他のアナライザーよりも多くのオーバーヘッドを生成します。OpenResty XRay は、このようなツールの実行頻度を減らす(または全く実行しない)か、ターゲットアプリケーションの範囲を制限する(例えば、プロセスグループ全体ではなく単一のプロセスのみを分析する)ことで、オーバーヘッドを最小限に抑えようとしています。このオーバーヘッド制御は、OpenResty XRay コンソールで「本番」とマークされたマシンにのみ適用されます。非本番サーバーの場合、可能な限り早く結果を得ることがより便利です。
オンプレミスユーザーの場合
OpenResty XRay のオンプレミス版をご利用のお客様は、自動レポートアップロード機能を有効にすることを忘れずに、OpenResty Inc. チームがタイムリーにレポートをレビューできるようにしてください。
将来
現在、OpenResty XRay の自動レポート生成器は Nginx と OpenResty アプリケーション(OpenResty ベースのより高レベルのアプリケーション、例えば Kong を含む)のみをサポートしています。しかし、PostgreSQL、Redis、Python、Perl などの他の技術スタック用に設計された具体的なアナライザーとツールもすでに持っています。近い将来、より多くのアプリケーションタイプへのサポートを拡大する予定です。
さらに、ディスク I/O、ネットワーク I/O、レイテンシ、セキュリティ脆弱性など、より多くの問題タイプまたはリソースタイプをカバーしています。
OpenResty XRay のお客様が、レポートで早急に提供してほしい特定の機能がある場合、優先的に実装するよう手配いたします。
よくある質問
要約レポートと完全なレポートの違いは何ですか?
要約レポートは、ウェブコンソール(およびモバイルアプリ)の「Insights」ページに表示される簡潔な日次・週次レポートです。完全なレポートははるかに詳細で、要約レポートの「完全なレポートを表示」リンクから開きます。ほとんどのユーザーは要約レポートを読むだけで十分で、より深く調査したいときに完全なレポートを参照します。
OpenResty XRay の自動レポートはどの問題タイプをカバーしていますか?
各レポートはまずアプリケーション単位で分類され、次に問題タイプ(CPU、off-CPU(ブロッキングまたはスリープ)時間、メモリ、エラーと例外)で分類されます。メモリについては libc(glibc または jemalloc)、Nginx メモリプール、Nginx 共有メモリ領域、LuaJIT の GC 管理メモリをカバーします。エラーと例外には、アプリケーション内部でキャッチされた例外も含まれます。ディスク I/O、ネットワーク I/O、レイテンシ、セキュリティのカテゴリは順次追加中です。
日次レポートと週次レポートはどのくらいの頻度で更新されますか?
日次レポートは 1 日(暦日)を対象とし、1 時間ごとに更新されるため、常に最新の状況を確認できます。週次レポートは、暦週が終わるたびに自動的に新しいものが生成されます。各レポートは前回の同じ粒度のレポートと自動的に差分比較され、各問題を「新規」または「消失」としてタグ付けし、数値の変化を表示します(変化が 5% 未満の場合は同等とみなされます)。
自動レポート生成器はどのアプリケーションをサポートしていますか?
現在、レポート生成器は Nginx と OpenResty アプリケーション(Kong など OpenResty をベースに構築された上位アプリケーションを含む)をサポートしています。OpenResty XRay は PostgreSQL、Redis、Python、Perl など他の技術スタック向けのアナライザーとツールもすでに備えており、これらに対する自動レポート生成のサポートも予定されています。
OpenResty XRay について
OpenResty XRay は動的トレーシング製品であり、実行中のアプリケーションを自動的に分析して、パフォーマンスの問題、動作の問題、セキュリティの脆弱性を解決し、実行可能な提案を提供いたします。基盤となる実装において、OpenResty XRay は弊社の Y 言語によって駆動され、Stap+、eBPF+、GDB、ODB など、様々な環境下で複数の異なるランタイムをサポートしております。
著者について
章亦春(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、LuaJIT、GDB、SystemTap、LLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。
翻訳
英語版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!





























