Скачать презентацию Мониторинг в высоконагруженных и не только проектах сравнительный Скачать презентацию Мониторинг в высоконагруженных и не только проектах сравнительный

2015 RootConf - Мониторинг в высоконагруженных (и не только) проектах. Сравнительный анализ существующих решений.pptx

  • Количество слайдов: 74

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

О нас Евгений Потапов генеральный директор компании ITSumma Круглоcуточное удаленное администрирование серверов и техническая О нас Евгений Потапов генеральный директор компании ITSumma Круглоcуточное удаленное администрирование серверов и техническая поддержка сайтов 100 миллионов уникальных посетителей в сутки Штат – 50 человек Более тысячи серверов на поддержке

О нас Антон Баранов системный администратор Linux/Unix компании ITSumma более 6 лет работы с О нас Антон Баранов системный администратор Linux/Unix компании ITSumma более 6 лет работы с Linuxсистемами и web-проектами различной сложности Последние полтора года тружусь над обеспечением стабильной работы highloadпроектов для посетителей со всего мира.

О нас На поддержке: О нас На поддержке:

Разделы • Что именно необходимо мониторить в высоконагруженном (и не только) проекте 24/7? • Разделы • Что именно необходимо мониторить в высоконагруженном (и не только) проекте 24/7? • Обзор существующих open-source (cacti, zabbix, graphite) систем мониторинга. • Какие существуют SAAS-решения для мониторинга?

Что нужно мониторить? • Потребление ресурсов • Работу серверного ПО • Бизнес-логика приложения Что нужно мониторить? • Потребление ресурсов • Работу серверного ПО • Бизнес-логика приложения

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

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

Критические ресурсы • CPU (idle, user, stalled/LA) • Memory (free, used) • Disk IO Критические ресурсы • CPU (idle, user, stalled/LA) • Memory (free, used) • Disk IO % • Traffic In/Out • Disk usage space (free, used)

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

Важные ресурсы • SWAP • Raid status (HW/SW) • S. M. A. R. T. Важные ресурсы • SWAP • Raid status (HW/SW) • S. M. A. R. T. status • IOPS (read/write)

Важные ресурсы • Disk avio • Sockets • CPU temperature • CPU Fan Speed Важные ресурсы • Disk avio • Sockets • CPU temperature • CPU Fan Speed

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

