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