Slide 1

Slide 1 text

Digging Deep With ActiveSupport:: Noti cations Wednesday, April 25, 12

Slide 2

Slide 2 text

Let’s Talk... • What is ActiveSupport::Noti cations? • Why you should care • How it works • What you can do with it Wednesday, April 25, 12

Slide 3

Slide 3 text

The Basics of AS::Noti cations Wednesday, April 25, 12

Slide 4

Slide 4 text

• AS::Noti cations provides a simple, exible messaging system for instrumenting • Lots of valuable data is already exposed by Rails’ built-in instrumentation • Provides an easy path for performance monitoring what you care about in your application • Log & track what matters to you! Why you should care Wednesday, April 25, 12

Slide 5

Slide 5 text

“What gets measured gets managed” - Peter Drucker Wednesday, April 25, 12

Slide 6

Slide 6 text

production != development Wednesday, April 25, 12

Slide 7

Slide 7 text

What Happened? Wednesday, April 25, 12

Slide 8

Slide 8 text

How It Works • #subscribe - ask to receive instrument data • #instrument - signal event or track data about operation (duration / exceptions) Wednesday, April 25, 12

Slide 9

Slide 9 text

#instrument Message Name (what you #subscribe to) Wednesday, April 25, 12

Slide 10

Slide 10 text

#instrument Message Name (what you #subscribe to) Extra Arguments (passed as payload to #subscribe) Wednesday, April 25, 12

Slide 11

Slide 11 text

#instrument Message Name (what you #subscribe to) Extra Arguments (passed as payload to #subscribe) Wednesday, April 25, 12

Slide 12

Slide 12 text

#instrument Message Name (what you #subscribe to) Extra Arguments (passed as payload to #subscribe) Time Objects Wednesday, April 25, 12

Slide 13

Slide 13 text

#instrument Message Name (what you #subscribe to) Extra Arguments (passed as payload to #subscribe) Time Objects Unique Message ID Wednesday, April 25, 12

Slide 14

Slide 14 text

#instrument Message Name (what you #subscribe to) Extra Arguments (passed as payload to #subscribe) Time Objects Payload Unique Message ID Wednesday, April 25, 12

Slide 15

Slide 15 text

#instrument (Block Form) Wednesday, April 25, 12

Slide 16

Slide 16 text

#instrument (Block Form) Wednesday, April 25, 12

Slide 17

Slide 17 text

#instrument (Block Form) Duration (difference between these) Wednesday, April 25, 12

Slide 18

Slide 18 text

#instrument (Exceptions) Wednesday, April 25, 12

Slide 19

Slide 19 text

#instrument (Exceptions) Exception Type (as string, not class) Exception Message Wednesday, April 25, 12

Slide 20

Slide 20 text

#subscribe Wednesday, April 25, 12

Slide 21

Slide 21 text

#subscribe Wednesday, April 25, 12

Slide 22

Slide 22 text

#subscribe Wednesday, April 25, 12

Slide 23

Slide 23 text

event#parent_of? Wednesday, April 25, 12

Slide 24

Slide 24 text

#subscribe (using regular expressions) Wednesday, April 25, 12

Slide 25

Slide 25 text

Rails Instrumentation Wednesday, April 25, 12

Slide 26

Slide 26 text

Rails Instrumentation Wednesday, April 25, 12

Slide 27

Slide 27 text

Rails Instrumentation Namespaced (right to left) Wednesday, April 25, 12

Slide 28

Slide 28 text

Performance Monitoring Wednesday, April 25, 12

Slide 29

Slide 29 text

Rails Request Time Wednesday, April 25, 12

Slide 30

Slide 30 text

Requests by Server Wednesday, April 25, 12

Slide 31

Slide 31 text

Slow Requests Wednesday, April 25, 12

Slide 32

Slide 32 text

Slowest Req by Server Wednesday, April 25, 12

Slide 33

Slide 33 text

Error Count Wednesday, April 25, 12

Slide 34

Slide 34 text

SQL Monitoring Wednesday, April 25, 12

Slide 35

Slide 35 text

SQL Monitoring Wednesday, April 25, 12

Slide 36

Slide 36 text

Queries by Instance Wednesday, April 25, 12

Slide 37

Slide 37 text

Queries by Instance Wednesday, April 25, 12

