注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间的示例值。完成实验室时,请将这些值替换为特定于云环境的值。
使用 Fluentd 将 Oracle Cloud Infrastructure 登录到 Elastic Cloud
简介
Oracle Cloud Infrastructure (OCI) 提供全面的日志记录功能,但将这些日志与 Elastic 等外部系统集成需要强大的日志传送器。有许多流行的开源数据收集器,使您能够统一数据收集和使用。
有关详细信息,请参阅:使用日志发件人将 Oracle Cloud Infrastructure 登录到第三方 SIEM 平台和使用 Vector 将 Oracle Cloud Infrastructure 日志发送到 New Relic ,以确定最适合您的用例的解决方案。
在本教程中,我们将介绍使用 Fluentd 作为日志发送方将 OCI 日志摄取到 Elastic Cloud 的详细任务。
流动
Fluentd 是由 Treasure Data 开发的强大开源数据收集器,现在是 CNCF 的一部分,旨在简化跨多个系统的日志数据收集、转换和分发。它充当一个统一的日志记录层,收集来自不同来源的日志,使用解析器和过滤插件处理日志,并将其转发到 Elastic、Kafka 或云存储等目标。Fluentd 可以作为日志发货方部署在计算实例上,从 OCI Logging 服务捕获日志,并将其交付给 Elastic,以增强监视和分析能力。
一旦 Fluentd 将日志转发到 Elastic,日志数据的真正功能就会解锁。弹性安全索引并以结构化格式存储日志数据,支持强大的搜索、分析和可视化功能。利用 Elastic 的全文搜索引擎,用户可以实时查询和聚合日志,发现模式,识别异常,并生成具体可行的洞察。此外,借助 Kibana 等工具,可以通过交互式仪表盘对日志进行可视化,将原始日志数据转换为直观的可视化表示形式,从而帮助监视应用性能、检测安全威胁以及有效地排除运营问题。
让我们来看看解决方案体系结构的高级表示,如下图所示。
目标
-
使用 OCI Connector Hub 设置从 OCI Logging 到 OCI Streaming 的日志转发管道。
-
安装和配置 Fluentd 以安全地使用 OCI Streaming。
-
使用 Fluentd 的输入 Kafka 插件和结构化 JSON 将日志转发到 Elastic。
先决条件
-
有权访问弹性安全控制台的弹性云账户。有关更多信息,请参见 SIEM for Elastic 。
-
基于 Linux 的服务器,预配为 Fluentd 安装,具有强大的网络连接,可与您的 Elastic 环境无缝通信。
-
OCI 中的用户必须具有 OCI Streaming、OCI Connector Hub 和 OCI Logging 服务所需的策略才能管理资源。有关所有服务的策略参考的更多信息,请参见 Policy Reference 。
任务 1:为日志流处理准备 OCI
-
在 OCI Logging 中启用日志。
对于本教程,我们将使用审计日志。您还可以根据您的用例启用服务或定制日志。有关更多信息,请参见 Logging Overview 。
-
创建流。
在 Fluentd 开始发送日志之前,数据需要一个一致的源。在 OCI 中,该源是与 Kafka 兼容的流。想象一下,将流设置为日志的集中数据管道。OCI 中从计算实例到网络服务的每个日志事件都可以定向到此流。这不仅可以整合日志数据,还可以确保 Fluentd 具有单个端点来提取数据。
-
要创建流,请参阅创建流。
-
导航到 Stream Pool 并从流池中记下 Stream Name 、 Bootstrap Server 和 username 并为用户生成 auth token 。有关更多信息,请参见 auth token 。
我们将在 Fluentd 配置文件中需要所有这些文件。
-
-
创建 OCI Connector Hub 。
OCI Connector Hub 作为编排器,将日志从各种服务路由到流。借助 OCI Connector Hub,您可以定义连接器,将日志从具有审计日志、服务日志和定制日志的 OCI 日志记录服务中移动,并将其定向到流。要创建连接器集线器,请输入以下信息。
- 源:选择日志记录。
- 目标:选择流处理(选择在步骤 2 中创建的流)。
- 选择自动创建策略以生成所需的 OCI IAM 策略。
有关更多信息,请参见 Creating a Connector with a Logging Source 。
任务 2:安装和配置 Fluentd
随着流启动和运行,现在是设置 Fluentd 的时候了。此处的目的是在 OCI Compute 实例上部署 Fluentd,并将其配置为使用流中的日志。
为什么要使用 OCI Compute 实例?可以将其视为弥合 OCI 日志与 Elastic Cloud 之间的鸿沟的中介。Fluentd 将在其中运行、从流中摄取数据并将其中继到 Elastic。
通过 SSH 访问实例并使用 Treasure Data 程序包管理器安装 Fluentd。
curl -fsSL https://toolbelt.treasuredata.com/sh/install-redhat-fluent-package5-lts.sh | sh
验证是否已安装 Fluentd 的版本。
fluentd --version
注:如果在 OCI 中启动计算实例,请确保禁用自定义日志的附加组件。
任务 3:将插件安装到 Kafka 和 Elasticsearch
现在 Fluentd 已经准备好了,它需要配备插件。在这个架构中,Fluentd 既是流数据的消费者,又是 Elasticsearch 的转发者。这需要安装两个密钥插件:
-
Kafka 插件:允许 Fluentd 使用 OCI 流中的数据。
-
Elasticsearch 插件:将日志数据转发到 Elasticsearch。
运行以下命令以安装两个插件。
fluent-gem install fluent-plugin-kafka fluent-plugin-elasticsearch
任务 4:使用 stdout
验证输出日志
在将日志转发到 Elasticsearch 之前,最好验证日志摄取流是否正常工作。这就是 stdout
进入的地方。在将数据发送到 Elastic 之前,它可确保数据从流中正确流动。
-
要实现这一点,请更新位于
/etc/fluent/fluentd.conf
的 Fluentd 配置。<source> @type kafka_group brokers <stream_endpoint>:9092 topics <stream_topic> format json username <username> password <password> ssl_ca_cert /etc/fluent/kafka_chain.pem sasl_over_ssl true consumer_group fluentd-group <parse> @type json </parse> </source> <match **> @type stdout </match>
-
相应地将
<stream_endpoint>
和<stream_topic>
替换为 bootstrap server 和 stream name 。此外,将<username>
和<password>
替换为任务 1.2 中收集的 OCI 中的 Kafka 连接设置中的详细信息。用户名也需要附加域,如<tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.##############
。注:
-
ssl_ca_cert
应是 PEM 格式的完整证书链,其中应包括服务器证书 (OCI Streaming certs)、中间证书和根证书。 -
要与 OCI Streaming 建立可信的 TLS 连接,请首先使用
openssl
命令提取服务器和中间证书:openssl s_client -showcerts -connect cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092 -servername cell-1.streaming.us-ashburn-1.oci.oraclecloud.com < /dev/null | \\nsed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' > kafka_chain.pem
。 -
这将证书链保存到名为
kafka_chain.pem
的文件。接下来,从 DigiCert Root Certificates 页面以 PEM 格式下载 OCI Streaming 使用的可信根证书 DigiCert Global Root G2,并将其另存为root.pem
。最后,使用cat root.pem >> kafka_chain.pem
命令将根证书附加到链文件中。 -
这导致
kafka_chain.pem
中有一个完整的证书链,可供 TLS 客户端使用,以实现与 OCI Streaming 的安全连接。
-
-
运行以下命令以启动 Fluentd 并监视输出。
$ sudo systemctl restart fluentd.service $ sudo systemctl status fluentd.service $ sudo cat /var/log/fluent/fluentd.log
如果一切正常,流中的日志将开始显示在 Fluentd 日志中。这可确保数据管道在向前移动之前按预期运行。
任务 5:将日志转发到弹性云
通过管道验证,是时候重新配置 Fluentd 将日志转发到 Elastic Cloud。此任务将 Fluentd 从简单的日志使用者转换为成熟的日志发送者。
-
更新配置以包括 Elastic 输出插件。
<source> @type kafka_group brokers <stream_endpoint>:9092 topics <stream_topic> format json username <tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.iad.########## password <password> ssl_ca_cert /etc/fluent/kafka_chain.pem sasl_over_ssl true consumer_group fluentd-group </source> <match **> @type elasticsearch cloud_id ########### cloud_auth 'elastic:##########' logstash_prefix fluentd logstash_format true index_name fluentd </match>
注:云 ID 是分配给弹性云上托管的 Elasticsearch 集群的唯一 ID。所有部署都将自动获得云 ID。要查找弹性用户的云 ID 和密码,请参阅查找云 ID 。
-
重新启动 Fluentd 以应用更改。
sudo systemctl restart fluentd.service
任务 6:在 Elasticsearch 中验证和解锁洞察
日志已成功流式传输到 Elastic,数据被索引和结构化,以实现高效查询。Elastic 的全文搜索引擎可让您实时搜索、聚合和可视化数据。
创建数据视图至关重要。此数据视图用作组织日志数据的结构化层,使您能够无缝地探索和提取有价值的洞察。有关详细信息,请参阅数据视图。
相关链接
确认
- 作者 - Chaitanya Chintala(云安全顾问)Gautam Mishra(首席云架构师)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Use Fluentd to Ingest Oracle Cloud Infrastructure Logs into Elastic Cloud
G35563-01
Copyright ©2025, Oracle and/or its affiliates.