Syslog-ng não está escrevendo para 2 destinos

0

Eu configurei o syslog-ng para logar em um destino MSSQL e tudo funciona bem. No entanto, se eu especificar um segundo destino (mesmo banco de dados, mas tabela diferente) com um comando de log separado que use um filtro diferente para identificar o tráfego desejado nessa tabela, o registro em log não funcionará.

Eu presumi que era por threading, então eu ativei o threading, mas ainda vejo o mesmo.

Estou usando o Ubuntu 13.04 raring e a versão 3.5.3 do syslog-ng OSE.

Alguém viu este problema?

Obrigado Pete

Obrigado pela resposta Tom. As seções relevantes do arquivo syslog-ng.conf estão abaixo. Coloquei o destino e o log de cada tabela em que quero dados. No momento, este é um teste, portanto os analisadores são os mesmos, mas estou tentando dividir o tráfego, pois os analisadores serão diferentes.

O que eu acho é que, se eu inicio o syslog-ng, às vezes recebo dados sendo enviados para uma das tabelas do banco de dados, mas não para o outro, ou nenhum dos dados é enviado. Eu executei um perfil SQL e a instrução insert não é vista, portanto, não é um problema SQL.

Outras coisas que podem ter um efeito, o servidor syslog-ng está rodando no Hyper-V mas eu aloquei 4 CPUs lógicas para ele, mas eu estou pensando que se cada destino SQL usa um thread separado, o Ubuntu pode não estar lidando com virtualização e, portanto, não apresentar as CPUs para o aplicativo.

Seus pensamentos sobre isso seriam apreciados.

Seções relevantes do arquivo .conf abaixo:

options { threaded(yes);};

source s_net { udp(ip(x.x.x.x) port(514) flags("syslog-protocol", "threaded")); };

