部署 Bindplane 代理以进行收集

支持范围:

本文档介绍了适用于 Google Security Operations 的 Bindplane。

Bindplane 是一种遥测流水线,可从任何来源收集日志,并将其优化和导出到 Google SecOps。

Bindplane 提供两个专为 Google 设计的版本。

Bindplane 包含以下主要组件:

  • Bindplane 收集器。基于 OpenTelemetry (OTel) 收集器的开源代理。它会从各种来源(包括 Microsoft Windows 事件日志)收集日志,并将其发送到 Google SecOps。您可以在本地或云端安装收集器。

    此组件也可以称为 Bindplane Distribution for OpenTelemetry (BDOT) 收集器、bindplane 代理、收集代理、收集器或代理。

  • Bindplane 服务器。一个全面且统一的平台,用于管理 OTel 收集器部署。这些部署可以位于 Google SecOps 和 Google Cloud中。许多 Google SecOps 客户都使用 Bindplane Server,但其使用是可选的。Bindplane Server 可以在本地或 Bindplane 云中运行。如需详细了解服务器,请参阅 Bindplane 服务器。

    此组件也可能称为 Bindplane Observability Pipeline (OP) 管理控制台或 Bindplane 管理控制台。

Bindplane 的 Google 版本

Bindplane 提供了两个专为 Google 设计的版本:Bindplane(Google 版本)和 Bindplane Enterprise(Google 版本)。

Bindplane(Google 版)

Bindplane(Google 版本)面向所有 Google SecOps 客户提供。

您可以在 Bindplane 云端自助使用 Bindplane(Google 版本)。

如需开始安装和自行托管 Bindplane(Google 版本),或为本地 Bindplane 服务器生成密钥,请参阅 Bindplane(Google 版本)。

Bindplane Enterprise(Google 版本)- 适用于 Google SecOps Enterprise Plus 和 Google Unified Security (GUS) 客户

Google SecOps Enterprise Plus 和 GUS 客户可使用 Bindplane Enterprise(Google 版本)。

对于大规模部署,建议使用 Bindplane Enterprise(Google 版)。

下载 Bindplane 企业版许可密钥

Google SecOps Enterprise Plus 和 GUS 客户可以直接从平台控制台下载其 Bindplane Enterprise(Google 版)许可密钥:

  1. 在 Google SecOps 控制台中,依次前往设置 > 数据管理 > 收集代理。
  2. 在 Bindplane 许可卡片中,点击下载许可以保存许可密钥文件。
  3. 将下载的许可密钥应用于 Bindplane Server 安装。如需了解详情,请参阅应用 Bindplane 许可。

Bindplane Google 版本 - 差异

下表列出了 Bindplane Google 版本之间的差异:

主题/功能 Bindplane(Google 版) Bindplane Enterprise(Google 版)
费用 所有 Google SecOps 客户均可免费使用 Google SecOps 企业 Plus 版客户可免费使用
路由/目标平台 仅限 Google,包括 Google SecOps、Cloud Logging、BigQuery 和 Cloud Storage(通过 Google SecOps) Google,包括长达 12 个月的 SIEM 迁移数据路由服务,助您轻松将数据传输至非 Google 目的地
过滤 使用正则表达式的基本过滤条件 高级过滤处理器(例如,按条件、字段、严重级别等过滤)、数据缩减、日志采样、去重
隐去 不适用 个人身份信息遮盖
转换 添加字段、移动字段、解析数据(KV、JSON、CSV、XML、时间戳、按正则表达式解析)、重命名字段、事件中断器 包含 Bindplane(Google 版)支持的所有功能,以及删除字段、删除空值、合并
平台级常规功能 网关(汇总来自收集器的数据)、Bindplane 收集器、Bindplane 服务器(Bindplane 管理层,本地或云托管)、所有来源、通过 Google SecOps 处理器进行静默主机监控、持久队列、丰富遥测、高可用性、RBAC、支持两种 Google SecOps 注入 API、凭据混淆、高级队列管理(包括收集器分组)、动态日志类型分配 Bindplane(Google 版)支持的所有功能

Bindplane 收集器架构

Bindplane 使用 BDOT 收集器(通常称为收集器)通过 Open Agent Management Protocol (OpAMP) 来标准化遥测管理。您还可以使用 Bindplane 创建和管理自定义 OpenTelemetry 收集器分发。

收集器可以作为轻量级 Web 服务器在 Linux 或 Docker 中运行,没有外部依赖项。

如需详细了解 Bindplane OpenTelemetry 收集器的部署架构,请参阅部署。

以下部分介绍了可用的架构选项。

收集器将日志发送到充当网关的收集器

对于大规模部署,我们建议您使用充当网关的收集器。这些网关通过网络从其他收集器接收遥测数据,视需要执行额外处理,并将数据路由到 Google SecOps。

充当网关的收集器使用与其他所有收集器相同的二进制文件。

下图显示了收集器将日志发送到充当网关的收集器:

