# PostgreSQL Database Output Module (ompgsql)

Module Name: | ompgsql
Author: | Rainer Gerhards and Dan Molik
Available: | 8.32+

## Purpose

This module provides native support for logging to PostgreSQL databases. It’s an alternative (with potentially superior performance) to the more generic omlibdbi module.

## Configuration Parameters

Note

Parameter names are case-insensitive.

### Action Parameters

#### Server

type | default | mandatory | `obsolete legacy` directive
--- | --- | --- | ---
word | none | yes | none

The hostname or address of the PostgreSQL server.

#### Port/Serverport

type | default | mandatory | `obsolete legacy` directive
--- | --- | --- | ---
integer | 5432 | no | none

The IP port of the PostgreSQL server.

#### db

type | default | mandatory | `obsolete legacy` directive
--- | --- | --- | ---
word | none | yes | none

The multi-tenant database name to `INSERT` rows into.

#### User/UID

type | default | mandatory | `obsolete legacy` directive
--- | --- | --- | ---
word | postgres | no | none

The username to connect to the PostgreSQL server with.

#### Pass/PWD

type | default | mandatory | `obsolete legacy` directive
--- | --- | --- | ---
word | postgres | no | none

The password to connect to the PostgreSQL server with.

#### Template

type | default | mandatory | `obsolete legacy` directive
--- | --- | --- | ---
word | none | no | none

The template name to use to `INSERT` rows into the database with. Valid SQL syntax is required, as the module does not perform any insertion statement checking.

## Examples

### Example 1

A Basic Example using the internal PostgreSQL template.

    # load module
    module(load="ompgsql")

    action(type="ompgsql" server="localhost"
           user="rsyslog" pass="test1234"
           db="syslog")

### Example 2

A Templated example.

    template(name="sql-syslog" type="list" option.sql="on") {
      constant(value="INSERT INTO SystemEvents (message, timereported) values ('")
      property(name="msg")
      constant(value="','")
      property(name="timereported" dateformat="pgsql" date.inUTC="on")
      constant(value="')")
    }

    # load module
    module(load="ompgsql")

    action(type="ompgsql" server="localhost"
           user="rsyslog" pass="test1234"
           db="syslog"
           template="sql-syslog" )

### Example 3

An action queue and templated example.

    template(name="sql-syslog" type="list" option.sql="on") {
      constant(value="INSERT INTO SystemEvents (message, timereported) values ('")
      property(name="msg")
      constant(value="','")
      property(name="timereported" dateformat="pgsql" date.inUTC="on")
      constant(value="')")
    }

    # load module
    module(load="ompgsql")

    action(type="ompgsql" server="localhost"
           user="rsyslog" pass="test1234"
           db="syslog"
           template="sql-syslog"
           queue.size="10000" queue.type="linkedList"
           queue.workerthreads="5"
           queue.workerthreadMinimumMessages="500"
           queue.timeoutWorkerthreadShutdown="1000"
           queue.timeoutEnqueue="10000")

## Building

To compile Rsyslog with PostgreSQL support you will need to:

- install libpq and libpq-dev packages, check your package manager for the correct name.
- set –enable-pgsql switch on configure.

See also

Help with configuring/using `Rsyslog`:

- Mailing list - best route for general questions
- GitHub: rsyslog source project - detailed questions, reporting issues that are believed to be bugs with `Rsyslog`
- Stack Exchange (View, Ask) - experimental support from rsyslog community

See also

Contributing to `Rsyslog`:

- Source project: rsyslog project README.
- Documentation: rsyslog-doc project README

Copyright 2008-2020 Rainer Gerhards (Großrinderfeld), and Others.