Mover de syslog.conf para syslogng.conf

2

Estou movendo uma caixa do Solaris de syslogd para syslog-ng, porque a versão do Solaris do syslogd oblitera o nome do host da origem original nos logs. Eu estou olhando através da documentação do syslogng.conf, mas não tenho certeza se entendi tudo completamente. Nós temos um syslog.conf relativamente simples, eu esperava que um especialista em syslog-ng pudesse me dizer como "convertê-lo" em um syslogng.conf viável?

#ident  "@(#)syslog.conf        1.5     98/12/14 SMI"   /* SunOS 5.0 */
#
# Copyright (c) 1991-1998 by Sun Microsystems, Inc.
# All rights reserved.
#
# syslog configuration file.
#
# This file is processed by m4 so be careful to quote ('') names
# that match m4 reserved words.  Also, within ifdef's, arguments
# containing commas must be quoted.
#
*.err;kern.notice;auth.notice                   /dev/sysmsg
*.err;kern.debug;daemon.notice;mail.crit        /var/adm/messages

#*.alert;kern.err;daemon.err                    operator
#*.alert                                                root

*.emerg                                         *
local7.debug                                    /var/log/ncolog
audit.debug                                     /var/log/ncolog
local7.debug                                    @nimitz
audit.debug                                     @nimitz

# if a non-loghost machine chooses to have authentication messages
# sent to the loghost machine, un-comment out the following line:
#auth.notice                    ifdef('LOGHOST', /var/log/authlog, @loghost)

mail.debug                      ifdef('LOGHOST', /var/log/syslog, @loghost)

#
# non-loghost machines will use the following lines to cause "user"
# log messages to be logged locally.
#
ifdef('LOGHOST', ,
user.err                                        /dev/sysmsg
user.err                                        /var/adm/messages
#user.alert                                     'root, operator'
user.emerg                                      *
)
    
por coding_hero 10.07.2012 / 21:18

1 resposta

3

O syslog-ng é muito direto (mas muito mais detalhado) assim que você entende a estrutura do seu arquivo de configuração. Em uma instalação tão simples como a sua, tudo o que você precisa saber agora é que precisa configurar fontes, filtros e destinos. Não tenho certeza de qual versão do syslog-ng você está executando, mas aqui está uma para o 3.0.x (que funcionará também para versões mais recentes):

@version 3.0

# syslog source
source s_sys { sun-streams ("/dev/log" door("/var/run/syslog_door")); };

# use this instead if you receive logs from network:
# source s_sys { udp ();
#                sun-streams ("/dev/log" door("/var/run/syslog_door")); };

# destinations
destination d_sysmsg { file ("/dev/sysmsg"); };
destination d_messages { file ("/var/adm/messages"); };
destination d_ncolog { file ("/var/log/ncolog"); };
destination d_nimitz { udp ("nimitz"); };
destination d_auth { file ("/var/log/authlog"); };
destination d_syslog { file ("/var/log/syslog"); };
destination d_users { usertty ("*"); };

# filters
filter f_emerg { priority (emerg); };
filter f_sysmsg { priority (err..emerg) or
                  (facility (kern) or facility (auth)) and priority (notice..emerg); };
filter f_messages { priority (err..emerg) or
                    facility (kern) or
                    facility (daemon) and priority (notice..emerg) or
                    facility (mail) and priority (crit..emerg); };
filter f_local7 { facility (local7); };
filter f_audit { facility (13); };
filter f_mail { facility (mail); };

# log paths
log { source (s_sys); filter (f_emerg); destination (d_users); };
log { source (s_sys); filter (f_sysmsg); destination (d_sysmsg); };
log { source (s_sys); filter (f_messages); destination (d_messages); };
log { source (s_sys); filter (f_local7); destination (d_ncolog); destination (d_nimitz); };
log { source (s_sys); filter (f_audit); destination (d_ncolog); destination (d_nimitz); };
log { source (s_sys); filter (f_mail); destination (d_syslog); };

Acho que cobri tudo, menos as peças "ifdef". Se o seu host não está mantendo logs localmente, ou seja, não é LOGHOST, você precisa adicionar outro destino

destination d_loghost { udp ("loghost"); };

e altere o caminho do registro para o correio para

log { source (s_sys); filter (f_mail); destination (d_loghost); };
    
por 11.07.2012 / 00:32