
2015 Битрикс - Мониторинг проектов. Сравнительный анализ существующих решений.pptx
- Количество слайдов: 75
Партнерская конференция « 1 С-Битрикс» Мониторинг проектов: сравнительный анализ существующих решений Антон Баранов Системный администратор Linux
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ О себе Антон Баранов Системный администратор Linux. Более 6 лет опыта работы с Linux-системами и webпроектами различной сложности. Последние полтора года тружусь в компании ITSumma над обеспечением стабильной работы highloadпроектов для посетителей со всего мира.
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ О нас На поддержке:
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Разделы • Что именно необходимо мониторить в высоконагруженном (и не только) проекте? • Обзор существующих open-source систем мониторинга (cacti, zabbix, graphite). • Какие существуют SAAS-решения для мониторинга?
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Что нужно мониторить?
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Что нужно мониторить? • Потребление ресурсов • Работу серверного ПО • Бизнес-логика приложения
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Ресурсы Делятся на 2 группы: • Критические • Важные
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Критические ресурсы Проблемы с ними гарантированно приведут к неработоспособности сервисов.
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Критические ресурсы • CPU (idle, user, stalled/LA) • Memory (free, used) • Disk IO % • Traffic In/Out • Disk usage space (free, used)
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Важные ресурсы Наблюдение за ними позволяют предсказать возникновение проблем
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Важные ресурсы • SWAP • RAID status (SW/HW) • 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 reached» • Sphinx (кол-во запросов, наличие Fatal Error)
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Серверное ПО • My. SQL (кол-во запросов select, update, insert/rows processed/innodb buffer pool usage/replica status) • Exim (размер почтовой очереди)
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Бизнес-логика Все показатели работы проекта, проблемы с которыми являются критичными для бизнеса
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Бизнес-логика • Количество новых регистраций • Корректность работы процесса регистрации ( от заполнения формы до активации учетной записи)
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Бизнес-логика • Количество скачиваний приложения • Количество показов баннерной рекламы и кликов по ней
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Бизнес-логика • Доступность сервиса компании-партнера, чей контент используется на сайте • Статистика по запросам с тем или иным реферером
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Да чему там ломаться?
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Мониторинг мониторинга! • Работа подсистемы уведомлений • Возможность отправки почты/смс/уведомлений в jabber/slack/hipchat и т. д.
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Обзор существующих open-source систем мониторинга (cacti, zabbix, graphite)
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Zabbix • Open-source • Server-side: PHP+[My. SQL/Postgre. SQL/SQLite/Oracle] • Client-side: zabbix-agent/SNMP/external checks
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Zabbix • Создаем хост в Zabbix • Устанавливаем на сервер zabbix-агент
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Zabbix • Добавляем шаблоны • Импортируем недостающие • Настраиваем zabbix-agent • Настраиваем web-сценарий для проверки URL
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Zabbix Мониторинг nginx: • Импорт шаблона • Создание bash-скрипта для парсинга nginxстатуса • Прописывание инклуда в конфиг zabbix-agent
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Zabbix
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Zabbix Уведомления Шаблон => Триггер => Действие
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Zabbix Выводы: • Конфигурирование Zabbix - достаточно сложно • Zabbix-сервер масштабируется так же, как и любое другое веб-приложение
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Zabbix • Автоматизация мониторинга новых узлов возможна без проблем любыми средствами управления конфигурацией
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Cacti • Open-source • Server-side: PHP+rrdtool+My. SQL • Client-side: SNMP
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Cacti • Установить на сервер snmpd • Сконфигурировать rocommunity в snmpd • Добавить хост в Cacti
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Cacti
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Cacti • По дефолту мониторинг только основных ресурсов - CPU/Memory/Network etc. • Все остальное - плагины
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Cacti • Nginx - Percona plugin • My. SQL - Percona Plugin • URL - m. URLin plugin • Alerts - thold plugin • Mail - settings plugin
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ 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 timeseries data (similar in design to RRD) • graphite webapp - Django webapp that renders graphs on-demand using Cairo
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Graphite Client-side: любое ПО, которое сумеет отсылать данные в нужном формате в Graphite (Bucky, collectd, Collectl, Diamond, Ganglia, Logster, Sensu, statsd etc. )
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Graphite • Установка collectd. • Включение нужных плагинов • Конфигурирование плагинов • Настройка отправки данных в Graphite
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Graphite <Plugin mysql> <Database test 1> Host "127. 0. 0. 1" User "root" Password "soh. W 2 ax 0 Eenox 9 t" Database "test 1" Master. Stats false </Database> </Plugin>
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Graphite • Мониторинг <название метрики> возможен с помощью чего угодно, что может посылать данные на carbon в нужном формате.
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Graphite
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Graphite Уведомления через graphite-beacon/graphite-pager и т. д. Graphite-beacon: • 1) добавить конфигурация нужного типа уведомлений (SMTP, Hipchat, Slack, Pagerduty, HTTP handlers) • 2) Добавить условия генерации уведомлений
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Graphite "alerts": [ { "name": "Memory", "query": "alias. By. Node(collectd. *. memory-free, 1)", "interval": "1 minute", "format": "bytes", "rules": ["warning: < 300 MB", "critical: < 200 MB"] },
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Graphite
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Graphite Выводы: • Конфигурируется только ПО отсылки данных в graphite. Сложность зависит от ПО. Collectd - прост. • Гибкие настройки уведомлений. • Автоматизация возможна и не составит труда.
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Graphite • Масштабируется горизонтально • Движок хранения данных whisper имеет недостатки, проявляющиеся на больших количествах метрик, рекомендуют менять его, если планируется очень много метрик
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Graphite • graphite-relay (решение, проксирующее метрики на несколько процессов carbon-cache для распараллеливания нагрузки) - весьма требовательно к CPU, что порой требует отдельного балансера для нескольких relay.
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ SAAS-мониторинг: Server. Density, Data. Dog HQ
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Server. Density • https: //www. serverdensity. io • Server-side: black-box • Client-side: python-daemon
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Server. Density • Добавляем девайс в SD • Устанавливаем клиента на сервер тремя командами: • curl -LO https: //www. serverdensity. com/downloads/agent-install. sh • chmod +x agent-install. sh • . /agent-install. sh -a https: //bitrixconf. 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: добавить данные доступа в config. cfg • Перезапустить sd-agent • Добавить метрики в свойствах девайса в панели SD
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Server. Density
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Server. Density
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Server. Density • URL для мониторинга добавляется отдельно, в Services • Проверка идет с точек со всего мира (можно выбрать) • Алерты создаются автоматически
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Server. Density
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Server. Density
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Server. Density • Автоматизация без проблем • Наличие API • Уведомления через почту/Slack/Hip. Chat/SMS/Pager. Duty
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Data. Dog HQ • http: //datadoghq. com • Server-side: black-box • Client-side: python daemon
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Data. Dog HQ
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Data. Dog 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
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Data. Dog HQ
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Data. Dog HQ • Мониторинг сайта добавляется как httpпроверка через /etc/ddagent/conf. d/http_check. yaml • Уведомления настраиваются через панель, в разделе «Monitors»
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Data. Dog HQ
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Data. Dog HQ • Автоматизация без проблем • Наличие API • Уведомления через почту/Pager. Duty + ручная настройка чего угодно через webhooks
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Мониторинг Так что же выбрать?
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Мониторинг Это зависит от многих факторов. Основные: • Количество узлов, которые нужно мониторить • Задачи, которые планируется решать
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Спасибо за внимание! Вопросы?
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Контакты Антон Баранов https: //anton-baranov. me abaranov@itsumma. ru https: //www. facebook. com/anton. s. baranov
2015 Битрикс - Мониторинг проектов. Сравнительный анализ существующих решений.pptx