Skip to content

JMX receiver was not starting in Kubernetes pod #40794

Open
@saikalyanbhagavathula

Description

@saikalyanbhagavathula

Component(s)

receiver/jmx

What happened?

Description

I tried to start a jmx receiver in a kubernetes pod but getting below error while starting the jmx receiver.

$ kubectl logs otel-collector-2pmlq -n default
Defaulted container "otel-collector" out of: otel-collector, init-downloader (init)
2025-06-18T06:13:03.526Z info [email protected]/service.go:199 Setting up own telemetry... {"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}}
2025-06-18T06:13:03.527Z info builders/builders.go:26 Development component. May change in the future. {"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}, "otelcol.component.id": "debug", "otelcol.component.kind": "exporter", "otelcol.signal": "metrics"}
2025-06-18T06:13:03.531Z info [email protected]/service.go:259 Starting otelcol-contrib... {"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}, "Version": "0.128.0", "NumCPU": 24}
2025-06-18T06:13:03.531Z info extensions/extensions.go:41 Starting extensions... {"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}}
2025-06-18T06:13:03.533Z info [email protected]/otlp.go:117 Starting GRPC server {"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}, "otelcol.component.id": "jmx", "otelcol.component.kind": "receiver", "endpoint": "0.0.0.0:34605"}
2025-06-18T06:13:03.533Z info [email protected]/service.go:282 Everything is ready. Begin running and processing data. {"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}}
2025-06-18T06:13:03.539Z error subprocess/subprocess.go:244 subprocess died {"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}, "otelcol.component.id": "jmx", "otelcol.component.kind": "receiver", "otelcol.signal": "metrics", "error": "fork/exec /opt/java/java-17-openjdk/bin/java: no such file or directory"}
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver/internal/subprocess.(*Subprocess).run
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/[email protected]/internal/subprocess/subprocess.go:244
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver/internal/subprocess.(*Subprocess).Start.func1
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/[email protected]/internal/subprocess/subprocess.go:117

Steps to Reproduce

Pasting the config in below config section

Expected Result

Expected to jmx receiver start and collect metrics.

Actual Result

Jmx receiver failing with below error.

2025-06-18T06:13:03.533Z info [email protected]/service.go:282 Everything is ready. Begin running and processing data. {"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}}
2025-06-18T06:13:03.539Z error subprocess/subprocess.go:244 subprocess died {"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}, "otelcol.component.id": "jmx", "otelcol.component.kind": "receiver", "otelcol.signal": "metrics", "error": "fork/exec /opt/java/java-17-openjdk/bin/java: no such file or directory"}
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver/internal/subprocess.(*Subprocess).run
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/[email protected]/internal/subprocess/subprocess.go:244
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver/internal/subprocess.(*Subprocess).Start.func1
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/[email protected]/internal/subprocess/subprocess.go:117

Collector version

0.128.0

Environment information

No response

OpenTelemetry Collector configuration

apiVersion: v1
kind: ConfigMap
metadata:
  name: otel-collector-config
  namespace: default
data:
  otel-collector-config.yaml: |
    receivers:
      jmx:
        jar_path: /opt/jmx/opentelemetry-java-contrib-jmx-metrics.jar
        endpoint: service:jmx:rmi:///jndi/rmi://0.0.0.0:5656/jmxrmi
        collection_interval: 10s
        target_system: jvm
    processors: 
    exporters: 
      debug:
        verbosity: detailed
    service:
      pipelines:
        metrics:
          receivers:
            - jmx
          processors:
          exporters:
            - debug

---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: otel-collector
  namespace: default
spec:
  selector:
    matchLabels:
      app: otel-collector
  template:
    metadata:
      labels:
        app: otel-collector
    spec:
      serviceAccountName: otel-collector-sa
      volumes:
        - name: otel-java-bin
          emptyDir: {}
        - name: otel-collector-config-vol
          configMap:
            name: otel-collector-config
        - name: otel-jmx-jar
          emptyDir: {}
        - name: tmp-dir
          emptyDir: {}

      initContainers:
        - name: init-downloader
          image: alpine
          command:
            - sh
            - -c
            - >
              apk add --no-cache wget openjdk17 &&
              cp -r /usr/lib/jvm/java-17-openjdk /opt/java &&
              wget -O /opt/jmx/opentelemetry-java-contrib-jmx-metrics.jar https://github.com/open-telemetry/opentelemetry-java-contrib/releases/download/v1.46.0/opentelemetry-jmx-metrics.jar && echo "jar download" && java -version && ls /opt && ls /opt/jmx 
          volumeMounts:
            - name: otel-java-bin
              mountPath: /opt/java
            - name: otel-jmx-jar
              mountPath: /opt/jmx

      containers:
        - name: otel-collector
          image: otel/opentelemetry-collector-contrib:0.128.0
          env:
            - name: K8S_NODE_NAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: status.hostIP
            - name: PATH
              value: $PATH:/opt/java/java-17-openjdk/bin
          args:
            - "--config=/etc/otel-collector-config.yaml"
          volumeMounts:
            - name: otel-collector-config-vol
              mountPath: /etc/otel-collector-config.yaml
              subPath: otel-collector-config.yaml
            - name: otel-jmx-jar
              mountPath: /opt/jmx
            - name: tmp-dir
              mountPath: /tmp
            - name: otel-java-bin
              mountPath: /opt/java

Log output

kubectl logs otel-collector-2pmlq -n default
Defaulted container "otel-collector" out of: otel-collector, init-downloader (init)
2025-06-18T06:13:03.526Z	info	[email protected]/service.go:199	Setting up own telemetry...	{"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}}
2025-06-18T06:13:03.527Z	info	builders/builders.go:26	Development component. May change in the future.	{"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}, "otelcol.component.id": "debug", "otelcol.component.kind": "exporter", "otelcol.signal": "metrics"}
2025-06-18T06:13:03.531Z	info	[email protected]/service.go:259	Starting otelcol-contrib...	{"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}, "Version": "0.128.0", "NumCPU": 24}
2025-06-18T06:13:03.531Z	info	extensions/extensions.go:41	Starting extensions...	{"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}}
2025-06-18T06:13:03.533Z	info	[email protected]/otlp.go:117	Starting GRPC server	{"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}, "otelcol.component.id": "jmx", "otelcol.component.kind": "receiver", "endpoint": "0.0.0.0:34605"}
2025-06-18T06:13:03.533Z	info	[email protected]/service.go:282	Everything is ready. Begin running and processing data.	{"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}}
2025-06-18T06:13:03.539Z	error	subprocess/subprocess.go:244	subprocess died	{"resource": {"service.instance.id": "e8bf9d6e-9fa3-40e3-a7b7-f830ab8d6146", "service.name": "otelcol-contrib", "service.version": "0.128.0"}, "otelcol.component.id": "jmx", "otelcol.component.kind": "receiver", "otelcol.signal": "metrics", "error": "fork/exec /opt/java/java-17-openjdk/bin/java: no such file or directory"}
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver/internal/subprocess.(*Subprocess).run
	github.com/open-telemetry/opentelemetry-collector-contrib/receiver/[email protected]/internal/subprocess/subprocess.go:244
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver/internal/subprocess.(*Subprocess).Start.func1
	github.com/open-telemetry/opentelemetry-collector-contrib/receiver/[email protected]/internal/subprocess/subprocess.go:117

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions