Отправка журналов на сервер Graylog2

11

Я только что настроил сервер Graylog2 и хочу отправить все журналы с моего главного сервера на сервер Graylog. Я включил ведение журнала для главного сервера и отправляю журналы на свой сервер Graylog, добавив *.* @logs.example.com:1337в /etc/rsyslog.conf.

Я хочу, чтобы Graylog2 собирал все мои журналы Apache, системные журналы (для входов по SSH, отклоненные входы) и любые другие журналы, которые мне нужно отслеживать.

Для логов Apache мне также хотелось бы логи Rails. Мои сайты находятся в, /srv/www/а затем структура sitename.com/public_htmlи sitename.com/logs. У меня много сайтов на сервере, и я хотел бы получить простой способ просмотреть все ошибки и сделать из них несколько хороших графиков, поэтому я хочу использовать Graylog2 ...

Файлы журнала в папке журналов access.logи error.log.

Журналы Rails будут в sitename.com/public_html/log. Это содержит production.log.

Дин Перри
источник
Какой вопрос здесь? Если у вас установлен rsyslog, вы можете использовать его для отправки журналов Rails / Apache на Graylog2 ( rsyslog.com/doc/imfile.html )
полином
ты пробовал это? docs.graylog.org/en/1.2/pages/collector.html
zx1986

Ответы:

10

Это старый, но я подумал, что напишу этот метод, который я использую для сайта с низким / средним трафиком (не знаю, будет ли он работать хорошо для сайта с большим трафиком):

В Apache я определяю формат CustomLog, graylog2_accessкоторый форматирует журнал доступа в формате GELF, а затем отправляю свой журнал через Graylog2, передавая данные журнала через nc для отправки сообщений GELF на вход Graylog2.

Вот пользовательский формат, который он создает (удобочитаемый):

{ 
 "version": "1.1",
 "host": "%V",
 "short_message": "%r",
 "timestamp": %{%s}t,
 "level": 6,
 "_user_agent": "%{User-Agent}i",
 "_source_ip": "%a",
 "_duration_usec": %D,
 "_duration_sec": %T,
 "_request_size_byte": %O,
 "_http_status": %s,
 "_http_request_path": "%U",
 "_http_request": "%U%q",
 "_http_method": "%m",
 "_http_referer": "%{Referer}i"
}

Для конфигурации Apache вот версия для копирования / вставки:

LogFormat "{ \"version\": \"1.1\", \"host\": \"%V\", \"short_message\": \"%r\", \"timestamp\": %{%s}t, \"level\": 6, \"_user_agent\": \"%{User-Agent}i\", \"_source_ip\": \"%a\", \"_duration_usec\": %D, \"_duration_sec\": %T, \"_request_size_byte\": %O, \"_http_status\": %s, \"_http_request_path\": \"%U\", \"_http_request\": \"%U%q\", \"_http_method\": \"%m\", \"_http_referer\": \"%{Referer}i\" }" graylog2_access

Затем в конфигурации вашего хоста:

CustomLog "|nc -u graylogserver 12201" graylog2_access
ETL
источник
+1 Хороший! Попробуйте это на одной из наших систем, но вместо этого используйте ERROR.
Хенк
@Henk - если вы делаете формат для журнала ошибок, пожалуйста, дайте мне знать, я хочу, но еще не потратил время. Кроме того, проверьте serverfault.com/questions/582510/… для получения некоторой информации о вещах , с которыми я столкнулся позже.
ETL
5

Вы также можете отправить свои файлы журналов на сервер graylog2 с помощью этой простой команды:

tail -F -q $yourlogfile |   while read -r line ; do   echo "<7> $hostnamesendingthelog $line" | nc -w 1 -u $graylogserver 514;   done;

Я использую это главным образом в целях тестирования, чтобы определить, адаптирован ли мой формат журнала для удобного запроса в graylog2. Для производственного использования вы не захотите устанавливать rsyslog или syslog-ng.

Вы, вероятно, можете записать свой лог-файл rails и посмотреть, что получится

Пьериг Ле Со
источник
Мне нравится простота этого ответа: просто и без дополнительных инструментов. Я не знаю, что делать с метками времени в файле журнала: может быть, ничего не поделаешь, и они не имеют значения?
Техас-бронус
2

Graylog2 принимает журналы только в двух форматах: стандартный системный журнал и расширенный формат журнала Graylog (он же GELF). Произвольные журналы на диске будут нуждаться в каком-то стороннем процессе, чтобы использовать журналы и преобразовать их в форму, которая будет полезна для вас.

Посмотрите на Logstash . Большинство людей считают его инструментом для индексирования файлов журналов с помощью ElasticSearch, но он также содержит универсальный «маршрутизатор журналов», который позволяет вам связать кучу файлов на диске и отправить их в компонент журналирования, такой как Graylog.

natacado
источник
2
Rsyslog может легко читать журналы: rsyslog.com/doc/imfile.html
полином
1
Хотя rsyslog может использовать другие файлы в качестве входных данных, преимущество использования logstash заключается в возможности использовать предопределенные регулярные выражения Grok (см. Logstash.net/docs/1.0.17/filters/grok ), чтобы получить некоторую структуру в сообщениях журнала и не просто текст.
Йоси
syslog-ng может сделать то же самое с более чистым конфигом по сравнению с rsyslog: loggly.com/support/sending-data/logging-from/syslog/syslog-ng/…
HVNSweeting