containercon sysdig slides

39
The Dark Art of Container Monitoring Loris Degioanni

Upload: loris-degioanni

Post on 16-Apr-2017

663 views

Category:

Presentations & Public Speaking


1 download

TRANSCRIPT

Page 1: ContainerCon sysdig Slides

The Dark Art of Container Monitoring

Loris Degioanni

Page 2: ContainerCon sysdig Slides

Me

Loris DegioanniCreator and CEO of sysdigPast: WinPcap, Wireshark

@lorisdegio

Page 3: ContainerCon sysdig Slides

Containers Are Great…

• less overhead• faster deployments• reproducibility of environments• cost optimizations• Isolation• flexibility

Page 4: ContainerCon sysdig Slides

…But Inspecting Containers Is Not Easy

Containers are:• Isolated• Self-Contained• Simple• Lightweight

Page 5: ContainerCon sysdig Slides

…But Inspecting Containers Is Not Easy

Containers are:• Isolated• Self-Contained• Simple• Lightweight

Can monitoring and troubleshooting respect these properties?

Page 6: ContainerCon sysdig Slides

•Containers•Overview of monitoring/troubleshooting options • command line• cAdvisor• Docker stats• sysdig

• Examples and demos

In This Talk

Page 7: ContainerCon sysdig Slides

•Containers•Overview of monitoring/troubleshooting options • command line• cAdvisor• Docker stats• sysdig

• Examples and demos

In This Talk

Page 8: ContainerCon sysdig Slides

•Containers•Overview of monitoring/troubleshooting options • command line• cAdvisor• Docker stats• sysdig

• Examples and demos

In This Talk

Page 9: ContainerCon sysdig Slides

Hypervisor

Monitoring VMs

VM1 VM3VM2

Page 10: ContainerCon sysdig Slides

Hypervisor

Monitoring VMs, Option 1

VM1 VM3VM2

Hypervisor-level instrumentation,Amazon CloudWatch

Page 11: ContainerCon sysdig Slides

Hypervisor

Monitoring VMs, Option 2

VM1 VM3VM2

Monitoring Agent

Page 12: ContainerCon sysdig Slides

OS

Monitoring Containers

Container1 Container3Container2

Page 13: ContainerCon sysdig Slides

OS

Monitoring Containers, Option 1

Container1 Container3Container2

Monitoring Agent

Page 14: ContainerCon sysdig Slides

OS

Monitoring Containers, Option 1

Container1 Container3Container2

Monitoring Agent

• Not scalable• Not composable• Adds dependencies/size• Kills the concept of one process per container

Page 15: ContainerCon sysdig Slides

OS

Monitoring Containers, Option 2

Container1 Container3Container2

Container runtime – level monitoringKernel-level instrumentation

Page 16: ContainerCon sysdig Slides

OS

Monitoring Containers, Option 3

Container1 MonitoringContainer

Container2

Page 17: ContainerCon sysdig Slides

•Containers•Overview of monitoring/troubleshooting options • command line• cAdvisor• Docker stats• sysdig

• Examples and demos

In This Talk

Page 18: ContainerCon sysdig Slides

•Containers•Overview of monitoring/troubleshooting options • command line• cAdvisor• Docker stats• sysdig

• Examples and demos

In This Talk

Page 19: ContainerCon sysdig Slides

•Containers•Overview of monitoring/troubleshooting options • command line• cAdvisor• Docker stats• sysdig

• Examples and demos

In This Talk

Page 20: ContainerCon sysdig Slides

In The Rest of this Talk

•Overview of Open Source monitoring/troubleshooting options • command line• cAdvisor• Docker stats• sysdig

• Examples and demos

Page 21: ContainerCon sysdig Slides

In The Rest of this Talk

•Overview of Open Source monitoring/troubleshooting options • command line• cAdvisor• Docker stats• sysdig

• Examples and demos

Page 22: ContainerCon sysdig Slides

Some Things We Want to Monitor

• Resource usage (CPU/Memory/Disk)• Network activity• File I/O activity• Errors/faults• Application activity/Logs• Topology

Page 23: ContainerCon sysdig Slides

Resource Usage (CPU/Memory/Disk)

• ps/top/htop from the host• Pro: always there• Cons: Very limited container context (full cgroup string only), work only from

the main host

• docker ps / docker top / docker stats• Pro: always there, APIs• Cons: Docker only, limited interactivity

• cAdvisor• sysdig

Page 24: ContainerCon sysdig Slides

Installing cAdvisorsudo docker run \--volume=/:/rootfs:ro \--volume=/var/run:/var/run:rw \--volume=/sys:/sys:ro \--volume=/var/lib/docker/:/var/lib/docker:ro \--publish=8080:8080 \--detach=true \--name=cadvisor \google/cadvisor:latest

Page 25: ContainerCon sysdig Slides

cAdvisor Pros and Cons

Pros• easy to install• works from a container• user friendly (web UI)• API• Integrations (e.g. InfluxDB, Prometheus, Heapster)

Cons: • (very) Limited set of metrics• Containers are black boxes

Page 26: ContainerCon sysdig Slides

Docker Stats APIThe most sophisticated Docker stats poller ever:echo -e "GET /containers/mysql/stats HTTP/1.1\r\n" | nc -U /var/run/docker.sock

Info:http://docs.docker.com/reference/api/docker_remote_api_v1.17/#get-container-stats-based-on-resource-usage

Page 27: ContainerCon sysdig Slides

Docker Stats API Pros and Cons

Pros• Part of Docker• Richer than cAdvisor• REST API• Integrations

• docker-collectd-plugin github.com/cloudwatt/docker-collectd-plugin• commercial vendors

Cons: • Docker only• Containers are black boxes

Page 28: ContainerCon sysdig Slides

sysdig

•Capture system events, filter them, run useful scripts• strace + tcpdump + lsof + htop + Lua•Open Source•Nice curses UI

Page 29: ContainerCon sysdig Slides

Design Goals

•Production-ready• Simple • lightweight

•Rich data• Instant value•Natural workflow•Native support for containers

Page 30: ContainerCon sysdig Slides

Design Goals

•Production-ready• Simple • lightweight

•Rich data• Instant value•Natural workflow•Native support for containers

Page 31: ContainerCon sysdig Slides

Installing sysdig

docker run -i -t --name sysdig --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro sysdig/sysdig

Page 32: ContainerCon sysdig Slides

sysdig Architecture

Kernel

Container1

Docker

Container2

Docker

Container3

LXCAppApp

Page 33: ContainerCon sysdig Slides

sysdig Architecture

Kernel

Container1

Docker

Container2

Docker

Container3

LXCAppApp

Instrumentation through kernel module

Page 34: ContainerCon sysdig Slides

sysdig Architecture

Kernel

Container1

Docker

Container2

Docker

Container3

LXCAppApp

sysdig

Docker

Capture andanalysis

Page 35: ContainerCon sysdig Slides

sysdig Architecture

Kernel

Container1

Docker

Container2

Docker

Container3

LXCAppApp

sysdig

Docker

(optionally) Save to a trace file

foo.scap

Page 36: ContainerCon sysdig Slides

Viewing Network Activity

•cAdvisor•docker stats <container>• iftop/tcpdump/tshark in the container•sysdig

Page 37: ContainerCon sysdig Slides

Viewing Disk Activity

•iotop/lsof in the container•sysdig

Page 38: ContainerCon sysdig Slides

Viewing Application Activity

•Code/container instrumentation•Logs•sysdig

Page 39: ContainerCon sysdig Slides

Thank You!

www.sysdig.orghttps://github.com/draios/sysdigwww.sysdig.com