My talk on monitoring systems at RootConf 2016

52
Тошнит от колец Великая битва систем мониторинга (часть первая) Александр Чистяков

Transcript of My talk on monitoring systems at RootConf 2016

Тошнит от колецВеликая битва систем мониторинга (часть первая)

Александр Чистяков

Давайте познакомимся• Меня зовут Саша

• Я адепт Церкви Метрик

• Я ненавижу Zabbix

Теперь ваша очередь• В зале есть еще Саша?

• В зале есть еще адепт Церкви Метрик?

• В зале есть те, кто любит Zabbix?

Что здесь будет происходить?• Мы возьмем несколько средств сбора и хранения метрик

• Мене, мене, текел, упарсин

• Zabbix должен проиграть

Я тебя слепила из того, что было• Машина для системы мониторинга:

• 39G RAM, 6x300 SAS HDD, Adaptec AAC-RAID

• Write-cache mode : Enabled (write-back)

• Мониторится 26 хостов разных конфигураций

• Ubuntu 16.04 на хосте системы мониторинга

• Ubuntu 14.04 на остальных хостах

• В качестве коллектора выступает collectd

Участники забега• Graphite/Whisper (победитель прошлой Олимпиады)

Участники забега• Graphite/Whisper (победитель прошлой Олимпиады)

• Prometheus

Участники забега• Graphite/Whisper (победитель прошлой Олимпиады)

• Prometheus

• InfluxDB

Участники забега• Graphite/Whisper (победитель прошлой Олимпиады)

• Prometheus

• InfluxDB

• Zabbix

Команда поддержки• Grafana

• Красивые графики, нарисованные прямо при помощи испытуемого хранилища

Команда поддержки• Grafana

• Красивые графики, нарисованные прямо при помощи испытуемого хранилища

• blktrace и seekwatcher

• Красивые графики, показывающие куда физически на диске попадают на чтение и запись

Погнали!

Graphite/Whisper - метрики хоста• Мы возьмем несколько средств сбора и хранения

• Мене, мене, текел, упарсин

• Zabbix должен проиграть

Graphite/Whisper - blktrace 120 секунд• Мы возьмем несколько средств сбора и хра

• Мене, мене, текел, упарсин

• Zabbix должен проиграть

Graphite/Whisper - blktrace 30 секунд• Мы возьмем несколько средств сбора и хра

• Мене, мене, текел, упарсин

• Zabbix должен проиграть

Как устроен Carbon/Whisper• Много файликов на диске (одна метрика - один файлик)

Как устроен Carbon/Whisper• Много файликов на диске (одна метрика - один файлик)

• Файлики имеют предопределенный размер

Как устроен Carbon/Whisper• Много файликов на диске (одна метрика - один файлик)

• Файлики имеют предопределенный размер

• Размер зависит от выбора retention policy

Как устроен Carbon/Whisper• Много файликов на диске (одна метрика - один файлик)

• Файлики имеют предопределенный размер

• Размер зависит от выбора retention policy

• Мы начали с policy 10s:2d,60s:14d,300s:60d,1200s:395d

Как устроен Carbon/Whisper• Много файликов на диске (одна метрика - один файлик)

• Файлики имеют предопределенный размер

• Размер зависит от выбора retention policy

• Мы начали с policy 10s:2d,60s:14d,300s:60d,1200s:395d

• В момент записи метрики происходит также агрегация значений

Ситуация в динамике• Выключим коллектор на 10 машинах (из 26)

Ситуация в динамике• Выключим коллектор на 10 машинах (из 26)

• Ситуация на графике мало изменилась (retention policy?)

Ситуация в динамике• Выключим коллектор на 10 машинах (из 26)

• Ситуация на графике мало изменилась (retention policy?)

• Остановим carbon, удалим 10 каталогов, запустим

Ситуация в динамике• Выключим коллектор на 10 машинах (из 26)

• Ситуация на графике мало изменилась (retention policy?)

• Остановим carbon, удалим 10 каталогов, запустим

• Ситуация на графике все та же

Ситуация в динамике• Выключим коллектор на 10 машинах (из 26)

• Ситуация на графике мало изменилась (retention policy?)

