本文へスキップ

Kubernetesモニタリング

コンテナ仮想化技術は、Dockerの出現により大きく普及しました。そして、Dockerの利用が増えるにつれて、コンテナを上手く使いこなす方法や管理が必要になり、様々なコンテナオーケストレーションツールが登場しました。多くのコンテナオーケストレーションツールの中で、最も広く使用されているのは、Kubernetesです。

Kubernetesは、コンピューティングリソースを効率的に使用するためのスケジューリング機能、アプリケーションアップデートのためのデプロイ機能、その他コンテナに必要なストレージ、ネットワークなど、様々な機能を提供します。それ自体が巨大なプラットフォームであるKubernetesも、モニタリングは欠かせません。

ただし、Kubernetesのリソースが異なれば、必要なデータ収集方法も異なります。また、Kubernetesユーザーが異なれば、関心のある指標も異なります。さらに、単にデータを収集して一覧するだけでは、モニタリングの可視性は確保できません。様々なモニタリングニーズを満たし、問題の状況を直感的に検出できるUIが必要です。多くのユーザーが、WhaTapのKubernetesモニタリングソリューションを求める理由でもあります。

Kubernetesモニタリングとは?

コンテナ環境のアプリケーションはコンテナ化(Containerization)されます。また、Kubernetesは、コンテナ化されたアプリケーションをPodという単位でデプロイします。Kubernetesの最小デプロイ単位はコンテナではなくPodです。コンテナはPodに含まれており、1つのPodに異なる2つ以上のコンテナを含めることができます。そのため、Kubernetesモニタリングは、コンテナとPodの両方のモニタリングが必要です。WhaTapは、コンテナやPodから様々なモニタリングデータを収集し、別々のカテゴリに保存します。

カテゴリは、ユーザープロジェクトから収集するメトリクス(Metrics) データを区別する名前です。各カテゴリは、異なるタグとフィールドで構成されています。WhaTap Kubernetesのコンテナマップは、大きなコンテナビューとPodビューを提供し、ユーザーは、分析対象を選択することができます。

Kubernetesモニタリングの主な特長

  • Kubernetesベースの統合モニタリング

    マルチクラウドやハイブリッドクラウドをサポートし、Kubernetesのシステムの統合合モニタリングを提供します。

  • MSAにおけるサービスごとの呼び出し関係を分析

    Pod単位の分散アプリケーション環境では、トランザクションのAPI呼び出し関係を追跡します。

  • 相関関係を一目で把握

    Host、コンテナ、アプリケーションを一緒にモニタリングして「Root Cause Analysis」を解決することができます。

  • コンテナ化されたアプリケーションの詳細な分析

    コンテナに隠された、Java、Node.js、Pythonベースのアプリケーション分析に必要なヒットマップ、トレース機能を提供します。特に、モダンなアプリケーション環境に有効なマルチサービスダッシュボード、MSA分析、マルチトランザクション追跡まで、WhaTapで実行できます。

  • Container Mapによる統合的に柔軟な見える化を実現

    Kubernetesプラットフォームリソース情報とKubernetesで実行中のアプリケーションのメトリクス、イベント情報、ログを統合して提供します。一つのビューを共有しながら、インフラとアプリケーションの担当者間の円滑なコミュニケーションと様々な視点から見える化を確保できます。

  • リソースの詳細なモニタリングと使用量の状況確認

    コンテナとNodeのリソース使用量およびトレンド情報をダッシュボードに提供し、コンテナが複数のNodeで円滑に実行されるように管理できます。ユーザーは、WhaTapプロジェクト内にのコンテナまたはNodeの全体の一覧から始まり、個々の対象の詳細な状態まで表示し、コンテナとNodeを詳しく見ることができます。

  • マスターに接続する必要なく、メタ情報を参照可能

    主要リソースの基本メタ情報をContainer Map上で確認でき、別なマスターメタダッシュボードで各種コンポーネントの全体のメタ情報が一目で確認できます。コマンドベースで1つずつメタ情報を確認する必要がないので、時間を節約できます。

  • ログ管理の業務から離れ、ログ分析に集中

    コンテナの各種ログファイルや標準出力をリアルタイムで保存することで、ライフサイクルが一定でないコンテナ環境でもログを確認できます。コンテナに個別に接続する必要がない場合でも、アプリケーションによって生成された意味のある情報を含む、主要なコンテンツを分類およびインデックスを作成することで、ログ分析に集中できます。

モニタリング対象

Kubernetesモニタリングの対象は、KubernetesクラスターとKubernetes上で実行中のアプリケーションです。

  • Kubernetesクラスターモニタリング

    • 個別コンテナのCPU、Memory、Disk(Volume)、Network
    • Namespace、Deployment、ReplicaSet、Podなどのサービスを構成するKubernetesの構成要素
    • 個別Node(ホスト)の CPU、Memory、Disk、Network
  • Kubernetesで実行中のアプリケーションモニタリング:Java、Node.js、Pythonなど

次に説明するモニタリング手順も、クラスターモニタリングの手順とアプリケーションモニタリングの手順に分かれます。

モニタリング手順

Kubernetesクラスターモニタリング手順

  1. WhaTapモニタリングサービスでクラスタープロジェクトを作成してください。

WhaTapモニタリングサービス上に新しいKubernetes(Kubernetes) プロジェクトを作成する場合、そのプロジェクトは、クラスタープロジェクトです。次の文書を参照してください。

  1. Kubernetes環境内のマスターエージェント(whatap-master-agent) およびNodeエージェント(whatap-node-agent)をインストールしてください。次の文書を参照してください。

マスターエージェント、Nodeエージェントは、ユーザーのクラスター内でPod形式で実行します。

  1. (選択事項) クラスタープロジェクト内に多数のNamespaceが存在する場合、ユーザーは、WhaTapモニタリングサービスで各ネームスペース(Namespace) プロジェクトに分けることができます。次の文書を参照してください。
Tips

Kubernetes Namespaceは、複数のチームとユーザーが存在する環境で、1つのクラスター内のリソースグループを分離するためのメカニズムです。Kubernetesクラスター内のNamespace一覧は、kubectl get namespaceコマンドを使用して確認できます。

Kubernetesのアプリケーションモニタリング手順

コンテナ内で実行中のアプリケーションをモニタリングするためのマイクロアプリケーションエージェントをインストールします。対応されているマイクロアプリケーションはJava、Node.js、Pythonなどです。