アンドロイド

nginxエラーとアクセスログの構成

株式会社博展 - 東芝実績動画

株式会社博展 - 東芝実績動画

目次:

Anonim

Nginxは、インターネット上の最大規模のサイトのいくつかの負荷を処理するオープンソースの高性能HTTPおよびリバースプロキシサーバーです。 NGINX Webサーバーを管理する際に実行する最も頻繁なタスクの1つは、ログファイルの確認です。

サーバーまたはアプリケーションの問題をトラブルシューティングする場合、詳細なデバッグ情報が提供されるため、ログの構成および読み取り方法を知ることは非常に役立ちます。

Nginxは、イベントの記録を2種類のログに書き込みます。アクセスログとエラーログです。 アクセスログはクライアント要求に関する情報を書き込み、エラーログはサーバーとアプリケーションの問題に関する情報を書き込みます。

この記事では、Nginxのアクセスログとエラーログを構成して読み取る方法の概要を説明します。

アクセスログの構成

クライアントリクエストが処理されるたびに、Nginxはアクセスログに新しいイベントを生成します。 各イベントレコードにはタイムスタンプが含まれ、クライアントと要求されたリソースに関するさまざまな情報が含まれます。 アクセスログは、訪問者の場所、訪問したページ、ページに費やした時間などを表示できます。

log_format ディレクティブを使用すると、ログに記録されるメッセージの形式を定義できます。 access_log ディレクティブは、ログファイルの場所と使用される形式を有効にして設定します。

access_log ディレクティブの最も基本的な構文は次のとおりです。

access_log log_file log_format;

ここで、 log_file はログファイルへのフルパスであり、 log_format はログファイルで使用される形式です。

アクセスログは、 http server 、または location ディレクティブブロックで有効にできます。

デフォルトでは、アクセスログはメインのNginx設定ファイル内の http ディレクティブでグローバルに有効化されています。

/etc/nginx/nginx.conf

http {… access_log /var/log/nginx/access.log;… }

保守性を高めるために、サーバーブロックごとに個別のアクセスログファイルを設定することをお勧めします。 server ディレクティブで設定された access_log ディレクティブは、 http (上位レベル)ディレクティブで設定されたものをオーバーライドします。

/etc/nginx/conf.d/domain.com.conf

http {… access_log /var/log/nginx/access.log;… server { server_name domain.com access_log /var/log/nginx/domain.access.log;… } }

ログ形式が指定されていない場合、Nginxは次のような定義済みの組み合わせ形式を使用します。

log_format combined '$remote_addr - $remote_user ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';

ロギング形式を変更するには、デフォルト設定を上書きするか、新しい設定を定義します。 たとえば、 X-Forwarded-For ヘッダーを示す値で結合形式を拡張するmainという名前の新しいロギング形式を定義するには、 http または server ディレクティブに次の定義を追加します。

log_format custom '$remote_addr - $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

新しい形式を使用するには、次のようにログファイルの後に名前を指定します。

access_log /var/log/nginx/access.log custom;

アクセスログは非常に有用な情報を提供します。 ディスク容量を消費し、サーバーのパフォーマンスに影響を与える可能性があります。 サーバーのリソースが少なく、Webサイトが混雑している場合は、アクセスログを無効にすることをお勧めします。 これを行うには、 access_log ディレクティブの値を off に設定します。

access_log off;

エラーログの設定

Nginxは、アプリケーションおよび一般的なサーバーエラーに関するメッセージをエラーログファイルに書き込みます。 Webアプリケーションでエラーが発生している場合、エラーログは問題のトラブルシューティングを開始する最初の場所です。

error_log ディレクティブは、エラーログの場所と重大度レベルを有効にして設定します。 次の形式を取り、 http server 、または location ブロック内で設定できます。

error_log log_file log_level

log_level パラメーターは、ロギングのレベルを設定します。 以下は、重大度(低から高)ごとにリストされたレベルです。

  • debug デバッグメッセージ。 info 情報メッセージ。 notice -通知。 warn -警告。 error -要求の処理中に error crit 重大な問題。 プロンプトアクションが必要です。 alert -アラート。 すぐに対処する必要があります。 emerg 緊急事態。 システムは使用できない状態です。

各ログレベルには、より高いレベルが含まれます。 たとえば、ログレベルを warn 設定すると、Nginxは error crit alert 、および emerg メッセージもログに記録します。

log_level パラメーターが指定されていない場合、デフォルトで error になり error

デフォルトでは、 error_log ディレクティブはメインのnginx.confファイル内の http ディレクティブで定義されています。

/etc/nginx/nginx.conf

http {… error_log /var/log/nginx/error.log;… }

アクセスログと同様に、各サーバーブロックに個別のエラーログファイルを設定することをお勧めします。これにより、上位レベルから継承された設定が上書きされます。

たとえば、domain.comのエラーログを warn に設定するには、次を使用します。

http {… error_log /var/log/nginx/error.log;… server { server_name domain.com error_log /var/log/nginx/domain.error.log warn;… } }

構成ファイルを変更するたびに、変更を有効にするためにNginxサービスを再起動する必要があります。

ログファイルの場所

Ubuntu、CentOS、DebianなどのほとんどのLinuxディストリビューションでは、デフォルトでアクセスログとエラーログは /var/log/nginx ディレクトリにあります。

Nginxログファイルの読み取りと理解

cat less grep cut awk などの標準コマンドを使用して、ログファイルを開いて解析できます。

デフォルトのNginxログ形式を使用するアクセスログファイルのレコードの例を次に示します。

192.168.33.1 - - "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"

レコードの各フィールドの意味を分解してみましょう。

  • $remote_addr - 192.168.33.1 要求を行っているクライアントのIPアドレス。 $remote_user HTTP認証済みユーザー。 ユーザー名が設定されていない場合、このフィールドには - ます。 - -ローカルサーバー時間。 "$request" - "GET / -要求タイプ、パス、およびプロトコル。 $status - 200 サーバーの応答コード。 $body_bytes_sent - $body_bytes_sent バイト単位のサーバー応答のサイズ。 "$http_referer" - "-" -紹介のURL。 "$http_user_agent" Mozilla/5.0… "$http_user_agent" クライアント(Webブラウザー)のユーザーエージェント。

tail コマンドを使用して、ログファイルをリアルタイムで監視します。

tail -f access.log

結論

ログファイルは、サーバーの問題および訪問者がWebサイトとどのように対話するかに関する有用な情報を提供します。

Nginxでは、必要に応じてアクセスログとエラーログを構成できます。

nginx