Я настроил 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); };
Я пойду дальше и попытаюсь ответить, не увидев ваш файл настроек. Когда вы создаете новый пункт назначения, вам нужно добавить пункт назначения и журнал. Вот пример из блога , который я написал:
destination d_tls {
tcp("your.logzilla.server" port(1999)
tls( ca_dir("/etc/syslog-ng/ssl/")) );
};
log {
source(s_src);
destination(d_tls);
};
Я думаю, вы пропустили раздел журнала, связывающий источник и место назначения.