OCI Logging AnalyticsによるKubernetesログ・データの監視

Kubernetesは、コンテナ化されたワークロードを自動的にデプロイおよびスケーリングするための、非常に堅牢で非常にカスタマイズ可能なプラットフォームを提供します。この環境全体の監視およびトラブルシューティング・システムを構築することは非常に困難な作業であり、開発チームやITチームから貴重な時間を奪う可能性があります。堅牢でカスタマイズ可能でスケーラブルな補完的な監視ソリューションがないため、多数のKubernetesベースのイニシアチブが機能しなくなり、自動的に導入可能になります。Oracle Cloud Infrastructure Logging Analyticsは、基礎となるインフラストラクチャ、Kubernetesプラットフォーム、クラウドネイティブ・アプリケーションにワンクリックのエンドツーエンドのKubernetesモニタリング・ソリューションを提供することで、このモニタリングのギャップを埋めます。詳細な調査および分析のために、オンプレミスのKubernetesクラスタおよびOracle Cloud Infrastructure Kubernetes Engine (Kubernetes EngineまたはOKEとも呼ばれる)からOracle Cloud Infrastructure Logging Analyticsにログ・データを送信します。

Kubernetesベースの環境は3つの層に分割でき、それぞれがビジネス・ニーズによって駆動される数多くの継続的に進化するコンポーネントで構成されています。

  • インフラストラクチャ層: ネットワーキング・リソース、コンピュート・インスタンス、Kubernetesノード・ホストなど、多数のコンポーネントが含まれます。
  • Kubernetesプラットフォーム層: kubernetesプラットフォームを強化するネットワーク、kubeletサービス、DNSなどの様々なKubernetesサービスが含まれています。
  • アプリケーション層: 様々なテクノロジ、データベースおよびアプリケーションが含まれます。

アーキテクチャ

このアーキテクチャでは、Oracle Cloud Infrastructure Logging Analyticsを使用して、Kubernetesプラットフォームおよびクラウド・ネイティブ・アプリケーションを監視する方法を示します。

次の図は、単一のOracle Cloud Infrastructure (OCI)リージョン内のKubernetesクラスタのサンプル・トポロジです。インフラストラクチャ層を示し、2つ目の図はkubernetes層とアプリケーション層を示しています。

kubernetes-master-worker-nodes.pngの説明が続きます
図kubernetes-master-worker-nodes.pngの説明

kubernetes-master-worker-nodes-oracle.zip

次の図は、OCI Logging Analyticsを使用したオンプレミスKubernetesクラスタおよびOracle Cloud Infrastructure Kubernetes Engine (Kubernetes EngineまたはOKEとも呼ばれる)のKubernetesモニタリングを示しています。このソリューションは、Kubernetesクラスタの様々なログをOCI Logging Analyticsに提供し、収集されたログに加えて豊富な分析を提供します。即時利用可能な構成を変更することで、ログ収集をカスタマイズできます。

k8s-oke-monitoring.pngの説明が続きます
図k8s-oke-monitoring.pngの説明

k8s-oke-monitoring-oracle.zip

このアーキテクチャには、次のコンポーネントがあります。

  • Tenancy

    テナンシは、Oracle Cloud Infrastructureのサインアップ時にOracle Cloud内でOracleによって設定される、セキュアで分離されたパーティションです。テナンシ内のOracle Cloudでリソースを作成、編成および管理できます。テナンシは、会社または組織と同義です。通常、会社は1つのテナンシを持ち、そのテナンシ内の組織構造を反映します。通常、1つのテナンシは1つのサブスクリプションに関連付けられ、1つのサブスクリプションには通常、1つのテナンシのみが含まれます。

  • リージョン

    Oracle Cloud Infrastructureリージョンとは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立し、長距離の場合は(複数の国または大陸にまたがって)分離できます。

  • コンパートメント

    コンパートメントは、Oracle Cloud Infrastructureテナンシ内のリージョン間論理パーティションです。Oracle Cloudリソースの使用割当てを編成、制御および設定するには、コンパートメントを使用します。特定のコンパートメントでは、アクセスを制御し、リソースの権限を設定するポリシーを定義します。

  • 仮想クラウド・ネットワーク(VCN)およびサブネット

    VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェア定義のネットワークです。従来のデータ・センター・ネットワークと同様に、VCNsではネットワーク環境を制御できます。VCNには重複しない複数のCIDRブロックを含めることができ、VCNの作成後にそれらを変更できます。VCNをサブネットにセグメント化して、そのスコープをリージョンまたは可用性ドメインに設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックにもプライベートにもできます。

  • ロード・バランサ

    Oracle Cloud Infrastructure Load Balancingサービスは、単一のエントリ・ポイントからバックエンドの複数のサーバーへの自動トラフィック分散を提供します。

  • サービス・ゲートウェイ

    サービス・ゲートウェイは、VCNからOracle Cloud Infrastructure Object Storageなどの他のサービスへのアクセスを提供します。The traffic from the VCN to the Oracle service travels over the Oracle network fabric and does not traverse the internet.

  • ログ・アナリティクス

    Oracle Cloud Infrastructure (OCI) Logging Analyticsは、27を超えるリージョンで使用可能なフルマネージドのSaaSリージョナル・サービスで、オンプレミス、OCIまたはサード・パーティ・クラウドで実行されているITコンポーネントからのログの収集、索引付け、エンリッチメント、問合せ、ビジュアライゼーションおよびアラートを提供します。

  • ログ・分析ソース

    ログ・アナリティクス・ソースは、解析、抽出、ラベル付け、データ・マスキングおよびその他のエンリッチメントの仕様を提供する構成リソースで、ログが分析および監視のために適切に取り込まれて索引付けされるようにします。このアーキテクチャでは、Kubernetesサービス、アプリケーションおよびオブジェクトに対して30を超える事前定義済ソースを使用します。これらのソースは継続的に拡張され、より深い分析機能が提供されます。

  • Kubernetesシステム・ポッド

    Kubernetesシステム・ポッドは、Kubernetesで作成および管理できる小さなデプロイ可能なコンピューティング・ユニットです。ポッドは、共有ストレージおよびネットワーク・リソースを含む1つ以上のコンテナであり、コンテナを実行するためのルールです。

  • ユーザー・ポッド

    Kubernetesクラスタで起動されるアプリケーション。STDOUT/STDERRを書き込むアプリケーション・ポッドからのすべてのログは、通常、/var/log/containers/の下で使用できます。カスタム・ログ・ハンドラを持つアプリケーションは、ログを異なる方法でルーティングできますが、通常は(ボリュームを介して)ノードで使用できます。

  • コントロール・プレーン・サービスおよびポッド

    Kubernetesプラットフォーム・コントロール・プレーン・サービスおよびポッド。コントロール・プレーンによって、Kubernetesクラスタ内のワーカー・ノードおよびポッドが管理されます。ワーカー・ノードは、コンテナ化されたアプリケーションを実行します。各クラスタには、少なくとも1つのワーカー・ノードがあります。ワーカー・ノードは、アプリケーション・ワークロードのコンポーネントであるポッドをホストします。

  • ノードOSサービス

    Kubernetesがインストールされているインスタンスで実行されているLinuxサービス。ログはOSサービスで収集されます。

  • ログおよびオブジェクト・コレクタ・ポッド

    ログおよびオブジェクト・コレクタ・ポッドは、レプリカ・セット、FluentDおよびデーモン・セットで構成されます。

    • FluentDコレクタ

      FluentDは、データ・ソースとバックエンド・システム間の統合ロギング・レイヤーを提供するオープンソース・データ・コレクタです。これにより、構築データ処理パイプラインの統合データ収集と消費が可能になります。このアーキテクチャでは、デーモン・セットとして実行されるコンテナ化されたFluentDコンテナと、kubernetesクラスタで設定されたReplicatを使用します。ロギング分析fluentd出力プラグインを使用して、ログをOCIロギング・アナリティクスにアップロードします。

    • ログ・アナリティクスのFluentDプラグイン

      FluentDコレクタによって収集されたログをアップロードまたは取り込むためにテナンシのOCI Logging Analyticsサービスに接続するFluentD出力プラグイン。

    • Kubernetesオブジェクト

      Kubernetesオブジェクトは、Kubernetesシステム内の永続的なエンティティです。Kubernetesは、これらのエンティティを使用してクラスタの状態を表します。このアーキテクチャでは、履歴分析およびトラブルシューティングのログとして、次のkubernetesオブジェクトの状態が収集されます。

    • Kubernetesデーモン・セット

      Kubernetes DaemonSetは、Kubernetes上で実行されるワークロードの一種であり、すべての(または一部の)ノードがポッドのコピーを実行することを保証します。ノードがクラスタに追加されると、ポッドが追加されます。ノードがクラスタから削除されると、それらのポッドはガベージ・コレクションされます。

    • Kubernetesレプリカ・セット

      Kubernetes ReplicaSetは、Kubernetesで実行されるワークロードの一種です。常に安定した一連のレプリカ・ポッドが稼働し続けます。そのため、多くの場合、指定した数の同一のポッドの可用性を保証するために使用されます。

  • Kubernetes Engine

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes EngineまたはOKE)は、コンテナ化されたアプリケーションをクラウドにデプロイするために使用できる、完全に管理されたスケーラブルで可用性の高いサービスです。アプリケーションで必要なコンピュート・リソースを指定すると、KubernetesエンジンがそれらをOracle Cloud Infrastructureの既存のテナンシにプロビジョニングします。OKEは、Kubernetesを使用して、ホストのクラスタにわたるコンテナ化されたアプリケーションのデプロイメント、スケーリングおよび管理を自動化します。

  • サービス・コネクタ

    Service Connector Hubは、クラウド・メッセージ・バス・プラットフォームです。これを使用して、Oracle Cloud Infrastructureのサービス間でデータを移動できます。データはサービス・コネクタを使用して移動されます。サービス・コネクタは、移動対象のデータを含むソース・サービス、データに対して実行するタスク、および指定したタスクの完了時にデータを配信する必要があるターゲット・サービスを指定します。このアーキテクチャでは、ネットワークおよびロード・バランサ・ログを収集するために1つのサービス・コネクタがプロビジョニングされます。

  • OCIサービス

    Oracle Cloud Infrastructure (OCI)サービスは、可用性が高く、一貫して高パフォーマンスな環境で幅広いアプリケーションを構築および実行できるクラウド・サービスのプラットフォームです。

  • サービスおよび監査ログ

    サービスおよび監査ログは、OCIロギング・サービスで取得されます。OCIロギングは、サービス・コネクタを介してVCNおよびロード・バランサ・サービス・ログにアクセスするために使用される、スケーラビリティの高いフルマネージド・サービスです。

