OpenResty XRay FAQ:非侵襲的動的トレーシングとパフォーマンスプロファイリングに関する回答

OpenResty XRay よくある質問

🔗 OpenResty XRay とは何ですか?

🔗 OpenResty XRay とは何ですか?

OpenResty XRay は、さまざまなクラウドおよびサーバーアプリケーションをリアルタイムで分析できる動的トレース製品です。実行中のプロセスやコンテナを読み取り専用のデータベースとして扱い、パフォーマンスの問題、異常、エラー、セキュリティの脆弱性を解決するために必要な情報を抽出します。OpenResty XRay は、ナレッジベース、推論エンジン、数百の高度なアナライザーを備えており、ターゲットアプリケーションを変更または影響を与えることなく、深刻な問題の根本原因を診断し、絞り込むことができます。

🔗 OpenResty XRay を使用すべき人は誰ですか?

DevOps は、OpenResty XRayを使用して、問題を迅速に発見したり、根本原因を特定したりし、発見された問題や生成された自動レポートを開発者に転送することができます。

開発チームも、日常の開発中や新しいソフトウェア製品のリリース前に、OpenResty XRay を使用して、回帰問題をチェックすることができます。

🔗 OpenResty XRa は OpenResty 上で動作していないアプリケーションを分析できますか?

もちろんです!OpenResty XRay は、任意のソフトウェアを分析できるユニバーサルプラットフォームです。少なくとも、DWARF デバッグシンボル、ソースコードなどにアクセスできるソフトウェアに関しては。

ただし、OpenResty XRay は現在、OpenResty および Nginx の技術スタックで最も効果的に動作します。どのオープンソースソフトウェアを OpenResty XRay に次にサポートしてほしいか教えてください!

🔗 OpenResty XRay はアプリケーションに変更を加える必要がありますか?

いいえ!OpenResty XRay は高度な動的トレース技術を使用しており、ターゲットアプリケーションの協力を必要としません。100% 非侵入型です。

  1. アプリケーションにプラグインやモジュールを追加する必要はありません。
  2. アプリケーションのコードにパッチを当てる必要はありません。
  3. 特別なコンパイルや起動オプションは必要ありません(ただし、C/C++ プログラムをコンパイルする際には、DWARF データを送信するために -g オプションが必要ですが、これは非常に標準的な方法です)。
  4. アプリケーションプロセスにコードを注入することはありません。

OpenResty XRay アナライザーを使用しても、アプリケーションプロセスに害を与えたり、クラッシュさせたりすることはありません。なぜなら、プロセスに何も追加しないからです。

🔗 個人使用のためのパーソナル版はありますか?

はい、あります!パーソナル版が会社、政府、その他の商業目的で使用されない限り。ただし、通常、パーソナル版には SLA を提供していません。

🔗 インストールとデプロイ

🔗 アプリケーションに OpenResty XRay をデプロイしてインストールするにはどうすればよいですか?

アプリケーションまたはコンテナがあるサーバーに OpenResty XRay agent プログラムをインストールして実行する必要があります。agent プログラムは、同じサーバー上のすべてのアプリケーションを検査できるスタンドアロンのデーモンです。また、OpenResty XRay ウェブコンソールのクライアントとしても機能します。

OpenResty XRay agent をインストールする方法はいくつかあります。

  1. 対応する Linux ディストリビューション用に提供されている RPM または Deb パッケージリポジトリをインストールします。
  2. Linux ディストリビューション用に提供されているすべての RPM または Deb パッケージを含む大きな .tar.gz パッケージをインストールします。
  3. 公式の Docker または Kubernetes(K8s)コンテナイメージをインストールします。

一般的な間違いは、agent を自分のコンテナにインストールすることです。これは常に失敗します。なぜなら、コンテナはほとんどの場合、他のプロセスやコンテナを検査するために必要な権限やファイルシステムアクセスを欠いているからです。

🔗 どのオペレーティングシステムをサポートしていますか?

Ubuntu 24.04 noble, Ubuntu 22.04 Jammy, Ubuntu 20.04 Focal, Ubuntu 18.04 Bionic, Debian 12 Bookworm, Debian 11 Bullseye, Debian 10 Buster, Debian 9 Stretch, Red Hat Enterprise Linux 8, Red Hat Enterprise Linux 7, Rocky Linux 9, Rocky Linux 8, AlmaLinux 9, AlmaLinux 8, Cent OS 8, Cent OS 7, Cent OS 6, Fedora 36, Fedora 35, Fedora 34, Fedora 33, Fedora 32, Amazon Linux 2023, Amazon Linux 2, Amazon Linux 1, Alibaba Cloud Linux 3, Alibaba Cloud Linux 2, Tencent Linux 3, Tencent Linux 2, OpenSUSE 15, Kylin 10, Kylin 7, CBL-Mariner 2

