如何告诉 rsyslog 使用 Unix 域套接字将 syslog 消息写入 Postgresql 数据库?

如何告诉 rsyslog 使用 Unix 域套接字将 syslog 消息写入 Postgresql 数据库?

我创建了一个数据库,如下所述:

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

相关内容