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); };