Your SlideShare is downloading. ×
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps

1,979

Published on

Librato's CTO Joseph Ruscio took to the Waza 2013 stage to present "Instrumenting Twelve-Factor Apps". For more from Ruscio ping him at @josephruscio. For more on Waza visit …

Librato's CTO Joseph Ruscio took to the Waza 2013 stage to present "Instrumenting Twelve-Factor Apps". For more from Ruscio ping him at @josephruscio. For more on Waza visit http://waza.heroku.com/2013.

For Waza videos stay tuned at http://blog.heroku.com or visit http://vimeo.com/herokuwaza

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,979
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Instrumenting the Twelve-Factor App TM
  • 2. @josephruscioCo-Founder/CTO LibratoI <3 graphs
  • 3. Twelve Factor App• Decouple app from environment• Service Oriented Architecture• Continuous Deployment• Horizontal Scaling
  • 4. ? How do we validate the effects of a deployment?
  • 5. ? How do we detect aberrations?
  • 6. ? How do we determine when to scale?
  • 7. ? How do accomplish this with ephemeral processes?
  • 8. Instrument during development
  • 9. Instrumentation is Unit Testing for Operations
  • 10. Counter#enqueue a jobFoo.counter(mygem.jobs).increment#complete a jobFoo.counter(mygem.jobs).decrement
  • 11. Timer# block formFoo.timer(req.foo).time do process_requestend# explicit formt = Foo.timer(req.bar).timeprocess_requestt.stop
  • 12. Decouple collection from reporting
  • 13. Observer effect
  • 14. Math is involved
  • 15. Logs as streams
  • 16. Logs• logplex• l2met• logstash, greylog2• Splunk, Papertrail, et al
  • 17. Process Reporter Request Metrics Thread Registry Reporter Thread Process
  • 18. Process Reporter• CodaHale Metrics (JVM)• metriks (Ruby)• folsom (Erlang)• librato-rails, librato-rack
  • 19. UDP Nginx Unicorn StatsDFront-End
  • 20. Store metrics in a common repository
  • 21. Anti-Pattern Storage Storage Storage ...• Ping • CPU• CPU • Interface • Custom Stats• Memory • Memory • MySQL threads• Disks • Ping • VMstat• SNMP Service • Battery charge • ....• .... • .... Project X Project Y Project Z
  • 22. Arbitrary correlations
  • 23. TM
  • 24. Significant events
  • 25. TM
  • 26. TM
  • 27. Time Series Datastores• RRDTool• Graphite (Whisper)• OpenTSDB (HBase)• Librato et. al (SaaS)
  • 28. Define per-service operating ranges
  • 29. Trigger alerts
  • 30. Apply backpressure
  • 31. TM
  • 32. Collaborate through Dashboards
  • 33. “No aberration detectionmechanism is more sophisticatedthan your VP Marketing staring ata dashboard whilst drinkingcoffee.”
  • 34. TM
  • 35. Iterate and Refine
  • 36. Signal------------ Noise
  • 37. • Instrument during development• Decouple collection from reporting• Store metrics in a common repository• Define per-service thresholds• Collaborate through dashboards• Iterate and refine
  • 38. fin

×