公式の Docker または K8s コンテナイメージは、ターゲットアプリケーションコンテナ内で使用される Linux ディストリビューションがサポートリストに含まれている限り、コンテナをサポートする任意の最新の Linux ディストリビューションで実行できます。

OpenResty XRay agent サービスをネイティブに実行したい場合、ほとんどの主流のLinuxディストリビューションをサポートしています。最新のディストリビューションサポートリストを確認してください。

新しい Linux ディストリビューションにネイティブサポートが必要な場合は、お問い合わせください:info@openresty.com!

将来的には、Android、macOS、*BSD、Microsoft Windows などの非 Linux オペレーティングシステムもサポートする可能性があります。

🔗 非常に新しい Linux カーネルが必要ですか?

いいえ!CentOS 7 の 3.10 カーネルなどの古いカーネルをサポートしています。ただし、CentOS 6 の 2.6 カーネルのような古いカーネルはサポートしていません。

🔗 自分の Linux カーネルを使用できますか?

はい!ただし、カーネルをソフトウェアパッケージデータベースにインデックスし、製品との互換性を徹底的にテストできるように、チームに連絡する必要があります。カスタムまたは未知のカーネルの自動インデックス作成はまだサポートしていません。将来的にこのサポートを追加することを検討するかもしれません。

🔗 自己コンパイルされたカーネルはサポートされていますか?

はい、関連するカーネルパッケージをアップロードする必要があります。必要なカーネルパッケージの詳細は、OpenResty XRay コンソールのアップロードページを参照してください。

🔗 OpenResty XRay はどのアプリケーションとプログラミング言語をサポートしていますか?

サポートされているプログラミング言語とランタイム:Python, Java, Rust, Perl, PHP, Erlang, Ruby, Go, LuaJIT, C/C++ サポートされているサーバーとプロキシ:OpenResty, Envoy, Kong, CockroachDB, Nginx,

🔗 OpenResty XRay Agent は AWS EKS 上で実行されているアプリケーションを分析できますか?

はい。

🔗 VMWare/VirtualBox/KVM/ などのローカル仮想マシンで OpenResty XRay を使用できますか?

はい!すべてのそのようなフルシステム仮想化技術は、OpenResty XRay と一緒にすぐに動作するはずです。そうでない場合は、報告してください。

自分の Docker または K8s コンテナ内に Agent をインストールすることはサポートされていません。ただし、公式の Docker および K8s コンテナイメージを使用して Agent をインストールすることは常に可能です。

🔗 公共クラウド仮想マシンで OpenResty XRay を実行できますか?

はい!たとえば、Microsoft Azure、Google Cloud(GCP)、Amazon Cloud(AWS)、または Digital Ocean。仮想化されたクラウドサーバーは問題ありません。物理マシンは必要ありません。

🔗 Agent には C コンパイラツールチェーンがインストールされている必要がありますか?

いいえ。オープンソースの動的トレースフレームワークである SystemTapeBPF/BCC とは異なり、OpenResty XRay は、ターゲットマシンに C または C++ コンパイラツールチェーンをインストールする必要はありません。gcc も clang も何もありません。また、Linux カーネルヘッダーをインストールする必要もありません。

🔗 OpenResty XRay Agent は K8s にどのようにデプロイされますか?

OpenResty XRay Agent は、通常、Kubernetes 環境で DaemonSet の方法でデプロイされます。

🔗 Agent の使用と管理

🔗 Agent のオーバーヘッドはどのくらいですか?

Agent プログラムが「プロダクション」とマークされたサーバーに与えるパフォーマンスへの影響を最小限に抑えるよう努めています。Agent はイベント駆動のサンプリング方法を使用しているため、常にデータを収集しようとするのではなく、実際に必要なときにのみ収集します。サンプリングしていないときは、すべてのプロセスによって生成される追加のオーバーヘッドは厳密に 0 です。これは、動的トレースの真に非侵入型の性質によるものです。サンプリング中でも、ほとんどのアナライザーのオーバーヘッドはアプリケーションの 5% 未満であるべきです。元々コストが高いツールであっても、システムはこれらのアナライザーの頻度とプロセス範囲を自動的に調整して影響を最小限に抑えようとします。

ウェブコンソールでサーバーを「プロダクション」としてマークしない場合、システムはそれらを開発またはテスト環境と見なします。したがって、リソースの使用に対してもはや慎重ではなくなり、すべてのアナライザーが全速力で実行され、できるだけ早く結果を得ることができます。

🔗 Agent をインストールした後、プロセスを再起動する必要がありますか?