destination d_mssql {
sql(type(mssql) host("x.x.x.x") port (1433) 
username("******") password("********") database("syslog-ng") 
table ("BMTHFWTRAFFICAccepted${R_DAY}${R_MONTH}${R_YEAR}") 
columns ("time varchar(16)", "devname varchar(50)", "device_id varchar(50", 
"log_id varchar(16)", "type varchar(16)", "subtype varchar(16)", "pri varchar(16)", 
"vd varchar(16)", "src varchar(16)", "src_port varchar(16)", "src_int varchar(16)", 
"dst varcar(16)", "dst_port varchar(16)", "dst_int varchar(16)", "sn varchar(16)", 
"statuc varchar(16)", "policyid varchar(16)", "dst_country varchar(255)", 
"src_country varchar(255)", "dir_disp varchar(16)", "tran_disp varchar(16)", 
"tran_ip varchar(16)", "tran_port varchar(16)", "service varchar(16)", "proto varchar(16)", 
"duration varchar(16)", "sent varchar(16)", "rcvd varchar(16)", "sent_pkt varchar(16)", 
"rcvd_pkt varchar(16)" 
values ("${FORTINET.time}", "${FORTINET.time}", "${FORTINET.devname}", "${FORTINET.device_id}", 
"${FORTINET.log_id}", "${FORTINET.type}", "${FORTINET.subtype}", "${FORTINET.pri}", 
"${FORTINET.vd}", "${FORTINET.src}", "${FORTINET.src_port}", "${FORTINET.src_int}", 
"${FORTINET.dst}", "${FORTINET.dst_port}", "${FORTINET.dst_int}", "${FORTINET.sn}", 
"${FORTINET.status}", "${FORTINET.policyid}", "${FORTINET.dst_country}", "${FORTINET.src_country}", 
"${FORTINET.dir_disp}", "${FORTINET.tran_disp}", "${FORTINET.tran_ip}", "${FORTINET.tran_port}", 
"${FORTINET.service}", "${FORTINET.proto}", "${FORTINET.duration}", "${FORTINET.sent}", 
"${FORTINET.rcvd}", "${FORTINET.sent_pkt}", "${FORTINET.rcvd_pkt}"));
};

destination d_mssql2 {
sql(type(mssql) host("x.x.x.x") port (1433) 
username("******") password("********") database("syslog-ng") 
table ("BMTHFWTRAFFICAccepted${R_DAY}${R_MONTH}${R_YEAR}") 
columns ("time varchar(16)", "devname varchar(50)", "device_id varchar(50", 
"log_id varchar(16)", "type varchar(16)", "subtype varchar(16)", "pri varchar(16)", 
"vd varchar(16)", "src varchar(16)", "src_port varchar(16)", "src_int varchar(16)", 
"dst varcar(16)", "dst_port varchar(16)", "dst_int varchar(16)", "sn varchar(16)", 
"statuc varchar(16)", "policyid varchar(16)", "dst_country varchar(255)", 
"src_country varchar(255)", "dir_disp varchar(16)", "tran_disp varchar(16)", 
"tran_ip varchar(16)", "tran_port varchar(16)", "service varchar(16)", "proto varchar(16)", 
"duration varchar(16)", "sent varchar(16)", "rcvd varchar(16)", "sent_pkt varchar(16)", 
"rcvd_pkt varchar(16)" 
values ("${FORTINET.time}", "${FORTINET.time}", "${FORTINET.devname}", "${FORTINET.device_id}", 
"${FORTINET.log_id}", "${FORTINET.type}", "${FORTINET.subtype}", "${FORTINET.pri}", 
"${FORTINET.vd}", "${FORTINET.src}", "${FORTINET.src_port}", "${FORTINET.src_int}", 
"${FORTINET.dst}", "${FORTINET.dst_port}", "${FORTINET.dst_int}", "${FORTINET.sn}", 
"${FORTINET.status}", "${FORTINET.policyid}", "${FORTINET.dst_country}", "${FORTINET.src_country}", 
"${FORTINET.dir_disp}", "${FORTINET.tran_disp}", "${FORTINET.tran_ip}", "${FORTINET.tran_port}", 
"${FORTINET.service}", "${FORTINET.proto}", "${FORTINET.duration}", "${FORTINET.sent}", 
"${FORTINET.rcvd}", "${FORTINET.sent_pkt}", "${FORTINET.rcvd_pkt}"));
};

filter f_fortinetaccept { match("accept" value("FORTINET.status") type("string")); };
filter f_fortinetreserverd { match("Reserved" value("FORTINET.src_country") type("string")); };


parser p_fortinetaccept {
csv-parser(columns("FORTINET.timecol", 
"FORTINET.time", "FORTINET.devnamecol", "FORTINET.devname", 
"FORTINET.device_idcol", "FORTINET.device_id", "FORTINET.log_idcol", "FORTINET.log_id", 
"FORTINET.typecol", "FORTINET.type", "FORTINET.subtypecol", "FORTINET.subtype", "FORTINET.pricol", 
"FORTINET.pri", "FORTINET.vdcol", "FORTINET.vd", "FORTINET.srccol", "FORTINET.src", 
"FORTINET.src_protcol", "FORTINET.src_prot", "FORTINET.src_intcol", "FORTINET.src_int", 
"FORTINET.dstcol", "FORTINET.dst", "FORTINET.dst_portcol", "FORTINET.dst_port", 
"FORTINET.dst_intcol", "FORTINET.dst_int", "FORTINET.sncol", "FORTINET.sn", 
"FORTINET.statuscol", "FORTINET.status", "FORTINET.policyidcol", "FORTINET.policyid", 
"FORTINET.dst_countrycol", "FORTINET.dst_country", "FORTINET.src_countrycol", 
"FORTINET.src_country", "FORTINET.dir_dispcol", "FORTINET.dir_disp", 
"FORTINET.tran_dispcol", "FORTINET.tran_disp", "FORTINET.tran_ipcol", "FORTINET.tran_ip", 
"FORTINET.tran_portcol", "FORTINET.tran_port", "FORTINET.servicecol", "FORTINET.service", 
"FORTINET.protocol", "FORTINET.proto", "FORTINET.durationcol", "FORTINET.duration", 
"FORTINET.sentcol", "FORTINET.sent", "FORTINET.rcvdcol", "FORTINET.rcvd", 
"FORTINET.sentpktcol", "FORTINET.sent_pkt", "FORTINET.rcvd_pktcol", "FORTINET.rcvd_pkt")
flags(escape-double-char,strip-whitespace)
delimiters("= ")
quote-pairs('""'));
};

log { source(s_net); parser(p_fortinetaccept); filter(f_fortinetaccept); destination(d_mssql);  };

log { source(s_net); parser(p_fortinetaccept); filter(f_fortinetreserved); destination(d_mssql2);  };
    
por petehall 24.01.2014 / 14:34

1 resposta

0

Vou em frente e tento responder sem ver seu arquivo de conf. Ao criar um novo destino, você precisa adicionar o destino e um log. Veja um exemplo de uma postagem no blog que escrevi:

destination d_tls {
    tcp("your.logzilla.server" port(1999)
    tls( ca_dir("/etc/syslog-ng/ssl/")) );
};

log {
    source(s_src);
    destination(d_tls);
};

Meu palpite é que você está perdendo a seção de log que vincula a origem e o destino juntos.

    
por Tom Damon 24.01.2014 / 19:43