收集 Apache Tomcat 日志
支持的语言:
Google SecOps
SIEM
本文档介绍了如何使用 Bindplane 将 Apache Tomcat 日志注入到 Google Security Operations。解析器从 JSON 格式的日志中提取字段,并将其转换为统一数据模型 (UDM)。它会初始化默认值、解析 JSON 载荷、处理潜在的 JSON 解析错误,并将原始日志中的各个字段映射到相应的 UDM 字段,包括元数据、正文、观测者和安全结果信息,同时还会为环境上下文添加自定义标签。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows 2016 或更高版本,或者具有
systemd
的 Linux 主机 - 如果在代理后运行,防火墙端口处于开放状态
- Apache Tomcat 9.0.70 版或更高版本
- 对
$CATALINA_BASE/conf
和$CATALINA_BASE/logs
具有写入权限
获取 Google SecOps 注入身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载注入身份验证文件。将该文件安全地保存在将要安装 Bindplane 的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
在 Tomcat 服务器上安装 Bindplane 代理以收集日志文件
按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。
Windows 安装
- 以管理员身份打开命令提示符或 PowerShell。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安装资源
如需了解其他安装选项,请参阅安装指南。
配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps
- 访问配置文件:
- 找到
config.yaml
文件。通常,它位于 Linux 上的/etc/bindplane-agent/
目录中,或位于 Windows 上的安装目录中。 - 使用文本编辑器(例如
nano
、vi
或记事本)打开该文件。
- 找到
按如下方式修改
config.yaml
文件: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
- 替换
/path/to/tomcat/logs
。 - 将
<customer_id>
替换为实际的客户 ID。 - 将
/path/to/ingestion-authentication-file.json
更新为获取 Google SecOps 提取身份验证文件部分中保存身份验证文件的路径。
- 替换
重启 Bindplane 代理以应用更改
如需在 Linux 中重启 Bindplane 代理,请运行以下命令:
sudo systemctl restart bindplane-agent
如需在 Windows 中重启 Bindplane 代理,您可以使用服务控制台,也可以输入以下命令:
net stop BindPlaneAgent && net start BindPlaneAgent
在 Tomcat 中配置 JSON 访问日志
- 打开
$CATALINA_BASE/conf/server.xml
中的 Tomcat 文件。 找到 <Host> 标记,并在其中添加以下内容:
<Valve className="org.apache.catalina.valves.JsonAccessLogValve" directory="logs" prefix="access-log" suffix=".json" rotatable="true" maxDays="7"/>
重启 Tomcat 以应用更改:
cd /path/to/tomcat bin/catalina.sh stop bin/catalina.sh start
每天都会显示一个新的 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 |
主机的 hostname 用作主 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 |
如果宿主操作系统系列为 rhel 或 redhat ,则将主要平台设置为 LINUX 。 |
host.os.kernel |
principal.platform_patch_level |
主机操作系统内核版本用作主要平台补丁级别。 |
host.os.name |
additional.fields[os_name].value.string_value |
主机操作系统名称将作为键值对添加到 additional 字段中。 |
host.os.version |
principal.platform_version |
主机操作系统版本用作主要平台版本。 |
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 映射到中等严重程度和 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。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。