いいえ!動的トレース技術の利点の 1 つは、事後分析です。新しくインストールされた OpenResty XRay Agent が分析するために、アプリケーションや既存のプロセスを再起動する必要はありません。新しいプラグイン、新しい起動オプション、またはアプリケーションへのコード注入を必要としないため、これを行うことができます。それは汚染がなく、非侵入型です。

いくつかのプロセスがまれな状態に入っている可能性があり、それらを再起動すると問題が消えることを理解しています。これが、事後分析とデバッグが非常に重要である理由です。

🔗 Agent を停止するにはどうすればよいですか?

OpenResty XRay Agent サービスを停止するには、次のシェルコマンドを実行するだけです。

sudo systemctl stop orxray-agent

ただし、これは一時的なものです。システムが再起動またはリブートされると、Agent サービスは再び起動します。永久に停止するには、前のコマンドを実行した後にこのコマンドを実行することもできます。

sudo systemctl disable orxray-agent

コンテナ化された Agent サービスの場合、Docker または Kubernetes を使用して Agent コンテナインスタンスを停止できます。

🔗 Agent を再起動するにはどうすればよいですか?

Agent を再起動するには、次のコマンドを実行するだけです。

sudo systemctl restart orxray-agent

数分待つと、新しい Agent インスタンスが有効になります。

🔗 Agent が動作しない場合はどうすればよいですか?

ネットワークやハードディスクの問題により、Agent が正常に動作しないことがあります。この場合、ディレクトリ内のエラーログファイルを確認してください。

/usr/local/orxray-agent/logs/

エラーログファイルのエラーについてさらにサポートが必要な場合は、お気軽にお問い合わせください。

🔗 OpenResty XRay を実行してメモリ、CPU などの問題を分析するにはどうすればよいですか?

OpenResty XRay を実行してメモリ、CPU などの問題を分析するには、ガイド付き分析機能を利用できます。詳細な操作手順と関連するケースについては、OpenResty 公式ブログの XRay オンライン分析メモリおよび高 CPU 問題に関する一連の記事を参照してください。

🔗 Agent はプライベートソフトウェアを分析できますか?

はい、プライベートソフトウェアを作成した場合は。たとえば、他のベンダーの許可を得ていない場合は、彼らの専有ソフトウェアを分析すべきではありません。ただし、ソフトウェアを作成した場合、またはソースコードにアクセスでき、コンパイルする権限がある場合は問題ありません。プログラムのために高度なアナライザーを書くために、Y 言語(lang)を使用することもできます。プライベートソフトウェアを DWARF データ(または「デバッグシンボル」)でコンパイルすることを確認してください。たとえば、C/C++ プログラムは、gcc または g++ を使用する際に g または g3 オプションを使用してコンパイルする必要があります。DWARF シンボルでのコンパイルは、プログラムの実行パフォーマンスに影響を与えません。ほとんどの主流の Linux ディストリビューションは、標準パッケージでこれをデフォルトで行っています。

ただし、DWARF データは常に必要ではありません。OpenResty XRay のいくつかの基本的なアナライザーは、「デバッグシンボル」を必要とせずに動作します。実際、C/C++ 関数レベルでサードパーティの専有ライブラリのメモリリークを正確に特定するのを顧客に手伝ったことがあります。ただし、サードパーティのライセンス要件を遵守することを確認してください。

🔗 データセキュリティ

🔗 Agent はどのようなデータを収集しますか?

OpenResty XRayAgent プログラムは、パフォーマンスの問題を分析し、安定性と動作の問題をトラブルシューティングし、セキュリティの脆弱性をスキャンするために使用される基本データのみを収集します。ビジネスレベルのコードから潜在的に機密性のあるデータを収集することはありません。また、データソースからの機密データを誤って収集しないようにするための保護策を実施しており、アプリケーションプロセスの外部に漏れないようにしています。

🔗 Agent が収集したデータをどのように処理しますか?

顧客のデータとプライバシーを保護するために非常に注意を払っています。これが最優先事項です。すべてのデータをウェブコンソールに送信する際には、常に業界標準の暗号化方法(TLS など)を使用しています。ウェブコンソールのデータストレージと管理も、すべてのSOC 2 ガイドラインに準拠しています。最後の 2 週間の生データのみがウェブコンソールに保存されます(より高レベルのレポートデータはより長期間保存されます)。一部の顧客がより短いデータライフサイクル要件を持っている場合、私たちはそれにも対応できます。

🔗 データを販売または共有しますか?

いいえ、決してありません。データを第三者に販売することはありません。外部の契約者と監査済みで難読化されたデータを共有することはありますが、すべての契約者は私たちと秘密保持契約(NDA)を締結する必要があります。

