SlideShare a Scribd company logo
1 of 28
Download to read offline
Measure everything

                             Ruby Underground, August 2012
                                       @arikfr




Tuesday, February 12, 13
Today’s plan

                     • Why measure
                     • How to measure
                     • Graphite / StatsD
                     • Using Graphite/StatsD with Ruby and Rails

Tuesday, February 12, 13
Questions to answer
                     • How fast is my system?
                     • Is it faster than last month?
                     • Did our last deploy affect database
                           performance?
                     • How much time do we spend calling
                           external web services?


Tuesday, February 12, 13
More questions

                     • How many errors do we have a day?
                     • How many failed logins?
                     • How many successful logins?
                     • How many orders without house number?

Tuesday, February 12, 13
And more questions!
                     • How many orders did we have today?
                     • How many orders did we have today from
                           Android version 2.056?
                     • How many rejected orders did we have?
                     • How many rejected orders due to lack of
                           coverage vs. lack of taxis?


Tuesday, February 12, 13
To answer all of this,
                            you need a way to
                             track different
                               numbers.

Tuesday, February 12, 13
So now we know the
                                   why.
                                But how...?


Tuesday, February 12, 13
Tuesday, February 12, 13
But that’s not enough

                     • Not real time enough
                     • Hard to control what’s being collected
                     • Pricey for big deployments


Tuesday, February 12, 13
The Alternative

                     • Graphite (Whisper, Carbon, Graphite Web)
                     • StatsD
                     • CollectD
                     • (there are other options -- OpenTSDB,
                           Liberato, home grown)



Tuesday, February 12, 13
Benefits
                     • Easy to install
                     • Highly scalable
                     • Practically zero cost to measure anything:
                      • efficient storage
                      • UDP packets to send data in
                     • Ecosystem
Tuesday, February 12, 13
Whisper
                     • Default settings:
                      • 6 hours of 10 second data
                      • 1 week of 1 minute data
                      • 5 years of 10 minute data
                     • That’s amounts to ~3.2MB per metric.
                     • Configurable.
Tuesday, February 12, 13
Types of data

                     • Counters - number of orders per sec
                     • Gauges - total orders today
                     • Timers - time to make an order
                      • (with additional values, such as: count,
                           mean, 90th percentile, max, min, etc)



