PPTX, 7 МБ - Партнерская конференция «1С

advertisement
Партнерская конференция «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)
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
Серверное ПО
•MySQL (кол-во запросов
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+[MySQL/PostgreSQL/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+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 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 time-
series 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 test1>
Host "127.0.0.1"
User "root"
Password "sohW2ax0Eenox9t"
Database "test1"
MasterStats 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": "aliasByNode(collectd.*.memory.memory-free,
1)",
"interval": "1minute",
"format": "bytes",
"rules": ["warning: < 300MB", "critical: < 200MB"]
},
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
Graphite
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
Graphite
Выводы:
• Конфигурируется только ПО отсылки данных в graphite.
Сложность зависит от ПО. Collectd - прост.
• Гибкие настройки уведомлений.
• Автоматизация возможна и не составит труда.
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
Graphite
• Масштабируется горизонтально
• Движок хранения данных whisper имеет недостатки,
проявляющиеся на больших количествах метрик,
рекомендуют менять его, если планируется очень много
метрик
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
Graphite
• graphite-relay (решение, проксирующее метрики на
несколько процессов carbon-cache для
распараллеливания нагрузки) - весьма требовательно к
CPU, что порой требует отдельного балансера для
нескольких relay.
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
SAAS-мониторинг:
ServerDensity, DataDog HQ
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
ServerDensity
•https://www.serverdensity.io
•Server-side: black-box
•Client-side: python-daemon
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
ServerDensity
• Добавляем девайс в 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
454981106adfae9b73cb42991ee05a6c
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
ServerDensity
• Nginx: добавить url к nginx-статусу в /etc/sd-agent/config.cfg
• MySQL: добавить данные доступа в config.cfg
• Перезапустить sd-agent
• Добавить метрики в свойствах девайса в панели SD
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
ServerDensity
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
ServerDensity
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
ServerDensity
• URL для мониторинга добавляется отдельно, в Services
• Проверка идет с точек со всего мира (можно выбрать)
• Алерты создаются автоматически
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
ServerDensity
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
ServerDensity
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
ServerDensity
• Автоматизация без проблем
• Наличие API
• Уведомления через почту/Slack/HipChat/SMS/PagerDuty
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
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:
- nginx_status_url: http://194.177.22.245/nginx-status
tags:
- instance:vm96153.local
• MySQL добавляется аналогично, через интеграцию
• Рестартовать dd-agent
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
DataDog HQ
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
DataDog HQ
•Мониторинг сайта добавляется как httpпроверка через /etc/ddagent/conf.d/http_check.yaml
•Уведомления настраиваются через панель, в
разделе «Monitors»
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
DataDog HQ
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
DataDog HQ
•Автоматизация без проблем
•Наличие API
•Уведомления через почту/PagerDuty +
ручная настройка чего угодно через
webhooks
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
Мониторинг
Так что же выбрать?
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
Мониторинг
Это зависит от многих факторов.
Основные:
•Количество узлов, которые нужно
мониторить
•Задачи, которые планируется решать
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
Спасибо за внимание!
Вопросы?
| ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ
Контакты
Антон Баранов
https://anton-baranov.me
abaranov@itsumma.ru
https://www.facebook.com/anton.s.baranov
Download