Изменить шаблон журнала на основе содержимого журнала событий или источника - PullRequest
1 голос
/ 14 мая 2019

У меня есть два источника и один пункт назначения. Я хочу, чтобы шаблон, используемый в месте назначения, менялся в зависимости от того, из какого источника я получаю событие журнала.

Мне удалось создать поля SDATA с правилами перезаписи, но я не могу найти решение для изменения шаблона на основе содержимого события или источника.

Я получу много шаблонов и множество источников, и у моего пункта назначения будет несколько рабочих. Я не хочу использовать несколько мест назначения, потому что это потребует от меня баланса числа работников на основе рабочих нагрузок из разных источников, и это будет меняться со временем.

source s_syslog {
 network( port(10514));
};

source s_firewall {
 network( port(10515));
};

template t_template1 {
 template("something something");
};

template t_template2 {
 template("something else");
};

destination d_http {
  http(
    url("http://127.0.0.1:40000/logservice")
    # if syslog
    body(template(t_template1))
    body(template(t_template2))
  );
};

log {
 source(s_syslog);
 destination(d_http);
};

Шаблон журнала, используемый в месте назначения, зависит от источника журнала или содержимого события.

Edit:

Я мог бы приблизиться к решению. Я не смог выяснить, как проверить источник в качестве условия или если это возможно. Тест также всегда выглядит как True, независимо от того, что я нахожу очень странным.

template-function t_default "$(if (\"${username}\" == \"root\")
                                   \"TEMPLATE 1\"  
                                   \"TEMPLATE 2\"
)";

destination d_http {
  http(
    url("http://127.0.0.1:40000/logservice")
    body("$(t_default)")
  );
};
...