Slide 1

Slide 1 text

www.easybib.com @klimpong Collecting Metrics MEASURE ALL THE THINGS. 1 Thursday, November 8, 12

Slide 2

Slide 2 text

www.easybib.com @klimpong Till Klampäckel @klimpong — http://github.com/till I love open source. I’m addicted to graphs (and effects in keynote). /Till 2 Thursday, November 8, 12

Slide 3

Slide 3 text

www.easybib.com @klimpong Just in case — we’re (always) looking for PHP and frontend developers. [email protected] /jobs 3 Thursday, November 8, 12

Slide 4

Slide 4 text

www.easybib.com @klimpong A unit of measurement. An indicator for what is going on. /metrics 4 Thursday, November 8, 12

Slide 5

Slide 5 text

www.easybib.com @klimpong Google Analytics/piwik: utm-campaign-tags Remember counter.cgi? Facebook pages. /examples 5 Thursday, November 8, 12

Slide 6

Slide 6 text

www.easybib.com @klimpong Visits per year 0M 10M 20M 30M 40M 50M 60M 70M 80M 2007 2008 2009 2010 2011 Visits per year /examples/graphs 6 Thursday, November 8, 12

Slide 7

Slide 7 text

www.easybib.com @klimpong ? PHP to a database, remote service? StatsD! /collect 7 Thursday, November 8, 12

Slide 8

Slide 8 text

www.easybib.com @klimpong StatsD is a collection daemon by Etsy. StatsD is Node.js. StatsD uses UDP. It’s asynchronous and painless. Backends are pluggable. /statsd 8 Thursday, November 8, 12 Etsy’s work was inspired by Flickr. standard backends: graphite, console, reapeter available backends: librato, cloudwatch, mongodb, ...

Slide 9

Slide 9 text

www.easybib.com @klimpong Original implementation in Node.JS. Erlang, Go, Scala, Java, Python. /statsd/pattern 9 Thursday, November 8, 12 Original, original (Cal Henderson) — something in Perl at Flickr. StatsD as a pattern to collect metrics.

Slide 10

Slide 10 text

www.easybib.com @klimpong Counters. Gauges. Timings. /statsd/metrics 10 Thursday, November 8, 12 Really simple, no PhD required. Counter: grows absolute over time (number of total downloads) Gauge: for current values (e.g. “currently online”) Timings: how long something took There is more in master.

Slide 11

Slide 11 text

www.easybib.com @klimpong Default backend. http://graphite.wikidot.com/ /statsd/graphite 11 Thursday, November 8, 12 We wanted a hosted service (less management). Read a couple blog posts about scaling Graphite which scared me off. Librato has less aggregation and very little transformation but it’s been rock solid.

Slide 12

Slide 12 text

www.easybib.com @klimpong Download and install Node.js: http://nodejs.org/download/ Clone statsd from Github: https://github.com/etsy/statsd npm install statsd-librato-backend /statsd/install 12 Thursday, November 8, 12 Install Node.js through: homebrew, aptitude, Windows installer cd into statsd directory to npm install

Slide 13

Slide 13 text

www.easybib.com @klimpong { port: statsd_port, mgmt_address: '127.0.0.1', backends: ['statsd-librato-backend'], librato: { email: 'email_on_librato', token: 'librato_token', source: 'where_metrics_are_coming_from' } } /statsd/configure 13 Thursday, November 8, 12 Watch me type! The minimum is email and token. port: port of the statsd process librato.email/.token: credentials from librato librato.source: e.g. your cluster (application, whatever)

Slide 14

Slide 14 text

www.easybib.com @klimpong ./bin/statsd /statsd/run 14 Thursday, November 8, 12 Maybe add monit for when the node process crashes (0.8.0+ recommended).

Slide 15

Slide 15 text

www.easybib.com @klimpong Find a PHP client library. /statsd/now-what 15 Thursday, November 8, 12 StatsD has examples for half a dozen languages. Want something more sophisticated?

Slide 16

Slide 16 text

www.easybib.com @klimpong true, 'host' => 'statsd1' )); StatsD::increment('some-value'); StatsD::increment(array( 'multiple', 'counters', 'work', 'as', 'well' )); /collect 16 Thursday, November 8, 12 watch me type again forked the PHP sample code

Slide 17

Slide 17 text

www.easybib.com @klimpong /librato 17 Thursday, November 8, 12 This is an excerpt of stuff we collect. And every time there’s a problem, we add to it. https://metrics.librato.com/pricing 50 metrics every 60 seconds = ~5.00 USD/month flush every 30 = ~8.50 USD a month

Slide 18

Slide 18 text

www.easybib.com @klimpong Graph the ms it takes to pull up different views and _all_docs. /librato/demo 18 Thursday, November 8, 12

Slide 19

Slide 19 text

www.easybib.com @klimpong Requests (per second) to our API. And failed requests also (none). /librato/demo 19 Thursday, November 8, 12

Slide 20

Slide 20 text

www.easybib.com @klimpong Graph requests (per second) to EasyBib Research related APIs. /librato/demo 20 Thursday, November 8, 12

Slide 21

Slide 21 text

www.easybib.com Fin 21 Thursday, November 8, 12