Рубрики
Uncategorized

Искусство разговорного применения

Уже много статей об этом уже. Да, журналы и система регистрации в целом не новая. H… Помечено в ведение журналов, бревна, DevOps.

Уже много статей об этом уже. Да, журналы и система регистрации в целом не новая. Тем не менее, наш способ разработки и развертывания приложений в производстве изменился.

Инструменты и IDE увеличивают выступления в разработке. Феноменальное количество библиотек препятствует восстановлению колеса. Похоже, что сегодня разработка больше сборки блоков, чем чистые кодовые навыки. Меньше кода приводит к меньшему количеству журналов?

С другой стороны, машины были заменены виртуальными машинами. Виртуальные машины были заменены контейнерами. Все, что вы знаете о ротации журнала, имеет смысл в контейнерном мире?

Может быть, мы должны вернуться из сущности регистрации. В основном, почему наше приложение должно «говорить» и как? Какова цель?

Я уверен, что в лесозаготовке есть что-то существенное, независимо от технологических выборов и технологических достижений.

Достичь своей цели. Вот и все.

Фактически, журналы — это сообщения, отправленные приложением, чтобы сказать нам, что происходит. Но если мы ничего не будем с такой информацией, бесполезно отправлять их на первое место.

Хорошая отправная точка — понять нашу цель. Что мы хотим достичь? Нужна ли нам функциональную статистику? У нас есть экономическая стратегия, основанная на этих журналах?

Наша цель будет напрямую повлиять на:

  • Формат: имена поля являются одним из примеров, уровни журнала являются другими;
  • Данные: вы не нужно Исключения журнала Если вы хотите показатели приложений.

Я нашел две распространенные ошибки при разработке проекта:

  • Вообще не войти;
  • Легайте слишком много.

Не воодушевляя вообще ужасно, потому что вы не знаете, что происходит. Однако лесозаготовки слишком хуже. Вы получаете шум, состоящий из неважной информации, и вы увеличиваете расходы на хранение и удержание.

После того, как вы понимаете цель, которую вы хотите достичь с вашим журналом, вы можете начать создавать стратегию, которая определяет то, что вы действительно хотите войти в систему. То, что вы действительно хотите войти, являются полезными данные.

С использованием ведения журнала.

Регистрационные рамки обеспечивают механизм для выполнения регистрации в стандартной и простой в настройке способа. Они позволяют разработчикам контролировать комментарии, устанавливать уровень журнала, настроить несколько форматов и пунктов назначения, установить стратегию вращения журнала и многое другое.

Как сказано выше, в расширенных системах ведения журнала у нас есть уровень журнала, указывающий на степень информации, более или менее полезной для части нас.

СЛЕД

Полезно, если я хочу определить код определенной функции. Не быть активированным в производственной среде! Действительно, этот уровень много говорит.

ОТЛАЖИВАТЬ

Любая диагностическая информация полезна для большего количества людей, чем просто разработчиков (Sysadmins, Ops, …). Если уровень отладки используется в производстве, он должен быть ограничен кодом приложения. Рамочный слой (например, пружина), имеет тенденцию много говорить на этом уровне.

ИНФОРМАЦИЯ

В целом, информация о нормальном состоянии приложения (START/STOP SERVICE, Допущения конфигурации и т. Д.). Это информация, которую мы всегда хотим доступны, но они имеют в виду, что они бесполезны в нормальном состоянии.

ПРЕДУПРЕЖДАТЬ

Все, что потенциально может вызвать проблему приложения, но немедленно заменено альтернативным решением. Этим, мы хотим регистрировать ошибку попыток/улов, который не предотвращает работу метода; Для регистрации попытки повторно подключиться; Для регистрации отсутствия несторонних данных; Для регистрации ведомого сервера становится мастером кластера, указывая на остановку предыдущего мастера, …

ОШИБКА

Все, что вызывает ошибку и внезапную остановку операции, но не из приложения (невозможно открыть файл, невозможно восстановить основные данные, не подключиться к базе данных, …). Эти ошибки заставляют вмешательство, по крайней мере, расследование команды.

Фатальный

Любая ошибка, вызывающая службу или приложение для остановки. Такая ошибка зарегистрирована во избежание потерь данных или будущих потери данных через сервис сейчас. Это рекорд, зарезервированная для самых отвратительных ошибок и ситуаций, когда гарантируется коррупция или потеря данных.

Помните, что более стандартизированные журналы, тем легче их использовать. Стандарты настройки, очевидно, не щелчок пальцев (не стегайте половину населения, пытаясь это). Это займет время для ваших журналов, которые будут построены так же (даже больше, когда достигается через все ваши приложения).

