OpenResty XRay の自動分析レポート
当社のエンジニアリングチームが数ヶ月にわたって努力を重ねた結果、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 は現在、CPU 使用率、ブロッキングまたはスリープ時間(off-CPU)、エラーまたは例外、メモリ使用など、多くの問題タイプに対して自動推論を行うことができます。まず、より一般的なツールを実行して概要を把握し、その後、より専門的なツールを使用して概要内の様々な発見事項を掘り下げます。例えば、システムが Gzip 圧縮に多くの CPU 時間を要していることを検出した場合、システムはより多くのツールを実行して根本原因を絞り込みます。例えば、Gzip 圧縮レベルが高すぎるかどうか、または Gzip 圧縮アルゴリズムに適していないバイナリリソースを圧縮しようとしているかどうかなどです。
いつ、どのプロセスに対して、どのアナライザーを実行するか
OpenResty XRay は、イベント、タイマー、システムメトリクスに基づく自動サンプリング方法を使用しています。OpenResty XRay が実行中のプログラムをサンプリングしていない場合、そのプログラムのオーバーヘッドは厳密にゼロです(動的トレーシングの非侵襲性による)。サンプリング中でさえ、オーバーヘッドは通常非常に低く(5% 未満で、多くの場合測定不可能)なっています。
OpenResty XRay は、いつ、どのプロセスに対して、どのツールを実行するかを決定するためのスマート戦略を持っています。システムメトリクスや既に実行された他のアナライザーの結果に基づいて、次に実行する適切なアナライザーを慎重に選択します。目的は、事象が発生したときに、「犯行現場」で適切な量と種類のデータを収集することです。問題がすでに消失している場合、ターゲットプロセスを分析することは意味がありません。
一部の高度なアナライザーは確かに他のアナライザーよりも多くのオーバーヘッドを生成します。OpenResty XRay は、このようなツールの実行頻度を減らす(または全く実行しない)か、ターゲットアプリケーションの範囲を制限する(例えば、プロセスグループ全体ではなく単一のプロセスのみを分析する)ことで、オーバーヘッドを最小限に抑えようとしています。このオーバーヘッド制御は、OpenResty XRay コンソールで「本番」とマークされたマシンにのみ適用されます。非本番サーバーの場合、可能な限り早く結果を得ることがより便利です。
on-Prem ユーザーの場合
OpenResty XRay の on-Prem バージョンをご利用のお客様は、自動レポートアップロード機能を有効にすることを忘れずに、OpenResty Inc. チームがタイムリーにレポートをレビューできるようにしてください。
将来
現在、OpenResty XRay の自動レポート生成器は Nginx と OpenResty アプリケーション(OpenResty ベースのより高レベルのアプリケーション、例えば Kong を含む)のみをサポートしています。しかし、PostgreSQL、Redis、Python、Perl などの他の技術スタック用に設計された具体的なアナライザーとツールもすでに持っています。近い将来、より多くのアプリケーションタイプへのサポートを拡大する予定です。
さらに、ディスク I/O、ネットワーク I/O、レイテンシ、セキュリティ脆弱性など、より多くの問題タイプまたはリソースタイプをカバーしています。
OpenResty XRay のお客様が、レポートで早急に提供してほしい特定の機能がある場合、優先的に実装するよう手配いたします。
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 XRay(マイクロサービスおよび分散トラフィックに最適化された多機能
翻訳
英語版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!