Apache Tomcat 로그 수집

파서 버전: 3.0

다음에서 지원:

이 문서에서는 Bindplane 에이전트를 사용하여 Apache Tomcat 로그를 Google Security Operations로 수집하는 방법을 설명합니다.

Apache Tomcat은 HTTP 요청, 인증 이벤트, 서버 활동에 대한 JSON 액세스 로그를 생성하는 웹 애플리케이션 서버입니다. 파서는 JSON 형식 및 syslog 형식 로그에서 필드를 추출하여 통합 데이터 모델 (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 에이전트를 설치하여 로그 파일 수집

Bindplane 에이전트는 로컬 로그 파일을 읽어야 하므로 Tomcat 서버 자체에 설치합니다.

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. 루트 또는 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 필드에 키-값 쌍으로 추가됩니다.
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가 여러 개 있으면 배열로 병합됩니다.
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 필드에 키-값 쌍으로 추가됩니다.
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 필드에 키-값 쌍으로 추가됩니다.
logstash.irm_region additional.fields[irm_region].value.string_value Logstash의 Iron Mountain 리전이 additional 필드에 키-값 쌍으로 추가됩니다.
logstash.irm_site additional.fields[irm_site].value.string_value Logstash의 Iron Mountain 사이트가 additional 필드에 키-값 쌍으로 추가됩니다.
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 필드에 키-값 쌍으로 추가됩니다.
logstash.xyz_region additional.fields[xyz_region].value.string_value Logstash의 xyz 리전이 additional 필드에 키-값 쌍으로 추가됩니다.
logstash.xyz_site additional.fields[xyz_site].value.string_value Logstash의 xyz 사이트가 additional 필드에 키-값 쌍으로 추가됩니다.
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 전문가에게 문의하여 답변을 받으세요.