Unixドメインソケットを使用してPostgresqlデータベースにsyslogメッセージを書き込むようにrsyslogに指示するにはどうすればよいですか?

Unixドメインソケットを使用してPostgresqlデータベースにsyslogメッセージを書き込むようにrsyslogに指示するにはどうすればよいですか?

以下のようにデータベースを作成しました。

https://github.com/rsyslog/rsyslog/blob/master/plugins/ompgsql/createDB.sql

データベースに「root」ユーザーを作成し、挿入権限を付与しました。

Syslog=# create user "root";
Syslog=# grant insert on table SystemEvents to "root";
Syslog=# grant insert on table SystemEventsProperties to "root";

接続はうまくいきます。

# psql Syslog -c '\conninfo'
You are connected to database "Syslog" as user "root" via socket in "/var/run/postgresql" at port "5432".

その後、「rsyslog.conf」でホストを指定するためにいくつかの異なる方法を試しました。

*.* action(type="ompgsql" server="" db="Syslog" uid="root" pwd="")
*.* action(type="ompgsql" server="/run/postgresql" db="Syslog" uid="root" pwd="")
*.* action(type="ompgsql" server="/run/postgresql/.s.PGSQL.5432" db="Syslog" uid="root" pwd="")

何も動作しません。常にエラーが発生します。

データベースエラー(1):サーバーに接続されていない[v8.2102.0]

この問題をどのように解決しますか?

ベストアンサー1

ジョブserverパラメータはホスト名またはIPアドレスである必要があるため、server="localhost"最初の操作を試してください。より設定ページ はい。

conninfo標準を使用してすべてのパラメータを置き換えることもできます。PostgreSQL URIたとえば、次の形式です。

action(type="ompgsql" conninfo="postgresql://root:@localhost/Syslog")

Unixドメインソケットを指定する必要はありませんが、URIドキュメントはこれを行う方法を示しています。たとえば、次のようになります。

postgresql://root/Syslog?host=/var/run/postgresql

おすすめ記事