Quick Start: Có ngay hệ thống giám sát sau 5 phút
Bạn cần theo dõi tình trạng database ngay lập tức? Dưới đây là cách nhanh nhất để dựng PMM Server bằng Docker và kết nối database đầu tiên vào hệ thống.
1. Chạy PMM Server
# Tạo volume để lưu trữ dữ liệu lâu dài
docker volume create pmm-data
# Khởi chạy container PMM Server
docker run -d \
-p 80:80 -p 443:443 \
--name pmm-server \
--restart always \
-v pmm-data:/srv \
percona/pmm-server:2
2. Cài đặt PMM Client trên Database Node
# Với Ubuntu/Debian
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
dpkg -i percona-release_latest.generic_all.deb
apt update
apt install pmm2-client
3. Kết nối Client vào Server
# Thay <PMM_SERVER_IP> bằng IP máy chủ của bạn
pmm-admin config --server-insecure-tls --server-url=https://admin:admin@<PMM_SERVER_IP>
Sau khi chạy xong, hãy truy cập http://<PMM_SERVER_IP>. User/pass mặc định là admin/admin. Hệ thống đã sẵn sàng!
Tại sao mình chọn PMM thay vì tự dựng Prometheus + Grafana?
Trước đây, mỗi khi database “lag” vào lúc 2 giờ sáng, mình thường phải gõ lệnh SHOW PROCESSLIST một cách mù quáng. Việc tự dựng combo Prometheus, Grafana và các Exporter lẻ tẻ tốn rất nhiều thời gian cấu hình Dashboard.
PMM của Percona giống như một gói “mì ăn liền” cao cấp. Nó tích hợp sẵn mọi thứ từ biểu đồ CPU, RAM đến khả năng phân tích sâu Query Analytics (QAN). Thay vì mất 2 ngày để thiết kế Dashboard, bạn chỉ mất 10 phút để có một hệ thống quan sát toàn diện.
Kiến trúc PMM hoạt động như thế nào?
PMM vận hành theo mô hình Client-Server rất tinh gọn:
- PMM Server: Trung tâm xử lý dữ liệu bằng VictoriaMetrics, hiển thị biểu đồ qua Grafana và quản lý cảnh báo.
- PMM Client: Chạy trực tiếp trên máy chủ Database. Nó thu thập chỉ số hệ thống và bóc tách slow log thông qua các agent siêu nhẹ.
Cấu hình chi tiết cho MySQL và PostgreSQL
Sau khi kết nối Client, bạn cần khai báo database cụ thể để PMM bắt đầu thu thập dữ liệu chuyên sâu.
Đối với MySQL:
Hãy tạo một user riêng với quyền hạn vừa đủ để đảm bảo an toàn:
CREATE USER 'pmm'@'localhost' IDENTIFIED BY 'password_cuc_kho';
GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD, BACKUP_ADMIN ON *.* TO 'pmm'@'localhost';
Thực hiện add node vào PMM:
pmm-admin add mysql --username=pmm --password=password_cuc_kho --query-source=perfschema
Đối với PostgreSQL:
PostgreSQL cần extension pg_stat_statements để PMM có thể “đọc vị” các câu truy vấn. Bạn cần sửa file postgresql.conf:
shared_preload_libraries = 'pg_stat_statements'
track_io_timing = on
track_functions = all
Khởi động lại Postgres và thực hiện lệnh add:
pmm-admin add postgresql --username=postgres --password=your_pass --query-source=pgstatstatements
Query Analytics (QAN): “Vũ khí” tối thượng
Đây là tính năng đáng giá nhất của PMM. Sau 6 tháng sử dụng, mình nhận ra 80% lỗi hiệu suất không đến từ phần cứng. Chúng thường nằm ở những câu Query thiếu Index hoặc Join quá đà.
Trong mục Query Analytics, bạn sẽ thấy danh sách các query chiếm nhiều tài nguyên nhất. Hãy chú ý các chỉ số:
- Latency: Thời gian phản hồi trung bình của câu lệnh.
- Rows Examined vs Sent: Nếu quét 1 triệu dòng chỉ để lấy 1 dòng, bạn chắc chắn cần đánh Index ngay.
- Query Count: Tần suất câu lệnh xuất hiện trong một khoảng thời gian.
Thiết lập cảnh báo (Alerting) tự động
Đừng để khách hàng là người đầu tiên báo tin web sập. PMM có hệ thống Integrated Alerting rất mạnh mẽ.
- Contact Points: Cấu hình gửi tin nhắn về Slack, Telegram hoặc Email.
- Alert Rules: Sử dụng các template có sẵn như “MySQL down” hoặc “High CPU usage”.
- Ngưỡng cảnh báo: Ví dụ, nếu CPU vượt 85% trong 5 phút liên tục, PMM sẽ tự động bắn tin nhắn báo động.
Kinh nghiệm thực tế sau 6 tháng chạy Production
Để hệ thống giám sát không trở thành gánh nặng, bạn cần lưu ý 3 điểm mấu chốt sau:
1. Tối ưu tài nguyên Client
PMM Client thường chỉ chiếm dưới 1% CPU. Tuy nhiên, nếu database có traffic cực lớn (trên 10.000 request/giây), việc thu thập log chi tiết có thể làm tăng I/O disk. Hãy ưu tiên dùng performance_schema thay vì slow_query_log để giảm tải cho disk.
2. Chính sách lưu trữ dữ liệu (Retention)
Dữ liệu giám sát tích tụ rất nhanh, có thể chiếm hàng chục GB sau một tháng. Bạn nên cấu hình giữ dữ liệu chi tiết trong khoảng 15-30 ngày. Điều này giúp ổ cứng máy chủ giám sát không bị đầy bất ngờ.
3. Bảo mật Dashboard
Dashboard PMM chứa thông tin nhạy cảm về cấu hình và nội dung query. Tuyệt đối không mở port 80/443 ra internet công cộng. Bạn nên đặt PMM Server trong mạng nội bộ (VPN) hoặc sử dụng Whitelist IP chặt chẽ.
Tóm lại, PMM là công cụ miễn phí nhưng mang lại giá trị rất lớn cho quản trị viên database. Nó giúp bạn chuyển từ thế bị động sang chủ động, xử lý sự cố dựa trên con số thực tế thay vì phán đoán cảm tính.

