このトピックでは、Kubernetes クラスタの可観測性の現状、マルチクラウド Kubernetes クラスタの可観測性に関する課題、およびこれらの課題に対するソリューションについて説明します。また、Alibaba Cloud Managed Service for Prometheus と登録済み Kubernetes クラスタを使用してマルチクラウド Kubernetes クラスタを管理および監視する方法の例についても説明します。
Kubernetes クラスタの可観測性の現状
コンテナ管理およびオーケストレーションツールとして、Kubernetes はクラウドコンピューティング業界における共通の技術基盤となっています。同時に、Prometheus は、さまざまなソリューションの反復で実証された後、Kubernetes クラスタ監視の標準ソリューションとして機能してきました。
Prometheus は、監視システム層、アプリケーション層、およびビジネス層からメトリクスを収集して保存します。さらに、Prometheus は Grafana を使用してメトリクスを表示し、アラートイベントを配信します。Prometheus と Grafana を組み合わせることで、Kubernetes クラスタの監視メトリクスの収集、保存、表示、およびアラート設定が可能になり、問題の特定と原因の分析に役立ち、クラウドネイティブアプリケーションを保護します。これは、クラウドコンピューティング業界における Kubernetes クラスタ監視の標準ソリューションとなっています。
Kubernetes クラスタを管理するには、次のいずれかのソリューションを使用できます。
ソリューション 1: 監視システムを構築する
Prometheus と Grafana を使用して、本番環境用の監視システムを構築できます。初期段階では、多大な労務コストを投資し、監視システムの各部分間の連携に重点を置く必要があります。たとえば、アラートの重複排除を含む、メトリクスの収集、メトリクスの保存、メトリクスの表示、ダッシュボード、およびアラートを監視する必要があります。後期段階では、膨大な O&M コストが発生します。
ソリューション 2: クラウドサービスベンダーが提供する監視サービスを使用する
Managed Service for Prometheus など、クラウドサービスベンダーが提供する監視サービスを使用できます。Managed Service for Prometheus は、サブスクリプションと従量課金の 2 つの課金方法をサポートしています。これにより、監視システムのセットアップにかかる初期費用が削減され、技術的な O&M サポートが提供されるため、O&M コストが削減されます。
マルチクラウド Kubernetes クラスタの可観測性に関する課題
企業は、クラウド上でますます多様化し、複雑化するサービスをデプロイしています。一部のシナリオでは、Kubernetes クラスタがクラウドサービスまたはリージョンをまたいで使用される場合があり、マルチクラウド Kubernetes クラスタの O&M の課題に対処する必要があります。
マルチクラウド Kubernetes クラスタを監視するには、次のいずれかのソリューションを使用できます。
ソリューション 1: セルフマネージド Prometheus システムと Grafana に基づいて監視システムを構築する
このソリューションを使用する場合、次の課題に直面します。
セルフビルドの監視システムを構築するには、初期段階で収集、保存、表示、アラートなどの機能モジュールを統合する必要があります。後期段階では、より多くの O&M 担当者を割り当てる必要があるため、O&M コストが増加します。
オープンソース Prometheus の時系列データベース(TSDB)は SSD ストレージを使用します。データは単一サイトに個別に保存されるため、データ損失が発生する可能性があります。
オープンソース Prometheus の収集機能にはボトルネックが存在します。単一部品操作のため、オープンソース Prometheus は自動スケーリングをサポートしていません。ピーク時には、監視メトリクスの収集によってパフォーマンスのボトルネックが発生する可能性があります。
ソリューション 2: クラウドサービスベンダーが提供する Prometheus サービスを使用する
このソリューションを使用する場合、次の課題に直面します。
複数のクラウドサービスベンダー: クラウドサービスベンダーごとに、提供される監視機能とアクセス方法が異なります。これにより、学習コストが増加します。
分散管理: 異なる Prometheus サービスを一元管理することはできません。これにより、非効率的で混沌とした管理と O&M ワークロードの重複が発生する可能性があります。また、ビジネス上の問題をできるだけ早く特定できない場合もあります。
上記のソリューションでは、分散したメトリクスをクエリまたは分析したり、メトリクスのアラートを一元的に設定したりすることはできません。
Managed Service for Prometheus のメリット
上記の課題に対処するために、登録済み Kubernetes クラスタは、サードパーティのクラウドサービスベンダーの Kubernetes クラスタに対する一元管理機能を提供します。これにより、マルチクラウド Kubernetes クラスタを一元管理できます。上記の課題に対処するために、登録済み Kubernetes クラスタは、サードパーティのクラウドサービスベンダーの Kubernetes クラスタに対する一元管理機能を提供します。これにより、マルチクラウド Kubernetes クラスタを一元管理できます。Managed Service for Prometheus は、メトリクス収集、Grafana 表示、およびアラート機能を備えた完全な Kubernetes クラスタ監視システムを提供します。Managed Service for Prometheus は、従量課金とサブスクリプションの課金方法をサポートしており、Kubernetes クラスタの監視効率を向上させ、ユーザーが作成した監視サービスの O&M コストを削減します。
登録済み Kubernetes クラスタと Managed Service for Prometheus を組み合わせることで、上記の課題に対処し、シンプルかつ効率的にマルチクラウド Kubernetes クラスタを監視できます。Managed Service for Prometheus と登録済み Kubernetes クラスタには、次のメリットがあります。
強力な機能: Managed Service for Prometheus と登録済み Kubernetes クラスタを組み合わせることで、マルチクラウド Kubernetes クラスタ監視に存在する問題(分散管理、監視システム構築の難しさ、低い O&M 効率、メトリクスを共同でクエリできない、分散アラートなど)を解決できます。低コストの O&M で効率を向上させながら、マルチクラウド Kubernetes クラスタ監視の一元管理、設定、クエリ、およびアラートを実装できます。これにより、O&M チームは反復作業を行うことなくビジネスに集中できます。
低コスト: Managed Service for Prometheus は、Kubernetes クラスタの基本的な監視要件を満たすために、基本メトリクスの収集を無料で提供します。小規模な Kubernetes クラスタの場合、従量課金方式を使用して最小限のコストでビジネスを監視できます。Managed Service for Prometheus の従量課金方式の詳細については、従量課金 を参照してください。大規模な Kubernetes クラスタの場合、サブスクリプション課金方式を使用できます。従量課金方式と比較して、サブスクリプション課金方式では、大規模クラスタの監視コストを約 67% 効果的に削減できます。
リソース使用量の削減: Managed Service for Prometheus を使用する場合、Kubernetes クラスタに軽量エージェントをデプロイするだけで済みます。エージェントは自動スケーリング機能を提供します。Kubernetes クラスタに 2 コアと 4 GB のメモリがある場合、600 万個のメトリクスを収集できます。オープンソース Prometheus のサービス検出モジュールが Kubernetes クラスタの API サーバーに与える負荷を軽減するために、Managed Service for Prometheus はサービス検出モジュールを最適化しています。これにより、リソース使用量が最小限に抑えられ、Kubernetes クラスタからの監視メトリクスの収集が最大化され、ビジネスが保護されます。オープンソース Prometheus のサービス検出モジュールは、クラスタ内の APIServer に高い負荷をかけます。Managed Service for Prometheus は、APIServer への負荷を軽減し、リソース使用量を最小限に抑え、コンテナクラスタ監視メトリクスの収集を最大化し、ビジネスを保護するように最適化されています。
メリット 1: パフォーマンスの向上
項目 | Managed Service for Prometheus | セルフマネージド Prometheus システム |
高可用性 | Managed Service for Prometheus は高可用性を提供し、水平スケーリングをサポートしています。収集コンポーネントとストレージコンポーネントに複数のレプリカをデプロイできます。 | セルフマネージド Prometheus システムは低可用性を提供し、水平スケーリングをサポートしていません。一度に 1 つのプロセスしか実行できません。 |
データストレージ | クラウドベースのストレージは、無制限のストレージ容量を備えています。 | ストレージ容量は制限されています。 |
データの視覚化 | Grafana は Application Real-Time Monitoring Service (ARMS) コンソールに組み込まれており、一般的な監視テンプレートをすぐに使用できます。 | Grafana をデプロイし、ダッシュボードを自分で設定する必要があります。 |
アラート | Managed Service for Prometheus は ARMS のアラート管理サブサービスと統合されており、アラートの効率と精度が向上します。 | AlertManager プラグインを自分でインストールする必要があります。 |
単一レプリカの収集パフォーマンス (2 コア CPU、4 GB メモリ) | 600 万データポイント | 100 万データポイント |
データクエリパフォーマンス (6 億タイムポイント) | 8 ~ 10 秒 | 180 秒 |
その他の機能 | Managed Service for Prometheus は、事前集計、ダウンサンプリング、および GlobalView 機能を提供します。 | サポートされていません |
メリット 2: 集約された Prometheus マルチクラスタクエリ
ARMS は、複数の Prometheus インスタンスまたはセルフマネージド Prometheus クラスタ用の仮想集約インスタンスを提供します。仮想集約インスタンスを使用して、Prometheus メトリクスのクエリ、Grafana データソースの管理、およびアラートの一元管理を行うことができます。
オープンソース Prometheus の分散データを管理するために、Managed Service for Prometheus では、Grafana で複数のデータソースアドレスを設定できます。そうでない場合、データソースが分離されているため、世界中のさまざまなリージョンにあるアプリケーションの実行状況を全体的な視点から分析することは困難です。
各リージョンに Prometheus サーバーをデプロイしたり、多数の Thanos コンポーネントをデプロイしたりする必要はありません。Remote Write を使用して Managed Service for Prometheus にデータをレポートするだけで済みます。
Managed Service for Prometheus は、グローバルで分散された、安定した高パフォーマンスのクエリ機能を提供します。多数のクエリに対して、いつでも水平および垂直スケーリングを実装できます。
集約された Prometheus マルチクラスタクエリはすぐに実装できます。Managed Service for Prometheus 以外にコンポーネントをデプロイする必要はありません。これにより、O&M コストを削減できます。
メリット 3: 軽量インストール
オープンソース Prometheus と比較して、Managed Service for Prometheus は簡単にデプロイできます。Kubernetes クラスタに軽量エージェントをインストールするだけで済みます。バックエンドストレージをホストして、ビジネスのクラスタリソース使用量を節約できます。
メリット 4: Managed Service for Grafana の統合
Alibaba Cloud Managed Service for Grafana は、メンテナンスフリーのクイックスタートアップ機能を提供するクラウドネイティブ O&M データ視覚化プラットフォームです。Managed Service for Grafana には、次のメリットがあります。
デフォルトでは、Managed Service for Prometheus や Simple Log Service など、さまざまな Alibaba Cloud サービスのデータソースが統合されています。サードパーティのデータソースまたはユーザーが作成したデータソースがサポートされています。これにより、統合 O&M ダッシュボードを迅速に構築できます。
Managed Service for Grafana は、専用のインスタンス、サービスレベル契約 (SLA) 保証、および信頼性の高い O&M を提供します。Managed Service for Grafana は、低いメンテナンスコストで監視システムの高可用性と弾力性を確保します。
Managed Service for Grafana は、Alibaba Cloud シングルサインオン (SSO) とセルフマネージドアカウントシステムをサポートしており、データセキュリティを損なうことなく、データソースとダッシュボードのきめ細かい管理を実装できます。
Managed Service for Grafana は、次の問題を解決できます。
データ集約の難しさ: さまざまなクラウドサービスの監視データを集約および統合することは難しいため、O&M の難易度が上がります。
O&M の難しさ: さまざまなクラウドサービスの監視チャートのコアメトリクスを繰り返し設定する必要があります。
アラート管理の難しさ: さまざまなクラウドサービスのアラートルールが分散しており、管理が困難です。
Managed Service for Grafana は、次の機能を提供できます。
デフォルトの統合: Managed Service for Grafana は、デフォルトで、エラスティックコンピューティングサービスやデータベースサービスなど、主要な Alibaba Cloud サービスと統合されています。
統合ダッシュボード: データソース全体で統合ダッシュボードシステムが確立され、視覚化された O&M が最適化されます。
統合アラート: 統合アラートシステムを簡単に構築して、アラート管理の効率を向上させることができます。
メリット 5: アラート管理の統合
デフォルトでは、Managed Service for Prometheus はアラート管理と統合されています。アラート管理には、次の機能があります。
グローバリゼーション
アラートルールテンプレートをグローバル化して、グローバルイベントのアラートを設定できます。
簡単な設定を行うことで、連絡先と通知ポリシーをグローバル化できます。
管理効率の高いイベント収集
アラート管理をAlibaba Cloudの一般的な監視サービスと統合できます。また、アラート管理をサードパーティの監視サービスと統合して一元管理することもできます。
アラート管理は、安定したアラートイベント処理機能を提供します。24時間365日アラートイベントを処理できます。
アラート管理は、多数のアラートイベントを処理する際の低レイテンシを保証します。
タイムリーで正確なアラート通知
通知ポリシーを設定し、アラートイベントを圧縮できます。これにより、O&Mのワークロードが軽減されます。
アラートの緊急度に基づいて、1つ以上の通知方法を選択できます。たとえば、メール、SMS、電話、またはDingTalkで連絡先にアラート通知を送信して、アラートを処理するように連絡先に通知できます。
アラートが長時間未処理のままになっている場合に、連絡先に複数回通知を送信するようにエスカレーションポリシーを設定できます。
効率的なアラート管理
連絡先はDingTalkを使用していつでもアラートを処理できます。
アラートは共通の形式を使用しているため、連絡先はアラートをより適切に分析できます。
複数の連絡先がDingTalkを介して連携してアラートを処理できます。
アラートイベントの再処理
イベント処理フローを使用して、単純な手順を調整し、アラートソースによって報告されたアラートイベントを処理できます。これは、さまざまなシナリオでのイベント処理に関する特定の要件を満たします。
アラートソースによって報告されたアラートの重複排除、圧縮、ノイズ除去、およびサイレンシングを実行できます。これにより、アラートが収束し、アラートストームが軽減されます。
アラート設定管理
アラート管理は、Kubernetesクラスターの一般的なコアメトリックを含む監視テンプレートを提供します。また、アラートテンプレート機能を提供して、アラートテンプレートを自動的に生成および送信します。これにより、一度に複数のアラートを設定できます。
アラート管理は、視覚化されたアラート設定ウィザードとプレビューを提供します。アラート条件とイベントをリアルタイムで表示し、正確に設定できます。
アラート統計を表示し、アラート処理結果をリアルタイムで分析し、アラート処理効率を向上させ、ビジネスの状態を監視できます。
例: マルチクラウドKubernetesクラスタの監視 Managed Service for Prometheus
前提条件
クラスタは、インターネットまたは内部ネットワークを介してAlibaba Cloudに接続されています。詳細については、登録済みクラスタに関するFAQを参照してください。
手順 1: 登録済みKubernetesクラスタを作成する
ACKコンソール にログオンします。
ACKコンソールの左側のナビゲーションペインで、クラスタをクリックします。
クラスタページの右上隅にあるKubernetesクラスタの作成をクリックします。
クラスタの登録タブで、パラメータを設定します。詳細については、外部Kubernetesクラスタの登録を参照してください。
ページの右側にある作成をクリックします。登録済みのクラスタは、クラスタページで確認できます。
手順 2: 登録済みKubernetesクラスタでマルチクラウドKubernetesクラスタを管理する
この例では、Tencent Kubernetes Engine (TKE) を使用して、登録済みKubernetesクラスタでTKEクラスタを管理し、Managed Service for Prometheusでメトリクスをキャプチャして表示する方法について説明します。
クラスタページで、手順 1: 登録済みKubernetesクラスタを作成するで作成した登録済みクラスタを見つけ、アクション列の詳細をクリックします。
接続情報タブをクリックします。パブリックアクセスタブで、インターネット経由でクラスタに接続するためのクラスタ認証情報を表示し、コピーをクリックします。
Tencent Cloud TKEコンソールにログオンします。クラスタページで、TKEクラスタの名前をクリックします。ページの右上隅にあるYAMLでリソースを作成をクリックします。表示されるダイアログボックスで、前の手順でコピーしたクラスタ認証情報をエディターに貼り付け、OKをクリックします。次に、クラスタページで、Deploymentとack-cluster-agentの実行ステータスを確認します。Deploymentとack-cluster-agentが想定どおりに実行されている場合、インストールは成功です。
ACKコンソール にログオンします。クラスタページで、手順 1: 登録済みKubernetesクラスタを作成するで作成した登録済みKubernetesクラスタのステータスを確認します。登録済みKubernetesクラスタが「実行中」状態の場合、TKEクラスタは管理されています。
手順 3: Prometheusエージェント (ack-arms-prometheus) をインストールする
詳細については、登録済みクラスタに対してManaged Service for Prometheusを有効にするを参照してください。
手順 4: 監視データを表示する
デフォルトでは、Managed Service for PrometheusはGrafanaダッシュボードと統合されており、DeploymentダッシュボードやDaemonSetダッシュボードなどの監視データを表示できます。ダッシュボードで監視データを表示するには、次の手順を実行します:
Managed Service for Prometheusコンソール にログオンします。
左側のナビゲーションペインで、インスタンスをクリックします。
手順 1: 登録済みKubernetesクラスタを作成するで作成した登録済みKubernetesクラスタを監視するPrometheusインスタンスをクリックします。
左側のナビゲーションペインで、ダッシュボードをクリックします。ダッシュボードページで、ダッシュボードの名前をクリックして詳細なメトリクスを表示できます。
手順 5: アラートを表示する
デフォルトでは、Managed Service for Prometheusは、Kubernetesクラスタのコアメトリクスの監視を有効にします。これにより、Managed Service for Prometheusを手動で有効にした場合に発生する可能性のあるエラーを防ぎます。さらに、Managed Service for Prometheusは、コアメトリクスを含むさまざまなアラートテンプレートと統合されています。これらのアラートテンプレートは、PromQLコードを記述することなく、ビジネス要件に基づいて使用できます。アラートを表示するには、次の手順を実行します:
Managed Service for Prometheusコンソール にログオンします。
左側のナビゲーションペインで、インスタンスをクリックします。
手順 1: 登録済みKubernetesクラスタを作成するで作成した登録済みKubernetesクラスタを監視するPrometheusインスタンスをクリックします。
左側のナビゲーションペインで、アラートルールをクリックします。Prometheusアラートルールページで、アラートを表示します。
アクティベーション
登録済み Kubernetes クラスタ: 登録済み Kubernetes クラスタのアクティベート方法については、外部 Kubernetes クラスタの登録を参照してください。
Managed Service for Prometheus: Managed Service for Prometheus は、サブスクリプション課金方式を提供しています。従量課金方式と比較して、サブスクリプション課金方式では少なくとも 67% のコストを節約できます。