SlideShare una empresa de Scribd logo
1 de 56
Monitoring-
driven
эксплуатация
Николай Сивко
План
• Взгляд на службу эксплуатации с точки зрения бизнеса
• Договариваемся про KPI
• Как жить с KPI
• Мониторинг: требования
• Мониторинг: метрики
• Мониторинг: триггеры
• Мониторинг: инцидент
План
• Взгляд на службу эксплуатации с точки зрения бизнеса
• Договариваемся про KPI
• Как жить с KPI
• Мониторинг: требования
• Мониторинг: метрики
• Мониторинг: триггеры
• Мониторинг: инцидент
Требования бизнеса
• Сайт должен работать
• Есть ответственный за работоспособность сайта
• Сайт должен работать быстро (говорят, это влияет на
разные важные коверсии :)
• Минимальные операционные и капитальные затраты
Сайт работает (было)
• Раз в минуту проходят основные пользовательские
сценарии
• Время ответа укладывается в нужные рамки
Сайт работает (сейчас)
• количество ошибок < 20/s
• 95-я персентить времени ответа < 4s (на самом деле
обычно ~500ms)
• внешние чеки на случай проблем с каналами
Сайт работает (хотим)
• количество ошибок < 20/s
• 95-я персентить времени ответа < 4s
• количество запросов не упало
• пользовательская активность на нужном уровне (в
нашем случае: активность по резюме, вакансиям,
откликам)
Кто отвечает за аптайм
• На практике: админы И разработчики
• На инциденты всегда реагируют админы
План
• Взгляд на службу эксплуатации с точки зрения бизнеса
• Договариваемся про KPI
• Как жить с KPI
• Мониторинг: требования
• Мониторинг: метрики
• Мониторинг: триггеры
• Мониторинг: инцидент
Попытка #1
• Нужно, чтобы админы просыпались по SMS, чинили
сайт, если не могут починить, будили кого-то из
девелоперов и чинили вместе
• Выходит, что KPI админов - это время реакции на
инцидент!
Попытка #1
“Время простоя за квартал 5 часов,
максимальные время реакции 2 минуты,
мы молодцы, сделали всё, что можем,
хотим премию!”
Попытка #2
• Админы должны отвечать за аптайм
• Но приложение сайта для админов black box
• Мы вложимся в QA, все проблемы включая
производительность будем ловить на стендах (утопия)
• Человек должен отвечать только за то, на что может
влиять!
Попытка #3
• Давайте поделим аптайм на зоны ответственности
• Админы будут отвечать только за свое
• Что делать со всем остальным решим потом
Формализуем
• любой выход за пределы SLA - считаем , что сайт лежит
(даже если что-то работает)
• на любой инцидент реагируют админы (дежурные или
все сразу)
• по каждому инциденту обязательный разбор, поиск
причины, классификация
• считаем суммарный downtime
• делим по зонам ответственности
Классы проблем
• Проблема с релизом (взорвалось или были ошибки при
деплое)
• Ошибка в приложении (утекло, тяжелый запрос убил
базу, не отработал таймаут до удаленного сервиса, итд)
• Железо + сеть + каналы + ДЦ
• Ошибка админа
• Проблемы с БД
• Плановый downtime (иногда нужно)
• Ошибка мониторинга (чтобы не удалять инциденты
никогда)
Зона ответственности СЭ
• Проблема с релизом
• Ошибка в приложении
• Железо + сеть + каналы + ДЦ
• Ошибка админа
• Проблемы с БД
• Плановый downtime
• Ошибка мониторинга
Премия = f(аптайм)
Простой за квартал Аптайм, % % оклада в премию
<= 12 минут >= 99.99 120
<= 40 минут >= 99.97 100
<= 1 часа >= 99.95 80
<= 2 часов >= 99.90 60
<= 3 часов >= 99.85 50
> 3 часов < 99.85 0
План
• Взгляд на службу эксплуатации с точки зрения бизнеса
• Договариваемся про KPI
• Как жить с KPI
• Мониторинг: требования
• Мониторинг: метрики
• Мониторинг: триггеры
• Мониторинг: инцидент
Первый квартал c KPI
• Оказывается, нужно работать :)
• Надо привыкать думать над каждым действием
• Многие операции перевели в разряд “рискованных”, их
выполнять стали в часы минимальной нагрузки,
объявляя плановый downtime
• Начали проводить учения, тестировать сценарии
деградации системы (выключать rabbitmq, memcached,
свои сервисы, без которых все должно жить)
Первый квартал c KPI
• Мониторинг начал ловить очень много всего нового
• Logrotate, разные cron’ы давали 500ки, на которые
раньше не реагировали
• Начали вдумчиво настраивать таймауты, ретраи итд
• Где-то пересмотрели архитектуру и запланировали
переделку
• Самое сложное: выяснять причины ВСЕХ инцидентов
• Перестал устраивать существующий мониторинг
План
• Взгляд на службу эксплуатации с точки зрения бизнеса
• Договариваемся про KPI
• Как жить с KPI
• Мониторинг: требования
• Мониторинг: метрики
• Мониторинг: триггеры
• Мониторинг: инцидент
Требования
• Узнать, что есть проблема
• Видеть, что происходит: насколько проблема масштабна,
какие компоненты затронуты
• Иметь достаточно метрик, чтобы копаться “задним
числом”
• Ускорять выявление проблем, все важное из логов
вынести на графики
• Простота расширения
Что у нас было
• Nagios + centreon (+ патчи)
• Nagios + своя штука для графиков + свой poller SNMP
• У разработчиков всегда были свои cacti, graphite итд
• Свое решение - monik (был выделенный разработчик
мониторинга)
Проблемы
• У нас нет цели разрабатывать мониторинг
• Зато есть много другой работы
• Всё, что мы разрабатывали устаревает, появляются
новые требования
• Взять и попробовать что-то новое – тоже время
• В opensource практически нет full-stack решений, есть
отдельно хранилища, собиралки, алертилки,
дашбордилки
• Практически всё нужно доделывать под себя
SaaS мониторинг
• Не нужно писать код
• У нас нет супер-секретных метрик
• Специализированная компания: они могут себе
позволить тесты, мониторинг мониторинга,
отказоустойчивость (у нас всегда мониторинг жил на 1
сервере)
• Мы “большой” клиент, можем договориться о доработках
под нас
• Ценник сравним с выделенным разработчиком у нас
• Мы работаем с okmeter.io
План
• Взгляд на службу эксплуатации с точки зрения бизнеса
• Договариваемся про KPI
• Как жить с KPI
• Мониторинг: требования
• Мониторинг: метрики
• Мониторинг: триггеры
• Мониторинг: инцидент
Проблемы
• Как правило мониторингом покрывают только самые
критичные подсистемы
• Мы пробовали включать покрытие мониторингом в
процедуру выпуска новых сервисов – не работает
• Часто снимают не всё (где-то забыли включить jmx, где-
то пустить мониторинг в postgresql)
• Инфраструктура меняется: запускаются новые jvm, pg,
nginx, haproxy итд
• Метрики сильно обобщены, видно, что есть проблема, но
не видно, где конкретно
Подход
• Все что можно снять без конфига, снимаем всегда и со
всех машин
• Если агенту нужны права или донастройка, это алерт в
мониторинге
• Метрики максимально детальные в пределах разумного,
агрегаты можно сделать на лету
• Ждем: алерт, если поймали TCP соединения с хостов, на
котором не стоит агент
Общие метрики
• cpu, memory, swap, swap i/o
• net: bandwidth, pps, errors
• disk: usage, inodes usage, i/o read/write ops/bytes/time(%)
• time offset относительно эталона (+хотим проверять
таймзону)
• состояния raid (array/BBU)
Про каждый процесс
• CPU time (user/system)
• Memory (RSS)
• Disk I/O (read/write bytes, ops)
• Swap Usage -> Swap Rate
• Thread count
• Open FDs count
• Open files limit
Про каждый TCP LISTEN
• Если remote IP из той же сети – все метрики для каждого
IP отдельно
• Количество соединений в разных состояниях
(ESTABLISHED, TIME_WAIT, …)
• 95я персентиль TCP RTT (с учетом SACK не является
реальным RTT в сети, но для сравнения было-стало
работает хорошо)
• Количество соединений в backlog и лимит
• Похожие метрики для исходящих TCP соединений
Nginx
• Если есть работающий процесс nginx, находится и
парсится конфиг
• Парсится log_format и access_log
• Если лог нельзя распарсить – алерт
• Если в логе нет $request_time, $upstream_response_time -
алерт
• RPS в разрезе status, top urls, cache_status, method
• Персентили и гистограммы для таймингов в тех же
разрезах
Jvm
• Если есть работающий процесс jvm, парсятся аргументы
запуска
• Определяем параметры JMX, если выключено – алерт
• Снимаем heap, GC, memory pools, threads
• Если есть mbeans cassandra – снимаем детальные
метрики
• Так же планируем снимать метрики jetty, grizzly, c3p0,
hibernate,…
Postgresql
• Пробуем с predefined паролем
• Если не пускает - алерт с просьбой настроить пароль или
загрантить
• Если не настроено pg_stat_statements - алерт с просьбой
включить
• Если не хватает прав – алерт
• Снимаем всё про top запросов/таблиц/индексов, bgwriter,
текущие соединения, локи итд (pg_stat_*)
Метрики из логов
plugin: logparser
config:
file: /var/log/hhapi/hhapi.log
#2015-02-17 00:07:44,604 INFO User-Agent: HH-Live/41
(iPhone; iOS 8.1.3; Scale/2.00)
regex: '(?P<dt>d{4}-d{2}-d{2}
d{2}:d{2}:d{2}),d+ [^:]+ User-Agent: HH-
Live/(?P<build>d+) ((?P<device>[A-Za-z]+);
(?P<os>[^;]+)'
time_field: dt
time_field_format: 2006-01-02 15:04:05
Метрики из логов
metrics:
- type: rate
name: api.nativeapps.rate
labels:
build: =build
device: =device
os: =os
Метрики из логов
Метрики из SQL
plugin: postgresql_query
config:
…
query: SELECT count(*) as value, COALESCE(old_value,
'NULL') as old_status, new_value new_status from
resume_field_change_history where change_date >=
now() - INTERVAL '60 seconds' and change_date <
now() and field_name='status' group by old_value,
new_value
metric_name: resume.changes.count
Метрики из SQL
План
• Взгляд на службу эксплуатации с точки зрения бизнеса
• Договариваемся про KPI
• Как жить с KPI
• Мониторинг: требования
• Мониторинг: метрики
• Мониторинг: триггеры
• Мониторинг: инцидент
Принципы
• Проактивного мониторинга не существует (disk usage
если только)
• В нагруженной системе всё меняется за доли секунды,
понять последовательность событий нереально даже при
секундном разрешении (как правило достаточно
минутного)
• зависимости между алертами хорошо сделать
невозможно
• в нормальном состоянии не должно быть активных
алертов
Принципы
• Critical событие – это то, на что нужно срочно
среагировать и починить (CPU usage > 90% не нужно
срочно чинить)
• У нас 3 critical триггера (HTTP-5xx, Q95, ext http check)
• Все остальные Warning, Info – всего лишь подсказки, у
большинства нет нотификаций вообще
• Лучше зажечь много warning-ов и выбрать глазами
причину проблемы, чем пытаться автоматически
определить, где причина, а где следствие
Принципы
• Чтобы после SMS не ждать recovery, а сразу чинить - есть
отложенная нотификация (notify after 2 min)
• Идеально - увидеть проблему в списке алертов
• Если нет, нужно смотреть на дашборды, где нужно
глазами исключать возможные причины
• В следующий раз такая же проблема должна быть в
списке алертов
Принципы
• Если есть алерт, который вы не собираетесь чинить -
выключайте
• Если есть постоянный поток писем от мониторинга, он
заруливается в отдельную папку в почте и не читается,
проще выключить
• Если вас не интересует CPU usage на hadoop машине –
настройте исключение
Наши триггеры
• Про все внутренние сервисы – warning по http-5xx+499,
q95
• Про все процессы: open files usage > 90%
• Про все LISTEN сокеты: TCP ack backlog usage > 90%
• Про диски: usage > 95%, IO usage > 99% в течении 10
минут
• Про raid: status, bbu, operations (если идет проверка
mdraid может просесть i/o, если на железке идет
профилактика батарейки – может отключиться write
cache)
Наши триггеры
• Живы все nginx, haproxy, … – там где они были хоть раз
запущены (если загорается лишний – закрываем руками)
• Давно нет данных от агента на каком-то сервере
• Нет данных от JVM/pg/….
• Jvm heap usage > 99% на протяжении 2 минут (ловим
OOM, не везде настроена автоперезапускалка)
• Time offset > 10 seconds
• В важных очередях > N сообщений
План
• Взгляд на службу эксплуатации с точки зрения бизнеса
• Договариваемся про KPI
• Как жить с KPI
• Мониторинг: требования
• Мониторинг: метрики
• Мониторинг: триггеры
• Мониторинг: инцидент
Сайт лёг - инцидент
• SMS/еmail уведомление
• Мониторинг создает задачу в JIRA (начало инцидента)
• Админ реагирует, подтверждает это переводом задачи в
статус “Проблемой занимаются” (любой сотрудник в
компании это видит)
Чиним
• Смотрим текущие алерты
• Синхронизируемся в чате
• Основной график – “Светофор” + рядом ~10 графиков
Конкретный сервис
Или база
После восстановления
• Починили, мониторинг меняет статус задачи на
“Инцидент исчерпан”
• Поиск причины, общение в JIRA
• Заполняем класс проблемы в задаче, перевод в статус
“Закрыто”
• Если по результатам нужна разработка, есть
продолжение workflow
Разобрались
По результатам
• Человеческая ошибка: обсудить, почему
произошло, как избежать (может
автоматизировать что-то)
• Проблемы с релизом: доработка автотестов,
процедуры выкладки
• Проблема в приложении: задача в разработку
• Железо/сеть/каналы/ДЦ: задача для админов
(починить/уменьшить вероятность/обеспечить
самовосстановление/уменьшить downtime в
будущем)
По результатам
• Добавить метрик в мониторинг?
• Детализировать метрики ?
• Новый триггер ?
• Новый “говорящий” график на дашборд?
Спасибо за внимание!
Вопросы?
Николай Сивко
hh.ru
email: sivko@hh.ru, n.sivko@gmail.com

Más contenido relacionado

La actualidad más candente

Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Ontico
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Ontico
 
Типовое внедрение мониторинга
Типовое внедрение мониторингаТиповое внедрение мониторинга
Типовое внедрение мониторингаUptime Community
 
на пути к 100% аптайму - доклад с HighLoad 2015 совместно с Станиславом Осип...
на пути к 100% аптайму - доклад с HighLoad 2015 совместно с Станиславом Осип...на пути к 100% аптайму - доклад с HighLoad 2015 совместно с Станиславом Осип...
на пути к 100% аптайму - доклад с HighLoad 2015 совместно с Станиславом Осип...Игорь Мызгин
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеAlexandr Krasheninnikov
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Uptime Community
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Ontico
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Ontico
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Ontico
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
 
Диагностика postgresql для системного администратора
Диагностика postgresql для системного администратораДиагностика postgresql для системного администратора
Диагностика postgresql для системного администратораNikolay Sivko
 
Поиск наизнанку
Поиск наизнанкуПоиск наизнанку
Поиск наизнанкуNikolay Sivko
 
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...Ontico
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQLAlex Chistyakov
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014Alex Chistyakov
 
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Ontico
 
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...Tanya Denisyuk
 
Ровная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластереРовная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластереBadoo Development
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 

La actualidad más candente (20)

Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
 
Типовое внедрение мониторинга
Типовое внедрение мониторингаТиповое внедрение мониторинга
Типовое внедрение мониторинга
 
на пути к 100% аптайму - доклад с HighLoad 2015 совместно с Станиславом Осип...
на пути к 100% аптайму - доклад с HighLoad 2015 совместно с Станиславом Осип...на пути к 100% аптайму - доклад с HighLoad 2015 совместно с Станиславом Осип...
на пути к 100% аптайму - доклад с HighLoad 2015 совместно с Станиславом Осип...
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
 
Диагностика postgresql для системного администратора
Диагностика postgresql для системного администратораДиагностика postgresql для системного администратора
Диагностика postgresql для системного администратора
 
Поиск наизнанку
Поиск наизнанкуПоиск наизнанку
Поиск наизнанку
 
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQL
 
Java Performance
Java PerformanceJava Performance
Java Performance
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014
 
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
 
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
 
Ровная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластереРовная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластере
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 

Destacado

Михаил Давыдов — JavaScript: События
Михаил Давыдов — JavaScript: СобытияМихаил Давыдов — JavaScript: События
Михаил Давыдов — JavaScript: СобытияYandex
 
Cisco Email & Web Security
Cisco Email & Web SecurityCisco Email & Web Security
Cisco Email & Web SecurityCisco Russia
 
Управление ИТ-инфраструктурой с технологиями Dell Software
Управление ИТ-инфраструктурой с технологиями Dell SoftwareУправление ИТ-инфраструктурой с технологиями Dell Software
Управление ИТ-инфраструктурой с технологиями Dell SoftwareDell_Russia
 
Прикладная эконометрика. Лекция 8
Прикладная эконометрика. Лекция 8Прикладная эконометрика. Лекция 8
Прикладная эконометрика. Лекция 8Vladimir Tcherniak
 
Компас от простого к сложному
Компас от простого к сложному Компас от простого к сложному
Компас от простого к сложному School 242
 
1С:Медицина. Стоматологическая клиника
1С:Медицина. Стоматологическая клиника1С:Медицина. Стоматологическая клиника
1С:Медицина. Стоматологическая клиникаKatarina22
 
Presentationdesignsuperhero 160427111843
Presentationdesignsuperhero 160427111843Presentationdesignsuperhero 160427111843
Presentationdesignsuperhero 160427111843Vera Kovaleva
 
Sun, stars, earth
Sun, stars, earthSun, stars, earth
Sun, stars, earthteafortwo2
 
I место команда "Energy4-Irk" ИрНИТУ, Иркутск
I место команда "Energy4-Irk" ИрНИТУ, ИркутскI место команда "Energy4-Irk" ИрНИТУ, Иркутск
I место команда "Energy4-Irk" ИрНИТУ, ИркутскАндрей Изюмников
 
Инноград
ИнноградИнноград
Инноградguest2061c9
 
моделирование объектов и процессов
моделирование объектов и процессовмоделирование объектов и процессов
моделирование объектов и процессовJ_Vladi
 
вестник южно уральского-государственного_университета._серия_компьютерные_тех...
вестник южно уральского-государственного_университета._серия_компьютерные_тех...вестник южно уральского-государственного_университета._серия_компьютерные_тех...
вестник южно уральского-государственного_университета._серия_компьютерные_тех...Иван Иванов
 
Физика
ФизикаФизика
ФизикаMrFinig
 
Управление процессами разработки ПО
Управление процессами разработки ПОУправление процессами разработки ПО
Управление процессами разработки ПОPeoplemind
 
Уравнения Максвелла и электромагнитные волны
Уравнения Максвелла и электромагнитные волныУравнения Максвелла и электромагнитные волны
Уравнения Максвелла и электромагнитные волныS-Petersburg University of Fire State Service
 
II место команда "Звезда и Треугольник" УрФУ, Екатеринбург
II место команда "Звезда и Треугольник" УрФУ, ЕкатеринбургII место команда "Звезда и Треугольник" УрФУ, Екатеринбург
II место команда "Звезда и Треугольник" УрФУ, ЕкатеринбургАндрей Изюмников
 
переменные звезды
переменные звездыпеременные звезды
переменные звездыterkinal
 
линейные и квадратные уравнения с параметрами
линейные и квадратные уравнения с параметрамилинейные и квадратные уравнения с параметрами
линейные и квадратные уравнения с параметрамиNovikovaOG
 

Destacado (20)

Михаил Давыдов — JavaScript: События
Михаил Давыдов — JavaScript: СобытияМихаил Давыдов — JavaScript: События
Михаил Давыдов — JavaScript: События
 
Cisco Email & Web Security
Cisco Email & Web SecurityCisco Email & Web Security
Cisco Email & Web Security
 
Управление ИТ-инфраструктурой с технологиями Dell Software
Управление ИТ-инфраструктурой с технологиями Dell SoftwareУправление ИТ-инфраструктурой с технологиями Dell Software
Управление ИТ-инфраструктурой с технологиями Dell Software
 
Прикладная эконометрика. Лекция 8
Прикладная эконометрика. Лекция 8Прикладная эконометрика. Лекция 8
Прикладная эконометрика. Лекция 8
 
Компас от простого к сложному
Компас от простого к сложному Компас от простого к сложному
Компас от простого к сложному
 
1С:Медицина. Стоматологическая клиника
1С:Медицина. Стоматологическая клиника1С:Медицина. Стоматологическая клиника
1С:Медицина. Стоматологическая клиника
 
Presentationdesignsuperhero 160427111843
Presentationdesignsuperhero 160427111843Presentationdesignsuperhero 160427111843
Presentationdesignsuperhero 160427111843
 
Sun, stars, earth
Sun, stars, earthSun, stars, earth
Sun, stars, earth
 
I место команда "Energy4-Irk" ИрНИТУ, Иркутск
I место команда "Energy4-Irk" ИрНИТУ, ИркутскI место команда "Energy4-Irk" ИрНИТУ, Иркутск
I место команда "Energy4-Irk" ИрНИТУ, Иркутск
 
Инноград
ИнноградИнноград
Инноград
 
electrical machines
electrical machineselectrical machines
electrical machines
 
моделирование объектов и процессов
моделирование объектов и процессовмоделирование объектов и процессов
моделирование объектов и процессов
 
вестник южно уральского-государственного_университета._серия_компьютерные_тех...
вестник южно уральского-государственного_университета._серия_компьютерные_тех...вестник южно уральского-государственного_университета._серия_компьютерные_тех...
вестник южно уральского-государственного_университета._серия_компьютерные_тех...
 
Физика
ФизикаФизика
Физика
 
Управление процессами разработки ПО
Управление процессами разработки ПОУправление процессами разработки ПО
Управление процессами разработки ПО
 
Уравнения Максвелла и электромагнитные волны
Уравнения Максвелла и электромагнитные волныУравнения Максвелла и электромагнитные волны
Уравнения Максвелла и электромагнитные волны
 
II место команда "Звезда и Треугольник" УрФУ, Екатеринбург
II место команда "Звезда и Треугольник" УрФУ, ЕкатеринбургII место команда "Звезда и Треугольник" УрФУ, Екатеринбург
II место команда "Звезда и Треугольник" УрФУ, Екатеринбург
 
05
0505
05
 
переменные звезды
переменные звездыпеременные звезды
переменные звезды
 
линейные и квадратные уравнения с параметрами
линейные и квадратные уравнения с параметрамилинейные и квадратные уравнения с параметрами
линейные и квадратные уравнения с параметрами
 

Similar a Monitoring-driven эксплуатация (rootconf2015)

Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
 
Доклад "Мониторинг серверных приложений"
Доклад "Мониторинг серверных приложений"Доклад "Мониторинг серверных приложений"
Доклад "Мониторинг серверных приложений"Grigoriy Orlov
 
Xp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practicesXp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practicesAlexey Andreev
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipesAlexey Ermakov
 
SECON'2017, Сивко Николай, Эксплуатация веб-проектов: мониторинг
SECON'2017, Сивко Николай, Эксплуатация веб-проектов: мониторингSECON'2017, Сивко Николай, Эксплуатация веб-проектов: мониторинг
SECON'2017, Сивко Николай, Эксплуатация веб-проектов: мониторингSECON
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Yandex
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Yandex
 
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)Ontico
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Positive Hack Days
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийsnowytoxa
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Anton Baranov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Ontico
 
