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

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

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

サポート環境の詳細

  • Linux のみ
  • ネットワークプロトコルは TCP のみ
  • Apache Web サーバの syslog 形式のテンプレートは、分析エージェントに付属しています。ログメッセージを解析する正しい設定を指定している限り、TCP 経由で syslog のあらゆるログデータを取得できます。
  • 分析エージェントごとに 1 つのジョブファイルを有効にして、TCP 経由で syslog メッセージを受信することができます。
注: analytics-agent が syslog メッセージをリッスンしているポートが 1024 よりも小さい場合は、syslog ユーティリティと analytics-agent の両方がルートアクセスを持っている必要があります。

「分析エージェントへの 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"