Назад | Перейти на главную страницу

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

Я только что установил сервер 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.

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

В 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

Вы также можете отправить файлы журнала на сервер 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 и посмотреть, что произойдет.

Вы можете использовать apache2gelf скрипты отсюда.

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

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