4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コンテナ環境で Instana に Java アプリをつないでみる (Instana Java Agent と OTel Java Agent)

4
Last updated at Posted at 2025-12-20

はじめに

Instana Agent をコンテナで立て、Spring Boot アプリから

  • Instana Java Agent
  • OpenTelemetry Java Agent

の 2 パターンでトレース/メトリクスを送って動作確認します。

コード:

試したこと

以下の順番で試しました。通信が多い時は、一歩ずつ進めるの大事。

  1. Instana Agent をコンテナでビルドして Instana バックエンド接続しメトリクスを確認。
  2. Instana Agent に java アプリから instana java agent でデータを送るようにしてトレースを確認。
  3. Instana Agent に java アプリから otel java agent で接続してトレースを確認

詳細はコードを見てください。

Instana Agent の準備

Instana UI から情報取得できます。

2025-12-19-12-57-00.png
2025-12-19-12-57-35.png
2025-12-19-12-56-50.png

構成

以下のような構成にしました。環境依存を減らすために docker で試してます。

  • instana-agent: Instana Agent コンテナ(APM + OTLP 受信)。INSTANA_AGENT_ENDPOINT/KEY.env で指定。
  • health-api: Spring Boot 簡易ヘルス API。Instana Java agent を同梱して Instana Agent 経由で送信。/health が 200 OK。
  • otel-api: Spring Boot 簡易ヘルス API。OpenTelemetry Java auto-instrumentation (v1.33.0) で起動し、OTLP gRPC で Instana Agent (http://instana-agent:4317) に送信。/health が 200 OK。

主要ファイル

主要な設定は以下のとおりです。

OTel の方の Java のコンテナ

FROM maven:3.9-eclipse-temurin-21 AS build
WORKDIR /app
COPY pom.xml .
RUN mvn -B -q dependency:go-offline
COPY src ./src
RUN mvn -B -q package -DskipTests

FROM eclipse-temurin:21-jre
WORKDIR /app
COPY --from=build /app/target/otel-api-0.0.1-SNAPSHOT.jar app.jar
ENV OTEL_JAVA_AGENT_VERSION=1.33.0
# Download the OpenTelemetry Java auto-instrumentation agent (public).
RUN set -eu \
 && curl -Lf "https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v${OTEL_JAVA_AGENT_VERSION}/opentelemetry-javaagent.jar" \
      -o /opt/otel-javaagent.jar
EXPOSE 8080
ENTRYPOINT ["java","-javaagent:/opt/otel-javaagent.jar","-jar","/app/app.jar"]

Instana の方の Java コンテナ

FROM maven:3.9-eclipse-temurin-21 AS build
WORKDIR /app
COPY pom.xml .
RUN mvn -B -q dependency:go-offline
COPY src ./src
RUN mvn -B -q package -DskipTests

FROM eclipse-temurin:21-jre
WORKDIR /app
COPY --from=build /app/target/health-api-0.0.1-SNAPSHOT.jar app.jar
# Download the Instana Java agent from Maven Central (public, no auth required).
RUN set -eu \
 && curl -Lf "https://repo1.maven.org/maven2/com/instana/instana-javaagent/1.0.0/instana-javaagent-1.0.0.jar" \
      -o /opt/instana-agent.jar
EXPOSE 8080
ENTRYPOINT ["java","-javaagent:/opt/instana-agent.jar","-jar","/app/app.jar"]

コンテナの連携

docker-compose.yaml
services:
  instana-agent:
    image: icr.io/instana/agent
    privileged: true
    pid: "host"
    environment:
      INSTANA_AGENT_ENDPOINT: ingress-magenta-saas.instana.rocks
      INSTANA_AGENT_ENDPOINT_PORT: 443
      INSTANA_AGENT_KEY: ${INSTANA_AGENT_KEY:-}
      INSTANA_DOWNLOAD_KEY: ${INSTANA_DOWNLOAD_KEY:-}
      INSTANA_AGENT_OPEN_TELEMETRY_GRPC_LISTEN_ADDRESS: 0.0.0.0
      INSTANA_AGENT_OPEN_TELEMETRY_HTTP_LISTEN_ADDRESS: 0.0.0.0
    volumes:
      - /var/run:/var/run
      - /run:/run
      - /dev:/dev:ro
      - /sys:/sys:ro
      - /var/log:/var/log:ro

  health-api:
    build:
      context: ./health-api
    ports:
      - "8080:8080"
    environment:
      - SPRING_PROFILES_ACTIVE=default
      - INSTANA_AGENT_HOST=instana-agent
      - INSTANA_AGENT_PORT=42699

  otel-api:
    build:
      context: ./otel-api
    ports:
      - "8081:8080"
    environment:
      - SPRING_PROFILES_ACTIVE=default
      - OTEL_SERVICE_NAME=otel-api
      - OTEL_EXPORTER_OTLP_ENDPOINT=http://instana-agent:4317
      - OTEL_EXPORTER_OTLP_PROTOCOL=grpc
      - OTEL_TRACES_EXPORTER=otlp
      - OTEL_METRICS_EXPORTER=otlp
      - OTEL_LOGS_EXPORTER=otlp

結果

メトリクス確認する際は、hostname で検索するのが良いと思います。コンテナだとこれでわかります。

docker compose exec instana-agent hostname


2025-12-19-13-02-23.png

トレースは今回の設定だとotel-apiで検索できました。

2025-12-19-13-06-04.png
2025-12-19-13-03-11.png

おわりに

Instana 等の APM って導入・お試しの心理的ハードル高いと思うのですが、ローカルでコンテナ使えば比較的簡単に試せるので興味あればぜひ。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?