Путь мониторинга, devops club в grammarly
TRANSCRIPT
![Page 1: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/1.jpg)
Путь мониторингамодульность.гибкость.devops
![Page 2: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/2.jpg)
Ghbdtn!
• Всеволод Поляков
• Lead DevOps Grammarly
• поддержка около 30 сервисов на Java, erlang, python, lisp, ruby, js силами 4-х админов
![Page 3: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/3.jpg)
![Page 4: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/4.jpg)
Чего мы хотим?• Получать сообщения о проблемах
• Не получать сообщения когда проблем нет
• Помощь в поиске проблемы
• Предупреждение о возможных проблемах
• Не пропускать проблемы
![Page 5: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/5.jpg)
DevOps
• Разработчики знают сервис лучше чем опсы
• Нет батлнека в опс команде
• Повышается скорость работы
![Page 6: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/6.jpg)
Почему старое плохо?
• Свои сложные концепции
• Сложно для девелоперов
• Содержит в себе все что может пригодиться, а может и не пригодиться
• Две системы управления конфигурацией
![Page 7: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/7.jpg)
Метрики
• env.role.node_name.metric
• Приложение пишет метрики в statsd
• Система пишет метрики в statsd
• Агрегируем и чекаем сами, без приложения
![Page 8: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/8.jpg)
Statsd
• Агрегируем сами• metric.name:1|c• каунтеры, гауджи и таймеры
![Page 9: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/9.jpg)
Пожелания• Простота добавления метрик и
проверок по ним
• Должно скейлиться и не падать
• Хранить информацию по метрикам как можно дольше
• Хранить много метрик
• Разработчики мониторят свои сервисы без участия опсов
![Page 10: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/10.jpg)
• Логи: 300 Gb/день
• Метрики: 120 000, после агрегации, обновляются раз в 10 секунд
• 300 проверок состояний
• Разработчики всех сервисов отвечают за мониторинг
• Занятость команды админов в мониторинге минимальна
![Page 11: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/11.jpg)
Sensu
![Page 12: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/12.jpg)
influx
• Маленькая база на go ~ 20mb RAM
• Локальная база на каждом сервере
• Хранилище метрик на два дня
![Page 13: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/13.jpg)
Сбор метрик в ноде
![Page 14: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/14.jpg)
Глобальное хранилище
![Page 15: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/15.jpg)
скрин графаны
![Page 16: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/16.jpg)
Логи
• Общий формат для всех сервисов: json
• Текстовый файл с logrotate
![Page 17: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/17.jpg)
Мониторинг фронтенда
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](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/18.jpg)
Мониторинг фронтенда
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](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/19.jpg)
Heka - by Mozilla
• Hekad ~~ легковесный и ускоренный Logstash
• Можно ставить на каждый сервер
• Может объединить сбор метрик и логов
![Page 20: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/21.jpg)
Жизнь без 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](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/22.jpg)
Жизнь с 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](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/23.jpg)
Стабильность HTTP сервисов
● health-чеки ок, но их мало
● нужно мониторить error логи сервисов
● нужно собирать статистику статусов и времени отклика всех http запросов
● нужно взвешивать показатели относительно количества уникальных пользователей
● e.g. “% пользователей, получивших http 50x для сервиса за последние N минут”
![Page 24: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/24.jpg)
● подсчет укикальных значений по большому массиву данных в реальном времени — непростая задача
● Elasticsearch HyperLogLog++ алгоритм с нечеткой логикой, лучше подходит для оффлайн анализа
● statsd - считаем уники распределенно, но не группируем
● в идеале, сделать риалтаймовую и распределенную? молотилку для уников и гистограмм
Считалка уников
![Page 25: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/25.jpg)
Стабильность HTTP сервисов
![Page 26: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/26.jpg)
Слайд по всяким штукам
• 500-е, уникальные юзеры
• разработчики сами все мониторят и просыпаются ночью
• сравнение времени обработки чего-то в фронтенде и на бекенде
• сквозной userID по всем сервисам
![Page 27: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/27.jpg)
Над чем мы думаем
• Мониторинг безымянных серверов
• Коллекция и хранение метрик приложений в mesos/kubernetes окружениях
![Page 28: Путь мониторинга, DevOps club в Grammarly](https://reader035.vdocuments.mx/reader035/viewer/2022062406/55cb0510bb61eb97528b45c1/html5/thumbnails/28.jpg)
Спасибо.мои контакты: [email protected]/ctrlok
skype: ctrlok1987
мои контакты2: [email protected]
github.com/ybogdanov