Вопрос: rsyslogd: Любой способ обойти количество местных объектов?


У нас есть около 9-10 устройств, на которые мы хотим направлять ведение журнала на наш сервер rsyslog. Однако есть только 8 местных объектов (0-7). Как мы можем обойти это ограничение?


7
2018-04-19 23:06


Источник




Ответы:


Зарегистрируйте имя приложения в своих сообщениях. Отфильтруйте имя приложения вместо объекта. Если ваши приложения не генерируют сообщения syslog напрямую, вы можете применить выходной фильтр (например, sed), чтобы массировать вещи, чтобы выглядеть так, как вы хотите.

Взгляните на документацию Rsyslog на условия фильтрации чтобы узнать, как вы можете настроить это поведение. На основе информации на этой странице приведен пример того, как вы могли бы отправлять сообщения, начинающиеся со строки «application1», в /var/log/application1:

if $msg startswith 'application1' then /var/log/application1

Вы также можете явно фильтровать название программы, если ваше приложение устанавливает это правильно:

if $programname == 'application1' then /var/log/application1

Вы можете выполнять все виды сложной фильтрации в своем rsyslog.conf; прочитайте документацию для получения дополнительной информации и примеров.

РЕДАКТИРОВАТЬ: rsyslog может использовать шаблоны для создания отдельных файлов для каждого сервера. Что-то вроде следующего должно помещать все сообщения журнала в отдельные файлы для каждого имени хоста. (Это снято с man-страницы.)

$template DynFile,"/var/log/system-%HOSTNAME%.log
*.*                             ?DynFile

Следующее похоже, но не регистрирует отладочные сообщения. Он также использует имя хоста соединения, а не имя хоста сообщения. (Это основано на том, что я разработал для регистрации вывода из Obi100.)

$template HostFormat,"%timegenerated% %fromhost% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
$template HostFile,"/var/log/system-%fromhost%.log
if $syslogseverity < 7 then -HostFile;HostFormat

Прочтите справочную и документацию, если у вас есть более сложные потребности, или вы хотите понять, что это делает.


12
2018-04-19 23:11



Как настроить это в rsyslog.conf? - Belmin Fernandez
Что именно вы хотите настроить? Я даже не уверен, что я ответил на ваш вопрос, потому что для каждого приложения вам не требуется другое средство, если вы не хотите помещать сообщения из каждого приложения в отдельный файл журнала ... но это имеет смысл для этого используйте syslog, если вы отправляете их удаленно; в противном случае вы можете просто напрямую выводить из нашего приложения непосредственно в файл. Может быть, вы можете уточнить, что именно вы пытаетесь сделать? - larsks
Они отправляются удаленно. Приборы отправляют его на сервер rsyslog. Я хочу направить данные для разделения файлов журнала. - Belmin Fernandez


Фильтровать по имени хоста. (Каждое устройство должно иметь собственное имя хоста). Если вы хотите, вы можете прослушивать несколько портов и обрабатывать каждый порт отдельно.

Средства предназначены для обработки таких категорий сообщений, как авторизация, почта, принтер, ftp и т. Д. Поскольку UUCP больше не используется, вы, вероятно, можете использовать его для собственных целей. Они могут быть другими неиспользуемыми средствами в вашей конфигурации. Однако вам лучше использовать стандартные значения параметров и фильтровать другие данные.

Есть 24 объекта, поскольку они являются именами бит в битовой маске. Это приводит к агрегации произвольных наборов объектов в одном журнале. Протокол указан в RFC 5424,

Другое поле - серьезность. Обычно журналы содержат все журналы с определенной степенью тяжести или выше. (Более серьезные приоритеты имеют более низкие значения, поэтому нормальное сравнение меньше или равно выбранному приоритету.) Однако сообщения выбранного объекта могут быть выбраны, как это часто делается для журнала отладки, который собирает отладочные сообщения для всех объектов.

Вы можете захотеть агрегировать данные для некоторых объектов в том же журнале независимо от того, откуда это происходит. Обычно регистрировать одно и то же сообщение в нескольких файлах журнала.


3
2018-04-20 00:31



RFC 5424 определяет 24 объекта. - adaptr
@adaptr: Был ли грубый подсчет с man-страницы вместо проверки RFC. Закрытый вид RFC показывает только 20 уникальных целей из-за использования множества битов объекта для сообщений часов и аутентификации. - BillThor
Как они используются на практике, не меняется, что протокол ограничен 192 уникальными значениями. Если вы нарушите THAT, это больше не будет syslog. - adaptr
@adaptr: если бит объекта не используется в среде, то он может использоваться для нестандартной цели без столкновения. Я не рекомендую, но это возможно. - BillThor
Я согласен, но это большое, если. - adaptr