Одна из моих рабочих мест как Инженер надежности на сайт (SRE) Состоит в том, чтобы наша приложение имеет прочную систему мониторинга. Вы не можете гарантировать надежность, если вы не знаете, когда все сломаются. Из-за этого факта один из проектов наша команда SRE добавлена в свой список, когда его сформировалось, было капитальный ремонт нашей системы мониторинга в Кенна Отказ
Настройка мониторинга Кенны была катастрофой. При ретроспективе, по крайней мере, у нас было что-то, но это было далеко от идеала. Вот то, что мы собирались следить за нашей инфраструктурой.
- Новая реликвия для мониторинга производительности
- Pagerduty для мониторинга здоровья применения
- Elastalert, который использовал журналы для предупреждения о несоответствиях данных или использует аномалии сайта
- Cron Jobs, которые запускали ночные и каждые 30 минут, ищущие аномалии данных
- HoneyBadger для ошибок приложения/кода
- Admin Dashboards для фоновых технологических услуг, таких как Sidekiq и Resque
Катастрофа не заканчивается там! У нас было не только 6 различных инструментов, выполняющих мониторинг, мы их сообщали о всех разных местах.
- Slack Channels — в нашем худшем настроении у нас был другой слабый канал для каждой отдельной среды с оповещениями, отправляемыми на него.
- SMS Messagings
- Эл. адрес
- Телефонный звонок
Как будто все эти разные оповещения о оповещении были недостаточно, чтобы выпустить голову, оповещения, которые мы отправили всем из них, были невероятно непоследовательными. Некоторые оповещения только что сообщают данные, но не требуют никаких действий. Многие оповещения будут периодически и быть ложными позитивами. И, наконец, некоторые оповещения на самом деле нуждались в том, чтобы сразу решить их.
Само собой разумеется, те, кто был называть, были несчастны! Они понятия не имели, что было важно или какие оповещения были действительными. Сначала это не было огромной проблемой, потому что большая часть нашей команды находилась на некоторое время и знала все, что все были актуальны. Однако, поскольку наша команда начала расти, мы реализовали нашу систему мониторинга, необходимую для изменения. Наша недавно спитная команда SRE быстро решила, что одна из первых проблем, которые мы собирались позаботиться о мониторинге.
Мы пересмотрели всю нашу систему в течение нескольких месяцев, и изменения окупились в пики. Вот стратегии, которые мы реализовали, что сделало огромное значение для нашей команды.
Все должно быть в одном месте. Это особенно важно, тем больше ваша команда получает. Как все больше и больше людей присоединяются, на них будет сложнее, если вы должны научить их нескольким различным системам. Вместо этого преподавание всех одной системы намного проще. Затем, когда кто-то идет по-вызов, это бесконечно легче сказать им, чтобы открыть одну веб-страницу, и это. Вы можете иметь несколько инструментов отчетности, но вам нужно отправлять все свои оповещения через один интерфейс.
Я уверен, что вам интересно, к чему мы консолидировали одно место. Это было Datadog Отказ Причина, по которой мы выбираем DataDog, было потому, что она может буквально подключить к каждому другую услугу, что означало, что все может жить в одном месте. Мы подключили его к HoneyBadger, чтобы отслеживать ошибки приложений, мы подключили его в Circleci, чтобы предупредить нас от сбоев развертывания. Вы называете его, мы бежим через Datadog сейчас. Когда кто-то отправляется на звонок, все, что им просто нужно было сделать, это открыть страницу мониторинга DataDog, чтобы узнать состояние приложения.
Теперь Datadog не является вашим единственным вариантом. Есть много других компаний, которые делают подобные вещи для DataDog, который вы можете заглянуть. Вот пара ссылок на другие рекомендации.
Вы также можете просто руловать свои собственные. Мы рассмотрели это в одном моменте, потому что мы уже создали так много наших собственных инструментов оповещения в нашем приложении. Однако мы решили против этого, потому что у нас не было времени или ресурсов, чтобы сделать это правильно.
В тот момент, когда вы позволяете одному шуму через вас, установите приоритет для всего остального, что он игнорируется. Я не могу подчеркнуть этот момент достаточно! После того, как вы начнете игнорировать ложные позитивы, вы можете очень быстро забыть то, что важно и что нет. Если предупреждение исчезнет, и нет никаких действий, которые необходимо предпринять, то это предупреждение не должно было выйти в первую очередь. Если вы хотите, чтобы вещи оповещали, что не являются действительными, вам нужно поставить их в отдельное место вдали от действующих предметов.
Например, один из способов выполнить это с двумя разными слабыми каналами. У вас может быть расслоенный канал для предупреждений, которые должны быть адресованы, а второй, который только для отчетов о состоянии. Однако вы решите это сделать, убедитесь, что элементы действий отделяются от их «нет необходимых действий».
Это было огромно для нас! Многие наши ручные оповещения в начале срабатывают каждые 30/60/90 минут. Даже если бы мы признали предупреждение и работали над его исправлением, он все равно будет пинг. Нет ничего более разочаровывающего, чем пытаться решить проблему, когда будильник ведет в ваше ухо.
Мы впервые попытались решить эту проблему, сделав наши ручные оповещения о предупреждениях. Эта рода работала, но должна была проводиться через консоль, а команды не были интуитивными. Кроме того, у нас были оповещения от таких инструментов, как эласталерт, что мы не могли не отключить. Учитывая все несоответствия во всех наших инструментах, это было дыхание свежего воздуха, когда мы получили эту функциональность с Datadog.
Не только вы хотите предупредить, чтобы быть мультипным, в идеале, вы хотите иметь возможность отключить их для определенного таймфрейма. Ничто хуже, чем отслеживать предупреждение, исправляя проблему, а затем забыть о том, чтобы включить его впоследствии. Это может, и вероятно, приведет к пропущенным оповещениям в какой-то момент.
Это одна из тех вещей, о которых вы не думаете, пока вы не смотрите на оповещение и понятия не имели, что это вызывает. Много раз, чтобы выяснить причину оповещения, вам нужно знать, что было предыдущее поведение. Если у вас есть история для предупреждения, вы можете сделать это. Возвращаясь и ищете тенденции в данных, вы можете получить лучшую картину ситуации, которая может помочь, когда дело доходит до поиска корневой причины.
Наличие истории предупреждения также может помочь вам понять тенденции и находить проблемы, даже до того, как запускается предупреждение. Например, скажем, вы отслеживаете нагрузку базы данных. Если вы вдруг испытаете большое количество роста, вы можете ссылаться на историю вашего мониторинга для этого оповещения, чтобы определить, какая нагрузка на базу данных, и если вы приближаетесь к этому оповещению. Затем вы можете использовать эту информацию, чтобы опередить оповещения, прежде чем он даже уходит.
Ремонт нашей системы мониторинга погасил во многих отношениях. Для начала разработчики на звонках намного счастливее! Удаляя любую двусмысленность вокруг того, что были важные оповещения, и что не было, мы взяли много путаницы от навязки. Мы также удалили много шума. Никто не хочет, чтобы их телефон нажал всю ночь, когда они находятся на звонок. Удаление этих ложных позитивов исправили эту проблему.
Поскольку весь мониторинг сейчас находится в одном месте, это просто и легко для разработчиков, чтобы понять и учиться. Эта простота использования заставила многих разработчиков внести свой вклад в усилие оповещения, сделав свои собственные оповещения и улучшаемся на тех, которые у нас уже есть на месте. Наличие надежного, простота в использовании система дала разработчикам вескую причину покупать в нее и присоединиться к усилиям, чтобы улучшить его.
Я надеюсь, что, поскольку вы создаете свои собственные системы оповещения и мониторинга, вы удерживаете эти стратегии, чтобы помочь вам построить что-то, что приятно для всех работать с!
Оригинал: «https://dev.to/molly/for-the-love-of-bleep-building-a-scalable-monitoring-system-520»