Grpahite&amp;grafana
Grpahite&amp;grafanaGrpahite&amp;grafana
Grpahite&amp;grafanaLevon Avakyan
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеBadoo Development
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеYulia Kotova
 
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Ontico
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрsportgid
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoFDmitry Buzdin
 

Similar a Monitoring-driven эксплуатация (rootconf2015) (20)

Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
 
Доклад "Мониторинг серверных приложений"
Доклад "Мониторинг серверных приложений"Доклад "Мониторинг серверных приложений"
Доклад "Мониторинг серверных приложений"
 
Sivko
SivkoSivko
Sivko
 
Xp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practicesXp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practices
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipes
 
SECON'2017, Сивко Николай, Эксплуатация веб-проектов: мониторинг
SECON'2017, Сивко Николай, Эксплуатация веб-проектов: мониторингSECON'2017, Сивко Николай, Эксплуатация веб-проектов: мониторинг
SECON'2017, Сивко Николай, Эксплуатация веб-проектов: мониторинг
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
 
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложений
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Grpahite&amp;grafana
Grpahite&amp;grafanaGrpahite&amp;grafana
Grpahite&amp;grafana
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 

Monitoring-driven эксплуатация (rootconf2015)

  • 2. План • Взгляд на службу эксплуатации с точки зрения бизнеса • Договариваемся про KPI • Как жить с KPI • Мониторинг: требования • Мониторинг: метрики • Мониторинг: триггеры • Мониторинг: инцидент
  • 3. План • Взгляд на службу эксплуатации с точки зрения бизнеса • Договариваемся про KPI • Как жить с KPI • Мониторинг: требования • Мониторинг: метрики • Мониторинг: триггеры • Мониторинг: инцидент
  • 4. Требования бизнеса • Сайт должен работать • Есть ответственный за работоспособность сайта • Сайт должен работать быстро (говорят, это влияет на разные важные коверсии :) • Минимальные операционные и капитальные затраты
  • 5. Сайт работает (было) • Раз в минуту проходят основные пользовательские сценарии • Время ответа укладывается в нужные рамки
  • 6. Сайт работает (сейчас) • количество ошибок < 20/s • 95-я персентить времени ответа < 4s (на самом деле обычно ~500ms) • внешние чеки на случай проблем с каналами
  • 7. Сайт работает (хотим) • количество ошибок < 20/s • 95-я персентить времени ответа < 4s • количество запросов не упало • пользовательская активность на нужном уровне (в нашем случае: активность по резюме, вакансиям, откликам)
  • 8. Кто отвечает за аптайм • На практике: админы И разработчики • На инциденты всегда реагируют админы
  • 9. План • Взгляд на службу эксплуатации с точки зрения бизнеса • Договариваемся про KPI • Как жить с KPI • Мониторинг: требования • Мониторинг: метрики • Мониторинг: триггеры • Мониторинг: инцидент
  • 10. Попытка #1 • Нужно, чтобы админы просыпались по SMS, чинили сайт, если не могут починить, будили кого-то из девелоперов и чинили вместе • Выходит, что KPI админов - это время реакции на инцидент!
  • 11. Попытка #1 “Время простоя за квартал 5 часов, максимальные время реакции 2 минуты, мы молодцы, сделали всё, что можем, хотим премию!”
  • 12. Попытка #2 • Админы должны отвечать за аптайм • Но приложение сайта для админов black box • Мы вложимся в QA, все проблемы включая производительность будем ловить на стендах (утопия) • Человек должен отвечать только за то, на что может влиять!
  • 13. Попытка #3 • Давайте поделим аптайм на зоны ответственности • Админы будут отвечать только за свое • Что делать со всем остальным решим потом
  • 14. Формализуем • любой выход за пределы SLA - считаем , что сайт лежит (даже если что-то работает) • на любой инцидент реагируют админы (дежурные или все сразу) • по каждому инциденту обязательный разбор, поиск причины, классификация • считаем суммарный downtime • делим по зонам ответственности
  • 15. Классы проблем • Проблема с релизом (взорвалось или были ошибки при деплое) • Ошибка в приложении (утекло, тяжелый запрос убил базу, не отработал таймаут до удаленного сервиса, итд) • Железо + сеть + каналы + ДЦ • Ошибка админа • Проблемы с БД • Плановый downtime (иногда нужно) • Ошибка мониторинга (чтобы не удалять инциденты никогда)
  • 16. Зона ответственности СЭ • Проблема с релизом • Ошибка в приложении • Железо + сеть + каналы + ДЦ • Ошибка админа • Проблемы с БД • Плановый downtime • Ошибка мониторинга
  • 17. Премия = f(аптайм) Простой за квартал Аптайм, % % оклада в премию <= 12 минут >= 99.99 120 <= 40 минут >= 99.97 100 <= 1 часа >= 99.95 80 <= 2 часов >= 99.90 60 <= 3 часов >= 99.85 50 > 3 часов < 99.85 0
  • 18. План • Взгляд на службу эксплуатации с точки зрения бизнеса • Договариваемся про KPI • Как жить с KPI • Мониторинг: требования • Мониторинг: метрики • Мониторинг: триггеры • Мониторинг: инцидент
  • 19. Первый квартал c KPI • Оказывается, нужно работать :) • Надо привыкать думать над каждым действием • Многие операции перевели в разряд “рискованных”, их выполнять стали в часы минимальной нагрузки, объявляя плановый downtime • Начали проводить учения, тестировать сценарии деградации системы (выключать rabbitmq, memcached, свои сервисы, без которых все должно жить)
  • 20. Первый квартал c KPI • Мониторинг начал ловить очень много всего нового • Logrotate, разные cron’ы давали 500ки, на которые раньше не реагировали • Начали вдумчиво настраивать таймауты, ретраи итд • Где-то пересмотрели архитектуру и запланировали переделку • Самое сложное: выяснять причины ВСЕХ инцидентов • Перестал устраивать существующий мониторинг
  • 21. План • Взгляд на службу эксплуатации с точки зрения бизнеса • Договариваемся про KPI • Как жить с KPI • Мониторинг: требования • Мониторинг: метрики • Мониторинг: триггеры • Мониторинг: инцидент
  • 22. Требования • Узнать, что есть проблема • Видеть, что происходит: насколько проблема масштабна, какие компоненты затронуты • Иметь достаточно метрик, чтобы копаться “задним числом” • Ускорять выявление проблем, все важное из логов вынести на графики • Простота расширения
  • 23. Что у нас было • Nagios + centreon (+ патчи) • Nagios + своя штука для графиков + свой poller SNMP • У разработчиков всегда были свои cacti, graphite итд • Свое решение - monik (был выделенный разработчик мониторинга)
  • 24. Проблемы • У нас нет цели разрабатывать мониторинг • Зато есть много другой работы • Всё, что мы разрабатывали устаревает, появляются новые требования • Взять и попробовать что-то новое – тоже время • В opensource практически нет full-stack решений, есть отдельно хранилища, собиралки, алертилки, дашбордилки • Практически всё нужно доделывать под себя
  • 25. SaaS мониторинг • Не нужно писать код • У нас нет супер-секретных метрик • Специализированная компания: они могут себе позволить тесты, мониторинг мониторинга, отказоустойчивость (у нас всегда мониторинг жил на 1 сервере) • Мы “большой” клиент, можем договориться о доработках под нас • Ценник сравним с выделенным разработчиком у нас • Мы работаем с okmeter.io
  • 26. План • Взгляд на службу эксплуатации с точки зрения бизнеса • Договариваемся про KPI • Как жить с KPI • Мониторинг: требования • Мониторинг: метрики • Мониторинг: триггеры • Мониторинг: инцидент
  • 27. Проблемы • Как правило мониторингом покрывают только самые критичные подсистемы • Мы пробовали включать покрытие мониторингом в процедуру выпуска новых сервисов – не работает • Часто снимают не всё (где-то забыли включить jmx, где- то пустить мониторинг в postgresql) • Инфраструктура меняется: запускаются новые jvm, pg, nginx, haproxy итд • Метрики сильно обобщены, видно, что есть проблема, но не видно, где конкретно
  • 28. Подход • Все что можно снять без конфига, снимаем всегда и со всех машин • Если агенту нужны права или донастройка, это алерт в мониторинге • Метрики максимально детальные в пределах разумного, агрегаты можно сделать на лету • Ждем: алерт, если поймали TCP соединения с хостов, на котором не стоит агент
  • 29. Общие метрики • cpu, memory, swap, swap i/o • net: bandwidth, pps, errors • disk: usage, inodes usage, i/o read/write ops/bytes/time(%) • time offset относительно эталона (+хотим проверять таймзону) • состояния raid (array/BBU)
  • 30. Про каждый процесс • CPU time (user/system) • Memory (RSS) • Disk I/O (read/write bytes, ops) • Swap Usage -> Swap Rate • Thread count • Open FDs count • Open files limit
  • 31. Про каждый TCP LISTEN • Если remote IP из той же сети – все метрики для каждого IP отдельно • Количество соединений в разных состояниях (ESTABLISHED, TIME_WAIT, …) • 95я персентиль TCP RTT (с учетом SACK не является реальным RTT в сети, но для сравнения было-стало работает хорошо) • Количество соединений в backlog и лимит • Похожие метрики для исходящих TCP соединений
  • 32. Nginx • Если есть работающий процесс nginx, находится и парсится конфиг • Парсится log_format и access_log • Если лог нельзя распарсить – алерт • Если в логе нет $request_time, $upstream_response_time - алерт • RPS в разрезе status, top urls, cache_status, method • Персентили и гистограммы для таймингов в тех же разрезах
  • 33. Jvm • Если есть работающий процесс jvm, парсятся аргументы запуска • Определяем параметры JMX, если выключено – алерт • Снимаем heap, GC, memory pools, threads • Если есть mbeans cassandra – снимаем детальные метрики • Так же планируем снимать метрики jetty, grizzly, c3p0, hibernate,…
  • 34. Postgresql • Пробуем с predefined паролем • Если не пускает - алерт с просьбой настроить пароль или загрантить • Если не настроено pg_stat_statements - алерт с просьбой включить • Если не хватает прав – алерт • Снимаем всё про top запросов/таблиц/индексов, bgwriter, текущие соединения, локи итд (pg_stat_*)
  • 35. Метрики из логов plugin: logparser config: file: /var/log/hhapi/hhapi.log #2015-02-17 00:07:44,604 INFO User-Agent: HH-Live/41 (iPhone; iOS 8.1.3; Scale/2.00) regex: '(?P<dt>d{4}-d{2}-d{2} d{2}:d{2}:d{2}),d+ [^:]+ User-Agent: HH- Live/(?P<build>d+) ((?P<device>[A-Za-z]+); (?P<os>[^;]+)' time_field: dt time_field_format: 2006-01-02 15:04:05
  • 36. Метрики из логов metrics: - type: rate name: api.nativeapps.rate labels: build: =build device: =device os: =os
  • 38. Метрики из SQL plugin: postgresql_query config: … query: SELECT count(*) as value, COALESCE(old_value, 'NULL') as old_status, new_value new_status from resume_field_change_history where change_date >= now() - INTERVAL '60 seconds' and change_date < now() and field_name='status' group by old_value, new_value metric_name: resume.changes.count
  • 40. План • Взгляд на службу эксплуатации с точки зрения бизнеса • Договариваемся про KPI • Как жить с KPI • Мониторинг: требования • Мониторинг: метрики • Мониторинг: триггеры • Мониторинг: инцидент
  • 41. Принципы • Проактивного мониторинга не существует (disk usage если только) • В нагруженной системе всё меняется за доли секунды, понять последовательность событий нереально даже при секундном разрешении (как правило достаточно минутного) • зависимости между алертами хорошо сделать невозможно • в нормальном состоянии не должно быть активных алертов
  • 42. Принципы • Critical событие – это то, на что нужно срочно среагировать и починить (CPU usage > 90% не нужно срочно чинить) • У нас 3 critical триггера (HTTP-5xx, Q95, ext http check) • Все остальные Warning, Info – всего лишь подсказки, у большинства нет нотификаций вообще • Лучше зажечь много warning-ов и выбрать глазами причину проблемы, чем пытаться автоматически определить, где причина, а где следствие
  • 43. Принципы • Чтобы после SMS не ждать recovery, а сразу чинить - есть отложенная нотификация (notify after 2 min) • Идеально - увидеть проблему в списке алертов • Если нет, нужно смотреть на дашборды, где нужно глазами исключать возможные причины • В следующий раз такая же проблема должна быть в списке алертов
  • 44. Принципы • Если есть алерт, который вы не собираетесь чинить - выключайте • Если есть постоянный поток писем от мониторинга, он заруливается в отдельную папку в почте и не читается, проще выключить • Если вас не интересует CPU usage на hadoop машине – настройте исключение
  • 45. Наши триггеры • Про все внутренние сервисы – warning по http-5xx+499, q95 • Про все процессы: open files usage > 90% • Про все LISTEN сокеты: TCP ack backlog usage > 90% • Про диски: usage > 95%, IO usage > 99% в течении 10 минут • Про raid: status, bbu, operations (если идет проверка mdraid может просесть i/o, если на железке идет профилактика батарейки – может отключиться write cache)
  • 46. Наши триггеры • Живы все nginx, haproxy, … – там где они были хоть раз запущены (если загорается лишний – закрываем руками) • Давно нет данных от агента на каком-то сервере • Нет данных от JVM/pg/…. • Jvm heap usage > 99% на протяжении 2 минут (ловим OOM, не везде настроена автоперезапускалка) • Time offset > 10 seconds • В важных очередях > N сообщений
  • 47. План • Взгляд на службу эксплуатации с точки зрения бизнеса • Договариваемся про KPI • Как жить с KPI • Мониторинг: требования • Мониторинг: метрики • Мониторинг: триггеры • Мониторинг: инцидент
  • 48. Сайт лёг - инцидент • SMS/еmail уведомление • Мониторинг создает задачу в JIRA (начало инцидента) • Админ реагирует, подтверждает это переводом задачи в статус “Проблемой занимаются” (любой сотрудник в компании это видит)
  • 49. Чиним • Смотрим текущие алерты • Синхронизируемся в чате • Основной график – “Светофор” + рядом ~10 графиков
  • 52. После восстановления • Починили, мониторинг меняет статус задачи на “Инцидент исчерпан” • Поиск причины, общение в JIRA • Заполняем класс проблемы в задаче, перевод в статус “Закрыто” • Если по результатам нужна разработка, есть продолжение workflow
  • 54. По результатам • Человеческая ошибка: обсудить, почему произошло, как избежать (может автоматизировать что-то) • Проблемы с релизом: доработка автотестов, процедуры выкладки • Проблема в приложении: задача в разработку • Железо/сеть/каналы/ДЦ: задача для админов (починить/уменьшить вероятность/обеспечить самовосстановление/уменьшить downtime в будущем)
  • 55. По результатам • Добавить метрик в мониторинг? • Детализировать метрики ? • Новый триггер ? • Новый “говорящий” график на дашборд?
  • 56. Спасибо за внимание! Вопросы? Николай Сивко hh.ru email: sivko@hh.ru, n.sivko@gmail.com