Шаблоны RSyslog (template): формирование и преобразование событий.
Общие сведения.
Шаблоны в RSyslog определяет в каком виде событие будет записано в файл, передано на удалённый сервер или обработано другим действием.
С помощью шаблонов можно изменять структуру Syslog-сообщения, выбирать необходимые поля, добавлять постоянные значения, изменять HOSTNAME, формировать заголовок сообщения и использовать дополнительные свойства, созданные при обработке события.
Пример шаблона.
Рассмотрим формирование сообщения в формате RFC 5424:
template(
name="RemoteEvents"
type="list"
) {
constant(value="<")
property(name="pri")
constant(value=">1 ")
property(
name="timestamp"
dateFormat="rfc3339"
)
constant(value=" ")
property(name="hostname")
constant(value="-nginx ")
constant(value="nginx_access - - - ")
property(name="msg")
constant(value="\n")
}В результате может быть сформировано сообщение следующей структуры:
<PRI>1 TIMESTAMP HOSTNAME-nginx nginx_access - - - MESSAGEНапример:
<158>1 2026-09-21T10:00:00+05:00 server01-nginx nginx_access - - - <сообщение>Основные элементы.
| Элемент | Назначение |
|---|---|
template() | Объявляет новый шаблон RSyslog |
name="RemoteEvents" | Уникальное имя шаблона |
type="list" | Указывает тип шаблона |
constant() | Добавляет в результат постоянное значение |
property() | Добавляет значение свойства обрабатываемого события |
property(name="pri") | Значение Syslog PRI (facility + severity) |
property(name="timestamp") | Временная метка события |
dateFormat="rfc3339" | Форматирует временную метку в RFC 3339 |
property(name="hostname") | Имя узла, от которого получено событие |
property(name="msg") | Содержимое сообщения |
constant(value="\n") | Добавляет перевод строки |
Использование шаблона.
После объявления шаблон можно назначить определённому action.
Например:
action(
type="omfwd"
target="192.168.0.200"
port="514"
protocol="tcp"
template="RemoteEvents"
)В этом случае перед отправкой на удалённый сервер событие будет преобразовано в соответствии с шаблоном RemoteEvents.
Типы шаблонов.
RSyslog поддерживает несколько типов шаблонов. Выбор зависит от задачи и требуемого формата результата.
Шаблон list.
Шаблон формируется из последовательности property() и constant():
template(
name="ExampleList"
type="list"
) {
property(name="timestamp")
constant(value=" ")
property(name="hostname")
constant(value=" ")
property(name="msg")
constant(value="\n")
}Такой подход удобен для сложных шаблонов, поскольку каждое поле описывается отдельно и структура сообщения хорошо видна в конфигурации.
Шаблон string.
Позволяет определить шаблон одной строкой:
template(
name="ExampleString"
type="string"
string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%\n"
)Подходит для относительно простых текстовых форматов.
Другие типы.
RSyslog также поддерживает другие типы шаблонов, в частности:
type="subtree"— сериализация части дерева структурированных данных сообщения;type="plugin"— формирование результата специализированным output-плагином.
Кроме того, RSyslog предоставляет встроенные (reserved) шаблоны для распространённых форматов Syslog.
Выбор между list или string.
Шаблоны list и string имеют наибольшее распространение. Оба типа могут использоваться в современных конфигурациях.
Шаблон string представляет шаблон одной строкой и удобен для простых форматов. Шаблон list использует более структурированный подход. Для новых и более сложных конфигураций целесообразно использовать шаблон list, поскольку такой подход:
- явно разделяет свойства события и постоянные значения;
- упрощает чтение и сопровождение конфигурации;
- позволяет индивидуально настраивать обработку отдельных свойств;
- удобнее при построении сложных структурированных сообщений;
- снижает необходимость формирования длинных строк с подстановками
%property%.
Примеры шаблонов.
Ссылка на официальный сайт RSyslog с примерами шаблонов: