我想要追蹤 Amazon Relational Database Service (Amazon RDS) for PostgreSQL 資料庫執行個體的失敗連線次數。
解決方法
PostgreSQL 每小時都會產生新的日誌檔案。若要追蹤執行 PostgreSQL 的資料庫執行個體登入失敗嘗試,請開啟 log_connections 參數。該參數位於與資料庫執行個體相關聯的自訂參數群組中。然後,當使用者嘗試使用錯誤的憑證登入您的資料庫執行個體時,系統會將失敗嘗試記錄到日誌中。失敗嘗試看起來類似以下範例:「error/postgresql.log.2018-04-19-10.」 如需更多資訊,請參閱使用參數群組。
請參閱以下登入嘗試失敗的範例:
2018-04-19 10:12:31 UTC:123.45.67.8(6789):[unknown]@[unknown]:[12507]:LOG: connection received: host=123.45.67.8port=12345
2018-04-19 10:12:31 UTC:123.45.67.8(6789):test_user@Test_DB:[12507]:FATAL: password authentication failed for user "test_user"
您也可以使用 PostgreSQL log_connections 參數,記錄執行 PostgreSQL 的資料庫執行個體登入成功嘗試。
請參閱以下登入嘗試成功的範例:
2018-04-19 10:19:20 UTC:123.45.67.8(6789):[unknown]@[unknown]:[17196]:LOG: connection received: host=123.45.67.8 port=12345
2018-04-19 10:19:20 UTC:123.45.67.8(6789):test_user@Test_DB:[17196]:LOG: connection authorized: user=test_user database=Test_DB SSL enabled (protocol=xxxx, cipher=xxxx, compression=off)
使用 log_connections 和 log_disconnections 參數來記錄使用者工作階段的持續時間。
請參閱以下工作階段持續時間範例:
2018-04-19 10:19:43 UTC:123.45.67.8(6789):test_user@Test_DB:[17196]:LOG: disconnection: session time: 0:00:23.753 user=test_user database=Test_DB host=123.45.67.8 port=12345
**注意:**用戶端機器的 IP 位址是 123.45.67.8,而 6789 是提供給 PostgreSQL 資料庫程序的 PID (程序 ID)。
剖析日誌檔案
使用 AWS Command Line Interface (AWS CLI) 或 Amazon RDS 主控台來下載日誌。然後,使用 grep 公用程式搜尋失敗的連線:
注意: 如果您在執行 AWS CLI 命令時收到錯誤,請確定您使用的是最新版本的 AWS CLI。
$ grep -B 1 "authentication failed" postgresql.log.2018-04-19-10
2018-04-19 10:12:31 UTC:123.45.67.8(6789):[unknown]@[unknown]:[12507]:LOG: connection received: host=123.45.67.8port=12345
2018-04-19 10:12:31 UTC:123.45.67.8(6789):test_user@Test_DB:[12507]:FATAL: password authentication failed for user "test_user"
注意:****- B 1 參數會告訴 grep 同時顯示符合您正搜尋之模式的行之前的一行。在此範例中,該模式是驗證失敗。
您也可以使用 PostgreSQL log_fdw 延伸模組,以外部資料表形式存取這些日誌。如果您想要保留 PostgreSQL 日誌檔案的時間超過保留期間,請將 Amazon RDS for PostgreSQL 日誌發佈至 Amazon CloudWatch Logs。
相關資訊
如何使用 Amazon RDS 開啟 PostgreSQL 的查詢記錄?
RDS for PostgreSQL 資料庫日誌檔案
將日誌資料匯出至 Amazon S3
將 Aurora PostgreSQL 相容版日誌發佈至 CloudWatch Logs