Mengumpulkan log Apache Tomcat
Dokumen ini menjelaskan cara menyerap log Apache Tomcat ke Google Security Operations menggunakan Bindplane. Parser mengekstrak kolom dari log berformat JSON, lalu mengubahnya menjadi Model Data Terpadu (UDM). Fungsi ini menginisialisasi nilai default, mengurai payload JSON, menangani potensi kesalahan penguraian JSON, dan memetakan berbagai kolom dari log mentah ke kolom UDM yang sesuai, termasuk metadata, principal, observer, dan informasi hasil keamanan, sekaligus menambahkan label kustom untuk konteks lingkungan.
Sebelum memulai
Pastikan Anda memenuhi prasyarat berikut:
- Instance Google SecOps
- Host Windows 2016 atau yang lebih baru, atau host Linux dengan
systemd
- Jika dijalankan di belakang proxy, port firewall terbuka
- Apache Tomcat versi 9.0.70 atau yang lebih baru
- Akses tulis ke
$CATALINA_BASE/conf
dan$CATALINA_BASE/logs
Mendapatkan file autentikasi penyerapan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat BindPlane akan diinstal.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Profil.
- Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.
Instal agen BindPlane di server Tomcat untuk mengumpulkan file log
Instal agen Bindplane di sistem operasi Windows atau Linux Anda sesuai dengan petunjuk berikut.
Penginstalan Windows
- Buka Command Prompt atau PowerShell sebagai administrator.
Jalankan perintah berikut:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Penginstalan Linux
- Buka terminal dengan hak istimewa root atau sudo.
Jalankan perintah berikut:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Referensi penginstalan tambahan
Untuk opsi penginstalan tambahan, lihat panduan penginstalan.
Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps
- Akses file konfigurasi:
- Cari file
config.yaml
. Biasanya, file ini berada di direktori/etc/bindplane-agent/
di Linux atau di direktori penginstalan di Windows. - Buka file menggunakan editor teks (misalnya,
nano
,vi
, atau Notepad).
- Cari file
Edit file
config.yaml
sebagai berikut:receivers: filelog/tomcat: include: [ /path/to/tomcat/logs/access-log.*.json ] start_at: beginning exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'TOMCAT' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - filelog/tomcat exporters: - chronicle/chronicle_w_labels
- Ganti
/path/to/tomcat/logs
. - Ganti
<customer_id>
dengan ID pelanggan yang sebenarnya. - Perbarui
/path/to/ingestion-authentication-file.json
ke jalur tempat file autentikasi disimpan di bagian Dapatkan file autentikasi penyerapan Google SecOps.
- Ganti
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:
sudo systemctl restart bindplane-agent
Untuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services atau memasukkan perintah berikut:
net stop BindPlaneAgent && net start BindPlaneAgent
Mengonfigurasi Log Akses JSON di Tomcat
- Buka file Tomcat di
$CATALINA_BASE/conf/server.xml
. Temukan tag <Host> dan tambahkan kode ini di dalamnya:
<Valve className="org.apache.catalina.valves.JsonAccessLogValve" directory="logs" prefix="access-log" suffix=".json" rotatable="true" maxDays="7"/>
Mulai ulang Tomcat untuk menerapkan perubahan:
cd /path/to/tomcat bin/catalina.sh stop bin/catalina.sh start
File log JSON baru akan muncul setiap hari (misalnya,
logs/access-log.2025-07-02.json
).
Tabel pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
@timestamp |
metadata.event_timestamp |
Nilai @timestamp dari log mentah dipetakan langsung ke kolom UDM ini. Menunjukkan waktu terjadinya peristiwa. |
agent.ephemeral_id |
additional.fields[ephemeral_id].value.string_value |
ID sementara dari agen ditambahkan sebagai key-value pair di kolom additional . |
agent.hostname |
observer.hostname |
Nama host agen digunakan sebagai nama host pengamat. |
agent.id |
observer.asset_id |
ID agen digabungkan dengan jenis agen untuk membuat ID aset pengamat (misalnya, filebeat: <agent_id> ). |
agent.type |
observer.application |
Jenis agen digunakan sebagai aplikasi pengamat. |
agent.version |
observer.platform_version |
Versi agen digunakan sebagai versi platform pengamat. |
host.hostname |
principal.hostname |
Nama host host digunakan sebagai nama host utama. |
host.id |
principal.asset.asset_id |
ID host diawali dengan Host Id: untuk membuat ID aset utama. |
host.ip |
principal.ip , observer.ip |
Alamat IP host digunakan untuk IP principal dan observer. Jika ada beberapa IP, IP tersebut akan digabungkan ke dalam array. |
host.mac |
principal.mac |
Alamat MAC host digunakan sebagai alamat MAC utama. Jika ada beberapa MAC, MAC tersebut akan digabungkan ke dalam array. |
host.os.family |
principal.platform |
Jika keluarga OS host adalah rhel atau redhat , platform utama ditetapkan ke LINUX . |
host.os.kernel |
principal.platform_patch_level |
Versi kernel OS host digunakan sebagai tingkat patch platform utama. |
host.os.name |
additional.fields[os_name].value.string_value |
Nama OS host ditambahkan sebagai pasangan nilai kunci di kolom additional . |
host.os.version |
principal.platform_version |
Versi OS host digunakan sebagai versi platform utama. |
log.file.path |
principal.process.file.full_path |
Jalur log digunakan sebagai jalur lengkap file proses utama. |
log_level |
security_result.severity , security_result.severity_details , security_result.action |
Tingkat log digunakan untuk menentukan tingkat keparahan hasil keamanan, detail tingkat keparahan, dan tindakan. DEBUG, INFO, dan AUDIT dipetakan ke tingkat keparahan INFORMASI dan tindakan IZINKAN. ERROR dipetakan ke tingkat keparahan ERROR dan tindakan BLOCK. WARNING dan WARN dipetakan ke tingkat keparahan SEDANG dan tindakan BLOKIR. Nilai log_level mentah juga dipetakan ke severity_details. |
logstash.irm_environment |
additional.fields[irm_environment].value.string_value |
Lingkungan Iron Mountain dari Logstash ditambahkan sebagai pasangan nilai kunci di kolom additional . |
logstash.irm_region |
additional.fields[irm_region].value.string_value |
Wilayah Iron Mountain dari Logstash ditambahkan sebagai pasangan nilai kunci di kolom additional . |
logstash.irm_site |
additional.fields[irm_site].value.string_value |
Situs Iron Mountain dari Logstash ditambahkan sebagai pasangan nilai kunci di kolom additional . |
logstash.process.host |
intermediary.hostname |
Host pemrosesan Logstash digunakan sebagai nama host perantara. |
logstash.process.timestamp |
metadata.collected_timestamp |
Stempel waktu pemrosesan Logstash digunakan sebagai stempel waktu yang dikumpulkan. |
logstash.xyz_environment |
additional.fields[xyz_environment].value.string_value |
Lingkungan xyz dari Logstash ditambahkan sebagai key-value pair di kolom additional . |
logstash.xyz_region |
additional.fields[xyz_region].value.string_value |
Wilayah xyz dari Logstash ditambahkan sebagai pasangan nilai kunci di kolom additional . |
logstash.xyz_site |
additional.fields[xyz_site].value.string_value |
Situs xyz dari Logstash ditambahkan sebagai pasangan nilai kunci di kolom additional . |
message |
metadata.description |
Kolom pesan diuraikan sebagai JSON dan kolom event_message -nya digunakan sebagai deskripsi metadata. Aplikasi perantara di-hardcode ke logstash . Jenis peristiwa metadata di-hardcode menjadi USER_UNCATEGORIZED . Jenis log metadata ditetapkan ke TOMCAT dari batch.type atau batch.log_type log mentah. Nama produk metadata di-hardcode menjadi Tomcat . Nama vendor metadata di-hardcode menjadi Tomcat . |
user |
principal.user.userid |
Kolom pengguna dari log mentah digunakan sebagai ID pengguna utama. |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.