webcamp:front-end developers day. Алексей Ященко, Сергей Руденко...

43
Frontend Monitoring @Grammarly

Upload: geekslab

Post on 08-Aug-2015

85 views

Category:

Technology


7 download

TRANSCRIPT

Page 1: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

Frontend Monitoring@Grammarly

Page 2: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

Grammarly Products

● Web editor - single page app

● Browser extensions for ○ Chrome, Safari, FireFox

● M$ Office Add-in

● Funnels

Page 3: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 4: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 5: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 6: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

Grammarly Products :: Load

● 1M+ active users; 0.5M+ daily active

● 10M+ users planned next year

● 30 services on 300+ servers

● 130M+ requests/day

● 3.8M+ WebSocket connections/day

Page 7: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

What’s ur problem,bro?

Page 8: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

The problem

● Model != Reality

● 1B websites * X browsers

● Free users: Problem? => ⌘+W | Alt+F4

● Paid users: Problem? => Let’s torture support

Page 9: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

The problem :: CI / …

● Bugs

● Daily releases

● Performance testing

● A/B testing

Page 10: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

The Solution...

Page 11: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

The Solution :: Monitoring

● Monitoring != Tracking● Monitoring:

○ all data are volatile○ helps to assess quality in terms of

■ stability and ■ performance

○ fast problem detection and alerting○ troubleshooting○ different data sources incl. tracking events

Page 12: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

Grammarly FE Monitoring :: The Saga

● Manual testing● NewRelic● Errorception● Sentry● …● Profit (Custom Solution)

Page 13: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

FE Monitoring @ Grammarly

● Logging○ events with context (userId, UserAgent,

stacktraces, etc...)○ special cases only, no tracing ‘blah-blah’ logs

● TS Metrics○ everything else :)

● Alerting

Page 14: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

FE Monitoring Web browser

Elasticsearch x 4

Grafana Kibana

x 2Nginx

Access logs

LogstashStatsD

Graphite

x 2Sensu Checks

Sensu Server

OpsGenie

Page 15: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

Logging :: Backend Web browser

Elasticsearch x 4

Grafana Kibana

x 2Nginx

Access logs

LogstashStatsD

Graphite

x 2Sensu Checks

Sensu Server

OpsGenie

Page 16: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

TS Metrics :: Backend Web browser

Elasticsearch x 4

Grafana Kibana

x 2Nginx

Access logs

LogstashStatsD

Graphite

x 2Sensu Checks

Sensu Server

OpsGenie

Page 17: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

FE Monitoring

metrics codec

Logstash

metrics data~ 2600 RPS

~ 90 GiB / day

logs data~ 450 RPS

~ 50 GiB / day

Nginx access logs

StatsD

logs codec(+source maps)

ElasticSearch

tail *.log files

UDP HTTP

Page 18: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

FE Monitoring in numbers

● 38M logs/day

● up to 3K logs/sec @ busy hours

● ~100 Graphite metrics

● 6 servers + 2 shared w/ backend monitoring

Page 19: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

Logging :: JS Library

● legacy codebase from raven-js

● named loggers

● log levels (info, warn, error)

● default data in all events (aka MDC)

● scopes (lifetime, session, document)

Page 20: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

Logging :: JS Library

Page 21: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 22: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 23: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 24: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 25: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 26: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

kibana screen

Page 27: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 28: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

TS Metrics

● StatsD metrics: ○ counter (inc/dec)

○ timer: values for which StatsD calculates avg, min, max, percentile

○ set

Page 29: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

TS Metrics :: JS Library

Metric name: ui.performance.chrome.popup.loadCardinality is limited by Graphite storage (whisper)● product● version● browser● region (US | World)

Page 30: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

TS Metrics :: JS Library

Page 31: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 32: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

TS Metrics :: UI

Page 33: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 34: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 35: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 36: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

Case study● “Creeping” Versions● Active users● WebSocket errors● Stability● Performance● Page loads success/errors percentage● Bugs: …

Page 37: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 38: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"
Page 39: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

The Solution :: Adoption Problems● JS monitoring code bugs =>

○ wrong data○ self-DDoS

● FP alerts even on a correct data● Developers aren’t very passionate about writing logs

and metrics● Some education activity is needed to promote usage● turning monitoring into engineering practice

Page 40: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

The Solution :: Other Problems● Lack of data verification mechanism

● Graphite disk space issues

● High load as users base grows

● Monitoring infrastructure stability

Page 41: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

Near Future Plans● Graphite disk space scaling (Cassandra)● Client/server protocol optimization● Simple API for getting monitoring data for tests● Trends / New Events dashboards/facility● Simplified ES => Graphite metrics routing● Automatic code changes verification with A/B testing &

logs/metrics analysis

Page 42: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

Questions?

Page 43: WebCamp:Front-end Developers Day. Алексей Ященко, Сергей Руденко "Фронтенд-мониторинг в Grammarly"

Sergey Rudenko

Frontend engineer

fb://[email protected]@gmail.com

Aleksey Yashchenko

Backend engineer

fb://tuxslayer@[email protected]