[syslog-ng] sql() and pgsql
Balazs Scheidler
bazsi at balabit.hu
Wed Jul 28 11:30:32 CEST 2010
On Tue, 2010-07-27 at 13:28 -0500, John Kristoff wrote:
> Hello,
>
> First thanks to Bazsi and co. for years of great work on syslog-ng.
> I've used it off and on for some time and have always found it to be
> well implemented and supported. I've experimented a bit with rsyslog
> since some distros have been making it their new default and found
> syslog-ng to be easier to work with and more reliable for my tasks.
Nice to hear. I always appreciate positive feedback, so you made my
day :)
>
> I'm been playing around with v3.0.8 and the sql() / pgsql output driver
> to insert log data into a specific table on a specific schema. I
> couldn't figure out how to specify the schema and maybe its just not
> supoprted. For instance, if the following is defined:
>
> database: foo
> schema: bar
> table: baz
>
> but the PostgreSQL search path for the user doesn't include bar, then
> syslog-ng will attempt to create a table in the default schema (usually
> 'public'). I tried setting the table name to "bar.baz", but that just
> created a table named bar_baz in the default schema. I did a quick
> check in the source code and didn't see where this was occurring, maybe
> its a function of a third party library?
>
> If schema support was available that would be nice. For posterity
> sake and maybe a FAQ, the work around is to alter the search_path for
> the user (e.g. ALTER ROLE user SET search_path = bar,public;).
>
> On a related note, it might be nice to have an option to avoid creating
> a table if it does not already exist. If nothing else, this helps limit
> the permissions granted to the syslog-ng db user, which would be
> appreciated. Likewise, it might also be nice to have an option that
> can disable checking if the table exists (the "SELECT * FROM %s WHERE
> 0=1" query) to further lock down user permissions.
well, there's a create_dirs() option for files, so perhaps a similar one
could make sense in the SQL case as well.
As an incentive to try 3.2, here's a compile-tested, but trivial patch
in 3.2 that implements this option:
commit f059e7202c8709966e0559273ebd2f54d9d38508
Author: Balazs Scheidler <bazsi at balabit.hu>
Date: Wed Jul 28 11:28:08 2010 +0200
afsql: added "dont-create-tables" flag
This patch adds a dont-create-tables flag to the SQL destination to inhibit
automatic table creation.
Usage:
sql(... flags(dont-create-tables));
The same flags can be used to pass "explicit-commits" to enable explicit
commits, which increases syslog-ng by a lot.
--
Bazsi
More information about the syslog-ng
mailing list