Splunk Infrastructure MonitoringでKubernetesを監視する方法

Observability Caitlin Halla

Kubernetesはコンテナ化されたマイクロサービスのオーケストレーションを行うための標準システムですが、監視に関するいくつかの課題があります。もっとも、Kubernetesの監視が必須である理由や、基本的な監視方法、およびKubernetes環境から監視データを収集する手段についてはすでに説明しました。

そこで、このチュートリアルでは、Splunk Observability Cloudを使用してKubernetesの主要なテレメトリデータを収集および可視化する方法を、Splunk Infrastructure MonitoringとOpenTelemetryに焦点を当てて詳しく説明します。Splunkは、Kubernetes環境をリアルタイムで可視化し、迅速な問題の特定、トラブルシューティング、対応を可能にします。

ではさっそく始めましょう。

Kubernetes環境でエンドツーエンドの可視化を実現する方法

Splunk Infrastructure Monitoringは、環境内のあらゆるレイヤーとの統合を通じて、アプリケーションに対するエンドツーエンドのオブザーバビリティを実現します。そしてその対象には、Kubernetesベースのアプリケーションも含まれます。OpenTelemetry Collector for KubernetesのSplunkディストリビューションを使用すると、OpenTelemetry Collectorを簡単にデプロイして、テレメトリデータを受信、処理、エクスポートできるようになります。

Kubernetes環境での動作は以下のとおりです。

また、Splunk Application Performance Monitoring (APM)では、マイクロサービスのインスタントトラブルシューティングも利用できます。この機能は、関連コンテンツを使用してスタック全体でメトリクスとトレースを関連付けることで、送信されたアラートからその問題の根本原因へとユーザーをガイドします。

APM

SplunkによるKubernetesメトリクスの収集

次に、Kubernetesのメトリクスを収集する方法をいくつか見てみましょう。

クラウドプロバイダーと連携する

クラウドプロバイダーによって管理されているKubernetesクラスターで基本的な監視を実行する場合は、アマゾン ウェブ サービス(AWS)AzureGCPなどのサービスをSplunk Infrastructure Monitoringと直接連携させることでデータを収集できます。これは比較的シンプルな方法で、エージェントをインストールすることなく、Kubernetesメトリクスを収集できます。

ただし、以下のような欠点があります。

Prometheusのエクスポーターから収集する

Prometheusは、Kubernetesメトリクスの可視化を考える際に第一の選択肢となるソフトウェアです。Prometheusレシーバーを使用すると、OpenTelemetry CollectorのSplunkディストリビューションは、テレメトリをPrometheus形式で公開している任意のソースからメトリクスを収集できます。そのため、Splunk Observability Cloudへのメトリクスの送信が極めて簡単になります。

また、OpenTelemetry Collectorを使用すれば、Prometheus形式のメトリクスをOpenTelemetryの該当する形式に自動で変換できます。

OpenTelemetry Collectorを使用する

OpenTelemetry CollectorのSplunkディストリビューションは、テレメトリデータを受信して処理し、Splunkにエクスポートするための統一された方法を提供します。

Collectorをデプロイして設定すると、そのCollectorが、環境内で実行されているサービスからテレメトリデータを動的に検出して収集します。Kubernetes環境内では、DaemonSetによってCollectorが展開され(Kubernetesクラスター内の各ノードに1つのコピーが配置されます)、各エージェントのインスタンスが、同じノード上で実行されているサービスを監視します。

さらに、OpenTelemetry CollectorのSplunkディストリビューションは、メトリクスを報告する間隔がデフォルトで1秒に設定されているため、Kubernetes環境のエフェメラルで動的な特性にとりわけ適しています。

Collector for Kubernetesのインストールは、Helm 3.0クライアントを使って以下の3つの手順に従うだけで完了します。

  1. Splunk OpenTelemetry Collector for KubernetesのHelmチャートのリポジトリを追加する。
  2. このリポジトリが最新の状態であることを確認する。
  3. 任意の値を設定して、Splunk OpenTelemetry Collector for Kubernetesをインストールする。

では、順番に説明しましょう。まず、以下のコマンドを使用して、Splunk OpenTelemetry Collector for KubernetesのHelmチャートのリポジトリを追加します。

$ helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart

以下のコマンドを使用して、リポジトリを最新の状態にします。

$ helm repo update

Kubernetesクラスターで以下のコマンドを実行してSplunk OpenTelemetry Collector for Kubernetesをインストールします。設定値はそれぞれのニーズに合わせて変更してください。

$ helm install splunk-otel-collector --set="splunkObservability.accessToken=<ACCESS_TOKEN>,clusterName=<CLUSTER_NAME>,splunkObservability.realm=<REALM>,gateway.enabled=false,splunkObservability.profilingEnabled=true,environment=<ENV>,operator.enabled=true,certmanager.enabled=true,agent.discovery.enabled=true" splunk-otel-collector-chart/splunk-otel-collector

最後に、cert-managerがデプロイされている場合は、certmanager.enabled=trueを上記のコマンドから必ず削除してください。これは、cert-managerの2つのインスタンスを同じノードで実行できないためです。

Collectorのインストールの検証とサービスの検出

上記のCollectorのインストールコマンドにより、自動検出とゼロコードインストルメンテーションが利用可能になります。自動検出を有効にすると、Collectorがメトリックとトレースを自動的に識別して収集するため、手動での設定は不要です。また、自動検出はKubernetes環境内のサードパーティサービスでも利用できます。これには、Kubernetes環境で実行されているデータベースやWebサーバーも含まれます。

さらに、Java、Node.js、および.NETのバックエンドアプリケーションのゼロコードインストルメンテーションにより、実行中のアプリケーションからデータを取得することができます。以下の作業は不要です。

Collectorのインストールコマンドが正常に実行されると、Splunk Infrastructure MonitoringのKubernetes Navigator内でKubernetesデータを数秒で検索できるようになります。また、サポートされているアプリケーションのデータが、Splunk APMに表示されるようになります。

Kubernetes Navigatorを使用してKubernetes環境を操作する方法

Splunk Infrastructure Monitoringの ナビゲーター はリソースのコレクションであり、サービスのさまざまなインスタンス全体のメトリクスとログを監視し、パフォーマンスの異常値を簡単に検出するのに役立ちます。ナビゲーターは、システムインフラをリアルタイムで確認できるビューを備えており、重要な健全性メトリクスに関するアラートをわかりやすく通知したり、見やすい画面で可視化したりできます。

ナビゲーター内のチャートには、OpenTelemetry Collectorからエクスポートされたメトリクスが表示され、以下のような環境内の要素をすばやく掘り下げて分析できます。

Kubernetes Navigator

Splunk Observability Cloudでは、[Infrastructure]ページの[Kubernetes]セクションで、Kubernetes Navigatorのサマリーカードを確認できます。

Kubernetes Navigatorでは、Kubernetes環境の重要な要素ごとにナビゲーターが用意されています。用意されているナビゲーターは、クラスター、コンテナ、Pod、ノード、デプロイメント、ジョブ、ネームスペース、ワークロード、サービス、リソース、DaemonSet、ReplicaSet、StatefulSetなどです。

Kubernetes Navigator

Kubernetesクラスターナビゲーター

Kubernetesクラスターナビゲーターは、Splunk Infrastructure Monitoringで監視しているすべてのKubernetesクラスターを対象に、クラスターごとのデータを提供します。これには、以下のデータが含まれます。

クラスターは、テーブル形式またはヒートマップ形式で表示できます。

テーブル形式

ヒートマップ形式

Kubernetesノードナビゲーター

Kubernetesノードナビゲーターは、すべてのノードを対象に、ノード数、Pod、ノードイベント、および集約されたシステムメトリクス(CPU、ディスク、メモリー、ネットワーク)に関する情報を提供します。

Kubernetesノードナビゲーター1

Kubernetesノードナビゲーター2

また、クラスターごとのグループとしてではなく、すべてのノードをまとめて表示することもできます。これにより、Kubernetesクラスターの基盤となるインフラの健全性を評価できます。

ノードビューでは、階層マップでノード内の各Podが強調表示され、ノードチャートでノードの状態、ワークロード、ネットワーク、およびリソースの使用状況に関する情報が提供されます。このノードビューで個々のPodを選択すると、特定のPodやコンテナにすばやく移動できます。

ノードビュー

ノードヒートマップとノード階層マップは、Node ReadyMemory PressurePID PressureDisk PressureNetwork UnavailableOut of Diskのいずれかの条件に従って色分けされます。

Kubernetes Podナビゲーター

Kubernetes Podナビゲーターを使用すると、ノードナビゲーターと同じ動的フィルタリングやグループ化機能を使用して、特定のPodまたはすべてのPodのアクティビティを追跡できます。

Kubernetes Podナビゲーター

このビューでは、どのPodからでも以下の操作を実行できます。

Kubernetesコンテナナビゲーター

Kubernetesコンテナナビゲーターには、自社の環境からSplunkにデータを送っている各コンテナが表示されます。

Kubernetesコンテナナビゲーター1

Podビューからここに移動すると、単一のポッドのコンテナのみが表示されますが、Kubernetes関連のディメンションでグループ化やフィルタリングを実行し、特定のコンテナ群を詳しく調べることもできます。

Kubernetesコンテナナビゲーター2

Kubernetes Analyzer

問題が発生すると、[K8s analyzer]タブがAIドリブンなインサイトを活用して、異常な状態のインスタンス(準備が完了していないノードなど)を強調表示して、問題のトラブルシューティングを支援します。Kubernetes Analyzerは、以下のような関連する潜在的な問題や原因を特定します。

Kubernetes Analyzer

AutoDetectのアラートとディテクター

Splunk Observability Cloudでは、AutoDetectのアラートとディテクターがデフォルトで自動作成されるため、Kubernetesインフラでよく見られる影響の大きな異常をすばやく検出できます。このディテクターは、以下のような一般的なKubernetesの問題に対してアラートを生成します。

AutoDetectのアラートとディテクター

これらのアラートは、Kubernetesナビゲーターのコンテキストに合わせて表示されます。また、ランブック、Splunk Application Performance Monitoring、Splunk Infrastructure Monitoringなどのリソースにある関連コンテンツへのリンクが表示され、迅速なトラブルシューティングを支援します。

Splunk Observability CloudのAI Assistant

Splunk Observability CloudのAI Assistantを使用すると、エンジニアリングチームのあらゆるメンバーが、コンテキストに応じたトラブルシューティングを簡単に実行し、根本原因と解決策をすばやく特定することができます。

ユーザーは自然言語を使用して、環境のあらゆる部分の健全性に関して、AI Assistantに一般的な質問や具体的な質問をすることができます。すると、AI Assistantがドメイン固有のデータを分析し、トラブルシューティングをステップバイステップでサポートするため、平均解決時間(MTTR)が短縮されます

Splunk Observability CloudのAI Assistant

Kubernetesの監視を今すぐ始めましょう

Splunk Infrastructure Monitoringをまだ利用しておらず、この記事に関心を持たれた方は、14日間の無料トライアル版をお試しになるか、Splunkのエキスパートにお問い合わせください

このブログはこちらの英語ブログの翻訳、山村 悟史によるレビューです。

関連記事

SplunkからObservabilityへ、そしてObservabilityからSplunkへ:コンテキストの旅
オブザーバビリティ
5 分程度

SplunkからObservabilityへ、そしてObservabilityからSplunkへ:コンテキストの旅

Splunkイベントを開発者に確実に伝える方法をご紹介します。相手がSplunkを使用していなくてもかまいません。Splunk CloudからSplunk Observabilityにイベントを簡単に送信できます。
Splunk OpenTelemetry CollectorをインストールしてKubernetesメトリクスを収集する方法
オブザーバビリティ
6 分程度

Splunk OpenTelemetry CollectorをインストールしてKubernetesメトリクスを収集する方法

Kubernetesはコンテナオーケストレーションの有力な選択肢となりつつあります。このブログでは、Splunk OpenTelemetry CollectorをインストールしてKubernetesメトリクスを収集する方法をご紹介します。
Splunk Observabilityイベントを使って他のSplunk製品にコンテキストを渡す
オブザーバビリティ
8 分程度

Splunk Observabilityイベントを使って他のSplunk製品にコンテキストを渡す

アラートアクションとアダプティブレスポンスを活用してSplunkプラットフォーム、Enterprise Security、IT Service Intelligence、Observabilityのデータを集約する方法について説明します。