Slide 1

Slide 1 text

@errordeveloper An Introduction to Prometheus for App Developers

Slide 2

Slide 2 text

I build apps, and I do microservices

Slide 3

Slide 3 text

I let k8s run my apps for me

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

observability is absolutely essential

Slide 6

Slide 6 text

end goal: continuous improvement

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

why must I instrument my app!?

Slide 12

Slide 12 text

microservices is a culture

Slide 13

Slide 13 text

what is Prometheus & why use it?

Slide 14

Slide 14 text

what is Prometheus & why use it?

Slide 15

Slide 15 text

how do I instrument my app for Prometheus?

Slide 16

Slide 16 text

/metrics

Slide 17

Slide 17 text

/metrics Content-Type: text/plain

Slide 18

Slide 18 text

Slide 19

Slide 19 text

new_users_count 250.0

Slide 20

Slide 20 text

{}

Slide 21

Slide 21 text

new_users_count{locale=“en_GB”} 49.0 new_users_count{locale=“pt_BR”} 51.0 new_users_count{locale=“ru_RU”} 45.0 new_users_count{locale=“zh_HK”} 55.0 new_users_count{locale=“zh_TW”} 50.0

Slide 22

Slide 22 text

> curl -i http://myapp:8080/metrics Content-Type: text/plain ... process_uptime_seconds 145236.015 http_requests_duration_seconds_count 2.0 new_users_count 250.0

Slide 23

Slide 23 text

> curl -i http://myapp:8080/metrics Content-Type: text/plain ... http_requests_count{method="GET",status="200",uri="/"} 1.0 http_requests_count{method=“PUT”,status=“403",uri="/"} 1.0

Slide 24

Slide 24 text

prometheus.io/docs/concepts/metric_types

Slide 25

Slide 25 text

how do I use it to improve my app?

Slide 26

Slide 26 text

process_uptime_seconds

Slide 27

Slide 27 text

process_uptime_seconds{job=“myapp”}

Slide 28

Slide 28 text

http_requests_duration_seconds_count

Slide 29

Slide 29 text

http_requests_duration_seconds_count{ job=“myapp”, method=“GET”, uri=“/”, }

Slide 30

Slide 30 text

sum( http_requests_duration_seconds_count{ job=“myapp”, method=“GET”, uri=“/”, } )

Slide 31

Slide 31 text

sum( rate( http_requests_duration_seconds_count{ job=“myapp”, method=“GET”, uri=“/”, }[1m] ) )

Slide 32

Slide 32 text

up

Slide 33

Slide 33 text

up{job=“myapp"}

Slide 34

Slide 34 text

sum( up{job=“myapp"} ) by (job)

Slide 35

Slide 35 text

tutorial: step-by-step guide to Prometheus with Node.js http://github.com/errordeveloper/prom-nodejs-demo

Slide 36

Slide 36 text

cloud.weave.works

Slide 37

Slide 37 text

[email protected] slack.weave.works