Tuesday, February 12, 13
Sending a number to
                                Graphite

                     • metric number timestamp
                     • example.ruby.under_ground 20 1346075634
                     • echo "example.ruby_underground 20 `date
                           +%s`" | nc graphite.yourcorp.com 2003




Tuesday, February 12, 13
Sending a number to
                                 StatsD




                               ./statsd-client.sh 'my_metric:100|g'
Tuesday, February 12, 13
Naming Convention
                     • Whatever makes sense to you, just
                           remember that it’s a tree.
                     • We use:
                      • {env}.{metric}.{region}.{hostname}
                     • You can use globs, when querying:
                      • app.orders.daily.completed.israel.*
                      • app.orders.daily.completed.*.*
Tuesday, February 12, 13
Ruby Examples



Tuesday, February 12, 13
$ gem install statsd-ruby
                           (https://github.com/reinh/statsd)




Tuesday, February 12, 13
Track Deployments




Tuesday, February 12, 13
Measure controllers




Tuesday, February 12, 13
Measure Specific stuff




Tuesday, February 12, 13
Getting Data out



Tuesday, February 12, 13
Graphite web




Tuesday, February 12, 13
Tasseo




Tuesday, February 12, 13
Gdash




Tuesday, February 12, 13
Graphene




Tuesday, February 12, 13
Down sides
                     • Hard to track user analytics
                      • You can tell how many orders were done
                             today
                           • You can’t tell (easily) how many unique
                             users did those orders
                     • The tree of metrics is sometimes annoying

Tuesday, February 12, 13
Questions?



Tuesday, February 12, 13

More Related Content

Similar to Measure Everything

GitHub Notable OSS Project
GitHub  Notable OSS ProjectGitHub  Notable OSS Project
GitHub Notable OSS Project
roumia
 
Dan node meetup_socket_talk
Dan node meetup_socket_talkDan node meetup_socket_talk
Dan node meetup_socket_talk
Ishi von Meier
 
Performance for Product Developers
Performance for Product DevelopersPerformance for Product Developers
Performance for Product Developers
Matthew Wilkes
 

Similar to Measure Everything (20)

Qcon talk
Qcon talkQcon talk
Qcon talk
 
Big Data - architectural concerns for the new age
Big Data - architectural concerns for the new ageBig Data - architectural concerns for the new age
Big Data - architectural concerns for the new age
 
GitHub Notable OSS Project
GitHub  Notable OSS ProjectGitHub  Notable OSS Project
GitHub Notable OSS Project
 
Dan node meetup_socket_talk
Dan node meetup_socket_talkDan node meetup_socket_talk
Dan node meetup_socket_talk
 
Dragging old data forward: finding yourself an RDA Helper
Dragging old data forward:  finding yourself an RDA HelperDragging old data forward:  finding yourself an RDA Helper
Dragging old data forward: finding yourself an RDA Helper
 
Why Speed Matters
Why Speed MattersWhy Speed Matters
Why Speed Matters
 
2013 - Matías Paterlini: Escalando PHP con sharding y Amazon Web Services
2013 - Matías Paterlini: Escalando PHP con sharding y Amazon Web Services 2013 - Matías Paterlini: Escalando PHP con sharding y Amazon Web Services
2013 - Matías Paterlini: Escalando PHP con sharding y Amazon Web Services
 
Escalando una PHP App con DB sharding - PHP Conference
Escalando una PHP App con DB sharding - PHP ConferenceEscalando una PHP App con DB sharding - PHP Conference
Escalando una PHP App con DB sharding - PHP Conference
 
Cassandra at scale
Cassandra at scaleCassandra at scale
Cassandra at scale
 
Statsd backends presentation
Statsd backends presentationStatsd backends presentation
Statsd backends presentation
 
Hadoop & Hep
Hadoop & HepHadoop & Hep
Hadoop & Hep
 
Drupal for enterprise
Drupal for enterpriseDrupal for enterprise
Drupal for enterprise
 
Fast Mobile UIs
Fast Mobile UIsFast Mobile UIs
Fast Mobile UIs
 
Lisa12 methodologies
Lisa12 methodologiesLisa12 methodologies
Lisa12 methodologies
 
[Phind] Miracle
[Phind] Miracle[Phind] Miracle
[Phind] Miracle
 
Infrastructure Migration
Infrastructure MigrationInfrastructure Migration
Infrastructure Migration
 
Location Location Location
Location Location LocationLocation Location Location
Location Location Location
 
Ruby on hadoop
Ruby on hadoopRuby on hadoop
Ruby on hadoop
 
Performance for Product Developers
Performance for Product DevelopersPerformance for Product Developers
Performance for Product Developers
 
Torchbox University Accessibility
Torchbox University AccessibilityTorchbox University Accessibility
Torchbox University Accessibility
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Measure Everything

  • 1. Measure everything Ruby Underground, August 2012 @arikfr Tuesday, February 12, 13
  • 2. Today’s plan • Why measure • How to measure • Graphite / StatsD • Using Graphite/StatsD with Ruby and Rails Tuesday, February 12, 13
  • 3. Questions to answer • How fast is my system? • Is it faster than last month? • Did our last deploy affect database performance? • How much time do we spend calling external web services? Tuesday, February 12, 13
  • 4. More questions • How many errors do we have a day? • How many failed logins? • How many successful logins? • How many orders without house number? Tuesday, February 12, 13
  • 5. And more questions! • How many orders did we have today? • How many orders did we have today from Android version 2.056? • How many rejected orders did we have? • How many rejected orders due to lack of coverage vs. lack of taxis? Tuesday, February 12, 13
  • 6. To answer all of this, you need a way to track different numbers. Tuesday, February 12, 13
  • 7. So now we know the why. But how...? Tuesday, February 12, 13
  • 9. But that’s not enough • Not real time enough • Hard to control what’s being collected • Pricey for big deployments Tuesday, February 12, 13
  • 10. The Alternative • Graphite (Whisper, Carbon, Graphite Web) • StatsD • CollectD • (there are other options -- OpenTSDB, Liberato, home grown) Tuesday, February 12, 13
  • 11. Benefits • Easy to install • Highly scalable • Practically zero cost to measure anything: • efficient storage • UDP packets to send data in • Ecosystem Tuesday, February 12, 13
  • 12. Whisper • Default settings: • 6 hours of 10 second data • 1 week of 1 minute data • 5 years of 10 minute data • That’s amounts to ~3.2MB per metric. • Configurable. Tuesday, February 12, 13
  • 13. Types of data • Counters - number of orders per sec • Gauges - total orders today • Timers - time to make an order • (with additional values, such as: count, mean, 90th percentile, max, min, etc) Tuesday, February 12, 13
  • 14. Sending a number to Graphite • metric number timestamp • example.ruby.under_ground 20 1346075634 • echo "example.ruby_underground 20 `date +%s`" | nc graphite.yourcorp.com 2003 Tuesday, February 12, 13
  • 15. Sending a number to StatsD ./statsd-client.sh 'my_metric:100|g' Tuesday, February 12, 13
  • 16. Naming Convention • Whatever makes sense to you, just remember that it’s a tree. • We use: • {env}.{metric}.{region}.{hostname} • You can use globs, when querying: • app.orders.daily.completed.israel.* • app.orders.daily.completed.*.* Tuesday, February 12, 13
  • 18. $ gem install statsd-ruby (https://github.com/reinh/statsd) Tuesday, February 12, 13
  • 22. Getting Data out Tuesday, February 12, 13
  • 27. Down sides • Hard to track user analytics • You can tell how many orders were done today • You can’t tell (easily) how many unique users did those orders • The tree of metrics is sometimes annoying Tuesday, February 12, 13