收集器将日志发送到充当网关的收集器

收集器直接向 Google SecOps 注入 API 发送日志

下图显示了收集器直接向 Google SecOps 提取 API 发送日志:

收集器直接向 Google SecOps 注入 API 发送日志

收集器直接将日志发送到 Cloud Logging

下图显示了收集器直接向 Cloud Logging 发送日志:

收集器直接将日志发送到 Cloud Logging

收集器将日志发送到多个目标位置

下图显示了收集器将日志发送到多个目标位置:

收集器将日志发送到多个目标位置

Bindplane 服务器

Bindplane 服务器提供以下主要功能:

  • 集中管理。通过该服务器,您可以管理 Google Cloud中的所有 OTel 收集器部署。您可以查看每个部署的状态,并执行常见的管理任务,例如启动、停止和重启收集器。
  • 实时监控。该服务器可实时监控 OTel 收集器部署。您可以跟踪 CPU 用量、内存用量和吞吐量等指标。您还可以查看日志和跟踪记录,以排查问题。
  • 提醒和通知。该服务器可让您为重要事件(例如收集器宕机或超出指标阈值)设置提醒和通知。
  • 配置管理。该服务器可让您集中管理 OTel 收集器的配置。您可以修改配置文件、设置环境变量,以及将安全政策应用于所有部署。
  • 与 Google Cloud集成。您可以在 Google Cloud 中创建和管理 OTel 收集器部署,并使用服务器访问 Google Cloud 资源。

Bindplane 提供云端和本地部署选项。如需了解详情,请参阅使用 Bindplane 服务器。

技术要求和建议

本部分介绍了在 Google SecOps 中安装和运行 Bindplane 的技术要求和建议。

带宽要求

Bindplane 会维护以下各项的网络连接:

  • 收集器管理
  • 收集器吞吐量测量
  • 命令行和 Web 界面

网络连接要求

Bindplane 默认监听端口 3001。此端口可配置。

Bindplane 端口用于:

  • 使用 OpAMP (WebSocket) 的收集器命令与控制
  • 收集器吞吐量测量请求(HTTP POST 请求)
  • 浏览器和 CLI 用户(HTTP 和 WebSocket)

收集器必须能够发起与 Bindplane 的连接,以进行 OpAMP (WebSocket) 和吞吐量测量 (HTTP)。

Bindplane 绝不会发起与收集器的连接。您可以配置防火墙,以阻止 Bindplane 访问收集器网络;但是,收集器网络必须能够通过配置的端口访问 Bindplane。

Bindplane 收集器一般技术要求

如需了解 Bindplane 收集器的一般技术要求,请参阅以下内容:

收集器资源要求

Bindplane 的资源要求因托管收集器的数量而异。随着代管式收集器数量的增加,CPU、内存、磁盘吞吐量/IOPS 和网络消耗也会增加。

请参考下表来确定 CPU、内存和存储容量:

收集器数量 Bindplane 节点 容错性 CPU 核心数 内存 数据库
1 - 100 人 1 不适用 2 4 GB bbolt
100-25,000 1 不适用 4 16 GB postgres
1-60,000 3 1 2 8 GB postgres
60,001-125,000 5 1 2 8 GB postgres
125,001-250,000 10 2 2 8 GB postgres

规划安装和部署

以下部分包含您在规划 Bindplane 部署时应考虑的建议和最佳实践。

考虑伸缩和容错

横向伸缩更可取,因为它提供容错能力,并且可以消除导出器瓶颈。

在网关模式下运行 Bindplane 收集器时,我们建议您将其与负载均衡器配对,以提供容错和横向伸缩功能。

计算您需要多少个收集器

在计算工作负载所需的收集器数量时,请考虑预期的吞吐量或日志速率,并参考下表。此表假定每个收集器都有四个 CPU 核心和 16 GB 内存。该表不包含使用处理器进行的计算;添加处理器后,计算要求会增加。

遥测吞吐量 日志数/秒 收集器
5 GB/分钟 250000 2
10 GB/月 50 万 3
20 GB/月 100 万 5
100 GB/月 5000000 25

为收集器舰队预配过量资源以实现容错

过度预配收集器舰队,以确保容错能力。如果一个或多个收集器系统发生故障或因维护而离线,其余收集器必须有足够的容量来管理遥测吞吐量。

如果您使用的是固定数量的收集器,则可以纵向伸缩其 CPU 和内存,以提高吞吐量。

分流处理开销

通常,您希望收集器执行尽可能少的工作。如果您有繁重的处理要求,将这些处理工作分流到一组网关收集器可能会很有用。例如,您可以使用网关收集器执行该任务,而不是使用开销较大的正则表达式操作来过滤遥测数据。通常,网关收集器在专用系统上运行。这证明了处理开销的合理性,因为它不会消耗在同一系统上运行的其他服务的计算能力,这与可能在数据库服务器上运行的非网关收集器不同。

