Apache Tomcat のログを収集する

パーサーのバージョン: 3.0

以下でサポートされています。

このドキュメントでは、Bindplane エージェントを使用して Apache Tomcat ログを Google Security Operations に取り込む方法について説明します。

Apache Tomcat は、HTTP リクエスト、認証イベント、サーバー アクティビティの JSON アクセスログを生成するウェブ アプリケーション サーバーです。パーサーは、JSON 形式と syslog 形式のログからフィールドを抽出し、Unified Data Model(UDM)にマッピングします。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト
  • Tomcat サーバーにインストールされた Bindplane エージェント(ローカル ログファイルを読み取るため)
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • Tomcat サーバーに対する管理者権限

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. 取り込み認証ファイル をダウンロードします。
  4. Bindplane をインストールするシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

Tomcat サーバーに Bindplane エージェントをインストールしてログファイルを収集する

ローカル ログファイルを読み取る必要があるため、Tomcat サーバー自体に Bindplane エージェントをインストールします。

Windows のインストール

  1. 管理者として コマンド プロンプトまたは PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sc query observiq-otel-collector
    

    サービスは RUNNING と表示されます。

Linux のインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sudo systemctl status observiq-otel-collector
    

    サービスは active (running) と表示されます。

その他のインストール リソース

その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。

Tomcat ログを取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

構成ファイルを探す

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

構成ファイルを編集します。

  • config.yaml の内容全体を次の構成に置き換えます。

    receivers:
        filelog/tomcat:
            include:
                - /path/to/tomcat/logs/access-log.*.json
            start_at: beginning
    
    exporters:
        chronicle/tomcat:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: TOMCAT
            raw_log_field: body
    
    service:
        pipelines:
            logs/tomcat_to_chronicle:
                receivers:
                    - filelog/tomcat
                exporters:
                    - chronicle/tomcat
    

構成パラメータ

各プレースホルダを次のように置き換えます。

  • レシーバーの構成:

    • include: Tomcat JSON アクセスログ ファイルへのパス。Tomcat のログ ディレクトリとファイル パターンに合わせて調整します。
    • start_at: 既存のログを読み取る場合は beginning、新しいエントリのみを読み取る場合は end に設定します。
  • エクスポータの構成:

    • creds_file_path: 取り込み認証ファイルのフルパス:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: Google SecOps コンソールからコピーしたお客様 ID
    • endpoint: リージョン エンドポイント URL:
      • 米国: malachiteingestion-pa.googleapis.com
      • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
      • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
      • 完全なリストについては、リージョン エンドポイントをご覧ください。

構成ファイルを保存する

  • 編集後、ファイルを保存します。
    • Linux: Ctrl+O、Enter、Ctrl+X の順に押します。
    • Windows: [ファイル> 保存] をクリックします。

Bindplane エージェントを再起動して変更を適用する

  • Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

    sudo systemctl restart observiq-otel-collector
    
    1. サービスが実行されていることを確認します。

      sudo systemctl status observiq-otel-collector
      
    2. ログでエラーを確認します。

      sudo journalctl -u observiq-otel-collector -f
      
  • Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。

    • 管理者としてコマンド プロンプトまたは PowerShell を開きます。

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • サービス コンソール:

      1. Win+R キーを押し、「services.msc」と入力して Enter キーを押します。
      2. observIQ OpenTelemetry Collector を見つけます。
      3. 右クリックして [再起動] を選択します。
      4. サービスが実行されていることを確認します。

        sc query observiq-otel-collector
        
      5. ログでエラーを確認します。

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Tomcat で JSON アクセスログを構成する

  1. $CATALINA_BASE/conf/server.xml にある Tomcat 構成ファイルを開きます。
  2. <Host> タグを見つけ、その中に次を追加します。

    <Valve className="org.apache.catalina.valves.JsonAccessLogValve"
           directory="logs"
           prefix="access-log"
           suffix=".json"
           rotatable="true"
           maxDays="7"/>
    
  3. Tomcat を再起動して変更を適用します。

    cd /path/to/tomcat
    bin/catalina.sh stop
    bin/catalina.sh start
    
  4. 新しい JSON ログファイルが毎日表示されます(例: logs/access-log.2025-07-02.json)。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
