Docs » Splunk Distribution of the OpenTelemetry Collector の利用開始 » Automatic discovery of apps and services » Automatic discovery for Kubernetes » チュートリアル:KubernetesでJavaアプリケーションからトレースをキャプチャする » Part 2: Deploy the Collector and Java application

Part 2: Deploy the Collector and Java application 🔗

Now that you’ve configured a Kubernetes environment, you can deploy the Splunk Distribution of OpenTelemetry Collector.

Deploy the Splunk Distribution of OpenTelemetry Collector 🔗

Using Helm, deploy the Splunk Distribution of OpenTelemetry Collector in your Kubernetes namespace:

  1. In a command line interface, run the following command:

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

    This command uses the values.yaml file from the previous step to configure and deploy the Splunk Distribution of OpenTelemetry Collector through Helm.

  2. Run the following command to view all pods in the petclinic namespace:

    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への送信を開始する準備ができていることを示しています。

You’ve now deployed the Splunk Distribution of OpenTelemetry Collector, and we’re ready to deploy the Spring Petclinic application.

Deploy the Spring Petclinic application 🔗

Deploy the Spring Petclinic Java application in your Kubernetes cluster:

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

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

    キー

    備考

    metadata.name

    spring-petclinic

    Name of the deployment

    metadata.namespace

    petclinic

    Namespace to deploy the application in

    spec.template.spec.containers

    - name: petclinic-app

    Name of the container for the application

    spec.template.spec.containers

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

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

    spec.template.metadata.annotations

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

    Activates Splunk OpenTelemetry zero-code instrumentation for the Java application

    After adding these keys and values, your petclinic-spec.yaml file looks like the following example:

    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. Run the following command to start the application deployment:

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

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

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

Verify your deployment 🔗

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

kubectl describe pod -n petclinic <pod-name>

The output shows an initContainer called 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

The output also shows several OTEL environment variables:

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にアクセスする 🔗

Follow these steps to access the Spring PetClinic UI:

  1. Create a NodePort service for the spring-petclinic application:

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

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

Next step 🔗

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

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