网关模式的最佳实践

在网关模式下运行 Bindplane 收集器时,我们建议您按照以下最佳实践规划部署:

  • 在负载均衡器后面放置至少两个收集器。
  • 每个收集器应至少有两个核心。
  • 每个收集器应至少有 8 GB 内存。
  • 每个收集器都应有 60 GB 的可用空间,用于永久性队列。

根据需要使用负载均衡器

在高可用性模式下运行 Bindplane 时,需要使用负载均衡器。

在网关模式下运行 Bindplane 收集器时,请使用负载均衡器来提高性能和冗余。负载均衡还支持网关舰队的横向伸缩,并能够承受故障而不会导致服务中断。

Bindplane 收集器可以与各种负载均衡器搭配使用。

如需了解详情,请参阅负载均衡器配置。

负载均衡端口和协议

Bindplane 默认监听端口 3001。

为了支持 OpenTelemetry 中各种基于网络的接收器,负载均衡器必须支持:

  • TCP/UDP 传输协议
  • HTTP 和 gRPC 应用协议

负载均衡容量

为实现最大容错能力,Bindplane 节点管理的收集器不应超过 30,000 个。每个收集器都会打开两个与 Bindplane 的连接(一个用于 OpAMP 远程管理,另一个用于发布吞吐量指标)。此限制有助于确保您不会超出大多数负载均衡器对每个后端实例施加的大约 65,535 个连接的连接限制。

如果一个组织有 100,000 个收集器,则集群大小为 3 是不够的。每个节点将负责大约 33,000 个收集器,这意味着每个 Bindplane 实例有 66,000 个 TCP 连接。如果一个节点因维护而停机,情况会变得更糟,因为每个剩余的 Bindplane 实例随后将管理 50,000 个收集器或 100,000 个 TCP 连接。

负载均衡容量规划最佳实践

  • 实施健康检查。配置负载均衡器,确保收集器已准备好接收流量。
  • 均匀分布连接。连接应均匀分布在各个收集器之间。
  • 支持必需的协议。为了支持 OpenTelemetry 中各种基于网络的接收器,负载均衡器必须支持:

    • TCP/UDP 传输协议
    • HTTP 和 gRPC 应用协议

如需了解详情,请参阅收集器弹性。

来源类型负载均衡

任何通过网络从远程系统接收遥测数据的来源类型都适合进行负载均衡,包括:

  • OTLP
  • Syslog
  • TCP/UDP
  • Splunk HEC
  • Fluent Forward

在生产环境中使用高可用性模式

您可以在单实例或多实例配置中部署 Bindplane 实例。对于需要高可用性 (HA) 和弹性的生产部署,我们建议您使用多实例 (HA) 部署模型。

当 Bindplane 管理超过 25,000 个收集器时,我们建议您在高可用性 (HA) 模式下运行 Bindplane。

如需了解 Bindplane 中的高可用性,请参阅高可用性。

计算高可用性所需的收集器和 Bindplane 服务器数量

在以高可用性模式运行 Bindplane 时,您必须考虑每个 Bindplane 服务器预计要处理的收集器数量。

用 Bindplane 实例总数减去您预计因维护而不可用的节点数上限。确保在节点服务中断期间,每个节点管理的收集器不超过 30,000 个。

Postgres for HA

在 HA 模式下运行 Bindplane 时,Postgres 是前提条件。

Prometheus for HA

在 HA 模式下运行 Bindplane 时,必须使用 Prometheus。

如需了解详情,请参阅 Prometheus。

高可用性事件总线

Bindplane 使用事件总线在 Bindplane 内的组件之间进行通信。在 HA 模式下运行 Bindplane 时,您可以使用事件总线在 Bindplane 服务器之间发送事件。

如需了解详情,请参阅事件总线。

对测试环境或概念验证使用单实例部署

对于测试环境或概念验证,我们建议您使用单实例部署。

如需了解详情,请参阅单实例。

隔离后端凭据

您可以仅在网关收集器上保留凭证,而无需将凭证部署到所有收集器系统。这样可以简化凭证变换,并通过将凭证部署限制在部分系统中来缩小安全攻击面。

为网关收集器设置防火墙

您可以将网关收集器放置在边界网络中,该网络与内部网络之间有防火墙。您可以配置网络,以允许其他收集器将数据转发到网关收集器,同时阻止网关收集器访问您的应用网络。这样,您就可以将遥测数据发送到基于云的后端,而无需向端点授予对互联网的直接访问权限。

防火墙必须允许 HTTP 流量通过配置的端口到达 Bindplane。

验证防火墙配置 (Ingestion API)

收集器与互联网之间的任何防火墙或经过身份验证的代理都需要规则来开放对以下主机的访问权限:

