|
@@ -0,0 +1,74 @@
|
|
|
+# Логирование: понятие, механизмы и уровни
|
|
|
+Программисты и системные администраторы занимаются структурированием и контролем за работой сайтов, серверов и программного обеспечения отдельного компьютера. При возникновении ошибок в работе того или иного сервиса специалист обращается к логам.
|
|
|
+
|
|
|
+## Что такое логи?
|
|
|
+
|
|
|
+**Лог** - это хронологическая запись наиболее значимой информации о работе системы. Подобная фиксация событий дает представление и том, что происходило в системе, в какой именно момент, какой пользователь спровоцировал то или иное событие, какие ошибки возникли и т.д.
|
|
|
+
|
|
|
+Запись оформляется в особый файл, который еще называют лог-файлом или журналом логов. Для специалиста такой файл — это книга или справочник, рассказывающий о том, что происходило в системе в конкретный период времени. Грамотные администраторы, обращаясь к подобным записям, могут не только выявить проблему в работе системы на ранней стадии, но и вовремя предотвратить сбой в ее работе. Несанкционированные действия или установление вредоносных программ также фиксируются журналами логов. И по ним можно достаточно эффективно выявить внешнее вмешательство в работу сайта. Таким образом логи используются для контроля, мониторинга, анализа, защиты и оптимизации работы приложений и серверов.
|
|
|
+
|
|
|
+## Типы логов
|
|
|
+В зависимости от того, информация какого типа фиксируется системой, формируются разные типы записей. Поэтому логи делятся на:* системные, серверные, почтовые, логи аутентификации, авторизации, log file приложений, баз данных* и т.д. Подобная группировка помогает быстрее находить нужный лог и оптимизировать работу с ним.
|
|
|
+
|
|
|
+Еще существует разделение логов в порядке их значимости для ситуационной ошибки:
|
|
|
+
|
|
|
+* Срочное исправление - Fatal error
|
|
|
+
|
|
|
+* Ошибки, не влияющие на пользователя - Not critical error
|
|
|
+
|
|
|
+* События, требующие внимания - Warning
|
|
|
+
|
|
|
+* Информация о вызовах сервера - Initial information
|
|
|
+
|
|
|
+## Что такое логирование?
|
|
|
+**Логирование** — это процесс формирования логов, а именно: фиксация и структурирование информации о работе системы в отдельные лог-файлы с возможностью быстрого доступа к ним в случае необходимости. Файлы содержат отчет обо всем, что происходило с системой: какие действия совершали конкретные пользователи, когда это происходило, как система реагировала на события и т.д.
|
|
|
+
|
|
|
+Фиксацию всех важных для системы событий производит специальное программное обеспечение. В процессе логирования учитываются настройки уровня детализации записей, поскольку ни одна система не проводит записи абсолютно всех событий.
|
|
|
+
|
|
|
+Кроме формирования журнала записей, важной компонентой настройки логирования является правильная организация хранения логов. Она должна обеспечивать своевременный и быстрый доступ к ним.
|
|
|
+
|
|
|
+Лог-файлы могут храниться на компьютере, на удалённом жёстком диске, на отдельном сервере, в облачных хранилищах, т.е. на любом удобном носителе с ограниченным доступом для посторонних.
|
|
|
+
|
|
|
+Настройка автоматического сбора и хранения логов делается для того, чтобы во время возникновения проблем на сервере была возможность проанализировать сохраненные данные. При этом важно не просто выявить сбой, но и исправить возникшие проблемы, предотвратить появление ошибок в будущем. В этом заключается основная задача работы программиста с log file.
|
|
|
+
|
|
|
+Механизмы записи информации
|
|
|
+Как было сказано выше, в журналах логов не фиксируется абсолютно вся информация. Система производит запись наиболее важных для анализа данных. Например, при обращении пользователя к конкретной странице сайта, в лог записываются: URL, к которому обращается посетитель, его IP-адрес, используемый браузер, операционная система, дата и точное время обращения, код ответа сервера и прочее.
|
|
|
+
|
|
|
+Для формирования *журналов логирования* программисты используют разные механизмы фиксации информации:
|
|
|
+
|
|
|
+* Самый понятный и распространенный механизм - запись логов в текстовый файл. Это запись каждого события отдельной строкой.Подобные журналы легко читать, открыв файл в любом текстовом редакторе.
|
|
|
+
|
|
|
+* Более углубленный лог - когда одно событие записывается несколькими строками, например, журнал ошибок. Такие записи имеют сложную многоступенчатую структуру, в которой человеку легко пропустить важную информацию. Поэтому для чтения этого вида log files используются специальные программы.
|
|
|
+
|
|
|
+* Бинарный - самый сложный механизм записи файлов. Обычно такие логи обрабатываются тем же программным обеспечением, что и ПО, их записывающее.
|
|
|
+
|
|
|
+Приложения, использующие БД или сами СУБД. Основным недостатком такой фиксации является вероятность замедления работы базы данных из-за интенсивной записи логов. Поэтому при использовании такого механизма ведения записи крайне важно четко определить, что именно система должна фиксировать.
|
|
|
+
|
|
|
+Настраивая логирование, важно учитывать, что процесс формирования лог-файлов должно быть незаметным для пользователя. Если отладка проведена не правильно, производительность системы будет снижаться из-за нехватки места на диске.
|
|
|
+
|
|
|
+## Уровни логирования
|
|
|
+При любом механизме записи событий их объем все равно будет большим. И работать с таким количеством информации будет достаточно сложно. Поэтому логи структурируют по уровням. Наиболее известными и востребованными являются следующие уровни логирования:
|
|
|
+
|
|
|
+* debug
|
|
|
+
|
|
|
+* info
|
|
|
+
|
|
|
+* warning
|
|
|
+
|
|
|
+* error
|
|
|
+
|
|
|
+* fatal
|
|
|
+
|
|
|
+На уровне debug едет запись значимых переходных состояний, например, запуск или остановка сервера, запрос в БД, верификация, обработка информации. Уровень info расскажет программисту об общих событиях работы сервиса. Экстренные ситуации, проблемы, некорректные запросы будут записаны в warning. Основные ошибки на уровне error.
|
|
|
+
|
|
|
+Чтобы соблюдались уровни логирования, программисту нужно прописать условия или внутри самой программы, или выставить условия в зависимости от ситуации при запуске программы, которая производит логирование.
|
|
|
+
|
|
|
+## Ротация файлов
|
|
|
+Представим, что логирование данных системы налажено. Например, мы прописали в приложении уровни: *debug, info, warning, error*. Выбрали в качестве механизма записи обычные текстовые файлы и у нас благополучно все логи собираются в отдельном месте. Теперь нам стоит разобраться с ротацией логов.
|
|
|
+
|
|
|
+Ротация файлов логирования представляет собой архивирование логов с одновременным удалением старых файлов и заменой их вновь созданными. Во время ротации происходит сортировка логов и удаление тех файлов, к которым точно не нужно будет обращаться. Такой подход позволяет сократить объем памяти, используемой для хранения журналов логирования. Поскольку не все файлы одинаково значимы для системного администратора, в удалении части из них заложен смысл сохранения работоспособности и эффективности системы. Ведь чем больше памяти на жёстком диске, тем быстрее обрабатываются запросы пользователей.
|
|
|
+
|
|
|
+Во время ротации происходит несколько технических процедур: *сохранение и архивирование нового лога, переименование ранее сформированных файлов и удаление самых старых*. Конечно, такое представление последовательности действий значительно упрощено. В реальности же ротация логов – это сложный многоступенчатый порядок действий системы, который запускается специальными утилитами.
|
|
|
+
|
|
|
+## Как читать логи?
|
|
|
+Для чтения простых логов можно использовать обыкновенный текстовый редактор. А вот для расшифровки более сложных и объемных записей стоит воспользоваться специальным программным обеспечением. Ассортимент готовых решений для анализа файлов логирования достаточно широк. Выбирать ПО стоит, исходя из задач и объемов вашего ресурса.
|