デフォルトでは、Kubernetesシステム・サービス・ログおよびKubernetesオブジェクト・データが収集されます。

Oracle Cloud Infrastructure Kubernetes Engineには、それぞれに異なる職責があり、デプロイメントまたはDaemonSetsとしてクラスタ内の1つ以上のノードで実行される組込みサービスがあります。

Kubernetesシステム・サービス Linuxシステムサービス Kubernetes Control Plane Kubernetesオブジェクト(デフォルト: 15分ごと) カスタム・アプリケーション・ログ
  • Kube Proxy
  • Kube Flannel
  • Kubelet
  • CoreDNS
  • CSI Node Driver
  • DNS Autoscaler
  • Cluster Autoscaler
  • Proxymux Client
  • Syslog
  • セキュア・ログ
  • Cronログ
  • メール・ログ
  • 監査ログ
  • Ksplice Uptrackログ
  • Yumログ
  • Kube API Server
  • Kube Scheduler
  • Kube Controller Manager
  • Cloud Controller Manager
  • etcd
  • Nodes
  • Namespaces
  • Pods
  • DaemonSets
  • Deployments
  • ReplicaSets
  • Events
  • クラスタを実行しているすべてのカスタム・アプリケーション・ログが収集されます。この動作のカスタマイズについては、「推奨」を参照してください。

