Tại sao bạn cần PCP thay vì các công cụ truyền thống?
Hồi hệ thống công ty mình bùng nổ traffic từ 10.000 lên 50.000 CCU, những công cụ kinh điển như top hay htop bắt đầu bộc lộ giới hạn. Chúng chỉ cho bạn thấy cái xác của hệ thống ngay lúc đó. Có lần server database cứ đúng 2h sáng là treo đứng, nhưng 8h sáng mình dậy kiểm tra thì mọi thứ lại mượt mà. Lúc này, nếu không có dữ liệu lịch sử để “mổ xẻ”, anh em DevOps mãi mãi chỉ đi dập lửa thay vì chặn hỏa hoạn.
Performance Co-Pilot (PCP) chính là giải pháp. Trên CentOS Stream 9, nó đóng vai trò như một chiếc hộp đen máy bay. PCP thu thập từ CPU, RAM đến những thông số cực sâu như context switches hay interrupt latency trong kernel. Nó lưu lại tất cả để bạn có thể “xuyên không” về quá khứ soi lỗi. Dưới đây là cách mình triển khai nó từ con số 0.
Quick start: Kích hoạt giám sát trong 5 phút
Cái hay của PCP là không cần cấu hình rườm rà. Chỉ với 3 bước lệnh, hệ thống của bạn sẽ bắt đầu được ghi nhật ký 24/7.
# Cài đặt PCP và bộ công cụ phân tích hệ thống
sudo dnf install pcp pcp-system-tools -y
# Bật dịch vụ thu thập (pmcd) và trình ghi log (pmlogger)
sudo systemctl enable --now pmcd pmlogger
# Xác nhận trạng thái hoạt động
pcp status
Khi thấy dòng Performance Co-Pilot configuration is local, chúc mừng bạn. Hệ thống đã âm thầm ghi log vào /var/log/pcp/pmlogger/. Theo mặc định, mỗi ngày PCP sẽ tự động nén và xoay vòng log để tiết kiệm không gian đĩa.
Bóc tách hệ sinh thái PCP
Đừng coi PCP là một phần mềm đơn lẻ. Nó là một framework mạnh mẽ gồm 3 thành phần chính:
- PMDA (Agents): Những “điệp viên” nằm vùng tại các ngóc ngách như Nginx, MySQL hay Kernel để thu thập số liệu.
- PMCD (Collector): Bộ não điều phối, gom dữ liệu từ các PMDA và trả lời truy vấn từ phía người dùng.
- Client Tools: Các lệnh như
pmstat,pminfogiúp bạn đọc hiểu dữ liệu.
Khám phá kho tàng Metric
PCP cung cấp hơn 5.000 chỉ số khác nhau. Để xem các metric liên quan đến ổ cứng, bạn dùng pminfo:
pminfo disk.dev.read
Nếu muốn theo dõi biến động thời gian thực với độ chi tiết cao hơn vmstat, hãy thử pmstat với chu kỳ 2 giây:
pmstat 2
Truy vết sự cố trong quá khứ: Giá trị cốt lõi
Giả sử server bị sập vào lúc 14:00 chiều qua. Thay vì ngồi đoán, mình dùng pmrep để trích xuất dữ liệu tại đúng thời điểm định mệnh đó.
1. Tìm file log tương ứng
Log được lưu tại /var/log/pcp/pmlogger/HOSTNAME/ dưới định dạng YYYYMMDD.HH.MM. Hãy chọn file chứa khoảng thời gian bạn nghi ngờ.
2. Tái hiện hiện trường
# Soi CPU idle từ 14:00 đến 14:15 ngày 10/05/2026
pmrep -a /var/log/pcp/pmlogger/node-01/20260510.13.50 \
-s "14:00" -t "14:15" kernel.all.cpu.idle
Nếu cpu.idle tụt về 0% trong khi cpu.wait.total tăng vọt, bạn biết chắc chắn hệ thống đang nghẽn I/O ổ cứng chứ không phải do code xử lý chậm.
3. Xuất báo cáo cho sếp
Cần đưa dữ liệu vào Excel để vẽ biểu đồ? Chỉ cần thêm tham số -o csv:
pmrep -a /var/log/pcp/pmlogger/node-01/20260510.13.50 -o csv > incident_report.csv
Kinh nghiệm thực chiến trên CentOS Stream 9
Sau nhiều năm vận hành, mình có 3 lưu ý quan trọng để bạn tối ưu PCP:
Kiểm soát dung lượng log
PCP ghi rất chi tiết. Nếu server có hàng nghìn metric, folder log có thể phình lên vài GB mỗi tuần. Hãy sửa file /etc/pcp/pmlogger/control.d/local để điều chỉnh tần suất ghi. Với server quan trọng, mình thường để 10 giây/lần nhưng chỉ lưu trong 7 ngày gần nhất.
Đưa dữ liệu lên dashboard Grafana
Gõ lệnh mãi cũng mỏi mắt. Bạn hãy cài thêm pmproxy để đẩy dữ liệu lên Grafana qua plugin Performance Co-Pilot. Lúc này, bạn sẽ có những biểu đồ realtime cực kỳ trực quan.
sudo systemctl enable --now pmproxy
sudo firewall-cmd --add-port=44322/tcp --permanent
sudo firewall-cmd --reload
Cẩn thận với SELinux
CentOS Stream 9 siết chặt bảo mật. Nếu pcp status báo lỗi, khả năng cao SELinux đang chặn các PMDA tùy biến của bạn. Hãy kiểm tra nhanh bằng lệnh:
sudo ausearch -m avc -ts recent
Tổng kết
Làm chủ PCP giúp bạn thoát khỏi cảnh “đoán mò” mỗi khi hệ thống chậm. Thay vì hỏi “Nãy ai làm gì mà server lag?”, bạn chỉ cần lôi log ra và để các con số tự trả lời. Công cụ này ban đầu có vẻ khô khan, nhưng khi đã quen với CLI, bạn sẽ thấy nó mạnh mẽ vượt xa bất kỳ dashboard web nào.

