Monitoring Microservices
tom@weave.works
@tom_wilkie
VisualisationMonitoring Tracing
0
25
50
75
100
Monitoring
0
25
50
75
100
Traditional 3-tier architecture
Incoming traffic
Load balancers
Application servers
Database & replica
Microservice architecture
Public APIWeb UI
NoSQL serversDatabase
Message
Broker
Services
Microservices should be
treated like cattle not pets
USE Method* - for every
resource, check:
• utilization,
• saturation, and
• errors
RED Method - for every
service, check request:
• rate,
• error (rate), and
• duration (distributions)
are within SLO/A
* http://www.brendangregg.com/usemethod.html
An alternative view
Monitoring
0
25
50
75
100
Visualisation
Weave Scope
Connection
Tracking
# cat /proc/net/tcp
# conntrack -E -p tcp
Matrix
Connection
Tracking
all connections
from
/proc
conntrack
Demo time
Visualisation
Tracing
Distributed
Tracing
Not a new topic
• Lots of literature
• Existing open source
projects
• e.g. Zipkin, originally from
Twitter
• Challenge: detecting
causality between
incoming and outgoing
requests
• Existing solutions
require propagation of
some unique ID
(dapper, zipkin)
• This requires
application-specific
modifications
some service
incoming
request
outgoing
requests
?
Can this be done without
application modifications?
Demo time
Tracing
VisualisationMonitoring Tracing
0
25
50
75
100
@weaveworks github.com/weaveworks
Questions?
http://weave.works/product/scope
tom@weave.works
@tom_wilkie

Monitoring Microservices