Usando o rsyslog para criar diferentes arquivos de log para diferentes processos

2

Cenário: estou executando um cluster de máquinas. Cada máquina executa vários programas python com um único (através do cluster), mas dinamicamente definido, ID.

Agora, eles estão todos registrando localmente. Então, eu posso ter logs semelhantes:

process_5.log
process_6.log

para processos que tinham ID 5 e 6.

Outra máquina pode ter:

process_20.log
process_25.log

Desejo encaminhar esses logs para um servidor de logs executando o rsyslogd. O recurso de criação de log do Python tem um bom manipulador de syslog, então eu entendo como eu poderia conectar-me ao servidor remoto. O que eu não descobri é como usar o template / DynFile para manter a separação de logs.

por exemplo. no servidor de logs, eu quero ver:

process_5.log
process_6.log
process_20.log
process_25.log

que correspondem aos registros do mesmo nome na máquina de envio.

Existe uma maneira de conseguir isso com o modelo rsyslogd?

    
por user80203 08.07.2011 / 04:32

2 respostas

1

Como o usuário quanta postou, o modelo deles deve funcionar. Aqui está o meu:

$template DynFile, "/var/log/syslog/%HOSTNAME%/%$YEAR%/%$MONTH%/%$DAY%/%syslogfacility-text%.log"
*.info;mail.none;authpriv.none;cron.none            ?DynFile
authpriv.*                                          ?DynFile
mail.*                                              ?DynFile
cron.*                                              ?DynFile
uucp,news.crit                                      ?DynFile

Isso fará com que os registros de cada aplicativo ou instalação entrem em seu próprio arquivo. O log de cada cliente no servidor aparecerá como no cliente.

Observe o %syslogfacility-text% . Você pode substituir essa parte por várias outras propriedades de acordo com a documentação do Property Replacer .

    
por 06.09.2012 / 16:46
0

Each machine runs various python programs with a unique (across the cluster), but dynamically set, ID.

O process_$ID também é o nome do programa? E se sim, tente isto:

$template DynaFile,"/var/log/rsyslog/python_apps/%PROGRAMNAME%.log"
if $programname startswith 'process' then -?DynaFile

Você pode colocá-lo em uma pasta separada com %HOSTNAME% , se quiser.

PS: Eu não testei. Deixe-me saber se funciona para você.

    
por 31.07.2011 / 15:23