caapm/kubernetesmonitor

By caapm

Updated almost 2 years ago

DX APM Kubernetes Monitor

Image
7

1M+

caapm/kubernetesmonitor repository overview

DX APM Kubernetes Monitor

CA APM Kubernetes Monitoring is an extension that provides full monitoring insights into the containerized applications that you deploy, scale and manage with Kubernetes. Use the extension to monitor the availability and performance of your containerized applications, processes and cloud instances. Manage dependencies between your hosts and applications in Docker and Kubernetes container clusters in real time, and use the collected metrics data to streamline up or down-scaling of your environment.

Minimum Supported Version

Docker Remote API v1.23 Docker Server version 1.11.x Kubernetes 1.6.0 + upto 1.16

Supported Tags
TagsDateSupported APM VersionInternal Build Number
latest15-Jan-202011.x, DX APMRelease 20.1.0.0_fixes ( 24 )
2020011415-Jan-202011.x, DX APMRelease 20.1.0.0_fixes ( 24 )
2.0.2.527-Sep-201911.x, DX APMRelease 11.1.0.3_fixes ( 11 )
2.0.218-Feb-2019APM SaaS (DxI) , 10.7 SP2 +Release 10.7.0.45 ( 990045 )
2.0.126-Oct-2018APM SaaS (DxI) , 10.7 SP2 +Release 10.6.0.179 ( 990179 )
2.003-Oct-2018APM SaaS (DxI) , 10.7 SP2 +Release 10.6.0.173 ( 990173 )
1.014-Apr-201810.7 , SP1Release 10.7.0.0_sp (Build 22)
Tag content

latest

  • Pointing to 20200114 tag

2.0.2

  • Fix 3rd party vulnerability and create a slim image
  • Platform Support till 1.13
  • Add support on installing Agent on Master Nodes
  • Bug fixes

2.0.1

  • Support for percentage utilisation for Memory RSS , Memory Cache and Memory Swap

2.0

  • Support for Throttling Metrics of Kubernetes Pod
  • Support for CPU Utilization (mCore) and Memory Cache & RSS metrics
  • Address possible Metric Explosion due to frequent scale up and down
  • Cluster node metrics
  • Health of the Kubernetes Deployment
  • Bug Fixes

1.0

  • Initial version of KubernetesMonitor

Installation

Run the following yml

kubectl create -f caagent-kubernetesmonitor.yml 
Note :
  • The following YML file contains a deployment & daemonset and the containers need to run in privileged mode.

  • Replace the following variables with your setup details

[AGENTMANAGER_URL]  : Agent/EM Connection details - similar to what we provide on IntroscopeAgent.profile
[AGENTMANAGER_CREDENTIAL] : Agent Manager Credentials needed to connect any SaaS instance 
[KUBERNETES_CONNECTION_URL] : Kubernetes connection details . This can be obtained by running  kubectl config view
[APITOKEN] : API Token for the connection URL. You can obtain this through creating a service account with cluster-reader role on the default workspace.
Content of caagent-kubernetesmonitor.yml
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: caagent
  labels:
    tier: monitoring
    app: caagent
    version: v1

spec:
  template:
    metadata:
      labels:
        app: caagent
    spec:
      hostPID: true
      hostIPC: true
      hostNetwork: true
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      containers:
        - resources:
          securityContext:
            privileged: true

          env:
            - name: containerflow
              value: enabled
            - name: agentManager_url_1
              value: [AGENTMANAGER_URL]
            - name: agentManager_credential
              value: [AGENTMANAGER_CREDENTIAL]
            - name: type
              value: Kubernetes
            - name: interval
              value: "60"
            - name: apmenv_introscope_agent_extensions_bundles_load
              value: OpenshiftMonitor, HostMonitor

          name: podmonitor
          image: caapm/kubernetesmonitor:latest
          imagePullPolicy: Always
          livenessProbe:
            exec:
              command:
              - /bin/bash
              - -c
              - "if (( $(expr `date +%s` - `stat -c %Y /tmp/apmia-health/extensions/Docker-health.txt`) > 120 )); then exit 1; fi"
            initialDelaySeconds: 120
          resources:
            limits:
              cpu: 500m
              memory: 700Mi
            requests:
              cpu: 200m
              memory: 300Mi

          volumeMounts:
            - name: dockersock
              mountPath: /var/run/docker.sock
              readOnly: true
            - name: proc
              mountPath: /host/proc
              readOnly: true
 
      volumes:
        - name: dockersock
          hostPath:
            path: /var/run/docker.sock
        - name: proc
          hostPath:
            path: /proc
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: caagent-deployment
  labels:
    tier: monitoring
    app: caagent_v2
    version: v1

spec:
  # oc adm policy add-scc-to-user privileged -z default
  template:
    metadata:
      labels:
        app: caagent_v2
    spec:
      hostPID: true
      hostIPC: true
      hostNetwork: true
      containers:
        - resources:
          securityContext:
            privileged: true

          env:
            - name: agentManager_url_1
              value: [AGENTMANAGER_URL]
            - name: agentManager_credential
              value: [AGENTMANAGER_CREDENTIAL]
            - name: connectionurl
              value: [KUBERNETES_CONNECTION_URL]
            - name: apitoken
              value: [APITOKEN]
            - name: type
              value: Kubernetes
            - name: HostMonitoring
              value: disabled
            - name: MIN_HEAP_VAL_IN_MB
              value: "400"
            - name: MAX_HEAP_VAL_IN_MB
              value: "800"
          name: kubemetainfo
          image: caapm/kubernetesmonitor:latest
          resources:
            limits:
              cpu: 700m
              memory: 1000Mi
            requests:
              cpu: 400m
              memory: 500Mi
          imagePullPolicy: Always
          livenessProbe:
            exec:
              command:
              - /bin/bash
              - -c
              - "if (( $(expr `date +%s` - `stat -c %Y /tmp/apmia-health/extensions/Kubernetes-health.txt`) > 900 )); then exit 1; fi"
            initialDelaySeconds: 120
How to obtain the APITOKEN
  • Create a Service Account on "default" namespace
kubectl create sa caapm
  • Add cluster-reader role
kubectl create clusterrolebinding cluster-read --serviceaccount=default:caapm  --clusterrole=cluster-admin
  • Get token
kubectl get secrets|grep caapm-token| cut -f1 -d " "|xargs kubectl describe secret | grep token

Uninstallation

kubectl delete -f caagent-kubernetesmonitor.yml 

FAQ and Troubleshooting

How to monitor some specific namespace from my entire cluster ?

If you want to capture data from ns1 and ns2 only – you need to pass this additional ENV variable during deployment on both DaemonSet and Deployment configuration :

- name: KUBERNETES_NAMESPACE_MONITOR_LIST 
  value: ns1, ns2
Agent fails to connect to 10.7 EM

If you are using the image from latest or 20200114 tag onwards , you need to pass this additional ENV variable in both Deployment and DaemonSet Pods in order to establish the connection to 10.7 EM. This is not needed in case you are connecting to SaaS or 11.X EM

- name: apmenv_introscope_agent_connection_compatibility_version
  value: "10.7"

Tag summary

Content type

Image

Digest

sha256:7092c9781

Size

106.8 MB

Last updated

almost 2 years ago

docker pull caapm/kubernetesmonitor:test