Syslog メッセージからのログ分析データの収集

Analytics エージェントは、TCP トランスポートおよび RFC 5424 に準拠した標準の syslog 形式を使用して syslog メッセージを受信するように設定できます。Analytics エージェントは、リモートソースから、または Analytics エージェントが存在する同じホストからの syslog メッセージを TCP ポートでリッスンできます。

これを設定するには、次の手順を実行します。

Supported Environment Details

  • Linux only
  • Network protocol is TCP only
  • A template for Apache Web Server syslog format is shipped with the Analytics Agent. You can bring any log data in through syslog over TCP as long as you provide the correct configuration to parse the log message.
  • One job file per Analytics Agent can be enabled to receive syslog messages over TCP.
注: Both the syslog utility and analytics-agent should have root access if the port where the analytics-agent is listening for syslog messages is lower than 1024.

「分析エージェントへの syslog データの直接送信」を参照してください。

Linux Logger ユーティリティを使用して、Apache アクセスおよびエラーログメッセージを syslog デーモンに直接転送することができます。この方法を使用すると、ログは通常のアクセスログおよびエラーログの Apache ファイルまたは ファイルに書き込まれません。代わりに、ログ行は syslog デーモンに直接送信され、その後データが分析エージェントに転送されます。

設定:

  1. ログを に委任するように Apache を設定します。
    1. を特定して開き、Apache 設定ファイルを開きます。これは通常、 にあります。
    2. アクセスログとエラーログを syslog に送信する新しい CustomLog ディレクティブを追加し、access_logs に送信する行をコメントアウトします。
      #comment the following line to avoid logging to access_logs
      #CustomLog logs/access_log combined
      #Add a new CustomLog directive to send access logs and error logs to the syslog
      CustomLog "|/usr/bin/logger -t httpd -p local6.info" combined
      このディレクティブは、logger ユーティリティを使用して、ファシリティ local6、タグ "httpd" とログ形式 combined を使用し、メッセージを送信します。ファシリティコードは、メッセージをロギングするプログラムの種類を指定します。httpd.conf のタグ「httpd」は、送信する必要があるメッセージをフィルタリングするために、rsyslog.conf のプログラム名に直接関連します(次のステップを参照)。たとえば、その特定のポートに書き込む他のプログラムがある場合がありますが、httpd プログラムから analytics-agent にのみログを送信する必要があります。
  2. rsyslog クライアントを設定します。
    1. rsyslog.conf を見つけて編集します。これは通常、 にあります。
    2. 「RULES」または「var/log/messages」フィルタの上に次の行を追加し、Apache が ファイルにログを記録しないようにします。
      # log to analytics-agent
      if $syslogfacility-text == 'local6' and $programname == 'httpd' then @@<analytics_agent_home>:514
      # Prevent logging httpd to /var/log/messages
      if $syslogfacility-text == 'local6' and $programname == 'httpd' then ~
      514 は、analytics-agent が syslog メッセージをリッスンしているポートに置き換えます。これは、ジョブファイルで指定されたポートと一致している必要があります。
  3. Apache と rsyslog を再起動し、rsyslog エラーがないか /var/log/messages を確認します。

「 ログファイルからの syslog メッセージの読み取りと分析エージェントへの送信」を参照してください。

このケースでは、Apache サーバは通常のアクセスログファイルとエラーログファイルにログを書き込み、rsyslog デーモンがこれらのログファイルから読み取り、ログデータを分析エージェントに転送するように設定します。この方法では、元のログファイルが保持されます。この場合、アクセスおよびエラーログメッセージは ファイルに記録されます。

この例では、特定のファイルから読み取り、指定したポート(デフォルトポートは 514)を介してファシリティ local6、シビラティ(重大度) info でメッセージを転送するように rsyslog クライアントを設定します。

  1. rsyslog.conf を見つけて編集します。これは通常、 にあります。
  2. rsyslog.conf ファイルの「begin forwarding」セクションで、次の行を追加します。

    # add these lines in the begin forwarding section
    $ModLoad imfile
    $InputFileName /etc/httpd/logs/access_log << your file
    $InputFileTag apache-access
    $InputFileStateFile stat-apache-access
    $InputFileSeverity info
    $InputFileFacility local6
    $InputRunFileMonitor
    local6.info @@localhost:514

    $InputFileName:追跡するログファイルへのパス。

    local6.info:分析エージェントがコントローラのローカルにない場合は、分析エージェントの IP アドレスを使用します。必要に応じて、514 を、analytics-agent が syslog メッセージをリッスンしているポートに置き換えます。これは、ジョブファイルまたはソースルールで指定されたポートと一致している必要があります。

  3. rsyslog を再起動し、rsyslog エラーがないか /var/log/messages を確認します。

「ログ分析 TCP ソースルールの構成」を参照してください。

中央集中型ログ管理 UI を使用して、TCP を介して syslog メッセージからログ分析フィールドを抽出するソースルールを構成できます。

  1. [AnalyticsConfigurationLog Analytics] をクリックして、コントローラから中央集中型ログ管理 UI にアクセスします。
  2. [Source Rules] タブで、次をクリックします。 + Add.
  3. [Add Source Rule] パネルで、[Create from] ソーステンプレートを選択し、収集タイプとして [From Network Connection] を選択します。Analytics エージェントには、複数のログ フォーマット テンプレートが付属しています。適切に設定している限り、syslog TCP を介して任意のログ形式に対して新しいソースルールを作成できます。
  4. [Next] をクリックして、[Add Source Configuration] ウィザードを表示します。
  5. ソースルールの名前、ソースタイプなどの収集の詳細を指定し、分析エージェントがリッスンしている TCP ポートを入力します。
  6. 収集タイプとして [From Network Connection] を指定すると、(ログメッセージに追加される)syslog ヘッダーの grok パターンが自動的に grok メッセージパターンの先頭に追加されます。
    %{SYSLOG5424PRI}%{SYSLOGBASE2}
  7. 複数行形式の値が None であることを確認します。
  8. 他のソースルールについて、フィールド抽出とフィールド管理を設定します。「ソースルールを使用したログ分析の構成」を参照してください。

ログ分析 TCP ジョブファイルの構成

分析エージェントが syslog データをリッスンするポートを選択して構成する場合は、ネットワーク内でアクティブなその他のポートと競合していないことを確認してください。ポート番号が指定されていない場合、ポート 514 が使用されます。syslog ユーティリティと analytics-agent の両方が、ポート 514 にログを送信するためのルートアクセスを持っている必要があります(1024 未満のポートへのバインドにはルートアクセスが必要です)。

analytics-agent がポートでリッスンできるようにするには、ログファイルの [source] プロパティと関連パラメータを [type]=syslog で指定します。たとえば、以下を該当するジョブファイルに追加します。

source:
    type: syslog
    port: 514
    protocol: tcp
    numThreads: 1

Apache Commons のジョブファイルは、 /<analytics-agent-home>/conf/job/sample-apache-httpserver-access-syslog.job の分析ディストリビューションに含まれています。。

ジョブファイルは次のようになります。

version: 2
enabled: true
source:
    type: syslog
    port: 514
    protocol: tcp
    numThreads: 5
fields:
    sourceType: apache-httpserver-access-syslog
    nodeName: Node1
    tierName: Tier1
    appName: App1
grok:
   patterns:
      - "%{SYSLOG5424PRI}%{SYSLOGBASE2} %{COMBINEDAPACHELOG}"
eventTimestamp:
   pattern: "dd/MMM/yyyy:HH:mm:ss Z"