Skip to main content

sfKubeAgent Installation

Overview#

sfKubeAgent is sfAgent packaged as a container and run as a sidecar within a Kubernetes application pod. It can be configured to collect both application metrics and logs similar to the way sfAgent does.

Integrating sfKubeAgent to application pods#

  • Instantiate sfKubeAgent docker image in the pod

  • Mount sfKubeAgent config map to the container. Config.yaml file used here is similar to the one used for sfAgent. Configurations for specific applications or log types can be found in Integrations section

  • Pass parameters projectName and appName through container’s yaml file. These are mandatory tags and SnappyFlow uses these tags to organize the end-points in a project/ application hierarchy

  • Mount log paths that need to be monitored to sfKubeAgent container in the correct path

Example:#

Below is an example of sfKubeAgent yaml that monitors JVM and Syslog in an application pod.

Pod description YAML#

kind: PodapiVersion: v1metadata: name: jvm-pod labels:  snappyflow/appname: test  snappyflow/projectname: test-new-1spec: containers: - name: java-container   image: ruchira27/jolokia:latest   ports:   - name: jolokiaport     containerPort: 8778   # Snappyflow's sfkubeagent container - name: java-sfagent   image: snappyflowml/sfagent:latest   imagePullPolicy: Always   command:     - /app/sfagent     - -enable-console-log   env:     - name: APP_NAME       value: test     - name: PROJECT_NAME       value: test-new-1   volumeMounts:     - name: configmap-jmx       mountPath: /opt/sfagent/config.yaml       subPath: config.yaml     - name: varlog       mountPath: /var/log volumes: - name: configmap-jmx   configMap:     name: jmx-configmap - name: varlog   hostPath:     path: /var/log

Config Map#

apiVersion: v1kind: ConfigMapmetadata:  name: jmx-configmapdata:  config.yaml: |-    key: Hc0cioeml0Sv7b7MbC+N56DKjygUlcvtP3wLtoUQitk3hw3/SevFv5loicDL9cCJDz3fImeLCuR1MrM/un4z+G2gELVeapNVCh96RhqSDvrV4MV9jMiuGi8RCa8MEj6KzAsvxnBPotbYKiM+11cm0xWOZ7K5G0C6J6T+SLX2/xk9us3BN2MhnBCH1N3xGhlDrNAy7j+KLSKsroiZcDw87iFjSaUzt0ADhCEwEJV3JBLZc2xpSM+n1hm3e4HHnVhaXcOi3Fcb9qD280Ya15t7eTsJywHyhKPcNKXpqF0OGVolLEUDc2vwklHGHIZXHF9hY/+/anS9+VSfhVpBNKVsDb+hDCLJbB8uBivJ9idRcnMvGkhir4kAUcsryCgvpay0ghqKZkjQ7zuhzKYW4/szHoXv+8g/Gn+nnxu3yFAa4aTOq6/AMNCA49S9EmU9Tn2yr+dUhiheWhKWFCTc8jd7vowehcPstNW1t8+SMfERkTqSKo1I/PSG0MGm3vrAa2yfU2GwnsyJnROSF/ylSY5JjTBlmfp7ZozKO8XPc7q+vaMwKEQzcDSqpSE26gOVMxrkYD2ksE/BQPbO2X1YTwlOqHSbr9Z0E5XOJXBSmgT7it7BgBCNro0/YcpALdoyEsJr4FBzM0K4ZwZNpnbDrbs0UIKLISaSGkYGAGBtuEXrusQ=    metrics:      plugins:      - name: jvmjolokia        enabled: true        interval: 300        config:          ip: 127.0.0.1          protocol: http          port: 8778          context: jolokia          monitorDeadlocks: false          deadLockMonitoringInterval: 300    logging:      plugins:      - name: linux-syslog        enabled: true        config:          log_level:            - error            - warning            - info          log_path: /var/log/auth.log,/var/log/messages,/var/log/secure