🔗 コンソールにデータをアップロードしないようにすることはできますか?

はい!厳格なデータ処理ポリシーを持つ企業向けに、OpenResty XRay の On-Premise 版を提供しています。クラウド版よりも高価です。On-Premise 版では、ユーザーが自分の環境にウェブコンソールをデプロイするため、OpenResty Inc. のサーバーにデータがアップロードされることはありません。

🔗 デバッグシンボルと分析能力

🔗 すべてのサーバーにデバッグシンボルパッケージをインストールする必要がありますか?

いいえ。OpenResty XRay は、リモートデータベースである package database に見つかったすべてのデバッグシンボルをインデックスします。Agent がバイナリ実行ファイルを見つけるたびに、パッケージデータベースで対応するデバッグシンボルを自動的に照会します。

インターネット上の公開ソフトウェアパッケージのデバッグシンボル(または DWARF データ)を継続的に取得するためにクローラーを実行しています。また、ユーザー自身の DWARF データとデバッグシンボルを自動的にインデックスします。各 OpenResty XRay テナントには、プライバシーを保護するための独立したソフトウェアパッケージデータベースがあります。ソフトウェアを自分でコンパイルする場合は、すべてのソフトウェアバイナリとデバッグシンボルがインストールされたオフライン(またはオンライン)のマシンを用意し、OpenResty XRay Agent をそこで実行してください(少なくとも一時的に)。DWARF データとバイナリプログラムがユーザーのソフトウェアパッケージデータベースにインデックスされると、ユーザーはすべてのマシンでデバッグシンボルを削除できます。

🔗 OpenResty XRay がプログラムにデバッグシンボルが不足していると言っている場合、どうすればよいですか?

プログラムが自分でコンパイルされたものである場合、メインソフトウェアパッケージに関連するデバッグシンボルパッケージを見つけてみてください(RPM ベースのディストリビューションでは *-debuginfo パッケージ、Deb ベースのディストリビューションでは *-dbgsym.ddeb または *-dbgsym.deb ファイルなど)。Agent がインストールされて実行されているマシンにデバッグ情報パッケージをインストールし、Agent がデバッグシンボルをインデックスするのを待ちます。

プログラムがデバッグシンボルなしでコンパイルされた場合、または対応するデバッグ情報パッケージが見つからない場合は、デバッグシンボルを有効にしてプログラムを再コンパイルしてみてください(C/C++ プログラムの場合、コンパイラのコマンドラインで -g または -g3 オプションを渡します)。また、パッケージングスクリプトがデバッグ情報パッケージ(*-debuginfo*.rpm または *-dbgsym.deb など)を生成することを確認し、デバッグシンボルを破棄しないようにします。

デバッグシンボルを見つけることが時々面倒であることを理解しています。既存の DWARF データから類似しているが同一ではないバイナリプログラムの DWARF データを自動的に再構築できる AI システムを開発しています。これが準備が整うと、OpenResty XRay は、デバッグシンボルが不足している多数のオープンソースソフトウェアバイナリを徹底的に分析できるようになります。

OpenResty XRay のいくつかの基本的なアナライザーは、「デバッグシンボル」を必要とせずに動作します。実際、C/C++ 関数レベルでサードパーティの専有ライブラリのメモリリークを正確に特定するのを顧客に手伝ったことがあります。

🔗 自分のアナライザーを書くことはできますか?

はい!Y 言語(またはYlang)を使用して独自のアナライザーを書くことができます。Ylang は、独自の動的トレース拡張を備えた C プログラミング言語の大きなサブセットです。また、拡張機能を備えた Lua 言語のサブセットである Ylua 言語と、SQL 方言である YSQL も提供しています。

🔗 その他の質問

🔗 これらのカーネルメッセージは影響がありますか?

🔗 vsyscall read attempt denied

ライブ録音を開始した後、カーネルは以下のようなメッセージを投げることがあります。このメッセージは無害であり、無視できます。

[29389.731303] redis-server[298169] vsyscall read attempt denied -- look up the vsyscall kernel parameter if you need a workaround ip:7f000013d241 cs:33 sp:2aaacbcf6f08 ax:0 si:7f00003db659 di:ffffffffff600000

🔗 1 つのライセンスで何アカウントがサポートされますか?

1 つのライセンスで 2 つのアカウントログインがサポートされます。

🔗 OpenResty XRay の HTTP プロキシをどのように設定しますか?

OpenResty XRay Agent が HTTP プロキシを介してパブリックネットワークにアクセスする必要がある環境にデプロイされている場合、このドキュメントの手順に従って HTTP プロキシを設定して使用できます。