Slide 38

Slide 38 text

SELECTs by Model Wednesday, April 25, 12

Slide 39

Slide 39 text

Wednesday, April 25, 12

Slide 40

Slide 40 text

Wednesday, April 25, 12

Slide 41

Slide 41 text

What to do with instrumented data? Wednesday, April 25, 12

Slide 42

Slide 42 text

Custom Logging Wednesday, April 25, 12

Slide 43

Slide 43 text

New Relic Tracking Wednesday, April 25, 12

Slide 44

Slide 44 text

Librato Metrics / StatsD Wednesday, April 25, 12

Slide 45

Slide 45 text

Wednesday, April 25, 12

Slide 46

Slide 46 text

KISS metrics Wednesday, April 25, 12

Slide 47

Slide 47 text

Save Data For Later Wednesday, April 25, 12

Slide 48

Slide 48 text

...and more • Google Analytics events • Camp re / HipChat alerts • Schedule background jobs • Fire web hooks • etc Wednesday, April 25, 12

Slide 49

Slide 49 text

Performance Notes • By default Rails calls subscribers in the thread where instrumentation took place • Consider backgrounding slow subscribers • Dispatcher can be replaced by your own queue system (set AS::Noti cations.noti er) Wednesday, April 25, 12

Slide 50

Slide 50 text

#unsubscribe Wednesday, April 25, 12

Slide 51

Slide 51 text

Power Moves Wednesday, April 25, 12

Slide 52

Slide 52 text

Wednesday, April 25, 12

Slide 53

Slide 53 text

Conditional Instrumentation Wednesday, April 25, 12

Slide 54

Slide 54 text

Wednesday, April 25, 12

Slide 55

Slide 55 text

Instrument Per User Wednesday, April 25, 12

Slide 56

Slide 56 text

Instrument Per User Wednesday, April 25, 12

Slide 57

Slide 57 text

Wednesday, April 25, 12

Slide 58

Slide 58 text

Bot Up Your Life Wednesday, April 25, 12

Slide 59

Slide 59 text

Simplifying Repetitive Instrumentation Wednesday, April 25, 12

Slide 60

Slide 60 text

Just Forward It Wednesday, April 25, 12

Slide 61

Slide 61 text

Simplifying Repetitive Subscribers Wednesday, April 25, 12

Slide 62

Slide 62 text

LogSubscriber Wednesday, April 25, 12

Slide 63

Slide 63 text

LogSubscriber Wednesday, April 25, 12

Slide 64

Slide 64 text

LogSubscriber Wednesday, April 25, 12

Slide 65

Slide 65 text

LogSubscriber Wednesday, April 25, 12

Slide 66

Slide 66 text

LogSubscriber Wednesday, April 25, 12

Slide 67

Slide 67 text

LogSubscriber Wednesday, April 25, 12

Slide 68

Slide 68 text

LogSubscriber Wednesday, April 25, 12

Slide 69

Slide 69 text

Use Outside of Rails • activesupport/noti cations can be required by itself, only needs securerandom to work • provides a good abstract interface for instrumentation • activesupport/log_subscriber is a separate library, can be required if needed Wednesday, April 25, 12

Slide 70

Slide 70 text

Supporting #instrument in your Gems Wednesday, April 25, 12

Slide 71

Slide 71 text

Faraday Instrumentation Custom Event Name Request Environment Passed as Payload Wednesday, April 25, 12

Slide 72

Slide 72 text

Excon Instrumentation Allows Custom Instrumentor Custom Event Prefix Wednesday, April 25, 12

Slide 73

Slide 73 text

Wednesday, April 25, 12

Slide 74

Slide 74 text

Wednesday, April 25, 12

Slide 75

Slide 75 text

Wednesday, April 25, 12

Slide 76

Slide 76 text

Wednesday, April 25, 12

Slide 77

Slide 77 text

Discuss Conventions for AS::Noti cations in Your Team Wednesday, April 25, 12

Slide 78

Slide 78 text

In closing... • AS::Noti cations provides a simple message-based system for instrumentation • Use what Rails gives you, create what it doesn’t • Track what you want, track what matters to you! Wednesday, April 25, 12

Slide 79

Slide 79 text

Questions? Matt Sanders twitter: @nextmat https://github.com/nextmat Wednesday, April 25, 12