• Остановим carbon, удалим 10 каталогов, запустим

• Ситуация на графике все та же

• Потому что характеристики дисковой подсистемы нелинейны

Graphite/Carbon - без 10 хостов• Мы возьмем несколько средств сбора и хранения

• Мене, мене, текел, упарсин

• Zabbix должен проигратьcollectd_rootconf

Что можно улучшить?• Текущее retention policy - 11Gb места на диске

• Давайте не будем агрегировать?

Что можно улучшить?• Текущее retention policy - 11Gb места на диске

• Давайте не будем агрегировать?

• 10s:60d

• 67Gb места на диске

Graphite/Whisper - blktrace 120 секунд• Мы возьмем несколько средств сбора и хра

• Мене, мене, текел, упарсин

• Zabbix должен проиграть

Graphite/Whisper - blktrace 30 секунд• Мы возьмем несколько средств сбора и хра

• Мене, мене, текел, упарсин

• Zabbix должен проиграть

Graphite/Whisper - в динамике• Мы возьмем несколько средств сбора и хранения

• Мене, мене, текел, упарсин

• Zabbix должен проигратьcollectd_rootconf

Переходим к Prometheus• Что мы знаем о лисе:

• Pull-модель, метрики забираются по HTTP непосредственно сервером

Переходим к Prometheus• Что мы знаем о лисе:

• Pull-модель, метрики забираются по HTTP непосредственно сервером

• Время удержания по умолчанию - 15 дней

Переходим к Prometheus• Что мы знаем о лисе:

• Pull-модель, метрики забираются по HTTP непосредственно сервером

• Время удержания по умолчанию - 15 дней

• Частота забора метрик по умолчанию - раз в 10 секунд

Prometheus в динамике

Prometheus - blktrace 120 секунд• Мы возьмем несколько средств сбора и хра

• Мене, мене, текел, упарсин

• Zabbix должен проиграть

Prometheus - blktrace 30 секунд• Мы возьмем несколько средств сбора и хра

• Мене, мене, текел, упарсин

• Zabbix должен проиграть

Prometheus - blktrace 1200 секунд

Так неинтересно :(• Но постойте!

• Как сделать из 26 хостов 260?

Так неинтересно :(• Но постойте!

• Как сделать из 26 хостов 260?

• Поставить на каждый хост 10 коллекторов

• Репортить метрики 10 раз с разными префиксами

Prometheus - 260 хостов

Prometheus - blktrace 120 секунд

Prometheus - blktrace 30 секунд

Результаты забега• Graphite/Whisper - почетное последнее место

• Prometheus - новый победитель!

Результаты забега• Graphite/Whisper - почетное последнее место

• Prometheus - новый победитель!

• Zabbix - дисквалифицирован за употребление мельдония

• InfluxDB - дисквалифицирован, авторы употребляли псилоцибин

НО ПОЧЕМУ?• Точно так же, как и Carbon/Whisper, Prometheus хранит метрики в файликах

НО ПОЧЕМУ?• Точно так же, как и Carbon/Whisper, Prometheus хранит метрики в файликах

• Файлики записываются на диск порциями по 1Kb (1041 байт, если точнее)

• Новая порция записывается, только когда она полностью готова

Некоторые замечания• Просто, легко и быстро писать ИЛИ просто, легко и быстро читать

Некоторые замечания• Просто, легко и быстро писать ИЛИ просто, легко и быстро читать

• Пока метрики помещаются в память - все хорошо

Некоторые замечания• Просто, легко и быстро писать ИЛИ просто, легко и быстро читать

• Пока метрики помещаются в память - все хорошо

• Мы имеем дело со средством оперативного мониторинга, период удержания более двух суток вряд ли имеет смысл, период оперативного слежения - около шести часов

Выводы• Graphite в 2016-м - это довольно смешно

• Не так, правда, смешно, как Zabbix

• Prometheus - лапочка

• Разбудите, когда команда InfluxDB что-нибудь зарелизит уже

Спасибо за внимание!• Ваши вопросы?

• С вами был Саша Чистяков, [email protected]

• http://meetup.com/DevOps-40