メインコンテンツまでスキップ
Sumo Logic Japanese

Nginx のログの収集

この手順では、NGINX Open Source および NGINX Plus でエラーログおよび処理済みリクエストを収集する方法について説明します。

ログ タイプ

Nginx ログでは、アクセス ログについては NCSA extended/combined ログ ファイル形式、エラー ログについてデフォルトの Nginx エラー ログ ファイル形式を前提としています。Nginx ログ ファイル形式の詳細については、次のサイトを参照してください。

http://nginx.org/en/docs/http/ngx_http_log_module.html

Nginx でのログの設定

ログを取り込むように Sumo Logic を設定するには、NGINX Open Source および NGINX Plus でエラーおよび処理済みリクエストのログを設定する必要があります。手順については、次のドキュメントを参照してください。

https://www.nginx.com/resources/admin-guide/logging-and-monitoring/

コレクタの設定

次のいずれかの Sumo Logic コレクタのオプションを使用します。

  1. Nginx マシンから直接ログを収集するには、インストール済みコレクタを設定します。
  2. Fluentd などのサービスを使用しているか、手動でログをアップロードする場合には、ホスト型コレクタを設定します。 

ソースの設定

インストール済みコレクタの場合

Nginx マシンから直接ログを収集するには、インストール済みコレクタとローカル ファイル ソースを使用します。 

  1. ローカル ファイル ソースを追加します。
  2. ローカル ファイル ソース フィールドを次のように設定します。
    1. Name (名前)。(必須)
    2. Description (説明)。(省略可能)
    3. File Path (ファイル パス) (必須): error.log または access.log へのパスを入力します。これらのファイルは通常 /var/log/nginx/error.log にあります。カスタマイズしたパスを使用している場合、nginx.conf ファイルでこの情報を確認してください。Passenger を使用している場合、passenger_log_file オプションを使用して特定のログに記録するように Passenger に指示している場合があります。
    4. Source Host (ソース ホスト)。別のホスト名を入力しない限り、OS が割り当てたホスト名が使用されます。
    5. Source Category (ソース カテゴリ)。Nginx/AccessApache/Access など、このソースから収集された出力にタグ付けする文字列を入力します。[Source Category (ソース カテゴリ)] メタデータ フィールドは、ソースを整理してラベル付けするための基本的な構成要素です。詳細については、「ベスト プラクティス」を参照)。
  3. [Advanced (詳細)] セクションを設定します。
    1. Enable Timestamp Parsing (タイムスタンプ パースの有効化): [Extract timestamp information from log file entries (ログ ファイル エントリからタイムスタンプ情報を抽出する)] を選択します。
    2. Time Zone (タイム ゾーン): 自動的に検出されます。
    3. Timestamp Format (タイムスタンプ フォーマット)。タイムスタンプの形式は自動的に検出されます。
    4. Encoding (エンコーディング): [UTF-8] を選択します (デフォルト)。
    5. Enable Multiline Processing (複数行処理の有効化): [Detect messages spanning multiple lines (複数行にわたるメッセージを検出する)][Infer Boundaries - Detect message boundaries automatically (境界を推測する - メッセージ境界を自動的に検出する)] を選択します。
  4. [Save (保存)] をクリックします。

ホスト型コレクタの場合

Fluentd などのサービスを使用しているか、手動でログをアップロードする場合には、ホスト型コレクタと HTTP ソースを使用します。

  1. HTTP ソースを追加します。
  2. HTTP ソース フィールドを次のように設定します。
    1. Name (名前)。(必須)
    2. Description (説明)。(省略可能)
    3. Source Host (ソース ホスト)。別のホスト名を入力しない限り、OS が割り当てたホスト名が使用されます。
    4. Source Category (ソース カテゴリ)。Nginx/AccessApache/Access など、このソースから収集された出力にタグ付けする文字列を入力します。[Source Category (ソース カテゴリ)] メタデータ フィールドは、ソースを整理してラベル付けするための基本的な構成要素です。詳細については、「ベスト プラクティス」を参照)。
  3. [Advanced (詳細)] セクションを設定します。
    1. Enable Timestamp Parsing (タイムスタンプ パースの有効化): [Extract timestamp information from log file entries (ログ ファイル エントリからタイムスタンプ情報を抽出する)] を選択します。
    2. Time Zone (タイム ゾーン): アクセス ログの場合、ログ ファイルからタイム ゾーンを使用します。エラー ログの場合、必ず正しいタイム ゾーンを選択してください。
    3. Timestamp Format (タイムスタンプ フォーマット)。タイムスタンプの形式は自動的に検出されます。
    4. Enable Multiline Processing (複数行処理の有効化): [Detect messages spanning multiple lines (複数行にわたるメッセージを検出する)][Infer Boundaries - Detect message boundaries automatically (境界を推測する - メッセージ境界を自動的に検出する)] を選択します。
  4. [Save (保存)] をクリックします。
  5. HTTP ソースに関連付けられている URL が表示されたら、Fluentd など、使用しているサービスに貼り付けられるように URL をコピーします。

フィールド抽出ルールの作成

フィールド抽出ルール (FER) により、どのフィールドを自動的にパースするかが Sumo Logic に指示されます。手順については、「フィールド抽出ルールの作成」を参照してください。 

Nginx では、アクセス ログについては NCSA extended/combined ログ ファイル形式、エラー ログについてデフォルトの Nginx エラー ログ ファイル形式を前提としています。

アクセス ログの FER

次のパース式を使用します。

parse regex "^(?<src_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"
| parse regex "(?<method>[A-Z]+)\s(?<url>\S+)\sHTTP/[\d\.]+\"\s(?<status_code>\d+)\s(?<size>[\d-]+)\s\"(?<referrer>.*?)\"\s\"(?<user_agent>.+?)\".*"

エラー ログの FER

次のパース式を使用します。

parse regex "\[(?<log_level>\w+)\] (?<pid>\d+).(?<tid>\d+): (?<message>.*)$"

クエリのサンプル

パブリック/Apache/アクセスの式のパース (Apache Access Parser)

parse regex "\"(?<method>[A-Z]+) (?<url>.+?)HTTP/[\d\.]+\" (?<status_code>\d+) (?<size>[\d-]+) \"(?<referrer>.*?)\"\"(?<user_agent>.+?)\".*" nodrop | parse regex "^(?<src_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})" nodrop

ログ メッセージのサンプル

アクセス ログの例

50.1.1.1 - example [23/Sep/2016:19:00:00 +0000] "POST /api/is_individual HTTP/1.1" 200 58 "-" "python-requests/2.7.0 CPython/2.7.6 Linux/3.13.0-36-generic"

エラー ログの例

2016/09/23 19:00:00 [error] 1600#1600: *61413 open() "/srv/core/client/dist/client/favicon.ico" failed (2: No such file or directory), client: 101.1.1.1, server: _, request: "GET /favicon.ico HTTP/1.1", host: "example.com", referrer: "https://abc.example.com/"
  • この記事は役に立ちましたか?