Splunk OTel Collector を使用して、クラウド環境のインフラストラクチャとアプリを監視する

Splunk OTel Collectorを使用してご利用のクラウドインフラストラクチャおよびサービスからデータを取得する方法を説明します。

Kai は、大手フィンテック企業 PonyBank のサイト信頼性エンジニアリーダーです。Kai のタスクは、Amazon Elastic Kubernetes Service(EKS)で Java アプリケーションを実行する数百のコンテナで構成される AWS インフラストラクチャを監視することです。また IT 部門によって管理される数十の Linux および Windows の Elastic Compute Cloud(EC2)インスタンスのインストルメンテーションも行おうと考えています。Kai の第一の目標は、各アセットから信頼性と性能のメトリクスとログを抽出し、Splunk APM を使用してパフォーマンスを監視するために Java アプリケーションのインストルメンテーションを行うことです。

PonyBank は、Splunk Observability Cloud を使用しています。これによって、オープンソースの Splunk Distribution of OpenTelemetry Collector(複数ソースからデータを収集してエクスポートできるエージェント)を通じてデータを取り込みます。Splunk OTel Collector は、ログとトレースの転送も実行でき、ソフトウェアの完全なオブザーバビリティを有効にします。

Splunk OTel Collectorを使用してインフラストラクチャをインストルメントするために、Kaiは以下の手順をとります:

  1. カスタムHelmチャートを使用したEKS監視を有効にする
  2. Collectorを使用して、すべてのEC2インスタンスをインストルメントする
  3. Splunk APM用にJavaサービスをインストルメントする
  4. 「関連コンテンツ」機能を使ってテレメトリ間のリンクを探索する

カスタムHelmチャートを使用したEKS監視を有効にする

クラウドに移行して以来、PonyBank のアプリケーションは EKS で実行されています。Kai は、ホームページからアクセスするガイド付きセットアップを使用して、Splunk Observability Cloud からクラウド統合をセットアップすることから始めます。ガイド付きセットアップでは、関連する取り込みトークンを選択し、選択したオプションからインストールコマンドと設定スニペットを生成できます。これらを使用して、インストルメンテーションを迅速に展開できます。

「データ管理」でのKubernetes用のガイド付きセットアップ

クラウドに直接アクセスできない数百のコンテナを含むクラスターが仮想プライベートクラウド(VPC)内にあるため、Kaiはガイド付きセットアップを使用して、データ転送(ゲートウェイ)モードでSplunk OTel Collectorインスタンスのクラスターを追加し、元の構成の安全性を維持しながらデータの受信と転送ができるようにしました。次のステップでは、ガイド付きセットアップによって Helm 用にカスタマイズされたコマンドが提供されます。

ガイド付きセットアップの最後に、Kai は Infrastructure Monitoring の Kubernetes マップを開き、クラスターのステータスを確認します。Kubernetes マップ上のノードが選択されており、グリッド内に色付きのキューブとして表示されていて、ワークロードやシステムメトリクスといった各要素のステータスの詳細を知ることができます。

Infrastructure MonitoringのKubernetesインフラストラクチャのクラスタービュー

Collectorを使用して、すべてのEC2インスタンスをインストルメントする

Elastic Compute Cloud(EC2)インスタンスとして IT 部門によって管理されているホストについて、Kai は PonyBank の既存の Puppet セットアップを使用して Splunk OTel Collector を展開することにします。Splunk Observability Cloud で Linux モニタリングのガイド付きセットアップを開き、[Puppet] タブを選択します。必要な情報を入力したら、次の 2 つの手順を実行するだけです。

  1. Puppet ForgeからSplunk OTel Collectorモジュールをインストールする

  2. 以下のように、マニフェストファイルに新しいクラスを含める:

    class { splunk_otel_collector:
    splunk_access_token => '<kai_token>',
    splunk_realm => 'us0',
    collector_config_source => 'file:///etc/otel/collector/agent_config.yaml',
    collector_config_dest => '/etc/otel/collector/agent_config.yaml',
    }

また、インストーラスクリプトタブの手順に従って、Puppet で管理されていない、組織内に散在するいくつかの EC2 インスタンスに対しても、Linux ガイド付きセットアップを使用します。カスタマイズされたインストーラスクリプトコマンドによって、必要な構成でコレクタのダウンロードと実行が行われます。

これで、Kai は各ホストからのデータが Infrastructure Monitoring に流れていることを確認できます。ホストごとに、メタデータ、システムメトリクス、プロセスなど、さまざまなデータポイントを確認できます。

Infrastructure Monitoringのホストメトリクスを表示したダッシュボード

同時に、KaiはSplunk Log Observerで各ホストとノードからのログを確認することもできます:

ホストのログを表示するLog Observer

Splunk APM用にJavaサービスをインストルメントする

Kai の最終目標は、PonyBank の Java サービスを Splunk APM 用 にインストルメントして、チームが Splunk Observability Cloud でスパンとトレースを分析し、AlwaysOn Profiling を使って CPU やメモリを使いすぎている非効率なコードを迅速に特定できるようにすることです。

これを行うには、Kai は Java ガイド付きセットアップを選択します。このセットアップには、コレクタの展開後に Splunk Java エージェントを有効にするために必要なすべての手順が含まれています。Kai は環境とサービス名を定義します。これらは、APM と Infrastructure Monitoring 間で関連コンテンツ機能を有効にするために必要です。

必要な機能とオプションをすべて選択した後に、現在のKubernetes構成に追加できるYAMLスニペット、ならびにカスタマイズされたランタイムコマンドを取得します。

Javaトレースインストルメンテーションのガイド付きセットアップ

Java サービスも含む EC2 インスタンスの場合、Kai は同じガイド付きセットアップを使用して、カスタマイズされたコマンドをコンソールで実行します。アプリケーションのインストルメンテーションには数秒かかります。

Javaエージェントのインストールを示すコンソールの出力

概要

Kai は Splunk OTel Collector を使用して、PonyBank のクラウドインフラストラクチャ全体をインストルメントし、環境と状況ごとに構成ファイルとコマンドを迅速に取得しました。APM の Java インストルメンテーションを通じて、EKS クラスターで実行されている Java サービスからトレースを取得し、関連コンテンツにアクセスできるようにしました。

さらに詳しく