iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
自我挑戰組

三十天,PG與我系列 第 21

PostgreSQL Log記錄功能

  • 分享至 

  • xImage
  •  

postgresql.conf相關參數

log_destination選擇log會被發送的位置。選項有stderr, csvlog, syslog, 以及 eventlog,stderr是系統的標準輸出,eventlog是windows的機制,syslog是unix系統的事件紀錄機制,而csvlog可以將紀錄檔存成CSV檔案,方便其他程式做自動化的分析。
log_directory可以指定log檔案儲存的位置,可以是絕對路徑或者相對於${PGDATA}。log_filename可以指定log檔案名稱的格式。
logging_collector選項為開啟一個專門的程序,將log記錄到外部的檔案之中。

log_truncate_on_rotation可以設定當Postgres面對相同名稱的log檔案已經存在的時候,是否要將舊的檔案刪除(或是將內容加到後面)。log_rotation_age/log_rotation_size可以指定當log累積超過一定時間或大小的時候產生新的log檔案。

log_min_duration_statement設定可以用來紀錄執行時間超過一定門檻的SQL query,設定-1關閉此功能,或者以毫秒為單位設定時間。
log_autovacuum_min_duration可以記錄執行超過一定時間的autovacuum操作。

log_checkpoints可以在log檔案裡面紀錄checkpoint執行的相關資訊。log_connections/log_disconnections可以記錄連線建立與摧毀的過程。
// log_connection產生的內容

2020-04-16 18:05:00 CEST [29759]: [1]
user=[unknown],db=[unknown],app=[unknown],client=192.168.222.1 LOG:
connection received: host=192.168.222.1 port=45106
2020-04-16 18:05:00 CEST [29759]: [2]
user=luca,db=forumdb,app=[unknown],client=192.168.222.1 LOG: connection
authorized: user=luca database=forumdb application_name=psql SSL enabled(protocol=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384, bits=256,
compression=off)

//log_disconnection產生的內容

2020-04-16 18:05:08 CEST [29759]: [4]
user=luca,db=forumdb,app=psql,client=192.168.222.1 LOG: disconnection:
session time: 0:00:07.159 user=luca database=forumdb host=192.168.222.1
port=45106

log_duration可以記錄SQL query的執行時間(這個紀錄執行時間的選項,跟先前提到的log_min_duration_statement紀錄query本身的功能是分開的)。
//log_min_duration產生的內容

2020-04-16 18:05:05 CEST [29759]: [3]
user=luca,db=forumdb,app=psql,client=192.168.222.1 LOG: duration: 1018.650
ms statement: SELECT count(*) FROM posts;

log_line_prefix可以設定紀錄檔中每一筆紀錄的前綴格式。
log_statement可以設定要在log檔案中記錄哪些SQL statement。
log_temp_files可以記錄超過特定大小的暫存檔案生成,方便觀測暫存檔案造成的效能問題。
log_timezone可以設定log檔案被記錄的時區。
log_statement打開之後可以把所有執行過的SQL query都記錄下來。

log_min_messages可以設定Postgres的哪些訊息要進入log檔案中。在PostgreSQL裡面,系統發出的訊息可以分成下面幾個等級
https://ithelp.ithome.com.tw/upload/images/20220921/20114934z0Pw6jMIpb.png
越下面的等級越嚴重,而設定之後只有'大於等於'該等級的訊息才會出現在log裡面,而client_min_message則是設定在使用類似psql的客戶端連線時所輸出的訊息等級。

log_transaction_sample_rate可以設定在執行的transaction當中紀錄每一條
SQL query的比率,如果設成0.5則代表兩筆transaction會有一筆裡面所有的SQL query被記錄。

Postgres設定指引網站

https://postgresqlco.nf/
提供postgres各版本各個參數的用途解說以及建議用法,也有分類方便使用者查詢。


上一篇
PostgreSQL冷知識-HOT(heap-only tuple) update
下一篇
Postgres監控插件介紹
系列文
三十天,PG與我30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言