ノート:

Kubernetesコントロール・プレーン・ログは、OCI Kubernetes Engine (OKEとも呼ばれる)によって公開されないため、即時利用可能なコレクションの一部としてカバーされません。OKE以外のKubernetesクラスタからコントロール・プレーン・ログを有効にできます。

レコメンデーション

次の推奨事項を開始点として使用します。お客様の要件は、ここで説明するアーキテクチャとは異なる場合があります。

  • ログ・グループ

    複数のログ・グループを定義して、異なるチームへの書込みアクセス権限を提供し、機密データの共有を回避します。ログ・グループは、Oracle E-Business Suite、データベース、OCIインフラストラクチャ、ホスト・ログに基づくことができます。

  • Cost Management

    Oracle Cloud Infrastructure(OCI)Logging Analyticsサービスは、アクティブおよびアーカイブ・ストレージ内のデータのボリュームに対して課金されます。日常的な問題のトラブルシューティングを可能にし、異常検出、パターン検出、その他のML機能のメリットを得るには、90日間のアクティブなストレージ期間を使用し、90日より古いログをアーカイブ・ストレージに移動することをお薦めします。格納されたアーカイブからのログは、オンデマンドで迅速にリコールできます。

  • FluentDマルチワーカー

    時間依存ログのマルチワーカー・モードでFluentDを構成します。

  • カスタム・アプリケーション・ログ

    このソリューションは、Kubernetesクラスタで実行されているアプリケーションによって生成されたすべてのログを自動的に取得します。デフォルトでは、これらのログはKubernetes Generic Container Logsログ・ソースにマップされます。必須フィールドを抽出し、問題ラベルをログに添付するには、アプリケーション・ログの特定のパーサー、ソースおよびエンリッチメントをOracle Cloud Infrastructure Logging Analyticsで作成する必要があります。

  • 認証

    このアーキテクチャでは、インスタンス・プリンシパルおよびOracle Cloud Infrastructure configファイル・ベースの認証がサポートされます。Oracle Cloud Infrastructure Kubernetes Engine (OKE)では、インスタンス・プリンシパル・ベースの認証をお薦めします。

考慮事項

このリファレンス・アーキテクチャをデプロイする場合は、次の点を考慮してください。

  • パフォーマンス

    問合せパフォーマンスは、フィルタ、グループ化などの操作の時間範囲および数に基づきます。問合せのパフォーマンスを向上させるには、取込み時に特定のラベルおよびフィールドでログをエンリッチすることをお薦めします。これは、IT運用の継続的な改善の一部です。

  • セキュリティおよびロールベースのアクセス制御(RBAC)

    ログ・ソース定義をカスタマイズして、PIIデータをフィルタし、ジオロケーション・エンリッチメントを有効にします。

  • 可用性

    Oracle Cloud Infrastructure Logging Analyticsは、フルマネージドの高可用性SaaSサービスです。

デプロイ

Oracle Cloud Infrastructure Logging Analytics DaemonSetsおよびReplicaSetsをデプロイするためのKubernetesマニフェストおよびhelmチャートは、GitHubにあります。

  1. GitHubに移動します。
  2. リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
  3. READMEドキュメントの手順に従います。

謝辞

作成者: Kumar Varun

協力者: Zubair Ansari、Kiran Palukuri、Santhosh Vuda