2026年10月2日
2026年10月2日
Nginxのlog_formatをJSON形式にする方法
はじめに
Nginxは一般的なWebサーバーとして広く使用されており、ログ記録も重要な機能の一つです。デフォルトではNginxのlog_formatは文字列形式で出力されますが、JSON形式にすることでより柔軟な解析や分析が可能になります。本記事では、Nginxのlog_formatをJSON形式にする方法について説明します。
症状・背景
- ログデータの解析が複雑になり、手間がかかる。
- セキュリティ監視やアクセス制御のための詳細なログが必要だが、文字列形式では情報が不足している。
- 一貫したフォーマットでログを出力し、集約・分析を容易にする必要がある。
手順・設定方法
ステップ1: JSON形式のlog_format定義
# JSON形式のlog_formatを定義します。
http {
log_format json '{"time":"$time_local","status":"$status","request":"$request","host":"$host"}';
}
ステップ2: access_logをJSON形式に設定
# JSON形式のログフォーマットを使用するようにaccess_logを設定します。
http {
access_log /var/log/nginx/access.log json;
}
ステップ3: Nginxの再起動
# Nginxの設定ファイルが変更されたら、サービスを再起動して適用します。
sudo systemctl restart nginx
ステップ4: ログ確認
# JSON形式のログが正しく出力されているか確認します。
tail -f /var/log/nginx/access.log
注意事項
- Nginxのバージョンによっては、JSON形式に対応していない場合があります。最新のNginxを使用することをお勧めします。
- JSONログを解析するためには、適切なツール(例えば,Elasticsearch, Kibana)が必要となることがあります。
- JSONログはファイルサイズが大きくなりやすいので、定期的な圧縮やローテーションを行うことを検討してください。
まとめ
1. JSON形式のlog_formatを定義: log_formatでJSONフォーマットを使用します。
2. access_logに設定適用: access_logでJSON形式を選択します。
3. Nginx再起動: 設定変更後は、Nginxサービスを再起動します。
4. ログ確認: JSONログが正しく出力されていることを確認します。
関連記事: