Логгинг, мониторинг и все остальное

25
DevOps-40 Логгинг, мониторинг и графики 12.10.2013, DevOps meetup, СПб

Upload: alexander-chistyakov

Post on 18-Dec-2014

816 views

Category:

Documents


2 download

DESCRIPTION

Доклад на DevOps-40 meetup в баре KLЮTCH

TRANSCRIPT

Page 1: Логгинг, мониторинг и все остальное

DevOps-40

Логгинг, мониторинги графики

12.10.2013, DevOps meetup, СПб

Page 2: Логгинг, мониторинг и все остальное

DevOps-40

Я:● Инженер по эксплуатации сайтов● Работа хорошая, но как сайт упал – так хоть увольняйся

Page 3: Логгинг, мониторинг и все остальное

DevOps-40

Вы:● Разработчики сайтов● Архитекторы● Инженеры по эксплуатации● CTO● Неравнодушные люди

Page 4: Логгинг, мониторинг и все остальное

DevOps-40

Чтобы сайт не падал● Нужно за ним ухаживать:● Собирать метрики● Анализировать метрики● ^ без участия человека● Оповещать о проблемах● Предсказывать проблемы

Page 5: Логгинг, мониторинг и все остальное

DevOps-40

Какие метрики собирать● Метрики приложения:● Количество ошибок, таймеры, другая статистика (счетчики)

● Метрики платформы:● CPU, RAM, disk usage, IOPS, interrupts, etc, etc

Page 6: Логгинг, мониторинг и все остальное

DevOps-40

Метрики платформы● Классика, десятки решений:● SNMP● Cacti, Zabbix, Munin, Zenoss, OpenNMS, collectd, you-name-it

● Общие принципы: наличие агента, хранение данных в формате RRD

Page 7: Логгинг, мониторинг и все остальное

DevOps-40

Zabbix● Ненавижу и стараюсь уничтожить:● плохо скриптуется Chef/Salt/etc● плохо оптимизированы запросы – может потреблять много ресурсов

● плохой дизайн, “все в одном”● last, but not least: PHP

Page 8: Логгинг, мониторинг и все остальное

DevOps-40

Munin● Настраиваю в первую очередь:● отлично скриптуется Chef/Salt/etc● огромное количество плагинов● легко писать новые плагины● основные метрики начинают собираться сразу после установки

Page 9: Логгинг, мониторинг и все остальное

DevOps-40

Munin: пример

Page 10: Логгинг, мониторинг и все остальное

DevOps-40

Munin: проблемы● Плагины форкаются, когда их много – лишняя нагрузка на хост

● Когда много хостов – велика нагрузка на Munin-сервер

● Не очень хорошо машстабируется● Более 50 хостов я не пытался

Page 11: Логгинг, мониторинг и все остальное

DevOps-40

Метрики приложения● SaaS● Таймеры и счетчики - NewRelic● Ошибки – AirBrake, Qbaka● Общие принципы: понадобится агент и план подписки

Page 12: Логгинг, мониторинг и все остальное

DevOps-40

NewRelic: пример

Page 13: Логгинг, мониторинг и все остальное

DevOps-40

NewRelic: проблемы● Не обладает всей полнотой знания о структуре и алгоритме работы приложения

● Для детального анализа ситуации недостаточен

Page 14: Логгинг, мониторинг и все остальное

DevOps-40

Метрики приложения● In-house решения● Ошибки – pupergrep, logstash, Graylog2, Sentry/Raven

● Таймеры и счетчики – PINBA, Graphite, OpenTSDB

Page 15: Логгинг, мониторинг и все остальное

DevOps-40

Ошибки: воркфлоу● Приложение ведет лог в файл, лог-коллектор обрабатывает:

● logstash● Приложение через библиотеку общается с сервером напрямую:

● Sentry/Raven

Page 16: Логгинг, мониторинг и все остальное

DevOps-40

Лог-коллектор: logstash● Написан на JRuby● Требует JVM● Расходует память● Расходует процессор● JRuby не очень подходящее решение, как мне кажется

Page 17: Логгинг, мониторинг и все остальное

DevOps-40

Таймеры и счетчики● PINBA – только для тех, у кого PHP● Только собирает, не рисует● http://goo.gl/LGmkvF - наивная визуализация PINBA для Munin

● ^ такой детализации недостаточно, плохо смотреть историю

Page 18: Логгинг, мониторинг и все остальное

DevOps-40

UNIX-way FTW● StatsD – простой протокол передачи таймеров/счетчиков

● StatsD-сервер – собирает, агрегирует, передает дальше

● Graphite – сохраняет в формате Whisper и рисует графики

Page 19: Логгинг, мониторинг и все остальное

DevOps-40

Graphite: визуализация● Есть встроенный dashboard, он ужасен

● GDash – dashboard на Ruby:● отлично скриптуется Salt/Chef - http://goo.gl/Ayc5FU стейты здесь

● Есть и другие дэшборды

Page 20: Логгинг, мониторинг и все остальное

DevOps-40

StatsD: проблемы● У меня были проблемы с оригинальным StatsD-сервером на Node.JS (терялись метрики)

● Я просто взял statsd.rb (реализация на Ruby)

● Реализации есть на чем угодно

Page 21: Логгинг, мониторинг и все остальное

DevOps-40

StatsD: плюсы● Отлично масштабируется● ^ Просто возьмите еще один и сливайте данные в тот же Graphite

● Реализации как клиента, так и сервера, есть на всех основных языках

Page 22: Логгинг, мониторинг и все остальное

DevOps-40

GDash: пример

Page 23: Логгинг, мониторинг и все остальное

DevOps-40

GDash: пример

Page 24: Логгинг, мониторинг и все остальное

DevOps-40

Немного об оповещениях● NAGIOS отлично генерирует алерты

● NAGIOS отлично принимает пассивные проверки на TCP порт

● NAGIOS отлично скриптуется Chef/Salt

Page 25: Логгинг, мониторинг и все остальное

DevOps-40

Спасибо за внимание!● Вопросы?● DevOps-40: 40° should be enough for everyone!