ノート:
- このチュートリアルでは、Oracle Cloudへのアクセス権が必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了したら、これらの値をクラウド環境に固有の値に置き換えてください。
Fluentdを使用したOracle Cloud InfrastructureログのElastic Cloudへの取込み
イントロダクション
Oracle Cloud Infrastructure(OCI)は包括的なロギング機能を提供しますが、これらのログをElasticなどの外部システムと統合するには、堅牢なログ配送業者が必要です。多くの一般的なオープンソース・データ・コレクタにより、データの収集と消費を統合できます。
詳細は、ログ・シッパーを使用したサード・パーティSIEMプラットフォームへのOracle Cloud Infrastructureログの取込みおよびVectorを使用したOracle Cloud InfrastructureログのNew Relicへの送信を参照して、ユースケースに最適なソリューションを判断してください。
このチュートリアルでは、Elastic CloudにOCIログを取り込むためのログ・シッパーとしてFluentdを使用するための詳細なタスクについて説明します。
Fluentd
Fluentdは、Treasure Dataによって開発された堅牢でオープンソースのデータ・コレクタであり、現在はCNCFの一部であり、様々なシステム間でのログ・データの収集、変換および分散を合理化するように設計されています。多様なソースからログを収集し、パーサー・プラグインとフィルタ・プラグインを使用して処理し、Elastic、Kafka、クラウド・ストレージなどの宛先に転送する統合ロギング・レイヤーとして機能します。Fluentdは、コンピュート・インスタンスにログ・シッパーとしてデプロイして、OCI Loggingサービスからログを取得し、Elasticに配信することで、監視と分析を強化できます。
FluentdがログをElasticに転送すると、ログ・データの実際のパワーがロック解除されます。エラスティック・セキュリティは、ログ・データを構造化された形式で索引付けおよび格納し、強力な検索、分析および可視化機能を有効にします。Elasticの全文検索エンジンを活用することで、ユーザーはログをリアルタイムでクエリおよび集計し、パターンを発見し、異常を特定し、実用的なインサイトを生成できます。また、Kibanaなどのツールを使用すると、対話型ダッシュボードでログをビジュアル化し、生のログ・データを直感的なビジュアル表現に変換して、アプリケーション・パフォーマンスのモニタリング、セキュリティの脅威の検出、業務上の問題の効果的なトラブルシューティングを支援できます。
次の図に示すように、ソリューション・アーキテクチャの概要について説明します。
目的
-
OCIコネクタ・ハブを使用して、OCIロギングからOCIストリーミングへのログ転送パイプラインを設定します。
-
Fluentdをインストールして構成し、OCI Streamingから安全に消費します。
-
構造化されたJSONでFluentdの入力Kafkaプラグインを使用して、ログをElasticに転送します。
前提条件
-
Elastic SecurityコンソールにアクセスできるElastic Cloudアカウント。詳細は、SIEM for Elasticを参照してください。
-
Fluentdインストール用にプロビジョニングされたLinuxベースのサーバーで、堅牢なネットワーク接続により、Elastic環境とシームレスに通信できます。
-
OCIのユーザーは、リソースを管理するために、OCIストリーミング、OCIコネクタ・ハブおよびOCIロギング・サービスに必要なポリシーを持っている必要があります。すべてのサービスのポリシー参照の詳細は、ポリシー・リファレンスを参照してください。
タスク1: ログ・ストリーミングのためのOCIの準備
-
OCIロギングでのログの有効化。
このチュートリアルでは、監査ログを使用します。ユースケースに基づいてサービス・ログまたはカスタム・ログを有効にすることもできます。詳細は、ロギングの概要を参照してください。
-
Create a Stream.
Fluentdがログの出荷を開始する前に、データには一貫したソースが必要です。OCIでは、そのソースはKafka互換のストリームです。ログの一元化されたデータ・パイプラインとしてストリームを設定するとします。コンピュート・インスタンスからネットワーキング・サービスまで、OCI内で生成されたすべてのログ・イベントをこのストリームに送信できます。これにより、ログ・データが統合されるだけでなく、Fluentdにデータをプルする単一のエンドポイントがあることも保証されます。
-
ストリームを作成するには、「ストリームの作成」を参照してください。
-
「ストリーム・プール」に移動し、ストリーム・プールから「ストリーム名」、「ブートストラップ・サーバー」、「ユーザー名」をノートにとり、ユーザーの認証トークンを生成しました。詳細は、auth tokenを参照してください。
これらはすべてFluentd構成ファイルで必要になります。
-
-
OCIコネクタ・ハブの作成。
OCI Connector Hubは、様々なサービスからストリームにログをルーティングするオーケストレータとして機能します。OCIコネクタ・ハブを使用すると、監査ログ、サービス・ログおよびカスタム・ログを持つOCIロギング・サービスからログを移動し、それらをストリームに転送するコネクタを定義できます。コネクタ・ハブを作成するには、次の情報を入力します。
- ソース: 「ロギング」を選択します。
- 宛先: 「ストリーミング」を選択します(ステップ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: KafkaおよびElasticsearchへのプラグインのインストール
Fluentdの準備ができたので、プラグインを装備する必要があります。このアーキテクチャでは、Fluentdはストリームデータの消費者とElasticsearchへの転送者の両方として機能します。これには、次の2つのキー・プラグインをインストールする必要があります。
-
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>
を、それに応じてブートストラップ・サーバーおよびストリーム名に置き換えます。また、<username>
および<password>
を、タスク1.2で収集されたOCIのKafka接続設定の詳細に置き換えます。ユーザー名には、<tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.##############
のようにドメインも追加する必要があります。ノート:
-
ssl_ca_cert
は、サーバー証明書(OCIストリーミング証明書)、中間証明書およびルート証明書を含むPEM形式の完全な証明書チェーンである必要があります。 -
OCIストリーミングで信頼できる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
という名前のファイルに保存されます。次に、OCIストリーミングで使用される信頼できるルート証明書をDigiCertグローバル・ルートG2証明書をDigiCertルート証明書ページからPEM形式でダウンロードし、root.pem
として保存します。最後に、cat root.pem >> kafka_chain.pem
コマンドを使用して、チェーン・ファイルにルート証明書を追加します。 -
これにより、完全な証明書チェーンが
kafka_chain.pem
になり、OCIストリーミングとの安全な接続のためにTLSクライアントが使用できるようになります。
-
-
次のコマンドを実行してFluentdを起動し、出力を監視します。
$ sudo systemctl restart fluentd.service $ sudo systemctl status fluentd.service $ sudo cat /var/log/fluent/fluentd.log
すべてが機能している場合は、ストリームからのログがFluentdログに表示され始めます。これにより、データ・パイプラインが期待どおりに機能してから前進します。
タスク5: Elastic Cloudへのログの転送
パイプラインが検証されたら、Elastic Cloudにログを転送するようにFluentdを再構成します。このタスクは、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は、Elastic Cloud上でホストされるElasticsearchクラスタに割り当てられる一意のIDです。すべてのデプロイメントでクラウドIDが自動的に取得されます。エラスティック・ユーザーのクラウドIDおよびパスワードを検索するには、クラウドIDの検索を参照してください。
-
Fluentdを再起動して、変更を適用します。
sudo systemctl restart fluentd.service
タスク6: Elasticsearchでのインサイトの検証およびロック解除
ログは正常にElasticにストリーミングされ、効率的な問合せのためにデータが索引付けおよび構造化されます。Elasticの全文検索エンジンを使用すると、データをリアルタイムで検索、集計およびビジュアル化できます。
データ・ビューを作成することが不可欠です。このデータ・ビューは、ログ・データを編成する構造化されたレイヤーとして機能し、貴重なインサイトをシームレスに探索および抽出できます。詳細は、データ・ビューを参照してください。
関連リンク
確認
- 著者 - Gautam Mishra (プリンシパル・クラウド・アーキテクト)、Chaitanya Chintala (クラウド・セキュリティ・アドバイザ)
その他の学習リソース
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
G35560-01
Copyright ©2025, Oracle and/or its affiliates.