Syslog-ng не пишет в 2 места назначения

Я настроил syslog-ng для входа в пункт назначения MSSQL, и все это работает хорошо. Однако, если я укажу второй пункт назначения (та же база данных, но другая таблица) с помощью отдельной команды log, которая использует другой фильтр для определения трафика, который я хочу в этой таблице, регистрация не будет работать.

Я предположил, что это связано с многопоточностью, поэтому я включил многопоточность, но все равно вижу то же самое.

Я использую Ubuntu 13.04 raring и версию 3.5.3 syslog-ng OSE.

Кто-нибудь еще видел эту проблему?

Спасибо, Пит

Спасибо за ответ, Том. Соответствующие разделы файла syslog-ng.conf находятся ниже. Я поместил и место назначения, и журнал для каждой таблицы, в которую я хочу данные. На данный момент это тест, поэтому парсеры одинаковы, но я пытаюсь разделить трафик, так как парсеры будут разными.

Я обнаружил, что если я запускаю syslog-ng, иногда я получаю данные, отправляемые в одну из таблиц базы данных, но не в другую, или ни один из них не отправляет данные. Я запустил профиль SQL, и оператор вставки не виден, поэтому это не проблема SQL.

Другие вещи, которые могут оказать влияние, сервер syslog-ng работает на Hyper-V, но я выделил ему 4 логических процессора, но я думаю, что если каждое назначение SQL использует отдельный поток, Ubuntu может не обрабатывать виртуализацию и не представлять процессоры приложению.

Ваши мысли по этому поводу будут оценены.

Соответствующие разделы файла .conf ниже:

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);  };
0
задан 25 January 2014 в 17:59

1 ответ

Я пойду дальше и попытаюсь ответить, не увидев ваш файл настроек. Когда вы создаете новый пункт назначения, вам нужно добавить пункт назначения и журнал. Вот пример из блога , который я написал:

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

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

Я думаю, вы пропустили раздел журнала, связывающий источник и место назначения.

0
ответ дан 25 January 2014 в 17:59

Другие вопросы по тегам:

Похожие вопросы: