Вопрос или проблема
Я хотел бы отправить логи каждого приложения на удаленный коллектор с помощью syslog-ng.
Если у меня есть Apache, я хотел бы, чтобы логи Apache отправлялись на мой удаленный коллектор в файл /var/log/apache.log
.
Я не смог ничего найти об этом. Я знаю, что это возможно с rsyslog, но единственное, что я могу сделать здесь, это отправить все логи вместе с:
destination remote { network("<адрес_коллектора>" transport("udp") port(514)); };
Чтобы собрать логи из файлов с помощью syslog-ng, вам нужно создать источники файлов и добавить их в лог-выражение. Что-то вроде этого:
source s_apache {
file("/var/log/apache.log");
};
log {
source(s_apache); destination(remote);
};
Чтобы собрать логи и из других файлов, определите дополнительные источники и добавьте их в лог-выражение. Если у вас есть приложение, которое записывает в несколько разных лог-файлов (например, в файлы логов с меткой времени), вы можете использовать источник wildcard-file. Ознакомьтесь с документацией для получения подробной информации: https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.21/administration-guide/16#TOPIC-1180423
Я думаю, что вы можете использовать тот же подход, что и в Syslog-ng – Отправить имя файла от клиента к серверу.
Конфигурация на стороне клиента в syslog-ng –
file("/var/log/shell.log" log_prefix("shell: "));
Конфигурация на стороне сервера в syslog-ng –
filter f_shell { match("shell" value("MSGHDR")); };
destination d_shell { file("/var/log/syslog-ng/shell.log"); };
log { source(demo_tls_src); filter(f_shell); destination(d_shell); flags(final); };
Ответ или решение
Вопрос о том, как отправить логи приложений в конкретный каталог с использованием syslog-ng, является актуальной задачей для многих администраторов систем. Это позволяет централизовать управление логами и упрощает их анализ и мониторинг. В данной статье мы детализируем процесс настройки отправки логов, например, для Apache, на удаленный коллектор с использованием syslog-ng.
Шаг 1: Установка syslog-ng
Прежде всего, убедитесь, что у вас установлена актуальная версия syslog-ng. Вы можете установить ее, используя пакетный менеджер вашей операционной системы. Например, для дистрибутивов на основе Debian это можно сделать командой:
sudo apt-get install syslog-ng
Шаг 2: Настройка клиента
На стороне клиента (где находятся ваши приложения, генерирующие логи), вам необходимо настроить syslog-ng на считывание временного лог-файла приложения и отправку его содержимого на удаленный сервер.
-
Конфигурация источников:
Определите источник для Apache. В конфигурационном файле syslog-ng (обычно это
/etc/syslog-ng/syslog-ng.conf
) добавьте следующий код:source s_apache { file("/var/log/apache.log" log_prefix("apache: ")); };
Здесь мы используем
log_prefix
, чтобы обозначить каждый лог-сообщение, приходящее из Apache, что может быть полезно для фильтрации на стороне сервера. -
Настройка назначения:
Укажите удаленный сервер, куда будут отправляться журналы:
destination remote { udp("<collector_address>" port(514)); };
Замените
<collector_address>
на фактический IP-адрес или hostname вашего удаленного коллектора. -
Создание лог-выражения:
В завершение свяжите источник и направление в лог-выражении:
log { source(s_apache); destination(remote); flags(final); };
Шаг 3: Настройка сервера
На стороне сервера, принимающего логи, необходимо настроить syslog-ng для их обработки.
-
Определение источника:
Добавьте источник, чтобы syslog-ng мог получать данные от клиента:
source s_network { udp(port(514)); };
-
Фильтрация и направление логов:
Чтобы логи от Apache помещались в определенный файл, добавьте фильтрацию и определите, куда отправлять эти логи:
destination d_apache { file("/var/log/syslog-ng/apache.log"); }; filter f_apache { match("apache" value("MSGHDR")); }; log { source(s_network); filter(f_apache); destination(d_apache); flags(final); };
Шаг 4: Перезапуск syslog-ng
После выполнения всех изменений вам необходимо перезапустить службу syslog-ng, чтобы конфигурация вступила в силу:
sudo systemctl restart syslog-ng
Заключение
Настройка syslog-ng для отправки логов приложений, таких как Apache, в конкретный каталог на удаленном коллекторе не только возможна, но и проста. Используя подход описанный выше, вы сможете легко централизовать управление логами различных приложений, что улучшит мониторинг и анализ ваших систем. Рассматривайте этот процесс как инвестицию в лучшую организацию вашей инфраструктуры, что в конечном итоге повлияет на эффективность вашей работы.