Docs » Splunk Distribution of the OpenTelemetry Collector の利用開始 » App とサービスのオートディスカバリー » Kubernetes用のオートディスカバリーとゼロコードインストルメンテーション » チュートリアル:KubernetesでJavaアプリケーションからトレースをキャプチャする » パート 2:CollectorとJavaアプリケーションをデプロイする

パート 2:CollectorとJavaアプリケーションをデプロイする 🔗

Kubernetes環境を構成できたので、次はSplunk Distribution of OpenTelemetry Collectorをデプロイします。

Splunk Distribution of OpenTelemetry Collectorをデプロイする 🔗

Helmを使用して、Splunk Distribution of OpenTelemetry CollectorをKubernetesの名前空間にデプロイします:

  1. コマンドラインインターフェイスで、以下のコマンドを実行します:

    helm install splunk-otel-collector -f ./values.yaml splunk-otel-collector-chart/splunk-otel-collector
    

    このコマンドは、前のステップのvalues.yamlファイルを使用して、Helmを介してSplunk Distribution of OpenTelemetry Collectorを設定およびデプロイします。

  2. 以下のコマンドを実行して、petclinic名前空間内のすべてのポッドを表示します:

    kubectl get pod -n petclinic
    

    現在、いくつかの新しいポッドが稼働しています:

    NAME                                                            READY   STATUS    RESTARTS   AGE
    splunk-otel-collector-agent-nkwwf                               1/1     Running   0          94s
    splunk-otel-collector-certmanager-6d95596898-z7qfz              1/1     Running   0          94s
    splunk-otel-collector-certmanager-cainjector-5c5dc4ff8f-7rlwx   1/1     Running   0          94s
    splunk-otel-collector-certmanager-webhook-69f4ff754c-hm9m2      1/1     Running   0          94s
    splunk-otel-collector-k8s-cluster-receiver-594fd9c8c7-6n545     1/1     Running   0          94s
    splunk-otel-collector-operator-69d476cb7-s8hcl                  2/2     Running   0          94s
    

    この出力は、Splunk Distribution of OpenTelemetry Collectorが正常にデプロイされ、Collectorがデータの受信と Splunk Observability Cloudへの送信を開始する準備ができていることを示しています。

これでSplunk Distribution of OpenTelemetry Collectorのデプロイが完了し、Spring Petclinicのアプリケーションをデプロイする準備ができました。

Spring Petclinicのアプリケーションをデプロイする 🔗

Spring Petclinic JavaアプリケーションをKubernetesクラスターにデプロイします:

  1. spring-petclinic-appディレクトリに petclinic-spec.yaml という名前の新しいYAMLファイルを作成します。このファイルには、Kubernetesでアプリケーションのデプロイメントを設定するために使用するキーと値が格納されます。

  2. このファイルに、以下の重要なキーと値を含めます:

    キー

    備考

    metadata.name

    spring-petclinic

    デプロイの名前

    metadata.namespace

    petclinic

    アプリケーションをデプロイする名前空間

    spec.template.spec.containers

    - name: petclinic-app

    アプリケーションのコンテナの名前

    spec.template.spec.containers

    image: ghcr.io/pavolloffay/spring-petclinic:latest

    Spring Petclinicアプリケーションのイメージ

    spec.template.metadata.annotations

    instrumentation.opentelemetry.io/inject-java: "true"

    Java アプリケーション用の Splunk OpenTelemetry ゼロコードインストルメンテーションを有効化します

    これらのキーと値を追加すると、petclinic-spec.yamlファイルは次の例のようになります:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: spring-petclinic
      namespace: petclinic
    spec:
      selector:
        matchLabels:
          app: spring-petclinic
      template:
        metadata:
          labels:
            app: spring-petclinic
          annotations:
            # Activates zero-code instrumentation for the Java application
            instrumentation.opentelemetry.io/inject-java: "true"
    spec:
      containers:
        - name: petclinic-app
          # Java application to instrument
          image: ghcr.io/pavolloffay/spring-petclinic:latest
          imagePullPolicy: Always
    
  3. 次のコマンドを実行して、アプリケーションのデプロイを開始します:

    kubectl apply -n petclinic -f spring-petclinic-app/petclinic-spec.yaml
    

    このコマンドは、spring-petclinic という新しいデプロイメントと、類似する名前のポッドの実行を開始します。

