Gathering of client side metrics

24
Сбор и обработка клиентских метрик

Transcript of Gathering of client side metrics

Page 1: Gathering of client side metrics

Сбор и обработка клиентских метрик

Page 2: Gathering of client side metrics

I am● Many years in IT :)

● FullStack Developer

● JavaScript, NodeJS, AngularJS, etc …● Independent contractor/IT Expert/CTO

● Pet projects: IoT, Arduino, Hardware, etc …

Page 3: Gathering of client side metrics

Why?

Page 4: Gathering of client side metrics

What?● DomainLookup

● TTFB

● DOMContentLoaded

● Load

● ….

● Custom metrics

Page 5: Gathering of client side metrics
Page 6: Gathering of client side metrics

Dev tools

Page 7: Gathering of client side metrics

Your Client Matters ● Browser

● Locations

● CDN

● Server loading

● etc

Page 9: Gathering of client side metrics

PerformanceTiming

Page 10: Gathering of client side metrics

timing.js● helpers

● Normalizes firstPaint, etc ..

● https://github.com/addyosmani/timing.js/

Page 11: Gathering of client side metrics

Custom metrics● performance.mark(markName)

● performance.measure(name, startMark, endMark);

● getEntries(); getEntriesByName(); getEntriesByType();

<body>

<script>performance.mark(‘startNavigation’);</script>

<div class=”navigationBlock”> … </div>

<script>performance.mark(‘endNavigation’); performance.measure(‘navigationTime’, ‘startNavigation’, ‘endNavigation’);</script>

</body>

Page 12: Gathering of client side metrics

Sending ...● to server

● ajax, web sockets, …● is there a standard?

Page 13: Gathering of client side metrics

etsy/statsd● node.js

● http/udp

● Third-party backends

Page 14: Gathering of client side metrics

etsy/statsd● node.js

● http/udp

● Third-party backends

● <metricname>:<value>|<type>

Page 15: Gathering of client side metrics

etsy/statsd● node.js

● http/udp

● Third-party backends

● <metricname>:<value>|<type>

● Counting - gorets:1|c

Page 16: Gathering of client side metrics

etsy/statsd● node.js

● http/udp

● Third-party backends

● <metricname>:<value>|<type>

● Counting - gorets:1|c

● Sampling - gorets:1|c|@0.1

Page 17: Gathering of client side metrics

etsy/statsd● node.js

● http/udp

● Third-party backends

● <metricname>:<value>|<type>

● Counting - gorets:1|c

● Sampling - gorets:1|c|@0.1

● Timing - glork:320|ms|@0.1

Page 18: Gathering of client side metrics

etsy/statsd● node.js

● http/udp

● Third-party backends

● <metricname>:<value>|<type>

● Counting - gorets:1|c

● Sampling - gorets:1|c|@0.1

● Timing - glork:320|ms|@0.1

● Gauges - gaugor:333|g gaugor:-10|g

Page 19: Gathering of client side metrics

etsy/statsd● node.js

● http/udp

● Third-party backends

● <metricname>:<value>|<type>

● Counting - gorets:1|c

● Sampling - gorets:1|c|@0.1

● Timing - glork:320|ms|@0.1

● Gauges - gaugor:333|g gaugor:-10|g

● https://github.com/etsy/statsd

Page 20: Gathering of client side metrics

Graphite

● https://graphite.readthedocs.io/en/latest/

● Store numeric time-series data

● Render graphs of this data on demand

Page 21: Gathering of client side metrics

Graphite

Page 22: Gathering of client side metrics

Grafana

● Beautiful metric & analytic dashboards

● http://grafana.org/

Page 23: Gathering of client side metrics

Finally

Page 24: Gathering of client side metrics

Questions?● e-mail: [email protected]

● blog: http://vinnikov.net

● https://www.facebook.com/gleb.vinnikov