Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Мониторинг в
высоконагруженных (и
не только) проектах:
сравнительный анализ
существующих решений
Евгений Потапов
Антон Бар...
О нас
Евгений Потапов
генеральный директор
компании ITSumma
Круглоcуточное удаленное
администрирование серверов
и техничес...
О нас
Антон Баранов
системный администратор
Linux/Unix компании ITSumma
более 6 лет работы с Linux-
системами и web-проект...
О нас
На поддержке:
Разделы
• Что именно необходимо мониторить в
высоконагруженном (и не только)
проекте 24/7?
• Обзор существующих open-sourc...
Что нужно мониторить?
• Потребление ресурсов
• Работу серверного ПО
• Бизнес-логика приложения
Ресурсы
Делятся на 2 группы:
• Критические
• Важные
Критические ресурсы
Проблемы с ними
гарантированно
приведут к
неработоспособности
сервисов.
Критические ресурсы
• CPU (idle,user,stalled/LA)
• Memory (free,used)
• Disk IO %
• Traffic In/Out
• Disk usage space (fre...
Важные ресурсы
Наблюдение за ними
позволяют предсказать
возникновение проблем
Важные ресурсы
• SWAP
• Raid status (HW/SW)
• S.M.A.R.T. status
• IOPS (read/write)
Важные ресурсы
• Disk avio
• Sockets
• CPU temperature
• CPU Fan Speed
Серверное ПО
Самое главное: вы должны
четко представлять себе,
для чего необходимо
мониторить тот или иной
параметр.
Серверное ПО
• Nginx (RPS,
reading/writing/keepalive reqs)
• PHP-FPM (RPS, кол-во
children’ов, кол-во «max
children reache...
Серверное ПО
• MySQL (кол-во запросов
select,update,insert/rows
processed/innodb buffer
pool usage/replica status)
• Exim ...
Бизнес-логика
Все показатели работы
проекта, проблемы с
которыми являются
критичными для бизнеса
Бизнес-логика
• Кол-во новых регистраций
• Корректность работы
процесса регистрации ( от
заполнения формы до
активации уче...
Бизнес-логика
• Кол-во скачиваний
приложения
• Кол-во показов
баннерной рекламы и
кликов по ней
Бизнес-логика
• Доступность сервиса
компании-партнера, чей
контент используется на
сайте
• Статистика по запросам с
тем ил...
Да чему там ломаться?
Мониторинг мониторинга!
• Работа подсистемы
уведомлений
• Возможность отправки
почты/смс/уведомлений
в jabber/slack/hipcha...
Open-source
мониторинг
• Zabbix
• Cacti
• Graphite
Что мониторим?
• CPU
• Memory
• Nginx status
• Mysql status
• URL response time
Zabbix
• Open-source
• Server-side:
PHP+[MySQL/PostgreSQL/S
QLite/Oracle]
• Client-side: zabbix-
agent/SNMP/external checks
Zabbix
• Создаем хост в zabbix
• Устанавливаем на сервер
zabbix-agent
Zabbix
• Добавляем шаблоны
• Импортируем
недостающие
• Настраиваем zabbix-agent
• Настраиваем web-
сценарий для проверки
U...
Zabbix
Мониторинг nginx:
• Импорт шаблона
• Создание bash-скрипта для
парсинга nginx-статуса
• Прописывание инклуда в
конф...
Zabbix
Zabbix
Zabbix
Уведомления
Шаблон => Триггер =>
Действие
Zabbix
Выводы:
• Конфигурирование Zabbix -
достаточно сложно
• Zabbix-сервер
масштабируется так же, как
и любое другое веб...
Zabbix
• Автоматизация
мониторинга новых узлов
возможна без проблем
любыми средствами
управления конфигурацией
Cacti
• Open-source
• Server-side:
PHP+rrdtool+MySQL
• Client-side: SNMP
Cacti
• Установить на сервер
snmpd
• Сконфигурировать
rocommunity в snmpd
• Добавить хост в Cacti
Cacti
Cacti
• По дефолту мониторинг
только основных ресурсов -
CPU/Memory/Network etc.
• Все остальное - плагины
Cacti
• Nginx - Percona plugin
• MySQL - Percona Plugin
• URL - mURLin plugin
• Alerts - thold plugin
• Mail - settings pl...
Cacti
Cacti
• уведомления только на
email через плагин settings
(возможно есть и другие
плагины)
Cacti
Cacti
Выводы
• Мониторинг либо через
snmp (включая custom
OID), либо через плагины
• Кол-во способов
уведомления ограничено
Cacti
Выводы
• Автоматизация возможна
только через cli скрипты
• Масштабируется как
обычное web-приложение
Graphite
Server-side:
• Carbon
• Whisper
• Graphite webapp
Graphite
carbon - a Twisted (an event-
driven networking engine
written in Python) daemon that
listens for time-series data
Graphite
whisper - a simple database
library for storing time-series
data (similar in design to RRD)
graphite webapp - Dja...
Graphite
Client-side: любое ПО,
которое сумеет отсылать
данные в нужном формате в
Graphite (Bucky, collectd,
Collectl, Dia...
Graphite
• Установка collectd.
• Включение нужных
плагинов
• Конфигурирование
плагинов
• Настройка отправки данных
в Graph...
Graphite
<Plugin mysql>
<Database test1>
Host "127.0.0.1"
User "root"
Password "sohW2ax0Eenox9t"
Database "test1"
MasterSt...
Graphite
Мониторинг <название
метрики> возможен с
помощью чего угодно, что
может посылать данные на
carbon в нужном формат...
Graphite
Graphite
Уведомления через graphite-
beacon/graphite-pager и т.д.
Graphite-beacon:
1) добавить конфигурация нужного
типа у...
Graphite
"alerts": [
{
"name": "Memory",
"query": "aliasByNode(collectd.*.memory.memory-
free, 1)",
"interval": "1minute",...
Graphite
Graphite
Выводы:
• Конфигурируется только ПО
отсылки данных в graphite.
Сложность зависит от ПО.
Collectd - прост.
• Гибки...
Graphite
Масштабируется горизонтально
Движок хранения данных whisper имеет
недостатки, проявляющиеся на больших
количества...
SAAS-мониторинг
• ServerDensity
• DataDog HQ
ServerDensity
• https://www.serverdensity.io
• Server-side: black-box
• Client-side: python-daemon
ServerDensity
• Добавляем девайс в SD
• Устанавливаем клиента на сервер
тремя командами:
curl -LO
https://www.serverdensit...
ServerDensity
• Nginx: добавить url к nginx-
статусу в /etc/sd-agent/config.cfg
• MySQL: добавить данные
доступа в config....
ServerDensity
ServerDensity
ServerDensity
• URL для мониторинга добавляется
отдельно, в Services
• Проверка идет с точек со всего
мира (можно выбрать)...
ServerDensity
ServerDensity
ServerDensity
• Автоматизация без
проблем
• Наличие API
• Уведомления через
почту/Slack/HipChat/SMS/P
agerDuty
Datadog HQ
• http://datadoghq.com
• Server-side: black-box
• Client-side: python daemon
Datadog HQ
Datadog HQ
Nginx:
• Включить интеграцию
• Сделать копипасту в /etc/dd-agent/conf.d/nginx.yaml :
init_config:
instances:
- ...
Datadog HQ
Datadog HQ
• Мониторинг сайта добавляется как
http-проверка через /etc/dd-
agent/conf.d/http_check.yaml
• Уведомления наст...
Datadog HQ
Datadog HQ
• Автоматизация без
проблем
• Наличие API
• Уведомления через
почту/PagerDuty + ручная
настройка чего угодно
че...
Мониторинг
Так что же выбрать?
Контакты
Евгений Потапов
http://itsumma.ru
eapotapov@itsumma.ru
https://www.facebook.com/eapotapov
Антон Баранов
https://a...
Upcoming SlideShare
Loading in …5
×

Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений / Е. Потапов и А. Баранов

971 views

Published on

Выбор системы мониторинга - это практически holy-war-ная тема среди администраторов и разработчиков. Какая система лучше? Что удобнее? Какая система сможет выдержать большое количество статистики, а какая - лучше собрать и представить данные?

В своем докладе мы попробуем предельно непредвзято рассмотреть существующие решения и понять, что и когда можно использовать.

См. тезисы - http://rootconf.ru/2015/abstracts/1746

Published in: Engineering
  • Ага, а про okmeter.io Женя упомянуть забыл))
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений / Е. Потапов и А. Баранов

  1. 1. Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений Евгений Потапов Антон Баранов
  2. 2. О нас Евгений Потапов генеральный директор компании ITSumma Круглоcуточное удаленное администрирование серверов и техническая поддержка сайтов 100 миллионов уникальных посетителей в сутки Штат – 50 человек Более тысячи серверов на поддержке
  3. 3. О нас Антон Баранов системный администратор Linux/Unix компании ITSumma более 6 лет работы с Linux- системами и web-проектами различной сложности Последние полтора года тружусь над обеспечением стабильной работы highload- проектов для посетителей со всего мира.
  4. 4. О нас На поддержке:
  5. 5. Разделы • Что именно необходимо мониторить в высоконагруженном (и не только) проекте 24/7? • Обзор существующих open-source (cacti,zabbix,graphite) систем мониторинга. • Какие существуют SAAS-решения для мониторинга?
  6. 6. Что нужно мониторить? • Потребление ресурсов • Работу серверного ПО • Бизнес-логика приложения
  7. 7. Ресурсы Делятся на 2 группы: • Критические • Важные
  8. 8. Критические ресурсы Проблемы с ними гарантированно приведут к неработоспособности сервисов.
  9. 9. Критические ресурсы • CPU (idle,user,stalled/LA) • Memory (free,used) • Disk IO % • Traffic In/Out • Disk usage space (free,used)
  10. 10. Важные ресурсы Наблюдение за ними позволяют предсказать возникновение проблем
  11. 11. Важные ресурсы • SWAP • Raid status (HW/SW) • S.M.A.R.T. status • IOPS (read/write)
  12. 12. Важные ресурсы • Disk avio • Sockets • CPU temperature • CPU Fan Speed
  13. 13. Серверное ПО Самое главное: вы должны четко представлять себе, для чего необходимо мониторить тот или иной параметр.
  14. 14. Серверное ПО • Nginx (RPS, reading/writing/keepalive reqs) • PHP-FPM (RPS, кол-во children’ов, кол-во «max children reached» • Sphinx (кол-во запросов, наличие Fatal Error)
  15. 15. Серверное ПО • MySQL (кол-во запросов select,update,insert/rows processed/innodb buffer pool usage/replica status) • Exim (размер почтовой очереди)
  16. 16. Бизнес-логика Все показатели работы проекта, проблемы с которыми являются критичными для бизнеса
  17. 17. Бизнес-логика • Кол-во новых регистраций • Корректность работы процесса регистрации ( от заполнения формы до активации учетной записи)
  18. 18. Бизнес-логика • Кол-во скачиваний приложения • Кол-во показов баннерной рекламы и кликов по ней
  19. 19. Бизнес-логика • Доступность сервиса компании-партнера, чей контент используется на сайте • Статистика по запросам с тем или иным реферером
  20. 20. Да чему там ломаться?
  21. 21. Мониторинг мониторинга! • Работа подсистемы уведомлений • Возможность отправки почты/смс/уведомлений в jabber/slack/hipchat и т.д.
  22. 22. Open-source мониторинг • Zabbix • Cacti • Graphite
  23. 23. Что мониторим? • CPU • Memory • Nginx status • Mysql status • URL response time
  24. 24. Zabbix • Open-source • Server-side: PHP+[MySQL/PostgreSQL/S QLite/Oracle] • Client-side: zabbix- agent/SNMP/external checks
  25. 25. Zabbix • Создаем хост в zabbix • Устанавливаем на сервер zabbix-agent
  26. 26. Zabbix • Добавляем шаблоны • Импортируем недостающие • Настраиваем zabbix-agent • Настраиваем web- сценарий для проверки URL
  27. 27. Zabbix Мониторинг nginx: • Импорт шаблона • Создание bash-скрипта для парсинга nginx-статуса • Прописывание инклуда в конфиг zabbix-agent
  28. 28. Zabbix
  29. 29. Zabbix
  30. 30. Zabbix Уведомления Шаблон => Триггер => Действие
  31. 31. Zabbix Выводы: • Конфигурирование Zabbix - достаточно сложно • Zabbix-сервер масштабируется так же, как и любое другое веб- приложение
  32. 32. Zabbix • Автоматизация мониторинга новых узлов возможна без проблем любыми средствами управления конфигурацией
  33. 33. Cacti • Open-source • Server-side: PHP+rrdtool+MySQL • Client-side: SNMP
  34. 34. Cacti • Установить на сервер snmpd • Сконфигурировать rocommunity в snmpd • Добавить хост в Cacti
  35. 35. Cacti
  36. 36. Cacti • По дефолту мониторинг только основных ресурсов - CPU/Memory/Network etc. • Все остальное - плагины
  37. 37. Cacti • Nginx - Percona plugin • MySQL - Percona Plugin • URL - mURLin plugin • Alerts - thold plugin • Mail - settings plugin
  38. 38. Cacti
  39. 39. Cacti • уведомления только на email через плагин settings (возможно есть и другие плагины)
  40. 40. Cacti
  41. 41. Cacti Выводы • Мониторинг либо через snmp (включая custom OID), либо через плагины • Кол-во способов уведомления ограничено
  42. 42. Cacti Выводы • Автоматизация возможна только через cli скрипты • Масштабируется как обычное web-приложение
  43. 43. Graphite Server-side: • Carbon • Whisper • Graphite webapp
  44. 44. Graphite carbon - a Twisted (an event- driven networking engine written in Python) daemon that listens for time-series data
  45. 45. Graphite whisper - a simple database library for storing time-series data (similar in design to RRD) graphite webapp - Django webapp that renders graphs on-demand using Cairo
  46. 46. Graphite Client-side: любое ПО, которое сумеет отсылать данные в нужном формате в Graphite (Bucky, collectd, Collectl, Diamond, Ganglia,Logster, Sensu, statsd etc.)
  47. 47. Graphite • Установка collectd. • Включение нужных плагинов • Конфигурирование плагинов • Настройка отправки данных в Graphite
  48. 48. Graphite <Plugin mysql> <Database test1> Host "127.0.0.1" User "root" Password "sohW2ax0Eenox9t" Database "test1" MasterStats false </Database> </Plugin> <Plugin nginx> URL "http://127.0.0.1/nginx-status" </Plugin>
  49. 49. Graphite Мониторинг <название метрики> возможен с помощью чего угодно, что может посылать данные на carbon в нужном формате.
  50. 50. Graphite
  51. 51. Graphite Уведомления через graphite- beacon/graphite-pager и т.д. Graphite-beacon: 1) добавить конфигурация нужного типа уведомлений (SMTP, Hipchat, Slack, Pagerduty, HTTP handlers) 2) Добавить условия генерации уведомлений
  52. 52. Graphite "alerts": [ { "name": "Memory", "query": "aliasByNode(collectd.*.memory.memory- free, 1)", "interval": "1minute", "format": "bytes", "rules": ["warning: < 300MB", "critical: < 200MB"] },
  53. 53. Graphite
  54. 54. Graphite Выводы: • Конфигурируется только ПО отсылки данных в graphite. Сложность зависит от ПО. Collectd - прост. • Гибкие настройки уведомлений. • Автоматизация возможна и не составит труда.
  55. 55. Graphite Масштабируется горизонтально Движок хранения данных whisper имеет недостатки, проявляющиеся на больших количествах метрик, рекомендуют менять его, если планируется очень много метрик graphite-relay (решение, проксирующее метрики на несколько процессов carbon-cache для распараллеливания нагрузки) - весьма требовательно к CPU, что порой требует отдельного балансера для нескольких relay.
  56. 56. SAAS-мониторинг • ServerDensity • DataDog HQ
  57. 57. ServerDensity • https://www.serverdensity.io • Server-side: black-box • Client-side: python-daemon
  58. 58. ServerDensity • Добавляем девайс в SD • Устанавливаем клиента на сервер тремя командами: curl -LO https://www.serverdensity.com/downloads/a gent-install.sh chmod +x agent-install.sh ./agent-install.sh -a https://testrootconf.serverdensity.io -k 454981106adfae9b73cb42991ee05a6c
  59. 59. ServerDensity • Nginx: добавить url к nginx- статусу в /etc/sd-agent/config.cfg • MySQL: добавить данные доступа в config.cfg • Перезапустить sd-agent • Добавить метрики в свойствах девайса в панели SD
  60. 60. ServerDensity
  61. 61. ServerDensity
  62. 62. ServerDensity • URL для мониторинга добавляется отдельно, в Services • Проверка идет с точек со всего мира (можно выбрать) • Алерты создаются автоматически
  63. 63. ServerDensity
  64. 64. ServerDensity
  65. 65. ServerDensity • Автоматизация без проблем • Наличие API • Уведомления через почту/Slack/HipChat/SMS/P agerDuty
  66. 66. Datadog HQ • http://datadoghq.com • Server-side: black-box • Client-side: python daemon
  67. 67. Datadog HQ
  68. 68. Datadog HQ Nginx: • Включить интеграцию • Сделать копипасту в /etc/dd-agent/conf.d/nginx.yaml : init_config: instances: - nginx_status_url: http://194.177.22.245/nginx-status tags: - instance:vm96153.local • MySQL добавляется аналогично, через интеграцию • Рестартовать dd-agent
  69. 69. Datadog HQ
  70. 70. Datadog HQ • Мониторинг сайта добавляется как http-проверка через /etc/dd- agent/conf.d/http_check.yaml • Уведомления настраиваются через панель, в разделе «Monitors»
  71. 71. Datadog HQ
  72. 72. Datadog HQ • Автоматизация без проблем • Наличие API • Уведомления через почту/PagerDuty + ручная настройка чего угодно через webhooks
  73. 73. Мониторинг Так что же выбрать?
  74. 74. Контакты Евгений Потапов http://itsumma.ru eapotapov@itsumma.ru https://www.facebook.com/eapotapov Антон Баранов https://anton-baranov.me abaranov@itsumma.ru https://www.facebook.com/anton.s.baranov

×