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ログが正しく出力されていることを確認します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