OpenResty Edge のエラーログ確認:アプリケーション・グローバル・ゲートウェイサーバー
OpenResty Edge では、エラーログを 2 つの場所で確認できます。各アプリケーションは Admin コンソール内に専用のエラーログページを持ち、Dashboard にはすべてのゲートウェイサーバーから収集されたグローバルエラーログがまとめて表示されます。いずれもリクエスト ID・ゲートウェイ・サーバー・ログレベル・時間間隔で絞り込むことができ、個々のゲートウェイや Admin サーバー上の生の error.log ファイルまで掘り下げることも可能です。本チュートリアルではこれらをひととおり解説し、リクエスト ID(Req-ID) によるリクエスト単位のトレースやアクセスログとどのように関係するかも説明します。
OpenResty Edge でアプリケーションのエラーログを確認する方法
いつものように、OpenResty Edge の Admin Web コンソールにアクセスしましょう。これはコンソールのサンプルデプロイメントです。各ユーザーは独自のローカルデプロイメントを持ちます。
引き続き、test-edge.com ドメインのサンプルアプリケーションを使用します。
このアプリケーションに移動します。
ここをクリックして、このアプリケーションのエラーログを確認します。
ご覧のとおり、すでにいくつかのエラーログが記録されています。このページにはエラーログに関する重要な情報が表示されています。
例えば、リクエスト ID、エラーログメッセージ、ホスト名、リクエストボディ、クライアント IP アドレスなどです。
ここで、アプリケーションに変更を加えてみましょう。変更後に test-edge.com ドメインにアクセスすると、新しいエラーログメッセージが生成されます。
ここでは、すでにページルールを定義しています。
このページルールは、事前に定義されたアップストリームへのリバースプロキシを設定しています。
Upstreams ページに移動しましょう。
アップストリームサーバーを編集します。
このアップストリームサーバーを無効化します。アップストリームサーバーが無効化されると、アプリケーションにアクセスした際に Bad Gateway エラーが発生します。
この変更を保存します。
いつものように、先ほどの変更を反映させるために新しいバージョンをリリースする必要があります。
このボタンをクリックします。
リリースします!
新しいバージョンがすべてのゲートウェイサーバーに同期されました。
これで、新しいページルールがすべてのゲートウェイクラスターとサーバーにプッシュされました。
これらの設定変更にはサーバーのリロード、再起動、またはバイナリのアップグレードは必要ありません。そのため、非常に効率的でスケーラブルです。
では、リクエストを送信してみましょう。
ターミナルで、curl を使用してリクエストを送信します。
curl -sSI http://test-edge.com
ご覧のとおり、Bad Gateway エラーが返されました。このエラーはアプリケーションのエラーログに記録されます。
また、サーバーからのレスポンスにリクエスト ID(Req-ID)が含まれていることがわかります。この ID をコピーして、対応するログ情報を検索するのに使用します。
アプリケーションのエラーログページに戻りましょう。エラーログ情報を確認します。
予想通り、先ほどのリクエストがエラーログを生成しました。新しく生成されたエラーログがリストの一番上に表示されています。
リクエスト ID・ゲートウェイ・サーバー・ログレベルでエラーログを絞り込む
このアプリケーションのエラーログは比較的少ないです。次に、オンラインの他のアプリケーションのエラーログを見てみましょう。
アプリケーションリストページに移動します。
OpenResty.com ウェブサイトのエラーログを確認してみましょう。
そのページに移動します。
エラーログページに移動します。ここにはより多くのエラーログが記録されています。
上部のフィルタリングクエリ条件は、問題を正確に特定するのに役立ちます。
例えば、リクエスト ID でフィルタリングできます。
またはゲートウェイでフィルタリングできます。
サーバーも、
エラーログレベルも、
そして、時間間隔でもフィルタリングできます。
では、ゲートウェイでメッセージをフィルタリングしてみましょう。
aws-us-west ゲートウェイを選択します。
ご覧のとおり、aws-us-west ゲートウェイにはエラーログがありません。
OpenResty Edge の 3 種類のグローバルエラーログ
アプリケーションのエラーログを確認した後、グローバルエラーログを見てみましょう。グローバルエラーログは Dashboard ページに表示されます。
では、Dashboard ページに移動してグローバルエラーログを確認しましょう。
3 種類のエラーログがあることがわかります。
グローバルエラーログ。
Admin サイトのエラーログ。
ログサーバーのエラーログ。
まず、グローバルエラーログを見てみましょう。
グローバルエラーログはゲートウェイサーバーによって収集され、特定のアプリケーションに属していません。
エラーログをフィルタリングすることができます。
次に、Admin サイトのエラーログを見てみましょう。
これらのエラーログは Admin コンソールから収集されたものです。
ログの条件によるフィルタリングにも対応しています。
例えば、ログレベル「Error」を選択できます。
「Error」レベルかつ繰り返し回数が 1 を超える(2 回以上の)ログがハイライト表示されていることがわかります。
最後に、ログサーバーのエラーログを見てみましょう。
このページには OpenResty Edge ログサーバーからのエラーログが表示されています。
ここでもログをフィルタリングすることができます。
ご覧のとおり、グローバルエラーログとアプリケーションエラーログにはログレベルがありますが、すべてのレベルのログがシステムによって報告されるわけではありません。
グローバル設定ページで報告するログレベルを設定できます。
ここでは「warn」に設定しています。これは警告レベル以上のログのみが報告されることを意味します。
設定可能なエラーログレベルには「warn、error、crit、alert」などがあります。
ローカルデプロイメントでは、任意のログレベルを設定することができます。
ゲートウェイ/Admin サーバー上で error.log ファイルを確認する方法
では、OpenResty Edge ゲートウェイサーバーにログインして、error.log ファイルを確認してみましょう。
最後のエラーログメッセージを確認します。
ゲートウェイサーバーのエラーログメッセージはここに書き込まれています。
このコマンドを実行します。
ゲートウェイサーバーのエラーログメッセージを確認できます。
サーバーからログアウトします。
次に、OpenResty Edge の Admin サーバーにログインして、error.log ファイルを確認しましょう。
最後のエラーログメッセージを確認します。
OpenResty Edge Admin のエラーログメッセージはここに書き込まれています。
このコマンドを実行します。
OpenResty Edge Admin のエラーログメッセージを確認できます。
よくある質問
OpenResty Edge のどこでエラーログを確認できますか?
2 つの場所があります。各アプリケーションは Admin コンソール内に専用のエラーログページを持ち、そのアプリケーションの各ドメインのエラーが表示されます。それとは別に、Dashboard にはすべてのゲートウェイサーバーにまたがって収集されたグローバルエラーログが表示されます。生のファイルを見たい場合は、ゲートウェイや Admin サーバーに SSH でログインし、その error.log を直接読むこともできます。
特定のリクエストのエラーログを見つけるにはどうすればよいですか?
OpenResty Edge の各レスポンスは、レスポンスヘッダーにリクエスト ID(Req-ID として表示)を付与します。その値をコピーし、アプリケーションのエラーログページのリクエスト ID フィルターに貼り付けると、該当する項目に直接ジャンプできます。リクエストトレースの全体像については、リクエスト ID とは をご覧ください。
3 種類のグローバルエラーログとは何ですか?
Dashboard 上では、グローバルエラーログはグローバルエラーログ(ゲートウェイサーバーが収集し、特定のアプリケーションに属さない)、Admin サイトエラーログ(Admin コンソールが収集)、ログサーバーエラーログ(OpenResty Edge ログサーバーが収集)に分かれています。それぞれログレベルやその他の条件で絞り込めます。
報告するエラーログレベルはどう設定しますか?
報告するログレベルはグローバル設定ページで設定します。例えば warn に設定すると、warn レベル以上のメッセージのみが報告されます。利用可能なレベルには warn、error、crit、alert があります。ご自身のローカルデプロイメントでは、必要なレベルを自由に選べます。
問題を特定するためにエラーログをどう絞り込めばよいですか?
エラーログページでは、リクエスト ID・ゲートウェイ・サーバー・エラーログレベル・時間間隔で結果を絞り込めます。例えば、単一のゲートウェイ(aws-us-west など)を選んでエラーが一箇所に限られているか確認したり、Error レベルを選んで最も深刻なメッセージだけを表示したりできます。
OpenResty Edge について
OpenResty Edge は、マイクロサービスと分散トラフィックアーキテクチャ向けに設計された多機能ゲートウェイソフトウェアで、当社が独自に開発しました。トラフィック管理、プライベート CDN 構築、API ゲートウェイ、セキュリティ保護などの機能を統合し、現代のアプリケーションの構築、管理、保護を容易にします。OpenResty Edge は業界をリードする性能と拡張性を持ち、同時接続数が多く高負荷なシナリオの厳しい要求を満たすことができます。K8s などのコンテナアプリケーショントラフィックのスケジューリングをサポートし、大量のドメイン名を管理できるため、大規模ウェブサイトや複雑なアプリケーションのニーズを容易に満たすことができます。
このチュートリアルが気に入りましたら、ぜひ当ブログや YouTube チャンネル を購読してください。ありがとうございます!
著者について
章亦春(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 以上のオープンソースソフトウェアライブラリを執筆しております。
翻訳
英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!

























































































