Adding APM Insight Java agent in Kubernetes via InitContainers

Adding APM Insight Java agent in Kubernetes via InitContainers

Step 1:
Create a secret for the Site24x7 license key in your application namespace.
  1. You can obtain the license key from Applications Manager under APM tab                                                                                                             
      Example:
  1. kubectl create secret generic app-secret --from-literal=s247licensekey='your_APMInsight_license_key' -n petclinic
            Replace app-secretyour_APMInsight_license_key, and namespace (petclinic) with the appropriate values.

Step 2:
Create an empty volume tha
t will be used to copy the agent files during the InitContainers process.

      Example:
  1. volumes:
  2.    - name: APMagent

Step 3:
Include the following InitContainers command in your helm chart/deployment YAML file.
  1. initContainers:
  2.       - name: agent-copy
  3.         image: site24x7/apminsight-javaagent:latest
  4.         imagePullPolicy: IfNotPresent
  5.         command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
  6.         volumeMounts:
  7.         - name: APMagent
  8.           mountPath: /home/apm

Step 4:
Mount the volume created in step 2 into your application container.
      
      Example:
  1. containers:
  2.       - name: petclinic
  3.         image: petclinic:latest
  4.         imagePullPolicy: IfNotPresent
  5.         ports:
  6.         - containerPort: 8080
  7.        volumeMounts:
  8.         - name: s247agent
  9.           mountPath: /home/apm

Step 5:
Add the following environment variables to application containers.
      
      Environment variable 1:
      Name: S247_LICENSE_KEY 
      Value: s247licensekey from the secret added in step 1
      
      Environment variable 2:
      Name: JAVA_TOOL_OPTIONS 
      Value: "-javaagent:[mount/path]/apminsight-javaagent.jar -Dapminsight.application.name=[DesiredMonitorName]"

In this step, we configure the arguments that the application (Java process) will use during startup and the agent to report data to the specified monitor name.

      Example:
  1. env:
  2.         - name: JAVA_TOOL_OPTIONS
  3.           value: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
  4.         - name: S247_LICENSE_KEY
  5.           valueFrom:
  6.             secretKeyRef:
  7.               name: petclinic-secrets
  8.               key: s247_license_key
      
      Example YAML deployment file for your reference:
  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4.   name: petclinic

  5. ---
  6. apiVersion: v1
  7. kind: Secret
  8. metadata:
  9.   name: petclinic-secrets
  10.   namespace: petclinic
  11. type: Opaque
  12. data:
  13.   s247_license_key: OGQ3NTg0YmIxNWE1YTIzYjhmN35rfed2M1M2U3N2ExOTVhNzM1YWYyMg==

  14. ---
  15. apiVersion: apps/v1
  16. kind: Deployment
  17. metadata:
  18.   namespace: petclinic
  19.   name: petclinic-deployment
  20.   labels:
  21.     app: petclinic
  22. spec:
  23.   replicas: 2
  24.   selector:
  25.     matchLabels:
  26.       app: petclinic
  27.   template:
  28.     metadata:
  29.       labels:
  30.         app: petclinic
  31.     spec:
  32.       containers:
  33.       - name: petclinic
  34.         image: petclinic:latest
  35.         imagePullPolicy: IfNotPresent
  36.         ports:
  37.         - containerPort: 8080
  38.         env:
  39.         - name: JAVA_TOOL_OPTIONS
  40.           value: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
  41.         - name: S247_LICENSE_KEY
  42.           valueFrom:
  43.             secretKeyRef:
  44.               name: petclinic-secrets
  45.               key: s247_license_key
  46.         volumeMounts:
  47.         - name: s247agent
  48.           mountPath: /home/apm
  49.       initContainers:
  50.       - name: agent-copy-init
  51.         image: site24x7/apminsight-javaagent:latest
  52.         imagePullPolicy: IfNotPresent
  53.         command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
  54.         volumeMounts:
  55.         - name: s247agent
  56.           mountPath: /home/apm
  57.       volumes:
  58.       - name: s247agent

  59. ---
  60. apiVersion: v1
  61. kind: Service
  62. metadata:
  63.   namespace: petclinic
  64.   name: petclinic-service
  65. spec:
  66.   type: NodePort
  67.   selector:
  68.     app: petclinic
  69.   ports:
  70.     - protocol: TCP
  71.       port: 8080
  72.       targetPort: 8080
  73.       nodePort: 30200


                  New to ADManager Plus?

                    New to ADSelfService Plus?

                      • Related Articles

                      • Adding APM Insight Java agent in a Kubernetes environment

                        There are three methods for installing the APM Insight Java agent in a Kubernetes environment. Using Dockerfile Using InitContainers Using Persistent Volumes Prerequisites Download the latest APM Insight Java agent (apminsight-javaagent.zip) file. ...
                      • Self monitor Applications Manager using APM Insight Java Agent

                        Applications Manager is built with Java, hence we can monitor it using APM Insight Java Agent to measure it's performance continuously, which can be very much useful. Setting up APM Insight Java Agent Follow the below steps to download and set up the ...
                      • APM Insight Java agent setup in K8s via Persistent Volumes

                        Prerequisites 1. A persistent volume (with a capacity of 100mb). 2. The persistent volume mounted on all deployment pods (via persistent volume claim). 3. The Applications Manager APM Insight Java agent zip file was downloaded, moved, and extracted ...
                      • How to rename an existing APM - Java agent application's monitor?

                        In Applications Manager's APM(Application Performance Monitoring) doesn't support renaming applications/monitors from the web client. However, the application name of an existing application instance can be renamed in the `apminsight.conf` file and ...
                      • Uninstrumented Block of Code - APM Insight

                        In the traces tab --> Slowest Method Calls and Count we show if you find Un-instrumented block of code the reason is as follows: Basically, What is un-instrumented block of code in APM Insight? By default, APM Insight agent monitors known frameworks ...