Путь мониторинга, DevOps club в Grammarly

28
Путь мониторинга модульность.гибкость.devops

Transcript of Путь мониторинга, DevOps club в Grammarly

Page 1: Путь мониторинга, DevOps club в Grammarly

Путь мониторингамодульность.гибкость.devops

Page 2: Путь мониторинга, DevOps club в Grammarly

Ghbdtn!

• Всеволод Поляков

• Lead DevOps Grammarly

• поддержка около 30 сервисов на Java, erlang, python, lisp, ruby, js силами 4-х админов

Page 3: Путь мониторинга, DevOps club в Grammarly
Page 4: Путь мониторинга, DevOps club в Grammarly

Чего мы хотим?• Получать сообщения о проблемах

• Не получать сообщения когда проблем нет

• Помощь в поиске проблемы

• Предупреждение о возможных проблемах

• Не пропускать проблемы

Page 5: Путь мониторинга, DevOps club в Grammarly

DevOps

• Разработчики знают сервис лучше чем опсы

• Нет батлнека в опс команде

• Повышается скорость работы

Page 6: Путь мониторинга, DevOps club в Grammarly

Почему старое плохо?

• Свои сложные концепции

• Сложно для девелоперов

• Содержит в себе все что может пригодиться, а может и не пригодиться

• Две системы управления конфигурацией

Page 7: Путь мониторинга, DevOps club в Grammarly

Метрики

• env.role.node_name.metric

• Приложение пишет метрики в statsd

• Система пишет метрики в statsd

• Агрегируем и чекаем сами, без приложения

Page 8: Путь мониторинга, DevOps club в Grammarly

Statsd

• Агрегируем сами• metric.name:1|c• каунтеры, гауджи и таймеры

Page 9: Путь мониторинга, DevOps club в Grammarly

Пожелания• Простота добавления метрик и

проверок по ним

• Должно скейлиться и не падать

• Хранить информацию по метрикам как можно дольше

• Хранить много метрик

• Разработчики мониторят свои сервисы без участия опсов

Page 10: Путь мониторинга, DevOps club в Grammarly

• Логи: 300 Gb/день

• Метрики: 120 000, после агрегации, обновляются раз в 10 секунд

• 300 проверок состояний

• Разработчики всех сервисов отвечают за мониторинг

• Занятость команды админов в мониторинге минимальна

Page 11: Путь мониторинга, DevOps club в Grammarly

Sensu

Page 12: Путь мониторинга, DevOps club в Grammarly

influx

• Маленькая база на go ~ 20mb RAM

• Локальная база на каждом сервере

• Хранилище метрик на два дня

Page 13: Путь мониторинга, DevOps club в Grammarly

Сбор метрик в ноде

Page 14: Путь мониторинга, DevOps club в Grammarly

Глобальное хранилище

Page 15: Путь мониторинга, DevOps club в Grammarly

скрин графаны

Page 16: Путь мониторинга, DevOps club в Grammarly

Логи

• Общий формат для всех сервисов: json

• Текстовый файл с logrotate

Page 17: Путь мониторинга, DevOps club в Grammarly

Мониторинг фронтенда

Web browser Web browser Web browser

Nginxx 2

Access logs

Logstash

Elasticsearch x 3

Statsd

Graphite

Graphana Kibana

x 2

Page 18: Путь мониторинга, DevOps club в Grammarly

Мониторинг фронтенда

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 19: Путь мониторинга, DevOps club в Grammarly

Heka - by Mozilla

• Hekad ~~ легковесный и ускоренный Logstash

• Можно ставить на каждый сервер

• Может объединить сбор метрик и логов

Page 20: Путь мониторинга, DevOps club в Grammarly

Heka - by MozillaHekad - single process, plugins by configuration

Inputs Decoders Filters Encoders Outputs

● File polling

● File tailing● HTTP● TCP/UDP● Kafka● nagios

checks● statsd

● Framing● Regex● Token

Splitters

● JSON● Access

logs● Geo IP● Linux

Stats● Protobuf● Rsyslog● MySQL

slow log

● Counter● Anomaly

detection● Frequent

items● Unique● HTTP

status graph

● Alert● Elasticsearc

h● Stats● Influxdb

schema● JSON

● AMQP● Carbon● Elasticsearc

h● File● HTTP● IRC● Kafka● Log● Nagios● SMTP● …..

Page 21: Путь мониторинга, DevOps club в Grammarly

Жизнь без Heka

Server

Statsd

Logstash-fw

Elasticsearch

Graphite

Logstashgateway

Statsd x 3

x 4

x 300

x 2app & server metrics

metrics from logs

logs

Page 22: Путь мониторинга, DevOps club в Grammarly

Жизнь с Heka

ServerHekad

Elasticsearch

Graphite

x 4x 300

x 2app & server metrics

metrics from logs

logs

Полная конфигурация мониторинга приложения находится в одном месте

StatsdLogstash

-fw

Logstashgateway

Statsd x3

Page 23: Путь мониторинга, DevOps club в Grammarly

Стабильность HTTP сервисов

● health-чеки ок, но их мало

● нужно мониторить error логи сервисов

● нужно собирать статистику статусов и времени отклика всех http запросов

● нужно взвешивать показатели относительно количества уникальных пользователей

● e.g. “% пользователей, получивших http 50x для сервиса за последние N минут”

Page 24: Путь мониторинга, DevOps club в Grammarly

● подсчет укикальных значений по большому массиву данных в реальном времени — непростая задача

● Elasticsearch HyperLogLog++ алгоритм с нечеткой логикой, лучше подходит для оффлайн анализа

● statsd - считаем уники распределенно, но не группируем

● в идеале, сделать риалтаймовую и распределенную? молотилку для уников и гистограмм

Считалка уников

Page 25: Путь мониторинга, DevOps club в Grammarly

Стабильность HTTP сервисов

Page 26: Путь мониторинга, DevOps club в Grammarly

Слайд по всяким штукам

• 500-е, уникальные юзеры

• разработчики сами все мониторят и просыпаются ночью

• сравнение времени обработки чего-то в фронтенде и на бекенде

• сквозной userID по всем сервисам

Page 27: Путь мониторинга, DevOps club в Grammarly

Над чем мы думаем

• Мониторинг безымянных серверов

• Коллекция и хранение метрик приложений в mesos/kubernetes окружениях