连接类型 目标 端口
TCP malachiteingestion-pa.googleapis.com 443
TCP asia-northeast1-malachiteingestion-pa.googleapis.com 443
TCP asia-south1-malachiteingestion-pa.googleapis.com 443
TCP asia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP australia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP europe-malachiteingestion-pa.googleapis.com 443
TCP europe-west2-malachiteingestion-pa.googleapis.com 443
TCP europe-west3-malachiteingestion-pa.googleapis.com 443
TCP europe-west6-malachiteingestion-pa.googleapis.com 443
TCP europe-west12-malachiteingestion-pa.googleapis.com 443
TCP me-central1-malachiteingestion-pa.googleapis.com 443
TCP me-central2-malachiteingestion-pa.googleapis.com 443
TCP me-west1-malachiteingestion-pa.googleapis.com 443
TCP northamerica-northeast2-malachiteingestion-pa.googleapis.com 443
TCP accounts.google.com 443
TCP oauth2.googleapis.com 443

使用 Bindplane 进行 Google SecOps 注入的前提条件

本部分概述了使用 Bindplane 成功将数据注入 Google SecOps 的必要前提条件,尤其是在利用 Chronicle Ingestion API 时。

Chronicle API (HTTPS) 的网络要求

将 Bindplane 与 Chronicle Ingestion API(使用 HTTPS)搭配使用时,请确保您的网络和防火墙配置允许与 Chronicle API 端点建立出站连接。

如果贵组织采用基于 IP 的防火墙限制,则必须考虑 Google Cloud IP 地址的动态特性。由于 Google SecOps 不支持为 Ingestion API 设置静态 IP 地址许可名单,因此不建议仅依赖静态 IP,否则可能会导致提取失败。

为保持持续的数据注入,请考虑以下事项:

  • 基于网域的许可清单:建议的最佳做法是配置防火墙,以允许出站 HTTPS(端口 443)流量流向整个 *.chronicle.googleapis.com 网域。
  • 区域级端点:应将 Bindplane 配置为使用适用于您的 Google SecOps 实例的区域级端点,例如 us-chronicle.googleapis.com、europe-chronicle.googleapis.com 等。如需查看区域级端点的完整列表,请参阅从旧版 SIEM API 迁移到 Chronicle API 文档。
  • 自动更新 IP:如果无法使用基于网域的许可清单,您必须实现一个自动化系统,定期提取和更新与 *.chronicle.googleapis.com 关联的 IP 范围。如 Google IP 地址文档中所述,您可以从 goog.json 和 cloud.json 文件中获取 Google API 的当前 IP 范围。实施一个系统,以便根据这些来源动态更新防火墙规则。

将 PostgreSQL 用于生产部署

对于 Bindplane 的生产部署,Postgres 是必需的。

Postgres 是您在 HA 模式下运行 Bindplane 的前提条件。

CPU 核心数和可用内存通常会限制 PostgreSQL 存储后端的性能。我们建议使用低延迟、高吞吐量的存储空间(例如固态硬盘 [SSD])来支持 PostgreSQL 存储。

收集器数量 CPU 核心数 内存
1-60,000 4 16 GB
60,001-125,000 8 32 GB
125,001-250,000 16 64 GB

如需了解详情,请参阅以下内容:

实现适当的身份验证

Bindplane 支持使用以下协议和服务进行身份验证;请确保它们已正确实现:

使用 Bindplane 服务器

大多数 Google SecOps 客户都使用 Bindplane 服务器,但其使用是可选的。如果您要安装 Bindplane 服务器,则需要访问 storage.googleapis.com。如果您只安装收集器,则不需要此访问权限。

如需观看演示如何配置 Bindplane 服务器以标准化日志并将其导出到 Google SecOps 的演示,请前往 Bindplane 用例演示,然后选择 Google SecOps 配置。

使用 Bindplane Cloud 服务器

Bindplane Cloud 适用于 Google 客户。

登录 Google Edition。

如有任何与 Bindplane Cloud Server 相关的问题,请与 Bindplane 支持团队联系。如有任何与本地 Bindplane Server 相关的问题,请与 Google SecOps 支持团队联系。

在 Google Cloud上使用 Bindplane 服务器

如需了解如何在 Google Cloud上运行 Bindplane 服务器,请参阅 Bindplane 企业版。

使用 Bindplane 本地服务器

使用本地 Bindplane 服务器时,必须遵守现有的 Google Cloud 服务条款。

在 Linux 上安装本地服务器

您可以通过运行脚本(推荐)或下载二进制文件并手动安装,在 Linux 上安装本地 Bindplane 服务器。如需了解详情,请参阅安装 Bindplane Server。

如需使用脚本在 Linux 上安装本地 Bindplane 服务器,请执行以下操作:

  1. 运行以下脚本:

    curl -fsSlL https://downloads.bindplane.com/bindplane/latest/install-linux.sh -o install-linux.sh && bash install-linux.sh --init && rm install-linux.sh

  2. 按照说明操作,系统会引导您完成服务器初始化。

如需使用二进制文件在 Linux 上安装本地 Bindplane 服务器,请执行以下操作:

  1. 下载以下任一文件:

  2. 按照配置 Bindplane 服务器中的说明更新配置文件。

