Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Мониторинг в
высоконагруженных (и
не только) проектах:
сравнительный анализ
существующих решений
Евгений Потапов
Антон Бар...
О нас
Евгений Потапов
генеральный директор
компании 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...
Nächste SlideShare
Wird geladen in …5
×

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

967 Aufrufe

Veröffentlicht am

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

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

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

Veröffentlicht in: Ingenieurwesen
  • Ага, а про okmeter.io Женя упомянуть забыл))
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

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

  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

×