@timestamp metadata.event_timestamp 未加工ログの @timestamp の値は、この UDM フィールドに直接マッピングされます。イベントが発生した時刻を表します。
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value エージェントからの一時 ID は、additional フィールドに Key-Value ペアとして追加されます。
agent.hostname observer.hostname エージェントのホスト名はオブザーバーのホスト名として使用されます。
agent.id observer.asset_id エージェント ID はエージェント タイプと組み合わされて、オブザーバー アセット ID(filebeat: <agent_id> など)が作成されます。
agent.type observer.application エージェント タイプはオブザーバー アプリケーションとして使用されます。
agent.version observer.platform_version エージェントのバージョンは、オブザーバー プラットフォームのバージョンとして使用されます。
host.hostname principal.hostname ホストのホスト名がプリンシパル ホスト名として使用されます。
host.id principal.asset.asset_id ホスト ID の先頭に Host Id: が付加され、プリンシパル アセット ID が作成されます。
host.ip principal.ip、observer.ip ホストの IP アドレスは、プリンシパル IP とオブザーバー IP の両方に使用されます。複数の IP が存在する場合は、配列に統合されます。
host.mac principal.mac ホストの MAC アドレスがプリンシパル MAC アドレスとして使用されます。複数の MAC が存在する場合は、配列に統合されます。
host.os.family principal.platform ホスト OS ファミリーが rhel または redhat の場合、プリンシパル プラットフォームは LINUX に設定されます。
host.os.kernel principal.platform_patch_level ホスト OS のカーネル バージョンが、プリンシパル プラットフォームのパッチレベルとして使用されます。
host.os.name additional.fields[os_name].value.string_value ホスト OS 名は、additional フィールドに Key-Value ペアとして追加されます。
host.os.version principal.platform_version ホスト OS のバージョンは、プリンシパル プラットフォームのバージョンとして使用されます。
log.file.path principal.process.file.full_path ログパスは、プリンシパル プロセス ファイルのフルパスとして使用されます。
log_level security_result.severity、security_result.severity_details、security_result.action ログレベルは、セキュリティ結果の重大度、重大度の詳細、アクションを決定するために使用されます。DEBUG、INFO、AUDIT は、INFORMATIONAL の重大度と ALLOW アクションにマッピングされます。ERROR は、重大度 ERROR とアクション BLOCK にマッピングされます。WARNING と WARN は、MEDIUM の重大度と BLOCK アクションにマッピングされます。未加工の log_level 値も severity_details にマッピングされます。
logstash.irm_environment additional.fields[irm_environment].value.string_value Logstash の Iron Mountain 環境は、additional フィールドに Key-Value ペアとして追加されます。
logstash.irm_region additional.fields[irm_region].value.string_value Logstash の Iron Mountain リージョンが、additional フィールドに Key-Value ペアとして追加されます。
logstash.irm_site additional.fields[irm_site].value.string_value Logstash の Iron Mountain サイトは、additional フィールドに Key-Value ペアとして追加されます。
logstash.process.host intermediary.hostname Logstash 処理ホストは、仲介ホスト名として使用されます。
logstash.process.timestamp metadata.collected_timestamp Logstash 処理タイムスタンプが収集タイムスタンプとして使用されます。
logstash.xyz_environment additional.fields[xyz_environment].value.string_value Logstash の xyz 環境が additional フィールドに Key-Value ペアとして追加されます。
logstash.xyz_region additional.fields[xyz_region].value.string_value Logstash の xyz リージョンは、additional フィールドに Key-Value ペアとして追加されます。
logstash.xyz_site additional.fields[xyz_site].value.string_value Logstash の xyz サイトは、additional フィールドに Key-Value ペアとして追加されます。
message metadata.description メッセージ フィールドは JSON として解析され、その event_message フィールドはメタデータの説明として使用されます。仲介アプリケーションは logstash にハードコードされています。メタデータ イベントタイプは USER_UNCATEGORIZED にハードコードされています。メタデータ ログタイプは、未加工ログの batch.type または batch.log_type から TOMCAT に設定されます。メタデータ プロダクト名は Tomcat にハードコードされています。メタデータ ベンダー名は Tomcat にハードコードされています。
user principal.user.userid 未加工のログのユーザー フィールドがプリンシパル ユーザー ID として使用されます。
product_event metadata.product_event_type 変更履歴からマッピング
summary security_result.summary 変更履歴からマッピング
query additional.fields 変更履歴からマッピング

変更ログ

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。