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

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

  • Upload
    ontico

  • View
    478

  • Download
    0

Embed Size (px)

Citation preview

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: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

GraphiteServer-side:• Carbon• Whisper• Graphite webapp

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

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

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

Graphitewhisper - 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: Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ существующих решений

GraphiteClient-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.shchmod +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]://www.facebook.com/eapotapov

Антон Барановhttps://anton-baranov.me

[email protected]://www.facebook.com/anton.s.baranov