Серверное ПО • Nginx (RPS, reading/writing/keepalive reqs) • PHP-FPM (RPS, кол-во children’ов, кол-во «max Серверное ПО • Nginx (RPS, reading/writing/keepalive reqs) • PHP-FPM (RPS, кол-во children’ов, кол-во «max children reached» • Sphinx (кол-во запросов, наличие Fatal Error)

Серверное ПО • My. SQL (кол-во запросов select, update, insert/rows processed/innodb buffer pool usage/replica Серверное ПО • My. SQL (кол-во запросов select, update, insert/rows processed/innodb buffer pool usage/replica status) • Exim (размер почтовой очереди)

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

Бизнес-логика • Кол-во новых регистраций • Корректность работы процесса регистрации ( от заполнения формы Бизнес-логика • Кол-во новых регистраций • Корректность работы процесса регистрации ( от заполнения формы до активации учетной записи)

Бизнес-логика • Кол-во скачиваний приложения • Кол-во показов баннерной рекламы и кликов по ней Бизнес-логика • Кол-во скачиваний приложения • Кол-во показов баннерной рекламы и кликов по ней

Бизнес-логика • Доступность сервиса компании-партнера, чей контент используется на сайте • Статистика по запросам Бизнес-логика • Доступность сервиса компании-партнера, чей контент используется на сайте • Статистика по запросам с тем или иным реферером

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

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

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

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

Zabbix • Open-source • Server-side: PHP+[My. SQL/Postgre. SQL/S QLite/Oracle] • Client-side: zabbixagent/SNMP/external checks Zabbix • Open-source • Server-side: PHP+[My. SQL/Postgre. SQL/S QLite/Oracle] • Client-side: zabbixagent/SNMP/external checks

Zabbix • Создаем хост в zabbix • Устанавливаем на сервер zabbix-agent Zabbix • Создаем хост в zabbix • Устанавливаем на сервер zabbix-agent

Zabbix • • Добавляем шаблоны Импортируем недостающие Настраиваем zabbix-agent Настраиваем web-сценарий для проверки URL Zabbix • • Добавляем шаблоны Импортируем недостающие Настраиваем zabbix-agent Настраиваем web-сценарий для проверки URL

Zabbix Мониторинг nginx: • Импорт шаблона • Создание bash-скрипта для парсинга nginx-статуса • Прописывание Zabbix Мониторинг nginx: • Импорт шаблона • Создание bash-скрипта для парсинга nginx-статуса • Прописывание инклуда в конфиг zabbix-agent

Zabbix Zabbix

Zabbix Zabbix

Zabbix Уведомления Шаблон => Триггер => Действие Zabbix Уведомления Шаблон => Триггер => Действие

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

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

Cacti • Open-source • Server-side: PHP+rrdtool+My. SQL • Client-side: SNMP Cacti • Open-source • Server-side: PHP+rrdtool+My. SQL • Client-side: SNMP

Cacti • Установить на сервер snmpd • Сконфигурировать rocommunity в snmpd • Добавить хост Cacti • Установить на сервер snmpd • Сконфигурировать rocommunity в snmpd • Добавить хост в Cacti

Cacti Cacti

Cacti • По дефолту мониторинг только основных ресурсов CPU/Memory/Network etc. • Все остальное - Cacti • По дефолту мониторинг только основных ресурсов CPU/Memory/Network etc. • Все остальное - плагины

Cacti • • • Nginx - Percona plugin My. SQL - Percona Plugin URL Cacti • • • Nginx - Percona plugin My. SQL - Percona Plugin URL - m. URLin plugin Alerts - thold plugin Mail - settings plugin

Cacti Cacti

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

Cacti Cacti

Cacti Выводы • Мониторинг либо через snmp (включая custom OID), либо через плагины • Cacti Выводы • Мониторинг либо через snmp (включая custom OID), либо через плагины • Кол-во способов уведомления ограничено

Cacti Выводы • Автоматизация возможна только через cli скрипты • Масштабируется как обычное web-приложение Cacti Выводы • Автоматизация возможна только через cli скрипты • Масштабируется как обычное web-приложение

Graphite Server-side: • Carbon • Whisper • Graphite webapp Graphite Server-side: • Carbon • Whisper • Graphite webapp

Graphite carbon - a Twisted (an eventdriven networking engine written in Python) daemon that Graphite carbon - a Twisted (an eventdriven 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 Graphite whisper - a simple database library for storing time-series data (similar in design to RRD) graphite webapp - Django webapp that renders graphs ondemand using Cairo

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

Graphite • Установка collectd. • Включение нужных плагинов • Конфигурирование плагинов • Настройка отправки Graphite • Установка collectd. • Включение нужных плагинов • Конфигурирование плагинов • Настройка отправки данных в Graphite

Graphite <Plugin mysql> <Database test 1> Host Graphite Host "127. 0. 0. 1" User "root" Password "soh. W 2 ax 0 Eenox 9 t" Database "test 1" Master. Stats false URL "http: //127. 0. 0. 1/nginx-status"

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

Graphite Graphite

Graphite Уведомления через graphitebeacon/graphite-pager и т. д. Graphite-beacon: 1) добавить конфигурация нужного типа уведомлений Graphite Уведомления через graphitebeacon/graphite-pager и т. д. Graphite-beacon: 1) добавить конфигурация нужного типа уведомлений (SMTP, Hipchat, Slack, Pagerduty, HTTP handlers) 2) Добавить условия генерации уведомлений

Graphite Graphite "alerts": [ { "name": "Memory", "query": "alias. By. Node(collectd. *. memoryfree, 1)", "interval": "1 minute", "format": "bytes", "rules": ["warning: < 300 MB", "critical: < 200 MB"] },

Graphite Graphite

Graphite Выводы: • Конфигурируется только ПО отсылки данных в graphite. Сложность зависит от ПО. Graphite Выводы: • Конфигурируется только ПО отсылки данных в graphite. Сложность зависит от ПО. Collectd - прост. • Гибкие настройки уведомлений. • Автоматизация возможна и не составит труда.

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

SAAS-мониторинг • Server. Density • Data. Dog HQ SAAS-мониторинг • Server. Density • Data. Dog HQ

Server. Density • https: //www. serverdensity. io • Server-side: black-box • Client-side: python-daemon Server. Density • https: //www. serverdensity. io • Server-side: black-box • Client-side: python-daemon

Server. Density • Добавляем девайс в SD • Устанавливаем клиента на сервер тремя командами: Server. Density • Добавляем девайс в SD • Устанавливаем клиента на сервер тремя командами: curl -LO https: //www. serverdensity. com/downloads/ag ent-install. sh chmod +x agent-install. sh. /agent-install. sh -a https: //testrootconf. serverdensity. io -k 454981106 adfae 9 b 73 cb 42991 ee 05 a 6 c

Server. Density • Nginx: добавить url к nginxстатусу в /etc/sd-agent/config. cfg • My. SQL: Server. Density • Nginx: добавить url к nginxстатусу в /etc/sd-agent/config. cfg • My. SQL: добавить данные доступа в config. cfg • Перезапустить sd-agent • Добавить метрики в свойствах девайса в панели SD

Server. Density Server. Density

Server. Density Server. Density

Server. Density • URL для мониторинга добавляется отдельно, в Services • Проверка идет с Server. Density • URL для мониторинга добавляется отдельно, в Services • Проверка идет с точек со всего мира (можно выбрать) • Алерты создаются автоматически

Server. Density Server. Density

Server. Density Server. Density

Server. Density • Автоматизация без проблем • Наличие API • Уведомления через почту/Slack/Hip. Chat/SMS/P Server. Density • Автоматизация без проблем • Наличие API • Уведомления через почту/Slack/Hip. Chat/SMS/P ager. Duty

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

Datadog HQ Datadog HQ

Datadog HQ Nginx: • Включить интеграцию • Сделать копипасту в /etc/dd-agent/conf. d/nginx. yaml : 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: vm 96153. local • My. SQL добавляется аналогично, через интеграцию • Рестартовать dd-agent

Datadog HQ Datadog HQ

Datadog HQ • Мониторинг сайта добавляется как http -проверка через /etc/ddagent/conf. d/http_check. yaml • Datadog HQ • Мониторинг сайта добавляется как http -проверка через /etc/ddagent/conf. d/http_check. yaml • Уведомления настраиваются через панель, в разделе «Monitors»

Datadog HQ Datadog HQ

Datadog HQ • Автоматизация без проблем • Наличие API • Уведомления через почту/Pager. Duty Datadog HQ • Автоматизация без проблем • Наличие API • Уведомления через почту/Pager. Duty + ручная настройка чего угодно через webhooks

Мониторинг Так что же выбрать? Мониторинг Так что же выбрать?

Контакты Евгений Потапов http: //itsumma. ru eapotapov@itsumma. ru https: //www. facebook. com/eapotapov Антон Баранов Контакты Евгений Потапов 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