Я настраиваю rsyslog в многопользовательской среде для ретрансляции на центральный сервер. Поскольку он является многопользовательским, я хотел бы добавить к имени хоста с первого сервера rsyslog префикс, специфичный для клиента, перед ретрансляцией на центральный сервер. Я планировал установить префикс вручную, однако префикс настраивается в другом файле на сервере, и если бы это можно было собрать из этого файла, было бы еще лучше.
Поскольку первый сервер будет ретранслировать с нескольких хостов, вступление должно быть динамической перезаписью, включающей исходное имя хоста, а не жестко закодированной перезаписью одного и того же имени хоста для всех записей, что я видел в некоторых примерах.
В идеале то, что я пытаюсь сделать, резюмируется следующим псевдокодом:
набор правил (имя = "myrule") {
установить $hostname = "<prefix>-%HOSTNAME%"
действие (тип = "omfwd" цель = "удаленный-IP")
}
Я буду отвечать как за промежуточный ретранслятор, так и за центральный сервер, но каждый ретранслятор может обслуживать несколько клиентов, поэтому я не думаю, что перезапись может быть выполнена на центральном сервере, но у меня есть полный контроль над обоими уровнями. Каждый клиент подключается через выделенный интерфейс, и я планировал отдельный набор правил, прикрепленный к входу, настроенному для каждого интерфейса, и набор правил, включающий префикс, специфичный для клиента. По этой причине я думаю, что конфигурация должна быть на ретрансляторе, но если есть другой способ, то я готов попробовать все, что соответствует конечной цели - сделать события идентифицируемыми клиентом.
Причина желания использовать перезапись имени хоста заключается в том, что это соответствует тому, как другие инструменты настроены в среде, и крайне желательно сохранить однородную настройку. Однако, если это невозможно, можно рассмотреть другой метод, если первый технически неосуществим.
Например, каждый ретранслятор подключен к нескольким клиентам через отдельные таблицы маршрутизации, а конечный клиент имеет другое имя хоста, например. site1-sw1 или site2-rtr2. Однако проблема заключается в том, что префикса клиента нет в имени, поскольку это наша ссылка для определения того, к какому клиенту относится устройство. В других системах мы переименовываем эти имена как cust1-site1-sw1 и cust1-site2-rtr2, тем более, что может быть, например, cust2-site2-rtr2. Мы хотим аналогичного поведения в syslog.
Каков правильный способ сделать это?