LINUX.ORG.RU
ФорумAdmin

nginx logs отправка логов по syslog

 , , ,


0

1

Крайне простой и рабочий вариант - добавляем к любому хосту:

access_log syslog:server=192.168.1.15:514,tag=nginx_access nginx_json_log_format; error_log syslog:server=192.168.1.15:515,tag=nginx_error;

НО - error_log не поддерживает формат лога - и неизвестно по какому хосту получена запись об ошибке :(

можно ли как то обойти?

вижу что можно указать tag=, но не вижу как можно задать какой нибудь аттрибут который будет передан вместе с данными которые отправляются на rsyslog, кто нибудь знает как можно обойти это ограничение?


Не совсем понял. Ты на syslog сервере не можешь определить с какого хоста пришёл лог?

zolden ★★★★★
()

можно ли как то обойти?

Писать в файл, ставить syslog-ng, настраивать у него source file. Про rsyslog не знаю, может тоже умеет.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от AS

чем поможет syslog-ng если файлов порядка 1000 как и хостов, под каждый файл свою конфиграцию syslog-ng? ну хорошо, пусть так, и что там писать? а главное какой в этом смысл? файл лога ошибок - вот он отдельный , имя файла его какое-то, как это поможет понять по какому какому хосту nginx туда пишуется данные (из какой секции server) ?

VoDD87
() автор топика
Ответ на: комментарий от VoDD87

Делаешь на уровне каждой секции server свой error_log

zolden ★★★★★
()
Ответ на: комментарий от VoDD87

отдельные серкции server - они всегда отдельные. и что из этого?

Имелось в виду выставить в каждой секции server нужный тэг:

server {
    server_name vhost1;
    error_log syslog:server=192.168.1.15:515,tag=nginx[vhost1];
}
server {
    server_name vhost2;
    error_log syslog:server=192.168.1.15:515,tag=nginx[vhost2];
}

файл лога ошибок - вот он отдельный , … как это поможет понять по какому какому хосту nginx туда пишуется данные (из какой секции server) ?

В каждой секции server можно указать свой собственный файл.

spirit ★★★★★
()
Ответ на: комментарий от VoDD87

чем поможет syslog-ng если файлов порядка 1000 как и хостов

source s_files {
wildcard-file(
base-dir(«/var/log»)
filename-pattern(«*.log»)
);
};

как это поможет понять по какому какому хосту nginx туда пишуется данные (из какой секции server) ?

Шаблон на destination. Скорее всего будет какой-то вариант. Мне поискать?

AS ★★★★★
()
Ответ на: комментарий от spirit

спасибо! не подскажете как получить эти данные vhost1 и vhost2? это какой то под-массив? или это просто строка «nginx[vhost2]» ?

VoDD87
() автор топика
Ответ на: комментарий от VoDD87

nginx[vhost2] - это просто строка, которая будет отображаться в логе syslog, vhost1 и vhost2 - это ваши названия сайтов.

spirit ★★★★★
()
Ответ на: комментарий от VoDD87

да, если можно. спасибо!

Вот лентяй. https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-editi...

FILE_NAME

Description: Name of the log file (including its path) from where syslog-ng OSE received the message (only available if syslog-ng OSE received the message from a file or a wildcard-file source). If you need only the path or the filename, use the dirname and basename template functions.

AS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.