これで、Spring PetClinic JavaアプリケーションをKubernetesポッドにデプロイできました。

デプロイを検証する 🔗

すべてが正しく実行されていることを確認します。アプリケーションポッド上で次のコマンドを実行して、<pod-name> をSpring Petclinicのアプリケーションポッド名に置き換えます:

kubectl describe pod -n petclinic <pod-name>

出力には、initContainer という名前の opentelemetry-auto-instrumentation-java が表示されています:

Name:             spring-petclinic-65b9764597-lwvkl
Namespace:        petclinic
Priority:         0
Service Account:  default
Node:             minikube/192.168.49.2
Start Time:       Wed, 20 Dec 2023 12:55:02 -0600
Labels:           app=spring-petclinic
                pod-template-hash=65b9764597
Annotations:      instrumentation.opentelemetry.io/inject-java: true
Status:           Running
IP:               10.244.0.9
IPs:
IP:           10.244.0.9
Controlled By:  ReplicaSet/spring-petclinic-65b9764597
Init Containers:
opentelemetry-auto-instrumentation-java:
    Container ID:  docker://1b4a6275e8c3936febc3a5b0dd785e484061d9a0c2f8f1e4b17e9c347797a483
    Image:         ghcr.io/signalfx/splunk-otel-java/splunk-otel-java:v1.30.0
    Image ID:      docker-pullable://ghcr.io/signalfx/splunk-otel-java/splunk-otel-java@sha256:bb3de9e5d7f3577888f547903b62e281885961e3a49baebfb83b6239824ab5a7

この出力には、環境変数 OTEL もいくつか表示されます:

Environment:
  JAVA_TOOL_OPTIONS:                    -javaagent:/otel-auto-instrumentation-java/javaagent.jar
  SPLUNK_OTEL_AGENT:                    (v1:status.hostIP)
  OTEL_SERVICE_NAME:                   spring-petclinic
  OTEL_EXPORTER_OTLP_ENDPOINT:         http://$(SPLUNK_OTEL_AGENT):4317
  OTEL_RESOURCE_ATTRIBUTES_POD_NAME:   spring-petclinic-65b9764597-lwvkl (v1:metadata.name)
  OTEL_RESOURCE_ATTRIBUTES_NODE_NAME:   (v1:spec.nodeName)
  OTEL_PROPAGATORS:                    tracecontext,baggage,b3
  OTEL_RESOURCE_ATTRIBUTES:            splunk.zc.method=splunk-otel-java:v1.30.0,k8s.container.name=petclinic-app,k8s.deployment.name=spring-petclinic,k8s.namespace.name=petclinic,k8s.node.name=$(OTEL_RESOURCE_ATTRIBUTES_NODE_NAME),k8s.pod.name=$(OTEL_RESOURCE_ATTRIBUTES_POD_NAME),k8s.replicaset.name=spring-petclinic-65b9764597,service.version=latest

注釈

initContainer または OTEL 環境が表示されない場合は、kubectl rollout restart -n petclinic <pod-name> を使用してアプリケーションポッドを再起動してください。Javaアプリケーションをデプロイする前に、OpenTelemetry Collectorポッドがアクティブかつ稼働中である必要があります。

Spring PetClinic UIにアクセスする 🔗

Spring PetClinic UIにアクセスするには、以下のステップに従ってください:

  1. spring-petclinic アプリケーションにNodePortサービスを作成します:

    kubectl expose deployment/spring-petclinic --type="NodePort" --port 8080
    
  2. NodePortを取得します:

    kubectl describe svc spring-petclinic | grep "NodePort"
    
  3. ブラウザで、http://<host>:<nodeport> にアクセスしてください。

次のステップ 🔗

これでアプリケーションが実行され、Splunk Application Performance Monitoring(APM)でのデータ表示を開始する準備が整いました。パート 3:Splunk APMでデータを表示する を参照してください。

このページは 2025年02月11日 に最終更新されました。