支持的 Linux 发行版:
  • Red Hat、Centos、Oracle Linux 7、8、9
  • Debian 11 和 12
  • Ubuntu LTS 20.04 和 22.04
  • SUSE Linux 12 和 15
  • Alma 和 Rocky Linux

如需了解详情,请参阅以下内容:

Docker 本地部署

如需了解详情,请参阅安装 Bindplane Server。

您可以在以下位置找到 Bindplane Docker 容器映像:

  • GitHub 软件包:ghcr.io/observiq/Bindplane-ee
  • Google 工件代码库:us-central1-docker.pkg.dev/observiq-containers/bindplane/bindplane-ee
  • Docker Hub:observiq/bindplane-ee

容器映像会使用发布版本进行标记:例如,版本 v1.35.0 将具有标记 observiq/bindplane-ee:1.35.0。

安装 Bindplane 收集器

本部分介绍了如何在各种系统上安装适用于 Google SecOps 的 Bindplane 收集器。

收集器通常使用极少的资源。不过,在处理大量日志时,请注意资源消耗,以免影响其他服务。如需了解详情,请参阅技术要求和建议、规划安装和部署以及代理大小和扩缩。

如需了解如何安装收集器(即 OTel 代理),请参阅 Bindplane OTel 收集器。

您还可以参阅 GitHub 文档 bindplane-otel-collector。

如需安装收集器,您需要满足以下条件:

  • Google SecOps 数据注入身份验证文件

    如需下载身份验证文件,请按以下步骤操作:

    1. 打开 Google SecOps 控制台。
    2. 依次前往设置 > 数据管理 > 收集代理。
    3. 下载 Google SecOps 注入身份验证文件。后续步骤取决于您的转移方式:
      • gRPC:使用下载的身份验证文件。
      • HTTPS:在与 Google SecOps 关联的 Google Cloud 项目中创建服务账号,并为其分配 Chronicle Editor 角色。
  • Google SecOps 客户 ID

    如需查找客户 ID,请按以下步骤操作:

    1. 打开 Google SecOps 控制台。
    2. 依次前往设置 > 管理 > 个人资料。
    3. 从组织详细信息部分复制客户 ID。
  • Windows 2012 SP2 或更高版本,或者具有 systemd 的 Linux 主机

  • 互联网连接

  • GitHub 访问权限

部署工具

本部分介绍了 Bindplane 的部署工具。

GitOps

使用 GitOps 模型部署 Bindplane 资源,其中包括:

  • Bindplane 身份验证
  • Bindplane CLI
  • 网络访问
  • 与 GitHub 代码库和 GitHub Actions 集成
  • 导出已有资源
  • 管理敏感值
  • 建立 GitHub Actions 工作流
  • 分步说明,涵盖提交和测试配置、启用自动发布,以及通过直接修改或界面导出方法更新资源
  • 更新敏感值并采用 RBAC

如需了解详情,请参阅 GitOps。

Ansible

如需了解如何使用 Ansible 部署 Bindplane,请参阅 bindplane-agent-ansible。

Bindplane CLI

如需了解 Bindplane CLI,请参阅 GitOps。

Terraform

如需了解如何使用 Terraform 配置 Bindplane 资源,请参阅 Bindplane 提供程序。

Kubernetes

如需了解如何将 Kubernetes 与 Bindplane 搭配使用,请参阅以下内容:

在 Windows 上安装 Bindplane 收集器

如需在 Windows 上安装 Bindplane 收集器,请运行以下 PowerShell 命令:

msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet

或者,如需使用安装向导进行安装,请下载适用于 Windows 的最新安装程序。下载安装程序后,打开安装向导,然后按照说明配置和安装 Bindplane 收集器。

如需详细了解如何在 Windows 上安装 Bindplane 收集器,请参阅 Windows 安装。

在 Linux 上安装 Bindplane 收集器

您可以使用脚本在 Linux 上安装收集器,该脚本会自动确定要安装的软件包。您还可以使用同一脚本来更新现有安装。

如需使用安装脚本进行安装,请运行以下脚本:

sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh

通过本地软件包进行安装

如需从本地软件包安装收集器,请使用 -f 并指定软件包的路径。

sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh -f path_to_package

RPM 安装

从版本页面下载适用于您的架构的 RPM 软件包,然后使用 rpm 安装该软件包。请参阅以下示例,了解如何安装 amd64 软件包:

sudo rpm -U ./observiq-otel-collector_v${VERSION}_linux_amd64.rpm
sudo systemctl enable --now observiq-otel-collector

将 VERSION 替换为您下载的软件包的版本。

DEB 安装

从版本页面下载适用于您的架构的 DEB 软件包,然后使用 dpkg 安装该软件包。请参阅以下示例,了解如何安装 amd64 软件包:

