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

Post on 12-Aug-2015

148 views 2 download

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

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

Ghbdtn!

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

• Lead DevOps Grammarly

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

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

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

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

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

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

DevOps

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

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

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

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

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

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

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

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

Метрики

• env.role.node_name.metric

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

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

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

Statsd

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

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

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

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

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

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

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

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

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

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

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

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

Sensu

influx

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

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

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

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

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

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

Логи

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

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

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

Web browser Web browser Web browser

Nginxx 2

Access logs

Logstash

Elasticsearch x 3

Statsd

Graphite

Graphana Kibana

x 2

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

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

Heka - by Mozilla

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

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

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

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● …..

Жизнь без Heka

Server

Statsd

Logstash-fw

Elasticsearch

Graphite

Logstashgateway

Statsd x 3

x 4

x 300

x 2app & server metrics

metrics from logs

logs

Жизнь с Heka

ServerHekad

Elasticsearch

Graphite

x 4x 300

x 2app & server metrics

metrics from logs

logs

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

StatsdLogstash

-fw

Logstashgateway

Statsd x3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо.мои контакты: ctrlok@gmail.comgithub.com/ctrlok

skype: ctrlok1987

мои контакты2: yuriy.bogdanov@grammarly.com

github.com/ybogdanov