How to add 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 your site24x7 account by navigating to Admin > Developer > Device Key.
      Example:
  1. kubectl create secret generic app-secret --from-literal=s247licensekey='your_s247_license_key' -n petclinic
            Replace app-secret, your_s247_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: s247agent

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: s247agent
  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

    • Related Articles

    • How to add APM Insight Java agent without application restart?

      In general, after installing the APM Insight Java agent, you have to restart your application for the agent to capture monitoring data. But in case of critical issues in the app, like sudden application slowness, where you haven't installed APM ...
    • How to upgrade the APM Insight Java agent to the latest version that supports Java 6 and 7?

      Java agent version 5.7.0 and above deprecates support for Java applications running on Java 6 and 7. Please see this community post for more details. If you don't want to upgrade to Java 8, you can stick with Java 6 or 7. Since Java agent version ...
    • Steps to troubleshoot when you get NO DATA message for Java applications.

      After adding APM Insight Java agent, if you get NO DATA message, it could be because of probable reasons like network issues or zero traffic in your application. Kindly read through the below given instructions to troubleshoot.  Reason Cause Solution ...
    • DC migration steps for APM Insight agents

      For Server based installations 1. Obtain the new device key. 2. Update the license.key value in the APM Insight configuration file (or the environment variable mentioned) with the new device key. The location varies for each agent, as listed below: ...
    • How to rename an APM Insight application?

      Site24x7 APM Insight 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 the agent associated with that instance will ...