附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 其使用 Oracle Cloud Infrastructure 證明資料、租用戶以及區間的範例值。完成實驗室時,請將這些值替代為雲端環境特定的值。
使用 Fluentd 將 Oracle Cloud Infrastructure 日誌攝取到 Elastic Cloud
簡介
Oracle Cloud Infrastructure (OCI) 提供全方位的記錄功能,但需要強大的記錄寄件者,才能將這些記錄與 Elastic 等外部系統整合。有許多熱門的開源資料收集器,可讓您統一資料收集和使用。
如需詳細資訊,請參閱:使用日誌託運人將 Oracle Cloud Infrastructure 登入第三方 SIEM 平台和使用向量將 Oracle Cloud Infrastructure 日誌傳送至 New Relic ,以判斷哪個解決方案最適合您的使用案例。
在本教學課程中,我們將逐步說明如何使用 Fluentd 作為日誌託運人,將 OCI 日誌擷取至 Elastic Cloud 的詳細作業。
Fluentd
Fluentd 是由 Treasure Data 開發的強大開放原始碼資料收集器,現為 CNCF 的一部分,旨在簡化不同系統的日誌資料收集、轉換及分配。它扮演統一的記錄層,可收集各種來源的記錄、使用剖析器和篩選外掛程式處理記錄,並將它們轉送至 Elastic、Kafka 或雲端儲存等目的地。Fluentd 可以部署為運算執行處理上的日誌託運人,以從 OCI 日誌記錄服務擷取日誌,並傳遞給 Elastic 以強化監控和分析。
Fluentd 將日誌轉送至 Elastic 之後,就會解除鎖定日誌資料的實際功能。彈性的安全性會編製索引並以結構化格式儲存日誌資料,藉此提供強大的搜尋、分析及視覺化功能。透過利用 Elastic 的全文搜尋引擎,使用者可以即時查詢和彙總日誌、發現模式、識別異常,並產生可行的洞察力。此外,借助 Kibana 之類的工具,可以透過互動式儀表板視覺化日誌、將原始日誌資料轉換為直覺式的視覺表示法,以協助監控應用程式效能、偵測安全威脅,以及有效解決作業問題。
讓我們看看解決方案架構的高階表現法,如下圖所示。
目標
-
使用 OCI Connector Hub 設定從 OCI 日誌記錄至 OCI 串流的日誌轉送管線。
-
安裝並設定 Fluentd,以從 OCI Streaming 安全地使用。
-
使用具備結構化 JSON 的 Fluentd 輸入 Kafka 外掛程式,將日誌轉送至 Elastic。
必要條件
-
可存取 Elastic Security 主控台的 Elastic Cloud 帳戶。如需詳細資訊,請參閱 SIEM for Elastic 。
-
佈建用於 Fluentd 安裝的 Linux 型伺服器,具備強大的網路連線能力,可與您的 Elastic 環境無縫通訊。
-
OCI 中的使用者必須具備 OCI Streaming、OCI Connector Hub 及 OCI Logging 服務的必要原則,才能管理資源。如需所有服務的原則參照詳細資訊,請參閱原則參照。
工作 1:準備用於日誌串流的 OCI
-
在 OCI 日誌記錄中啟用日誌。
在本教學課程中,我們將使用稽核日誌。您也可以根據使用案例啟用服務或自訂日誌。如需詳細資訊,請參閱記錄概觀。
-
建立串流。
Fluentd 開始出貨日誌之前,資料需要一致的來源。在 OCI 中,該來源是與 Kafka 相容的串流。想像將串流設定為日誌的集中式資料管線。OCI 內從運算執行處理產生到網路服務的每個日誌事件都可以導向此串流。這不僅整合了日誌資料,也確保 Fluentd 具有單一端點,可以從中提取資料。
-
若要建立串流,請參閱建立串流。
-
瀏覽至串流集區,然後記下串流集區中的串流名稱、啟動安裝伺服器、使用者名稱,並為使用者產生認證權杖。如需詳細資訊,請參閱 auth token 。
我們需要 Fluentd 組態檔中的所有這些項目。
-
-
建立 OCI Connector Hub 。
OCI Connector Hub 的作用是協調器,可將日誌從各種服務遞送至串流。使用 OCI Connector Hub,您可以定義將日誌從具有稽核日誌、服務日誌和自訂日誌的 OCI 日誌記錄服務移動的連接器,並將其導向串流。若要建立連線器中心,請輸入下列資訊。
- 來源:選取記錄日誌。
- 目的地:選取 Streaming (選取步驟 2 中建立的串流)。
- 選取自動建立原則即可產生必要的 OCI IAM 原則。
如需詳細資訊,請參閱使用記錄來源建立連線器。
任務 2:安裝與設定 Fluentd
隨著串流的啟動和執行,設定 Fluentd 是時候了。在此,目標是將 Fluentd 部署在 OCI Compute 執行處理上,並將其設定為使用串流中的日誌。
為什麼選擇 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:將 Plugin 安裝到 Kafka 和 Elasticsearch
現在,Fluentd 已就緒,它需要配備外掛程式。在此架構中,Fluentd 扮演串流資料的消費者,以及 Elasticsearch 的轉寄者。這需要安裝兩個金鑰的外掛程式:
-
Kafka Plugin:讓 Fluentd 能夠使用 OCI 串流的資料。
-
Elasticsearch Plugin:將日誌資料轉送至 Elasticsearch。
執行下列命令來安裝這兩個 Plugin。
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>
取代為啟動安裝伺服器和串流名稱。在任務 1.2 中收集的 OCI 中,也將<username>
和<password>
取代為 Kafka 連線設定值的詳細資訊。使用者名稱也需要附加網域,例如<tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.##############
。注意:
-
ssl_ca_cert
必須是 PEM 格式的完整憑證鏈結,其中應包含伺服器憑證 (OCI 串流憑證)、中繼憑證和根憑證。 -
若要與 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
的檔案。接著,從 PEM 格式的 DigiCert 根憑證頁面,下載 OCI Streaming 使用之信任根憑證的 DigiCert 全域根 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:將日誌轉送至 Elastic Cloud
驗證管線後,您就可以重新設定 Fluentd,將日誌轉送至 Elastic Cloud。此作業會將 Fluentd 從簡單的日誌用戶轉換成完整的日誌託運人。
-
更新組態以包含 Elastic 輸出 Plugin。
<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 是指派給 Elastic Cloud 上代管 Elasticsearch 叢集的唯一 ID。所有部署都會自動取得雲端 ID。若要尋找您彈性使用者的雲端 ID 和密碼,請參閱尋找您的雲端 ID 。
-
重新啟動 Fluentd 以套用變更。
sudo systemctl restart fluentd.service
工作 6:驗證及解除鎖定 Elasticsearch 中的洞察力
日誌已順利串流至 Elastic,資料會編製索引並加以結構化,以提高查詢效率。Elastic 的全文搜尋引擎可讓您即時搜尋、彙總及視覺化資料。
建立資料檢視至關重要。此資料檢視可作為組織日誌資料的結構化層,可讓您以無縫接軌的方式探索及擷取寶貴的洞察分析。如需詳細資訊,請參閱資料檢視。
相關連結
確認
- Authors - Chaitanya Chintala (雲端安全顧問) 首席雲端架構師 Gautam Mishra
其他學習資源
在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Use Fluentd to Ingest Oracle Cloud Infrastructure Logs into Elastic Cloud
G35564-01
Copyright ©2025, Oracle and/or its affiliates.