Мониторинг в высоконагруженных (и не только) проектах:...

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

Upload: anton-baranov

Post on 05-Aug-2015

394 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

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

Page 2: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

О нас

Евгений Потаповгенеральный директор компании ITSumma

Круглоcуточное удаленное администрирование серверов и техническая поддержка сайтов

100 миллионов уникальных посетителей в сутки

Штат – 50 человек

Более тысячи серверов на поддержке

Page 3: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

О нас

Антон Барановсистемный администратор Linux/Unix компании ITSumma

более 6 лет работы с Linux-системами и web-проектами различной сложности

Последние полтора года тружусь над обеспечением стабильной работы highload-проектов для посетителей со всего мира.

Page 4: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

О нас

На поддержке:

Page 5: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Разделы• Что именно необходимо

мониторить в высоконагруженном (и не только) проекте 24/7?

• Обзор существующих open-source (cacti,zabbix,graphite) систем мониторинга.

• Какие существуют SAAS-решения для мониторинга?

Page 6: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Что нужно мониторить?

• Потребление ресурсов

• Работу серверного ПО

• Бизнес-логика приложения

Page 7: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

РесурсыДелятся на 2 группы:• Критические• Важные

Page 8: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Критические ресурсыПроблемы с ними гарантированно приведут к неработоспособности сервисов.

Page 9: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Критические ресурсы

• CPU (idle,user,stalled/LA)

• Memory (free,used)

• Disk IO %

• Traffic In/Out

• Disk usage space (free,used)

Page 10: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Важные ресурсы

Наблюдение за ними позволяют предсказать возникновение проблем

Page 11: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Важные ресурсы• SWAP

• Raid status (HW/SW)

• S.M.A.R.T. status

• IOPS (read/write)

Page 12: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Важные ресурсы• Disk avio

• Sockets

• CPU temperature

• CPU Fan Speed

Page 13: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Серверное ПО

Самое главное: вы должны четко представлять себе, для чего необходимо мониторить тот или иной параметр.

Page 14: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Серверное ПО• Nginx (RPS,

reading/writing/keepalive reqs)

• PHP-FPM (RPS, кол-во children’ов, кол-во «max children reached»

• Sphinx (кол-во запросов, наличие Fatal Error)

Page 15: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Серверное ПО• MySQL (кол-во запросов

select,update,insert/rows processed/innodb buffer pool usage/replica status)

• Exim (размер почтовой очереди)

Page 16: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Бизнес-логика

Все показатели работы проекта, проблемы с которыми являются критичными для бизнеса

Page 17: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Бизнес-логика• Кол-во новых

регистраций• Корректность работы

процесса регистрации ( от заполнения формы до активации учетной записи)

Page 18: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Бизнес-логика• Кол-во скачиваний

приложения

• Кол-во показов баннерной рекламы и кликов по ней

Page 19: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Бизнес-логика• Доступность сервиса

компании-партнера, чей контент используется на сайте

• Статистика по запросам с тем или иным реферером

Page 20: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Да чему там ломаться?

Page 21: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Мониторинг мониторинга!

• Работа подсистемы уведомлений

• Возможность отправки почты/смс/уведомлений в jabber/slack/hipchat и т.д.

Page 22: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Open-source мониторинг• Zabbix• Cacti• Graphite

Page 23: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Что мониторим?• CPU• Memory• Nginx status• Mysql status• URL response time

Page 24: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Zabbix• Open-source• Server-side: PHP+

[MySQL/PostgreSQL/SQLite/Oracle]

• Client-side: zabbix-agent/SNMP/external checks

Page 25: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Zabbix• Создаем хост в zabbix

• Устанавливаем на сервер zabbix-agent

Page 26: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Zabbix• Добавляем шаблоны• Импортируем

недостающие• Настраиваем zabbix-

agent• Настраиваем web-

сценарий для проверки URL

Page 27: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Zabbix

Мониторинг nginx:• Импорт шаблона• Создание bash-скрипта

для парсинга nginx-статуса

• Прописывание инклуда в конфиг zabbix-agent

Page 28: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Zabbix

Page 29: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Zabbix

Page 30: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Zabbix

Уведомления

Шаблон => Триггер => Действие

Page 31: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Zabbix

Выводы:• Конфигурирование

Zabbix - достаточно сложно

• Zabbix-сервер масштабируется так же, как и любое другое веб-приложение

Page 32: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Zabbix• Автоматизация

мониторинга новых узлов возможна без проблем любыми средствами управления конфигурацией

Page 33: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Cacti• Open-source• Server-side:

PHP+rrdtool+MySQL• Client-side: SNMP

Page 34: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Cacti• Установить на сервер

snmpd• Сконфигурировать

rocommunity в snmpd• Добавить хост в Cacti

Page 35: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Cacti

Page 36: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Cacti• По дефолту мониторинг

только основных ресурсов - CPU/Memory/Network etc.

• Все остальное - плагины

Page 37: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Cacti• Nginx - Percona plugin• MySQL - Percona Plugin• URL - mURLin plugin• Alerts - thold plugin• Mail - settings plugin

Page 38: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Cacti

Page 39: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Cacti• уведомления только на

email через плагин settings (возможно есть и другие плагины)

Page 40: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Cacti

Page 41: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Cacti

Выводы• Мониторинг либо через

snmp (включая custom OID), либо через плагины

• Кол-во способов уведомления ограничено

Page 42: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

CactiВыводы• Автоматизация

возможна только через cli скрипты

• Масштабируется как обычное web-приложение

Page 43: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Graphite

Server-side:• Carbon• Whisper• Graphite webapp

Page 44: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Graphite

carbon - a Twisted (an event-driven networking engine written in Python) daemon that listens for time-series data

Page 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

Page 46: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Graphite

Client-side: любое ПО, которое сумеет отсылать данные в нужном формате в Graphite (Bucky, collectd, Collectl, Diamond, Ganglia,Logster, Sensu, statsd etc.)

Page 47: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Graphite• Установка collectd.• Включение нужных

плагинов• Конфигурирование

плагинов• Настройка отправки

данных в Graphite

Page 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>

<Plugin nginx>

URL "http://127.0.0.1/nginx-status"

</Plugin>

Page 49: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Graphite

Мониторинг <название метрики> возможен с помощью чего угодно, что может посылать данные на carbon в нужном формате.

Page 50: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Graphite

Page 51: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

GraphiteУведомления через graphite-beacon/graphite-pager и т.д.

Graphite-beacon:

1) добавить конфигурация нужного типа уведомлений (SMTP, Hipchat, Slack, Pagerduty, HTTP handlers)

