rsyslog - como marcar e aplicar o conjunto de regras por conteúdo de linha?

rsyslog - como marcar e aplicar o conjunto de regras por conteúdo de linha?

Estou limpando e padronizando nosso manuseio de toras, adicionando fluentd e ELK. Esta parte está funcionando bem, já que o nginx está registrando em seu próprio arquivo:

input(type="imfile" tag="app.nginx" file="/var/log/nginx/access.log" ruleset="fluentd")

No entanto, outros componentes do aplicativo, por exemplo, o processo python, estão registrando /var/log/syslogmensagens de log prefixadas com [flask]. Gostaria de filtrar /var/log/syslogmensagens que contenham [flask], marcá-las com app.flaske aplicar o fluentdconjunto de regras.

Eu poderia configurar cada serviço para registrar em seu próprio arquivo como o nginx, mas gostaria de evitar alterar a configuração do systemd, se possível.

Responder1

Acabei resolvendo esse problema redirecionando mensagens para um arquivo de log específico e adicionando um inputapontado a ele.

if $rawmsg contains "[flask]" then /var/log/flask.log

input(type="imfile" tag="app.flask" file="/var/log/flask.log" ruleset="fluentd")

Se existe uma maneira de fazer isso sem redirecionar para um arquivo diferente, eu ainda gostaria de saber.

informação relacionada