TSF – Giải pháp IT toàn diện cho doanh nghiệp SMB | HCM

P22 - Giám sát hiệu năng SQL Server 2022 Với PRTG

PRTG P22 – Cách Giám sát SQL Server 2022 Performance và Disk Space với PRTG

Việc SQL Server đang “Running” không đồng nghĩa hệ thống đang khỏe mạnh. Trong môi trường production, sự suy giảm hiệu năng thường diễn ra âm thầm trước khi xảy ra downtime.

Trong bài viết này, bạn sẽ học cách Giám sát hiệu năng SQL Server 2022 với PRTG, tập trung vào:

  • Các performance counter quan trọng

  • Chỉ số phản ánh sức khỏe nội tại của SQL

  • Giám sát dung lượng disk chứa MDF, LDF và backup

  • Cấu hình cảnh báo thông minh

Đây là tầng giám sát nâng cao, giúp phát hiện sớm vấn đề trước khi hệ thống bị ảnh hưởng.


🧠 2#. SQL Performance

Sensor sử dụng: SSH Script Advanced

Chọn các counter quan trọng:

• Database size
• Transactions/sec
• Batch Requests/sec
• Buffer Cache Hit Ratio
• Page Life Expectancy (PLE)
• Lock Waits
• Deadlocks/sec

📌 Đây là sensor “brain” của hệ thống giám sát SQL.

Nó cho bạn biết SQL Server có đang chịu áp lực bộ nhớ, workload cao hoặc vấn đề locking hay không.


🛠 Step 1 – Tạo Script Giám Sát

Xác định đường dẫn của lệnh sqlcmd:

 
 
which sqlcmd
 

Lấy đường dẫn trả về và dán vào biến SQLCMD trong script bên dưới.


🔐 Step 2 – Re-assign quyền cho user prtg_sql

Tạo file script:

 
 
sudo nano /var/prtg/scriptsxml/sql_perfomence.sh
 

Nội dung Script

 
💻
filename.bash
#!/bin/bash

SQLCMD="/opt/mssql-tools18/bin/sqlcmd"
USER="prtg_sql"
PASS="StrongPassword!"
SERVER="localhost"

RESULT=$($SQLCMD -S "$SERVER" -U "$USER" -P "$PASS" -C \
-h -1 -W -s "|" -Q "
SET NOCOUNT ON;

SELECT
  /* Total DB Size (MB) – per current DB */
  (SELECT SUM(size)*8/1024 FROM sys.database_files),

  /* Transactions/sec (_Total) */
  (SELECT cntr_value
   FROM sys.dm_os_performance_counters
   WHERE counter_name='Transactions/sec'
     AND instance_name='_Total'),

  /* Batch Requests/sec */
  (SELECT SUM(cntr_value)
   FROM sys.dm_os_performance_counters
   WHERE counter_name='Batch Requests/sec'),

  /* Buffer Cache Hit Ratio (%) */
  (
    SELECT
      CAST(
        100.0 *
        MAX(CASE WHEN counter_name='Buffer cache hit ratio' THEN cntr_value END) /
        NULLIF(MAX(CASE WHEN counter_name='Buffer cache hit ratio base' THEN cntr_value END),0)
      AS DECIMAL(5,2))
    FROM sys.dm_os_performance_counters
  ),

  /* Page Life Expectancy – instance rỗng */
  (SELECT cntr_value
   FROM sys.dm_os_performance_counters
   WHERE counter_name='Page life expectancy'
     AND instance_name=''),

  /* Lock Waits/sec */
  (SELECT COALESCE(SUM(cntr_value),0)
   FROM sys.dm_os_performance_counters
   WHERE counter_name='Lock Waits/sec'),

  /* Deadlocks/sec */
  (SELECT COALESCE(SUM(cntr_value),0)
   FROM sys.dm_os_performance_counters
   WHERE counter_name='Number of Deadlocks/sec');
")

IFS='|' read DBSIZE TRANS BATCH BCHR PLE LOCK DEAD <<< "$RESULT"

echo "<prtg>"

echo "<result>
  <channel>Total DB Size</channel>
  <value>${DBSIZE:-0}</value>
  <unit>MegaByte</unit>
</result>"

echo "<result>
  <channel>Transactions</channel>
  <value>${TRANS:-0}</value>
  <unit>Count</unit>
  <mode>Rate</mode>
</result>"

echo "<result>
  <channel>Batch Requests</channel>
  <value>${BATCH:-0}</value>
  <unit>Count</unit>
  <mode>Rate</mode>
</result>"

echo "<result>
  <channel>Buffer Cache Hit</channel>
  <value>${BCHR:-0}</value>
  <unit>Percent</unit>
  <float>1</float> 
</result>"

echo "<result>
  <channel>Page Life Expectancy</channel>
  <value>${PLE:-0}</value>
  <unit>Seconds</unit>
</result>"

echo "<result>
  <channel>Lock Waits</channel>
  <value>${LOCK:-0}</value>
  <unit>Count</unit>
  <mode>Rate</mode>
</result>"

echo "<result>
  <channel>Deadlocks</channel>
  <value>${DEAD:-0}</value>
  <unit>Count</unit>
  <mode>Rate</mode>
</result>"

echo "<text>SQL Performance OK</text>"
echo "</prtg>"

🔧 Delegation and Enforcement

Cấp quyền thực thi:

 
 
sudo chmod +x /var/prtg/scriptsxml/sql_perfomence.sh
 

Chạy kiểm tra:

 
 
sudo /var/prtg/scriptsxml/sql_perfomence.sh
 

Nếu XML output hiển thị đúng cấu trúc <prtg>...</prtg>, script đã sẵn sàng.


📡 Step 2 – Thêm Sensor trong PRTG

Thêm sensor mới:

  • Type: SSH Script Advanced

  • Script: sql_perfomence.sh

PRTG sẽ tự động tạo các channel dựa trên XML output.


🚨 Step 3 – Cấu hình Alert Threshold

Không phải chỉ số nào cũng cần đặt threshold cứng.

Total DB Size (MB)

KHÔNG đặt threshold.
Dùng để theo dõi tăng trưởng dữ liệu theo thời gian.


Transactions/sec

KHÔNG đặt threshold.
Giá trị phụ thuộc workload, dùng để so sánh xu hướng.


Batch Requests/sec

KHÔNG đặt threshold.
Theo dõi mức độ xử lý truy vấn.


Buffer Cache Hit %

📌 SQL khỏe mạnh thường ≥ 98%

Nếu dưới 95% kéo dài, có thể đang thiếu RAM.


Page Life Expectancy (PLE)

PLE thấp cho thấy áp lực bộ nhớ.
Quan sát sự sụt giảm đột ngột thay vì giá trị cố định.


Lock Waits/sec

Giá trị cao có thể do blocking hoặc thiếu index.


Deadlocks/sec

Deadlock không phải lúc nào cũng lỗi nghiêm trọng.
Chỉ cảnh báo khi xảy ra liên tục.


💾 3#. Disk Capacity (Extremely Sensitive SQL)

SQL Server rất nhạy cảm với việc hết dung lượng disk.

Sensor: SSH Disk Free v2

Theo dõi các disk chứa:

 Data (.mdf)
 Log (.ldf)
 Backup

Nếu disk đầy:

  • SQL có thể ngừng ghi log

  • Transaction thất bại

  • Hệ thống có thể dừng hoạt động


🛠 Step 1 – Thêm Sensor Disk

Thêm sensor SSH Disk Free v2 vào SQL Server.

Chọn đúng mount point chứa dữ liệu SQL.


🚨 Step 2 – Cấu hình cảnh báo dung lượng

Khuyến nghị:

  • Warning khi còn 20%

  • Critical khi còn 10%

Disk monitoring thường quan trọng hơn performance counter vì hết dung lượng sẽ gây lỗi ngay lập tức.


🎯 Vì sao cần Giám sát hiệu năng SQL Server?

Khi triển khai Giám sát hiệu năng SQL Server, bạn đang theo dõi:

  • Sức khỏe bộ nhớ

  • Áp lực workload

  • Tình trạng locking

  • Tài nguyên lưu trữ

Cách tiếp cận này giúp:

  • Phát hiện sớm suy giảm hiệu năng

  • Tránh downtime bất ngờ

  • Lập kế hoạch mở rộng tài nguyên

  • Ổn định môi trường production


🚀 Kết luận

Để triển khai Giám sát hiệu năng SQL Server 2022 với PRTG đúng chuẩn, bạn cần:

  • Performance counter quan trọng

  • Service monitoring

  • Threshold hợp lý

  • Disk capacity tracking

Mô hình này tạo thành kiến trúc giám sát đầy đủ:

  • Tầng dịch vụ

  • Tầng hiệu năng

  • Tầng lưu trữ

Với cấu hình này, hệ thống của bạn không chỉ “biết SQL còn chạy hay không”, mà còn biết SQL có đang thực sự khỏe mạnh hay đang tiến gần đến sự cố.

Tham khảo thêm bài viết cùng chủ đề

P3 – Giải Pháp Mạnh Mẽ Giám Sát IP WAN Với PRTG

P3 – Giải Pháp Mạnh Mẽ Giám Sát IP WAN Với PRTG PRTG – P3 Giám Sát Internet & WAN IP Với PRTG Network Monitor Việc theo dõi kết nối Internet là yếu tố sống còn trong hạ tầng doanh nghiệp. Khi đường truyền WAN gặp sự cố, các dịch...

Read More

P1 – Hướng Dẫn Cài Đặt PRTG Hoàn Chỉnh Windows 10

P1 – Hướng Dẫn Cài Đặt PRTG Hoàn Chỉnh Windows 10 🚀 Cài đặt PRTG trên Windows 10 – Initial Setup & Configuration (P1) Nếu bạn đang bắt đầu triển khai hệ thống giám sát hạ tầng, thì việc Cài đặt PRTG đúng cách là bước nền tảng cực kỳ...

Read More