sudo dpkg -i --force-overwrite ./observiq-otel-collector_v${VERSION}_linux_amd64.deb
sudo systemctl enable --now observiq-otel-collector

将 VERSION 替换为您下载的软件包的版本。

配置 Bindplane 收集器

安装收集器后,observiq-otel-collector 服务会运行并可供配置。

您可以手动配置收集器,也可以使用 Bindplane 服务器进行配置。

如果您要手动配置收集器,则需要更新导出器参数,以确保收集器向 Google SecOps 进行身份验证。

OTel 收集器配置文件

在 Linux 中,收集器的配置文件位于 /opt/observiq-otel-collector/config.yaml。

OTel 收集器服务和日志

默认情况下,收集器会记录到 C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log。

收集器进程的标准错误日志位于 C:\Program Files\observIQ OpenTelemetry Collector\log\observiq_collector.err。

在 Linux 中,如需查看收集器中的日志,请运行 sudo tail -F /opt/observiq-otel-collector/log/collector.log。

常见的 Linux OTel 收集器服务命令:

  • 如需停止 OTel 收集器服务,请运行 sudo systemctl stop observiq-otel-collector。

  • 如需启动 OTel 收集器服务,请运行 sudo systemctl start observiq-otel-collector。

  • 如需重启 OTel 收集器服务,请运行 sudo systemctl restart observiq-otel-collector。

  • 如需在启动时启用 OTel 收集器服务,请运行 sudo systemctl enable observiq-otel-collector。

重启收集器服务,使配置更改

更改配置时,您必须重启收集器服务,配置更改才能生效 (sudo systemctl restart observiq-otel-collector)。

使用默认示例配置文件

默认情况下,收集器配置文件位于 C:\Program Files\observIQ OpenTelemetry Collector\config.yaml。

如需下载收集器使用的示例配置文件和身份验证令牌,请执行以下操作:

  • 打开 Google SecOps 控制台,然后依次前往设置 > 数据管理 > 收集代理。

自定义配置文件中的以下两个部分:

  • 接收器:指定收集器应收集哪些日志并将其发送到 Google SecOps。
  • 导出器:指定收集器将日志发送到的目标位置。支持以下导出器:
    • Google SecOps 导出器:将日志直接发送到 Google SecOps 注入 API。
    • Google SecOps 转发器导出器:将日志发送到 Google SecOps 转发器。
    • Cloud Logging 导出器:将日志发送到 Cloud Logging。

在导出器中,自定义以下内容:

  • customer_id:您的 Google SecOps 客户 ID。
  • endpoint:您的 Google SecOps 区域级端点。
  • creds:您的身份验证令牌。

    或者,您也可以使用 creds_file_path 直接引用凭证文件。对于 Windows 配置,请使用反斜杠对路径进行转义。

  • log_type:日志类型。我们建议您选择 WINDOWS_DNS 作为日志类型。

  • ingestion_labels:提取标签。这些标签用于在 Google SecOps 中标识日志。

  • namespace:可选命名空间。

    每种日志类型都需要您配置导出器。

日志收集配置示例

以下部分包含日志收集的配置示例。

将 Windows 事件和 sysmon 直接发送到 Google SecOps

在示例中配置以下参数:

示例配置:

receivers:
  windowseventlog/sysmon:
    channel: Microsoft-Windows-Sysmon/Operational
    raw: true
  windowseventlog/security:
    channel: security
    raw: true
  windowseventlog/application:
    channel: application
    raw: true
  windowseventlog/system:
    channel: system
    raw: true

processors:
  batch:

exporters:
  chronicle/sysmon:
    endpoint: malachiteingestion-pa.googleapis.com
    creds: '{
  "type": "service_account",
  "project_id": "malachite-projectname",
  "private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
  "private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
  "client_email": "account@malachite-projectname.",
  "client_id": "123456789123456789",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.",
  "universe_domain": "googleapis.com"
}' 
    log_type: 'WINDOWS_SYSMON'
    override_log_type: false
    raw_log_field: body
    customer_id: 'dddddddd-dddd-dddd-dddd-dddddddddddd'
  chronicle/winevtlog:
    endpoint: malachiteingestion-pa.googleapis.com
    creds: '{
  "type": "service_account",
  "project_id": "malachite-projectname",
  "private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
  "private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
  "client_email": "account@malachite-projectname.",
  "client_id": "123456789123456789",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.",
  "universe_domain": "googleapis.com"
}'
    log_type: 'WINEVTLOG'
    override_log_type: false
    raw_log_field: body
    customer_id: 'dddddddd-dddd-dddd-dddd-dddddddddddd'

service:
  pipelines:
    logs/sysmon:
      receivers: [windowseventlog/sysmon]
      processors: [batch]
      exporters: [chronicle/sysmon]
    logs/winevtlog:
      receivers: 
        - windowseventlog/security
        - windowseventlog/application
        - windowseventlog/system
      processors: [batch]
      exporters: [chronicle/winevtlog]

