Преобразование журналов Apache Cookie в json с помощью rsyslogd
Я записываю заголовки файлов cookie, некоторые файлы cookie могут иметь дату окончания, некоторые другие - нет, то же самое относится и к другим параметрам cookie, мне нужно реализовать центрированное ведение журнала, поэтому перед отправкой их в logstash я хочу преобразовать syslog в json. Как я могу это сделать?
2 ответа
Мое предложение - вы форматируете логи в apache как json ранее.
В соответствии с запросом, вот пример, который я получил о том, как использовать LogFormart в httpd, чтобы ваши журналы apache регистрировались непосредственно как json:
LogFormat "{\"time\":\"%{%Y-%m-%dT%H:%M:%S%z}t\",\"clientip\":\"%a\",\"duration\": %D,\"status\": %>s,\"request\": \"%U%q\",\"uri\": \"%U\",\"remote_user\": \"%u\",\"query_string\": \"%q\",\"document\": \"%f\",\"bytes\": %B,\"request_method\": \"%m\",\"referer\": \"%{Referer}i\",\"useragent\": \"%{User-agent}i\",\"vhost\": \"%{Host}i\" }" json
Я нашел плохое решение. Вы можете добавить%{cookiename}C к определению LogFormat, но это означает, что вам нужно знать имена всех файлов cookie, и это только первая проблема. Вторая проблема заключается в том, что для файлов cookie, которые не существуют в определенном месте, а - будут регистрироваться, и это будет занимать место, однако это легко изменить с помощью модуля rsyslog (я так думаю), чтобы удалить треш.
Итак, вот пример.
LogFormat "{\" rhost \ ":% h, \" time \ ":% t, \" cookiename \ ": \"%{cookiename}C \ ", \" useragent \ ": \"% {User-agent } i \ ", \" vhost \ ": \"% {Host} i \ "}" json
Это зарегистрирует json с именем и значением cookie, если таковые существуют.