ログは有用なデバッグ情報を提供し、ウェブサーバのあらゆる側面を分析できるため、アプリケーションの活動を監視するシステムにおいて非常に重要です。 他のソフトウェアアプリケーションと同様に、Nginx もウェブサイトの訪問者や発生した問題などのイベントをログファイルに記録します。
この記事では、アプリケーションの動作を監視するために、Ubuntu 20.04システムでNginxログを設定・表示する方法について詳しく説明します。
Nginxでイベントを記録するログには、アクセスログとエラーログの2種類があります。
Nginx アクセスログ
サイト訪問者に関連するすべての活動はアクセスログに記録されます。 このログには、最近アクセスされたファイル、クライアントのリクエストに対する Nginx の応答、クライアントの IP アドレス、クライアントが使用しているブラウザなどが記録されています。 アクセスログの情報を利用して、トラフィックを監視し、サイトの使用状況を時系列で把握することができます。
Nginx のアクセスログを有効にする
アクセスログを有効にするには、サーバーセクションまたは HTTP の access_log ディレクティブを使用します。
第一引数の「log_file」は必須ですが、第二引数の「log_format」は任意です。
アクセスログは、Nginxの設定ファイルにデフォルトで定義されていますが、ログフォーマットを記述しない場合、ログはデフォルトの複合フォーマットで入力されます。
アクセスログはNginxの設定ファイルにデフォルトで定義されていますので、すべてのバーチャルホストのアクセスログは同じ設定ファイルに保存されます。
…
access_log /var/log/nginx/access.log;
…
}。
すべてのバーチャルホストのアクセスログを別のファイルに記録して分離することをお勧めします。
….
…
access_log /var/log/nginx/access.log;
server {
listen 80;
Server_name example.com
access_log /var/log/nginx/example.access.log;
…
}
}
。
新しいNGINXの設定をリロードします。 これで、次のコマンドで、ファイル/var/log/nginx/example.access.logにあるexample.comドメインのアクセスログを見ることができます:
アクセスログのフォーマットをカスタマイズする
カスタムのアクセスログのフォーマットを定義する例を説明しましょう。 デフォルトでは、アクセスログは複合ログ形式で記録されます。 そのため、圧縮率を表すgzipレスポンスの値を指定することで、あらかじめ定義されているフォーマットを拡張することができます。
log_format custom ‘$remote_addr – $remote_user ‘
‘”$request” $status $body_bytes_sent ‘
‘”$http_referer” “$http_user_agent” “$gzip_ratio”‘;
server {
gzip on;
….
access_log /var/log/nginx/example.access.log custom;
…
}
}。
Nginxの設定をすべて変更したら、Nginxをリロードしてからtailコマンドを実行すると、イベントログの最後にgzipの比率が表示されます。
NGINXのエラーログ
NGINXが突然動作しなくなったり、正常に動作しなくなった場合、エラーログにすべてのイベントが記録されます。 そのため、エラーログを使うことで、より詳細な情報を得ることができます。 また、警告も記録されますが、発生した問題を特定することはできません。
エラーログを有効にする
error_logディレクティブの次の構文:
上記の構文では、第1引数がログファイルのパスを表し、第2引数がログイベントのセキュリティレベルを識別しています。
サーバーのコンテキストでerror_logディレクティブのオーバーライドを行う例を以下に示します。
…
…。…
error_log /var/log/nginx/error_log;
server {
listen 80;
server_name example1.com;
error_log /var/log/nginx/example1.error_log warn;
…
}
server {
listen 80;
server_name example2.com;
error_log /var/log/nginx/example2.error_log debug;
…。
error_log /dev/null;
Nginxのエラーログのセキュリティレベル
エラーログで使用できるセキュリティレベルは以下の通りです:
- emerg: システムが不安定なとき、緊急メッセージに使用する。
- alert: 深刻な問題の警告メッセージを生成する。
- crit: すぐに対処するための重大な問題に使用されます。
- error: ページの処理中に、エラーが発生する可能性があります。
- warn: 警告メッセージに使用されます
- notice: 無視することもできる通知ログ。
- info: 情報、メッセージ用
- debug: デバッグ情報に使用されるエラーロケーションを指します。
結論
Nginxのアクセスログとエラーログは、特定の活動を記録するのに便利です。 ここでは、Linux システムでこれらの種類の Nginx ログを有効にして表示する方法を学びました。 以上、Nginxのログについてでした
。