ノート:

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などのツールを使用すると、対話型ダッシュボードでログをビジュアル化し、生のログ・データを直感的なビジュアル表現に変換して、アプリケーション・パフォーマンスのモニタリング、セキュリティの脅威の検出、業務上の問題の効果的なトラブルシューティングを支援できます。

次の図に示すように、ソリューション・アーキテクチャの概要について説明します。

「編集」ボタン

目的

前提条件

タスク1: ログ・ストリーミングのためのOCIの準備

  1. OCIロギングでのログの有効化

    このチュートリアルでは、監査ログを使用します。ユースケースに基づいてサービス・ログまたはカスタム・ログを有効にすることもできます。詳細は、ロギングの概要を参照してください。

  2. Create a Stream.

    Fluentdがログの出荷を開始する前に、データには一貫したソースが必要です。OCIでは、そのソースはKafka互換のストリームです。ログの一元化されたデータ・パイプラインとしてストリームを設定するとします。コンピュート・インスタンスからネットワーキング・サービスまで、OCI内で生成されたすべてのログ・イベントをこのストリームに送信できます。これにより、ログ・データが統合されるだけでなく、Fluentdにデータをプルする単一のエンドポイントがあることも保証されます。

    1. ストリームを作成するには、「ストリームの作成」を参照してください。

      「編集」ボタン

    2. 「ストリーム・プール」に移動し、ストリーム・プールから「ストリーム名」「ブートストラップ・サーバー」「ユーザー名」をノートにとり、ユーザーの認証トークンを生成しました。詳細は、auth tokenを参照してください。

      これらはすべてFluentd構成ファイルで必要になります。

      「編集」ボタン

  3. 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つのキー・プラグインをインストールする必要があります。

次のコマンドを実行して、両方のプラグインをインストールします。

fluent-gem install fluent-plugin-kafka fluent-plugin-elasticsearch

タスク4: stdoutを使用した出力ログの確認

ログをElasticsearchに転送する前に、ログの取込みフローが機能していることを確認することをお薦めします。ここで、stdoutが入ります。データをElasticに送信する前に、ストリームからデータが正しく流れていることを確認します。

  1. これを実装するには、/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>
    
  2. <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クライアントが使用できるようになります。

  3. 次のコマンドを実行して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を単純なログ・コンシューマから本格的なログ・シッパーに変換します。

  1. 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の検索を参照してください。

  2. Fluentdを再起動して、変更を適用します。

    sudo systemctl restart fluentd.service
    

タスク6: Elasticsearchでのインサイトの検証およびロック解除

ログは正常にElasticにストリーミングされ、効率的な問合せのためにデータが索引付けおよび構造化されます。Elasticの全文検索エンジンを使用すると、データをリアルタイムで検索、集計およびビジュアル化できます。

データ・ビューを作成することが不可欠です。このデータ・ビューは、ログ・データを編成する構造化されたレイヤーとして機能し、貴重なインサイトをシームレスに探索および抽出できます。詳細は、データ・ビューを参照してください。

「編集」ボタン

「編集」ボタン

確認

その他の学習リソース

docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。