将 Windows 事件和 syslog 直接发送到 Google SecOps

在示例中配置以下参数:

示例配置:

receivers:
    tcplog:
      listen_address: "0.0.0.0:54525"
    windowseventlog/source0__application:
        attributes:
            log_type: windows_event.application
        channel: application
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__security:
        attributes:
            log_type: windows_event.security
        channel: security
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__system:
        attributes:
            log_type: windows_event.system
        channel: system
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
exporters:
    chronicle/chronicle_w_labels:
        compression: gzip
        creds: '{ json blob for creds }'
        customer_id: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
            env: dev
        log_type: <applicable_log_type>
        namespace: testNamespace
        raw_log_field: body
service:
    pipelines:
        logs/source0__chronicle_w_labels-0:
            receivers:
                - windowseventlog/source0__system
                - windowseventlog/source0__application
                - windowseventlog/source0__security
            exporters:
                - chronicle/chronicle_w_labels
        logs/source1__chronicle_w_labels-0:
            receivers:
                - tcplog
            exporters:
                - chronicle/chronicle_w_labels

将 Windows 事件和系统日志发送到 Google SecOps 转发器

在示例中配置以下参数:

示例配置:

receivers:
tcplog:
    listen_address: "0.0.0.0:54525"
    windowseventlog/source0__application:
        attributes:
            log_type: windows_event.application
        channel: application
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__security:
        attributes:
            log_type: windows_event.security
        channel: security
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__system:
        attributes:
            log_type: windows_event.system
        channel: system
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
exporters:
    chronicleforwarder/forwarder:
        export_type: syslog
        raw_log_field: body
        syslog:
            endpoint: 127.0.0.1:10514
            transport: udp
service:
    pipelines:
        logs/source0__forwarder-0:
            receivers:
                - windowseventlog/source0__system
                - windowseventlog/source0__application
                - windowseventlog/source0__security
            exporters:
                - chronicleforwarder/forwarder
        logs/source1__forwarder-0:
            receivers:
                - tcplog
            exporters:
                - chronicleforwarder/forwarder

直接向 Google SecOps 发送 syslog

在示例中配置以下参数:

示例配置:

receivers:
  tcplog:
    listen_address: "0.0.0.0:54525"

exporters:
    chronicle/chronicle_w_labels:
        compression: gzip
        creds: '{ json blob for creds }'
        customer_id: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
            env: dev
        log_type: <applicable_log_type>
        namespace: testNamespace
        raw_log_field: body
service:
    pipelines:
        logs/source0__chronicle_w_labels-0:
            receivers:
                - tcplog
            exporters:
                - chronicle/chronicle_w_labels

远程收集 Windows 事件并将其直接发送到 Google SecOps

在示例中配置以下参数:

  • windowseventlogreceiver
    • username
    • password
    • server
  • chronicleexporter
    • namespace
    • ingestion_labels
    • log_type
    • customer_id
    • creds

示例配置:

receivers:
    windowseventlog/system:
        channel: system
        max_reads: 100
        start_at: end
        poll_interval: 10s
        raw: true
        remote:
            username: "username"
            password: "password"
            server: "remote-server"
    windowseventlog/application:
        channel: application
        max_reads: 100
        start_at: end
        poll_interval: 10s
        raw: true
        remote:
            username: "username"
            password: "password"
            server: "server-ip"
    windowseventlog/security:
        channel: security
        max_reads: 100
        start_at: end
        poll_interval: 10s
        raw: true
        remote:
            username: "username"
            password: "password"
            server: "server-ip"
exporters:
    chronicle/chronicle_w_labels:
        compression: gzip
        creds: '{ json blob for creds }'
        customer_id: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
            env: dev
        log_type: WINEVTLOG
        namespace: testNamespace
        raw_log_field: body
service:
    pipelines:
        logs/source0__chronicle_w_labels-0:
            receivers:
                - windowseventlog/system
                - windowseventlog/application
                - windowseventlog/security
            exporters:
                - chronicle/chronicle_w_labels

将数据发送到 Cloud Logging

在示例中配置 credentials_file 参数。

示例配置:

exporters:
  googlecloud:
    credentials_file: /opt/observiq-otel-collector/credentials.json

查询 SQL 数据库并将结果发送到 Google SecOps

在示例中配置以下参数:

示例配置:

receivers:
  sqlquery/source0:
    datasource: host=localhost port=5432 user=postgres password=s3cr3t sslmode=disable
    driver: postgres
    queries:
      - logs:
          - body_column: log_body
        sql: select * from my_logs where log_id > $$1
        tracking_column: log_id
        tracking_start_value: "10000"
processors:
  transform/source0_processor0__logs:
    error_mode: ignore
    log_statements:
      - context: log
        statements:
          - set(attributes["chronicle_log_type"], "POSTGRESQL") where true
