<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-24916965</id><updated>2011-10-05T12:54:58.715+02:00</updated><category term='regex'/><category term='technology'/><category term='tproxy'/><category term='sql'/><category term='pcre'/><category term='IETF'/><category term='kernel'/><category term='sftp'/><category term='patterndb'/><category term='syslog-ng'/><category term='balabit'/><category term='scb'/><category term='ssh'/><category term='event'/><category term='Zorp'/><category term='oracle'/><category term='private'/><title type='text'>Bazsi's blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>100</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24916965.post-2242488808788576810</id><published>2010-08-12T15:23:00.003+02:00</published><updated>2010-08-13T11:12:44.333+02:00</updated><title type='text'>blog moved</title><content type='html'>I'm moving this blog to a wordpress instance deployed on our company webserver. The URL should be unchanged but the RSS/Atom feeds have changed, so please update your bookmarks.&lt;br /&gt;&lt;br /&gt;Thanks and sorry for the confusion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2242488808788576810?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2242488808788576810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2242488808788576810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2242488808788576810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2242488808788576810'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/08/blog-moved.html' title='blog moved'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8146705219752682322</id><published>2010-08-08T13:23:00.004+02:00</published><updated>2010-08-08T13:28:47.734+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>LWN: syslog-ng rotten to the (Open) Core?</title><content type='html'>This was first posted as a comment under an &lt;a href="http://lwn.net/Articles/396576/"&gt;article on lwn.net,&lt;/a&gt; but I thought it was important enough to post it here for others not reading lwn. Please go ahead and read the original article which is about the "Open Core" business model and its problems from the Free Software community point of view.&lt;br /&gt;&lt;br /&gt;A commenter thought that syslog-ng was an example, which only exists as a marketing tool for the company's commercial offering. Anyway, here's my post:&lt;br /&gt;&lt;br /&gt;First of all, I want to make it clear that I'm biased on the syslog-ng case, but still wanted to express my opinion here. I'm biased as I'm the primary author of syslog-ng.&lt;br /&gt;&lt;br /&gt;I think syslog-ng is a completely different case from the one described by Neary. The GPL version is not crippleware, it was never published for marketing purposes only and for the majority of syslog-ng's existence only the Open Source stuff existed. The Premium Edition is only about 3 years old and syslog-ng started in 1998.&lt;br /&gt;&lt;br /&gt;We never removed features from the OSE version, the Premium Edition only included _additional_ features, and a lot of those are already available in the OSE.&lt;br /&gt;&lt;br /&gt;Some examples:&lt;br /&gt;  * TLS support (became available in 3.0, almost 2 years ago)&lt;br /&gt;  * SQL destination (became available in 2.1, 2.5 years ago)&lt;br /&gt;  * performance improvements (3.0)&lt;br /&gt;  * etc.&lt;br /&gt;&lt;br /&gt;In the other direction, we usually receive bugfixes and it is a pure technical reason that we used to require copyright assignment: I wanted to keep the two branches as close as possible (which if not done is the reason #1 why Open Core products become crippleware fast). _And_ since we heavily invested in automatic testing and our customers report bugs directly to us, we fix way more bugs in the OSE version than the community.&lt;br /&gt;&lt;br /&gt;But anyway, I didn't think that the dual license model was so problematic at the time we made this decision 3 years ago. Our efforts have never been "Rotten to the Open Core". If you don't believe that, check out the git repository or read the mailing list archive and see it yourself.&lt;br /&gt;&lt;br /&gt;And this whole mess is the past, OSE 3.2 has been relicensed, and it is true that we're going to publish non-free plugins, but anyone else is welcome to join and do the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8146705219752682322?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8146705219752682322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8146705219752682322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8146705219752682322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8146705219752682322'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/08/lwn-syslog-ng-rotten-to-open-core.html' title='LWN: syslog-ng rotten to the (Open) Core?'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2895842763858250625</id><published>2010-08-07T17:58:00.004+02:00</published><updated>2010-08-07T20:22:18.108+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng 3.2alpha2 released</title><content type='html'>I've just uploaded syslog-ng 3.2alpha2 to the &lt;a href="http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.2alpha2/"&gt;release directory&lt;/a&gt;. The last alpha release didn't compile on all supported platforms and the automatic test-suite was disabled, because it only worked if syslog-ng got installed first.&lt;br /&gt;&lt;br /&gt;These obstacles have been overcome and together with some fixes and a couple of new features, 3.2alpha2 is now available. I've also forward ported all bugfixes from syslog-ng 3.1.2.&lt;br /&gt;&lt;br /&gt;For those who are starting to experiment with the 3.2 branch, here's the list of new features compared to 3.1. Those who tried 3.2alpha1, the list of changes compared to 3.2alpha1 is at the end of this post.&lt;br /&gt;&lt;br /&gt;Since the documentation of syslog-ng is not yet up-to-date with the new features introduced, I've tried to also include URLs for the best known descriptions. The references may not be 100% accurate, but should give anyone interested an idea how to start experimenting.&lt;br /&gt;&lt;br /&gt;Also, please note that although this is an alpha release, the bulk of the changes are in the configuration parser, so once your configuration was parsed properly and syslog-ng starts up, an almost unchanged code is processing it.  This means that this release should be good enough to start playing with.  And feedback about what kind of syslog-ng.conf parsing errors you encounter on real-life configuration files is more than welcome.&lt;br /&gt;&lt;br /&gt;Code quality &amp;amp; functionality wise, this could be a beta release, I only expect "procedural" changes, like cleaning up the plugin names, which wouldn't be nice to do in a beta release (though not unheard of :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;New features in 3.2:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Plugins: the new architecture replaces the old monolithic one, all syslog-ng functionality is loaded from external plugins when needed. It is possible to write plugins to extend syslog-ng functionality in the following areas: sources, destinations, filter expression, parsers, rewrite ops, message format.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://bazsi.blogs.balabit.com/2010/04/syslog-ng-32-changes.html"&gt;http://bazsi.blogs.balabit.com/2010/04/syslog-ng-32-changes.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bazsi.blogs.balabit.com/2010/07/syslog-ng-contributions-redefined.html"&gt;http://bazsi.blogs.balabit.com/2010/07/syslog-ng-contributions-redefined.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;The framework for a "syslog-ng configuration library" (aka SCL) a collection of configuration snippets installed along syslog-ng, simplifying the authoring of syslog-ng configuration files.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-3.2.git;a=commit;h=287993339599deac0442e26355c600b5aee63583"&gt;http://git.balabit.hu/?p=bazsi/syslog-ng-3.2.git;a=commit;h=287993339599deac0442e26355c600b5aee63583&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bazsi.blogs.balabit.com/2010/07/syslog-ng-contributions-redefined.html"&gt;http://bazsi.blogs.balabit.com/2010/07/syslog-ng-contributions-redefined.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;pdbtool match is now able to read a file containing syslog messages and apply patterndb and a filter expression on the contents.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://bazsi.blogs.balabit.com/2010/07/patterndb-grep-on-steroids.html"&gt;http://bazsi.blogs.balabit.com/2010/07/patterndb-grep-on-steroids.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;pdbtool test is now able to perform pattern testing automatically based on the supplied example log message.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://marci.blogs.balabit.com/2010/07/pdbtool-test-and-pattern-database.html"&gt;http://marci.blogs.balabit.com/2010/07/pdbtool-test-and-pattern-database.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Persistent state containing the current file position for file sources is now continously updated during runtime, instead of updating it only at exit, which makes it much more reliable in case syslog-ng doesn't terminate normally.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Better syntax error reporting in the configuration file.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://bazsi.blogs.balabit.com/2010/04/syslog-ng-32-changes.html"&gt;http://bazsi.blogs.balabit.com/2010/04/syslog-ng-32-changes.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Support for reusable configuration snippets, similar to macros with parameters, named "blocks".&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://bazsi.blogs.balabit.com/2010/04/syslog-ng-32-opened-experimental-blocks.html"&gt;http://bazsi.blogs.balabit.com/2010/04/syslog-ng-32-opened-experimental-blocks.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Added a confgen plugin that includes the output of a program into the configuration file, making it possible to generate configuration file snippets dynamically.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-3.2.git;a=commit;h=5248ef6c49ff3af0b3c896448360073606c9c7d7"&gt;http://git.balabit.hu/?p=bazsi/syslog-ng-3.2.git;a=commit;h=5248ef6c49ff3af0b3c896448360073606c9c7d7&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Support for BSD-style process accounting logs via the pacct() source driver defined in by SCL and the underlying pacctformat plugin.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://bazsi.blogs.balabit.com/2010/07/syslog-ng-and-process-accounting.html"&gt;http://bazsi.blogs.balabit.com/2010/07/syslog-ng-and-process-accounting.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Support for explicit COMMITs in the SQL driver, this speeds up SQL INSERT rate significantly if flush_lines() is non-zero.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://bazsi.blogs.balabit.com/2010/07/syslog-ng-and-process-accounting.html"&gt;http://bazsi.blogs.balabit.com/2010/04/explicit-transaction-support-in-sql.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;It is now possible to supply a filter to rewrite expressions and only apply the rewrite rule in case the filter matches.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://bazsi.blogs.balabit.com/2010/07/syslog-ng-and-process-accounting.html"&gt;https://lists.balabit.hu/pipermail/syslog-ng/2010-July/014565.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;It is now possible to use multiple parser expressions in a single parser object, similar to rewrite rules.&lt;/li&gt;&lt;li&gt;Added support for using the include statement from anywhere in the configuration file, instead of only at top-level. Also introduced syslog-ng "global values" that can be defined and the substituted anywhere in the configuration file.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-3.2.git;a=commit;h=1203267c465256c99e622edf11e226301170f1c7"&gt;http://git.balabit.hu/?p=bazsi/syslog-ng-3.2.git;a=commit;h=1203267c465256c99e622edf11e226301170f1c7&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-3.2.git;a=commit;h=52098762f27cde059e8b8ecda67691df85364e6d"&gt;http://git.balabit.hu/?p=bazsi/syslog-ng-3.2.git;a=commit;h=52098762f27cde059e8b8ecda67691df85364e6d&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Default configuration file supplied as part of SCL.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Incompatible changes:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;syslog-ng traditionally expected an optional hostname field even when a syslog message is received on a local transport (e.g. /dev/log).  However no UNIX version is known to include this field. This caused problems when the application creating the log message has a space in its program name field.  This behaviour has been changed for the unix-stream/unix-dgram/pipe drivers if the config version is 3.2 and can be restored by using an explicit 'expect-hostname' flag for the specific source.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Changes since 3.2alpha1:&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Now compiles on all platforms and the unit/functional tests also run. (tested: AIX, HP-UX, Solaris, FreeBSD, Linux, Tru64)&lt;/li&gt;&lt;li&gt;Fixed pdbtool match --debug-pattern output for ESTRING parsers.&lt;/li&gt;&lt;li&gt;Fixed a possible memory leak in the lexer, which would accumulate in case SIGHUPs.&lt;/li&gt;&lt;li&gt;Fixed Solaris STREAMS device support.&lt;/li&gt;&lt;li&gt;Forward ported all bugfixes from syslog-ng OSE 3.0 &amp;amp; 3.1&lt;/li&gt;&lt;li&gt;Disable process accounting module by default as it doesn't compile on non-Linux platforms.&lt;/li&gt;&lt;li&gt;Added "pdbtool match --file" option to read and parse an existing logfile.&lt;/li&gt;&lt;li&gt;Added "pdbtool test" to check the log samples in the patterndb file.&lt;/li&gt;&lt;li&gt;Added "dont-create-tables" flag for the SQL destination to inhibit automatic table creation.&lt;/li&gt;&lt;li&gt;Added "condition()" support for rewrite expressions, which makes it possible to skip rewrite rules that do not match a filter expression.&lt;/li&gt;&lt;li&gt;Added "--module-path" command line option to control where modules are loaded from from the command line.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;Happy logging!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2895842763858250625?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2895842763858250625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2895842763858250625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2895842763858250625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2895842763858250625'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/08/syslog-ng-32alpha2-released.html' title='syslog-ng 3.2alpha2 released'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-7284166986534412056</id><published>2010-08-06T20:26:00.002+02:00</published><updated>2010-08-06T21:03:47.893+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><category scheme='http://www.blogger.com/atom/ns#' term='patterndb'/><title type='text'>syslog-ng name-value pair naming</title><content type='html'>I was giving a lot of thought recently to the topic of naming name-value pairs in syslog-ng. Until now the only &lt;a href="http://www.balabit.com/dl/html/syslog-ng-pe-v3.2-guide-admin-en.html/configuring_parsers.html"&gt;documented rule&lt;/a&gt; is stating somewhat vaguely that whenever you use a parser you should choose a name that has at least one dot in it, and this dot must not be the initial character. This means that names like MSG or .SDATA.meta.sequenceId are reserved for syslog-ng, and APACHE.CLIENT_IP is reserved for users.&lt;br /&gt;&lt;br /&gt;However things became more complex with syslog-ng OSE 3.2. Let's see what sources generate name-value pairs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;traditional macros (e.g. $DATE); these are not name-value pairs per-se, but behave much like them, except that they are read-only&lt;/li&gt;&lt;li&gt;syslog message fields (e.g. $MSG) if the message is coming from a syslog source&lt;/li&gt;&lt;li&gt;filters whenever the 'store-matches' flag is set and the regexp contains groups&lt;/li&gt;&lt;li&gt;rewrite rules, whenever the rewrite rule specifies a thus far unknown name-value pair, e.g. set("something" value("name-value.pair"));&lt;/li&gt;&lt;li&gt;and of course parsers when you tell syslog-ng to parse an input as a CSV, or use db-parser together with the patterns produced by the &lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-patterndb.git;a=blob;f=README.txt;hb=HEAD"&gt;patterndb project&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;The latest stuff generating name-value pairs is the support for &lt;a href="http://bazsi.blogs.balabit.com/2010/07/syslog-ng-and-process-accounting.html"&gt;process accounting logs&lt;/a&gt;, in this case even the syslog related fields are missing and only things like "pacct.ac_comm" (to contain the program name) are defined.&lt;br /&gt;&lt;br /&gt;So I was thinking whether it should be "pacct.ac_comm" or ".pacct.ac_comm". With the quoted rule it should be simple: it is generated by syslog-ng itself, thus it should be in the syslog-ng namespace and should start with a dot. However in the era of &lt;a href="http://bazsi.blogs.balabit.com/2010/07/syslog-ng-contributions-redefined.html"&gt;syslog-ng plugins&lt;/a&gt;, what consists of syslog-ng at all?&lt;br /&gt;&lt;br /&gt;First, I wanted to use "pacct.ac_comm" (e.g. without a dot), because I liked this name better. I was trying to explain myself why it would not violate the rule above. The explanation I had for myself was: I'm going to "register" names such as this in the patterndb &lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-patterndb.git;a=blob;f=SCHEMAS.txt;hb=HEAD"&gt;SCHEMAS.txt file&lt;/a&gt;. With this - not yet published - explanation, I've committed a patch to convert the &lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-3.2.git;a=commit;h=00cc47a0d34fcabc1e38e26882866f486fa7eb9e"&gt;pacctformat plugin&lt;/a&gt; to use a dotless prefix.&lt;br /&gt;&lt;br /&gt;Next, I was figuring that it is true that process accounting creates name-value pairs without going through patternization, but I've felt, that nothing ensures that these name-value pairs would be directly usable, when trying to analyse the logs. The patterndb concept uses tags and schemas to convert the incoming unstructured data into a consistent structure. However, pacct may not completely match what the user needs. And, in the future, when SNMP traps or SQL table polling are going to be supported, it is going to be even more true: these name-value pairs may need a conversion: from the SNMP/pacct structure to the patterndb schema described structure in order to handle these message sources consistently with regular syslog (and to make it easy to correllate these).&lt;br /&gt;&lt;br /&gt;So at the end, I've &lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-3.2.git;a=commit;h=00cc47a0d34fcabc1e38e26882866f486fa7eb9e"&gt;committed another patch&lt;/a&gt;, this time going back to ".pacct" as a prefix and leaving the original naming rule intact. The "pacct" prefix is up to the users to use, they may want the same information in a "pacct" schema, but that may come from data not directly tied from process accounting (e.g. from syslog messages).&lt;br /&gt;&lt;br /&gt;So this post is about doing nothing with regards to the naming policy, but I thought it'd be important to shed a light behind the scenes. Giving such decisions enough thought and coming up a with a long-term plan makes our lives much easier in the future.&lt;br /&gt;&lt;br /&gt;This post may be a bit more involved than the others, but feel free to ask me to elaborate, if you are interested.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-7284166986534412056?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/7284166986534412056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=7284166986534412056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7284166986534412056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7284166986534412056'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/08/syslog-ng-name-value-pair-naming.html' title='syslog-ng name-value pair naming'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8999299172036910031</id><published>2010-08-02T16:57:00.002+02:00</published><updated>2010-08-02T17:03:56.320+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng &amp; distributions</title><content type='html'>syslog-ng 1.6.x and 2.0.x versions had lived quite long. A lot of distributions used these versions and never upgraded to the newer ones.&lt;br /&gt;&lt;br /&gt;This has changed recently, Peter Czanik was busy to help maintainers get to the latest versions.&lt;br /&gt;&lt;br /&gt;Already available in the latest release:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;openSUSE&lt;/li&gt;&lt;li&gt;FreeBSD ports&lt;/li&gt;&lt;li&gt;Mandriva&lt;/li&gt;&lt;li&gt;Gentoo portage&lt;/li&gt;&lt;li&gt;OpenBSD ports&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In development branches:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Debian&lt;/li&gt;&lt;li&gt;Ubuntu&lt;/li&gt;&lt;li&gt;Fedora&lt;/li&gt;&lt;/ul&gt;These all carry 3.1.1, which is quite recent (and a successful release too). There are some fixes accumulated in the git tree though, so I hope to get 3.1.2 out of the door soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8999299172036910031?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8999299172036910031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8999299172036910031' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8999299172036910031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8999299172036910031'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/08/syslog-ng-distributions.html' title='syslog-ng &amp; distributions'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-4038696774423390604</id><published>2010-07-29T10:20:00.003+02:00</published><updated>2010-07-29T10:33:12.840+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng and process accounting</title><content type='html'>In &lt;a href="http://bazsi.blogs.balabit.com/2010/07/syslog-ng-contributions-redefined.html"&gt;one of my previous posts&lt;/a&gt;, I've mentioned that syslog-ng is not for syslog anymore, we aim to support other log formats too, preferably those that have some kind of structure.&lt;br /&gt;&lt;br /&gt;In fact syslog-ng is trying to convert all incoming messages (be them unstructured syslog messages, process accounting messages or SNMP traps) into the same, common format:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;name-value pairs&lt;/li&gt;&lt;li&gt;tag or tags that connects the event to one of the &lt;a href="http://bazsi.blogs.balabit.com/2010/06/patterndb-project.html"&gt;patterndb schemas&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;This information coming in from different sources can be stored and processed with the same infrastructure. Correllation between SNMP traps and syslog messages or netflow records should be possible.&lt;br /&gt;&lt;br /&gt;I probably don't need to mention, that we use patterndb to extract information from syslog messages. But structured information sources contain name-value pairs in the first place, so why not use them natively?&lt;br /&gt;&lt;br /&gt;This is what the experimental process accounting feature of syslog-ng demonstrates. With this module, syslog-ng is able to read the process accounting file produced by the Linux kernel directly (this is currently Linux-only, but should be easy to port to other platforms) and produce a set of name-value pairs mimicing the structure of the accounting record.&lt;br /&gt;&lt;br /&gt;This is how it works:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the Linux kernel writes an accounting record to /var/log/account/pacct file (distro dependant though) whenever a process terminates and writes process related information to this record (exit code, execution time, etc)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;syslog-ng uses the file() source driver, and periodically polls this file for changes (once per second by default)&lt;/li&gt;&lt;li&gt;instead of processing this as a plain text file, the "pacctformat" plugin tells syslog-ng to fetch binary records&lt;/li&gt;&lt;li&gt;the pacctformat plugin then transforms account record members into syslog-ng name-value pairs&lt;/li&gt;&lt;/ul&gt;Each name-value pair produced by the pacct plugin has a prefix of "pacct", and the members are described in the &lt;linux/acct.h&gt; header file or in acct(5) manual page.&lt;br /&gt;&lt;br /&gt;In order to try this feature, you need to tell syslog-ng to compile the "pacctformat" plugin by passing the --enable-pacct command line option to configure.&lt;br /&gt;&lt;br /&gt;Also, there's support for the pacct module in the SCL, so in order to fetch process accounting records, you only need a very small configuration file:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;@version: 3.2&lt;br /&gt;@include "scl.conf"&lt;br /&gt;&lt;br /&gt;source s_pacct {&lt;br /&gt;    pacct();&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;log { source(s_pacct); destination(...); };&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;After that, you only need to enable Linux accounting by issuing an accton command.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;That's all.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-4038696774423390604?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/4038696774423390604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=4038696774423390604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4038696774423390604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4038696774423390604'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/07/syslog-ng-and-process-accounting.html' title='syslog-ng and process accounting'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8027414128532497454</id><published>2010-07-26T18:13:00.002+02:00</published><updated>2010-07-26T18:19:15.351+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><category scheme='http://www.blogger.com/atom/ns#' term='patterndb'/><title type='text'>patterndb status update</title><content type='html'>I thought I'd post a quick update on the patterndb project status. Our first aim was to draft a basic policy which governs how patterns should be created. This is available in the patterndb git repository as a README.txt file.&lt;br /&gt;&lt;br /&gt;Although not completely finished, I feel the current description is enough for some basic work to start, to gather more experience. Here is the current version:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-patterndb.git;a=blob;f=README.txt;hb=HEAD"&gt;http://git.balabit.hu/?p=bazsi/syslog-ng-patterndb.git;a=blob;f=README.txt;hb=HEAD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also, after discussing the policy we've set a target to cover login/logout events from all parts of a generic Linux system. Currently sshd is quite nicely covered, su is coming along and I still have some submitted log samples that need marking up.&lt;br /&gt;&lt;br /&gt;With the sshd/su patterns a quite nice percentage of my "auth.log" file is covered and using pdbtool "&lt;a href="http://bazsi.blogs.balabit.com/2010/07/patterndb-grep-on-steroids.html"&gt;grep on steroids&lt;/a&gt;" feature, the marked up patterns are already quite useful.&lt;br /&gt;&lt;br /&gt;Further log samples and a hand in helping me out to mark up the patterns would be appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8027414128532497454?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8027414128532497454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8027414128532497454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8027414128532497454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8027414128532497454'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/07/patterndb-status-update.html' title='patterndb status update'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-5388337592997413384</id><published>2010-07-20T11:45:00.004+02:00</published><updated>2010-07-20T11:56:55.781+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><category scheme='http://www.blogger.com/atom/ns#' term='patterndb'/><title type='text'>patterndb: grep on steroids</title><content type='html'>You may have heard of my last project to collect log samples from various applications, in order to convert log data from free-form human readable strings into structured information.&lt;br /&gt;&lt;br /&gt;The first round to collect login/logout messages from sshd is now complete.&lt;br /&gt;&lt;br /&gt;You could ask: ok, but what is the immediate benefit? You supposedly have a lot of unprocessed log files, and syslog-ng's db-parser() has not been used to process them, thus they are stored as good-old plain text files.&lt;br /&gt;&lt;br /&gt;I spent a couple of hours to add a "grep"-like functionality to pdbtool which makes it easy to process already existing log files, giving you immediate benefit for each and every sample added to patterndb.&lt;br /&gt;&lt;br /&gt;For example, if you are interested in login failure events, you could say:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;zcat logfile.gz | pdbtool match -p access/sshd.pdb \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    --file - \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     --filter 'tags("usracct") and match('REJECT' type(string) value("secevt.verdict"));' \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    --template '${usracct.type},${secevt.verdict},${usracct.username}\n'&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What the command above does is the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;reads a compressed logfile from logfile.gz&lt;/li&gt;&lt;li&gt;tells pdbtool to use access/sshd.pdb (in the patterndb git repo) as its pattern database file&lt;/li&gt;&lt;li&gt;tells pdbtool to read its stdin as a logfile, and&lt;br /&gt;&lt;/li&gt;&lt;li&gt;apply the db-parser() for each log message&lt;/li&gt;&lt;li&gt;apply the syslog-ng filter specified above&lt;/li&gt;&lt;li&gt;and print matching messages using the template also specified above&lt;/li&gt;&lt;/ul&gt;As a combination, it results in a CSV file, containing login failure records found in the logfile. Also please note that as long there's a pattern in the pdb file, it doesn't really matter how that originally looked like, the fact that ssh can use 3-5 different messages for the same meaning is hidden nicely under the hood.&lt;br /&gt;&lt;br /&gt;And imagine we'd have patterns for all common applications running on our computers: this would mean that the same command above would produce login-failure reports independently from the application/OS combination being used.&lt;br /&gt;&lt;br /&gt;Try that with grep. :)&lt;br /&gt;&lt;br /&gt;This pdbtool is in the OSE 3.2 tree, clone the tree from: git://git.balabit.hu/bazsi/syslog-ng-3.2.git&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-5388337592997413384?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/5388337592997413384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=5388337592997413384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5388337592997413384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5388337592997413384'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/07/patterndb-grep-on-steroids.html' title='patterndb: grep on steroids'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-5082636404077837480</id><published>2010-07-20T11:27:00.002+02:00</published><updated>2010-07-20T11:41:59.418+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng OSE 3.2 caveats</title><content type='html'>Starting with syslog-ng OSE 3.2, syslog-ng became plugin based, which has some consequences that even experienced syslog-ng users may stumble into.&lt;br /&gt;&lt;br /&gt;The most obvious one, is that syslog-ng now produces a series of .so files loaded at runtime, instead of being a monolithic executable. If a given .so is not not or not loaded, some of the functionality may be missing. This usually manifests itself by a syntax error when parsing the configuration file.&lt;br /&gt;&lt;br /&gt;Second: if you compile syslog-ng from source, the unit/functional test programs also want to load plugins, and they try to do that from the install directory. This means that you first have to install syslog-ng using "make install" before running the testsuite. This is not an ideal solution, but should work for now.&lt;br /&gt;&lt;br /&gt;Plugins are loaded from $prefix/lib/syslog-ng by default, however this can be changed using the `module-path` global, which contains the list of directories where syslog-ng should look for modules. You can change this using the syntax:&lt;br /&gt;&lt;br /&gt;@define module-path `module-path`:/usr/local/lib/syslog-ng-plugins&lt;br /&gt;&lt;br /&gt;I think that's it for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-5082636404077837480?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/5082636404077837480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=5082636404077837480' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5082636404077837480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5082636404077837480'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/07/syslog-ng-ose-32-caveats.html' title='syslog-ng OSE 3.2 caveats'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-816150534317195065</id><published>2010-07-14T20:30:00.004+02:00</published><updated>2010-07-14T22:36:33.208+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng contributions redefined</title><content type='html'>syslog-ng has been around for about 12 years now, but I think the biggest change in the project's life is imminent: with the upcoming release of syslog-ng OSE 3.2, syslog-ng will become an independent entity.&lt;br /&gt;&lt;br /&gt;Until now, syslog-ng was primarily maintained &amp;amp; developed by BalaBit, copyrights needed to be reassigned in order to grant BalaBit special privileges. BalaBit used her privileges to create a dual-licensed fork of syslog-ng, named "syslog-ng Premium Edition". The value we offer over the Open Source Edition of syslog-ng are things that larger enterprises require:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;support on a large number of UNIX platforms (27 as of 3.1), &lt;/li&gt;&lt;li&gt;smaller and larger feature differences (like the encrypted/digitally signed logfile feature)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;better test coverage and release management&lt;/li&gt;&lt;li&gt;longer term support&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Although perfectly legal, this business model was not welcome in various Free Software communities, and has caused friction and harm, because BalaBit has enjoyed a privilege that no others could get. We plan to fix this situation and we've worked hard in the past months to make this possible.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;We're letting syslog-ng go&lt;/span&gt;: no signed &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;ved=0CBIQFjAA&amp;amp;url=http%3A%2F%2Fwww.balabit.com%2Fdl%2FCLA_patch.pdf&amp;amp;ei=egU-TMLdIomJOLyo7JEP&amp;amp;usg=AFQjCNEOlRAVJVfEbEXsJJ5QCwYwaea8lg&amp;amp;sig2=x_zbtHDLDFxDhl11c6QzHA"&gt;Contributory License Agreements&lt;/a&gt; will be required in order to contribute to syslog-ng in the future.&lt;br /&gt;&lt;br /&gt;This is not just a matter of policy: while BalaBit wants to be a true citizen of the Free Software world, we also need to ensure the continued revenue stream that the Premium Edition provides.  The adjusted business model allows us to deliver what our customers need, and at the same time make it possible for anyone else in the community to have the same privileges as BalaBit has.&lt;br /&gt;&lt;br /&gt;The syslog-ng changes in 3.2  that I feel are most important are detailed below.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Plugins&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;syslog-ng was transformed from being a monolithic executable, to a core and a set of plugins.&lt;br /&gt;&lt;br /&gt;Plugins range from source and destination drivers, filters, parsers, rewrite objects, anything can be extended with the use of a relatively simple plugin.&lt;br /&gt;&lt;br /&gt;And this change didn't transform the configuration file format, it remained the same as before: readable and flexible. If you don't want to look under the hood, no functionality has changed, except plugins are loaded at runtime, and as a side effect, the syntax error reports are &lt;a href="http://bazsi.blogs.balabit.com/2010/04/syslog-ng-32-changes.html"&gt;way better&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The core is licensed under the LGPL and plugins are licensed under the GPL. This legal framework allows BalaBit to deliver value to its customers in non-free plugins and syslog-ng related services.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;syslog-ng Configuration Library&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;syslog-ng is an infrastructure element: very flexible, but sometimes intimidating. For example, having to specify the pad_size() option for an HP-UX /dev/log device explicitly makes syslog-ng flexible, but not very user-friendly.&lt;br /&gt;&lt;br /&gt;It is common to share working configuration snippets on the mailing list or elsewhere in the syslog-ng community. We try to concentrate this effort with the creation of the syslog-ng Configuration Library (aka SCL). This library is a set of config snippets that can be included into a syslog-ng configuration file, using proper defaults but still allowing customization.&lt;br /&gt;&lt;br /&gt;For example: we've created a source driver named "system()" which automatically expands to the local log devices as needed by the current Operating System syslog-ng runs on, but it is also possible to create application specific configuration snippets (for example apache source?) and ship it as a ready to use config block. See this &lt;a href="http://bazsi.blogs.balabit.com/2010/04/syslog-ng-32-opened-experimental-blocks.html"&gt;post for more information&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This makes it possible to create a configuration file that will run on &lt;span style="font-weight: bold;"&gt;each&lt;/span&gt; of your platforms. In fact, we did that too: syslog-ng now comes with a default configuration file.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Support for non-syslog messages&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since syslog-ng is now plugin based and even the "syslog" message format as such is a plugin, it is now quite easy to add support for non-syslog message sources. As an example, we've added a plugin to parse Linux process accounting records, which makes it trivial to collect this data as well and possibly use it as a source of information when correllating data.&lt;br /&gt;&lt;br /&gt;Future plugins like creating a MIB aware SNMP listener, or possibly processing netflow data, but I'd like to create a generic SQL source as well.&lt;br /&gt;&lt;br /&gt;Support for these formats doesn't mean that syslog-ng would transform them into textual messages: proper name-value structure is kept and it is possible to put them into nicely structured SQL tables. Of course if all you want to transform them to text for readability, that's possible too with the use of a template().&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;patterndb project&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Like I announced before, we're starting a parallel project to create a set of message patterns directly usable with syslog-ng's db-parser().&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Current state&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The changes are happening in the syslog-ng 3.2 repository at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://git.balabit.hu/"&gt;http://git.balabit.hu/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We have created a source-only 3.2alpha1 release of the current state. It runs our automated test harness on Linux, but of course it is not yet recommended in production environments. The release can be downloaded from &lt;a href="http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.2alpha1/source/syslog-ng_3.2alpha1.tar.gz"&gt;www.balabit.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There were significant changes in how syslog-ng is compiled, thus it is expected that we have build issues on non-Linux systems. We expect to address these issues as they are found and create a 3.2beta1 release, for a longer beta testing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Future&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Parallel to fixing up the remaining issues on syslog-ng 3.2, we're going to open new ways to improve syslog-ng in the 3.3 branch. The most important item on our product backlog is to address the scalability problems and improve performance of syslog-ng.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With the upcoming changes in syslog-ng OSE 3.2 possible contributions will be greatly expanded:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;write a pattern for your favourite application and process log data faster + easier&lt;/li&gt;&lt;li&gt;write an SCL configuration snippet, make your application easier to integrate with syslog-ng&lt;br /&gt;&lt;/li&gt;&lt;li&gt;write a plugin for your favourite NoSQL database,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;write a plugin for a transformation that syslog-ng is not capable of doing right now (what about facility / severity rewrite rules? easy as a piece of cake)&lt;/li&gt;&lt;li&gt;write a plugin for things that you do with an external script&lt;/li&gt;&lt;li&gt;or contribute to the core of syslog-ng.&lt;/li&gt;&lt;/ul&gt;And all this without having to sign paperwork.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-816150534317195065?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/816150534317195065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=816150534317195065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/816150534317195065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/816150534317195065'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/07/syslog-ng-contributions-redefined.html' title='syslog-ng contributions redefined'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-6891272631093555618</id><published>2010-06-25T19:42:00.002+02:00</published><updated>2010-06-25T19:49:14.178+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><category scheme='http://www.blogger.com/atom/ns#' term='patterndb'/><title type='text'>patterndb project</title><content type='html'>By now probably most of you know about patterndb, a powerful framework in syslog-ng that lets you extract structured information from log messages and perform classification at a high speed:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.balabit.com/dl/html/syslog-ng-ose-v3.1-guide-admin-en.html/concepts_pattern_databases.html"&gt;http://www.balabit.com/dl/html/syslog-ng-ose-v3.1-guide-admin-en.html/concepts_pattern_databases.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Until now, syslog-ng offered the feature, but no release-quality patterns were produced by the syslog-ng developers. Some samples based on the logcheck database were created, but otherwise every syslog-ng user had to create her samples manually, possibly repeating work performed by others.&lt;br /&gt;&lt;br /&gt;Since this calls out to be a community project, I'm hereby starting one.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Goals&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create release-quality pattern databases that can simply be deployed to an existing syslog-ng installation. The goal of the patterns is to extract structured information from the free-form syslog messages, e.g. create name-value pairs based on the syslog message.&lt;br /&gt;&lt;br /&gt;Since the key factor when doing something like this is the naming of fields, we're going to create our generic naming guidelines that can be applied to any application in the industry.&lt;br /&gt;&lt;br /&gt;It is not our goal to implement correllation or any other advanced form of analysis, although we feel that with the results of this project, event correllation and analysis can be performed much easier than without it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Related projects&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I know there are other efforts in the field, why not simply join them?&lt;br /&gt;&lt;br /&gt;CEF - is the log message format for a proprietary log analysis engine, primarily meant to be used to hold IP security device logs (firewalls, IPSs, virus gateways etc). The patterndb project aims to create patterns for a wider range of device logs and be more generic in the approach. On the other hand we feel that it might be useful to create a solution for converting db-parser output to the CEF format.&lt;br /&gt;&lt;br /&gt;CEE - Common Event Expression project by Mitre has a focus on creating a nv pair dictionary for all kinds of devices/log messages out there. Although I might be missing something, but I didn't find the concrete results so far, apart from a nicely looking white paper. If the CEE delivers something, then patterndb would probably adapt the naming/taxonomy structure. But I guess not all devices will start logging in the new shiny format, thus the existing devices would need&lt;br /&gt;their logs converted, so the patterndb work wouldn't be wasted.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Infrastructure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Our original patterndb related plans were to create an easy to use web based interface for editing patterns, but since that project is progressing slowly, I'm calling for a minimalist approach: git based version control of simple plain text files. Of course once the nice web based interface is finished, we're going to be ready to use it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;First steps&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have created a git repository at:&lt;br /&gt;&lt;br /&gt;git://git.balabit.hu/bazsi/syslog-ng-patterndb.git&lt;br /&gt;&lt;br /&gt;This contains the initial version of the naming policy document and a simple schema for SIEM-style and a user login-logout naming schema.&lt;br /&gt;&lt;br /&gt;If you are interested please read the file README.txt in the git archive, or if you prefer a web browser, use this link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-patterndb.git;a=blob;f=README.txt;h=9bbfeaead0c21dcf6171e12e311ae8612f572bfc;hb=6061e22221a72d35238b35f82b04afd436341b5c"&gt;http://git.balabit.hu/?p=bazsi/syslog-ng-patterndb.git;a=blob;f=README.txt;h=9bbfeaead0c21dcf6171e12e311ae8612f572bfc;hb=6061e22221a72d35238b35f82b04afd436341b5c&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Licensing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I do not have a decision yet, but for sure this is going to use one of the open source licenses or Creative Commons. Let me know if you have a preference in this area.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Getting involved&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Join the syslog-ng mailing list, a start discussing! If you have existing patterns, great. If you don't, it is not late to join.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lists.balabit.hu/mailman/listinfo/syslog-ng"&gt;http://lists.balabit.hu/mailman/listinfo/syslog-ng&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The posting address of the mailing list (to subscribers only) is:&lt;br /&gt;&lt;br /&gt;syslog-ng@lists.balabit.hu&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-6891272631093555618?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/6891272631093555618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=6891272631093555618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/6891272631093555618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/6891272631093555618'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/06/patterndb-project.html' title='patterndb project'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-3275361478936783892</id><published>2010-05-03T16:57:00.003+02:00</published><updated>2010-05-03T17:12:41.556+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>small incompatible change for 3.1</title><content type='html'>I've just commited a small incompatible change for syslog-ng 3.1, even though theoreticaly I shouldn't have.&lt;br /&gt;&lt;br /&gt;The change is not big, simply the 'store-legacy-msghdr' flag became default for all sources, whereas earlier you had to specify that explicitly.&lt;br /&gt;&lt;br /&gt;In order to understand why I did that, a short description of the flag follows below.&lt;br /&gt;&lt;br /&gt;syslog-ng processes all incoming messages into fields (things like $PROGRAM and $DATE) and then reconstructs the message based on this parsed information when it has to write the message to a file.&lt;br /&gt;&lt;br /&gt;Before syslog-ng 3.0 a message was split into the macros: "$DATE $HOST $MSG", which expanded to the actual log message. "$MSG" above was expanded to a line like:&lt;br /&gt;&lt;br /&gt;"program[pid]: message"&lt;br /&gt;&lt;br /&gt;With syslog-ng 3.0 and the integrated handling of RFC5424 and RFC3164 this format was changed and an $MSGHDR macro was created for the "program[pid]: " part and I got rid of this part from $MSG. (of course if you are running syslog-ng in compatibility mode, you get the old behaviour). The reason is simple: RFC5424 has separate fields for program/pid.&lt;br /&gt;&lt;br /&gt;The contents of $MSGHDR is constructed programmatically, e.g. the punctuation characters '[' and ']' around the pid and the colon, is added to the format by syslog-ng, based on the available information in $PROGRAM and $PID.&lt;br /&gt;&lt;br /&gt;However (and here comes the magic) there are programs that do not adhere to this format and omit the space after the colon character. E.g. if syslog-ng received:&lt;br /&gt;&lt;br /&gt;"program:value"&lt;br /&gt;&lt;br /&gt;as the syslog message, it added an explicit space character, and you'd get this in your log file:&lt;br /&gt;&lt;br /&gt;"program: value"&lt;br /&gt;&lt;br /&gt;NOTE the added space. This resulted in the workaround called "store-legacy-msghdr", which made syslog-ng remember the original formatting of the MSGHDR macro. However this proved to be a performance issue, thus it didn't become default, and I let my users discover this problem and add the flag explicitly if they cared about the extra space.&lt;br /&gt;&lt;br /&gt;syslog-ng 3.1 however solves the performance issue (with the NVTable refactorization), and more and more people run into the very same issue, who are migrating from 2.1 or earlier.&lt;br /&gt;&lt;br /&gt;Therefore I've decided to make 'store-legacy-msghdr' the default, and added a 'dont-store-legacy-msghdr' flag. My hope is that&lt;br /&gt;&lt;ul&gt;&lt;li&gt;people who cared: they already had the store-legacy-msghdr, for them, nothing is changed&lt;/li&gt;&lt;li&gt;people who didn't notice: they don't have the flag, but should be better of with the original formatting&lt;/li&gt;&lt;li&gt;people who changed their parsing scripts: well, those are who I address this message to as a HEADS up.&lt;/li&gt;&lt;/ul&gt;I hope this post makes things clearer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-3275361478936783892?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/3275361478936783892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=3275361478936783892' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3275361478936783892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3275361478936783892'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/05/small-incompatible-change-for-31.html' title='small incompatible change for 3.1'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2137774054980471543</id><published>2010-04-15T21:35:00.006+02:00</published><updated>2010-04-21T16:23:22.861+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng 3.2 changes</title><content type='html'>I've just pushed a round of updates to the syslog-ng 3.2 repository, featuring some interesting stuff, such as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL reorganization: Patrick Hemmer sent in a patch to implement explicit transaction support instead of the previous auto-commit mode used by syslog-ng. I threw in some fixes and refactored the code somewhat.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Configuration parser changes: the syntax errors produced by syslog-ng became much more user-friendly: not only the column is displayed, but also the erroneous line is printed and the error location is also highlighted.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Additional plugin modules were created: afsql for the SQL destination, and afstreams for Solaris STREAMS devices. Creating a new plugin from core code takes about 15 minutes. I'm quite satisfied. With the addition of these two modules, it is now possible to use syslog-ng without any kind of runtime dependency except libc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The already existing afsocket module (providing tcp/udp sources &amp;amp; destinations) is compiled twice: once with and once without SSL support, so it is now possible to choose which one to use at runtime.&lt;/li&gt;&lt;/ul&gt;And since a blog post is not complete without a "screenshot", here's how the new error message looks like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new; font-size:8px"&gt;Error parsing plugin unix-stream, syntax error in etc/syslog-ng-null.conf at line 3, column 34:&lt;br /&gt;&lt;br /&gt;source s_log { unix-stream("log" default-facilitz(syslog)); };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;^^^^^^^^^^^^^^^^&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Neat, eh?&lt;br /&gt;&lt;br /&gt;One more thing I need to think about is how to configure module loading. I guess it'd be less than user friendly if I'd rely on the user to load the modules that so far were the core functionality of syslog-ng.&lt;br /&gt;&lt;br /&gt;E.g. right now if you want udp() support, you'd need something like this in the syslog-ng.conf header:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;@module: afsocket&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Having to remember all the module names is cumbersome and irritating. On the other hand I'd like to make it possible to run a bare-bones syslog-ng without socket support, so autoloading modules without any configurability is also out of the question.&lt;br /&gt;&lt;br /&gt;In the current implementation syslog-ng automatically loads core modules, if the configuration version is below 3.2, and does nothing if it is 3.2 (e.g. you need an explicit @module directive for the current configuration format).&lt;br /&gt;&lt;br /&gt;If you have an idea about how you think configuring modules should look like, just drop me an email/comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2137774054980471543?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2137774054980471543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2137774054980471543' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2137774054980471543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2137774054980471543'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/04/syslog-ng-32-changes.html' title='syslog-ng 3.2 changes'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-3199046318855920348</id><published>2010-04-12T20:43:00.005+02:00</published><updated>2010-04-12T21:12:18.309+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>Explicit transaction support in SQL</title><content type='html'>The SQL destination in syslog-ng so far assumed that databases automatically start a new transaction for each INSERT statement that syslog-ng issues. This works fine, however there is a significant overhead of starting new transactions, with sqlite I've measured about 20 times performance increase on my development notebook and my debug build.&lt;br /&gt;&lt;br /&gt;With explicit-commits:&lt;br /&gt;bazsi@bzorp:~/.zwa/install/syslog-ng-ose-3.2$ loggen -x -r 1000000 -I 10 -S log&lt;br /&gt;average rate = 9377.28 msg/sec, count=93776, time=10.003, msg size=256, bandwidth=2344.32 kB/sec&lt;br /&gt;&lt;br /&gt;With per-statement (automatic) commits:&lt;br /&gt;bazsi@bzorp:~/.zwa/install/syslog-ng-ose-3.2$ loggen -x -r 1000000 -I 10 -S log&lt;br /&gt;average rate = 529.46 msg/sec, count=5299, time=10.083, msg size=256, bandwidth=132.36 kB/sec&lt;br /&gt;&lt;br /&gt;So this really seem to matter.&lt;br /&gt;&lt;br /&gt;In order to configure it you can use the following options in an SQL destination:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;flush_lines/flush_timeout controls how much messages get into the same transaction, similar to what these parameters mean for standard log files&lt;br /&gt;&lt;/li&gt;&lt;li&gt;flags("explicit-commits") enables explicit transaction handling&lt;/li&gt;&lt;/ul&gt;Also an option named "session_statements" was added where you can list initial SQL commands, issued right after the connection is established.&lt;br /&gt;&lt;br /&gt;This work has been started by Patrick Hemmer (thanks again Patrick). I had to do some work on it though, since in order to avoid races the timer code of the main loop couldn't be used.&lt;br /&gt;&lt;br /&gt;You can find all this in the syslog-ng OSE 3.2 branch. I'd love to hear success/failure stories and performance numbers you can measure with your favourite database.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-3199046318855920348?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/3199046318855920348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=3199046318855920348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3199046318855920348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3199046318855920348'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/04/explicit-transaction-support-in-sql.html' title='Explicit transaction support in SQL'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-4975204162221974433</id><published>2010-04-05T21:23:00.006+02:00</published><updated>2010-04-06T16:08:34.034+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng 3.2 opened, experimental "blocks" branch opened</title><content type='html'>After last the stable syslog-ng 3.1.0 release last week, I've opened the 3.2 branch to receive the new stuff. The first bits are already in the repository: the basic plugin framework and the conversion of the socket related stuff (tcp, udp, unix-dgram, unix-stream, syslog drivers) into a separate plugin.&lt;br /&gt;&lt;br /&gt;The reason of the afsocket plugin conversion is to help moving the OpenSSL dependency to a separate package in distributions where this dependency cannot be associated with core packages like syslog-ng.&lt;br /&gt;&lt;br /&gt;But I see a lot of potential behind the plugin framework, and I still have a lot of ideas, just check &lt;a href="http://bazsi.blogs.balabit.com/2010/03/plugins-branch-updated.html"&gt;my last blog post in the topic&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also, there's an  even more experimental feature in the "blocks" branch right now, it is still incomplete, the naming and the syntax is still vague. The aim is there to provide syslog-ng.conf C++ template-like functionality in order to make the configuration easier by using pre-configured config snippets.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;block source tomcat&amp;lt;root_dir="/opt/tomcat"&amp;gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;file("&amp;lt;&amp;lt;root_dir&amp;gt;&amp;gt;/var/tomcat.log" follow_freq(1));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;source s_local {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tomcat(root_dir("/usr/local/tomcat"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The idea is that if "tomcat" is referenced in a source statement, it'll be expanded to the content defined before that, all with proper argument passing and default values. This example actually works fine with the "blocks" branch right now.&lt;br /&gt;&lt;br /&gt;Combining this feature with include files I foresee something like a "syslog-ng configuration library", which would contain pre-configured syslog-ng sources containing settings needed in order for a specific application to log properly, this way avoiding the hassle of integrating each and every application to syslog separately.&lt;br /&gt;&lt;br /&gt;Another (not-yet-working) example would be to get rid off platform specific /dev/log declarations:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;block source system&amp;lt;&amp;gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;@if (OS == "solaris")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;@&amp;nbsp;&amp;nbsp;if (OS_VERSION &gt;= "10")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sun-streams("/dev/log" door("/var/run/syslog_door"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;@&amp;nbsp;&amp;nbsp;else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sun-streams("/dev/log" door("/etc/.syslog_door"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;@&amp;nbsp;&amp;nbsp;endif&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;@elif (OS == "linux")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unix-dgram("/dev/log");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file("/proc/kmsg" program_override("kernel"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;@elif (OS == ...)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;@endif&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;source s_local { system(); };&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This would make the initial configuration of syslog-ng much easier, and would allow you to use the same configuration file everywhere.&lt;br /&gt;&lt;br /&gt;As I said this is still very experimental, I'm not yet sure about:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the name (I would have called these templates, but that is already taken in syslog-ng, just like "macro"). so if you have an idea of a better name I'd love hear about it&lt;/li&gt;&lt;li&gt;argument passing, whether to allow positional arguments&lt;/li&gt;&lt;li&gt;argument expansion syntax, "&amp;lt;&amp;lt;arg&amp;gt;&amp;gt;", and "$$arg" both occurred to me, the latter seems to be used more universally. I'd want to include both in strings (like in the example above) and in non-string arguments, e.g. follow-freq($$arg)&lt;/li&gt;&lt;/ul&gt;If you have comments, ideas for names, please post them as comments, or send an email to the &lt;a href="mailto:syslog-ng@lists.balabit.hu"&gt;syslog-ng mailing list&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also, while I was there changing the parser/lexer framework for pluginization, I added more details to the error message to make it easier to locate the syntax error in the configuration file.&lt;br /&gt;&lt;br /&gt;As for the next things, I'm going to start integrating the external contributions I've received so far, so stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-4975204162221974433?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/4975204162221974433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=4975204162221974433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4975204162221974433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4975204162221974433'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/04/syslog-ng-32-opened-experimental-blocks.html' title='syslog-ng 3.2 opened, experimental &quot;blocks&quot; branch opened'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-6651897632193655912</id><published>2010-03-22T15:56:00.003+01:00</published><updated>2010-03-22T17:35:35.046+01:00</updated><title type='text'>syslog-ng 3.1 final release</title><content type='html'>I'm proud to announce that both the Open Source and the Premium editions of syslog-ng 3.1 was published and are available on our website.&lt;br /&gt;&lt;br /&gt;This is an important milestone in multiple ways:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the new &lt;a href="http://bazsi.blogs.balabit.com/2009/05/syslog-ng-40-roadmap-plus-release.html"&gt;feature/stable release schema&lt;/a&gt; is making its debut&lt;/li&gt;&lt;li&gt;the patterndb got significant improvements: new parsers, pdbtool, tagging support&lt;/li&gt;&lt;li&gt;the ability to change/add RFC5424 style structured data to messages&lt;/li&gt;&lt;li&gt;even more supported platforms (Tru64 on alpha, HP-UX 11iv2 on Itanium and older Linux versions)&lt;/li&gt;&lt;li&gt;the diverging developments of syslog-ng Open Source Edition, Premium Edition and syslog-ng Store Box was merged into a new base, &lt;/li&gt;&lt;/ul&gt;Some interesting (ok, for us developers :) statistics follow:&lt;br /&gt;&lt;br /&gt;Premium Edition:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;586 commits&lt;/li&gt;&lt;li&gt;200 files changed, 23479 insertions(+), 5513 deletions(-)&lt;/li&gt;&lt;/ul&gt;Open Source Edition:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;189 commits&lt;/li&gt;&lt;li&gt;115 files changed, 9020 insertions(+), 3225 deletions(-)&lt;/li&gt;&lt;/ul&gt;The reason for the big difference is the merger of the currently propriatery log indexer engine used in SSB into the current Premium Edition tree, otherwise the two should be in sync.&lt;br /&gt;&lt;br /&gt;The binaries/source packages can be downloaded via the usual URL:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.balabit.com/downloads/upgrades/"&gt;http://www.balabit.com/downloads/upgrades/&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Changelogs for the two releases:&lt;br /&gt;&lt;br /&gt;Premium Edition: &lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.balabit.com/downloads/files/syslog-ng/premium-edition/3.1.0/changelog-en.txt"&gt;http://www.balabit.com/downloads/files/syslog-ng/premium-edition/3.1.0/changelog-en.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Open Source Edition:&lt;br /&gt;&lt;a href="http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.1.0/changelog-en.txt"&gt;http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.1.0/changelog-en.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And of course the OSE source is also available in our public git repository:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://git.balabit.hu/"&gt;http://git.balabit.hu/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Happy logging!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-6651897632193655912?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/6651897632193655912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=6651897632193655912' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/6651897632193655912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/6651897632193655912'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/03/syslog-ng-31-final-release.html' title='syslog-ng 3.1 final release'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2104005627568279564</id><published>2010-03-06T15:45:00.003+01:00</published><updated>2010-03-06T15:56:57.805+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>plugins branch updated</title><content type='html'>Since the last post, I could hack a couple of hours on the plugins branch, which now compiles. The plugin framework is capable for supporting a quite important core functionality: all socket like sources/destinations are now found in an external plugin called "afsocket".&lt;br /&gt;&lt;br /&gt;The reason I've started with afsocket is to make syslog-ng a bit less dependant on OpenSSL. A couple of distributions didn't include syslog-ng 3.0 in their current releases, because it uses OpenSSL from /usr, while syslog-ng should remain in the root directory.&lt;br /&gt;&lt;br /&gt;By separating afsocket from the syslog-ng core, I can compile afsocket with and without TLS support, which can be put into separate packages. Thus syslog-ng can operate without OpenSSL.&lt;br /&gt;&lt;br /&gt;And the same plugin framework will enable me to create a wide variety of plugins. My ideas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Plugins for all syslog-ng components (source, destination, filter, rewrite, parser)&lt;/li&gt;&lt;li&gt;Python scriptability (a simple correllation engine in Python?)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;macro transformation functions, for example: $(stripslashes $macro), usable anywhere in templates and stripslashes a plugin that is invoked whenever such an expansion occurs&lt;/li&gt;&lt;li&gt;Hooks for transforming the log message as it enters syslog-ng (to fix parsing errors for example),&lt;/li&gt;&lt;/ul&gt;Do you have other ideas? Please post them as comments or as emails to the mailing list.&lt;br /&gt;&lt;br /&gt;Again, this functionality is experimental, and I'm still going to rebase the current code and will probably be integrated to syslog-ng 3.2. I got to release 3.1 final first though. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2104005627568279564?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2104005627568279564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2104005627568279564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2104005627568279564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2104005627568279564'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/03/plugins-branch-updated.html' title='plugins branch updated'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8056589038919711258</id><published>2010-03-06T07:32:00.003+01:00</published><updated>2010-03-06T07:37:11.709+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>plugins preview</title><content type='html'>Things have been a little rough last couple of months, that's why I haven't posted here. I'm in a rush right now as well, but I just wanted to let you know that I have started working on modularizing syslog-ng.&lt;br /&gt;&lt;br /&gt;It is only a preliminary prototype, and as of now it doesn't compile, but the way it's going to work is already visible: each plugin will have its own plugin and with some trickery the large syslog-ng.conf parser will call out to the plugin parser. The user will recognize such a plugin as an integral part of syslog-ng.&lt;br /&gt;&lt;br /&gt;E.g. this is a sample configuration file:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;@version: 3.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;@module: dummy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;destination d_dummy { dummy(dummy_opt(yes)); };&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;See the dummy plugin code in my git repository, in the "plugins" branch. Please note that that branch is going to be rebased a couple of times yet, I've released it in the spirit of "release early, release often".&lt;br /&gt;&lt;br /&gt;I hope to get some of the recent contributions into plugins, instead of bloating the core syslog-ng code. For example output colorization. I'm also thinking about adding built-in scripting support via Python.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8056589038919711258?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8056589038919711258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8056589038919711258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8056589038919711258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8056589038919711258'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2010/03/plugins-preview.html' title='plugins preview'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8308715584754295104</id><published>2009-12-18T17:47:00.003+01:00</published><updated>2010-02-06T16:53:02.023+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng OSE 3.1beta2 release</title><content type='html'>I've mentioned shortly in my previous post, but here's a more official announcement: I've released syslog-ng OSE 3.1beta2, containing some important bugfixes.&lt;br /&gt;&lt;br /&gt;The list of changes: &lt;a href="http://www.balabit.com/downloads/syslog-ng/open-source-edition/3.1beta2/changelog-en.txt"&gt;http://www.balabit.com/downloads/syslog-ng/open-source-edition/3.1beta2/changelog-en.txt&lt;/a&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class=" on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;img src="http://www.blogger.com/img/blank.gif" alt="Link" class="gl_link" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Thanks to Martin Holste for the feedback he provided, hopefully we can forget about the "beta" part soon.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8308715584754295104?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8308715584754295104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8308715584754295104' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8308715584754295104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8308715584754295104'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/12/syslog-ng-ose-31beta2-release.html' title='syslog-ng OSE 3.1beta2 release'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-7895392148011485009</id><published>2009-12-18T09:08:00.004+01:00</published><updated>2009-12-18T17:29:18.577+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><category scheme='http://www.blogger.com/atom/ns#' term='patterndb'/><title type='text'>Patterndb release for syslog-ng 3.1</title><content type='html'>You may probably know that starting with syslog-ng 3.0, we started poking into the message payload by being able to extract information from the log messages and use that information in structured form for message routing, filtering and storing them as separate fields in a database table.&lt;br /&gt;&lt;br /&gt;You may have read about patterndb on this blog or on Marci's blog and we have also given talks about it on different conferences: &lt;a href="http://bazsi.blogs.balabit.com/2009/06/nordic-meet-on-nagios-2009.html"&gt;NNM 2009&lt;/a&gt; and &lt;a href="http://marci.blogs.balabit.com/2009/07/lsmrmll-conference-slides.html"&gt;LSM/RMLL 2009&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The reason I'm raising the topic here again is that we have now &lt;a href="http://marci.blogs.balabit.com/2009/12/pattern-database-first-snapshot.html"&gt;released about 8000 patterns&lt;/a&gt; covering about 200 applications for patterndb and are now in the process of creating a community site to maintain this database.&lt;br /&gt;&lt;br /&gt;You can download the database from &lt;a href="http://www.balabit.com/downloads/files/patterndb-snapshot/patterndb-20091209.zip"&gt;www.balabit.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also an important thing to know that syslog-ng OSE 3.1 features enhanced performance with regard to handling information extracted from the message payload and it also has support for the latest patterndb database format. So if you want to try the new database, fetch a copy of the latest &lt;a href="https://www.balabit.com/network-security/syslog-ng/opensource-logging-system/"&gt;3.1beta2&lt;/a&gt; release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-7895392148011485009?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/7895392148011485009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=7895392148011485009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7895392148011485009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7895392148011485009'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/12/patterndb-release-for-syslog-ng-31.html' title='Patterndb release for syslog-ng 3.1'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2959564157457398047</id><published>2009-12-03T09:56:00.004+01:00</published><updated>2009-12-03T15:08:08.172+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng OSE 3.1beta1 released</title><content type='html'>I'm proud to announce that syslog-ng OSE 3.1 has been released and uploaded to our webserver. This version is new in two ways:&lt;br /&gt;&lt;br /&gt;1) of course it has new features, see below for the most interesting bits&lt;br /&gt;&lt;br /&gt;2) it is a "feature release", which means that once syslog-ng 3.2 or syslog-ng 4.0 is released, the support for this release will be ceased. See our new version policy at this link:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.balabit.com/network-security/syslog-ng/opensource-logging-system/roadmap.bbx"&gt;https://www.balabit.com/network-security/syslog-ng/opensource-logging-system/roadmap.bbx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Since the documentation is not yet up to date with this beta release, I'll try to include the most crucial  information about the new features right here in this announcement.&lt;br /&gt;&lt;br /&gt;For those who hurry, here's a link for the source code:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.1beta1/source/syslog-ng_3.1beta1.tar.gz"&gt;https://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.1beta1/source/syslog-ng_3.1beta1.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here are the binaries for Linux/FreeBSD systems:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.balabit.com/network-security/syslog-ng/opensource-logging-system/"&gt;https://www.balabit.com/network-security/syslog-ng/opensource-logging-system/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Select the Downloads tab, and in the Version selector select 3.1beta1.&lt;br /&gt;&lt;br /&gt;Please try this beta version. Any feedback, positive or negative is appreciated, if you have comments, please post them on the mailing list at: &lt;a href="mailto:syslog-ng@lists.balabit.hu"&gt;&lt;span style="font-family:courier new;"&gt;syslog-ng@lists.balabit.hu&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And now the new features in this release:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Support for patterndb v3 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;syslog-ng 3.1 now supports the patterndb v3 format, along with a bunch of new parsers: ANYSTRING, IPv6, IPvANY and FLOAT.Patterndb (more exactly the db-parser()) is a high performance message classifier and information extraction tool, that makes it easy to get away from the unstructured nature of syslog.&lt;br /&gt;&lt;br /&gt;Patterndb has evolved since it was first introduced in syslog-ng 3.0. It is at the 3rd iteration, hopefully slowly reaching its final form. syslog-ng OSE 3.0 supported v1, our SSB product supports v2 and now syslog-ng OSE is the first version supporting v3.&lt;br /&gt;&lt;br /&gt;Patterndb in general and the v1 format database is described in the syslog-ng manual at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/ch02s12.html"&gt;http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/ch02s12.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The XML schemas that describe the different patterndb versions are available in the syslog-ng source tree:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-3.1.git;a=tree;f=doc/xsd;hb=HEAD"&gt;http://git.balabit.hu/?p=bazsi/syslog-ng-3.1.git;a=tree;f=doc/xsd;hb=HEAD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The changes in the patterndb format as they evolved were described in Marton Illes's blog at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://marci.blogs.balabit.com/2009/06/new-db-parser-format-and-other.html"&gt;http://marci.blogs.balabit.com/2009/06/new-db-parser-format-and-other.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But see the other related posts as well.&lt;br /&gt;&lt;br /&gt;Old patterndb databases can be converted to the new format by putting them in the &lt;span style="font-family:courier new;"&gt;/opt/syslog-ng/etc/patterns.d&lt;/span&gt; directory and using the pdbtool utility using the command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  $ pdbtool merge -p /opt/syslog-ng/var/patterndb.xml \&lt;br /&gt;       -D /opt/syslog-ng/etc/patterns.d&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Assuming the installation prefix of syslog-ng is&lt;span style="font-family:courier new;"&gt; /opt/syslog-ng&lt;/span&gt;. The above filenames are also the recommended and default names for patterndb related files.&lt;br /&gt;&lt;br /&gt;Some v2 format patterns are distributed by BalaBit itself for its SSB product, download location:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.balabit.com/downloads/files/patterndb/1.0-20081117/patterndb/"&gt;https://www.balabit.com/downloads/files/patterndb/1.0-20081117/patterndb/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can convert these db files using pdbtool as described above.&lt;br /&gt;&lt;br /&gt;Work is ongoing to publish a more comprehensive patterndb, but more on that  in a separate post.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;pdbtool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Added a new "pdbtool" utility to manage patterndb files: convert them from v1 or v2 format, merge mulitple patterndb files into one and look up matching patterns given a specific message.&lt;br /&gt;&lt;br /&gt;See the manpage (by adding &lt;span style="font-family:courier new;"&gt;/opt/syslog-ng/share/man&lt;/span&gt; in the &lt;span style="font-family:courier new;"&gt;MANPATH&lt;/span&gt;) and Marci's post:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://marci.blogs.balabit.com/2009/08/db-parser-new-utility-pdbtool.html"&gt;http://marci.blogs.balabit.com/2009/08/db-parser-new-utility-pdbtool.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Message tags&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Support for message tags was added: tags can be assigned to log messages as  they enter syslog-ng: either by the source driver or via patterndb. Later it these tags can be used for efficient filtering.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://marci.blogs.balabit.com/2009/05/tag-support-in-syslog-ng.html"&gt;http://marci.blogs.balabit.com/2009/05/tag-support-in-syslog-ng.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Rewrite structured data&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Earlier structured data fields in the new RFC5424 style syslog protocol were only read-only values that could be referenced in a template, but they couldn't be changed, and neither was it possible to add new fields in an   already existing syslog message.&lt;br /&gt;&lt;br /&gt;Now all these became possible by using the same syntax that didn't work earlier, e.g.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rewrite r_sd { set("55555" value(".SDATA.meta.sequenceId")); };&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Macro and name-value integration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Macros and name-value pairs got a little tighter integration. syslog-ng 3.0 was limited in the use of macros in the value() option of the match() filter: it could only use name-value pairs, although intiutively it should have supported macros as well. This was changed, starting with 3.1 it is now possible to use macros as well.&lt;br /&gt;&lt;br /&gt;The following now works:&lt;br /&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;match("regexp" value("R_DATE"));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;syslog-ng is now warning you in case you are using '&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Name-value pair performance improvements&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With the advent of patterndb and the spreading use of name-value pairs in syslog-ng, a strong limitation was the performance penalty of using dynamically created name-value pairs. This was now solved, 3.1 features a new data structure to store message payload and name-value pairs in, which results in a 3 times better performance when looking up a name-value pair.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Patterndb parser enhancements&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Some parsers got additional features: NUMBER is now able to parse hexadecimal numbers, ESTRING is now able to search for a sequence of characters as the end of the string. These changes make it easier to describe log messages in patterns.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Information about non-portable facilities&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Added non-standard and non-portable facility codes (range 10-15),  and decoupled syslog-ng facility name database from the system used  to compile syslog-ng on.&lt;br /&gt;&lt;br /&gt;Until this time the facility codes as understood by syslog-ng were dependant on the platform syslog-ng was compiled on. This is not true  anymore, syslog-ng comes with its own "facility" code assignments, based on the RFC, and adding some non-standard values found on various UNIX systems. prefix in the value syntax, because you can't use the full template syntax when you specify a value to match against.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Name-value pair performance improvements&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With the advent of patterndb and the spreading use of name-value pairs in syslog-ng, a strong limitation was the performance penalty of using dynamically created name-value pairs. This was now solved, 3.1 features a new data structure to store message payload and name-value pairs in, which results in a 3 times better performance when looking up a name-value pair.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Patterndb parser enhancements&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Some parsers got additional features: NUMBER is now able to parse hexadecimal numbers, ESTRING is now able to search for a sequence of characters as the end of the string. These changes make it easier to describe log messages in patterns.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Information about non-portable facilities&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Added non-standard and non-portable facility codes (range 10-15),  and decoupled syslog-ng facility name database from the system used  to compile syslog-ng on.&lt;br /&gt;&lt;br /&gt;Until this time the facility codes as understood by syslog-ng were dependant on the platform syslog-ng was compiled on. This is not true  anymore, syslog-ng comes with its own "facility" code assignments, based on the RFC, and adding some non-standard values found on various UNIX systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2959564157457398047?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2959564157457398047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2959564157457398047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2959564157457398047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2959564157457398047'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/12/syslog-ng-ose-31beta1-released.html' title='syslog-ng OSE 3.1beta1 released'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2839728076486846787</id><published>2009-09-21T17:57:00.004+02:00</published><updated>2009-09-21T18:00:29.638+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>The neatest syslog-ng hack ever</title><content type='html'>One of my collegues probably felt like crazy and implemented a &lt;a href="http://gyp.blogs.balabit.com/2009/09/make-your-servers-tweet.html"&gt;twitter() destination driver&lt;/a&gt; for syslog-ng. Although the value is dubious, I think it is the neatest contribution to syslog-ng so far. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2839728076486846787?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2839728076486846787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2839728076486846787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2839728076486846787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2839728076486846787'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/09/neatest-syslog-ng-hack-ever.html' title='The neatest syslog-ng hack ever'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-9167539022900090691</id><published>2009-08-09T11:33:00.002+02:00</published><updated>2009-08-09T11:51:27.058+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng 3.1 status</title><content type='html'>Like I announced in one of my &lt;a href="http://bazsi.blogs.balabit.com/2009/05/syslog-ng-40-roadmap-plus-release.html"&gt;previous posts,&lt;/a&gt; towards the syslog-ng OSE 4.0 release I'm going to make smaller, short-term supported releases. The first of these, called syslog-ng 3.1 is nearing completion, and thus a status report is due.&lt;br /&gt;&lt;br /&gt;Here's the original plan (quoting the &lt;a href="http://https://www.balabit.com/network-security/syslog-ng/opensource-logging-system/roadmap/"&gt;roadmap page here&lt;/a&gt;):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;support tags for syslog messages: each message can be marked with one or more tags, then apply filtering based on tags   &lt;/li&gt;&lt;li&gt;patterndb: add tag support   &lt;/li&gt;&lt;li&gt;patterndb: v2 database format support   &lt;/li&gt;&lt;li&gt;patterndb: add parsers for IPv6 addresses and hex numbers   &lt;/li&gt;&lt;li&gt;converge macros in templates and name-value pairs even more (right now it is not possible to use any macro in match()) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I've just pushed out another set of updates to our &lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-3.1.git;a=summary"&gt;git repository&lt;/a&gt;, which:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;adds tag support:  a new tags() filter and a tags() option for all sources and a builtin logic to assign the syslog-ng source name as a tag (in the format: .source.&lt;name&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;adds support for patterndb v2 and a newly introduced but compatible v3 format&lt;/li&gt;&lt;li&gt;adds "pdbtool" a new utility for managing patterndb files (not yet complete)&lt;/li&gt;&lt;li&gt;a couple of new parsers (IPv6, ANYSTRING, FLOAT)&lt;/li&gt;&lt;/ul&gt;The last item in the roadmap is not yet addressed, in fact I haven't even started it yet. I'm thinking about leaving that out altogether in order to have 3.1 released as soon as possible. If you have an opinion about that please don't hesitate to post it here on the mailing list.&lt;br /&gt;&lt;br /&gt;If you are experimenting with &lt;a href="http://bazsi.blogs.balabit.com/2009/03/as-promised-on-mailing-list-here-comes.html"&gt;patterndb&lt;/a&gt; you are advised to use the 3.1 branch as development happens here. Of course if we find something that affects our current stable 3.0, I'm backporting the fix, but since 3.0 is stable, I'm only backporting bugfixes and not new functionality.&lt;br /&gt;&lt;br /&gt;If you are interested you can get the sources via &lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-3.1.git;a=summary"&gt;git&lt;/a&gt;, or if you prefer a tarball, just drop me an email.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-9167539022900090691?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/9167539022900090691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=9167539022900090691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/9167539022900090691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/9167539022900090691'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/08/syslog-ng-31-status.html' title='syslog-ng 3.1 status'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-1804998499234928360</id><published>2009-08-04T15:41:00.004+02:00</published><updated>2009-08-12T08:33:53.179+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='balabit'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Developer tools</title><content type='html'>BalaBit has grown quite a lot in the last 9 years since it was founded, these days there are about 60 employees and more than 50% of that is working in the development field (give or take a couple, I've lost count some time ago). As we currently work on 4 products, support 5-6 CPU architectures and a host of different Operating Systems, automation in development is a must.&lt;br /&gt;&lt;br /&gt;We try to automate everything and that means a lot. Some examples:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;preparing the development workstation for development/testing work in 15 minutes for any of our products&lt;/li&gt;&lt;li&gt;building source code for tens of CPU/OS combinations by issuing a single command&lt;/li&gt;&lt;li&gt;creating bundles of intermediate components when generating setup packages&lt;/li&gt;&lt;li&gt;doing releases&lt;/li&gt;&lt;li&gt;test automation&lt;/li&gt;&lt;li&gt;and a host of other things&lt;/li&gt;&lt;/ul&gt;Some of these solutions are completely our own development, others are derived from public projects, and as BalaBit tries hard to be a good friend of Free, Libre and Open Source Software (FLOSS) we try to contribute back to projects that we use.&lt;br /&gt;&lt;br /&gt;A couple of weeks ago, I published our modified version of&lt;a href="http://fedorahosted.org/dogtail/"&gt; dogtail&lt;/a&gt;, a test automation framework for AT-SPI based applications. We maintain our own dogtail in-house and since our patches were not accepted, we published our changes in a public &lt;a href="http://git.balabit.hu/?p=bazsi/dogtail.git;a=summary"&gt;git repository&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Earlier, one of our developers contributed to &lt;a href="http://code.google.com/p/waf/"&gt;WAF&lt;/a&gt; to support building with Microsoft Visual C++, we've been using his work in two of our internal projects.&lt;br /&gt;&lt;br /&gt;And this time, we published &lt;a href="http://folti.blogs.balabit.com/2009/08/compiling-autoconfmake-using-sources.html"&gt;cccl a wrapper&lt;/a&gt; for MSVC to make it compatible with the gcc command line, in order to compile autoconf based projects under MSVC.&lt;br /&gt;&lt;br /&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;img src="http://www.blogger.com/img/blank.gif" alt="Link" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;As you could guess, BalaBit is primarily a UNIX/Linux shop, but we need to support products aimed at Microsoft Windows, however with some heavylifting combining the best of both worlds is possible. And we've never been afraid of challenges. :)&lt;br /&gt;&lt;br /&gt;Hopefully you can use some of these results, maybe even contribute back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-1804998499234928360?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/1804998499234928360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=1804998499234928360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1804998499234928360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1804998499234928360'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/08/developer-tools.html' title='Developer tools'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-4274090890304541152</id><published>2009-07-16T22:43:00.002+02:00</published><updated>2009-07-16T22:52:22.029+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>patterndb updates pushed in syslog-ng OSE 3.1</title><content type='html'>According to the plan of my recently published &lt;a href="http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/roadmap/"&gt;syslog-ng OSE roadmap&lt;/a&gt;, I've worked on integrating the various patterndb related fixes/enhancements in the syslog-ng OSE 3.1 tree.&lt;br /&gt;&lt;br /&gt;This now means that OSE 3.1 is now capable of working with all the version2 style pattern databases that syslog-ng Store Box is using. Here is a link for the SSB patterns: &lt;a href="http://www.balabit.com/downloads/files/patterndb/1.0-20081117/patterndb/"&gt;http://www.balabit.com/downloads/files/patterndb/1.0-20081117/patterndb/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I still need to work on integrating the new tags framework and the integration between tags and patterndb. Once that is done, I only have one item left for the 3.1 feature release.&lt;br /&gt;&lt;br /&gt;So with some luck, we can have a new shiny syslog-ng OSE release this summer.&lt;br /&gt;&lt;br /&gt;Please note that this is not released code yet and is only available via git, however if there's demand, I'm willing to create an alpha release (with binaries) if you want to try it. Just drop me an email, or simply write a comment to this post, and I'm going to create one for you.&lt;br /&gt;&lt;br /&gt;Stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-4274090890304541152?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/4274090890304541152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=4274090890304541152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4274090890304541152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4274090890304541152'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/07/patterndb-updates-pushed-in-syslog-ng.html' title='patterndb updates pushed in syslog-ng OSE 3.1'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-535927933627618794</id><published>2009-07-08T09:43:00.002+02:00</published><updated>2009-07-08T09:47:10.010+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng rewrite use case: dpkg logs</title><content type='html'>One of my collegues (Péter Höltzl, he does all our trainings) has created a &lt;a href="http://peter.blogs.balabit.com/2009/07/one-small-syslog-ng-trick-dpkg-messages.html"&gt;nice detailed example&lt;/a&gt; on how to use the &lt;a href="http://wwwen.balabit/dl/html/syslog-ng-admin-guide_en.html/ch03s08.html"&gt;parser/rewrite framework&lt;/a&gt; to pull in yet another application into syslog: dpkg, the Debian package manager.&lt;br /&gt;&lt;br /&gt;If you are interested in what rewrite/parser can do for you, but didn't have the time to find out, the&lt;a href="http://peter.blogs.balabit.com/2009/07/one-small-syslog-ng-trick-dpkg-messages.html"&gt; blog post is worth a read&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-535927933627618794?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/535927933627618794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=535927933627618794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/535927933627618794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/535927933627618794'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/07/syslog-ng-rewrite-use-case-dpkg-logs.html' title='syslog-ng rewrite use case: dpkg logs'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-563457908046508710</id><published>2009-06-19T06:54:00.003+02:00</published><updated>2009-06-19T09:09:22.747+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng pipelines</title><content type='html'>The other day someone wanted a special syslog-ng macro that would expand into digit changing every 5 seconds (e.g. R_UNIXTIME % 5) and although I couldn't give an exact solution to his problem, I've came up with this configuration snippet:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rewrite p_date_to_values { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        set("$R_DATE", value("rdate"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;filter f_get_second_chunk {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        match('^... .. [0-9]+:[0-9]+:(?&amp;lt;rdate.second_tens&amp;gt;[0-9])[0-9]$' &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                      type(pcre) value('rdate'));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;};&lt;br /&gt;&lt;br /&gt;The way it works is as follows:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;the rewrite statement sets the name-value pair named "rdate" to $R_DATE (the macro)&lt;/li&gt;&lt;li&gt;the filter statement uses Perl Compatible Regular Expressions to parse the value of the "rdate" value and uses a named subpattern on the tens of seconds position to store that character in a value named "rdate.second_tens"&lt;/li&gt;&lt;li&gt;Later on in the configuration you can use "rdate.second_tens" just like any other macro/value.&lt;/li&gt;&lt;/ul&gt;This proves that the current rewrite/parser/filter subsystems are really powerful, however even though this proved to be possible, there are some lessons learned from this example:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the macro and name-value space should really converge to each, this would mean that the match() filter could directly match against the macro value $R_DATE without the need for the separate rewrite statement&lt;/li&gt;&lt;li&gt;when you are after a given goal, you don't really want to differentiate rewrite/parser/filter rules at all. The current syntax of using separate blocks for separate type of log processing elements is a pain.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;So I'm thinking about inventing yet another block, which simply wouldn't care what kind of processing element is added to it, something along the lines:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pipeline rdateseconds {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        set("$R_DATE", value("rdate"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        match('^... .. [0-9]+:[0-9]+:(?&lt;rdate.second_tens&gt;[0-9])[0-9]$' &lt;/rdate.second_tens&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                      type(pcre) value('rdate'));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And then:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;log {&lt;br /&gt;    source(src);&lt;br /&gt;    pipeline(rdateseconds);&lt;br /&gt;    destination(dst);&lt;br /&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Maybe I should even allow the creation of rewrite/parser/filter elements right there in the log statement:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;log {&lt;br /&gt;    source(src);&lt;br /&gt;    filter(facility(mail));&lt;br /&gt;    destination(dst);&lt;br /&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-563457908046508710?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/563457908046508710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=563457908046508710' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/563457908046508710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/563457908046508710'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/06/syslog-ng-pipelines.html' title='syslog-ng pipelines'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-3599965555726686798</id><published>2009-06-03T10:34:00.003+02:00</published><updated>2009-06-03T10:38:56.256+02:00</updated><title type='text'>Nordic Meet on Nagios 2009</title><content type='html'>I'm sitting at &lt;a href="http://nordicmeetonnagios.op5.org/"&gt;NMN 2009&lt;/a&gt; right now, and although the event title says it is a Nagios meet, I'm going to give a presentation on syslog-ng and the new features that 3.0 brings and an example on how to integrate syslog-ng and Nagios.&lt;br /&gt;&lt;br /&gt;If you are here and have a question just feel free to find me in the "BalaBit" T-Shirt. :) There's also &lt;a href="http://nordicmeetonnagios.op5.org/"&gt;live streaming on the conference website&lt;/a&gt;, so you can catch me at 15:50 Central European Time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-3599965555726686798?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/3599965555726686798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=3599965555726686798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3599965555726686798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3599965555726686798'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/06/nordic-meet-on-nagios-2009.html' title='Nordic Meet on Nagios 2009'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-5520571803442161329</id><published>2009-05-30T19:20:00.004+02:00</published><updated>2009-05-30T19:57:24.543+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng 4.0 roadmap plus release policy changes</title><content type='html'>I've updated the syslog-ng OSE roadmap on the syslog-ng &lt;a href="http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/roadmap/"&gt;webpage&lt;/a&gt; to include information about the upcoming syslog-ng version:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/roadmap/"&gt;http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/roadmap/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also, I'd like to bring the changed release/support policy to your attention, that you can read at the same location above. I'd like to introduce stable track and feature track releases, the first being supported for a long time, whereas feature track releases are only supported until the next feature/stable release is published. When a sufficient number of features were published via feature track releases, the last one becomes stable and the cycle continues. Note that feature releases are  &lt;span style="font-weight: bold;"&gt;NOT &lt;/span&gt;development snapshots, they are releases just like the major versions previously, the only difference is that instead of a &lt;a href="http://www.balabit.com/dl/html/syslog-ng-v3.0-guide-admin-en.html/ch01s04.html"&gt;large feature list&lt;/a&gt; like with &lt;a href="http://www.balabit.com/dl/html/syslog-ng-v3.0-guide-admin-en.html/ch01s04.html"&gt;syslog-ng 3.0&lt;/a&gt;, only a smaller set of changes are included.&lt;br /&gt;&lt;br /&gt;This makes it possible to publish features more often, always concentrating on a few of them at a time, instead of doing development for a long time and come out with a feature packed release. I hope to increase the pace of syslog-ng development with this change and also to cause less problem for users who prefer stability over features. Please read the details on the roadmap page.&lt;br /&gt;&lt;br /&gt;I've also opened the syslog-ng 3.1 repository and pushed it to our &lt;a href="http://git.balabit.hu/"&gt;git server&lt;/a&gt;. Right now there are no differences (except for the version number) between 3.0 and 3.1, I'm planning to integrate &lt;a href="http://marci.blogs.balabit.com/"&gt;Marton's&lt;/a&gt; message tagging and patterndb changes as soon as possible (his git tree is &lt;a href="http://git.balabit.hu/?p=marci/syslog-ng-3.0.git;a=summary"&gt;here&lt;/a&gt;). Hopefully the 3.1 cycle will be quite short as most of the things on the roadmap are already implemented, although scattered around in various public and private trees.&lt;br /&gt;&lt;br /&gt;With the opening of the 3.1 branch, I'm also obsoleting 2.0 (in the new support model two stable track versions are supported at any given time and we have 2.0, 2.1 and 3.0 right now), but that'll go in a separate post/announcement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-5520571803442161329?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/5520571803442161329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=5520571803442161329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5520571803442161329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5520571803442161329'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/05/syslog-ng-40-roadmap-plus-release.html' title='syslog-ng 4.0 roadmap plus release policy changes'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-1772451101289067784</id><published>2009-05-08T22:23:00.003+02:00</published><updated>2009-05-08T22:36:55.583+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng OSE 3.0.2 released</title><content type='html'>After a long time and a lot of accumulated bugfixes, I've pressed the "release" button and&lt;a href="https://www.balabit.com/network-security/syslog-ng/opensource-logging-system/upgrades/#"&gt; syslog-ng OSE 3.0.2 &lt;/a&gt;was published on our website. The first official version to feature binary packages for Linux and BSD platforms. Since there was a long time between 3.0.1 and 3.0.2 the &lt;a href="https://www.balabit.com/downchangelog.bbx?cl=/downloads/syslog-ng/open-source-edition/3.0.2/changelog-en.txt"&gt;changelog&lt;/a&gt; is quite large, however most of it are bugfixes, only some minor enhancements here and there.&lt;br /&gt;&lt;br /&gt;Hopefully I didn't miss any important bugs and problems. It must be much better stability/functionality wise than 3.0.1 was.&lt;br /&gt;&lt;br /&gt;The diffstat since 3.0.1:&lt;br /&gt; 150 files changed, 4332 insertions(+), 3000 deletions(-)&lt;br /&gt;&lt;br /&gt;You can also check the patches in our &lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-3.0.git;a=summary"&gt;git repository&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you are using the 3.0 branch you are really recommended to check out this release. If you are using anything earlier than 3.0 you are also recommended upgrade, syslog-ng 3.0 is revolutionary to previous versions in &lt;a href="http://http://wwwen.balabit/dl/html/syslog-ng-admin-guide_en.html/ch01s04.html"&gt;many ways&lt;/a&gt;, especially if you want to do more to your logs than merely store them in a plain text file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-1772451101289067784?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/1772451101289067784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=1772451101289067784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1772451101289067784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1772451101289067784'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/05/syslog-ng-ose-302-released.html' title='syslog-ng OSE 3.0.2 released'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-7220634790570652663</id><published>2009-05-08T15:30:00.003+02:00</published><updated>2009-05-08T15:31:19.456+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>OSDC 2009 slides</title><content type='html'>I've uploaded my OSDC 2009 presentation slides to&lt;br /&gt;&lt;a href="http://people.balabit.hu/bazsi/slides/osdc-2009-syslog-ng-3.0.odp"&gt;http://people.balabit.hu/bazsi/slides/osdc-2009-syslog-ng-3.0.odp&lt;/a&gt; Which has an example for processing iptables logs with db-parser() and putting the results in a customized SQL table.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-7220634790570652663?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/7220634790570652663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=7220634790570652663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7220634790570652663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7220634790570652663'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/05/osdc-2009-slides.html' title='OSDC 2009 slides'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-409395576841056424</id><published>2009-05-03T20:36:00.004+02:00</published><updated>2009-08-12T08:34:07.777+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='event'/><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>Nordic Nagios Meet 2009</title><content type='html'>I'm going to give a talk on syslog-ng on the upcoming Nordic Nagios Meet 2009. I expect the event to be great fun, just like &lt;a href="http://bazsi.blogs.balabit.com/2008/06/nordic-nagios-meet-08.html"&gt;last year&lt;/a&gt;. If you are in the Nordic region and use Nagios, rrdtools or syslog-ng, I recommend to pay a visit as you can meet the primary authors and some active contributors to these projects.&lt;br /&gt;&lt;br /&gt;If you are there and have anything to ask/talk about syslog-ng, just feel free to approach me, I'm probably going to wear a badge, so you can recognize me :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-409395576841056424?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/409395576841056424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=409395576841056424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/409395576841056424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/409395576841056424'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/05/nordic-nagios-meet-2009.html' title='Nordic Nagios Meet 2009'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-1161307370995269765</id><published>2009-05-03T20:22:00.006+02:00</published><updated>2009-05-03T20:43:02.273+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='event'/><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>OSDC 2009 and syslog-ng automatic testing</title><content type='html'>I've spent the last week in the nice city of Nuremberg where &lt;a href="http://www.netways.de/en/osdc/y2009/"&gt;Open Source Data Center Conference&lt;/a&gt; took place, organized by &lt;a href="http://www.netways.de/"&gt;Netways AG&lt;/a&gt;. I really liked the talks about &lt;a href="http://reductivelabs.com/products/puppet/"&gt;Puppet&lt;/a&gt;, &lt;a href="http://www.linbit.com/"&gt;DRBD&lt;/a&gt; and the description of the  &lt;a href="http://www.booking.com/"&gt;booking.com &lt;/a&gt;infrastructure which runs MySQL.&lt;br /&gt;&lt;br /&gt;Although I really enjoyed the conference I also had some free time to improve the automatic test program for syslog-ng, which now also covers TLS encrypted source and SQL destinations. I've also implemented a small script to collect coverage data of the testcases, thus right now I know that about 63% of syslog-ng is covered by automatic tests. (initially it was 55% but there were some low hanging fruits). I expect to raise this number easily to around 80%, then it'll probably become much more difficult to increase it further as the rest is error processing paths, and unless I come up with something to inject errors from the testcases those are difficult to test.&lt;br /&gt;&lt;br /&gt;Of course having a test suite is not a replacement for real-life, field testing, but nevertheless it makes it much easier to do releases as it ensures that no important functionality is broken completely.&lt;br /&gt;&lt;br /&gt;Based on this test infrastructure I'm going to release 3.0.2, after which I'll probably change the way I manage releases for syslog-ng, but I'll talk about that in a forthcoming post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-1161307370995269765?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/1161307370995269765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=1161307370995269765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1161307370995269765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1161307370995269765'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/05/osdc-2009-and-syslog-ng-automatic.html' title='OSDC 2009 and syslog-ng automatic testing'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-1805048601965689111</id><published>2009-05-03T08:55:00.004+02:00</published><updated>2009-05-03T09:43:50.500+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='private'/><title type='text'>My son is 7 weeks old</title><content type='html'>&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/o-ouRosdumU_dDspBYoYNg?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_HXml9RfutgE/SfwjXMQ2StI/AAAAAAAAAnI/m0I8EO0pCUk/s400/IMG_2460.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/bazsi77/DaniAprilis25?feat=embedwebsite"&gt;Dani-aprilis-25&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;The reason I was absent from this blog in the couple of last weeks is my now 7 weeks old son, Dániel. You can find a picture of him right here in the post, but some additional ones in my &lt;a href="http://picasaweb.google.com/bazsi77/"&gt;Picasa albums&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-1805048601965689111?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/1805048601965689111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=1805048601965689111' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1805048601965689111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1805048601965689111'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/05/my-son-is-7-weeks-old.html' title='My son is 7 weeks old'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_HXml9RfutgE/SfwjXMQ2StI/AAAAAAAAAnI/m0I8EO0pCUk/s72-c/IMG_2460.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-6089165742563021578</id><published>2009-03-23T22:15:00.004+01:00</published><updated>2009-03-23T22:39:31.468+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>Features that fell off the radar</title><content type='html'>I was long pondering with the problem that it is quite tricky to enter regexps into syslog-ng configuration file, since if you enclose the string in double quotes (e.g. in ""), the backslash character needs to be escaped.&lt;br /&gt;&lt;br /&gt;Since backslash is used in regexps quite often, it can become cumbersome to enter regexps like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;match("[a-z\\-]+");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note that the backslash is doubled because otherwise the syslog-ng string parser would pass the sequence to the regexps compiler as: "[a-z-]+" which is certainly different in meaning what the above expression says.&lt;br /&gt;&lt;br /&gt;I always remembered that syslog-ng also supports single quotes (aka apostrophes), but I remembered they behaved just as if you used normal quotation marks. Therefore I was thinking about a 3rd string format, one that would not require escaping.&lt;br /&gt;&lt;br /&gt;However I was reading the related code the other day, and found that apostrophes work exactly the way I planned this 3rd string syntax to behave: not to get in the way when entering regexps. In fact it behaves just like apostrophes in the UNIX shells. It does not care about escaping, it only cares about the terminating apostrophe.&lt;br /&gt;&lt;br /&gt;I was dealing with regexp related questions on the mailing list a lot, and the root cause of the problems was most times this escaping stuff, and I never knew the proper answer and behaviour is already in syslog-ng, I've just forgotten about it completely.&lt;br /&gt;&lt;br /&gt;And now as I check the &lt;a href="http://wwwen.balabit/dl/html/syslog-ng-admin-guide_en.html/bk01-toc.html"&gt;documentation for syslog-ng&lt;/a&gt;, it does not mention this syntax either, even though it had been present even in the 1.6.x times.&lt;br /&gt;&lt;br /&gt;So if you had trouble writing lots of regexps in syslog-ng configuration, and I told you to properly escape your regexps, please forgive me. syslog-ng is better than I've thought :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-6089165742563021578?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/6089165742563021578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=6089165742563021578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/6089165742563021578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/6089165742563021578'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/03/features-that-fell-off-radar.html' title='Features that fell off the radar'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8215138167003611209</id><published>2009-03-16T17:59:00.002+01:00</published><updated>2009-03-16T18:04:57.088+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='private'/><title type='text'>Newborn baby</title><content type='html'>After about two weeks being late, my son was born yesterday evening at 22:45CET. He weights 3270g and 56cm. Both the mother and the child are fine and I'm a proud new father.&lt;br /&gt;&lt;br /&gt;I guess this starts a section in my life, hopefully for the better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8215138167003611209?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8215138167003611209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8215138167003611209' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8215138167003611209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8215138167003611209'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/03/newborn-baby.html' title='Newborn baby'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-3986352314616335490</id><published>2009-03-14T11:06:00.003+01:00</published><updated>2009-03-14T11:17:38.362+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng OSE binary packages</title><content type='html'>I' happy to announce that BalaBit has decided to make the binary packages for syslog-ng OSE available for free.&lt;br /&gt;&lt;br /&gt;As you may know, BalaBit has various syslog-ng support packages and as a part of this service it prepared binary installation packages for different platforms. The access to these packages either required a support contract but could also be purchased separately for a yearly fee.&lt;br /&gt;&lt;br /&gt;With syslog-ng 3.0, the binary packages for syslog-ng OSE will become freely accessible.&lt;br /&gt;&lt;br /&gt;Since syslog-ng is an open source project, BalaBit planned to finish this task in the Open Source spirit: open and visible to all community members. This also means that the set of packages published with this e-mail is NOT yet release grade, rather it is more of a development snapshot of the current state of affairs. So please don't ruin your production systems with this package, it is more advisable to try them in a test environment (chroot or a dedicated test machine).&lt;br /&gt;&lt;br /&gt;With all these said, here is the link:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.balabit.com/network-security/syslog-ng/opensource-logging-system/upgrades/"&gt;https://www.balabit.com/network-security/syslog-ng/opensource-logging-system/upgrades/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please pick the release named "3.0HEAD". This contains a source snapshot (effectively git from two days ago), and a set of packages for SUSE 10, RHEL4/5, FreeBSD 6.x, Debian etch, and Linux generic.&lt;br /&gt;&lt;br /&gt;The binary packages contain all runtime dependencies needed to run syslog-ng, thus no further packages are required, it is an all-in-one package. The rpm/deb packages are prepared the same, they install syslog-ng in /opt/syslog-ng in order to avoid clashes with a system supplied syslog-ng daemon.&lt;br /&gt;&lt;br /&gt;There are two install kits for each platform:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;one that includes database drivers (dubbed as "server")&lt;/li&gt;&lt;li&gt;one that does not include database drivers (dubbed as "client")&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Currently there are no other differences between the packages, but later on there might be.&lt;br /&gt;&lt;br /&gt;With the current infrastructure in place, I'm confident that with each syslog-ng OSE release, I can publish the source AND binary packages at the same time.&lt;br /&gt;&lt;br /&gt;I'd really appreciate success/failure reports and also any kind of comment you may have.&lt;br /&gt;&lt;br /&gt;I'd like to release 3.0.2 together with its binary packages, let's hope that I get enough feedback on these packages so that I can do that.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-3986352314616335490?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/3986352314616335490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=3986352314616335490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3986352314616335490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3986352314616335490'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/03/syslog-ng-ose-binary-packages.html' title='syslog-ng OSE binary packages'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-1121034239225210435</id><published>2009-03-11T22:55:00.003+01:00</published><updated>2009-03-11T22:56:18.958+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IETF'/><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>First IETF syslog-protocol related question</title><content type='html'>I'm happy as I've received the first question about the new IETF specified syslog-protocol support. There's a need for that after all :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-1121034239225210435?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/1121034239225210435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=1121034239225210435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1121034239225210435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1121034239225210435'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/03/first-ietf-syslog-protocol-related.html' title='First IETF syslog-protocol related question'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-5775899886545832401</id><published>2009-03-11T08:31:00.005+01:00</published><updated>2009-08-12T08:34:41.520+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='event'/><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>Next event on the horizon</title><content type='html'>I didn't realize it is already that time of the year, but I was reminded that I'm going to give a talk on syslog-ng 3.0 on &lt;a href="http://www.netways.de/osdc/y2009/"&gt;Open Source Data Center conference&lt;/a&gt; in Nürnberg, Germany at the end of April. I'm going to talk about the nifty new features of syslog-ng 3.0.&lt;br /&gt;&lt;br /&gt;It would be very nice to meet syslog-ng users there. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-5775899886545832401?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/5775899886545832401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=5775899886545832401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5775899886545832401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5775899886545832401'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/03/next-event-on-horizon.html' title='Next event on the horizon'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-1850681268072347076</id><published>2009-03-03T10:58:00.005+01:00</published><updated>2009-03-11T08:31:04.151+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>An introduction to db-parser()</title><content type='html'>As promised on the mailing list here comes a short description of the new db-parser functionality of syslog-ng.  For an introduction to parsers in general see my previous &lt;a href="http://bazsi.blogs.balabit.com/2008/10/syslog-ng-message-parsing.html"&gt;blog post here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The aim for db-parser is two-fold:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;extract interesting information from a log message&lt;/li&gt;&lt;li&gt;attach tags to a log message for later classification.&lt;/li&gt;&lt;/ul&gt;For instance here's a log sample (lines broken for readability):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Feb 24 11:55:22 bzorp sshd[4376]: Accepted password for bazsi \&lt;br /&gt;      from 10.50.0.247 port 42156 ssh2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This message states that a user named "bazsi" has logged into the host named "bzorp" using SSH2 from the quoted IP and port. When you read this message  as a human, the event that happened is perfectly clear. However if it is not a human, but a piece of software that has to make out the meaning of the message, you need to identify the event (e.g. that a user login has happened) and the additional information associated with  the event (e.g. that he used 10.50.0.247 as the client).&lt;br /&gt;&lt;br /&gt;If I wanted to express this as name-value pairs, it would be something like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;event="user login", protocol="ssh2", \&lt;br /&gt;      client="10.50.0.247:42156", method="password"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Surely this latter form is easier to analyze than the first. So the first step of all kinds of log analysis is to extract information from messages. At a first glance, the easiest way to extract this information is the use of&lt;br /&gt;regular expressions. For example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;^\w{3} [ :0-9]{11} [._[:alnum:]-]+ sshd\[[0-9]+\]: Accepted \&lt;br /&gt;  (gssapi(-with-mic|-keyex)?|rsa|dsa|password|publickey|keyboard-interactive/pam) \&lt;br /&gt;  for [^[:space:]]+ from [^[:space:]]+ port [0-9]+( (ssh|ssh2))?&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Once you match with the regular expression above (courtesy of the &lt;a href="http://logcheck.org/"&gt;logcheck project&lt;/a&gt;), the parentheseses mark the variable part of the information that you can reference as $1, $2 and so on.&lt;br /&gt;&lt;br /&gt;The problem with regular expressions are several fold:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;they are difficult to write (just look at the example above)&lt;/li&gt;&lt;li&gt;they are even more difficult to understand, once written (again, please look at the example)&lt;/li&gt;&lt;li&gt;they are slow and they scale poorly with the number of regexps that we need to match against the incoming message stream.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Projects like &lt;a href="http://logcheck.org/"&gt;logcheck&lt;/a&gt; use regular expressions, but with the number of patterns increasing, the time needed to analyze logs skyrockets, which makes the whole thing unfeasible. Also, logcheck does not aim at extracting information from messages, it merely classifies them.&lt;br /&gt;&lt;br /&gt;Clearly a different approach is needed. And that's what db-parser in syslog-ng is.&lt;br /&gt;&lt;br /&gt;The db-parser() functionality of syslog-ng has the following objectives:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;use a database to match various messages (and not filters embedded in the configuration file)&lt;/li&gt;&lt;li&gt;classify events into logcheck-like classes (cracking, violation, ignore, unknown)&lt;/li&gt;&lt;li&gt;extract variable information from messages, and place those into name-value pairs&lt;/li&gt;&lt;li&gt;be fast, scale to a high number of events/sec and high number of patterns&lt;/li&gt;&lt;li&gt;integrate well to the rest of syslog-ng&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;db-parser() is a generic parser, fits nicely to the parser framework inside syslog-ng. You can use it just like csv-parser():&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;...&lt;br /&gt;parser p_db { db-parser(); };&lt;br /&gt;...&lt;br /&gt;log { source(src); parser(p_db); destination(d_parsed); };&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The database used by db-parser is an XML file that is read during syslog-ng startup. Here is an example entry from the db-parser() database:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;patterndb&amp;gt;&lt;br /&gt;&amp;lt;ruleset name='sshd'&amp;gt;&lt;br /&gt; &amp;lt;pattern&amp;gt;sshd&amp;lt;/pattern&amp;gt;&lt;br /&gt; &amp;lt;rules&amp;gt;&lt;br /&gt;   &amp;lt;rule provider='balabit' id='1' class='system'&amp;gt;&lt;br /&gt;     &amp;lt;patterns&amp;gt;&lt;br /&gt;       &amp;lt;pattern&amp;gt;Accepted rsa for@QSTRING:username: @from\&lt;br /&gt;@QSTRING:client_addr: @port @NUMBER:port:@ ssh2&amp;lt;/pattern&amp;gt;&lt;br /&gt;     &amp;lt;/patterns&amp;gt;&lt;br /&gt;   &amp;lt;/rule&amp;gt;&lt;br /&gt;   ...&lt;br /&gt; &amp;lt;/rules&amp;gt;&lt;br /&gt;&amp;lt;/ruleset&amp;gt;&lt;br /&gt;&amp;lt;/patterndb&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As you can see the database is structured, and the first selection criteria to apply is the name of the application (e.g. the value for $PROGRAM). Then each rule matches against the message payload (e.g. the value for $MESSAGE) with the syslog header stripped off. The rule specifies the classification (e.g. 'system' in the example above) and lists one or more patterns. If any of the patterns match, the rule is considered a  match.&lt;br /&gt;&lt;br /&gt;The variable part of the pattern is specified using special sequences, starting and ending with a '@' character. Within the enclosing '@' characters a colon separated list of parameters are listed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the parser to apply (QSTRING and NUMBER in the example above)&lt;/li&gt;&lt;li&gt;the name of the value to be extracted from this position&lt;/li&gt;&lt;li&gt;additional arguments to be passed to the parser&lt;/li&gt;&lt;/ul&gt;The available parsers are currently not really documented, but here is a&lt;br /&gt;list of them (you can find these in the radix.c source file):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IPv4: to parse an IPv4 address&lt;/li&gt;&lt;li&gt;NUMBER: to parse a number&lt;/li&gt;&lt;li&gt;STRING: to parse a word&lt;/li&gt;&lt;li&gt;ESTRING: to parse a sequence of characters ending with a specific character&lt;/li&gt;&lt;li&gt;QSTRING: to parse a string enclosed within quotes&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Of course further parsers can be added to the code easily. You don't have to specify monsterous regexps to match an IPv4 address anymore. Not to mention IPv6 :)&lt;br /&gt;&lt;br /&gt;If a message matches a rule, the db-parser() will make the following list of values defined for the given message:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;.classifier.class: logcheck-like classification&lt;/li&gt;&lt;li&gt;.classifier.rule_id: the ID of the database entry that matched&lt;/li&gt;&lt;li&gt;pattern specific values: variable part that get extracted from the message by patterns&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Each of the values defined previously can be referenced inside syslog-ng using a macro, e.g. you can do things like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# You can use them in a filter:&lt;br /&gt;filter f_class {&lt;br /&gt;match("system" value(".classifier.class"));&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;# but you can also use them in the names of files:&lt;br /&gt;destination d_parsed {&lt;br /&gt;file("/var/log/messages/${.classifier.class}.log");&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That's a rough skeleton of what db-parser() is. If you are interested, you can find the db-parser() implementation in syslog-ng OSE 3.0:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/"&gt;http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can also find some example pattern databases here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.balabit.com/downloads/files/patterndb/"&gt;http://www.balabit.com/downloads/files/patterndb/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We are also thinking about further ideas to enhance db-parser() and make it the foundation of an Open Source log analysis framework. Stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-1850681268072347076?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/1850681268072347076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=1850681268072347076' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1850681268072347076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1850681268072347076'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/03/as-promised-on-mailing-list-here-comes.html' title='An introduction to db-parser()'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-539055519296260309</id><published>2009-01-18T12:02:00.003+01:00</published><updated>2009-01-18T12:08:57.936+01:00</updated><title type='text'>GStaticMutex and AIX</title><content type='html'>If you use GLib on non-Linux platforms such as AIX and think that G_STATIC_MUTEX_INIT does nothing but zero-initialize the mutex, think twice. Although quite clearly &lt;a href="http://library.gnome.org/devel/glib/stable/glib-Threads.html#G-STATIC-MUTEX-INIT--CAPS"&gt;stated in the documentation&lt;/a&gt;, I thought I was smarter and used a GStaticMutex embedded in a structure that was zero initialized.&lt;br /&gt;&lt;br /&gt;If you look at the definition of G_STATIC_MUTEX_INIT on most platforms (Linux, Solaris, BSDs), it contains nothing but zeroes. This lead me to the impression that zero filling a GStaticMutex instance is enough to initialize it.&lt;br /&gt;&lt;br /&gt;In reality it isn't. On AIX this renders the mutex to be entirely useless without warnings or aborts. The results are of course bugs that are difficult to track down and fix.&lt;br /&gt;&lt;br /&gt;This took me an entire day to figure out, as the SQL driver in syslog-ng had this problem. This was fixed since, but if you are running syslog-ng on AIX with the SQL driver, be sure to &lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-3.0.git;a=commit;h=c62e656554681f365429f317fb93f2eb257145ca"&gt;have this patch applied&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-539055519296260309?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/539055519296260309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=539055519296260309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/539055519296260309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/539055519296260309'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/01/gstaticmutex-and-aix.html' title='GStaticMutex and AIX'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-7421632014912050345</id><published>2009-01-15T13:20:00.003+01:00</published><updated>2009-03-11T08:30:50.211+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng OSE 3.0 finally released</title><content type='html'>Finally I could take the time to actually announce the freshly released syslog-ng OSE 3.0 branch.  It was uploaded to our website during the winter holidays, but I had to integrate syslog-ng OSE to our new release infrastructure, which among others has a much &lt;a href="http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/upgrades/"&gt;nicer web interface&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is a summary on what is new in syslog-ng 3.0:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/ch01s04.html"&gt;http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/ch01s04.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-7421632014912050345?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/7421632014912050345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=7421632014912050345' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7421632014912050345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7421632014912050345'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2009/01/syslog-ng-ose-30-finally-released.html' title='syslog-ng OSE 3.0 finally released'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-584973424044275845</id><published>2008-12-11T23:41:00.004+01:00</published><updated>2009-03-11T08:30:39.087+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>include file support implemented</title><content type='html'>I've implemented basic include file/directory functionality in syslog-ng, using the format numbered second in my &lt;a href="http://bazsi.blogs.balabit.com/2008/12/include-syntax.html"&gt;previous post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've now pushed an expermental implementation of include files in the syslog-ng OSE 3.0 repository, in a separate branch called 'include'.&lt;br /&gt;&lt;br /&gt;E.g. in order to test the code, please clone the syslog-ng 3.0 repository:&lt;br /&gt;&lt;br /&gt;$ git clone git://git.balabit.hu/bazsi/syslog-ng-3.0.git&lt;br /&gt;&lt;br /&gt;Then check out the 'include' branch:&lt;br /&gt;&lt;br /&gt;$ git checkout --track -b include origin/include&lt;br /&gt;&lt;br /&gt;Then compile as usual. I didn't want to integrate it right into syslog-ng OSE 3.0 tree as I'd like to release that first as 3.0.1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-584973424044275845?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/584973424044275845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=584973424044275845' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/584973424044275845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/584973424044275845'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/12/include-file-support-implemented.html' title='include file support implemented'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-4128236871698232257</id><published>2008-12-10T16:16:00.003+01:00</published><updated>2008-12-10T16:25:38.105+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>include syntax</title><content type='html'>I'm about to implement configuration file includes, and although the implementation is quite straightforward, the syntax to be used is something to give a thought or two.&lt;br /&gt;&lt;br /&gt;Currently the syslog-ng configuration file consists of statements, each with the following basic format:&lt;br /&gt;&lt;br /&gt;stmt [&lt;id&gt;] { ... };&lt;br /&gt;&lt;br /&gt;The "id" gives a unique identifier of the statement, and the braces enclose the contents. Currently only the ID part is optional, the braces are always there.&lt;br /&gt;&lt;br /&gt;To make the include statement consistent with that, it'd have to look something like:&lt;br /&gt;&lt;br /&gt;include { "filename" };&lt;br /&gt;&lt;br /&gt;Obviously I don't like this too much, as it is way different from all other applications permitting the use of include statements. What about this:&lt;br /&gt;&lt;br /&gt;include "filename";&lt;br /&gt;&lt;br /&gt;E.g. use the ID part the name of the file to be included. I like this better. A third option might be the use of 'pragma' directives, currently only used to specify the file format compatibility in the case of syslog-ng 3.0:&lt;br /&gt;&lt;br /&gt;@version: 3.0&lt;br /&gt;&lt;br /&gt;This'd mean that include statements would look like this:&lt;br /&gt;&lt;br /&gt;@include: filename&lt;br /&gt;&lt;br /&gt;The problem with this last option is that pragmas are currently only processed at the beginning of the configuration file. So that code should also be generalized.&lt;br /&gt;&lt;br /&gt;I  think I'd go with the second option, that's not completely inconsistent, but still the most intuitive to use.&lt;br /&gt;&lt;br /&gt;What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-4128236871698232257?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/4128236871698232257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=4128236871698232257' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4128236871698232257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4128236871698232257'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/12/include-syntax.html' title='include syntax'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8093903170133272143</id><published>2008-11-23T13:55:00.007+01:00</published><updated>2008-11-23T17:27:10.934+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng 3.0 and SNMP traps</title><content type='html'>Last time I've written about how syslog-ng is able to change message contents. I thought it'd be useful to give you a more practical example, instead of a generic description.&lt;br /&gt;&lt;br /&gt;It is quite common to convert SNMP traps to syslog messages. The easiest implementation is to run snmptrapd and have it create a log message based on the trap. There's a small issue though: snmptrapd uses the UNIX syslog() API, and as such it is not able to propagate the originating host of the SNMP trap to the hostname portion of the syslog message. This means that all traps are logged as messages coming from the host running snmptrapd, and the hostname information is part of the message payload.&lt;br /&gt;&lt;br /&gt;Of course it'd be much easier to process syslog messages, if this were not the case.&lt;br /&gt;&lt;br /&gt;A solution would be to patch snmptrapd to send complete syslog frames, but that would require changing snmptrapd source. The alternative is to use the new parse and rewrite features of syslog-ng 3.0.&lt;br /&gt;&lt;br /&gt;First, you need to filter snmptrapd messages:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;filter f_snmptrapd { program("snmptrapd"); };&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then we'd need to grab the first field of the message payload, where snmptrapd is configured to put it:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;rewrite r_snmptrapd {&lt;br /&gt;    subst("^([^ ]+) (.*)$ ", "${2}");&lt;br /&gt;    set("${1}" value("HOST"));&lt;br /&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Both rewrite expression kinds are demonstrated here:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;subst() has two arguments: the first is a regexp to search for, the second is a template to be substituted if there's a match&lt;br /&gt;&lt;/li&gt;&lt;li&gt;set() has a single argument: a template to be used as the new value&lt;/li&gt;&lt;/ul&gt;Rewrite rules operate by the contents of the $MESSAGE value by default, which holds the message payload. Of course this can be changed by specifying the value() option. The notion 'value' in syslog-ng 3.0 refers to a name-value pair, in syslog-ng 3.0 every message is composed of a set of name-value pairs.  The names of standard values match the name of the corresponding macro, but without the '$' sign.&lt;br /&gt;&lt;br /&gt;Please NOTE that the new value is a template which makes it possible to use macros such as $HOST or $MESSAGE defined by syslog-ng.&lt;br /&gt;&lt;br /&gt;Now let's wire the complete configuration together:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;filter f_snmptrapd { program("snmptrapd"); };&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;rewrite r_snmptrapd { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    subst("^([^ ]+) (.*)$ ", "${2}"); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    set("${1}" value("HOST")); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; log { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    source(s_all); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    filter(f_snmptrapd);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    rewrite(r_snmptrapd);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    destination(d_all);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    flags(final);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  log { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     source(s_all); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     destination(d_all);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     flags(final);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; };&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course this is only an example of the power of what syslog-ng is now capable of doing. Please let me know if you can think of other uses.&lt;br /&gt;&lt;br /&gt;The current 3.0 branch of syslog-ng has not been released yet, it is available in the git repository at &lt;a href="http://git.balabit.hu/"&gt;git.balabit.hu&lt;/a&gt;, and also as &lt;a href="http://www.balabit.hu/downloads/files/syslog-ng/sources/3.0/src-snapshot/"&gt;nightly snapshots&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'd be grateful for any kind of feedback you might have, please post it either as comments on this blog, or to the mailing list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8093903170133272143?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8093903170133272143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8093903170133272143' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8093903170133272143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8093903170133272143'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/11/syslog-ng-30-and-snmp-traps.html' title='syslog-ng 3.0 and SNMP traps'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-4200416948464477212</id><published>2008-11-08T09:05:00.003+01:00</published><updated>2008-11-23T13:55:36.718+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng statistics</title><content type='html'>For a long time I meant to give the "log statistics" feature of syslog-ng an overhaul, and finally with the advent of syslog-ng 3.0, this was done.&lt;br /&gt;&lt;br /&gt;I'm not sure all of you know, but even earlier syslog-ng versions (2.1 and 2.0) did collect some per-source and per-destination statistics. These were reported periodically in the system log. The problem with this approach that it didn't really scale: with a large configuration the statistics message could become kilobytes long, and parsing this information from a file possibly several gigabytes in size is daunting.&lt;br /&gt;&lt;br /&gt;syslog-ng 3.0 has two important changes in this area: it adds several new kinds of counters (like per-host counters), and a UNIX domain socket where you can query the current status of these counters.&lt;br /&gt;&lt;br /&gt;As counters certainly have an overhead, you can now control how much statistics you want to gather. The new stats_level() option has three levels for now:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;stats_level(0) is basically the same as earlier syslog-ng versions, per-source and per-destination statistics are kept here. This is the default.&lt;/li&gt;&lt;li&gt;stats_level(1) adds new counters without a big overhead, that is it adds counters for TCP connections, but does not keep per-host counters&lt;/li&gt;&lt;li&gt;stats_level(2) adds counters that can have a measurable performance impact, it adds for example per-host (as in $HOST) counters and also keeps track of the time the last message was received from a given host. These counters usually require an hash table lookup in the fastpath.&lt;/li&gt;&lt;/ol&gt;Once you have the counters, you can still use the venerable "log statistics" message, by setting the stats_freq() option which defaults to 10 minutes, just like in earlier versions.&lt;br /&gt;&lt;br /&gt;However if you don't want to dig the logs produced by syslog-ng, you can also use the new UNIX domain socket at /var/run/syslog-ng/syslog-ng.ctl (the path might depend on the compilation options).&lt;br /&gt;&lt;br /&gt;If you connect to this socket using netcat (some netcat versions do support UNIX domain sockets), and you send a "STATS" command to it, you get the list of counters.&lt;br /&gt;&lt;br /&gt;There are no proper, command line clients for the UNIX domain channel yet, but if you have some scripting ability, you can start gather statistics easily, without the hassles of parsing log files, right after installing a syslog-ng 3.0 snapshot. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-4200416948464477212?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/4200416948464477212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=4200416948464477212' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4200416948464477212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4200416948464477212'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/11/syslog-ng-statistics.html' title='syslog-ng statistics'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-346206979974193756</id><published>2008-10-30T11:45:00.006+01:00</published><updated>2008-11-02T21:39:44.391+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng message parsing</title><content type='html'>Earlier this month, I announced the new syslog-ng 3.0 git tree, adding a lot of new features to syslog-ng Open Source Edition. I thought it'd be useful to describe the new features with some more details, so this time I'd write about message parsing.&lt;br /&gt;&lt;br /&gt;First of all, the message structure was a bit generalized in syslog-ng. Earlier it was encapsulating a syslog message and had little space to anything beyond that. That is, every log message that syslog-ng handled had &lt;span style="font-weight: bold;"&gt;date,&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;host&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;program&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;message&lt;/span&gt; fields, but syslog-ng didn't care about message contents.&lt;br /&gt;&lt;br /&gt;This has changed, a LogMessage became a set of &lt;span style="font-weight: bold;"&gt;name-value pairs&lt;/span&gt;, with some "built-in" pairs that correspond to the parts of a syslog message.&lt;br /&gt;&lt;br /&gt;The aim with this change is:  new name-value pairs can be associated with messages through the use of a parsing. It is now possible to parse non-syslog logs and use the columns the same way you could do it with syslog fields. Use them in the name of files, SQL tables or columns in an SQL table.&lt;br /&gt;&lt;br /&gt;Here is an example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;parser p_parse_apache_logs { ... };&lt;br /&gt;&lt;br /&gt;destination d_peruser { &lt;br /&gt;  file("/var/log/apache/${APACHE.USER_NAME}.log"); &lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;log { &lt;br /&gt;  source(s_local); &lt;br /&gt;  parser(p_parse_apache_logs); &lt;br /&gt;  destination(d_peruser_files); &lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This means that you can "extract" information from the payload and use this information for naming destination files or SQL tables, basically anywhere where you can use a template.&lt;br /&gt;&lt;br /&gt;There are currently two parsers implemented in syslog-ng:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a generic CSV (comma separated-values) parser, which can be parameterized to basically accept any kind of formally formatted input (so tab/space separated is also ok)&lt;/li&gt;&lt;li&gt;a database based parser, which uses a log pattern database to recognize messages belonging to specific applications and extract information on that.&lt;/li&gt;&lt;/ul&gt;Since the database based parser is quite complex so it deserves its own post, I'd skip that for now. The CSV parser has the following options:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;template: defines the input to be used for parsing, can use macros&lt;br /&gt;&lt;/li&gt;&lt;li&gt;columns: list of strings, the names to be associated with the columns parsed&lt;br /&gt;&lt;/li&gt;&lt;li&gt;delimiters: the set of characters that delimit columns&lt;br /&gt;&lt;/li&gt;&lt;li&gt;quotes or quote_pairs: the quote characters to support, quote_pairs makes it possible to use different start and end quote (like enclosing fields in braces)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;null: the null value which if found should substituted with an empty string&lt;/li&gt;&lt;li&gt;flags: see the documentation&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The csv parser is capable of parsing real CSV data, e.g. it knows about quoting rules. So if you have an application that logs into files using space or comma separated data, you can almost be sure that you can process it with CSV parser.&lt;br /&gt;&lt;br /&gt;Here is an example that parses Apache logs, so that each field in the message becomes a name-value pair:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;parser p_apache {&lt;br /&gt;csv-parser(columns("APACHE.CLIENT_IP",&lt;br /&gt;                "APACHE.IDENT_NAME",&lt;br /&gt;                "APACHE.USER_NAME",&lt;br /&gt;                "APACHE.TIMESTAMP",&lt;br /&gt;                "APACHE.REQUEST_URL",&lt;br /&gt;                "APACHE.REQUEST_STATUS",&lt;br /&gt;                "APACHE.CONTENT_LENGTH",&lt;br /&gt;                "APACHE.REFERER",&lt;br /&gt;                "APACHE.USER_AGENT",&lt;br /&gt;                "APACHE.PROCESS_TIME",&lt;br /&gt;                "APACHE.SERVER_NAME")&lt;br /&gt;               # flags:&lt;br /&gt;               #   escape-none,escape-backslash,escape-double-char,&lt;br /&gt;               #   strip-whitespace&lt;br /&gt;               flags(escape-double-char,strip-whitespace)&lt;br /&gt;               delimiters(" ")&lt;br /&gt;               quote-pairs('""[]')&lt;br /&gt;    );&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;parser p_apache_timestamp {&lt;br /&gt;    csv-parser(columns("APACHE.TIMESTAMP.DAY",&lt;br /&gt;                       "APACHE.TIMESTAMP.MONTH",&lt;br /&gt;                       "APACHE.TIMESTAMP.YEAR",&lt;br /&gt;                       "APACHE.TIMESTAMP.HOUR",&lt;br /&gt;                       "APACHE.TIMESTAMP.MIN",&lt;br /&gt;                       "APACHE.TIMESTAMP.MIN",&lt;br /&gt;                       "APACHE.TIMESTAMP.ZONE")&lt;br /&gt;               delimiters("/: ")&lt;br /&gt;               flags(escape-none)&lt;br /&gt;               template("${APACHE.TIMESTAMP}"));&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The first parser splits the major fields, and the second splits the timestamp to manageable pieces. You can then bind this parser to a log path of your choosing:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;log {&lt;br /&gt;  source(s_apache);&lt;br /&gt;  parser(p_apache); parser(p_apache_timestamp);&lt;br /&gt;  destination(d_apache);&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As you can see the second parser uses a value created by the previous parser, using its template() option. Once this parsing is done, you can use any of the values created this way&lt;br /&gt;in your d_apache destination, be it the name of the file, or a column in an SQL table.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-346206979974193756?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/346206979974193756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=346206979974193756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/346206979974193756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/346206979974193756'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/10/syslog-ng-message-parsing.html' title='syslog-ng message parsing'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8301769780265070264</id><published>2008-10-08T21:36:00.005+02:00</published><updated>2009-08-12T08:34:27.321+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='event'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='tproxy'/><title type='text'>6th Netfilter workshop</title><content type='html'>I've spent my last week in Paris, where this year's Netfilter Workshop was held. I wanted to take this opportunity to thank Eric of &lt;a href="http://www.inl.fr/"&gt;INL&lt;/a&gt; for the organization. It was a wonderful and useful event, and I enjoyed it a lot. It is always nice to meet these wonderful guys.&lt;br /&gt;&lt;br /&gt;Here are some blog posts about the same event:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;INL: &lt;a href="http://nfws.inl.fr/en/"&gt;http://nfws.inl.fr/en/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;DaveM: &lt;a href="http://vger.kernel.org/%7Edavem/cgi-bin/blog.cgi/2008/10/05#nfws2008"&gt;http://vger.kernel.org/~davem/cgi-bin/blog.cgi/2008/10/05#nfws2008&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Patrick McHardy: &lt;a href="http://people.netfilter.org/kaber/weblog/"&gt;http://people.netfilter.org/kaber/weblog/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Finally we could get &lt;a href="http://www.balabit.com/support/community/products/tproxy/"&gt;Transparent Proxying&lt;/a&gt; merged, now queued for 2.6.28.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8301769780265070264?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8301769780265070264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8301769780265070264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8301769780265070264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8301769780265070264'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/10/6th-netfilter-workshop.html' title='6th Netfilter workshop'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8623156189753935460</id><published>2008-10-01T16:03:00.002+02:00</published><updated>2008-10-01T16:11:16.097+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng OSE 3.0 git tree published</title><content type='html'>I could finally get my syslog-ng 3.0 OSE tree published at git.balabit.hu. No nightly snapshots yet and I still have to prepare a formal announcement to post on the mailing list, but for those I teased with functions from the 3.0 branch, here it comes.&lt;br /&gt;&lt;br /&gt;From the top of my head, OSE 3.0 supports:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;TLS encrypted channels,&lt;/li&gt;&lt;li&gt;syslog message rewrite,&lt;/li&gt;&lt;li&gt;parse parts of the syslog message and use the parsed parts in macros&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PCRE and glob filters (in addition to POSIX regexps),&lt;/li&gt;&lt;li&gt;support for the new IETF syslog protocols,&lt;/li&gt;&lt;li&gt;program sources,&lt;/li&gt;&lt;li&gt;new statistics framework that can be queried using UNIX domain sockets&lt;/li&gt;&lt;li&gt;etc.&lt;/li&gt;&lt;/ul&gt;I just wanted to get the word out. Success/failure reports would be appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8623156189753935460?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8623156189753935460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8623156189753935460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8623156189753935460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8623156189753935460'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/10/syslog-ng-ose-30-git-tree-published.html' title='syslog-ng OSE 3.0 git tree published'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2906916734797303996</id><published>2008-06-30T16:30:00.003+02:00</published><updated>2008-11-08T09:04:23.403+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='pcre'/><title type='text'>Migrate over to PCRE?</title><content type='html'>As of now the development of the generic rewrite feature has been completed in one of my private git repositories. The new code uses PCRE and I'm somewhat undecided how to move forward with PCRE.&lt;br /&gt;&lt;br /&gt;For those who might not know PCRE is an implementation of regular expressions and is an acronym for "Perl Compatible Regular Expressions". PCRE adds a lot more features and seems to perform better than its POSIX equivalent.&lt;br /&gt;&lt;br /&gt;So the situation is as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;various filters use POSIX regexps&lt;/li&gt;&lt;li&gt;rewrite uses PCRE&lt;/li&gt;&lt;/ul&gt;This is not a very consistent combination, thus I'm planning to add PCRE support for filters too. The only question is whether it is needed to have two independent regexp styles in syslog-ng in the long run.&lt;br /&gt;&lt;br /&gt;If I decide that one of them is enough, then I'd deprecate POSIX style regexps in filters and wouldn't implement POSIX in rewrite rules. This combination would yield a syslog-ng that would give warnings when POSIX-style regular expressions are in use and in a forthcoming release I'd change the default regexp style to PCRE, and yet another syslog-ng release later, I'd phase out POSIX completely.&lt;br /&gt;&lt;br /&gt;If the decision is to keep them both in the long run, it would mean that I'd need to implement POSIX style regexps for rewrite rules as well. This would probably the least intrusive for users, but also a lot more work. Also, this would allow adding other filtering options like globbing or prefix search.&lt;br /&gt;&lt;br /&gt;What do you think? Is the addition of modular search algorithms worth it?&lt;br /&gt;&lt;br /&gt;Please send your opinions to the mailing list: syslog-ng@lists.balabit.hu&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2906916734797303996?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2906916734797303996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2906916734797303996' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2906916734797303996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2906916734797303996'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/06/migrate-over-to-pcre.html' title='Migrate over to PCRE?'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2983051781865877507</id><published>2008-06-08T14:14:00.005+02:00</published><updated>2009-08-12T08:34:54.155+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='event'/><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>Nordic Nagios Meet '08</title><content type='html'>I've spent the good part of last week in Stockholm at a &lt;a href="http://www.nordicnagiosmeet.wmr.se/"&gt;gathering&lt;/a&gt; of Nagios users and developers. I was invited to give a talk on syslog-ng and security issues about collecting syslog data centrally as syslog-ng is often used hand-in-hand with Nagios.&lt;br /&gt;&lt;br /&gt;This was my first time in Sweden and I can say that Swedish people are the most hospitable nation I met so far, and Stockholm is a very nice city. Also &lt;a href="http://www.op5.com/"&gt;op5&lt;/a&gt;, the company organizing the event did their best to make us - the speakers - very welcome.&lt;br /&gt;&lt;br /&gt;Thanks op5.&lt;br /&gt;&lt;br /&gt;If you have a chance visit Stockholm I'd recommend to do so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2983051781865877507?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2983051781865877507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2983051781865877507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2983051781865877507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2983051781865877507'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/06/nordic-nagios-meet-08.html' title='Nordic Nagios Meet &apos;08'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-725369416655223909</id><published>2008-04-07T20:37:00.001+02:00</published><updated>2008-04-18T18:16:50.169+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>First incarnation of LogStore</title><content type='html'>I've disappeared from this blog in the recent month but I've not been idle: I've implemented initial support for LogStore in the Premium Edition of syslog-ng.&lt;br /&gt;&lt;br /&gt;LogStore is a binary log file format, in semantics very similar to a plain log file. But the format allows much more:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;on-line compression via gzip,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;encryption via AES and X.509 certificates,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;integrity protection via hmac-sha1.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And furthermore: it is indexed based on time, and it is quite efficient to look for a specific time range in GBs of log data. I'm quite satisfied, although there are some more work left to be done, for instance the query interface for the time based indexing is not completed.&lt;br /&gt;&lt;br /&gt;In use it is quite simple: replace the "file" destination with "logstore" and you are done. More or less the same amount of options are supported: macro based file names, template based formatting, etc.&lt;br /&gt;&lt;br /&gt;I'm still pondering with the idea of storing the complete internal representation of the logrecord in serialized form, so it'd be possible to perform template() based formatting in off-line mode.&lt;br /&gt;&lt;br /&gt;This code will be released as an experimental part of syslog-ng PE 2.1 and will be finalized in syslog-ng PE 2.2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-725369416655223909?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/725369416655223909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=725369416655223909' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/725369416655223909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/725369416655223909'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/04/first-incarnation-of-logstore.html' title='First incarnation of LogStore'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2720084391460229210</id><published>2008-02-28T16:39:00.000+01:00</published><updated>2008-04-18T18:19:30.876+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>libdbi patches online</title><content type='html'>I've published our set of dbi and dbi-drivers patches in a git repository to push changes upstream.  The patches were updated against the latest libdbi versions.&lt;br /&gt;&lt;br /&gt;You can find these repositories at the BalaBit's git server, more precisely:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;git://git.balabit.hu/bazsi/libdbi.git&lt;/li&gt;&lt;li&gt;git://git.balabit.hu/bazsi/libdbi-drivers.git&lt;/li&gt;&lt;/ul&gt;The "master" branch contains the direct import of the libdbi CVS tree, our fixes are in the 'upstream-fixes' branch. This setup will make it easier for me to publish patches and regularly rebase the not-yet-merged set against the latest upstream.&lt;br /&gt;&lt;br /&gt;Among other small things, you can find a quite important patch against the Oracle driver. Without this patch Oracle 10.2 (the server!) segfaults and dumps core. So beware.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2720084391460229210?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2720084391460229210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2720084391460229210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2720084391460229210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2720084391460229210'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/02/libdbi-patches-online.html' title='libdbi patches online'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-276287520952812409</id><published>2008-02-18T22:33:00.001+01:00</published><updated>2008-02-18T22:55:54.261+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scb'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='Zorp'/><category scheme='http://www.blogger.com/atom/ns#' term='sftp'/><title type='text'>SFTP proxy</title><content type='html'>I installed Google analytics on this blog, and as it seems a number of people come here looking for "SFTP proxy", because of an old article I posted last July. Those interested primarily in my syslog-ng related articles may skip this post as this contains completely unrelated information, others please read on. :)&lt;br /&gt;&lt;br /&gt;For those who don't know: &lt;a href="http://tools.ietf.org/id/draft-ietf-secsh-filexfer-13.txt"&gt;SFTP&lt;/a&gt; is a file-system sharing protocol running on top of SSH. It is not yet an IETF standard, however more and more enterprises replaces the aging FTP protocol for SFTP. The reasons are numerous:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;FTP uses plain text passwords,&lt;/li&gt;&lt;li&gt;FTP uses multiple TCP connections for file transfer,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;FTP has inherent problems like bounce attacks,&lt;/li&gt;&lt;li&gt;FTP does not encrypt traffic,&lt;/li&gt;&lt;li&gt;FTP only supports filesystem metadata (last modification time, etc.) via extensions&lt;/li&gt;&lt;li&gt;and others.&lt;/li&gt;&lt;/ul&gt;All-in-all SFTP is newer, shinier and designed better. There's one problem though: SFTP uses SSH and SSH is encrypted. But wait, I said this is a drawback for FTP. Right, using encryption is good and bad at the same time. Good, because it prevents eavesdropping, bad because it cannot be controlled by security devices at the network perimeter.&lt;br /&gt;&lt;br /&gt;Sometimes is it quite useful to see what's going on in a traffic crossing the network borders: you can restrict the usage of SFTP to a set of trustworthy clients, not for everyone. And even them can be controlled by enabling a full transaction log.&lt;br /&gt;&lt;br /&gt;If your enterprise allows FTP traffic, there are tools to log FTP transfers, and in extreme cases to log actual data. For SFTP this is not so simple, once you permit outgoing port 22 (used for SSH), complete file system sharing can cross your firewall without you noticing. Scary, eh?&lt;br /&gt;&lt;br /&gt;There are currently two solutions for this problem:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Disable SSH and use FTP instead. This has the drawback that passwords travel in unencrypted form, and the traffic itself is easily sniffable.&lt;/li&gt;&lt;li&gt;Use something like our &lt;a href="http://www.balabit.com/network-security/scb/"&gt;Shell Control Box&lt;/a&gt; product, it is based on Zorp, with a complete SSH man-in-the-middle implementation, controls various SSH channels, limits what can get through, can log transaction data, and furthermore: at the end of the day the transmitted data is still encrypted on untrusted networks.&lt;/li&gt;&lt;/ol&gt;SCB is not using any of the OpenSSH code, it is a complete reimplementation of the SSH protocol stack, and because of Zorp all of it can run transparently (even in bridge mode) working in concert with your other firewalls/security devices.&lt;br /&gt;&lt;br /&gt;So if you need to install proper SFTP controls, be sure to check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-276287520952812409?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/276287520952812409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=276287520952812409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/276287520952812409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/276287520952812409'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/02/sftp-proxy.html' title='SFTP proxy'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8894871107491264649</id><published>2008-02-13T20:55:00.000+01:00</published><updated>2008-02-13T21:05:14.993+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng feature sheet</title><content type='html'>We were asked to publish some more detailed "syslog-ng feature sheet". Albeit it might go into syslog-ng specific details we tried to be as generic as possible. And certainly everyone doing such feature sheets is biased, just as we were :)&lt;br /&gt;&lt;br /&gt;It is available at &lt;a href="http://www.balabit.com/network-security/syslog-ng/features/detailed/"&gt;http://www.balabit.com/network-security/syslog-ng/features/detailed/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8894871107491264649?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8894871107491264649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8894871107491264649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8894871107491264649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8894871107491264649'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/02/syslog-ng-feature-sheet.html' title='syslog-ng feature sheet'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-587740979845223429</id><published>2008-02-08T09:17:00.000+01:00</published><updated>2008-02-08T11:11:59.424+01:00</updated><title type='text'>Redesigning syslog-ng internals</title><content type='html'>As promised earlier on the mailing list, I am designing the new message rewrite capabilities in syslog-ng.&lt;br /&gt;&lt;br /&gt;As you probably know, syslog-ng currently supports message templates for each destination, and this template can be used to rewrite the message payload. Each template may contain literal text and macro references. Macros can either expand to parts of the original message or parts that were matched using a regexp.&lt;br /&gt;&lt;br /&gt;Here's an example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: courier new;"&gt;destination d_file { file("/var/log/messages" template("&lt;$PRI&gt; $HOST $MSG -- literal text $1\n")); };&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The example above uses the format string specified at template to define the log file structure. The words starting with '$' are macros and expand to well defined parts of the original message. Numbered macros like $1 above are substituted to the last regular expression matches, all other characters are put into the result intact.&lt;br /&gt;&lt;br /&gt;While this functionality is indeed useful, it is somewhat limited: you cannot use sed-like search-and-replace functions that some of the &lt;a href="http://marc.info/?l=syslog-ng&amp;amp;m=119645466620684&amp;amp;w=2"&gt;users requested&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My problem with rewriting message contents was somewhat fundamental: my original intention was to keep message pipelines independent from each other. If the message would be changed while traversing one pipe, this change would be propagated to the pipelines processed later.&lt;br /&gt;&lt;br /&gt;This behaviour is sometimes desirable, sometimes directly unwanted. In the case of anonymization the changes would have to be global, e.g. all log paths would receive the anonimized messages, but if you want to store an unanomized version of the logs for troubleshooting, you want the original message, not a stripped version.&lt;br /&gt;&lt;br /&gt;The solution I came up with is to generalize the log pipeline concept. Currently a pipe connects one or more sources with one or more destinations with some filtering added. In the new concept everything becomes a pipe element:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a filter is a pipe that either drops or forwards messages&lt;/li&gt;&lt;li&gt;a destination is a pipe that sends the message to a specific destination and the forwards the message to the next node&lt;/li&gt;&lt;/ul&gt;The current log statement becomes a pipeline:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: courier new;"&gt;source -&gt; filter1 -&gt; filter2 -&gt; ... -&gt; filterN -&gt; destination1 -&gt; destination2 -&gt; ... -&gt; destinationN&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Each pipeline may fork into several pipes, e.g. it is possible to do the following:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: courier new;"&gt;                                                 destination1 -&gt; destination2 -&gt; ... -&gt; destinationN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                                                /&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;source -&gt; filter1 -&gt; filter2 -&gt; ... -&gt; filterN -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                                                \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                                                 destination1' -&gt; destination2' -&gt; ... -&gt; destinationN'&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This is still nothing new, but consider this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: courier new;"&gt;                                              destination1 -&gt; destination2 -&gt; ... -&gt; destinationN&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;                                             /&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;source -&gt; filter1 -&gt; ... -&gt; ... -&gt; rewrite -&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;                                             \&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;                                              destination1' -&gt; destination2' -&gt; ... -&gt; destinationN'&lt;/span&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This means that rewrite happens before forking to the two set of destinations, they both receive the rewritten message. However if the user had another global pipeline in her configuration, it would start with the original, unchanged message.&lt;br /&gt;&lt;br /&gt;In syslog-ng configuration file speak, this would be something like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;log { source(s_all); rewrite(r_anonimize);&lt;br /&gt;          log { filter(f_anonimized_files); destination(d_files); flags(final); };&lt;br /&gt;          log { filter(f_anonimized_rest); destination(d_rest_log); };&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;log { source(s_all); destination(d_troubleshoot_logs); };&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;E.g. you can have log statements embedded into another log statement, log statements at the same level receive the same log message, and have retain the power of filters and log pipe  construction at each level.&lt;br /&gt;&lt;br /&gt;Not to mention that message pipelines are a natural place for paralellization, e.g. each log statement could be processed by a separate thread, which becomes necessary if the message transformations become CPU intensive.&lt;br /&gt;&lt;br /&gt;Whew, this was a long post, expect another post about the message parsing capability I basically finished already.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-587740979845223429?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/587740979845223429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=587740979845223429' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/587740979845223429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/587740979845223429'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/02/redesigning-syslog-ng-internals.html' title='Redesigning syslog-ng internals'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-6886017556670158583</id><published>2008-01-28T21:27:00.000+01:00</published><updated>2008-01-31T14:49:22.862+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syslog-ng'/><title type='text'>syslog-ng OSE 2.1 released</title><content type='html'>I have just uploaded the first release in the syslog-ng Open Source Edition 2.1 branch to our website. It is currently only available in source format at this location:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.balabit.com/downloads/files/syslog-ng/sources/2.1/src"&gt;http://www.balabit.com/downloads/files/syslog-ng/sources/2.1/src&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This release synchronizes the core of syslog-ng to the latest PE version and adds the SQL destination driver.&lt;br /&gt;&lt;br /&gt;This is an alpha release and thus might be rough around the edges, but it basically only contains code already tested in the context of the Premium Edition. The SQL functionality requires a patched libdbi package, which is available at the same link. We're going to work on integrating all our libdbi related patches to the upstream package.&lt;br /&gt;&lt;br /&gt;If you want to know how the SQL logging works, please see the &lt;a href="http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/index.html"&gt;Administrator's Guide&lt;/a&gt; or our latest white paper &lt;a href="http://www.balabit.com/dl/white_papers/syslog-ng-v2.1-whitepaper-syslog-into-sql-database-en.pdf"&gt;Collecting syslog messages into an SQL database with syslog-ng. &lt;/a&gt;The latter describes the Premium Edition, but it applies to the Open Source one equally well.&lt;br /&gt;&lt;br /&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="on" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-6886017556670158583?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/6886017556670158583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=6886017556670158583' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/6886017556670158583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/6886017556670158583'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/01/syslog-ng-ose-21-released.html' title='syslog-ng OSE 2.1 released'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-1199339586304331874</id><published>2008-01-11T21:53:00.000+01:00</published><updated>2008-01-11T22:11:56.461+01:00</updated><title type='text'>syslog-ng roadmap 2.1 &amp; 2.2</title><content type='html'>We had a meeting on the syslog-ng roadmap today where we decided some important things, and I thought I'd use this channel to tell you about it.&lt;br /&gt;&lt;br /&gt;The Open Source Edition will see a 2.1 release incorporating all core changes currently in the Premium Edition and additionally the SQL destination driver. We are going to start development on the 2.2 PE features, but some of those will also be incorporated in the open source version:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;support for the latest work of IETF syslog protocols&lt;/li&gt;&lt;li&gt;unique sequence numbering for messages&lt;/li&gt;&lt;li&gt;support for parsing message contents&lt;/li&gt;&lt;/ul&gt;Previously syslog-ng followed the odd/even version numbering to denote development/stable releases. I'm going to abandon this numbering now: the next syslog-ng OSE release is going to have a 2.1 version number and will basically come out with tested code changes only.&lt;br /&gt;&lt;br /&gt;The current feature set in PE were developed in a closed manner and I don't want to repeat this mistake. The features that were decided to be part of the Open Source version will be developed as openly as possible: the features listed above are going to be developed and published in the open source branch with version number 2.2.x. The "alpha" and "beta" releases are going to be numbered 2.2alpha1, 2.2beta1 etc; the final stable is going to be called 2.2.1.&lt;br /&gt;&lt;br /&gt;The aim is to avoid the mess of PE and OSE having a different version number.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-1199339586304331874?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/1199339586304331874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=1199339586304331874' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1199339586304331874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1199339586304331874'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2008/01/syslog-ng-roadmap-21-22.html' title='syslog-ng roadmap 2.1 &amp; 2.2'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2481920539718013407</id><published>2007-12-28T15:31:00.000+01:00</published><updated>2007-12-28T16:17:52.895+01:00</updated><title type='text'>syslog-ng fun with performance</title><content type='html'>I like christmas for a number of reasons: in addition to the traditional "meet and have fun with your family", eat lots of delicious food and so on, I like it because this is the season of the year when I have some time to do whatever I feel like.&lt;br /&gt;&lt;br /&gt;This year I felt like doing some syslog-ng performance analysis. After reading Ulrich Deppert's series about stuff &lt;a href="http://lwn.net/Articles/250967/"&gt;"What every programmer should know about memory"&lt;/a&gt; on LWN, I thought I'm more than prepared to improve syslog-ng performance. Before going any further, I'd recommend this reading to any programmer, it's a bit long but every second reading it is worth it.&lt;br /&gt;&lt;br /&gt;As you need to measure performance in order to improve it, I wrote a &lt;a href="http://git.balabit.hu/?p=bazsi/syslog-ng-2.0.git;a=commit;h=aea94813c606c2b2d7044b49cbd0a330b2928938"&gt;tool&lt;/a&gt; called "loggen". This program generates messages messages at a user-specifyable rate. Apart from the git repository you can get this tool from the latest syslog-ng snapshots.&lt;br /&gt;&lt;br /&gt;Loggen supports TCP, UDP and UNIX domain sockets, so really almost everything can be measured.&lt;br /&gt;&lt;br /&gt;Then I've put together a test environment, which consisted of a 4-way Opteron box as a server (two dual-core CPUs at 2.6GHz and 1MB of cache), where the syslog-ng center ran in 64 bit mode, and a venerable P4 Xeon 2.4GHz as client. I verified that the client was more than capable of saturating a 100MBit link that was used to connect the two boxes. Then I've installed syslog-ng on the server, using the simplest configuration possible: fetching messages from the TCP/UDP socket and writing everything to disk into a plain, text file without macros in the filename.&lt;br /&gt;&lt;br /&gt;Syslog-ng 2.o OSE performed somewhat better than I had anticipated. When using TCP it could successfully process messages at about 44000 messages/sec without losing a single message.  Each message was 150 byte long (I've started with 200, but the 100MBit link proved to be the bottleneck) Some funny findings:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enabling flow-control  did not really make the results worse.&lt;/li&gt;&lt;li&gt;Increasing log-fetch-limit to a large number (10000) made the results worse.&lt;/li&gt;&lt;li&gt;Using the Glib GSlice allocator instead of malloc/free didn't improve the numbers.&lt;/li&gt;&lt;/ul&gt;Of course once you have a baseline, there are a lot of possibilities to try how that given change affects performance, but I only had a day :)&lt;br /&gt;&lt;br /&gt;I've found some things that improved performance even further, the most important bottleneck was the time related functions in libc (localtime, mktime, strftime, etc.) For some reason they reread /etc/localtime upon every invocation. I'm going to file a ticket in their bugzilla as it's completely unnecessary to do that, especially if the value of the TZ environment variable does not change.&lt;br /&gt;&lt;br /&gt;At the end of the day I finished with syslog-ng chewing messages at around 68500 messages/sec  which is a 55.9% improvement. I can see some further possibilities, but I doubt I could increase performance over 75000 msg/sec. This means that syslog-ng can process messages at about wirespeed of a 100MBit/sec ethernet link. (68500*150 = 10275000 bytes/sec)&lt;br /&gt;&lt;br /&gt;I was very satisfied at this point, even explained my findings to my wife and my elder brother :)&lt;br /&gt;&lt;br /&gt;This of course does not apply to legacy UDP based syslog traffic directly, unless a really large socket buffer is set for syslog-ng. I'd say that you need 3-5 seconds worth of receive buffer in order to avoid losing messages, which with the above rate would be about 30MB-50MB of non-swappable kernel memory.&lt;br /&gt;&lt;br /&gt;These changes were committed to the &lt;a href="http://www.balabit.com/network-security/syslog-ng/central-syslog-server/"&gt;Premium Edition of syslog-ng,&lt;/a&gt; although the loggen program is GPLed, so anyone can do performance testing their own setup/configuration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2481920539718013407?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2481920539718013407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2481920539718013407' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2481920539718013407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2481920539718013407'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/12/syslog-ng-fun-with-performance.html' title='syslog-ng fun with performance'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8615712536948132481</id><published>2007-12-22T00:50:00.000+01:00</published><updated>2007-12-22T00:58:04.820+01:00</updated><title type='text'>syslog-ng stuff and christmas</title><content type='html'>We've been busy recently on the syslog-ng front. A new release came out from both the &lt;a href="http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/"&gt;Open Source&lt;/a&gt; and &lt;a href="http://www.balabit.com/network-security/syslog-ng/central-syslog-server/"&gt;Premium Editions,&lt;/a&gt; covering various bugfixes, the most important being a fix for an easy denial of service. Please upgrade to at least OSE 2.0.6 and PE 2.1.8, my bugtraq posting has more details.&lt;br /&gt;&lt;br /&gt;A new release from the &lt;a href="http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/index.html"&gt;syslog-ng documentation&lt;/a&gt; was also published, it contains a new chapter on losing messages and another one which explains the "Log statistics" message generated by syslog-ng.&lt;br /&gt;&lt;br /&gt;And since, I'm writing this entry I wanted to say "Merry Christmas" to all the readers of this blog:&lt;br /&gt;Marry Christmas and a Happy New Year.&lt;br /&gt;&lt;br /&gt;I'm spending the winter holiday with my wife and I'm going to travel a lot around the country to visit relatives. So I'm not sure I can be very productive in the coming days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8615712536948132481?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8615712536948132481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8615712536948132481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8615712536948132481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8615712536948132481'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/12/syslog-ng-stuff-and-christmas.html' title='syslog-ng stuff and christmas'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-1792091164890264652</id><published>2007-12-07T11:50:00.000+01:00</published><updated>2007-12-07T12:08:16.148+01:00</updated><title type='text'>syslog-ng disk based buffering</title><content type='html'>I've just seen a &lt;a href="http://www.loganalysis.org/pipermail/loganalysis/2007-December/000502.html"&gt;post on the loganalysis mailing&lt;/a&gt; list how easy it is to implement disk-based buffering with perl and  a few hours  time. The implementation would be as simple as sending the messages to a file and using a script like "tail -f" to follow the file and send messages to the desired log collectors.&lt;br /&gt;&lt;br /&gt;Although the scheme that was described would work, I see three important problems:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;latency: because the solution would work by polling the log file, the latency is severely increased, when you have thousands of log entries per second, a second is a long time. And you don't want to poll more often than every second.&lt;/li&gt;&lt;li&gt;disk usage: relaying the data would store everything on the local disk, no upper bound on disk usage, if the disk is full, data is lost&lt;/li&gt;&lt;li&gt;load: using an interpreted language and the requirement to store all data on disk puts an enormous load on the system that might be spent better elsewhere.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Syslog-ng on the other hand uses a spool file, but this file is only written when the memory based buffer becomes full. For the generic case all messages come and go, without touching the disk at all or having to poll the disk for changes.  The disk space requirements are bounded. Disk buffering with the combination of flow-control and disk buffers you can avoid message loss.&lt;br /&gt;&lt;br /&gt;And what's more, the disk spooling in syslog-ng is an independent feature for all flow-controllable destinations: tcp(), unix-stream(), pipe(), program() and also sql().&lt;br /&gt;&lt;br /&gt;Adding a disk buffer to a destination is as simple as specifying the buffer size in bytes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;destination d_tcp { tcp("logserver" log_disk_fifo_size(100000000));  };&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This means that a 100MB of space is allocated for disk-based spooling to store messages whenever "logserver" is not fast enough or is unavailable.&lt;br /&gt;&lt;br /&gt;For more information &lt;a href="http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/ch07s04.html"&gt;read the syslog-ng documentation&lt;/a&gt; about the way this feature works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-1792091164890264652?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/1792091164890264652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=1792091164890264652' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1792091164890264652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/1792091164890264652'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/12/syslog-ng-disk-based-buffering.html' title='syslog-ng disk based buffering'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-5431693021459672902</id><published>2007-12-01T08:45:00.000+01:00</published><updated>2007-12-01T09:03:02.617+01:00</updated><title type='text'>IBM System i</title><content type='html'>I was learning computer programming while at secondary school, at as a school assignment we had to create an accounting system on a venerable IBM 360. We had 386dx computers back then with 2MB RAM, the first Linux encounter at this time required me and my friend to put all of our RAM modules to a single computer to get 4 megs and make it suitable for Linux.&lt;br /&gt;&lt;br /&gt;This 360 machine had two CPUs, each the size of a large office desk, speed comparable to an 386, had 8MB of RAM. After getting used to the speed it provided (had 8 terminals on a 2400 baud modem) it was fun, completely different to the PCs we've had, but still, interesting.&lt;br /&gt;&lt;br /&gt;Some of this memories were brought back by our partnership with &lt;a href="http://www.patownsend.com/"&gt;Patownsend &amp;amp; Associates&lt;/a&gt;, a US based company to deliver System i (formerly AS400) and System z (the mainframe) software. Our partnership focuses on the development of a Syslog agent for System i, this way we could extend our &lt;a href="http://www.balabit.com/network-security/syslog-ng/central-syslog-server/"&gt;syslog-ng Premium Edition&lt;/a&gt; offering with &lt;a href="http://biz.yahoo.com/bw/071129/20071129005194.html?.v=1"&gt;support for IBM midrange&lt;/a&gt; servers.&lt;br /&gt;&lt;br /&gt;AS/400 (or System i), is a very interesting platform, somewhat reminding me to the IBM mainframe at secondary school. Text display on tn3270 terminals, all commands always starting with the letter 'Q', filenames condensed to a point where it is difficult to understand their meaning (QAUDJRN anyone? :) ), but at the same time a very consistent and very use-case oriented interface. The system is very complete, while a UNIX contains the stream-of-bytes file concept, OS/400 supports many different file types, for instance there's a file type of SQL tables, a complete DB2 is integrated into the OS itself.&lt;br /&gt;&lt;br /&gt;It was a great experience to work with the Patownsend guys, knowledgeable people, who know what they are doing. I'm looking forward to our cooperation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-5431693021459672902?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/5431693021459672902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=5431693021459672902' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5431693021459672902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5431693021459672902'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/11/ibm-system-i.html' title='IBM System i'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2005877709865739169</id><published>2007-11-07T21:16:00.001+01:00</published><updated>2007-11-07T21:23:45.559+01:00</updated><title type='text'>public bugzilla</title><content type='html'>I've started creating a public bugzilla installation for syslog-ng in the last couple of days, however I was interrupted before being to finish it all.&lt;br /&gt;&lt;br /&gt;I want to move all opened internal tickets to the public installation, but I only managed to review half of them. Not that it is a large task, I just got distracted all the time by my fellow collegues and customers. But that's the life of a software developer, right? :)&lt;br /&gt;&lt;br /&gt;You can find this at &lt;a href="http://bugzilla.balabit.com/"&gt;http://bugzilla.balabit.com/&lt;/a&gt; , although it is not yet officially announced. Once I'm done with reviewing/translating tickets, I'll send an official announcement to the mailing list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2005877709865739169?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2005877709865739169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2005877709865739169' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2005877709865739169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2005877709865739169'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/11/public-bugzilla.html' title='public bugzilla'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-7463233615128106034</id><published>2007-10-10T21:28:00.000+02:00</published><updated>2007-10-10T21:30:48.711+02:00</updated><title type='text'>syslog-ng git repository moved</title><content type='html'>As I announced on the syslog-ng mailing list, the official syslog-ng git repositry has moved and has become accessible using the more effective "git" protocol, instead of plain HTTP.&lt;br /&gt;&lt;br /&gt;The change has been described on the &lt;a href="http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/scm/"&gt;syslog-ng webpage&lt;/a&gt;, &lt;a href="http://git.balabit.hu/"&gt;gitweb&lt;/a&gt; is also available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-7463233615128106034?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/7463233615128106034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=7463233615128106034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7463233615128106034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7463233615128106034'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/10/syslog-ng-git-repository-moved.html' title='syslog-ng git repository moved'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2491940263063615117</id><published>2007-09-22T16:57:00.000+02:00</published><updated>2007-09-22T17:07:37.038+02:00</updated><title type='text'>syslog-ng HP-UX updates</title><content type='html'>I've just pushed out an update to syslog-ng, which contains various HP-UX fixes backported from the Premium Edition of syslog-ng.&lt;br /&gt;&lt;br /&gt;The GPL version of syslog-ng should now work flawlessly on HP-UX. There's one caveat though: there's a buggy system header in HP-UX and gcc 4.x fails to compile it. I copied this header to the gcc private include directory (/usr/local/lib/gcc/hppa2.0w-hp-hpux11.11/4.1.0/include on my system) and applied the following patch:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;438a439&lt;br /&gt;&gt; #ifndef _APP32_64BIT_OFF_T&lt;br /&gt;442a444&lt;br /&gt;&gt; #endif&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;(HP-UX diff does not know how to produce unified diffs), the point is that there are two conflicting declarations of a function and the preprocessor conditional above fixes that. Once this patch is in place, and you have the proper build dependencies syslog-ng works fine on HP-UX.&lt;br /&gt;&lt;br /&gt;As I've just pushed these changes to my git repository, you'll need to wait for another day to get a daily snapshot. But hey "git" is what the pros use :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2491940263063615117?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2491940263063615117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2491940263063615117' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2491940263063615117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2491940263063615117'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/09/syslog-ng-hp-ux-updates.html' title='syslog-ng HP-UX updates'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-4363538598202104045</id><published>2007-09-15T19:02:00.000+02:00</published><updated>2007-09-15T19:09:16.306+02:00</updated><title type='text'>Reasons of my silence</title><content type='html'>Apart from the previous entry I was not posting to this blog for two months. The reason was that I was heavily involved in the development of BalaBit Audit Player, a graphical application to replay RDP/SSH sessions, recorded by our &lt;a href="http://www.balabit.com/network-security/scb/"&gt;SCB product&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;BAP became much larger than I originally expected, it's about 20k lines of code, and the end of the development was done in a rush to meet our deadline of Sep 1, 2007. We've slipped a couple of days, but we've released BAP 2.0.0 on 7th September. Then I spent a week in Karlsruhe on the 5th Netfilter Developer's Workshop.&lt;br /&gt;&lt;br /&gt;I returned to Hungary on Friday, I'm spending the weekend with my parents, and hopefully I can be more active on other things, like the syslog-ng mailing list, or this blog. :)&lt;br /&gt;&lt;br /&gt;A release of syslog-ng GPL is long due, hopefully I can prepare it next week. I'll also need to schedule some syslog-ng development time as there are some open feature requests by customers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-4363538598202104045?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/4363538598202104045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=4363538598202104045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4363538598202104045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/4363538598202104045'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/09/reasons-of-my-silence.html' title='Reasons of my silence'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-8063971644842407601</id><published>2007-09-15T18:48:00.001+02:00</published><updated>2007-09-15T19:02:12.600+02:00</updated><title type='text'>Netfilter workshop</title><content type='html'>I've just returned from this year's &lt;a href="http://workshop.netfilter.org"&gt;Netfilter Developer's Workshop&lt;/a&gt;, this time held in Karlsruhe, Germany. This year's workshop was the fifth such event, and this time even David S. Miller was there.&lt;br /&gt;&lt;br /&gt;All in all the organization was wonderful, kudos to the Astaro guys. We've had about 30 attendants, the largest workshop ever.  You can read more about the workshop at &lt;a href="http://nfws.inl.fr/en/"&gt;http://nfws.inl.fr/en/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Krisztian Kovacs and me were trying to push our &lt;a href="http://www.balabit.com/support/community/products/tproxy/"&gt;TProxy4&lt;/a&gt; patches for merging, the future for tproxy seems bright, as everyone was positive.&lt;br /&gt;&lt;br /&gt;We also have some other, minor patches in the queue, I'm working on finalizing them and submit them for inclusion. These are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SO_MARK socket option to be able to specify the mark field of outgoing packets, generated sent from a given socket&lt;/li&gt;&lt;li&gt;an extension to the "addrtype" match to limit the match to the incoming interface&lt;/li&gt;&lt;li&gt;the notion of &lt;a href="http://lwn.net/Articles/193758/"&gt;interface groups&lt;/a&gt;, that make it possible to match a group of similar interfaces&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;As always, it was very nice to meet Netfilter people, let's hope we meet in Paris next time. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-8063971644842407601?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/8063971644842407601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=8063971644842407601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8063971644842407601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/8063971644842407601'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/09/netfilter-workshop.html' title='Netfilter workshop'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-7646375493527882961</id><published>2007-07-28T23:44:00.000+02:00</published><updated>2007-07-29T00:02:26.984+02:00</updated><title type='text'>SFTP proxy</title><content type='html'>I was spending the last couple of hours to implement a simple &lt;a href="http://en.wikipedia.org/wiki/SSH_file_transfer_protocol"&gt;SFTP&lt;/a&gt; proxy, that is capable of logging file transfers, into our &lt;a href="http://www.balabit.com/network-security/scb/"&gt;Shell Control Box&lt;/a&gt; product line. The core idea behind SCB is to perform RDP/SSH screening independently from the end-systems. This SFTP functionality will be a small bonus: in addition to dumping the SSH traffic to an audit trail, we are going to be able to write log transactions to syslog, which is way easier to analyse, if all you want to know is the list of files accessed via SFTP.&lt;br /&gt;&lt;br /&gt;I originally thought that SFTP was as simple as FTP, with a transaction being a complete file transfer.&lt;br /&gt;&lt;br /&gt;On the contrary, SFTP is much closer to NFS (and other network file system protocols) in spirit: in FTP you have a "RETR" command that fetches a complete file, in SFTP you need to open the file and read it separately using a series of "READ" commands.&lt;br /&gt;&lt;br /&gt;Now I understand how sshfs is possible. I thought I'd let you know  :)&lt;br /&gt;&lt;br /&gt;By the way, syslog-ng 2.0.5 has been released recently. Hopefully this will decrease the stream of "Syslog-ng does not compile, please help" complaints, which was caused by my lazyness to enable spoof-source support unconditionally by default, without writing a proper configure.in test whether libnet was present on the system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-7646375493527882961?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/7646375493527882961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=7646375493527882961' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7646375493527882961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/7646375493527882961'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/07/sftp-proxy.html' title='SFTP proxy'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2698737598984231131</id><published>2007-07-22T10:41:00.000+02:00</published><updated>2007-07-22T11:00:40.040+02:00</updated><title type='text'>Syslog-ng status</title><content type='html'>Things were progressing steadily on the syslog-ng front. About 4 weeks ago I released syslog-ng Premium Edition 2.1.5 which was the first version with integrated SQL support. Since then the first production deployments of PE have been done, shaking out some newly introduced bugs in the process (thus the releases 2.1.5a - 2.1.5d).&lt;br /&gt;&lt;br /&gt;Disk buffering works nicely, especially when combined with the new rate-limit option (throttle), if your backend systems are calibrated to a given rate of incoming messages, syslog-ng can ensure that the limit is never exceeded. Whenever bursts end, syslog-ng feeds the messages towards the back-end systems in their idle time. This introduced some latency though.&lt;br /&gt;&lt;br /&gt;I've started working on support for the new syslog-protocol work in IETF, but nothing is ready yet. After this is finished, I'm planning to release syslog-ng 2.1 under the GPL license, with some of the new features added.&lt;br /&gt;&lt;br /&gt;The GPLd branch also saw a couple of fixes, no release though. If you want the latest set of fixes, please use a daily snapshot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2698737598984231131?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2698737598984231131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2698737598984231131' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2698737598984231131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2698737598984231131'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/07/syslog-ng-status.html' title='Syslog-ng status'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-3796073217352528838</id><published>2007-05-26T19:14:00.000+02:00</published><updated>2007-05-26T19:25:38.699+02:00</updated><title type='text'>Latest happenings</title><content type='html'>I forgot to mention here that syslog-ng 2.0.4 was released about 10 days ago. Before making an upgrade, be sure to revalidate your &lt;a href="http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/ch08s01.html"&gt;max-connections()&lt;/a&gt; setting. As previous versions in the 2.0.x tree has failed to enforce this limit.&lt;br /&gt;&lt;br /&gt;Apart from the usual bunch of bug fixes, this release features case-insensitive regexps and the ability to track logrotated source files. Now you can actually track any log file, even if it is rotated automatically.&lt;br /&gt;&lt;br /&gt;We have also worked hard on the new &lt;a href="http://www.balabit.com/products/syslog-ng/"&gt;syslog-ng webpage.&lt;/a&gt; Hopefully no information was lost during the transition. If you miss anything that was present on the old one and not available on the new, please let me &lt;a href="mailto:bazsi@balabit.hu"&gt;know&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm planning to set up a public bugzilla and a wiki for syslog-ng, so that it will have the standard infrastructure needed for a modern  open source projects. Version control, bug tracking and Wiki.&lt;br /&gt;&lt;br /&gt;On the Premium Edition front, both the syslog-ng Agent program for Windows and syslog-ng has seen a public release.  Check out the &lt;a href="http://www.balabit.com/products/syslog-ng/premium/"&gt;syslog-ng Premium Edition pages &lt;/a&gt;for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-3796073217352528838?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/3796073217352528838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=3796073217352528838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3796073217352528838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3796073217352528838'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/05/latest-happenings.html' title='Latest happenings'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-3271839926050338572</id><published>2007-04-30T01:14:00.000+02:00</published><updated>2007-04-30T01:42:27.059+02:00</updated><title type='text'>syslog-ng database support and other fixes</title><content type='html'>As the readers of this blog might know I've been working on persistent disk-buffering and SQL support recently. The configuration interface of the SQL destination became quite close to the description I gave in &lt;a href="http://bazsi.blogspot.com/2007/04/persistent-disk-buffering-in-syslog-ng.html"&gt;my last post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I think from the user side it is pretty neat, no need to rely on the mysql client program or to create "buffer files" that are later fed to the database server. You simply define an SQL destination and tables are created automagically with proper (possibly even disk-based) queueing, &lt;a href="http://www.balabit.com/common-dl/syslog-ng-admin-guide_en.html/ch06s03.html"&gt;flow control&lt;/a&gt; and error handling. And by using &lt;a href="http://libdbi.sourceforge.net/"&gt;libdbi&lt;/a&gt; we immediately have support for 4 or 5 different database servers.&lt;br /&gt;&lt;br /&gt;The implementation side was somewhat more intrusive however, the client libraries for various database servers use a blocking I/O model and syslog-ng was completely non-blocking until now. I had to create a separate thread for inserting records to tables, and there came some required changes to syslog-ng to support that: various reference counters and the internal acknowledge mechanism had to be made thread-aware.&lt;br /&gt;&lt;br /&gt;This was not without benefit though, a change of this scale required a thorough review of the code involved and I have found and fixed several bugs that also affected the 2.0.x tree. I have committed some of these to my public git tree already, so it should be synchronized to our public webserver real soon now.&lt;br /&gt;&lt;br /&gt;My next thing to do is to prepare 2.0.4 and probably a first public release of the 2.1.x open source tree. Stay tuned. :)&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://www.balabit.com/common-dl/syslog-ng-admin-guide_en.html/ch06s03.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-3271839926050338572?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/3271839926050338572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=3271839926050338572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3271839926050338572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/3271839926050338572'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/04/syslog-ng-database-support-and-other.html' title='syslog-ng database support and other fixes'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-2908589751557665351</id><published>2007-04-24T08:27:00.000+02:00</published><updated>2007-04-24T08:48:50.434+02:00</updated><title type='text'>Persistent disk-buffering in syslog-ng</title><content type='html'>Two blog spots in a row on two consecutive days, wow :) Things are happening fast these times. Because of my company's efforts to create a commercial fork of syslog-ng, I have somewhat more time to do syslog-ng hacking. This time I've finished persistent disk-buffering, an often requested feature to be released in the commercial version.&lt;br /&gt;&lt;br /&gt;It means that if a target server is down, then in addition to the in-memory buffers, syslog-ng is able to store messages in a disk-based queue until the connection is restored. What's more, this queue is persistent and syslog-ng keeps its contents accross restarts.&lt;br /&gt;&lt;br /&gt;One less reason to keep logs locally. :)&lt;br /&gt;&lt;br /&gt;Next on my list is native SQL support, combined with this disk-buffer feature to cover times when the database is too slow processing INSERTs. I'm thinking along the lines of:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;destination d_sql { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  sql(type(pgsql) host("loghost") user("syslog-ng") password("secret-password")&lt;br /&gt;      database("logs")&lt;br /&gt;      table("messages_&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;${HOST}_&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;${R_YEAR}${R_MONTH}${R_DAY}")&lt;br /&gt;      columns("date", "host", "program", "pid", "message")&lt;br /&gt;      values("$R_DATE", "$HOST", "$PROGRAM", "$PID", "$MSGONLY"));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;};&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;Tables would be created/altered automatically on-demand, just like destination files. Values might refer to builtin macros, or matches within the message (like in sed, e.g. $1 refers to the first match).&lt;br /&gt;&lt;br /&gt;The actual implementation might be somewhat different though.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-2908589751557665351?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/2908589751557665351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=2908589751557665351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2908589751557665351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/2908589751557665351'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/04/persistent-disk-buffering-in-syslog-ng.html' title='Persistent disk-buffering in syslog-ng'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-5016971109685251875</id><published>2007-04-22T16:58:00.000+02:00</published><updated>2007-04-22T17:24:54.125+02:00</updated><title type='text'>Switching version control systems</title><content type='html'>We have been using GNU arch the last couple of years as a version control system, however Tom Lords' implementation does not scale well, and some of our software packages have 10 thousands of commits. This means that a single commit operation may take _minutes_. It is awful to wait so much time for a single commit, and it really degrades productivity.&lt;br /&gt;&lt;br /&gt;I was considering Mercurial, Bazaar-NG and git, however this was not an easy decision, as the "modern" version control systems promote the use of branches over anything else, and our current version control model relied on cherry-picking heavily:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;developer commits the solution for each bug separately to his/her branch&lt;/li&gt;&lt;li&gt;QA people pick patches from developer branches and integrate them to a 'test' branch, once the test was successful,&lt;/li&gt;&lt;li&gt;release manager picks patches from the 'test' branch and integrates to mainline, if he doesn't find anything odd during review&lt;/li&gt;&lt;/ul&gt;This worked wonderfully in GNU arch, but new VC systems lack in this area. Bazaar has no cherry picking support at all, Mercurial has some incomplete support with a plugin named transplant, git has cherry picking, but that relies on heuristics (it guesses whether a patch was integrated by using a checksum of the patch).&lt;br /&gt;&lt;br /&gt;I was considering to change the process I outlined above, but I'm not sure how that would work out. We sometimes need to work with people not really experienced with VC systems at all, asking them to manage their own branches for each bugfix/problem group seems to raise the bar a bit too high.&lt;br /&gt;&lt;br /&gt;Nevertheless git seemed to have solutions for both worlds (e.g. picking patches AND merging branches), so I choose git over the other two, and now I converted some of the &lt;a href="https://lists.balabit.hu/pipermail/syslog-ng/2007-April/010138.html"&gt;syslog-ng history to git&lt;/a&gt; in order to gather some real-life experience.&lt;br /&gt;&lt;br /&gt;I like what I see so far, git 1.5.x is really way better than older versions on the usability and documentation front. I now feel comfortable enough with git as I could finally understand the working model and the structure of the git history.And git is fast like lightning :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-5016971109685251875?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/5016971109685251875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=5016971109685251875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5016971109685251875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/5016971109685251875'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/04/switching-version-control-system.html' title='Switching version control systems'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-117492671661993872</id><published>2007-03-26T19:09:00.000+02:00</published><updated>2007-03-26T19:31:56.633+02:00</updated><title type='text'>syslog-ng 2.1 is branched</title><content type='html'>I've  just finished preparations for the release of syslog-ng 2.0.3 and now I consider the 2.0.x branch feature complete. As far as I know there's no feature that was present in 1.6.x and missing from the 2.0.x rewrite. The last missing bits were spoof-source and TCP wrapper support, but as those are present in 2.0.3 I consider syslog-ng 2.0 feature complete. I don't plan to add further code that would cause destabilization.&lt;br /&gt;&lt;br /&gt;Now some plans about the newly opened 2.1 branch: we (as BalaBit) played with an idea of creating a commercial fork of syslog-ng which could increase the amount of resources that I can allocate to developing syslog-ng code. From 2.1 on, two parallel editions of syslog-ng will become available:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;syslog-ng 2.1 Open Source Edition: the same as syslog-ng 2.0, available under the GPL&lt;/li&gt;&lt;li&gt;syslog-ng 2.1 Premium Edition: a commercial fork of syslog-ng,&lt;/li&gt;&lt;/ul&gt;The two releases will be produced from the same source tree with some of the commercial functionality stripped during the release process. This ensures that bugfixes/changes that are developed in the branch will automatically be released with the open source edition as well.&lt;br /&gt;&lt;br /&gt;In the first release, the difference between the two editions are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;TLS support,&lt;/li&gt;&lt;li&gt;Support for a Windows agent, capable of sending log messages in syslog-ng's extended log format and TLS encryption.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;New, updated manual (also covering the Open Source Edition).&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-117492671661993872?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/117492671661993872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=117492671661993872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/117492671661993872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/117492671661993872'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/03/syslog-ng-21-is-branched.html' title='syslog-ng 2.1 is branched'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-117052427155847166</id><published>2007-02-03T18:27:00.000+01:00</published><updated>2007-02-03T18:37:51.586+01:00</updated><title type='text'>spoof-source added to 2.0.x</title><content type='html'>As a commenter missed spoof-source support from 2.0, I got my act together for an afternoon hacking session and implemented it in the 2.0.x tree.&lt;br /&gt;&lt;br /&gt;The packet generation for IPv4 packets was straightforward, I could simply "forward-port" it from 1.6.x, after creating the proper place for it in the 2.0.x tree. IPv6 support was a bit more difficult as libnet  has a nasty bug with IPv6 and UDP. I was looking at my code for hours, when I tried Google codesearch to check whether I was doing something wrong. Then I've found &lt;a href="http://www.google.com/codesearch?hl=en&amp;q=+libnet_build_ipv6+show:FS7cjjZpfug:2QN0gyFkCMI:YgMw4bS5sUE&amp;amp;sa=N&amp;cd=11&amp;amp;ct=rc&amp;cs_p=:pserver:anonymous%40olsrd.cvs.sourceforge.net:/cvsroot/olsrd+olsrd-current&amp;amp;cs_f=src/net_olsr.c#a0"&gt;this&lt;/a&gt;. Note the comment above the libnet_build_ipv6() call. I also disabled UDP checksumming and now it works like a charm. The last libnet release was almost 3 years ago, it is not reassuring that its webpage is also down. Too bad, libnet is a fine piece of software, but now as its website is down where can I point syslog-ng users to download libnet from?&lt;br /&gt;&lt;br /&gt;By the way, I did not announce syslog-ng 2.0.2 here, it was released about a week ago. Nothing fancy, primarily portability fixes and a more important fix in the usertty() destination. Grab it from &lt;a href="http://www.balabit.com/products/syslog-ng/"&gt;the usual place&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-117052427155847166?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/117052427155847166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=117052427155847166' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/117052427155847166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/117052427155847166'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/02/spoof-source-added-to-20x.html' title='spoof-source added to 2.0.x'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-117013889782932212</id><published>2007-01-30T07:17:00.000+01:00</published><updated>2007-01-30T07:34:57.853+01:00</updated><title type='text'>Long time no post</title><content type='html'>It's been a while since I last posted here. The reason is simple: work and the lack of time. OK, I know, people have time for what they want, but:&lt;br /&gt;&lt;br /&gt;* We are launching a nifty new product based on Zorp, but with a much tighter focus. A device capable of recording and replaying SSH sessions for audit purposes.&lt;br /&gt;* We have decided to migrate from C to C++ for our management interface, as it seems Gtk+ style OO programming in C really requires a skill, and a lot of developers don't have that. C++ holds their hands somewhat. Thus, I've been refreshing my C++ skills and learning gtkmm while writing a prototype.&lt;br /&gt;* and of course the "usual" amount of work.&lt;br /&gt;&lt;br /&gt;I've tried to provide timely response on the syslog-ng mailing list. I'm sorry if you didn't receive an answer/patch from me in time.&lt;br /&gt;&lt;br /&gt;By the way I released &lt;a href="http://www.balabit.com/products/syslog-ng/"&gt;syslog-ng 2.0.2&lt;/a&gt; yesterday. Nothing really important, some portability fixes, some usertty fixes and an option missed  in the 1.6.x -&gt; 2.0.x change.&lt;br /&gt;&lt;br /&gt;Another good news is that Fedora seems to be migrating from &lt;a href="http://fedoraproject.org/wiki/Releases/FeatureSyslogNG?highlight=%28CategoryFedora7Features%29"&gt;syslogd to syslog-ng in Fedora 7&lt;/a&gt;. That's simply great :) Guys, if you need help, just drop me a line.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-117013889782932212?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/117013889782932212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=117013889782932212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/117013889782932212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/117013889782932212'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2007/01/long-time-no-post.html' title='Long time no post'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-116681491162213482</id><published>2006-12-22T20:09:00.000+01:00</published><updated>2006-12-22T20:15:11.646+01:00</updated><title type='text'>syslog-ng 2.0.1 released</title><content type='html'>I have released syslog-ng 2.0.1, available at the &lt;a href="http://www.balabit.com/products/syslog-ng/"&gt;usual places&lt;/a&gt;. I have added various missing bits that fell out in the 1.6.x -&gt; 2.0.x change. These include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DNS cache support,&lt;/li&gt;&lt;li&gt;overwrite_if_older  (used to be called  remove_if_older),&lt;/li&gt;&lt;li&gt;various fixes,&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;All-in-all 2.0.0 was a successful release, hopefully this one will not be much worse. See the NEWS entry of 2.0.1 for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-116681491162213482?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/116681491162213482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=116681491162213482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/116681491162213482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/116681491162213482'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/12/syslog-ng-201-released.html' title='syslog-ng 2.0.1 released'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-116608517507157776</id><published>2006-12-14T09:31:00.000+01:00</published><updated>2006-12-14T09:32:55.086+01:00</updated><title type='text'>Interview with me on linux.com</title><content type='html'>Just a short note, an interview with me was published on linux.com, more specifically &lt;a href="http://www.linux.com/article.pl?sid=06/12/01/1756257"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-116608517507157776?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/116608517507157776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=116608517507157776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/116608517507157776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/116608517507157776'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/12/interview-with-me-on-linuxcom.html' title='Interview with me on linux.com'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-116301801582076493</id><published>2006-11-08T21:21:00.000+01:00</published><updated>2006-11-08T21:33:35.846+01:00</updated><title type='text'>2.0.0 experiences</title><content type='html'>As it turned out the 2.0.0 release was not so bad after all. At least I have not received show-stopper bugreports, which either means that noone is using it, or everything is fine and dandy :). Hopefully it is the latter, rc releases were tested by a few people.&lt;br /&gt;&lt;br /&gt;In the meanwhile I started adding a few missing bits that were still present in 1.6.x but I never got around to implementing in the 2.0.0 tree. Among them I readded the remove_if_older() option. By the way, I don't really like the name of this option, does anyone have a better idea? If you do, please put it in a comment here or send me an email. (I was thinking about retention_time() but I'm afraid it is more difficult to understand what it would do)&lt;br /&gt;&lt;br /&gt;The other bit is the new/shiny DNS cache, which also supports persistent entries. This means that syslog-ng can read your /etc/hosts file, resolve IPs that are present there, and use IP addresses for anything else. This removes the dependency on DNS, and should also improve overall performance.&lt;br /&gt;&lt;br /&gt;So all in all, syslog-ng 2.0 is in a good shape, give it a try. Testing the latest snapshots, especially the new DNS cache parts, would be appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-116301801582076493?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/116301801582076493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=116301801582076493' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/116301801582076493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/116301801582076493'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/11/200-experiences.html' title='2.0.0 experiences'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-116267616690006585</id><published>2006-11-04T22:27:00.000+01:00</published><updated>2006-11-04T22:36:06.916+01:00</updated><title type='text'>Syslog-ng 2.0.0 released</title><content type='html'>You might have already noticed, but I thought I'd write  an entry on this blog on this topic: the wait is over I have released syslog-ng 2.0.0. It took a bit longer than I have anticipated, I needed to prepare 4 rc releases, as each had some bug here or there and I really wanted to release a stable 2.0.0&lt;br /&gt;&lt;br /&gt;I hopefully succeeded, no breakage reported so far. 2.0.0 was released last saturday, but the announcement went out only on Friday.&lt;br /&gt;&lt;br /&gt;Some rarely used functionality is still missing though (a prominent example is spoof_source), and I already committed the remove_if_older() option after the release of 2.0.0. I'm going to concentrate on filling the missing bits.&lt;br /&gt;&lt;br /&gt;I'll try to avoid committing to 1.6.x, migrating to 2.0.x is strongly recommended.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-116267616690006585?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/116267616690006585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=116267616690006585' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/116267616690006585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/116267616690006585'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/11/syslog-ng-200-released.html' title='Syslog-ng 2.0.0 released'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-115999481478118506</id><published>2006-10-04T22:36:00.000+02:00</published><updated>2006-10-04T22:46:54.820+02:00</updated><title type='text'>Catching up with things</title><content type='html'>It's been a long while since my last post here, but I was really busy in the past months and after I left for a two weeks vacation to Corsica. I returned on Sunday, started to catch up with work and such but I still was not able to read my syslog-ng mailing list folder, containing almost 100 unread messages. Please be patient, if you have a question open and forgiving in the unfortunate case I'd forget to reply.&lt;br /&gt;&lt;br /&gt;On the other hand Corsica is a beatiful island, be sure to visit it if you can. Nature is almost untouched at a couple of places, everything is green and a lot of mountains. A pair of hiking shoes is a useful item if you are in Corsica. :)&lt;br /&gt;&lt;br /&gt;So the island is beatiful we had some minor nuances with waiters, as neither me or my wife speaks French, and this seems to be a sin in the eyes of Corsican waiters. So at the end we came up with cooking for ourselves, lucky us our apartment was nicely equipped with cooking gear.&lt;br /&gt;&lt;br /&gt;Back to syslog-ng, I'd really like to release 2.0.0 now. I released 2.0rc3 right before I left, if it had no problems in the last two weeks, it should be a reasonable 2.0.0 release. But I first need to read the 100 unread&lt;br /&gt; mails on the topic :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-115999481478118506?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/115999481478118506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=115999481478118506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/115999481478118506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/115999481478118506'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/10/catching-up-with-things.html' title='Catching up with things'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-115445505899690068</id><published>2006-08-01T19:45:00.000+02:00</published><updated>2006-08-01T19:57:39.023+02:00</updated><title type='text'>Some kernel hacking</title><content type='html'>After some time I needed to do some kernel coding again. To seamlessly support dynamically created interfaces in Zorp, we need something I called "interface groups".&lt;br /&gt;&lt;br /&gt;Each interface might belong to a single group that basically describes how the interface was created. For instance there's an interface group for each PPP profile, but an interface group can encapsulate interfaces created by PPTPD.&lt;br /&gt;&lt;br /&gt;It is quite difficult to match dynamic interfaces by their nature: iptables sports wildcard interface name matching with the '+' character but it only works if interface names have some kind of prefix _AND_ if you don't want to differentiate between two groups.&lt;br /&gt;&lt;br /&gt;If you have two sets of PPP devices (like in the example I described above), then you have no way to create a separate ruleset, unless you reload iptables everytime a new interface is added to the system.&lt;br /&gt;&lt;br /&gt;Adding to the burden, in Zorp we want to be able to bind a service to these dynamically created interfaces, of course without listing the actual IP address in the configuration file.&lt;br /&gt;&lt;br /&gt;The idea is simple, I added an "interface group ID" to the net_device struct, and an option to the "ip link" command to set/query this ID. Once an interface is created by some kind of program (for instance pppd), a script is executed in its /etc/ppp/ip-up.d directory and userspace can assign a group ID based on the PPP profile name. Then Zorp gets notified about the change through NETLINK and can react by binding to the IP address of the new interface. The configuration remains static, no reloading needs to be done when such a change happens, and you can create firewall policies for something like: please allow this set of services for everyone using this PPP profile, without entering one specific IP address to the configuration. Neat, eh?&lt;br /&gt;&lt;br /&gt;I posted my work on netdev and netfilter-devel, I'm curious what the kernel maintainers will think about it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-115445505899690068?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/115445505899690068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=115445505899690068' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/115445505899690068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/115445505899690068'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/08/some-kernel-hacking.html' title='Some kernel hacking'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-115243817448780256</id><published>2006-07-09T11:35:00.000+02:00</published><updated>2006-07-09T11:42:54.500+02:00</updated><title type='text'>syslog-ng 2.0rc1 released</title><content type='html'>After my last requests for testing of the latest 1.9.x code base, I have received a couple of bug reports, which were fixed in recent weeks. Since I have received no reports the past two weeks I decided to name the new release as "2.0rc1" to raise awareness of the new codebase.&lt;br /&gt;&lt;br /&gt;I'm planning to create the new branch for 2.1.x, I have some exciting features in my mind, which I did not want to start before the release of 2.0.0. The old stable series 1.6.x is still supported, but expect less development time to be dedicated in maintaining that release.&lt;br /&gt;&lt;br /&gt;Build queues for various architectures are not yet up, so only a Debian sarge binary is available for those with binary maintenance contracts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-115243817448780256?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/115243817448780256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=115243817448780256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/115243817448780256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/115243817448780256'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/07/syslog-ng-20rc1-released.html' title='syslog-ng 2.0rc1 released'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-115229943979939521</id><published>2006-07-07T20:45:00.000+02:00</published><updated>2006-07-07T21:10:39.820+02:00</updated><title type='text'>Thoughts on the patent system</title><content type='html'>You might know that there is a standardization effort on the syslog protocol in the IETF. The work has started several years ago and the efforts produced RFC3164, the first documentation of the BSD syslog protocol after being in use for over two decades.&lt;br /&gt;&lt;br /&gt;This group also produced RFC3195 in 2001, a reliable syslog protocol using the BEEP framework which did not really take of. I personally did not implement this in syslog-ng due to its highly verbose nature and the complexity which BEEP brings in.&lt;br /&gt;&lt;br /&gt;Couple of months ago an effort started to create a simpler, but still reliable syslog protocol somewhat similar to what syslog-ng has been using for a couple of years now. First some layering was decided, e.g. to define the syslog protocol in a transport independent manner and then define various transports, like legacy UDP and TLS encrypted TCP.&lt;br /&gt;&lt;br /&gt;After syslog-transport-udp was written by Rainer Gerhards, work has started on the TLS encrypted transport and someone from Huawei (you know the Chinese Cisco clone) volunteered to write the draft, which he did with the help of other group members. Basically the contents of the ID represented consensus (a rare event in the syslog group) and was heavily based on the previous years' work.&lt;br /&gt;&lt;br /&gt;The ID was published and we were finally approaching a standardized syslog over TCP protocol, everything was nice and dandy.&lt;br /&gt;&lt;br /&gt;Except that a few weeks later Huawei published a patent claim on the contents of the published ID, they basically said that they have a not-yet-published patent pending which covers at least parts of the ID. It is yet to be determined which sections of the internet draft is affected, but as far as I know it takes several months till this information is going to be available.&lt;br /&gt;&lt;br /&gt;So what now? Basically I don't know, some prior art is certainly available, I personally found articles describing the combination of syslog-ng TCP transport and stunnel. Even if the patent will not be granted, the work of the working group is endangered by patent threat.&lt;br /&gt;&lt;br /&gt;Did I mention already that I don't like US style patents? I'm happy to live in Europe, we are still not affected,&lt;br /&gt;assuming that syslog-ng is developed and used within Europe. In the US, even end-users can be threatened if they use a product that uses protected technology and which does not license the patent.&lt;br /&gt;&lt;br /&gt;I need to make a difficult decision:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;avoid using the recent work of the working group and fall back to using an updated version of RFC3195, OR&lt;/li&gt;&lt;li&gt;don't care about the IPR claim Huawei has published in the hope that the patent will not be granted.&lt;/li&gt;&lt;/ul&gt;How would you decide?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-115229943979939521?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/115229943979939521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=115229943979939521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/115229943979939521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/115229943979939521'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/07/thoughts-on-patent-system.html' title='Thoughts on the patent system'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-115083565779936140</id><published>2006-06-20T22:30:00.000+02:00</published><updated>2006-06-20T22:34:17.820+02:00</updated><title type='text'>Getting married</title><content type='html'>This is just a quick note that I'm not yet lost, I'm on holidays for two weeks, as I'm getting married this weekend, or to be more precise 24th June, 2006.&lt;br /&gt;&lt;br /&gt;I'm returning to  work on 3rd July, 2006. As my internet connection is not perfect, I might not be able to respond to e-mail messages timely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-115083565779936140?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/115083565779936140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=115083565779936140' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/115083565779936140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/115083565779936140'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/06/getting-married.html' title='Getting married'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114849413526728376</id><published>2006-05-24T19:40:00.000+02:00</published><updated>2006-05-24T20:08:55.283+02:00</updated><title type='text'>Syslog-ng 2.0.0 release date</title><content type='html'>It was just a week or two ago when someone asked me about the planned release date of syslog-ng 2.0.0, the first stable release of the third incarnation of syslog-ng. Probably I did not even respond to the email as I did not know the answer. "When it's ready" is an answer users do not usually perceive very well.&lt;br /&gt;&lt;br /&gt;It is very difficult to judge when a rewrite of such a critical software package is stable enough for production use: I wrote both functional and unit tests, used syslog-ng on my laptop for over a year now, but as I currently lack a system were non-production code can be uploaded, syslog-ng was drifting slowly in the stabilization process: whenever someone reported a bug, I fixed it.&lt;br /&gt;&lt;br /&gt;So the release date in the current state is determined by the syslog-ng user community and not me. IF there's certain confidence that a pile of code runs fine, it can be tagged stable and everyone can be happy. If there is no feedback, an optimist might think that everything is going fine, the pessimist would say that nobody is using the product.&lt;br /&gt;&lt;br /&gt;My point is that positive feedback is _VERY_ important, it is an indication that people are using the code, but have no problems.&lt;br /&gt;&lt;br /&gt;syslog-ng 1.9.x is currently in feature freeze, I don't plan to do anything that threatens stability, but this also means that people waiting for things like &lt;a href="http://bazsi.blogspot.com/2006/05/thinking-about-rewrite-rules.html"&gt;message rewrite capabilities&lt;/a&gt; need to wait until syslog-ng 2.0.0 is out of the door. And the key to that is YOUR participation: download the latest release, try it and report back. Even, if it works. Especially if you are not running Debian, which I happen to run on my notebook.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114849413526728376?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114849413526728376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114849413526728376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114849413526728376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114849413526728376'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/05/syslog-ng-200-release-date.html' title='Syslog-ng 2.0.0 release date'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114807667875312903</id><published>2006-05-19T23:59:00.000+02:00</published><updated>2006-05-20T00:11:18.763+02:00</updated><title type='text'>Thinking about rewrite rules</title><content type='html'>Again the question on Solaris message IDs was raised in an email sent to me in private. For those who don't know how a Solaris msgid looks like, look at this example:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;May 14 18:51:57 inbound2 su: [ID 366847 auth.notice] 'su root' succeeded&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;I was asked to include an MSGNOID macro which excludes this msgid in the final destination. The problem I have with this approach is that it simply does not scale: there are simply too many combinations to cover with various macros, an example using the msgid case:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;a macro that includes neither the name of the program, nor the msgid&lt;/li&gt;   &lt;li&gt;a macro that includes program name only&lt;/li&gt;   &lt;li&gt;a macro that includes msgid but not the program name&lt;/li&gt;   &lt;li&gt;a macro that includes both the program name and the msgid&lt;/li&gt; &lt;/ul&gt; As you can imagine this quickly becomes a maintenance nightmare even if one finds out a proper name for all of these combinations, especially if you add that other devices have their own extensions to syslog.&lt;br /&gt;&lt;br /&gt;What I am pondering is to renew my old ideas about adding sed-like rewrite rules to syslog-ng, something along the lines of:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;rewrite r_msgid { msg("s/\[ID [0-9]+ [a-z]+\.[a-z]+\]//");&lt;br /&gt;&lt;br /&gt;log { source(s_local); filter(f_noid); rewrite(r_msgid); destination(d_messages); };&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;Of course similar functionality would be added to manipulate all syslog message parts, like hostname. The results would become part of the message itself, thus macros would use the rewritten message. And by the way backreferences could be used to refer various parts of the message, matched by regexps.&lt;br /&gt;&lt;br /&gt;What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114807667875312903?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114807667875312903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114807667875312903' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114807667875312903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114807667875312903'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/05/thinking-about-rewrite-rules.html' title='Thinking about rewrite rules'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114690203677906997</id><published>2006-05-06T09:52:00.000+02:00</published><updated>2006-05-06T09:53:56.790+02:00</updated><title type='text'>syslog-ng 1.6.11 released</title><content type='html'>I have released syslog-ng 1.6.11 which fixes the problems outlined in the previous post. You can find it at the &lt;a href="http://www.balabit.com/products/syslog-ng/"&gt;BalaBit&lt;/a&gt; website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114690203677906997?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114690203677906997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114690203677906997' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114690203677906997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114690203677906997'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/05/syslog-ng-1611-released.html' title='syslog-ng 1.6.11 released'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114659861326295589</id><published>2006-05-02T21:34:00.000+02:00</published><updated>2006-05-02T21:36:53.273+02:00</updated><title type='text'>syslog-ng 1.6.10 broken</title><content type='html'>Just a quick one, it turned out that syslog-ng 1.6.10 is broken in several ways, first reading messages from /proc/kmsg is broken, and second the time_sleep() feature that was added in 1.6.10 has missed an important chunk from the parser code which made time_sleep() unconfigurable.&lt;br /&gt;&lt;br /&gt;So a feature that cannot be used and an important problem. :(&lt;br /&gt;&lt;br /&gt;I'm going to release syslog-ng 1.6.11 soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114659861326295589?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114659861326295589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114659861326295589' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114659861326295589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114659861326295589'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/05/syslog-ng-1610-broken.html' title='syslog-ng 1.6.10 broken'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114659837474521709</id><published>2006-05-02T21:16:00.000+02:00</published><updated>2006-05-06T09:56:12.443+02:00</updated><title type='text'>Infosec in London</title><content type='html'>I spent the last week in London, visiting InfoSec Europe. It was a great fun, I liked the exhibition as well as the city itself.&lt;br /&gt;&lt;br /&gt;I have not been to London before (except for a single-day business trip two years ago, but that does not count), and I liked the city very much. I walked about 40-50km on these three days, I had my legs completely worn out. British people are quite strange I would say. Everything is completely in the reverse: the cars, the direction the trains arrive from, the way the taps need to be opened, I think even the screws must be unmounted in the reverse direction. I hated these non-mixing taps, one tap for cold another for hot water, no way to mix something tepid. Beside this strangeness I liked the atmosphere of the city, I visited all the important places, I even spent two hours in the British Museum, but it was nothing but a scratch on the surface.&lt;br /&gt;&lt;br /&gt;The exhibition was also interesting, met a couple of interesting persons, like the &lt;a href="http://www.watchfire.com/"&gt;Watchfire&lt;/a&gt; guys who invented HTTP request smuggling and some real computer forensics guys. We were talking about the problems with encryption vs. forensics and what possible solutions there are to this problem.&lt;br /&gt;&lt;br /&gt;All in all it was an exhausting week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114659837474521709?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114659837474521709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114659837474521709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114659837474521709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114659837474521709'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/05/infosec-in-london.html' title='Infosec in London'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114579037431708446</id><published>2006-04-23T12:49:00.000+02:00</published><updated>2006-04-23T13:06:14.333+02:00</updated><title type='text'>Committed IPv6 support for syslog-ng</title><content type='html'>I have finished IPv6 support for syslog-ng, I'm wondering how this will improve the number of people actually using the new syslog-ng 1.9.x tree.&lt;br /&gt;&lt;br /&gt;In the implementation I've created separate udp6() and tcp6() source and destination drivers, because this was somewhat easier to implement. I'm expecting some portability trouble, but otherwise the implementation is nice and simple.&lt;br /&gt;&lt;br /&gt;Some smaller fixes went in recently as well, like:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;avoid chown/chmod files that do not exist as it clobbered error reporting,&lt;/li&gt;   &lt;li&gt;added close-on-exec flag to file descriptors to avoid child processes to inherit tcp/udp connection fds,&lt;/li&gt;   &lt;li&gt;fixed an off-by-one in flush_lines calculation,&lt;/li&gt;   &lt;li&gt;a possible memory leak, and&lt;br /&gt;  &lt;/li&gt;   &lt;li&gt;a fix for non-existing filter references in the internal() message path&lt;/li&gt; &lt;/ul&gt; Apart from IPv6 support these are mainly bugfixes and I'm confident we can have a 2.0.0 real soon now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114579037431708446?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114579037431708446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114579037431708446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114579037431708446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114579037431708446'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/04/committed-ipv6-support-for-syslog-ng.html' title='Committed IPv6 support for syslog-ng'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114527354263697355</id><published>2006-04-17T13:24:00.000+02:00</published><updated>2006-04-17T13:32:22.650+02:00</updated><title type='text'>syslog-ng and IPv6</title><content type='html'>I received an email last week asking about IPv6 support in syslog-ng. The question also referred to an &lt;a href="http://www.deepspace6.net/docs/ipv6_status_page_apps.html#id2889861"&gt;IPv6 application page&lt;/a&gt; where most of the system logging applications were listed red showing that they lack IPv6 support.&lt;br /&gt;&lt;br /&gt;I started hacking on it but I thought I would ask you how important you think adding IPv6 support to syslog-ng is?&lt;br /&gt;&lt;br /&gt;My idea was to add tcp6() and udp6() source and destination drivers, however a lot of applications seem to do IPv6 support with a single listener, e.g. open an AF_INET6 socket and assume that the system shares IPv4 and IPv6 sockets. Which of the two approaches is preferable? The first gives more control the latter seems to be a bit easier to use, it works out of the box.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114527354263697355?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114527354263697355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114527354263697355' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114527354263697355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114527354263697355'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/04/syslog-ng-and-ipv6.html' title='syslog-ng and IPv6'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114508284943032526</id><published>2006-04-15T08:25:00.000+02:00</published><updated>2006-04-15T14:55:52.246+02:00</updated><title type='text'>Released syslog-ng 1.9.10 for real this time</title><content type='html'>Just a quick one this time, I have released syslog-ng 1.9.10 available at the usual &lt;a href="http://www.balabit.com/products/syslog-ng/upgrades.bbq"&gt;places&lt;/a&gt;. The release contains mainly bugfixes and an implementation of the previously missing netmask() filter and support for bad_hostname() and check_hostname() options.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114508284943032526?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114508284943032526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114508284943032526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114508284943032526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114508284943032526'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/04/released-syslog-ng-1910-for-real-this.html' title='Released syslog-ng 1.9.10 for real this time'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114461594571245389</id><published>2006-04-09T22:09:00.000+02:00</published><updated>2006-04-09T23:05:38.833+02:00</updated><title type='text'>Timezone woes</title><content type='html'>As I have written in my &lt;a href="http://bazsi.blogspot.com/2006/04/almost-released-syslog-ng-1910.html"&gt;previous post&lt;/a&gt; there was a timezone related problem triggered by one of the unit test programs of syslog-ng. Apart from a minor issue in the testprogram itself, it turned out that there's a timezone conversion problem at the reception of messages. Syslog-ng 1.9.x has support for messages that use the ISO 6501 timestamp. As an example the current local time here right now in ISO 6501 is: 2006-04-09T22:43:24+02:00. The important part is that it includes an explicit timezone offset. This offset is processed by syslog-ng and it can convert timezones when necessary.&lt;br /&gt;&lt;br /&gt;I spent about half a day to fix timezone conversion, I even used a pen and a sheet of paper to do some calculations. All I can say that there's an important building block missing from the POSIX time handling functions, which would have made my job as an application developer way easier: one that converts a broken down time representation to a UNIX time_t value, where the time to be converted is &lt;span style="font-weight: bold;"&gt;NOT&lt;/span&gt; in the local timezone, but in GMT. The other side of this conversion exists: localtime() converts a UNIX timestamp to the local timezone, and gmtime() does the same but instead of using the local timezone and daylight saving settings, it uses GMT as timezone.&lt;br /&gt;&lt;br /&gt;The only portable function to convert a human readable timestamp to UNIX timestamp is &lt;a href="http://www.linuxmanpages.com/man3/mktime.3.php"&gt;mktime(3)&lt;/a&gt;, which assumes that the converted timestamp is in local time. At first blick this can be easily used in place of our imaginery mktimegm() function: mktime() returns a value offseted by the local timezone, but we also know the local timezone offset, so we substract this from the return value of mktime() and we have a stamp in GMT, right? No, not right.&lt;br /&gt;&lt;br /&gt;There are cases when mktime() changes its incoming broken down time representation when Daylight Saving kicks in: the value of "2006-03-26 02:00:00 CET" does not exist, it is equal to "2006-03-26 03:00:00 CEST" (CET is +01:00, CEST the daylight saving time is +02:00), and this happens to every value in this time interval, e.g. 2:33 CET becomes 3:33 CEST.&lt;br /&gt;&lt;br /&gt;Remember, I have a timestamp with an explicitly specified timezone offset where the daylight saving settings of the syslog-ng process should not count, e.g. the sender sends something like 2006-03-26 02:00:00 +02:00, which is converted to 2006-03-26 03:00:00 +02:00 by the mktime() function, e.g. it is off one hour. And all this happens only in the transition hour. Good, heh?&lt;br /&gt;&lt;br /&gt;The solution was to check this change in the time by mktime() and adjust the returned value, this seems to work reasonably well for the transition hour.&lt;br /&gt;&lt;br /&gt;While writing this post I have found that there is a GNU extension defined, a function named timegm(3), which seems to do exactly what I have wanted. The problem that this function does not seem to be too portable. The notes in the manpage say that for achieve timegm() functionality, the application should change its own environment, set the TZ environment variable, call mktime(), and reset the environment variable. This does not look too clean I would even call that ugly. IIRC setenv() allocates memory, I would need to call this kludge for each and every incoming message.&lt;br /&gt;&lt;br /&gt;I think this important hole in the API should be plugged, there are a lot of applications that need to work with various timezones and I have a bet that a lot of those work incorrectly in daylight saving transition hours.&lt;br /&gt;&lt;br /&gt;I already have one example: GNU date program also allows specifying an explicit timezone offset:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;bazsi@bzorp:~$ date -d "2006-03-26 01:59:59 +0100"&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;Sun Mar 26 01:59:59 CET 2006&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;bazsi@bzorp:~$ date -d "2006-03-26 02:00:00 +0100"&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;Sun Mar 26 04:00:00 CEST 2006&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The second one should only be one second later than the first, e.g. it should be 03:00:00 CEST, and not 04:00:00 CEST. Try it with your favourite application :)&lt;br /&gt;&lt;br /&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114461594571245389?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114461594571245389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114461594571245389' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114461594571245389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114461594571245389'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/04/timezone-woes.html' title='Timezone woes'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114435942197119784</id><published>2006-04-06T22:55:00.000+02:00</published><updated>2006-04-06T23:37:01.986+02:00</updated><title type='text'>Almost released syslog-ng 1.9.10</title><content type='html'>... but at the end I didn't. I prepared the NEWS file, changed version number etc, but the end it turned out that one of my unit test program which tests macro expansions failed.&lt;br /&gt;&lt;br /&gt;I still have not looked into the issue, hopefully it is only the test program, time related macros seem to use a bad timezone offset. Again I seem to have made a timezone related bug :(&lt;br /&gt;&lt;br /&gt;Although timezones and time related functions seem to be simple at first, it proved to be a problematic area, it already had a lot of bugs and again here is this one. Not to mention the problem that different platforms have different set of variables/functions to cover the issue. For instance "timezone" is a global variable on Linux and a function on BSD. Linux has a "tm_gmtoff" member in "struct tm", BSD doesn't.&lt;br /&gt;&lt;br /&gt;OK, I quit whining now :) Hopefully I'm going to have some free time to look into this bug in the nearfuture.&lt;br /&gt;&lt;br /&gt;I also have two other issues on my radar for syslog-ng 1.9.10, first I've received some reports about missing configuration keywords (namely bad_hostnames and check_hostnames), and second I want to change some currently reserved words to identifiers, so that "kernel" can be used as the name of sources again. And oh yes, I have also received a report on an abort(), although I don't have enough info on this one yet.&lt;br /&gt;&lt;br /&gt;One thing is certain: the 1.9.10 release of syslog-ng is coming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114435942197119784?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114435942197119784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114435942197119784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114435942197119784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114435942197119784'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/04/almost-released-syslog-ng-1910.html' title='Almost released syslog-ng 1.9.10'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114392496129539450</id><published>2006-04-01T22:37:00.000+02:00</published><updated>2006-04-01T22:56:01.303+02:00</updated><title type='text'>SSH publickey authentication implemented</title><content type='html'>I have hacked on our SSH gateway today to add publickey authentication support. By the way I may not have explained this before, so a short introduction is due: Zorp is an application layer gateway with support for 21 protocols, among them an &lt;a href="http://www.balabit.com/common-dl/wps/WP_ssh_051108_en.pdf"&gt;SSH gateway&lt;/a&gt; capable of looking into the encrypted SSH stream and restricting the protocol to a subset that you really want to allow to your users. (e.g. you can forbid TCP port forwarding while still allowing terminal access).&lt;br /&gt;&lt;br /&gt;The problem with publickey authentication is that the signature covers the so called SSH session_id which is a unique value derived during key exchange. My proxy implements a man-in-the-middle, so the client&lt;-&gt;proxy and proxy&lt;-&gt;server connections have a different session id, thus simply replaying the authentication packets of the client will not work since the SSH session ids do not match.&lt;br /&gt;&lt;br /&gt;The solution is that we are going to replace user keys transparently when crossing the firewall, which means that private keys need to be stored there. This is both a feature and a drawback: a feature since you can control which keys you are allowing to leave your perimeter and a drawback as this requires additional management tasks. It would have been so much nicer if we could do this transparently, but I am afraid this is not possible unless we modify all clients out there or alternatively we manage to find a way to crack the Diffie-Hellmann key exchange algorithm.&lt;br /&gt;&lt;br /&gt;On the syslog-ng side I have committed a fix to make files over 2GB work again. It should be available in the next snapshot shortly. I'm also thinking about preparing 1.9.10 with the fixes accumulated so far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114392496129539450?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114392496129539450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114392496129539450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114392496129539450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114392496129539450'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/04/ssh-publickey-authentication.html' title='SSH publickey authentication implemented'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114383828101081587</id><published>2006-03-31T22:41:00.000+02:00</published><updated>2006-03-31T22:51:21.023+02:00</updated><title type='text'>OpenSSL problem found</title><content type='html'>I have finally tracked down the issue I was writing about in &lt;a href="http://bazsi.blogspot.com/2006/03/spending-time-in-gdb.html"&gt;my previous blog post&lt;/a&gt;. It turned out to be a problem with OpenSSL on Linux 2.6 and NPTL. The default implementation  of CRYPTO_thread_id() assumes that getpid() returns a unique value for each thread, however with NPTL each thread has the same pid and only their tid (thread id) value differ.&lt;br /&gt;&lt;br /&gt;This made OpenSSL to hash its thread-specific error state to the same  memory area, thus possibly overwriting memory concurrently freed in another thread. This caused  a heap corruption which in turn caused crashes every now and then, of course showing a backtrace completely unrelated to the original problem.&lt;br /&gt;&lt;br /&gt;The funny part is that I  had  a suspicion (see the yesterday's post) about this error state allocation I just have not seen the obvious reason: I had the impression that getpid() returns a different value for threads just like it did with LinuxThreads. Knowing the exact reason makes the whole issue trivial :).&lt;br /&gt;&lt;br /&gt;I have &lt;a href="http://www.mail-archive.com/openssl-dev@openssl.org/msg21031.html"&gt;posted this&lt;/a&gt; as an email on openssl-dev, I'm wondering what the reactions are going to be.&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;br /&gt;Take care.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114383828101081587?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114383828101081587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114383828101081587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114383828101081587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114383828101081587'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/03/openssl-problem-found.html' title='OpenSSL problem found'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114375318164522986</id><published>2006-03-30T22:59:00.000+02:00</published><updated>2006-03-31T08:18:38.120+02:00</updated><title type='text'>Spending time in gdb...</title><content type='html'>I have spent the last three days debugging an ugly crash in the upcoming Zorp 3.1. First I had some problems with the core files produced with Linux 2.6.12, as the register values proved to be invalid, thus the backtrace was even more unusable than it is usual with heap corruptions.&lt;br /&gt;&lt;br /&gt;I could get access to the original register values as Zorp dumps part of its stack when a fatal signal is encountered. Using that information I could locate the stack frame of the signal handler and luckily Linux passes a "struct sigcontext" to each signal handler as parameter which contains register information. But nevertheless it made analyzing the core files difficult.&lt;br /&gt;&lt;br /&gt;After  a &lt;a href="http://sources.redhat.com/ml/gdb/2006-03/msg00182.html"&gt;post to the gdb mailing list&lt;/a&gt; it turned out to be a kernel problem rather than a gdb problem and with the help of my collegue Krisztián Kovács (of Netfilter ct_sync fame) we could solve the problem by backporting a fix from 2.6.15, so core files are now ok.&lt;br /&gt;&lt;br /&gt;The problem however seems to be difficult, I have already studied the libc malloc implementation, disassembled and annotated the _int_malloc and _int_free functions, I'm now able to read hexdumps of heap areas fluently but I still don't have a fix for the problem. Lucky us Zorp restarts itself in this situation and the scenario where this problem occurs is not frequently used.&lt;br /&gt;&lt;br /&gt;My suspicion is that the SSL error state for threads are the cause of the problem as I have evidence that the freed heap block is overwritten by ERR_clear_state(), which destroys the next and prev pointers in the freed memory block, thus resulting in the crash. The error states are supposedly thread-specific variables, but the way the allocation is done is suspicious.&lt;br /&gt;&lt;br /&gt;I hope I can finally find this problem tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114375318164522986?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114375318164522986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114375318164522986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114375318164522986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114375318164522986'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/03/spending-time-in-gdb.html' title='Spending time in gdb...'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114357599666418107</id><published>2006-03-28T21:53:00.000+02:00</published><updated>2006-03-28T21:59:56.673+02:00</updated><title type='text'>Preparing syslog-ng release</title><content type='html'>I have started to prepare syslog-ng 1.6.10 for release, the tarball has already been uploaded to the website, but I still have not sent an announcement to the mailing lists. So if you read this here, you might download a still unannounced version :)&lt;br /&gt;&lt;br /&gt;Nothing really important in the release, a cleanup in the documentation with several fixes and a migration to DocBook/XML from the SGML favour and a new tunable called time_sleep().&lt;br /&gt;&lt;br /&gt;The latter was worked out together with John Morrissey who did some profiling and found that on hosts with a lot of syslog connections syslog-ng might become a bottleneck. The option does nothing but sleep() a defined amount of time which makes syslog-ng to process incoming messages in batches, this way decreasing the number of poll() loop iterations which was listed high (about 67%) in the profiles generated by John.&lt;br /&gt;&lt;br /&gt;Setting time_sleep() to about 50ms decreased the CPU load by 80% which is quite significant I'd say.&lt;br /&gt;&lt;br /&gt;As Rusty Russell would say I have just received a SIGWIFE, so going to bed now :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114357599666418107?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114357599666418107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114357599666418107' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114357599666418107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114357599666418107'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/03/preparing-syslog-ng-release.html' title='Preparing syslog-ng release'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24916965.post-114356795978452649</id><published>2006-03-28T19:33:00.000+02:00</published><updated>2006-03-28T19:46:58.793+02:00</updated><title type='text'>Starting my blog</title><content type='html'>I have considered starting my own blog for some time now and have finally started doing something for it. I first tried to set up blosxom but as I did not want to spend too much time customizing it I finally gave up and tried to find a nice blogger website which does everything for me. This is blogger.com, I like what I see so far.&lt;br /&gt;&lt;br /&gt;Ops, I should have started by introducing myself: my name is Balázs Scheidler, I live in Budapest, Hungary and I started this blog because I would have some things to publish about some free software projects I am involved in and it is trendy to have a blog anyway :).&lt;br /&gt;&lt;br /&gt;Back to my projects, I am the author of syslog-ng that you might know as an alternative system logging package for UNIX based systems. And also Zorp, an application layer gateway. You can find out more about these at &lt;a href="http://www.balabit.com/"&gt;http://www.balabit.com/&lt;/a&gt;. I also contribute patches to a couple of others (whenever I encounter something I don't like or which simply bugs me) and I sometimes poke into kernel development as well (generally netfilter related development like transparent proxying support for Linux).&lt;br /&gt;&lt;br /&gt;So far, so good. Hopefully I won't give up too soon.&lt;br /&gt;&lt;br /&gt;Bazsi&lt;span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24916965-114356795978452649?l=bazsi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bazsi.blogspot.com/feeds/114356795978452649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24916965&amp;postID=114356795978452649' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114356795978452649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24916965/posts/default/114356795978452649'/><link rel='alternate' type='text/html' href='http://bazsi.blogspot.com/2006/03/starting-my-blog.html' title='Starting my blog'/><author><name>Bazsi</name><uri>http://www.blogger.com/profile/05513463981388142009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_HXml9RfutgE/STXCArrhoCI/AAAAAAAAADA/-4zYK7ASAjc/S220/bazsi-img_8883.jpg'/></author><thr:total>2</thr:total></entry></feed>
