Обзор архитектуры и
подсистем деплоя и
мониторинга. Как
инженеры делают систему
прозрачной для
разработки.
Константин Никифоров
Содержание
• Структура нашего puppet.
Организация выкладки.
• Graphite как способ
визуализации работы проекта.
• Как объединяем puppet,
graphite и мониторинг.
Environments и базовые настройки
• GIT как хранилище
манифестов.
• Каждому пользователю по
своему environment.
• Base - един для всех нод.
Hiera
общие переменные
ОС
площадка
роль
Host
Соглашения о написании манифестов
• обнови ( версию )
• не спали ( пароли )
• расскажи ( всем )
deploy.sh
• мастер
• мастер на дату
• определенный коммит
• выложить и залочить
Порядок действий
Branch
Редактируем
Тестируем из
environment
Merge в мастер
deploy.sh
3 уровня масштабирования
• DNS
• динамическая
маршрутизация
• nginx upstream
Альтернативный puppet kick
name
status
last_check, last_update, last_connect
kick
lock,lock_user
Graphite прост
• хранит числа
• показывает числа
3 кита
• carbon
• whisper, ceres
• graphite-web
Метрики
• стандартные метрики
серверов
• метрики приложений
• сложно получаемые
метрики
graphite-nginx-module
• собирает и агрегирует статистику
• работает в неблокирущем режиме
• набор отображаемых метрик может быть
дополнен
Стандартные метрики
body_bytes_sent, bytes_sent, content_time,
gzip_time, keepalive_rps, request_length, rps,
ssl_cache_usage, ssl_handshake_time,
upstream_time
Проблемы Graphite
• Огромный udp pps
• Кластеризация
• Медленный
carbon
go-carbon
6-8 млн метрик в минуту
E5-2620 v2; 64G RAM; 16*SAS 512GB
Черный мониторинг
Функционал клиентской части
• собирает метрики и шлет в Graphite
• собирает информацию о хосте и шлет в свой
коллектор
• генерирует и пушит сообщения в мониторинг
Функционал серверной части
• Прием и отображение ошибок и мониторинг своих
клиентов
• Отображение собранной информации о хостах
• Экспорт ошибок в "большой мониторинг"
Информация для разработки
• манифесты puppet
• где и какой софт работает
• какие машины свободны
• конфигурация любого сервера и его расположение
• история метрик серверов более чем за 3 года
• история алертов за все время
• история изменений в production окружении
Спасибо за внимание
http://graphite.readthedocs.org
Спасибо разработчикам
за помощь и содействие.
https://github.com/mailru/graphite-nginx-module
Михаил Кириченко, Александр Быков
https://github.com/lomik/go-carbon
Роман Ломоносов

Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систему прозрачной для разработки / Константин Никифоров