Путать с форматом сообщения системного журнала - PullRequest
17 голосов
/ 09 февраля 2012

Я немного запутался в формате сообщений системного журнала.Я должен написать программу, которая анализирует сообщения системного журнала.Когда я читаю то, что получаю в своем экземпляре syslog-ng, я получаю сообщения, подобные этому:

Jan 12 06:30:00 1.2.3.4 apache_server: 1.2.3.4 - - [12/Jan/2011:06:29:59 +0100] "GET /foo/bar.html HTTP/1.1" 301 96 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 ( .NET CLR 3.5.30729)" PID 18904 Time Taken 0

Я могу четко определить реальное сообщение (в данном случае это сообщение журнала доступа Apache). Остальноеметаданные о самом сообщении системного журнала.

Однако, когда я читаю RFC 5424 , примеры сообщений выглядят так:

без структурированных данных

 <34>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 - BOM'su root' failed for lonvick on /dev/pts/8

или со структурированными данными

<165>1 2003-10-11T22:14:15.003Z mymachine.example.com evntslog - ID47 [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] BOMAn application event log entry...

Так что теперь я немного запутался.Каков правильный формат сообщения системного журнала?Это вопрос спецификации версии, где RFC 5424 устарел RFC 3164 ?

Ответы [ 2 ]

17 голосов
/ 09 февраля 2012

Проблема в этом случае заключается в том, что apache регистрируется через стандартный системный журнал (3) или через регистратор. Это поддерживает только старый формат системного журнала (RFC3164), то есть здесь нет структурированных данных. Чтобы поля из журнала apache отображались как структурированные данные RFC5424, apache необходимо будет отформатировать журнал таким образом.

Первый пример не соответствует системному журналу RFC3164, поскольку значение приоритета удаляется из заголовка. Правильный формат RFC3164 будет выглядеть так:

<34>Jan 12 06:30:00 1.2.3.4 apache_server: 1.2.3.4 - - [12/Jan/2011:06:29:59 +0100] "GET /foo/bar.html HTTP/1.1" 301 96 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 ( .NET CLR 3.5.30729)" PID 18904 Time Taken 0

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

Два других в формате RFC5424.

1 голос
/ 02 мая 2013

Если у вас есть доступ к установленному в системе демону syslog, вы можете настроить его на запись журналов (полученных как локально, так и по сети) в другом формате. Например, rsyslogd позволяет настроить свой собственный формат (просто написать шаблон), а также, если я правильно помню, имеет встроенный шаблон для хранения в формате json. И есть библиотеки практически на любом языке для разбора json.

...