Upgrade to Pro — share decks privately, control downloads, hide ads and more …

10 лет on-call. Чему мы научились?

flant
October 29, 2019

10 лет on-call. Чему мы научились?

Доклад технического директора компании «Флант» (https://flant.ru/) Дмитрия Столярова на конференции DevOops 2019 в Санкт-Петербурге.

* Текстовый обзор доклада: https://habr.com/company/flant/blog/484808/
* Видео с выступления: https://youtu.be/7ZWGFnqhSLU

flant

October 29, 2019
Tweet

More Decks by flant

Other Decks in Technology

Transcript

  1. Какие бывают алерты? Мгновенные Просто информация о произошедшем событии Длящиеся

    • Сообщение каждые N секунд • Сообщение о начале и конце • И то и другое
  2. Какие бывают алерты? Мгновенные Просто информация о произошедшем событии Состояние:

    Отсутствует, есть просто время срабатывания Длящиеся • Сообщение каждые N секунд • Сообщение о начале и конце • И то и другое
  3. Мгновенные Просто информация о произошедшем событии Состояние: Отсутствует, есть просто

    время срабатывания Длящиеся • Сообщение каждые N секунд • Сообщение о начале и конце • И то и другое Состояние: • Firing • Not firing • Unknown или • Firing • Not firing Какие бывают алерты?
  4. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол !=
  5. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация !=
  6. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация !=
  7. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация !=
  8. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов !=
  9. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки !=
  10. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка !=
  11. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка !=
  12. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор !=
  13. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор !=
  14. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга !=
  15. Примеры MQL (для поиска): trigger = "IngressResponses5xx" trigger = "IngressResponses5xx"

    AND project = "horns-and-hooves" project = "horns-and-hooves" AND trigger = "IngressResponses5xx" AND ~kubernetes = "msm-prod" and ~vhost =~ "static.example.com"
  16. Примеры MQL (для поиска): trigger = "IngressResponses5xx" trigger = "IngressResponses5xx"

    AND project = "horns-and-hooves" project = "horns-and-hooves" AND trigger = "IngressResponses5xx" AND ~kubernetes = "msm-prod" and ~vhost =~ "static.example.com" Примеры MQL (для маршрутизации): project = "horns-and-hooves" AND ~server = "gitlab" -> @vasiliy.vasiliyev
  17. Примеры MQL (для поиска): trigger = "IngressResponses5xx" trigger = "IngressResponses5xx"

    AND project = "horns-and-hooves" project = "horns-and-hooves" AND trigger = "IngressResponses5xx" AND ~kubernetes = "msm-prod" and ~vhost =~ "static.example.com" Примеры MQL (для маршрутизации): project = "horns-and-hooves" AND ~server = "gitlab" project = "horns-and-hooves" AND ~kubernetes = "dev" -> @vasiliy.vasiliyev -> @petr.petrov
  18. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга != Язык запросов Маршрутизация
  19. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация != Горячая аналитика
  20. L2 24/7 & смены по 8 часов DevOps Team B

    DevOps Team A L1 24/7 & смены по 8 часов
  21. L2 24/7 & смены по 8 часов DevOps Team B

    DevOps Team A L1 24/7 & смены по 8 часов
  22. Teamlead Teamlead deputy Project manager Teamlead Teamlead deputy Project manager

    L2 24/7 & смены по 8 часов DevOps Team B DevOps Team A L1 24/7 & смены по 8 часов
  23. DevOps Team A DevOps Team B DevOps Team C Teamlead

    Teamlead deputy Project manager Teamlead Teamlead deputy Project manager Teamlead Teamlead deputy Project manager L2 24/7 & смены по 8 часов L1 24/7 & смены по 8 часов
  24. Teamlead Teamlead deputy Project manager Teamlead Teamlead deputy Project manager

    Teamlead Teamlead deputy Project manager DevOps Team A DevOps Team B DevOps Team C L2 24/7 & смены по 8 часов L1 24/7 & смены по 8 часов
  25. Teamlead Teamlead deputy Project manager Teamlead Teamlead deputy Project manager

    Teamlead Teamlead deputy Project manager DevOps Team A DevOps Team B DevOps Team C L2 24/7 & смены по 8 часов L1 24/7 & смены по 8 часов
  26. Teamlead Teamlead deputy Project manager Duty L1-1 Support Team and

    DevOps accelerator DevOps Team A Teamlead Teamlead deputy Project manager DevOps Team B Teamlead Teamlead deputy Project manager DevOps Team C Duty L1-2
  27. Teamlead Teamlead deputy Project manager Duty L1-1 DevOps Team A

    Teamlead Teamlead deputy Project manager DevOps Team B Teamlead Teamlead deputy Project manager DevOps Team C Teamlead Teamlead deputy Project manager DevOps Team E Duty L1-2 Support Team and DevOps accelerator
  28. Teamlead Teamlead deputy Project manager L1M Teamlead Teamlead deputy Project

    manager Teamlead Teamlead deputy Project manager Teamlead Teamlead deputy Project manager DevOps Team A DevOps Team B DevOps Team C DevOps Team E
  29. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация Горячая аналитика !=
  30. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация Горячая аналитика != Документация
  31. Внутренние показатели? df, loadavg, free, ... Показатели доступности? коды ответов,

    время ответов, проходит curl, smoke-тесты, ... Что “мониторить”?
  32. Внутренние показатели? df, loadavg, free, ... Показатели доступности? коды ответов,

    время ответов, проходит curl, smoke-тесты, ... Бизнес метрики? добавления в корзину, сделанные заказы, успешные транзакции, … Что “мониторить”?
  33. Внутренние показатели? df, loadavg, free, ... Показатели доступности? коды ответов,

    время ответов, проходит curl, smoke-тесты, ... Бизнес метрики? добавления в корзину, сделанные заказы, успешные транзакции, … Что “мониторить”? Дилемма «поздно»/«лишнее»
  34. response time = f(Severity, Service Level) S1 S2 S3 S4

    S5 S6 S7 S8 S9 Platinum Gold Silver None
  35. response time = f(Severity, Service Level) S1 S2 S3 S4

    S5 S6 S7 S8 S9 Platinum Gold Silver None
  36. response time = f(Severity, Service Level) S1 S2 S3 S4

    S5 S6 S7 S8 S9 Platinum 24h 24h 24h Gold 24h 24h 24h Silver 24h 24h 24h None 24h 24h 24h 24h
  37. response time = f(Severity, Service Level) S1 S2 S3 S4

    S5 S6 S7 S8 S9 Platinum 1m 5m 10m 30m 24h 24h 24h Gold 5m 10m 30m 24h 24h 24h Silver 10m 30m 24h 24h 24h None 24h 24h 24h 24h
  38. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация Горячая аналитика Документация !=
  39. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация Горячая аналитика Документация != Дилемма «поздно»/«лишнее» Severity Автоматический разбор
  40. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация Горячая аналитика Документация != Дилемма «поздно»/«лишнее» Severity Автоматический разбор Перенос Pending в центральную систему
  41. S1 S2 S3 S4 S5 S6 S7 S8 S9 Platinum

    1m 5m 10m 30m 24h 24h 24h Gold 5m 10m 30m 24h 24h 24h Silver 10m 30m 24h 24h 24h None 24h 24h 24h 24h
  42. S1 S2 S3 S4 S5 S6 S7 S8 S9 Platinum

    1m 5m 10m 30m 24h 24h 24h Gold 5m 10m 30m 24h 24h 24h Silver 10m 30m 24h 24h 24h None 24h 24h 24h 24h
  43. S1 S2 S3 S4 S5 S6 S7 S8 S9 Platinum

    1m 5m 10m 30m 24h 24h 24h Gold 5m 10m 30m 24h 24h 24h Silver 10m 30m 24h 24h 24h None 24h 24h 24h 24h Не обрабатываем. Ретроспектива!
  44. S1 S2 S3 S4 S5 S6 S7 S8 S9 Platinum

    1m 5m 10m 30m 24h 24h 24h Gold 5m 10m 30m 24h 24h 24h Silver 10m 30m 24h 24h 24h None 24h 24h 24h 24h Не обрабатываем. Ретроспектива!
  45. S1 S2 S3 S4 S5 S6 S7 S8 S9 Platinum

    1m 5m 10m 30m 24h 24h 24h Gold 5m 10m 30m 24h 24h 24h Silver 10m 30m 24h 24h 24h None 24h 24h 24h 24h Не обрабатываем. Ретроспектива! Обрабатываем асинхронно, большими пачками!
  46. S1 S2 S3 S4 S5 S6 S7 S8 S9 Platinum

    1m 5m 10m 30m 24h 24h 24h Gold 5m 10m 30m 24h 24h 24h Silver 10m 30m 24h 24h 24h None 24h 24h 24h 24h Не обрабатываем. Ретроспектива! Обрабатываем асинхронно, большими пачками! Обрабатываем!
  47. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация Горячая аналитика Документация Дилемма «поздно»/«лишнее» Severity Автоматический разбор Перенос Pending в центральную систему !=
  48. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация Горячая аналитика Документация Дилемма «поздно»/«лишнее» Severity Автоматический разбор Перенос Pending в центральную систему != Kubernetes нюансы
  49. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация Горячая аналитика Документация Дилемма «поздно»/«лишнее» Severity Автоматический разбор Перенос Pending в центральную систему Kubernetes нюансы != SLA, роботы
  50. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация Горячая аналитика Документация Дилемма «поздно»/«лишнее» Severity Автоматический разбор Перенос Pending в центральную систему Kubernetes нюансы SLA, роботы ... !=
  51. Мы любим Open Source… werf, grafana-statusmap, shell-operator, loghouse… — у

    наших проектов уже более 3000 звёзд, см. github.com/flant Хотите Open Source? … но ресурсы ограничены Было бы классно делать все продукты как Open Source. К сожалению, это затратно и большая ответственность Предлагаем флешмоб: расскажите, что вам это нужно Поделитесь ссылкой на этот доклад в Facebook или Twitter с хэштегом #Флант
  52. Хотите к себе в компанию? Мы готовы внедрять Если вы

    работаете в крупной компании и вас заинтересовало решение — давайте обсудим его внедрение … и дорабатывать Адаптация — необходимая составляющая подобных решений Напишите на sales@flant.ru Тема: «Система управления инцидентами»
  53. Знакомые проблемы? Мы ищем бизнес-партнёра! Помочь сделать лучшее решение по

    управлению инцидентами в роли product-менеджера и продвинуть его на рынок Успех продукта — ваш успех Обменяем долю с проекта на готовность посвятить ему своё время Напишите на hr@flant.ru Тема: «Система управления инцидентами»
  54. Спасибо! Наш блог на Хабре habr.com/company/flant Наш YouTube-канал youtube.com/c/Флант Дмитрий

    Столяров dmitry.stolyarov@flant.com CTO & Co-founder Приходите к нам работать job.flant.ru