2) Добавить условия генерации уведомлений

Page 52: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Graphite "alerts": [

{

"name": "Memory",

"query": "aliasByNode(collectd.*.memory.memory-free, 1)",

"interval": "1minute",

"format": "bytes",

"rules": ["warning: < 300MB", "critical: < 200MB"]

},

Page 53: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Graphite

Page 54: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

GraphiteВыводы:• Конфигурируется только ПО

отсылки данных в graphite. Сложность зависит от ПО. Collectd - прост.

• Гибкие настройки уведомлений.

• Автоматизация возможна и не составит труда.

Page 55: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

GraphiteМасштабируется горизонтально

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

graphite-relay (решение, проксирующее метрики на несколько процессов carbon-cache для распараллеливания нагрузки) - весьма требовательно к CPU, что порой требует отдельного балансера для нескольких relay.

Page 56: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

SAAS-мониторинг• ServerDensity• DataDog HQ

Page 57: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

ServerDensity• https://

www.serverdensity.io• Server-side: black-box• Client-side: python-

daemon

Page 58: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

ServerDensity• Добавляем девайс в SD

• Устанавливаем клиента на сервер тремя командами:

curl -LO https://www.serverdensity.com/downloads/agent-install.sh

chmod +x agent-install.sh

./agent-install.sh -a https://testrootconf.serverdensity.io -k 454981106adfae9b73cb42991ee05a6c

Page 59: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

ServerDensity• Nginx: добавить url к nginx-

статусу в /etc/sd-agent/config.cfg

• MySQL: добавить данные доступа в config.cfg

• Перезапустить sd-agent• Добавить метрики в

свойствах девайса в панели SD

Page 60: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

ServerDensity

Page 61: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

ServerDensity

Page 62: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

ServerDensity• URL для мониторинга

добавляется отдельно, в Services

• Проверка идет с точек со всего мира (можно выбрать)

• Алерты создаются автоматически

Page 63: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

ServerDensity

Page 64: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

ServerDensity

Page 65: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

ServerDensity• Автоматизация без

проблем• Наличие API• Уведомления через

почту/Slack/HipChat/SMS/PagerDuty

Page 66: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Datadog HQ• http://datadoghq.com• Server-side: black-box• Client-side: python daemon

Page 67: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Datadog HQ

Page 68: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Datadog HQNginx:

• Включить интеграцию

• Сделать копипасту в /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

Page 69: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Datadog HQ

Page 70: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Datadog HQ• Мониторинг сайта добавляется

как http-проверка через /etc/dd-agent/conf.d/http_check.yaml

• Уведомления настраиваются через панель, в разделе «Monitors»

Page 71: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Datadog HQ

Page 72: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Datadog HQ• Автоматизация без

проблем• Наличие API• Уведомления через

почту/PagerDuty + ручная настройка чего угодно через webhooks

Page 73: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

Мониторинг

Так что же выбрать?

Page 74: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

КонтактыЕвгений Потапов

http://itsumma.ru

[email protected]

https://www.facebook.com/eapotapov

Антон Баранов

https://anton-baranov.me

[email protected]

https://www.facebook.com/anton.s.baranov