trace everything, when apm meets sysadmins

26
Jorge Salamero Sanz @bencerillo Trace Everything When APM meets SysAdmins

Upload: sysdig

Post on 13-Apr-2017

188 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Trace everything, when APM meets SysAdmins

Jorge Salamero Sanz@bencerillo

Trace EverythingWhen APM meets SysAdmins

Page 2: Trace everything, when APM meets SysAdmins

How Linux SysAdmins (used to)do (performance) troubleshooting?

• uptime

• free -m

• ps aux

• vmstat 1

• netstat -putan

• top

• tcpdump

Page 3: Trace everything, when APM meets SysAdmins

But something changed

Page 4: Trace everything, when APM meets SysAdmins

But something changed

Page 5: Trace everything, when APM meets SysAdmins

How developers are doing (distributed) tracing and profiling?

• OpenTracing and alternatives:

• Zipkin, Dapper, HTrace, X-Trace

• Commercial:

• New Relic, AppDynamics, Dyn, SPM

• Self-brewed and hacks:

• statsd, JMX

• print

• logs can bite you in the ass

Page 6: Trace everything, when APM meets SysAdmins

What if we had something...

• Open source

• Simple and easy to use (trade-off vs eBPF/bcc)

• Lightweight

• Could work everywhere (including containers)

Page 7: Trace everything, when APM meets SysAdmins

Sysdig

Open Source system troubleshooting

with native container support(htop, vmstat, netstat, lsof, tcpdump…)

Monitoring, alerting,

troubleshooting tool for

Docker, Kubernetes, Mesos,

RancherOS, GCE, ECS

Page 8: Trace everything, when APM meets SysAdmins

Sysdig

Page 9: Trace everything, when APM meets SysAdmins

Sysdig

Page 10: Trace everything, when APM meets SysAdmins

Sysdig

Page 11: Trace everything, when APM meets SysAdmins

Sysdig

Page 12: Trace everything, when APM meets SysAdmins

Sysdig

• Capture system events, filter and run scripts

• Trace dumps for analysis

• Container support

• CLI or curses interface

Page 13: Trace everything, when APM meets SysAdmins

Event stream

OpenReadClose

ConnectReadWriteReadReadWriteClose

Dump to Disk

Filter

Analyze

Page 14: Trace everything, when APM meets SysAdmins

Sysdig Tracers

Sysdig Tracers:

System call tracing

Page 15: Trace everything, when APM meets SysAdmins

Sysdig Tracers: System call tracing

• Inject markers inside Sysdig event stream

• Mark being and end of spans

• Function calls

• Network request

• Arbitrary piece of code

• From any language (write to /dev/null)

• Low overhead (<1us)

Page 16: Trace everything, when APM meets SysAdmins

Event stream

OpenReadClose

ConnectReadWriteReadReadWriteClose

Page 17: Trace everything, when APM meets SysAdmins

Event stream

OpenReadClose

ConnectReadWriteReadReadWriteClose

> Request

< Request

Page 18: Trace everything, when APM meets SysAdmins

Event stream

OpenReadClose

ConnectReadWriteReadReadWriteClose

> Request

< Request

Enter Tracer

Exit Tracer

Page 19: Trace everything, when APM meets SysAdmins

Event stream

OpenReadClose

ConnectReadWriteReadReadWriteClose

> Request

< Request

Span

Page 20: Trace everything, when APM meets SysAdmins

Event stream

OpenReadClose

ConnectReadWrite

ReadRead

WriteClose

> Request

< Request

> Request.Download

< Request.Download

Parent Span Child

Span

Page 21: Trace everything, when APM meets SysAdmins

Format

Simple format:<dir>:<ID>:<tag1>.<tag2>...:<arg1>=<val1>,<arg2>=<val2>...

JSON Format:["<direction>", <ID>, ["tag1", "tag2"...], [{"arg1":"val1"}, {"arg2":"val2"}...]]

Page 22: Trace everything, when APM meets SysAdmins

Example

while :do

# Start a trace named 'website-latency'echo ">::website-latency::" > /dev/null# Download the sysdig home pagecurl -s http://sysdig.org > /dev/null# End the the traceecho "<::website-latency::" > /dev/null

done

Page 23: Trace everything, when APM meets SysAdmins

Fun things you can do

● Measure latencies in your code

● Save and filter traces with sysdig

● Analyze traces with csysdig

● Inspect system activity inside execution spans

● Trace-aware Log Monitoring

● Export trace latencies using statsd

Page 24: Trace everything, when APM meets SysAdmins

Demo time!

Page 25: Trace everything, when APM meets SysAdmins

Further reading

● Documentation:○ https://github.com/draios/sysdig/wiki/Tracers

○ https://sysdig.com/blog/tracking-down-application-bottlene

cks-with-tracers/

● Integrations

○ Python https://github.com/draios/tracer-py

○ Node: https://https://github.com/tj/node-trace

○ Go: https://github.com/tj/go-trace

Page 26: Trace everything, when APM meets SysAdmins

Thank You!