JBoss EAP XP 6.0 on OpenShift ではじめる OpenTelemetry 可観測性基盤の構築

こんにちは、Technical Account Manager (TAM) の鈴村圭史です。 前回の記事

rheb.hatenablog.com

ではローカル環境(Podman)での可観測性環境の構築方法を紹介しました。今回は、OpenShift Container Platform (OCP) 上に JBoss EAP XP 6.0OpenTelemetry (OTEL) を連携させた可観測性基盤を構築する方法を解説します。

JBoss EAP XP 6.0 は JBoss EAP 8.1 をベースとしており、MicroProfile Telemetry 2.0 をサポートします。これにより、クラウドネイティブ環境でも標準技術でアプリケーション内部の状態を可視化できるようになります。

この記事では、Helm Chart を使ったデプロイ手法 と、OTEL 連携時に発生しがちな 通信エラー(gRPC/HTTP 不整合問題)を防ぐ設定ポイント をわかりやすく整理して紹介します。

アーキテクチャ構成

今回の構成は以下のとおりです。

  • アプリケーション:JBoss EAP XP 6.0(S2I ビルド / Helm Chart デプロイ)
  • サンプルアプリ:Quickstart opentelemetry-tracing
  • 観測基盤:OpenTelemetry Collector(Deployment モード)
  • 通信プロトコル:OTLP/HTTP(protobuf)
前提条件
  • oc と helm が利用可能であること
手順 1: プロジェクトの作成

まずは検証用のプロジェクトを作成します。

oc new-project xp6-demo
手順 2: OpenTelemetry Collector のデプロイ

OTLP/HTTP でトレースデータを受信する Collector を Deployment としてデプロイします。

otel-collector.yaml

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: otel
spec:
  mode: deployment
  config:
    receivers:
      otlp:
        protocols:
          http:
            endpoint: 0.0.0.0:4318
    processors:
      batch: {}
      memory_limiter:
        check_interval: 1s
        limit_percentage: 50
        spike_limit_percentage: 30
    exporters:
      debug:
        verbosity: detailed
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [memory_limiter, batch]
          exporters: [debug]
        logs:
          receivers: [otlp]
          processors: [memory_limiter, batch]
          exporters: [debug]
        metrics:
          receivers: [otlp]
          processors: [memory_limiter, batch]
          exporters: [debug]

ポイント

  • endpoint: 0.0.0.0:4318 → HTTP/OTLP で受信するための設定
  • verbosity: detailed → Collector のログでトレース内容を確認するためのデバッグ設定

適用します。

oc apply -f otel-collector.yaml
oc get service otel-collector
手順 3: Helm Chart 設定ファイルの作成(重要)

JBoss EAP XP 6.0 をデプロイするための helm.yaml を作成し、OTEL の環境変数を定義します。

helm.yaml

build:
  uri: https://github.com/jboss-developer/jboss-eap-quickstarts.git
  ref: xp-6.0.x
  contextDir: opentelemetry-tracing
  mode: s2i

deploy:
  replicas: 1
  env:
    - name: OTEL_TRACES_EXPORTER
      value: otlp
    - name: OTEL_EXPORTER_OTLP_ENDPOINT
      value: http://otel-collector:4318
    - name: OTEL_EXPORTER_OTLP_PROTOCOL
      value: http/protobuf
    - name: OTEL_SERVICE_NAME
      value: eap-xp6-tracing-demo

ここが特に重要!

OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf XP 6.0 の OTEL エクスポーターはデフォルト gRPC。 Collector 側は HTTP。

手順 4: アプリケーションのデプロイ

Helm Chart を使って XP 6.0 アプリケーションをデプロイします。

helm repo add jboss-eap https://jbossas.github.io/eap-charts/
helm install otel-demo -f helm.yaml jboss-eap/eap8

しばらくすると、otel-demo Pod が起動します。

# oc get pod
NAME                                READY   STATUS                   RESTARTS   AGE
otel-collector-69577ccd59-69bl4     1/1     Running                  0          13m
otel-demo-2-build                   0/1     Completed                0          27h
otel-demo-586f5d7fc4-dpfx2          1/1     Running                  0          17m
otel-demo-build-artifacts-1-build   0/1     Completed                0          27h
手順 5: 動作確認

1. アプリケーションへアクセスしトレースを生成

URL=$(oc get route otel-demo --template='{{ .spec.host }}')
curl -k https://$URL/opentelemetry-tracing

2. Collector のログでトレースを確認

oc logs otel-collector-69577ccd59-69bl4 -f

以下のようなログが表示されれば成功です。

  • service.name: eap-xp6-tracing-demo
  • url.path: /opentelemetry-tracing/
2025-12-12T05:22:27.515Z info    Traces  {"resource": {"service.instance.id": "7cd11e01-c2c0-43b1-9edc-a3c1689664c1", "service.name": "otelcol", "service.version": "0.135.0"}, "otelcol.component.id": "debug", "otelcol.component.kind": "exporter", "otelcol.signal": "traces", "resource spans": 1, "spans": 1}
2025-12-12T05:22:27.515Z    info    ResourceTraces #0 service.name=eap-xp6-tracing-demo telemetry.sdk.language=java telemetry.sdk.name=opentelemetry telemetry.sdk.version=1.42.1.redhat-00001
ScopeTraces #0 io.smallrye.opentelemetry@2.9.2.redhat-00001
GET /opentelemetry-tracing/ d1d86a289c3ea92f9077d291889b218f 177921993954f6a6 http.response.status_code=200 url.scheme=https network.transport=tcp http.request.method=GET http.route=/opentelemetry-tracing/ server.address=otel-demo-xp6-demo.apps.test.lab.local client.address=172.16.0.1 user_agent.original=curl/8.12.1 url.path=/opentelemetry-tracing
    {"resource": {"service.instance.id": "7cd11e01-c2c0-43b1-9edc-a3c1689664c1", "service.name": "otelcol", "service.version": "0.135.0"}, "otelcol.component.id": "debug", "otelcol.component.kind": "exporter", "otelcol.signal": "traces"}
まとめ

今回は、OpenShift 上で JBoss EAP XP 6.0 と OpenTelemetry を連携させる方法を紹介しました。 XP 6.0 の持つ最新の可観測性機能を、ぜひ OpenShift 環境でも活用してみてください。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。