<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body ><div>Thanks. Seems obvious now.&nbsp;</div><div>The pdbtool test *was* parsing but syslog-ng was not...</div><div>Again *doh* :-)</div><div><br></div><div><br></div><div><br></div><div><div style="font-size:75%;color:#575757">Sent from my Verizon Wireless 4G LTE Smartphone</div></div> <br><br><br>-------- Original message --------<br>From: Evan Rempel &lt;erempel@uvic.ca&gt; <br>Date: 01/10/2014  2:03 PM  (GMT-05:00) <br>To: syslog-ng@lists.balabit.hu <br>Subject: Re: [syslog-ng] how to use macros from patterndb in syslog-ng.conf <br> <br><br>With no-parse you will not get a program name, which will prevent the pattern from matching in patterndb<br><br>Evan.<br><br>On 01/10/2014 10:59 AM, jrhendri@roadrunner.com wrote:<br>&gt; DOH!!!<br>&gt; quoth the bard Homer Simpson...<br>&gt;<br>&gt; in my testing, I was appending syslog messages to "testfile" like this:<br>&gt; head -10 user.info.2014.01.08 &gt; testfile<br>&gt;<br>&gt; and using "flags(no-parse)" on that file source which looks like this:<br>&gt;<br>&gt; [n0142566@VDDP13E-0D6B677 ~]$ cat testfile<br>&gt; Jan&nbsp; 8 20:00:00 10.192.225.12 RT_FLOW: RT_FLOW_SESSION_CREATE: session created 146.150.19.13/46188-&gt;10.178.128.38/11000 None 146.150.19.13/46188-&gt;10.178.128.38/11000 None None 6 3798 Int_NonProd_CORE_Liberty Int_NonProd_CORE_Secure 180869281 N/A(N/A) reth0.3931 UNKNOWN UNKNOWN UNKNOWN<br>&gt; Jan&nbsp; 8 20:00:00 10.192.225.12 RT_FLOW: RT_FLOW_SESSION_CLOSE: session closed TCP RST: 10.178.200.127/43833-&gt;10.181.72.46/2059 junos-tcp-any 10.178.200.127/43833-&gt;10.181.72.46/2059 None None 6 3384 Int_NonProd_CORE_Secure Int_NonProd_CORE_Liberty 180781521 2(100) 1(60) 3 UNKNOWN UNKNOWN N/A(N/A) reth0.3930 UNKNOWN<br>&gt; [n0142566@VDDP13E-0D6B677 ~]$<br>&gt;<br>&gt;<br>&gt;<br>&gt; not quite sure how / why - but that was breaking this even though this worked:<br>&gt;<br>&gt; [n0142566@VDDP13E-0D6B677 ~]$ pdbtool match -f testfile -p ./log/juniper_db.xml<br>&gt; HOST=10.192.225.12<br>&gt; MESSAGE=RT_FLOW_SESSION_CREATE: session created 146.150.19.13/46188-&gt;10.178.128.38/11000 None 146.150.19.13/46188-&gt;10.178.128.38/11000 None None 6 3798 Int_NonProd_CORE_Liberty Int_NonProd_CORE_Secure 180869281 N/A(N/A) reth0.3931 UNKNOWN UNKNOWN UNKNOWN<br>&gt; PROGRAM=RT_FLOW<br>&gt; LEGACY_MSGHDR=RT_FLOW:<br>&gt; .classifier.class=system<br>&gt; .classifier.rule_id=2a270520-2ff7-7048-a088-b03d5b3b5f7d<br>&gt; J.MSG.SRC=146.150.19.13<br>&gt; J.MSG.SPORT=46188<br>&gt; J.MSG.DST=10.178.128.38<br>&gt; J.MSG.DPORT=11000<br>&gt; TAGS=.classifier.system<br>&gt;<br>&gt; HOST=10.192.225.12<br>&gt; MESSAGE=RT_FLOW_SESSION_CLOSE: session closed TCP RST: 10.178.200.127/43833-&gt;10.181.72.46/2059 junos-tcp-any 10.178.200.127/43833-&gt;10.181.72.46/2059 None None 6 3384 Int_NonProd_CORE_Secure Int_NonProd_CORE_Liberty 180781521 2(100) 1(60) 3 UNKNOWN UNKNOWN N/A(N/A) reth0.3930 UNKNOWN<br>&gt; PROGRAM=RT_FLOW<br>&gt; LEGACY_MSGHDR=RT_FLOW:<br>&gt; .classifier.class=system<br>&gt; .classifier.rule_id=2a270520-2ff7-7048-a088-b03d5b3b5f7d<br>&gt; J.MSG.CLOSE.REASON=TCP RST<br>&gt; J.MSG.SRC=10.178.200.127<br>&gt; J.MSG.SPORT=43833<br>&gt; J.MSG.DST=10.181.72.46<br>&gt; J.MSG.DPORT=2059<br>&gt; TAGS=.classifier.system<br>&gt;<br>&gt;<br>&gt; After I took out flags(no-parse) on the file source, it works as (I) expected ...<br>&gt;<br>&gt; I am still curious what I overlooked - misunderstood. But it appears to be related to how the messages were parsed on the source end.<br>&gt;<br>&gt; Thanks again!<br>&gt; Jim<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; ---- jrhendri@roadrunner.com wrote:<br>&gt;&gt; this seems like a simple thing to do, but a few days of searching and some hours of testing has not shown me the answer.<br>&gt;&gt;<br>&gt;&gt; Essentially I want to parse log events and output select fields, so I have created a basic patterndb xml file.<br>&gt;&gt;<br>&gt;&gt; &lt;patterndb version='3' pub_date='2014-01-09'&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp; &lt;ruleset name='patternize' id='6cb77f11-6c9b-ee4e-9f62-b97224d4384c'&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rules&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rule id='2a270520-2ff7-7048-a088-b03d5b3b5f7d' class='system' provider='patternize'&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- support: 1 --&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;patterns&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pattern&gt;RT_FLOW_SESSION_CLOSE: session closed @ESTRING:J.MSG.CLOSE.REASON::@ @IPv4:J.MSG.SRC@/@NUMBER:J.MSG.SPORT@-&amp;gt;@IPv4:J.MSG.DST@/@NUMBER:J.MSG.DPORT@ &lt;/pattern&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pattern&gt;RT_FLOW_SESSION_CREATE: session created @IPv4:J.MSG.SRC@/@NUMBER:J.MSG.SPORT@-&amp;gt;@IPv4:J.MSG.DST@/@NUMBER:J.MSG.DPORT@ &lt;/pattern&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/patterns&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/rule&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/rules&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp; &lt;/ruleset&gt;<br>&gt;&gt; &lt;/patterndb&gt;<br>&gt;&gt;<br>&gt;&gt; This tests fine using pdbtool on sample data in a file. (cut from a real syslog file of logs)<br>&gt;&gt; Inside syslog-ng.conf I want to use the parsed values as a template:<br>&gt;&gt; source s_testfile {<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file("/home/n0142566/testfile"<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flags(no-parse) );<br>&gt;&gt; };<br>&gt;&gt;<br>&gt;&gt; filter f_juniper_session_create {<br>&gt;&gt;&nbsp;&nbsp;&nbsp; match("RT_FLOW_SESSION_CREATE" value( "MESSAGE" ) );<br>&gt;&gt; };<br>&gt;&gt; filter f_juniper_session_close {<br>&gt;&gt;&nbsp;&nbsp;&nbsp; match("RT_FLOW_SESSION_CLOSE" value( "MESSAGE" ) );<br>&gt;&gt; };<br>&gt;&gt;<br>&gt;&gt; parser juniper_db {<br>&gt;&gt;&nbsp;&nbsp;&nbsp; db-parser (<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file("/home/n0142566/log/juniper_db.xml")<br>&gt;&gt;&nbsp;&nbsp;&nbsp; );<br>&gt;&gt; };<br>&gt;&gt;<br>&gt;&gt; destination d_local_create {<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file("/home/n0142566/log/messages-create-$HOST"<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; template("${J.MSG.SRC}, ${J.MSG.SPORT}, ${J.MSG.DST}, ${J.MSG.DPORT}\n") );<br>&gt;&gt; };<br>&gt;&gt;<br>&gt;&gt; destination d_local_close {<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file("/home/n0142566/log/messages-close-$HOST"<br>&gt;&gt; #!#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; template("${J.MSG.SRC}, ${J.MSG.SPORT}, ${J.MSG.DST}, ${J.MSG.DPORT}, ${J.MSG.CLOSE.REASON}\n") );<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; template("${J.MSG}\n") );<br>&gt;&gt; };<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; log {<br>&gt;&gt;&nbsp;&nbsp;&nbsp; source(s_testfile);<br>&gt;&gt;&nbsp;&nbsp;&nbsp; filter(f_juniper_session_create);<br>&gt;&gt;&nbsp;&nbsp;&nbsp; parser(juniper_db);<br>&gt;&gt;&nbsp;&nbsp;&nbsp; destination(d_local_create);<br>&gt;&gt; };<br>&gt;&gt; log {<br>&gt;&gt;&nbsp;&nbsp;&nbsp; source(s_testfile);<br>&gt;&gt;&nbsp;&nbsp;&nbsp; filter(f_juniper_session_close);<br>&gt;&gt;&nbsp;&nbsp;&nbsp; parser(juniper_db);<br>&gt;&gt;&nbsp;&nbsp;&nbsp; destination(d_local_close);<br>&gt;&gt; };<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; But when I run syslog-ng and append events to "testfile" the output is simply comma separated blanks :-(<br>&gt;&gt;<br>&gt;&gt; I am quite sure I am missing something *extremely* basic - but at this point I thought I would ask clearer minds for help!!<br>&gt;&gt;<br>&gt;&gt; Thanks,<br><br>______________________________________________________________________________<br>Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng<br>Documentation: http://www.balabit.com/support/documentation/?product=syslog-ng<br>FAQ: http://www.balabit.com/wiki/syslog-ng-faq<br><br></body>