この章では、NGINXの実行時監視サービスの使い方だけでなく、エラーや処理されたリクエストの記録を設定する方法を学びます。
Error Logの設定
NGINXは異なる重大度のレベルの遭遇した問題について、エラーログに情報を書き込みます。error_log ディレクティブは特定のファイル、stderr、またはsyslogへのログを設定します。そして、記録するメッセージの最小限の重要度レベルを指定します。デフォルトでは、エラーログはlogs/error.log
(絶対パスはオペレーティングシステムとインストール方法によります)に配置され、指定されたレベル以上の重要度のメッセージを記録します。
以下の設定は、記録するエラーメッセージの重要度の最小レベルをerrorからwarnに変更します。
error_log logs/error.log warn;
この場合、 warn, error, crit, alert と emerg レベルのメッセージが記録されるでしょう。
エラーログのデフォルトの設定は、全体的に影響します。上書くにはerror_log ディレクティブをmain コンテキストに配置する必要があります。main コンテキストの設定は、常に他のレベルから継承されます。error_log ディレクティブは上のレベルからの継承の影響をキャンセルして他のレベルを設定することができます。エラーの場合、エラーメッセージはエラーログに書き込まれるでしょう。このログはエラーが発生した場所のレベルにもっとも近いものでしょう。しかしながら、もし幾つかの error_log ディレクティブが同じレベルに指定された場合、メッセージは全ての指定されたログに書かれるでしょう。
注意 : 同じレベルで 幾つかのerror_log ディレクティブを使用するのは、NGINXバージョン1.5.2以上でサポートされています。
アクセスログの設定
NGINXはリクエストが処理された後で、クライアントのリクエストの方法をアクセスログに書き込みます。デフォルトでは、アクセスログはlogs/access.log
に配置され、情報はあらかじめ定義された結合フォーマットでログファイルに書き込まれます。デフォルトの設定を上書くには、 log_format ディレクティブを使って記録されるメッセージの書式を設定します。同様に、access_logディレクティブを使ってログの場所とフォーマットを指定します。フォーマットは変数を使って定義します。
次の例では、標準の結合フォーマットに応答のgzipの圧縮率を示す値を追加するフォーマットを定義します。. その後、フォーマットは圧縮を有効にしているバーチャルサーバに適用されます。
http {
log_format compression '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
server {
gzip on;
access_log /spool/logs/nginx-access.log compression;
...
}
}
ログ機能は、ログメッセージのためのバッファとファイル名に変数を含む頻繁に使われるファイルのディスクリプタのキャッシュを有効にすることで、最適化することができます。バッファリングを有効にするには、access_logディレクティブのbuffer パラメータを使ってバッファのサイズを指定します。次のログメッセージがバッファに収まらない場合やその他の場合に、バッファされたメッセージがログファイルに書き込まれます。ログファイル ディスクリプタのキャッシュを有効にするには、open_log_file_cache ディレクティブを使います。
error_log ディレクティブのように、 access_log ディレクティブは上のレベルの設定を上書きます。リクエストの処理が完了したときに、現在のレベルで定義された、あるいは上のレベルから継承した設定で、メッセージがログに書き込まれます。一つのレベルで複数のアクセスログが定義されている場合は、メッセージは全てに書き込まれます。
nginx の状態の監視
NGINX+のユーザは、実行時に現在の状態と、接続数、リクエスト、upstreamサーバの状態に関する統計量に関する特別な status.html
ページを参照することができます。バーチャルサーバでこれを有効にするには、次のlocationを定義します。これは /status と完全一致するURIをチェックし、status ディレクティブを含みます。
location = /status {
status;
}
応答のページには、全ての動的に設定されたサーバのグループの情報だけでなく、総計と現在の接続とリクエストの数を表示します。これらのグループのおのおののサーバのために、ステータスページは現在のサーバの状態の情報(可用性)と合計値(このサーバとの通信で失敗した合計値)を示します。更に詳しい情報は、ステータスページを経由して利用可能なfull data listを見てください。
NGINX+をもっと知るには、 commercial subscriptions の説明を見てください。
- High-performance Load Balancing
- Application-aware Health Checks
- Massively-scalable Content Caching
- Sophisticated Streaming Media Delivery
- Advanced Activity Monitoring
- DevOps On-the-Fly Reconfiguration
… backed by Nginx, Inc. dedicated support.