В вычислительной технике syslog / ˈ s ɪ s l ɒ ɡ / — это стандарт для регистрации сообщений . Он позволяет разделить программное обеспечение, которое генерирует сообщения, систему, которая их хранит, и программное обеспечение, которое сообщает и анализирует их. Каждое сообщение помечается кодом объекта, указывающим тип системы, генерирующей сообщение, и ему назначается уровень серьезности.
Разработчики компьютерных систем могут использовать syslog для управления системой и аудита безопасности, а также для общих информационных, аналитических и отладочных сообщений. Широкий спектр устройств, таких как принтеры, маршрутизаторы и приемники сообщений на многих платформах, используют стандарт syslog. Это позволяет консолидировать данные журналов из различных типов систем в центральном репозитории. Реализации syslog существуют для многих операционных систем.
При работе в сети syslog использует архитектуру клиент-сервер , где сервер syslog прослушивает и регистрирует сообщения, поступающие от клиентов.
Syslog был разработан в 1980-х годах Эриком Оллманом как часть проекта Sendmail . [1] Он был легко принят другими приложениями и с тех пор стал стандартным решением для ведения журналов в Unix-подобных системах. [2] Различные реализации также существуют в других операционных системах, и он обычно встречается в сетевых устройствах, таких как маршрутизаторы . [3]
Syslog изначально функционировал как фактический стандарт , без какой-либо официально опубликованной спецификации, и существовало множество реализаций, некоторые из которых были несовместимы. Internet Engineering Task Force задокументировала статус-кво в RFC 3164 в августе 2001 года. Он был стандартизирован RFC 5424 в марте 2009 года. [4]
Различные компании пытались запатентовать определенные аспекты реализации syslog. [5] [6] Это оказало незначительное влияние на использование и стандартизацию протокола. [ необходима цитата ]
Информация, предоставленная создателем сообщения syslog, включает код объекта и уровень серьезности. Программное обеспечение syslog добавляет информацию в заголовок информации перед передачей записи получателю syslog. Такие компоненты включают идентификатор процесса создателя, временную метку и имя хоста или IP-адрес устройства.
Код объекта используется для указания типа системы, которая регистрирует сообщение. Сообщения с различными объектами могут обрабатываться по-разному. [7] Список доступных объектов описан стандартом: [4] : 9
Сопоставление между кодом объекта и ключевым словом не является единообразным в разных операционных системах и реализациях syslog. [8]
Список степеней тяжести также описан стандартом: [4] : 10
Значение уровней серьезности, отличных от Emergency и Debug, относится к приложению. Например, если целью системы является обработка транзакций для обновления информации о балансе счета клиента, ошибке на последнем этапе следует назначить уровень Alert . Однако ошибке, возникающей при попытке отобразить почтовый индекс клиента, может быть назначен уровень Error или даже Warning .
Серверный процесс, который обрабатывает отображение сообщений, обычно включает все более низкие (более серьезные) уровни, когда запрашивается отображение менее серьезных уровней. То есть, если сообщения разделены по индивидуальной серьезности, запись уровня предупреждения также будет включена при фильтрации для сообщений Notice , Info и Debug . [12]
В RFC 3164 компонент сообщения (известный как MSG) был указан как имеющий следующие поля: TAG , который должен быть именем программы или процесса, сгенерировавшего сообщение, и CONTENT , который содержит сведения о сообщении.
Описано в RFC 5424, [4] "MSG — это то, что называлось CONTENT в RFC 3164. TAG теперь является частью заголовка, но не как единое поле. TAG был разделен на APP-NAME, PROCID и MSGID. Это не совсем похоже на использование TAG, но обеспечивает ту же функциональность для большинства случаев". Популярные инструменты syslog, такие как NXLog , Rsyslog, соответствуют этому новому стандарту.
Поле содержимого должно быть закодировано в кодировке UTF-8 , а значения октетов в традиционном диапазоне управляющих символов ASCII следует избегать. [13] [4]
Сгенерированные сообщения журнала могут быть направлены в различные пункты назначения, включая консоль , файлы, удаленные серверы syslog или реле. Большинство реализаций предоставляют утилиту командной строки, часто называемую logger , а также программную библиотеку для отправки сообщений в журнал. [14]
Для отображения и мониторинга собранных журналов необходимо использовать клиентское приложение или получить доступ к файлу журнала непосредственно в системе. Основные инструменты командной строки — tail и grep . Серверы журналов можно настроить для отправки журналов по сети (в дополнение к локальным файлам). Некоторые реализации включают программы отчетности для фильтрации и отображения сообщений syslog.
При работе в сети syslog использует архитектуру клиент-сервер , где сервер прослушивает известный или зарегистрированный порт для протокольных запросов от клиентов. Исторически наиболее распространенным протоколом транспортного уровня для сетевого ведения журнала был протокол пользовательских дейтаграмм (UDP), при этом сервер прослушивал порт 514. [15] Поскольку в UDP отсутствуют механизмы управления перегрузкой, используется порт 6514 протокола управления передачей (TCP); безопасность транспортного уровня также требуется в реализациях и рекомендуется для общего использования. [16] [17]
Поскольку каждый процесс, приложение и операционная система были написаны независимо, в полезной нагрузке сообщения журнала мало единообразия. По этой причине не делается никаких предположений о его форматировании или содержании. Сообщение syslog форматируется (RFC 5424 дает определение расширенной формы Бэкуса–Наура (ABNF)), но его поле MSG — нет.
Сетевой протокол представляет собой симплексную связь без каких-либо средств подтверждения доставки отправителю.
Различные группы работают над проектами стандартов, подробно описывающих использование syslog не только для регистрации сетевых событий и событий безопасности, но и для его предлагаемого применения в сфере здравоохранения. [18]
Такие правила, как Закон Сарбейнса-Оксли , PCI DSS , HIPAA и многие другие, требуют от организаций внедрения комплексных мер безопасности, которые часто включают сбор и анализ журналов из множества различных источников. Формат syslog доказал свою эффективность в консолидации журналов, поскольку существует множество инструментов с открытым исходным кодом и фирменных инструментов для составления отчетов и анализа этих журналов. Существуют утилиты для преобразования из журнала событий Windows и других форматов журналов в syslog.
Поставщики услуг управляемой безопасности пытаются применять аналитические методы и алгоритмы искусственного интеллекта для обнаружения закономерностей и оповещения клиентов о проблемах. [19]
Протокол Syslog определен в документах Request for Comments (RFC), опубликованных Internet Engineering Task Force ( Internet standards ). Ниже приведен список RFC, определяющих протокол syslog: [20]
Ключевые слова error, warn и panic устарели и больше не должны использоваться.
LOG_NOTICE Условия, которые не являются состояниями ошибки, но могут потребовать специальной обработки.
LOG_NOTICE Сообщение описывает обычное, но важное событие.