データベース - postgreSQL - サーバ設定 - ポート・ログ

 クラウディア
1. 概要
2. アドレス・ポート
3. ログ

1. 概要

 これも、一部外部からの接続と、ログの設定を行うには。

postgresql.conf
 を編集します。  編集の手段については、前ページと同様です。  すなわち、「FreeBSD」であれば。

sudo -u postgres vim /var/db/postgres/data16/postgresql.conf
 「Windows」は、適当なテキストエディタあれば、かまいません。  本ページは、下記のサイトを参考にさせていただきました。
Let's Postgres ログ関連の設定

2. アドレス・ポート

 クライアントからの接続を待ち受ける、アドレス・ポート番号を設定するには。  下記は、「FreeBSD」の「PostgreSQL 16.8_1」のデフォルトの状態です。

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
#port = 5432                            # (change requires restart)
max_connections = 100                   # (change requires restart)
 サーバアドレスを「192.168.0.2」とすれば、下記のように記述します。

listen_addresses = 'localhost,192.168.0.2'
port = 5432
 これで、前ページの設定と合わせて、接続可能にしておけば、ポート番号「5432」で「192.168.0.2」にクライアントから接続できます。  当然、複数アドレスあれば、カンマで区切って、アクセスさせるアドレスを書けますし。  ポート番号を変えることもできます。

3. ログ

 以下、「FreeBSD」で、ログの出力先を変えたりする設定です。  「FreeBSD」の「PostgreSQL 16.8_1」のデフォルトの状態を変更します。  ログを。

/var/log/postgresql/postgresql.log
 というファイルに出力させ、1日ずつローテーションさせることとしますと。

log_destination = 'syslog'
#log_destination = 'stderr'             # Valid values are combinations of
 を。

#log_destination = 'syslog'
log_destination = 'stderr'             # Valid values are combinations of
 に変えます。以下、矢印で・・・。

#logging_collector = off                # Enable capturing of stderr and csvlog
   ↓

logging_collector = on                  # Enable capturing of stderr and csvlog

#log_directory = 'log'                  # directory where log files are written,
   ↓

log_directory = '/var/log/postgresql'   # directory where log files are written,

#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'        # log file name pattern,
   ↓

log_filename = 'postgresql.log'
 これは、ローテーションの具合をみて書き換えるかも・・・。

#log_rotation_age = 1d                  # Automatic rotation of logfiles will
   ↓

log_rotation_age = 1d                   # Automatic rotation of logfiles will
 1日ごとにローテーションさせます。  ローテーションは、「newsyslog.conf」に書いてそちらで制御させようかとも思ったのですが、ファイルの所有権の問題がややこしそうなので、当面こちらで・・・。

#log_line_prefix = '%m [%p] '           # special values:
   ↓

log_line_prefix = '%t '                 # special values:
 とりあえず、先頭に出力時刻だけつけるようにします。  後ろにセパレータの空白か何かをいれないと後続のメッセージとくっついて出力されちゃいます。  編集が終わったら、初回出力用にフォルダとファイルを作成します。  「root」ユーザ権限で。

mkdir -pv /var/log/postgresql
touch /var/log/postgresql/postgresql.log
chown -R postgres:postgres /var/log/postgresql
 「PortgreSQL」を再起動して、ログを確認します。  「root」ユーザ権限で。

service postgresql restart
 それまで、起動時に下記のように表示されていたメッセージが。

2024-12-12 16:42:14.934 JST [18909] LOG:  ending log output to stderr
2024-12-12 16:42:14.934 JST [18909] HINT:  Future log output will go to log destination "syslog".
 下記のように変わります。

2024-12-12 16:56:52 JST LOG:  redirecting log output to logging collector process
2024-12-12 16:56:52 JST HINT:  Future log output will appear in directory "/var/log/postgresql".
 ログの中身を確認してみます。

tail /var/log/postgresql/postgresql.log
 下記のようになっています。

2024-12-12 16:58:01 JST LOG:  database system is shut down
2024-12-12 16:58:01 JST LOG:  starting PostgreSQL 16.6 on amd64-portbld-freebsd14.2, compiled by clang version 15.0.7 (https://git.FreeBSD.org/ports.git cc38be92521ce1c24eb946834338c0df5c60483a), 64-bit
2024-12-12 16:58:01 JST LOG:  listening on IPv6 address "::1", port 5432
2024-12-12 16:58:01 JST LOG:  listening on IPv4 address "127.0.0.1", port 5432
2024-12-12 16:58:01 JST LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2024-12-12 16:58:01 JST LOG:  database system was shut down at 2024-12-12 16:58:01 JST
2024-12-12 16:58:01 JST LOG:  database system is ready to accept connections
 ログの出力が、意図通りになりました。
ハイスピードプランJETBOY