Надсилання журналів на сервер Graylog2


11

Я щойно налаштував сервер Graylog2, і я хочу надсилати всі журнали з мого основного сервера на сервер 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

+1 Приємний! Потрібно спробувати це в одній із наших систем, але замість помилки.
Хенк

@Henk - якщо ви створюєте формат журналу помилок, будь ласка, повідомте мене, я хочу, але ще не витратили час. Також перевірте serverfault.com/questions/582510/…, щоб дізнатись про речі, на які я зіткнувся пізніше.
ETL

5

Ви також можете надіслати свої файли журналу на сервер greylog2 за допомогою цієї простої команди:

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

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

Ви, ймовірно, можете зафіксувати файл журналу рейок і подивитися, що відбувається.


Мені подобається простота цієї відповіді: Відверта та без зайвих інструментів. Я не знаю, що робити з часовими позначками файлу журналу: можливо, нічого не робити, і вони не мають значення?
texas-bronius

2

Graylog2 приймає журнали лише у двох форматах: стандартний syslog та розширений формат журналу Graylog (він же GELF). Довільні журнали на диску потребуватимуть стороннього процесу, щоб споживати журнали та переводити його у форму, корисну для вас.

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


2
Rsyslog може легко читати журнали: rsyslog.com/doc/imfile.html
поліном

1
Хоча rsyslog може використовувати інші файли як вхідні дані, використання logstash має перевагу в тому, щоб використовувати попередньо визначені регулярні вирази Grok (див. Logstash.net/docs/1.0.17/filters/grok ), щоб отримати якусь структуру в повідомленнях журналу та не просто явний текст.
joschi

syslog-ng може зробити те ж саме з чистішою конфігурацією порівняти з rsyslog: loggly.com/support/sending-data/logging-from/syslog/syslog-ng/…
HVNSweeting

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.