Successfully reported this slideshow.
Your SlideShare is downloading. ×

Тошнит от колец великая битва систем мониторинга, часть I, Александр Чистяков (Git in Sky)

Ad

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

Ad

Давайте познакомимся
• Меня зовут Саша
• Я адепт Церкви Метрик
• Я ненавижу Zabbix

Ad

Теперь ваша очередь
• В зале есть еще Саша?
• В зале есть еще адепт Церкви Метрик?
• В зале есть те, кто любит Zabbix?

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Check these out next

1 of 52 Ad
1 of 52 Ad

Тошнит от колец великая битва систем мониторинга, часть I, Александр Чистяков (Git in Sky)

Download to read offline

В поисках Святого Грааля мы перепробовали почти все системы сбора и хранения метрик — от распределенных до не очень. Несмотря на то, что цели и задачи систем сбора и хранения метрик одинаковы и кажутся очень простыми, нам было очень непросто — доходило до того, что на графиках ничего толком не рисовалось в сложной ситуации.

Уже отчаявшись, мы решили предпринять последнее усилие, вооружившись фактами. А именно: поскольку хранение и обработка time series информации является важнейшей задачей системы сбора и хранения метрик, мы решили измерить производительность, в первую очередь, подсистемы хранения. Для этого мы запаслись относительно недавно появившимися в ядре фреймворком eBPF, утилитой blktrace и визуализатором ее результатов iowatcher, утилитами atop и perf и другим инструментарием современного инженера по оптимизации производительности.

В первой части мы сравним между собой популярные системы сбора и хранения метрик, обычно существующие в рамках одного узла: Graphite, RRDTool, InfluxDB, Prometheus, Zabbix.

В поисках Святого Грааля мы перепробовали почти все системы сбора и хранения метрик — от распределенных до не очень. Несмотря на то, что цели и задачи систем сбора и хранения метрик одинаковы и кажутся очень простыми, нам было очень непросто — доходило до того, что на графиках ничего толком не рисовалось в сложной ситуации.

Уже отчаявшись, мы решили предпринять последнее усилие, вооружившись фактами. А именно: поскольку хранение и обработка time series информации является важнейшей задачей системы сбора и хранения метрик, мы решили измерить производительность, в первую очередь, подсистемы хранения. Для этого мы запаслись относительно недавно появившимися в ядре фреймворком eBPF, утилитой blktrace и визуализатором ее результатов iowatcher, утилитами atop и perf и другим инструментарием современного инженера по оптимизации производительности.

В первой части мы сравним между собой популярные системы сбора и хранения метрик, обычно существующие в рамках одного узла: Graphite, RRDTool, InfluxDB, Prometheus, Zabbix.

More Related Content

Slideshows for you

More from Ontico

