Системный журнал не пересылает удаленные сообщения

Я настроил /etc/syslog.conf с настройкой ниже

*.* @10.10.10.2:514
*.* @@10.10.10.2:514

и вошли через код ниже

openlog("Test-Msg", LOG_PID, LOG_LOCAL0);
for (int i = 0; i <10; i++)
{
syslog(LOG_ALERT, "My msg %d", i);
std::cout<<"-------------Writing Syslog "<<i<<"\n";
}

closelog();

но это не пересылка на удаленный сервер. вместо этого он создает файл «@ 10.10.10.2: 514» & «@@ 10.10.10.2: 514» и регистрируем все сообщения там.

Протестировано с wireshark, никакие сообщения не пересылаются в удаленную систему.

Я использую платформу Yocto и реализацию системного журнала busybox 1.22.

Обновить

В yocto я увидел еще один файл конфигурации /etc/syslog-startup.conf и там я настроил

DESTINATION=remote  # log destinations (buffer file remote)
REMOTE=10.10.10.2:514          # where to log (syslog remote)

Теперь он начал пересылать все сообщения, но согласно руководствам по Linux, syslog conf должен поддерживать *.=alert @<host:port> фильтр. Если мне нужно использовать вышеуказанную конфигурацию, как я могу применить фильтры?

3

Решение

По умолчанию системы на основе Yocto используют Busybox для предоставления минимальных версий многих основных инструментов. Системный журнал является одним из таких инструментов. Это цитата из документации Busybox:

Обратите внимание, что эта версия syslogd игнорирует /etc/syslog.conf.

Чтобы получить полную функциональность системного журнала, вы должны включить в свой образ более полную реализацию. Есть несколько вариантов в meta-openembedded, rsyslog в метаэ вероятно, хороший выбор по умолчанию.

1

Другие решения

Сначала я бы использовал logger (инструмент, включенный в busybox), чтобы убедиться, что ваша конфигурация системного журнала правильная.
Если сообщения хорошо отправляются этим методом, мы можем исследовать код.

logger [OPTIONS] [MESSAGE]

Write MESSAGE to the system log. If MESSAGE is omitted, log stdin.

Options:

-s      Log to stderr as well as the system log
-t TAG  Log using the specified tag (defaults to user name)
-p PRIO Priority (numeric or facility.level pair)
0

Я тоже смотрю на это. busybox поддерживает удаленную регистрацию, но, кажется, пересылает все сообщения. Отсутствует поддержка фильтрации в сочетании с удаленной регистрацией. Я установил rsyslog на образ, чтобы решить эту проблему.

Я также узнал, что rsyslog не вращает файлы из коробки. Logrotate был установлен как зависимость, но демон cron не запущен. Мне пришлось установить cronie и настроить cronie, logrotate и rsyslog.

0
По вопросам рекламы [email protected]