exporters:
  chronicle/chronicle_sql:
    compression: gzip
    creds: '{
  "type": "service_account",
  "project_id": "malachite-projectname",
  "private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
  "private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
  "client_email": "account@malachite-projectname.",
  "client_id": "123456789123456789",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.",
  "universe_domain": "googleapis.com"
}' 
    customer_id: customer_id
    endpoint: malachiteingestion-pa.googleapis.com
    log_type: POSTGRESQL
    namespace: null
    raw_log_field: body
    retry_on_failure:
      enabled: false
    sending_queue:
      enabled: false
service:
  pipelines:
    logs/source0_chronicle_sql-0:
      receivers:
        - sqlquery/source0
      processors:
        - transform/source0_processor0__logs
      exporters:
        - chronicle/chronicle_sql

舍弃与正则表达式匹配的日志

您可以将收集器配置为丢弃与正则表达式匹配的日志。这对于滤除不需要的日志(例如已知错误或调试消息)非常有用。

如需舍弃与正则表达式匹配的日志,请向配置中添加 filter/drop-matching-logs-to-Chronicle 类型的处理器。此处理器使用 IsMatch 函数根据正则表达式评估日志正文。如果函数返回 true,则日志会被丢弃。

以下示例配置会丢弃日志正文中包含字符串 <EventID>10</EventID> 或 <EventID>4799</EventID> 的日志。

您可以自定义正则表达式,以匹配所需的任何模式。IsMatch 函数使用 RE2 正则表达式语法。

示例配置:

processors:
    filter/drop-matching-logs-to-Chronicle:
        error_mode: ignore
        logs:
            log_record:
                - (IsMatch(body, "<EventID>10</EventID>")) or (IsMatch(body, "<EventID>4799</EventID>"))

以下示例在同一配置中将处理器添加到流水线:

service:
  pipelines:
    logs/winevtlog:
      receivers: 
        - windowseventlog/security
        - windowseventlog/application
        - windowseventlog/system
      processors: 
      - filter/drop-matching-logs-to-Chronicle # Add this line
      - batch
      exporters: [chronicle/winevtlog]

Bindplane 运维

本部分介绍日常运维操作。

验证 OTel 配置

如需了解如何验证 Bindplane OTel 配置,请参阅 OTelBin。

收集器版本更新

Bindplane 可以轮询 bindplane-otel-collector/releases,以检测新的收集器版本。此为可选功能。

您可以通过在 Bindplane 配置中将 agentVersions.syncInterval 设置为 0 来停用 GitHub 轮询:

agentVersions:
syncInterval: 0

备份和灾难恢复

如需了解如何使用 Bindplane 进行备份和灾难恢复,请参阅 Bindplane 资源。

PostgreSQL 备份和灾难恢复

如需了解如何使用 Bindplane 进行 PostgreSQL 备份和灾难恢复,请参阅 PostgreSQL 文档。

BBolt 备份和灾难恢复

如需了解如何使用 Bindplane 进行 BBolt(已弃用)备份和灾难恢复,请参阅 BBolt 存储区文档。

弹性和重试

默认情况下,所有支持重试的目标位置都会启用重试。默认情况下,失败的请求会在 5 秒后重试,并逐步退避,最长可达 30 秒。五分钟后,请求会被永久丢弃。

如需了解详情,请参阅收集器弹性。

使用严重级别过滤条件减少日志量

如需了解如何减少日志量,请参阅使用严重级别过滤器减少日志量。

Bindplane 与第三方收集器的集成

虽然使用 Bindplane 收集器在边缘进行收集时,Bindplane 的功能更强大,但在大多数情况下,Bindplane 可以保留在现有基础架构中。例如,如果您已经在使用 Fluent Bit 或 Splunk Universal Forwarder,则可以继续使用。

Bindplane 与 Splunk 集成

如需了解如何将 Splunk 与 Bindplane 搭配使用,请参阅以下内容:

Bindplane 与其他第三方收集器的集成

如需了解 Bindplane 与第三方收集器的集成,请参阅使用 OpAMP 扩展程序连接其他 OpenTelemetry 收集器。

静默主机监控

借助 Google Security Operations 静默主机监控功能,您可以使用 Google Cloud Monitoring 为提取速率变化创建提醒。它会针对每个收集器生成提醒,并在提取速率低于您定义的阈值时通知您,从而发出潜在收集器停止的信号。

如需了解如何使用 Bindplane 进行静默主机监控,请参阅以下内容:

在 Linux 上升级 Bindplane

运行不带 --init 标志的 install 命令足以升级 Bindplane。在 Bindplane 服务器上运行此脚本以升级 Bindplane。如需了解详情,请参阅升级、降级或卸载 Bindplane Server。

监控 Bindplane

如需了解如何监控 Bindplane,请参阅监控 Bindplane。

在 Bindplane 中监控 Kubernetes

如需了解如何在 Bindplane 中监控 Kubernetes,请参阅 Kubernetes 监控。

其他文档

如需详细了解 Bindplane(以前称为 observIQ),请参阅以下内容:

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。