|
[51CTO.com クイック翻訳] Kubernetesは現在、GitHubで5億8000万以上のスターを獲得し、世界中で2,200人以上の登録コントリビューターを擁しています。コンテナオーケストレーションのデファクトスタンダードとなっています。しかし、分散型マイクロサービスアプリケーションの課題解決と運用においては、しばしば大きな課題に直面しています。開発者や運用担当者が最も頻繁に挙げる課題の一つがKubernetesの監視です。複雑な分散環境に直面した開発者は、実際のアプリケーションのニーズを満たすために、様々なオープンソースの監視ソリューションを開発する必要に迫られることがよくあります。 現在、Kubernetesエコシステムとそのコミュニティには、多種多様なKubernetesツールが存在します。ログによるステータス監視を支援するもの、データ収集ツール、Kubernetesを操作するためのインターフェースを提供するものなど、多岐にわたります。Kubernetesネイティブのものもあれば、開発者によってカスタム開発されたものもあります。この記事では、人気のオープンソースKubernetes監視ツール10選を、それぞれの長所と短所を比較しながら紹介します。 プロメテウス 利点: Kubernetes ネイティブで使いやすく、大規模なコミュニティがあります。 デメリット: 拡張性とストレージ容量が限られています。 Grafanaは、幅広いデータソースとの統合が可能であることから、業界で高い人気を誇っています。さらに、強力なGrafanaは、アラート、アノテーション、フィルタリング、データソース固有のクエリ、ビジュアルダッシュボード、認証と認可、組織間のコラボレーションなど、多様な機能を提供します。 利点: 大規模なエコシステムと豊富な視覚化およびアラート機能を誇ります。 デメリット: Kubernetes ログ管理向けに最適化されていません。 ELK(エラスティックスタック) Kubernetesのロギングにおいて、最も人気のあるオープンソースソリューションはELK Stackです。ELKはElasticsearch、Logstash、Kibanaの頭文字をとったもので、実際には4つ目のコンポーネントであるBeatsが含まれています。これらはすべて軽量なデータトランスミッターです。スタック内の各コンポーネントはログパイプラインの異なるステージを担当しますが、これらを組み合わせることで、Kubernetes向けの包括的かつ強力なロギングソリューションを提供します。 Logstashパイプラインは、ログを送信・保存する前にデータを集約・処理できます。Elasticsearchはスケーラビリティに優れており、数百万件ものドキュメントを保存・検索する場合でも優れたパフォーマンスを発揮します。また、Kibanaは、データ分析のための優れた可視化インターフェースを提供します。 スタック内の様々なコンポーネントはすべて、Kubernetes環境に簡単にデプロイできます。様々なデプロイメント構成とHelmダイアグラムを使用して、様々なコンポーネントをポッドとして実行できます。デプロイを通じて、MetricbeatとFilebeatをデーモンコレクターとして使用し、Kubernetesメタデータを対応するドキュメントに添付できます。 利点: 大規模なコミュニティがあり、Kubernetes での導入と使用が簡単で、豊富な分析機能を備えています。 デメリット: 拡張することが比較的困難です。 Fluentd/Fluent ビット FluentdはLogstashのパフォーマンスを向上させ、Kubernetesユーザーの間で人気を博しています。ツール設計の面では、Fluentdは優れたパフォーマンス、スケーラビリティ、信頼性を誇ります。シンプルで使いやすい入出力は、パフォーマンスに影響を与えません。転送障害やデータ過負荷に対処するため、Fluentdはバッファリングとキューイングにディスクまたはメモリを使用します。さらに、Fluentdはより柔軟なデータパイプラインを確保するために、さまざまな設定オプションをサポートしています。 FluentdとFluent BitはどちらもKubernetesネイティブで、CNCFプロジェクトです。Kubernetesとシームレスに統合できるだけでなく、関連するポッドやコンテナのメタデータを使用して、最小限のリソース消費で様々なタイプのデータを拡充します。 利点: 大規模なプラグイン エコシステムを備えており、優れたパフォーマンスと信頼性を提供します。 デメリット: 構成が比較的複雑です。 cAdvisor(https://github.com/google/cadvisor) オープンソースのプロキシツールであるcAdvisorは、データの収集、処理、エクスポートを通じて、実行中のコンテナのパフォーマンスとリソース使用状況を表示できます。KubeletバイナリとしてKubernetesに統合できます。 他のプロキシツールとは異なり、cAdvisor はすべてのポッドではなくノードレベルでデプロイされます。コンピューター上で実行中のすべてのコンテナを自動的に検出し、メモリやCPUなどのシステムネットワークメトリクスを収集できます。 cAdvisorは、基本的なローカルオープンソース監視ツールとして使いやすく、ユーザーはPrometheusのメトリクスをすぐに利用できます。しかし、包括的な監視ソリューションとなるには、まだ改善の余地があります。 利点: Kubernetes に組み込まれており、導入と使用が簡単で、複数のエンドポイントをサポートできます。 デメリット: あまりにも基本的であり、分析の深さが欠けており、機能が制限されています。 kubewatch(https://github.com/bitnami-labs/kubewatch) その名の通り、kubewatch は特定の Kubernetes イベントを監視し、これらのイベントを Slack や PagerDuty などのエンドポイントに通知としてプッシュします。具体的には、デーモンセット、デプロイメント、ポッド、レプリカセット、レプリケーションコントローラー、サービス、パスワード、各種設定マッピングなど、指定された Kubernetes リソースの変更を監視します。Kubewatch は設定が簡単で、Helm を使用してカスタマイズできます。 利点: 複数のエンドポイントをサポートし、簡単に展開できます。 デメリット: 単なるモニターです。 kube-ops-view(https://github.com/hjacobs/kube-ops-view) kube-ops-view プロジェクトの公式ドキュメントには、これは監視ツールではなく、本番環境で監視やアラートを出すことはできないと明記されていますが、Kubernetes クラスターの実行状態、さまざまなデプロイメント ノード、およびそれらのノード上のさまざまなポッドに関する情報を提供できます。 出典: GitHub 利点: 導入と使用が簡単です。 デメリット: 読み取り専用ツールであるため、Kubernetes リソースの管理には適していません。 kube-state-metrics Kubernetesのネイティブ監視メトリクスサービスであるkube-state-metricsは、様々なKubernetes APIをリッスンし、ポッド、サービス、デプロイメント、ノードなどのオブジェクトのステータスメトリクスを生成できます。kube-state-metricsが生成できるメトリクスの完全なリストは、https://github.com/kubernetes/kube-state-metrics/tree/master/docsでご覧いただけます。 kube-state-metrics は非常にシンプルで使いやすいですが、単一のメトリックサービスしか提供していないため、完全な Kubernetes 監視ソリューションに統合するにはさらなる改善が必要です。kube-state-metrics は、メトリックをプレーンテキスト形式で HTTP エンドポイントにエクスポートできます。Prometheus ユーザーはこれを頻繁に使用するでしょう。 利点: Kubernetes ネイティブで使いやすく、Prometheus とシームレスに統合できます。 デメリット: 単一のインジケーター生成サービスのみが提供されます。 イェーガー(https://github.com/jaegertracing/jaeger) 現在、分散トレースはKubernetes環境の監視とトラブルシューティングにおけるベストプラクティスとして徐々に定着しつつあります。Jaegerは、こうしたオープンソースのトレースツールの代表例です。 2016年、UberはZipkinやDapperといった既存のトレースツールに着想を得て、オープンソースのJaegerを開発しました。Jaegerは、根本原因分析、パフォーマンス最適化、分散トランザクション監視の実行を支援します。 Jaegerは、Go、Java、Node、Python、C++アプリケーション向けのOpenTracingベースの機能を備えています。サービスまたはエンドポイントごとに一貫したフロントエンドサンプリング頻度を使用できます。また、Cassandra、Elasticsearch、Kafka、インメモリストレージなど、さまざまなストレージバックエンドモデルをサポートしています。 Jaeger では、いくつかの開始方法が用意されています。ユーザーは、新しい Jaeger Operator (https://www.jaegertracing.io/docs/1.13/operator/) を使用したり、デーモンを使用して設定したり、テストやデモンストレーションの目的でオールインワンのデプロイメントを選択したりできます。 利点: 導入が簡単で、ユーザーはユーザー インターフェイスを通じてさまざまな監視オプションを調べることができます。 デメリット: バックエンドの統合が制限されています。 ウィーブスコープ Weaveworks が開発した監視ツールである Weave Scope は、Kubernetes クラスターの運用に関する分析情報を提供します。 Weave Scope は kube-ops-view といくつかの類似点がありますが、主にユーザー インターフェースの改善を通じてサービス品質を向上させ、ユーザーがインターフェース上でさまざまな診断コマンドを実行してさまざまなコンテナを管理できるようにします。 画像ソース: GitHub このアプリケーション ツールを使用すると、展開環境を効果的に制御し、独自のインフラストラクチャを展開して、さまざまなコンポーネントを接続できます。 利点: 「ゼロ構成」のユーザー インターフェイスを提供します。 デメリット: 分析の深さが不十分です。 要約 上記に挙げた10個のオープンソースKubernetesツールは、業界で利用可能なツールのほんの一部に過ぎません。これらのツールは、Kubernetesスタックの設計において、ユーザーにさまざまなレベルの可観測性を提供します。まずは小規模なサンドボックス環境を構築し、試験運用とデプロイメントを実施してから、どのツールが本当にニーズに合っているかを判断してください。 原題: Kubernetes 向けオープンソース監視ツール トップ 10、著者: Daniel Berman [この記事は51CTOによって翻訳されました。提携サイトへの転載の際は、元の翻訳者と出典を51CTO.comとして明記してください。] |