Формат помогает получить эти стандарты:

  • Создать стандарт для форматирования: CameLase, Snake_Case, Kebab-Case?
  • Создать конвенцию именования: валюта или value_symbol . ?
  • Используйте читаемое человеком структурирование: JSON? Пары KVP)? Что-то другое?

Это говорит вам о контексте.

Быть краткими и записями коротких сообщений, в целом, хороший закон уважения. Однако существует огромная разница между написанием лаконичных журналов и написание бесполезных журналов.

Рассмотрим следующее сообщение:

20190331 10:01:00 unauthorized.

Кратко, но бесполезно.

20190331 10:01:00 user_id=781227 action=login result=failure http_status=401

Добавление контекстной информации на ваши сообщения создает историю и позволяет вам понимать и проанализировать данные более легко.

Часть контекста, которую можно добавить в журналы, состоит из куча метаданных. Общие примеры — это имя приложения, название функции, название класса и так далее.

При расследовании конкретного события через журналы, особенно в архитектурах Micro-Service, очень легко заблудиться в данных. Не имея своего рода карты для использования в качестве ссылки, практически невозможно следовать конкретным действиям по всем различным услугам, связанным с той же транзакцией.

Добавление уникальных тегов или идентификаторов для журналов, где это возможно, поможет вам вернуть историю, в правильном порядке. Эти теги могут быть все возможными для вас: идентификатор пользователя, UUID, что-то-другое — ID.

По моему опыту мы использовали идентификатор корреляции, также называемый идентификатор транзита. Это уникальный идентификатор, который прикреплен к запросам и сообщениям, которые ссылаются на конкретную транзакцию или цепочку событий.

Теперь, когда наша заявка говорит, мы должны открывать наши уши и слушать, что происходит. Во введении я говорил о контейнере.

В добром положении журналы хранятся в стандартизированных файлах. Фактически, путь и имя уважения шаблонов и файлов вращаются каждый час каждый день каждый месяц.

Рост облака (новый фильм «звездные войны») помог получить контейнерные среды в бизнес-информационных системах. Контейнер, используемый для небольших, легко одноразовых, легко заменяемых. В такой философии это бессвязно хранить журналы внутри контейнера. Таким образом, в мире контейнеров наши предыдущие правила могут быть доступны только с использованием общего объема. Но должно ли быть? На самом деле, хорошая практика в контейнерах состоит в том, чтобы войти на стандартный выход.

Выделенные журнальные контейнеры позволяют управлять входить в систему в контейнерной среде. Они могут получить журналы событий из других контейнеров, заполнить их Затем храните или пересылайте события на третьсторонний, такие как стек лосят.

Агрегация имеет большой смысл, когда вы имеете дело с несколькими приложениями. Поскольку несколько приложений включают много шумов, DLC стал эффективным выбором архитектуры и помогает вам сосредоточиться на анализе данных. В этой модели DLC действует как «вакуум журнала». Он также может управлять журналами для конкретных контейнеров, если он имеет определенные ограничения. В таком случае мы обсуждаем о SideCar (1 контейнер для прослушивания на приложение).

Чтобы заключить, я хотел бы поговорить о своем собственном опыте. Я работал консультантом для французской группы, специализирующейся на социальной защите. Мы разрабатываем веб-приложение с персональными клиентами.

Технически мы находились в кластерной среде без системы агрегации журнала. Однако для каждой ошибки мы получили сообщение с именем хоста, откуда приложение было развернуто.

С нужным доступом мы вошли на хост, то мы перечислили повернутые /var/logs/app-name.log Отказ Наша цель состояла в том, чтобы узнать, какие действия были сделаны у нашего клиента и почему.

[20170403 08:50:43 - DEBUG -  ]
  customer_id=IA12345678
  service=retirement_beneficiary
  action=get_payments
  result=success
  message="Partial list of payments sent to customer"
  page=1
  size=20
  page_max=3
[20170403 09:03:51 - ERROR -  ]
  customer_id=IA12345678
  service=retirement_participation
  action=get_earned_points
  result=failure
  reason="Customer is already retired"
  role_required=RETIREMENT_PARTICIPANT

Даже если бы у нас не было лучших инструментов, чем сам бревно, ясность было достаточно, чтобы диагностировать проблему и разрешить ее, когда это было необходимо. Всегда есть выход.

То, что я хочу доказать, вот что бы ни была ваша среда и ваши технические ограничения, журналы могут дать вам все, что вам нужно хорошо работать. Сохраняйте это в виду и не выбирайте инструменты до цели.

Спасибо за чтение.

Оригинал: «https://dev.to/ecattez/the-art-of-talkative-application-1knd»