# Sidecar communication

**URL:** <https://discuss.kubernetes.io/t/sidecar-communication/28059>\
**Category:** General Discussions\
**Tags:** minikube\
**Created:** [April 28, 2024, 5:07pm UTC](https://discuss.kubernetes.io/t/sidecar-communication/28059 "2024-04-28T17:07:21Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![sathish6432](https://avatars.discourse-cdn.com/v4/letter/s/8491ac/32.png) [@sathish6432](https://discuss.kubernetes.io/u/sathish6432)\
**Post date:** [April 28, 2024, 5:07pm UTC](https://discuss.kubernetes.io/t/sidecar-communication/28059/1 "2024-04-28T17:07:21Z")

</div>

Hello All, I’m currently attempting to deploy the JMX exporter alongside my Java application (Tomcat), either as a sidecar or as separate pods with the Java application in one pod and the JMX exporter in another. However, I’ve encountered an error message after trying to deploy my application as a sidecar.

As a newcomer to Kubernetes with limited knowledge, I’m reaching out to our community for assistance in resolving this issue. My goal is to monitor the Java application pod and retrieve metrics from it. Any help would be greatly appreciated.

Appliaction Yaml:

apiVersion: apps/v1  
kind: Deployment  
metadata:  
name: gitomcat-deployment  
namespace: default  
spec:  
replicas: 1  
selector:  
matchLabels:  
app: gitomcat  
template:  
metadata:  
labels:  
app: gitomcat  
spec:  
containers:  
- name: gitomcat-container  
image: tomcat:9-jdk8  
ports:  
- containerPort: 2081  
env:  
- name: CATALINA\_OPTS  
value: “-javaagent:/usr/local/jmx/jmx\_prometheus\_javaagent-0.20.0.jar =8088:/usr/local/jmx/conf/prometheus-jmx-config.yaml”  
volumeMounts:  
- name: local-gi  
mountPath: /Apps/GameCode/GI  
- name: agent-volume  
mountPath: /usr/local/jmx  
- name: jmx-prometheus-javaagent  
mountPath: “/Apps/GameCode/GI/jmx\_prometheus\_javaagent-0.20.0.jar”  
- name: prometheus-jmx-config  
mountPath: “/usr/local/jmx/conf”

```
        # - name: local-gi
        # mountPath: /usr/local/tomcat/bin/catalina.sh
        # # - name: local-gi
        # # mountPath: /usr/local/tomcat/conf/context.xml
        # # - name: local-gi
        # # mountPath: /usr/local/tomcat/conf/server.xml
        - name: catalina-log
          mountPath: /usr/local/tomcat/logs
    - name: catalina-log
      image: busybox:1.28
      args:
        - "/bin/sh"
        - "-c"
        - "sleep 20; tail -n+1 -F /usr/local/tomcat/logs/catalina.out"
      volumeMounts:
        - name: catalina-log
          mountPath: /usr/local/tomcat/logs
    - name: fluent-bit
      image: public.ecr.aws/aws-observability/aws-for-fluent-bit:stable
      volumeMounts:
        - name: config-volume
          mountPath: /fluent-bit/etc
        - name: catalina-log
          mountPath: /usr/local/tomcat/logs
    # - name: jmx-exporter
    # image: public.ecr.aws/bitnami/jmx-exporter:0.20.0
    # ports:
    # - name: metrics
    # containerPort: 8081
    # volumeMounts:
    # - name: jmx-config
    # mountPath: /opt/jmx-exporter/config
  volumes:
      - name: catalina-log
        emptyDir: {}
      - name: local-gi
        hostPath:
          path: /Users/pavanreddy/Desktop/GI/
      - name: config-volume
        configMap:
          name: fluent-bit-config
      - name: jmx-config
        configMap:
          name: jmx-config
      - name: agent-volume
        configMap:
          name: jmx-javaagent-configmap
      - name: jmx-prometheus-javaagent
        hostPath:
          path: /Users/pavanreddy/Desktop/jmx_prometheus_javaagent-0.20.0.jar 
      - configMap: 
          name: prometheus-jmx-config
        name: prometheus-jmx-config

```

Error message:

kubectl logs gitomcat-deployment-7697b5c994-dx99l  
Defaulted container “gitomcat-container” out of: gitomcat-container, catalina-log, fluent-bit  
Exception in thread “main” java.lang.reflect.InvocationTargetException  
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)  
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
at java.lang.reflect.Method.invoke(Method.java:498)  
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)  
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)  
Caused by: java.lang.NullPointerException  
at java.util.regex.Matcher.getTextLength(Matcher.java:1283)  
at java.util.regex.Matcher.reset(Matcher.java:309)  
at java.util.regex.Matcher.(Matcher.java:229)  
at java.util.regex.Pattern.matcher(Pattern.java:1093)  
at io.prometheus.jmx.JavaAgent.parseConfig(JavaAgent.java:89)  
at io.prometheus.jmx.JavaAgent.premain(JavaAgent.java:52)  
… 6 more  
FATAL ERROR in native method: processing of -javaagent failed

# 

# A fatal error has been detected by the Java Runtime Environment:

# 

# SIGSEGV (0xb) at pc=0x00007f445e1ff898, pid=1, tid=0x00007f445e1d6640

# 

# JRE version: OpenJDK Runtime Environment (8.0\_402-b06) (build 1.8.0\_402-b06)

# Java VM: OpenJDK 64-Bit Server VM (25.402-b06 mixed mode linux-amd64 compressed oops)

# Problematic frame:

# C [libc.so.6+0x28898] abort+0x178

# 

# Core dump written. Default location: /usr/local/tomcat/core or core.1

# 

# An error report file with more information is saved as:

# /usr/local/tomcat/hs\_err\_pid1.log

# 

# If you would like to submit a bug report, please visit:

# [GitHub · Where software is built](https://github.com/adoptium/adoptium-support/issues)

# 

* * *

I’ve attempted various troubleshooting methods, such as pulling the image from the repository and testing it successfully. I can pull the images from Docker Hub without any issues. However, when I try to run it as a sidecar, I encounter errors.

If anyone has experience with and has successfully implemented this setup in their environment, I would greatly appreciate your assistance and knowledge sharing.
