收集 VMware vCenter 日志
本文档介绍了如何使用 Bindplane 代理将 VMware vCenter 日志注入到 Google Security Operations。
VMware vCenter 是一种服务器管理平台,可针对虚拟机操作、主机管理、身份验证和配置更改生成 JSON 和 syslog 消息。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows Server 2016 或更高版本,或者具有
systemd的 Linux 主机 - Bindplane 代理与 VMware vCenter 服务器之间的网络连接
- 如果在代理后面运行,请确保按照 Bindplane 代理要求打开防火墙端口
- 对 VMware vCenter Server 管理 Web 界面具有特权访问权限
获取 Bindplane 代理的 Google SecOps 凭证
如需向 Google SecOps 验证 Bindplane 代理,请选择以下方法之一:
- 新部署:使用 Chronicle API(选项 1)。
- 旧版部署:继续使用提取身份验证文件(方法 2),直到提取 API 于 2027 年 7 月 20 日停用。
方法 1:为 Chronicle API 创建服务账号(推荐)
- 登录 Google Cloud 控制台,然后选择与您的 Google SecOps 实例关联的 Google Cloud 项目。
- 前往 IAM 和管理 > 服务账号。
- 点击创建服务账号。
- 提供以下配置详细信息:
- 服务账号名称:输入账号的名称(例如
bindplane-ingest)。 - 服务账号说明:输入说明(例如
Bindplane agent log ingestion)。
- 服务账号名称:输入账号的名称(例如
- 点击创建并继续。
- 在向此服务账号授予对项目的访问权限部分,点击选择角色,然后选择 Chronicle Editor。
- 点击继续,然后点击完成。
- 点击您创建的服务账号,然后前往密钥标签页。
- 依次点击添加密钥 > 创建新密钥。
- 选择 JSON,然后点击创建。密钥文件会下载到您的计算机上。
- 将密钥文件另存为 Bindplane 收集器目录(在 Linux 上为
/opt/observiq-otel-collector/ingestion-auth.json,在 Windows 上为C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)中的ingestion-auth.json,或更新config.yaml中的creds_file_path以与您保存密钥文件的路径相匹配。 - 前往 IAM 和管理 > 设置,然后复制项目编号。您在配置导出器时需要用到该名称。
方法 2:下载数据注入身份验证文件(旧版)
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载数据注入身份验证文件。
- 将文件安全地保存在将安装 Bindplane 代理的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 前往 SIEM 设置 > 个人资料。
复制并保存组织详细信息部分中的客户 ID。
安装 Bindplane 代理
按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。
Windows 安装
- 以管理员身份打开命令提示符或 PowerShell。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet等待安装完成。
运行以下命令,验证安装是否成功:
sc query observiq-otel-collector该服务应显示为正在运行。
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh等待安装完成。
运行以下命令,验证安装是否成功:
sudo systemctl status observiq-otel-collector该服务应显示为 active (running)。
其他安装资源
如需了解其他安装选项和问题排查,请参阅 Bindplane 代理安装指南。
配置 Bindplane 代理以注入 Syslog 并发送到 Google SecOps
找到配置文件
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
修改配置文件
将
config.yaml的全部内容替换为以下配置:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/vmware_vcenter: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: VMWARE_VCENTER raw_log_field: body service: pipelines: logs/vmware_vcenter_to_chronicle: receivers: - udplog exporters: - chronicle/vmware_vcenter
配置参数
替换以下占位符:
接收器配置:
listen_address:要监听的 IP 地址和端口:0.0.0.0,以监听所有接口(推荐)- 端口
514是标准 syslog 端口(在 Linux 上需要 root 权限;对于非 root 用户,请使用1514)
导出器配置:
creds_file_path:服务账号 JSON 密钥文件的完整路径(选项 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id:从 Google SecOps 控制台复制的客户 IDlocation:将<LOCATION>替换为 Google SecOps 实例所在的区域(例如us、europe或asia-southeast1)。导出工具会在此值前面加上chronicle.googleapis.com。如需查看完整列表,请参阅区域级端点。project:将<PROJECT_NUMBER>替换为“IAM 和管理”>“设置”中的项目编号。endpoint:保持设置为chronicle.googleapis.com。
旧版提取 API 导出工具
如果您使用选项 2 中的数据注入身份验证文件,请将
exporters代码块替换为以下内容。将creds_file_path设置为数据注入身份验证文件的路径,如果您的实例位于美国境外,请将malachiteingestion-pa.googleapis.com替换为您的区域端点(例如europe-malachiteingestion-pa.googleapis.com)。exporters: chronicle/vmware_vcenter: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: VMWARE_VCENTER raw_log_field: body
保存配置文件
- 修改后,保存文件:
- Linux:依次按
Ctrl+O、Enter和Ctrl+X - Windows:依次点击文件 > 保存
- Linux:依次按
重启 Bindplane 代理以应用更改
如需在 Linux 中重启 Bindplane 代理,请运行以下命令:
sudo systemctl restart observiq-otel-collector验证服务是否正在运行:
sudo systemctl status observiq-otel-collector检查日志中是否存在错误:
sudo journalctl -u observiq-otel-collector -f
如需在 Windows 中重启 Bindplane 代理,请选择以下选项之一:
以管理员身份运行命令提示符或 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector服务控制台:
- 按
Win+R,输入services.msc,然后按 Enter 键。 - 找到 observIQ OpenTelemetry 收集器。
- 右键点击并选择重启。
验证服务是否正在运行:
sc query observiq-otel-collector检查日志中是否存在错误:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- 按
在 VMware vCenter 中配置 syslog
- 登录 vCenter Server 管理 Web 界面。
- 依次前往 Syslog > Forwarding Configuration。
- 点击配置以创建新的转发配置。
- 提供以下配置详细信息:
- 服务器地址:输入 Bindplane 代理 IP 地址。
- 协议:选择 UDP。
- 端口:输入 Bindplane 代理端口号(例如
514)。
- 点击保存。
- 点击发送测试消息以验证配置。
UDM 映射表
下表列出了 VMware vCenter 日志的日志到 UDM 字段映射:
| 日志字段 | UDM 映射 |
|---|---|
Access Mask |
principal.process.access_mask |
Account Domain |
principal.administrative_domain |
Account Name |
target.user.userid |
AccessControlRuleAction |
security_result.action |
AccessControlRuleName |
security_result.rule_name |
ACPolicy |
security_result.rule_labels |
admin |
principal.resource.attribute.labels |
agent.hostname |
principal.hostname,principal.asset.hostname |
agent.type |
observer.application |
agent.version |
intermediary.platform_version |
alarm_target |
about.resource.name |
api_call_method |
metadata.product_event_type |
app |
principal.application |
ApplicationProtocol |
network.application_protocol |
appname |
principal.application |
auth_date_time |
metadata.collected_timestamp |
auth_user |
target.user.userid |
Authentication Package |
security_result.about.resource.name |
basedn_group_iden |
target.user.group_identifiers |
bytes_received |
network.received_bytes |
bytes_sent |
network.sent_bytes |
Client |
target.user.attribute.labels |
Client Address |
principal.ip |
Client Port |
principal.port |
client_ip |
principal.ip,principal.asset.ip |
client_port |
principal.port |
ClientVersion |
target.platform_version |
cmd |
target.process.command_line |
ConnectionID |
security_result.about.labels |
cor_id |
metadata.product_log_id |
data_center |
target.location.name |
datacenter |
target.location.name |
desc |
metadata.description |
description_data |
metadata.description |
dest_ip |
target.ip,target.asset.ip |
dest_port |
target.port |
DeviceUUID |
metadata.product_log_id |
domain |
principal.administrative_domain |
dstip |
target.ip,target.asset.ip |
EgressZone |
target.location.name |
error_code |
security_result.detection_fields |
error_message |
security_result.summary |
event_name |
metadata.product_event_type |
eventid |
metadata.product_event_type |
EventPriority |
security_result.severity,security_result.severity_details |
@fields.company_name |
principal.user.company_name |
@fields.facility |
principal.resource.resource_subtype |
@fields.host |
principal.hostname,principal.asset.hostname |
@fields.privatecloud_id |
principal.resource_ancestors.product_object_id |
@fields.privatecloud_name |
principal.resource_ancestors.name |
@fields.procid |
principal.process.pid |
@fields.region_id |
principal.location.country_or_region |
file_path |
target.process.file.full_path |
file_type |
network.http.response_headers |
FirstPacketSecond |
security_result.about.labels |
f_path |
target.file.full_path |
function |
security_result.detection_fields |
hmethod |
network.http.method |
host.architecture |
principal.asset.hardware |
host.id |
observer.asset_id |
host.ip |
principal.ip,principal.asset.ip |
host.mac |
principal.mac |
host.os.kernel |
principal.platform_patch_level |
host.os.platform |
target.platform |
host.os.version |
principal.platform_version |
host_ip |
principal.ip,principal.asset.ip |
http_method |
network.http.method |
HTTPResponse |
network.http.response_code |
http_version |
network.tls.version_protocol |
i_ip |
intermediary.ip,intermediary.asset.ip |
i_port |
intermediary.port |
IngressZone |
principal.location.name |
InitiatorBytes |
network.sent_bytes |
InitiatorPackets |
network.sent_packets |
insertId |
metadata.product_log_id |
InstanceId |
target.asset_id |
inter_host_name |
intermediary.hostname |
inter_ip |
intermediary.ip |
inter_port |
target.port |
intermediary_ip |
intermediary.ip |
intermediary_port |
intermediary.port |
ip |
target.ip,target.asset.ip |
ips |
principal.ip,principal.asset.ip |
jsonPayload.appname |
security_result.detection_fields |
jsonPayload.facility |
security_result.detection_fields |
jsonPayload.hostname |
principal.hostname,principal.asset.hostname |
jsonPayload.message |
security_result.detection_fields |
jsonPayload.priority |
security_result.detection_fields |
jsonPayload.version |
security_result.detection_fields |
kv_msg1.cipher |
network.tls.cipher |
kv_msg1.ctladdr |
intermediary.user.attribute.labels |
kv_msg1.daemon |
security_result.about.labels |
kv_msg1.from |
network.email.from |
kv_msg1.get_error |
intermediary.user.attribute.labels |
kv_msg1.msgid |
network.email.mail_id |
kv_msg1.proto |
security_result.about.labels |
kv_msg1.size |
network.sent_bytes |
kv_msg1.stat |
security_result.summary |
kv_msg1.to |
network.email.to |
kv_msg1.verify |
security_result.description,security_result.action |
kv_msg1.version |
network.tls.version |
labels.log_type |
metadata.product_event_type |
labels.net.host.ip |
principal.ip,principal.asset.ip |
labels.net.host.port |
principal.port |
labels.net.peer.ip |
intermediary.ip、intermediary.asset.ip、target.ip、target.asset.ip |
labels.net.peer.port |
intermediary.port,target.port |
labels.net.transport |
network.ip_protocol |
level |
security_result.severity,security_result.severity_details |
level_name |
security_result.severity,security_result.severity_details |
local_address_1 |
observer.ip |
local_address_2 |
observer.ip |
local_port_1 |
observer.port |
log.file.path |
target.process.file.full_path |
log.source.address |
intermediary.ip,intermediary.port |
log.syslog.severity.name |
security_result.severity_details |
log_id |
metadata.product_log_id |
log_level |
security_result.severity,security_result.severity_details |
logName |
security_result.category_details |
Logon Account |
principal.user.userid |
logstash.irm_site |
target.location.name |
logstash.process.host |
additional.fields |
mail_from |
network.email.from |
mail_to |
network.email.to |
msg |
metadata.description |
name |
about.group.group_display_name |
namespace |
principal.namespace |
NAPPolicy |
security_result.rule_labels |
o_ip |
observer.ip,observer.asset.ip |
o_port |
observer.port |
obj_h |
additional.fields |
obj_p |
additional.fields |
p_ip |
principal.ip,principal.asset.ip |
p_log_id |
metadata.product_log_id |
p_port |
principal.port |
p_user_id |
principal.user.userid |
p_vm_name |
target.resource.name |
parsable_message |
metadata.description |
pid |
target.process.pid |
port |
intermediary.port |
ppid |
principal.process.pid |
prin_app |
principal.application |
prin_domain |
principal.administrative_domain |
prin_name |
principal.resource.attribute.labels |
prin_pid |
principal.process.pid |
principal_email |
principal.user.email_addresses |
principal_ip1 |
principal.ip,principal.asset.ip |
principal_ip2 |
principal.ip,principal.asset.ip |
principal_port |
principal.port |
priority |
security_result.severity,security_result.severity_details |
process |
principal.application |
process_id |
principal.process.pid |
product_event_type |
metadata.product_event_type |
program |
principal.application |
Protocol |
network.ip_protocol |
providername |
principal.application |
r_bytes |
network.received_bytes |
r_name |
principal.resource.name |
ReferencedHost |
target.hostname,target.asset.hostname |
Relative Target Name |
target.file.full_path |
relay |
intermediary.hostname,intermediary.ip |
request_path |
target.url |
resource.labels.project_id |
src.resource_ancestors.product_object_id |
resource.type |
src.user.attribute.labels |
resource_name |
target.resource.name |
ResponderBytes |
network.received_bytes |
ResponderPackets |
network.received_packets |
response_code |
network.http.response_code |
response_details |
target.resource.attribute.labels |
role |
target.user.attribute.roles |
s_bytes |
network.sent_bytes |
sec_desc |
security_result.description |
Security ID |
target.user.windows_sid |
security_result_action_detail |
security_result.action_details |
server_name |
target.hostname,target.asset.hostname |
session_id |
network.session_id |
severity |
security_result.severity,security_result.severity_details |
severity_data |
security_result.severity,security_result.severity_details |
Share Name |
target.resource.name |
sid |
about.group.windows_sid |
Source Network Address |
principal.ip |
Source Port |
principal.port |
source_port |
principal.port |
src_ip |
principal.ip |
srcip |
principal.ip,principal.asset.ip |
ssh_proto |
network.application_protocol |
summary |
security_result.summary |
syslog_host |
target.hostname,target.asset.hostname |
t_ip |
target.ip,target.asset.ip |
t_port |
target.port |
t_url |
target.url |
tags |
additional.fields |
principal_app |
principal.application |
target_domain |
target.administrative_domain |
target_host |
target.hostname,target.asset.hostname |
target_ip1 |
target.ip,target.asset.ip |
target_ip2 |
target.ip,target.asset.ip |
target_port |
target.port |
target_userid |
target.user.userid |
temp_host |
intermediary.hostname |
tgt_domain |
target.administrative_domain |
tgt_user |
target.user.userid |
thread_id |
principal.resource.attribute.labels |
tls_cipher |
network.tls.cipher |
type |
metadata.product_event_type |
upn_name |
intermediary.url |
upstream_ip |
target.ip,target.asset.ip |
upstream_port |
target.port |
URL |
target.url |
User |
security_result.summary |
user |
target.user.userid,principal.user.userid |
User ID |
target.user.userid |
user_id |
principal.user.userid |
UserAgent |
network.http.user_agent,network.http.parsed_user_agent |
username |
principal.user.userid |
usrName |
target.user.userid |
vc_event_obj_id |
target.asset.asset_id |
vc_event_severity |
security_result.severity,security_result.severity_details |
vc_username |
target.user.userid |
ver_proto |
network.tls.version |
version |
metadata.product_version |
@version |
principal.platform_version |
vpxd_some_id |
additional.fields |
LEEF_version |
additional.fields |
ICMPType |
additional.fields |
ICMPCode |
additional.fields |
IngressInterface |
additional.fields |
EgressInterface |
additional.fields |
WebApplication |
additional.fields |
DNSQuery |
additional.fields |
DNSRecordType |
additional.fields |
DNSResponseType |
additional.fields |
DNS_TTL |
additional.fields |
ApplicationProtocol |
additional.fields |
service.type |
additional.fields |
log.syslog.facility.code |
additional.fields |
log.syslog.facility.name |
additional.fields |
log.syslog.severity.code |
additional.fields |
log.syslog.priority |
additional.fields |
host.os.name |
additional.fields |
host.os.build |
additional.fields |
labels.plugin_id |
additional.fields |
opID |
additional.fields |
sub |
additional.fields |
api_invocations |
additional.fields |
vc_event_cat_0 |
additional.fields |
vc_event_cat_1 |
additional.fields |
vc_event_chain_id |
additional.fields |
vc_event_obj_name |
additional.fields |
vc_event_obj_type |
additional.fields |
p_log_id_repeat |
additional.fields |
sys_priority |
additional.fields |
facility |
additional.fields |
originator |
additional.fields |
originator_id |
additional.fields |
subsystem |
additional.fields |
request_timestamp |
additional.fields |
response_flags |
additional.fields |
duration_total_ms |
additional.fields |
duration_upstream_connect_ms |
additional.fields |
duration_response_tx_ms |
additional.fields |
local_port_2 |
additional.fields |
proc_id |
additional.fields |
eventid_label |
additional.fields |
Logger_Name |
additional.fields |
subcomponent |
additional.fields |
op_id |
additional.fields |
vcenter_uuid_1 |
additional.fields |
vcenter_uuid_2 |
additional.fields |
object_lookup_method |
additional.fields |
conn_id |
additional.fields |
performed_action |
additional.fields |
login_time |
additional.fields |
open_connections |
additional.fields |
total_connections |
additional.fields |
channel_id |
additional.fields |
line_number |
additional.fields |
vc_event_desc |
additional.fields |
uid |
additional.fields |
euid |
additional.fields |
ruser |
additional.fields |
tty |
additional.fields |
tenant |
additional.fields |
duration_ms |
additional.fields |
provider |
additional.fields |
provider_type |
additional.fields |
response_flag |
additional.fields |
http_path |
additional.fields |
unknown_metric_1 |
additional.fields |
unknown_metric_2 |
additional.fields |
sequence_id |
additional.fields |
syslog_facility_code |
additional.fields |
syslog_severity_code |
additional.fields |
syslog_severity |
additional.fields |
syslog_pri |
additional.fields |
syslog_facility |
additional.fields |
logstash.collect.timestamp |
additional.fields |
logstash.ingest.timestamp |
additional.fields |
logstash.process.timestamp |
additional.fields |
logstash.irm_site |
additional.fields |
logstash.irm_environment |
additional.fields |
logstash.irm_region |
additional.fields |
agent.id |
additional.fields |
agent.ephemeral_id |
additional.fields |
ecs.version |
additional.fields |
input.type |
additional.fields |
UDM 映射增量参考
2026 年 9 月 15 日,Google SecOps 发布了新版 VMware vCenter 解析器,其中包含对 VMware vCenter 日志字段到 UDM 字段的映射的更改。
日志字段映射增量
下表列出了 2026 年 9 月 15 日之前和之后公开的 VMware vCenter 日志到 UDM 字段的映射增量(分别列在旧映射和当前映射列中):
| 日志字段 | 旧映射 | 当前映射 | 更改的原因 |
|---|---|---|---|
appname |
target.application |
principal.application |
这被视为用户发起操作的工具,因此它是发起事件的主要应用,而不是被操作的目标。 |
auth_user |
principal.user.userid |
target.user.userid |
这是用户登录事件,用户是该事件的操作对象。 |
logstash.process.host |
target.hostname |
additional.fields |
此字段由 Logstash 流水线添加。它表示运行 Logstash 进程的服务器的主机名,该进程是日志收集基础设施的一部分。此主机不是事件本身的来源,而是处理日志的中介。 |
username |
target.user.userid |
principal.user.userid |
此用户 ID 属于事件的来源,而非目标。 |
domain |
target.administrative_domain |
principal.administrative_domain |
此网域属于事件的 src,而不属于目标。 |
resource.labels.project_id |
src.cloud.project.id |
src.resource_ancestors.product_object_id |
之前的字段已弃用。 |
target_app |
target.application |
principal.application |
该日志专门描述了内部单点登录。 |
process |
additional.fields |
principal.application |
更适合。 |
app |
target.application |
principal.application |
该日志专门描述了内部单点登录。 |
@fields.privatecloud_id |
principal.cloud.project.id |
principal.resource_ancestors.product_object_id |
之前的字段已弃用。 |
@fields.privatecloud_name |
principal.cloud.project.name |
principal.resource_ancestors.name |
之前的字段已弃用。 |
@fields.facility |
principal.resource.type |
principal.resource.resource_subtype |
之前的字段已弃用。 |
Client |
target.labels |
target.user.attribute.labels |
之前的字段已弃用。 |
kv_msg1.ctladdr |
intermediary.labels |
intermediary.user.attribute.labels |
之前的字段已弃用。 |
kv_msg1.get_error |
intermediary.labels |
intermediary.user.attribute.labels |
之前的字段已弃用。 |
resource.type |
src.labels |
src.user.attribute.labels |
之前的字段已弃用。 |
admin |
principal.user.attribute.labels |
principal.resource.attribute.labels |
之前的字段已弃用。 |
role |
target.user.role_name |
target.user.attribute.roles |
之前的字段已弃用。 |
syslog_host |
未映射 | target.hostname |
新添加的字段映射。 |
log.source.address |
未映射 | intermediary.ip,intermediary.port |
新添加的字段映射。 |
agent.type |
未映射 | observer.application |
新添加的字段映射。 |
agent.version |
未映射 | intermediary.platform_version |
新添加的字段映射。 |
pid |
未映射 | target.process.pid |
新添加的字段映射。 |
temp_host |
未映射 | intermediary.hostname |
新添加的字段映射。 |
port |
未映射 | intermediary.port |
新添加的字段映射。 |
inter_hostname |
未映射 | intermediary.hostname |
新添加的字段映射。 |
tgt_user |
未映射 | target.user.userid |
新添加的字段映射。 |
tgt_domain |
未映射 | target.administrative_domain |
新添加的字段映射。 |
alarm_target |
未映射 | about.resource.name |
新添加的字段映射。 |
prin_app |
未映射 | principal.application |
新添加的字段映射。 |
dest_ip |
未映射 | target.ip |
新添加的字段映射。 |
dest_port |
未映射 | target.port |
新添加的字段映射。 |
error_message |
未映射 | security_result.summary |
新添加的字段映射。 |
error_code |
未映射 | security_result.detection_fields |
新添加的字段映射。 |
function |
未映射 | security_result.detection_fields |
新添加的字段映射。 |
thread_id |
未映射 | principal.resource.attribute.labels |
新添加的字段映射。 |
obj_p |
未映射 | additional.fields |
新添加的字段映射。 |
obj_h |
未映射 | additional.fields |
新添加的字段映射。 |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。