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 ファイルまたは /var/log/message ファイルに書き込まれません。代わりに、ログ行は syslog デーモンに直接送信され、その後データが分析エージェントに転送されます。 

設定:

  1. ログを /usr/bin/logger に委任するように Apache を設定します。
    1. httpd.conf を特定して開き、Apache 設定ファイルを開きます。これは通常、/etc/httpd/conf/ にあります。
    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
      CODE

      このディレクティブは、logger ユーティリティを使用して、ファシリティ local6、タグ "httpd" とログ形式 combined を使用し、メッセージを送信します。
      ファシリティコードは、メッセージをロギングするプログラムの種類を指定します。異なるファシリティを持つメッセージは、個別の方法で処理できます。
      httpd.conf のタグ「httpd」は、送信する必要があるメッセージをフィルタリングするために、rsyslog.conf のプログラム名に直接関連します(次のステップを参照)。たとえば、その特定のポートに書き込む他のプログラムがある場合がありますが、httpd プログラムから analytics-agent にのみログを送信する必要があります。  

  2. rsyslog クライアントを設定します。 
    1. rsyslog.conf を編集します。これは通常、/etc/ にあります。
    2. 「RULES」または「var/log/messages」フィルタの上に次の行を追加し、Apache が /var/log/message ファイルにログを記録しないようにします。

      # 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 ~
      CODE

      514 は、analytics-agent が syslog メッセージをリッスンしているポートに置き換えます。これは、ジョブファイルで指定されたポートと一致している必要があります。

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

ログファイルからの syslog メッセージの読み取りと分析エージェントへの送信 

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

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

  1. rsyslog.conf を見つけて編集します。これは通常、 /etc/ にあります
  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
    CODE

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

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

ログ分析 TCP ソースルールの構成

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

  1. [Analytics > Configuration > Log Analytics] をクリックして、コントローラから中央集中型ログ管理 UI にアクセスします。
  2. [Source Rules] タブで、次をクリックします。 + Add.
  3. [Add Source Rule] パネルで、[Create from] ソーステンプレートを選択し、収集タイプとして [From Network Connection] を選択します。たとえば、デフォルトの Apache syslog テンプレート apache-httpserver-access-syslog を選択します。

    いくつかのログ形式テンプレートは、分析エージェントに付属しています。適切に設定している限り、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
CODE

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" 
CODE