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

93aef1d166a8a3536538eff713f80307?s=47 flant
October 29, 2019

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

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

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

93aef1d166a8a3536538eff713f80307?s=128

flant

October 29, 2019
Tweet

Transcript

  1. Дмитрий Столяров CTO & Co-founder 10 лет on-call Чему мы

    научились?
  2. Скрипт в Cron Источники сообщений

  3. Скрипт в Cron Источники сообщений

  4. Дежурный инженер Скрипт в Cron Источники сообщений

  5. None
  6. Центральное хранилище

  7. Центральное хранилище Переключатель

  8. Центральное хранилище Переключатель Транспорт

  9. Центральное хранилище Переключатель Транспорт Алерт != Текст !=

  10. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    != !=
  11. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

    Лейблы, лейблы, лейблы! != !=
  12. Какие бывают алерты?

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

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

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

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

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

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

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

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация !=
  20. ****

  21. ****

  22. ****

  23. ****

  24. ****

  25. ****

  26. ********

  27. ********

  28. None
  29. None
  30. None
  31. None
  32. firing unknown ok (not firing)

  33. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

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

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

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

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

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

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

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

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

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

  50. Примеры MQL (для поиска): trigger = "IngressResponses5xx" trigger = "IngressResponses5xx"

    AND project = "horns-and-hooves"
  51. Примеры 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"
  52. Примеры 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
  53. Примеры 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
  54. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

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

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация != Горячая аналитика
  64. None
  65. None
  66. None
  67. None
  68. L1 24/7 & смены по 12 часов

  69. L1 24/7 & смены по 12 часов

  70. L1 24/7 & смены по 8 часов

  71. DevOps Team B DevOps Team A L1 24/7 & смены

    по 8 часов
  72. L2 только будние дни DevOps Team B DevOps Team A

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

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

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

    L2 24/7 & смены по 8 часов DevOps Team B DevOps Team A L1 24/7 & смены по 8 часов
  76. 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 часов
  77. 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 часов
  78. 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 часов
  79. 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
  80. 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
  81. 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
  82. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

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

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

  87. Внутренние показатели? df, loadavg, free, ... Что “мониторить”?

  88. Внутренние показатели? df, loadavg, free, ... Показатели доступности? коды ответов,

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

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

    время ответов, проходит curl, smoke-тесты, ... Бизнес метрики? добавления в корзину, сделанные заказы, успешные транзакции, … Что “мониторить”? Дилемма «поздно»/«лишнее»
  91. Priority? Minor Moderate Major Critical Severity? DEBUG INFO WARNING ERROR

    CRITICAL
  92. None
  93. А так же: Отделение окружения

  94. А так же: Отделение окружения Параметризация пороговых значений

  95. А так же: Отделение окружения Параметризация пороговых значений Параметризация уровня

    северити
  96. А так же: Отделение окружения Параметризация пороговых значений Параметризация уровня

    северити Написание алертов с учетом архитектуры
  97. S1 S2 S3 S4 S5 S6 S7 S8 S9 Platinum

    Gold Silver None
  98. response time = f(Severity, Service Level) S1 S2 S3 S4

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

    S5 S6 S7 S8 S9 Platinum Gold Silver None
  100. 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
  101. 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
  102. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

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

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

    Лейблы, лейблы, лейблы! != Состояние и правильный протокол Дедупликация Рабочий процесс у инцидентов Гарантии доставки Эстафетная палочка Умный игнор Мониторинг мониторинга Язык запросов Маршрутизация Горячая аналитика Документация != Дилемма «поздно»/«лишнее» Severity Автоматический разбор Перенос Pending в центральную систему
  105. 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
  106. 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
  107. 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 Не обрабатываем. Ретроспектива!
  108. 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 Не обрабатываем. Ретроспектива!
  109. 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 Не обрабатываем. Ретроспектива! Обрабатываем асинхронно, большими пачками!
  110. 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 Не обрабатываем. Ретроспектива! Обрабатываем асинхронно, большими пачками! Обрабатываем!
  111. Центральное хранилище Переключатель Транспорт Алерт != Текст Инцидент != Алерт

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

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

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

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

  116. Инциденты

  117. Инциденты Алерты

  118. Инциденты Алерты События

  119. Инциденты Алерты События Сообщения

  120. Мы любим Open Source… werf, grafana-statusmap, shell-operator, loghouse… — у

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

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

    управлению инцидентами в роли product-менеджера и продвинуть его на рынок Успех продукта — ваш успех Обменяем долю с проекта на готовность посвятить ему своё время Напишите на hr@flant.ru Тема: «Система управления инцидентами»
  123. Спасибо Сергею Гнускову, Геннадию Калашникову и Антону Климову, которые все

    это сделали!
  124. Дежурный инженер Скрипт в Cron Источники сообщений

  125. Спасибо! Наш блог на Хабре habr.com/company/flant Наш YouTube-канал youtube.com/c/Флант Дмитрий

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