Erlang Application Metrics with Folsom

3,188 views

Published on

Published in: Technology, News & Politics
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,188
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
23
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Erlang Application Metrics with Folsom

  1. 1. Erlang Application Metrics with Folsom Joe Williams (@williamsjoe) Boundary (@boundary / boundary.com)Friday, March 30, 12
  2. 2. Who Am I? • Joe Williams • @williamsjoe • Ops at BoundaryFriday, March 30, 12
  3. 3. What is Boundary? • Realtime Monitoring and Analytics Platform • We’re hiring! • TRY MY PRODUCTFriday, March 30, 12
  4. 4. Agenda • Current and Future Monitoring Systems • Define “Application Metrics” • What is Folsom? • How do you use Folsom?Friday, March 30, 12
  5. 5. Legacy Monitoring Tools • Consumers of application metrics • Munin, Ganglia, etc • Wide variety of protocols, interfaces and formats • Usually RRD, results in inflexible, infrequently refreshed PNGs on HTML • Not what this talk is about.Friday, March 30, 12
  6. 6. Current Monitoring Tools • Consumers of application metrics • OpenTSDB, statsd, Rienmann, etc are a steps in the right direction • Hopefully fewer protocols, interfaces and formats • Realtime, dynamic graphing • Not what this talk is about.Friday, March 30, 12
  7. 7. Application Metrics • “.. code generates business value when it runs.” ~ Coda HaleFriday, March 30, 12
  8. 8. Application Metrics • Code instrumentation • Write code to measure code • Verify code behaves as you expect • Exporting results of instrumentation • General VM healthFriday, March 30, 12
  9. 9. Folsom • Application-level metrics • Multiple metric types • Powerful statistical analysis • Easily extensibleFriday, March 30, 12
  10. 10. Folsom DEMO!Friday, March 30, 12
  11. 11. Metric Types • Counters • Gauges • Histograms • Histories • Meters • Erlang VM MetricsFriday, March 30, 12
  12. 12. Counters • Counter metrics provide increment and decrement capabilities for a single scalar value.Friday, March 30, 12
  13. 13. Counters > folsom_metrics:new_counter(Name). > folsom_metrics:notify({Name, {inc, Value}}). > folsom_metrics:notify({Name, {dec, Value}}).Friday, March 30, 12
  14. 14. Gauges • Gauges are point-in-time single value metrics.Friday, March 30, 12
  15. 15. Gauges > folsom_metrics:new_gauge(Name). > folsom_metrics:notify({Name, Value}).Friday, March 30, 12
  16. 16. Histograms • Histograms are collections of values that have statistical analysis done to them, such as mean, min, max, kurtosis and percentile. • The can be used like "timers" as well with the timed update functions.Friday, March 30, 12
  17. 17. Histograms > folsom_metrics:new_histogram(Name). > folsom_metrics:histogram_timed_update(Name, Mod, Fun, Args). > folsom_metrics:histogram_timed_update(Name, Fun, Args). > folsom_metrics:histogram_timed_update(Name, Fun). > folsom_metrics:notify({Name, Value}).Friday, March 30, 12
  18. 18. Histories • Histories are a collection of past events, such as errors or log messages.Friday, March 30, 12
  19. 19. Histories > folsom_metrics:new_history(Name). > folsom_metrics:get_history_values(Name, Count). > folsom_metrics:notify({Name, Value}).Friday, March 30, 12
  20. 20. Meters • Meters are increment only counters with mean rates and exponentially weighted moving averages applied to them, similar to a unix load average.Friday, March 30, 12
  21. 21. Meters > folsom_metrics:new_meter(Name). > folsom_metrics:notify({Name, Value}).Friday, March 30, 12
  22. 22. Erlang VM • General VM metrics provided by Erlang VM.Friday, March 30, 12
  23. 23. Erlang VM > folsom_vm_metrics:get_memory(). > folsom_vm_metrics:get_system_info(). > folsom_vm_metrics:get_statistics(). > folsom_vm_metrics:get_port_info(). > folsom_vm_metrics:get_process_info().Friday, March 30, 12
  24. 24. Statistics • Statistical Analysis • Exponentially Weighted Moving Average (EWMA) • Rate / Acceleration • Avg, Mean, Min, Max, etc • Distribution • Percentiles / Histograms • Covariance / CorrelationFriday, March 30, 12
  25. 25. Sampling • Exponentially decaying • Uniform • NoneFriday, March 30, 12
  26. 26. Extensibility • Clean Native API • Folsom Wrappers • REST+JSON • Munin plugins! • SNMP? Graphite? CollectD?Friday, March 30, 12
  27. 27. Future Work • Metrics REST+JSON Spec • Performance Improvements • Better Querying, Slicing and etc of metric values • More metric types (meter reader, timer, etc)Friday, March 30, 12
  28. 28. Similar Tools • Coda Hale’s Metrics (JVM) - github.com/coda/metrics • Ruby - github.com/johnewart/ruby-metrics • JavaScript - github.com/mikejihbe/metrics • .NET Metrics - github.com/danielcrenna/metrics-net • Ostrich - github.com/twitter/ostrich • Python Ostrich - github.com/wadey/python-ostrich • .Net Ostrich - github.com/ewhauser/OstrichNetFriday, March 30, 12
  29. 29. Folsom DEMO!Friday, March 30, 12
  30. 30. Questions? Joe Williams (@williamsjoe) Boundary (@boundary / boundary.com) https://github.com/boundary/folsomFriday, March 30, 12

×