iT邦幫忙

2023 iThome 鐵人賽

DAY 20
1
自我挑戰組

Hello SQL 初次見面你好系列 第 20

Day 20: 實時監控和日誌

  • 分享至 

  • xImage
  •  

在資料庫世界中,監控和日誌是確保一切運行正常的重要工具。當系統出現問題或性能下降時,這些工具可以幫助我們找到問題的根本原因。今天,我們將探討 PostgreSQL 中的實時監控和日誌。

實時監控

為什麼需要實時監控?

當資料庫性能突然下降或發生故障時,實時監控可以幫助我們立即發現問題,從而快速地解決問題。透過實時監控,我們可以:

  1. 瞭解資料庫的健康狀態。
  2. 監控資料庫的性能指標,如查詢速度、CPU 使用率、記憶體使用情況等。
  3. 獲得即時的警報,以便在出現問題時迅速作出反應。

PostgreSQL 的實時監控工具

在 PostgreSQL 中,有許多內建工具可以幫助我們監控資料庫的狀態和性能。以下是一些常用的監控工具和如何使用它們:

如何找到 postgresql.conf

  1. 進入 psql 介面
$ psql -U postgres
  1. 執行 SHOW config_file;,就可以找到 postgresql.conf 文件了
SHOW config_file;
- 什麼是 postgresql.conf ?

postgresql.conf 是 PostgreSQL 的主要設定文件
包含了控制 PostgreSQL 服務運行的各種設定選項
這些設定選項覆蓋了資料庫的性能、安全性、連接參數和許多其他方面。

pg_stat_statements:

這是一個模組,可以用來監控 SQL 查詢的性能。它提供了每個查詢的執行時間、執行次數、讀取/寫入的行數等統計資訊

如何啟用和使用:

  1. 首先,需要在 postgresql.conf 文件中啟用此模組:
shared_preload_libraries = 'pg_stat_statements'
  1. 重新啟動 PostgreSQL 服務
# 以 Homebrew 為例

$ brew services restart postgresql
  1. 建立 pg_stat_statements 擴充模組:
CREATE EXTENSION pg_stat_statements;
  1. 查詢 pg_stat_statements 視圖以獲取查詢統計資訊:
SELECT * FROM pg_stat_statements;

pg_stat_activity:

此視圖顯示目前的活動連接和它們正在執行的查詢。這對於找出哪些查詢正在運行以及它們的狀態非常有用

使用方法:

SELECT * FROM pg_stat_activity;

pg_stat_database*:

提供關於每個資料庫的統計資訊,如事務次數、閱讀和寫入的行數等

使用方法:

SELECT * FROM pg_stat_database;

此外,還有許多第三方工具和平台,如 PgAdmin, DataDog, 和 New Relic,提供了更豐富的監控功能

日誌

什麼是日誌?

日誌是一種系統活動的記錄,它可以幫助我們追踪問題、監控系統的健康狀態和分析性能。

PostgreSQL 的日誌系統

在 PostgreSQL 中,可以透過設定文件 postgresql.conf 來調整日誌的設定

  • logging_collector: 啟用或禁用日誌收集。
  • log_directory: 定義日誌文件的存儲目錄。
  • log_filename: 指定日誌文件的命名格式。

例如:

logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d.log'

上述設定將啟用日誌收集,並將日誌文件存儲在名為 pg_log 的目錄中,每天生成一個新的日誌文件。

如何分析日誌?

  1. 錯誤訊息: 透過日誌可以找到任何異常或錯誤。
  2. 慢查詢: 如果設定了 log_min_duration_statement, 可以在日誌中找到 查詢執行時間 超過指定時間的查詢。
  • 一樣可以在 postgresql.conf 設定 log_min_duration_statement

總結

實時監控和日誌是資料庫管理的兩個重要方面。透過有效的監控和日誌分析,可以確保資料庫運行順暢,並及時發現和解決問題。


上一篇
Day 19 SQL 中的隔離級別
下一篇
Day 21: PostgreSQL 中的 Row-Level Locks (行鎖定)
系列文
Hello SQL 初次見面你好30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言