Тошнит от колец великая битва систем мониторинга, часть I, Александр Чистяков (Git in Sky)

  1. 1. Тошнит от колец Великая битва систем мониторинга (часть первая) Александр Чистяков
  2. 2. Давайте познакомимся • Меня зовут Саша • Я адепт Церкви Метрик • Я ненавижу Zabbix
  3. 3. Теперь ваша очередь • В зале есть еще Саша? • В зале есть еще адепт Церкви Метрик? • В зале есть те, кто любит Zabbix?
  4. 4. Что здесь будет происходить? • Мы возьмем несколько средств сбора и хранения метрик • Мене, мене, текел, упарсин • Zabbix должен проиграть
  5. 5. Я тебя слепила из того, что было • Машина для системы мониторинга: • 39G RAM, 6x300 SAS HDD, Adaptec AAC-RAID • Write-cache mode : Enabled (write-back) • Мониторится 26 хостов разных конфигураций • Ubuntu 16.04 на хосте системы мониторинга • Ubuntu 14.04 на остальных хостах • В качестве коллектора выступает collectd
  6. 6. Участники забега • Graphite/Whisper (победитель прошлой Олимпиады)
  7. 7. Участники забега • Graphite/Whisper (победитель прошлой Олимпиады) • Prometheus
  8. 8. Участники забега • Graphite/Whisper (победитель прошлой Олимпиады) • Prometheus • InfluxDB
  9. 9. Участники забега • Graphite/Whisper (победитель прошлой Олимпиады) • Prometheus • InfluxDB • Zabbix
  10. 10. Команда поддержки • Grafana • Красивые графики, нарисованные прямо при помощи испытуемого хранилища
  11. 11. Команда поддержки • Grafana • Красивые графики, нарисованные прямо при помощи испытуемого хранилища • blktrace и seekwatcher • Красивые графики, показывающие куда физически на диске попадают на чтение и запись
  12. 12. Погнали!
  13. 13. Graphite/Whisper - метрики хоста • Мы возьмем несколько средств сбора и хранения • Мене, мене, текел, упарсин • Zabbix должен проиграть
  14. 14. Graphite/Whisper - blktrace 120 секунд • Мы возьмем несколько средств сбора и хра • Мене, мене, текел, упарсин • Zabbix должен проиграть
  15. 15. Graphite/Whisper - blktrace 30 секунд • Мы возьмем несколько средств сбора и хра • Мене, мене, текел, упарсин • Zabbix должен проиграть
  16. 16. Как устроен Carbon/Whisper • Много файликов на диске (одна метрика - один файлик)
  17. 17. Как устроен Carbon/Whisper • Много файликов на диске (одна метрика - один файлик) • Файлики имеют предопределенный размер
  18. 18. Как устроен Carbon/Whisper • Много файликов на диске (одна метрика - один файлик) • Файлики имеют предопределенный размер • Размер зависит от выбора retention policy
  19. 19. Как устроен Carbon/Whisper • Много файликов на диске (одна метрика - один файлик) • Файлики имеют предопределенный размер • Размер зависит от выбора retention policy • Мы начали с policy 10s:2d,60s:14d,300s:60d,1200s:395d
  20. 20. Как устроен Carbon/Whisper • Много файликов на диске (одна метрика - один файлик) • Файлики имеют предопределенный размер • Размер зависит от выбора retention policy • Мы начали с policy 10s:2d,60s:14d,300s:60d,1200s:395d • В момент записи метрики происходит также агрегация значений
  21. 21. Ситуация в динамике • Выключим коллектор на 10 машинах (из 26)
  22. 22. Ситуация в динамике • Выключим коллектор на 10 машинах (из 26) • Ситуация на графике мало изменилась (retention policy?)
  23. 23. Ситуация в динамике • Выключим коллектор на 10 машинах (из 26) • Ситуация на графике мало изменилась (retention policy?) • Остановим carbon, удалим 10 каталогов, запустим
  24. 24. Ситуация в динамике • Выключим коллектор на 10 машинах (из 26) • Ситуация на графике мало изменилась (retention policy?) • Остановим carbon, удалим 10 каталогов, запустим • Ситуация на графике все та же
  25. 25. Ситуация в динамике • Выключим коллектор на 10 машинах (из 26) • Ситуация на графике мало изменилась (retention policy?) • Остановим carbon, удалим 10 каталогов, запустим • Ситуация на графике все та же • Потому что характеристики дисковой подсистемы нелинейны
  26. 26. Graphite/Carbon - без 10 хостов • Мы возьмем несколько средств сбора и хранения • Мене, мене, текел, упарсин • Zabbix должен проигратьcollectd_rootconf
  27. 27. Что можно улучшить? • Текущее retention policy - 11Gb места на диске • Давайте не будем агрегировать?
  28. 28. Что можно улучшить? • Текущее retention policy - 11Gb места на диске • Давайте не будем агрегировать? • 10s:60d • 67Gb места на диске
  29. 29. Graphite/Whisper - blktrace 120 секунд • Мы возьмем несколько средств сбора и хра • Мене, мене, текел, упарсин • Zabbix должен проиграть
  30. 30. Graphite/Whisper - blktrace 30 секунд • Мы возьмем несколько средств сбора и хра • Мене, мене, текел, упарсин • Zabbix должен проиграть
  31. 31. Graphite/Whisper - в динамике • Мы возьмем несколько средств сбора и хранения • Мене, мене, текел, упарсин • Zabbix должен проигратьcollectd_rootconf
  32. 32. Переходим к Prometheus • Что мы знаем о лисе: • Pull-модель, метрики забираются по HTTP непосредственно сервером
  33. 33. Переходим к Prometheus • Что мы знаем о лисе: • Pull-модель, метрики забираются по HTTP непосредственно сервером • Время удержания по умолчанию - 15 дней
  34. 34. Переходим к Prometheus • Что мы знаем о лисе: • Pull-модель, метрики забираются по HTTP непосредственно сервером • Время удержания по умолчанию - 15 дней • Частота забора метрик по умолчанию - раз в 10 секунд
  35. 35. Prometheus в динамике
  36. 36. Prometheus - blktrace 120 секунд • Мы возьмем несколько средств сбора и хра • Мене, мене, текел, упарсин • Zabbix должен проиграть
  37. 37. Prometheus - blktrace 30 секунд • Мы возьмем несколько средств сбора и хра • Мене, мене, текел, упарсин • Zabbix должен проиграть
  38. 38. Prometheus - blktrace 1200 секунд
  39. 39. Так неинтересно :( • Но постойте! • Как сделать из 26 хостов 260?
  40. 40. Так неинтересно :( • Но постойте! • Как сделать из 26 хостов 260? • Поставить на каждый хост 10 коллекторов • Репортить метрики 10 раз с разными префиксами
  41. 41. Prometheus - 260 хостов
  42. 42. Prometheus - blktrace 120 секунд
  43. 43. Prometheus - blktrace 30 секунд
  44. 44. Результаты забега • Graphite/Whisper - почетное последнее место • Prometheus - новый победитель!
  45. 45. Результаты забега • Graphite/Whisper - почетное последнее место • Prometheus - новый победитель! • Zabbix - дисквалифицирован за употребление мельдония • InfluxDB - дисквалифицирован, авторы употребляли псилоцибин
  46. 46. НО ПОЧЕМУ? • Точно так же, как и Carbon/Whisper, Prometheus хранит метрики в файликах
  47. 47. НО ПОЧЕМУ? • Точно так же, как и Carbon/Whisper, Prometheus хранит метрики в файликах • Файлики записываются на диск порциями по 1Kb (1041 байт, если точнее) • Новая порция записывается, только когда она полностью готова
  48. 48. Некоторые замечания • Просто, легко и быстро писать ИЛИ просто, легко и быстро читать
  49. 49. Некоторые замечания • Просто, легко и быстро писать ИЛИ просто, легко и быстро читать • Пока метрики помещаются в память - все хорошо
  50. 50. Некоторые замечания • Просто, легко и быстро писать ИЛИ просто, легко и быстро читать • Пока метрики помещаются в память - все хорошо • Мы имеем дело со средством оперативного мониторинга, период удержания более двух суток вряд ли имеет смысл, период оперативного слежения - около шести часов
  51. 51. Выводы • Graphite в 2016-м - это довольно смешно • Не так, правда, смешно, как Zabbix • Prometheus - лапочка • Разбудите, когда команда InfluxDB что-нибудь зарелизит уже
  52. 52. Спасибо за внимание! • Ваши вопросы? • С вами был Саша Чистяков, alex@gitinsky.com • http://meetup.com/DevOps-40

×