Kubernetes でのサードパーティアプリケーションのオートディスカバリー

Kubernetesのサードパーティ製アプリケーションからSplunk Observability Cloudにデータを送信するための、オートディスカバリーの使用方法について学習します。

オートディスカバリを使用して、Kubernetes 環境で実行されているサードパーティのアプリケーション(データベースや Web サーバーなど)を見つけることができます。オートディスカバリは、これらのアプリケーションからテレメトリデータを収集し、Splunk Observability Cloud に送信します。

注: Collector バージョン 0.109.0 以降を使用している場合、Splunk Observability Cloud にログインし、[Data Management] メニューの [Discovered services] タブに移動すると、Collector が検出して自動的に監視できるサービスおよびサードパーティ製アプリケーションを確認できます。詳しくは、「 オートディスカバリによる Collector のデプロイ」を参照してください。

自動ディスカバリーの仕組み

Collector をオートディスカバリーで実行すると、オブザーバーエクステンションによってプラットフォーム上で検出されたエンドポイントに対して、サポートされているメトリクスレシーバの組み込み設定をテストします。これは、Collector サービスを開始する前に行われます。

成功基準に一致するメトリクスを取得する、動的にインスタンス化されたレシーバの場合、Collector はディスカバリー設定を、既知の作業ルールと必要なオブザーバー拡張を備えたレシーバクリエータインスタンスに変換します。詳しくは「Receiver creator receiver」を参照してください。同時に、Collector はランタイム時に metrics パイプラインに設定を追加します。

サービスとの接続は確立できるが、期待されるメトリクスを受信できないレシーバに対して、ディスカバリーモードは、どのプロパティを設定すべきか、またはどの拡張機能または設定をサービス上で構成して、正常にテレメトリを取得すべきかを提案します。検出プロセスを調整するために検出プロパティを使用して、必要なターゲット固有の構成値(認証情報など)を定義できます。

Kubernetes で実行する場合、ディスカバリーモードは k8s_observer オブザーバーによって発見されたエンドポイントに対して、バンドルされたメトリクスレシーバの設定をテストします。正常に検出されたインスタンスは、既存のサービス構成に組み込まれます。

自動ディスカバリーによるCollectorのデプロイ

Splunk Distribution of OpenTelemetry Collector for Kubernetes から DaemonSet をディスカバリモードで実行するように設定できます。プロパティを編集して、必要な資格情報またはサービス固有の情報を追加します。

注: Collector のバージョン 0.109.0 以降を使用している場合は、featureGates: splunk.continuousDiscoveryを使用して UI でオートディスカバリをアクティブ化します。

次の例では、Helmチャートでディスカバリーモードを有効にし、PostgreSQLサービスディスカバリー用の認証プロパティを追加する方法を示します:

agent:

  #...

  discovery:
    enabled: true # Turned off by default
    properties:
      extensions:
        k8s_observer:
          config:
            auth_type: serviceAccount  # Default auth_type value
      receivers:
        postgres:
          config:
            # Environment variables populated by secret data
            username: '${env:POSTGRES_USER}'
            password: '${env:POSTGRES_PASSWORD}'
            tls:
              insecure: true
  # Activates auto discovery in UI. Only available for the Collector version 0.109.0 or higher
  featureGates: splunk.continuousDiscovery

# ...

extraEnvs:
   # Environment variables using a manually created secret
   - name: POSTGRES_USER
     valueFrom:
       secretKeyRef:
         name: postgres-monitoring
         key: username
   - name: POSTGRES_PASSWORD
     valueFrom:
       secretKeyRef:
         name: postgres-monitoring
         key: password

ディスカバリの進行状況とステートメントの評価を確認するには、エージェントの起動ログを参照するか、kubectl を使用します。例:

$ kubectl -n monitoring logs splunk-otel-collector-agent | grep -i disco
Discovering for next 10s...
Successfully discovered "postgresql" using "k8s_observer" endpoint "k8s_observer/e8a10f52-4f2a-468c-be7b-7f3c673b1c8e/(5432)".
Discovery complete.
注: デフォルトでは、docker_observerhost_observer の拡張子は、Helmチャートでのディスカバリーではオフになっています。