Kubernetes monitoring using Snap
This docker image is designed to deployed into Kubernets as a DaemonSet, causing it to run on every node in the cluster. For the best results, we recommend you use the Grafana kubernetes-app see - https://grafana.net/
For manual deployment the following kubernetes manifest can be used.
apiVersion: v1
kind: ConfigMap
metadata:
name: snap-tasks
namespace: kube-system
data:
core.json: |-
{
"version": 1,
"schedule": {
"type": "simple",
"interval": "10s"
},
"start": true,
"workflow": {
"collect": {
"metrics": {
"/intel/docker/*":{},
"/intel/procfs/cpu/*": {},
"/intel/procfs/meminfo/*": {},
"/intel/procfs/iface/*": {},
"/intel/linux/iostat/*": {},
"/intel/procfs/load/*": {}
},
"config": {
"/intel/procfs": {
"proc_path": "/proc_host"
}
},
"process": null,
"publish": [
{
"plugin_name": "graphite",
"config": {
"prefix": "snap.CLUSTER_NAME.<%NODE%>",
"server": "graphite.host.name",
"port": 2003
}
}
]
}
}
}
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
labels:
daemon: snapd
name: snap
namespace: kube-system
spec:
template:
metadata:
labels:
daemon: snapd
name: snap
spec:
containers:
- env:
- name: PROCFS_MOUNT
value: /proc_host
- name: SNAP_PORT
value: "8181"
image: raintank/snap_k8s:latest
imagePullPolicy: Always
name: snap
securityContext:
privileged: true
ports:
- containerPort: 8181
hostPort: 8181
name: snap-api
protocol: TCP
volumeMounts:
- mountPath: /sys/fs/cgroup
name: cgroup
- mountPath: /var/run/docker.sock
name: docker-sock
- mountPath: /var/lib/docker
name: fs-stats
- mountPath: /usr/local/bin/docker
name: docker
- mountPath: /proc_host
name: proc
- mountPath: /opt/snap/tasks
name: snap-tasks
hostNetwork: true
hostPID: true
restartPolicy: Always
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /dev
name: dev
- hostPath:
path: /sys/fs/cgroup
name: cgroup
- hostPath:
path: /var/run/docker.sock
name: docker-sock
- hostPath:
path: /var/lib/docker
name: fs-stats
- hostPath:
path: /usr/bin/docker
name: docker
- hostPath:
path: /proc
name: proc
- configMap:
defaultMode: 420
name: snap-tasks
name: snap-tasks
make
Ensure that you are logged into DockerHub
docker login
Then run push the image to your account.
make push REPO=<Your DockerHub Org>