Unix 도메인 소켓을 사용하여 Postgresql 데이터베이스에 syslog 메시지를 쓰도록 rsyslog에 어떻게 지시합니까?

Unix 도메인 소켓을 사용하여 Postgresql 데이터베이스에 syslog 메시지를 쓰도록 rsyslog에 어떻게 지시합니까?

아래와 같이 데이터베이스를 만들었습니다.

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

데이터베이스에 "루트" 사용자를 생성하고 삽입 권한을 부여했습니다.

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

관련 정보