В качестве окончательного интерактивного в моем мини-семинаре на Austin 2019 austin austin 2019 я поставил следующий сценарий для аудитории:
У вас есть устаревшее приложение, которое не было обновлено через 5 лет. Система работает Python 2, которая закатает в январе 2020 года. Система недавно имела свой первый инцидент за 4 года, и ваша команда была в числе группы, которая должна была вернуть ее обратно. Журналы, которые вы получили, были не очень полезны, и приносят резервное копирование экземпляра производства, в итоге стало большим количеством испытаний и ошибок.
Руководство решило, что все приложения должны быть на Python 3 к концу замораживания кода в январе 2020 года. Ваша команда была поручена обновлением приложения для использования Python 3. Это идеальное время, чтобы добавить правильное ведение журнала. Как бы вы пошли за планирование и выполнение этой регистрации обновления?
Сценарий создал много обсуждений, и у людей были очень хорошие ответы. Тем не менее, кто-то в Twitter (спасибо за вопрос, @russellyazbeck !) Указал меня, что я полностью забыл предоставить мой взять на тот же сценарий. Упс! Я ответил в нить в Twitter, но я хотел бы выложить его и расширить его немного здесь, так как это определенно легче найти.
В первую очередь члены аудитории, начавшегося с привлечения всех вместе, были обнаружены. Убеждено, что вы можете иметь свои собственные данные о том, что ваша непосредственная команда собралась во время инцидента, обращаясь к остальным командам, которые ответили на инцидент, и собирать их данные, также важно. Почему? У них разные перспективы. Очень легко заблудиться в вашем собственном контексте и прекратить замечать причуды или проблемы, уникальные для вашего языка программирования, на платформу, с которой вы несколько знакомы, или даже в команде, с которой вы работали в прошлом. Спросите любого, кто когда-нибудь преподавал концепцию кому-то еще, и вы обнаружите, что девять раз из десяти, эти люди упомянут, как они были изначально удивлены, где кто-то потерял или насколько тяжело избегать жаргона, который нуждался в дальнейшем объяснении Отказ Так что убедитесь, что вы получаете данные от тех, кто был вовлечен в этот инцидент, чтобы вы могли начать понимать, что другие люди могут понадобиться понять ту же проблему.
Как только вы вместе все вместе, начните говорить о идеальном ответе на инцидент и идеальные данные, которые вы бы собрали. Какие эти журналы показали? Какие данные вам действительно нужны? Кроме того, какие данные были просто шум? Были ли какие-либо данные, которые дублировали информацию? Кроме того, вы можете использовать на этот раз, чтобы обсудить, какие уровни журнала будут полезны для каждого типа данных. Уровни журнала помогают уменьшить или структурировать шум, исходящий из системы ведения журнала. Поскольку хорошая производственная система позволяет настроить журналы, основанные на какой среде, в которой вы находитесь (dev, test/qa, постановка, продувка или некоторая комбинация), и, поскольку любые и все команды, делающие работу OPS по указанной системе, скорее всего, будут любить вас Если им не нужно решать, является ли журнал вашей системой, представляет собой предупреждение о передаче (предупреждение) или что-то не действующее правильно, но не снимет весь дом карт (ошибка) или что-то, что сняло все Включая ваши базы данных и сетевые (критические), подходя к консенсусу, на котором нужны уровни регистрации и как определить их действительно важно как сейчас, так и в будущем.
Теперь, когда у вас есть гораздо лучшее представление о том, какие данные вам действительно нужны, вы бы выбрали структуру библиотеки или регистрации, которая может помочь вам дать вам то, что вам нужно. Если бы вы были в сценарии, у которого есть куча других приложений, которые идут, как бы скорее всего в сценарии, как это, где есть устаревшее приложение и несколько команд, которые, вероятно, работают над несколькими проектами, я определенно посмотрю на структурированную библиотеку журналов Как structlog Отказ Хотя я мог бы распаляться на вершине стандартной библиотеки лесозаготовки, я думаю, что остальная часть команды (и члены команды будущей команды), вероятно, найдут библиотеку с хорошими документами и стандартизированным использованием намного легче использовать для поддержания хороших журналов в длинные бегать. Самоустановленная библиотека лесозаготовки, вероятно, будет лучше всего, чтобы все хорошо регистрировали. Лично я бы не использовал только текстовые журналы для такого рода ситуации, даже если есть только одно приложение, которое владеет вашей компанией. Начните, как вы собираетесь продолжить, чтобы продолжить, чтобы он намного проще в том, чтобы убедиться, что другие системы будут легче для других на борту на аналогичные функции, общий стиль и другие знакомые элементы. Тем не менее, вы должны иметь в виду, что этот менталитет включает в себя точку, которую я сделал в семинаре: аудитория структурированных журналов не на самом деле не является человеком или набором людей, а скорее многие машины, анализирующие данные для вас.
Кстати, я хочу что-то указать. Я выбрал Python 2 к сценарию преобразования Python 3, потому что это один из тех моментов, это идеальное время, чтобы добавить журналы. Вы уже в кодовой базе копаете и касаетесь всего. Вы знакомитесь о том, что там, так что вы вряд ли пропустите что-то серьезное (ну, предполагая, что вы не используете шесть или встроенный 2To3 ). Это также идеальное время, как отмечалось несколькими людьми в аудитории, добавить в предупреждение о амортизации для всего, что полагалось на конвенции Python 2 для удара приложения. Однако это немного красной сельди. Вы можете добавить эти виды журналов в любую систему в любое время. Наследие системы часто рассматриваются как наиболее страшные для работы, следовательно, сценарий, и инциденты являются одним из идеальных времен, чтобы сделать шаг назад и понять, какие данные текут через вашу систему. Тем не менее, вы можете использовать этот же мыслительный процесс для современного приложения, приложение, которое не имело инцидента, или даже приложение, которое является совершенно новым. Пройтись по сценарию, как если бы ваше приложение произошло, произошло в этот момент (или стучать сознательно в разработке или постановка, когда эти среды не используются для чего-либо критического), и посмотрите, что выходит из мозговой штурма с различными командами, которые теоретически вовлечены. Затем добавьте журналы и следите за результатом.
Как еще вы ответили на этот сценарий, который я выложил здесь?
Оригинал: «https://dev.to/logdna/adding-logs-to-legacy-applications-3e5l»