Giám sát phần cứng Linux chủ động: Đánh giá thực tế smartmontools, lm-sensors và dmidecode trong môi trường production

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

Cái giá tiềm ẩn khi bỏ qua việc giám sát phần cứng

Sáu tháng trước, tôi đã phải thức trắng một đêm thứ Bảy điên cuồng để khôi phục cơ sở dữ liệu vì một ổ NVMe quyết định “nghỉ hưu” mà không hề báo trước. Các bản log hiển thị các lỗi I/O tiêu chuẩn, nhưng lúc đó, filesystem đã ở chế độ read-only. Chúng ta thường dành thời gian tối ưu hóa Nginx hoặc gỡ lỗi các kernel parameters, nhưng lại quên rằng mọi thứ đều chạy trên các tấm silicon vật lý và các bit dữ liệu đang quay (hoặc nhấp nháy). Nếu không theo dõi phần cứng, bạn giống như đang lái một chiếc máy bay mà không có bảng điều khiển vậy.

Sau sự cố đó, tôi đã triển khai một chiến lược giám sát nhẹ nhàng trên tất cả các node của mình bằng ba tiện ích cụ thể: smartmontools, lm-sensors, và dmidecode. Tôi muốn một giải pháp không tiêu tốn tài nguyên nhưng cung cấp hình ảnh rõ nét về sức khỏe hệ thống. Tôi đã chạy thiết lập này trong môi trường production kể từ đó, và nó đã giúp tôi tránh được ít nhất hai thảm họa tiềm tàng.

Ba trụ cột của việc giám sát cục bộ

Trước khi đi sâu vào các câu lệnh, tôi muốn làm rõ cách ba công cụ này phối hợp với nhau. Mỗi công cụ xử lý một lớp khác nhau của tầng phần cứng.

1. dmidecode: Kiểm kê hệ thống

Tiện ích này trích xuất thông tin từ bảng Desktop Management Interface (DMI). Nó cho bạn biết chính xác phần cứng nào đang được cắm vào: phiên bản BIOS, số lượng khe RAM đang sử dụng, bộ nhớ tối đa được hỗ trợ, và thậm chí cả số serial của các thành phần. Tôi sử dụng công cụ này chủ yếu để kiểm kê và kiểm tra xem phần cứng của mình có khớp với thông số kỹ thuật của nhà cung cấp hay không.

2. lm-sensors: Giám sát nhiệt độ

Nếu máy lạnh trong phòng server bị hỏng hoặc quạt ngừng quay, lm-sensors sẽ là thứ phát hiện ra điều đó. Nó giám sát điện áp, nhiệt độ và tốc độ quạt thông qua các giao diện I2C và SMBus trên bo mạch chủ. Trong môi trường production, hiện tượng thermal throttling có thể làm tê liệt hiệu suất từ rất lâu trước khi phần cứng thực sự hỏng hóc.

3. smartmontools: “Bác sĩ” ổ đĩa

Đây có lẽ là công cụ quan trọng nhất. Nó điều khiển hệ thống Self-Monitoring, Analysis, and Reporting Technology (S.M.A.R.T.) được tích hợp trong hầu hết các ổ HDD và SSD hiện đại. Nó dự đoán các lỗi bằng cách theo dõi các thuộc tính như Reallocated Sector Count hoặc Wear Leveling Count trên SSD.

Thực hành: Triển khai bộ công cụ

Tôi thường cài đặt các công cụ này ngay sau khi cài đặt hệ điều hành mới. Trên máy chủ production Ubuntu 22.04 với 4GB RAM, tôi nhận thấy cách tiếp cận này giúp giảm đáng kể thời gian xử lý so với việc chạy một agent giám sát nặng nề dựa trên Java thường xuyên làm tăng vọt CPU chỉ để thu thập vài chỉ số.

Cài đặt

Việc cài đặt chúng trên hệ thống dựa trên Debian/Ubuntu hoặc RHEL rất đơn giản:

# Trên Ubuntu/Debian
sudo apt update
sudo apt install smartmontools lm-sensors dmidecode -y

# Trên RHEL/AlmaLinux/CentOS
sudo dnf install smartmontools lm_sensors dmidecode -y

Nhận dạng phần cứng với dmidecode

Đầu ra của dmidecode rất lớn, vì vậy tôi luôn sử dụng cờ -t (type) để lọc những gì tôi cần. Đây là cách tôi kiểm tra cấu hình bộ nhớ để xem có khe cắm nào trống cho việc nâng cấp trong tương lai hay không:

sudo dmidecode -t memory | grep -Ei "Size|Type|Speed"

Nếu bạn cần số serial của khung máy (chassis) cho một phiếu yêu cầu hỗ trợ, chỉ cần chạy:

sudo dmidecode -s system-serial-number

Thiết lập lm-sensors

Sau khi cài đặt, lm-sensors cần phát hiện các chip trên bo mạch chủ của bạn. Bạn thực hiện việc này bằng cách chạy một tập lệnh phát hiện. Tôi khuyên bạn nên chấp nhận các giá trị mặc định cho hầu hết các câu hỏi trừ khi bạn biết phần cứng của mình có các đặc thù riêng.

sudo sensors-detect

Sau khi quá trình phát hiện hoàn tất và bạn đã nạp các module được gợi ý (hoặc khởi động lại máy), bạn có thể kiểm tra nhiệt độ bất cứ lúc nào bằng một lệnh đơn giản:

sensors

Theo kinh nghiệm của tôi, tôi thường xem nhiệt độ của “Package id 0” cho CPU. Nếu nó liên tục ở mức trên 80°C khi tải bình thường, tôi biết đã đến lúc phải kiểm tra keo tản nhiệt hoặc luồng khí lưu thông trong máy chủ.

Giám sát ổ đĩa với smartmontools

Đây là nơi tôi dành phần lớn thời gian. Đầu tiên, hãy liệt kê các ổ đĩa của bạn để đảm bảo tiện ích nhìn thấy chúng:

sudo smartctl --scan

Để có được báo cáo sức khỏe đầy đủ của một ổ đĩa cụ thể (ví dụ /dev/sda), tôi sử dụng:

sudo smartctl -a /dev/sda

Hãy tìm cụ thể kết quả “SMART overall-health self-assessment test result”. Nếu nó hiển thị bất cứ thứ gì khác ngoài PASSED, bạn cần di chuyển dữ liệu của mình ngay lập tức. Đối với SSD, tôi theo dõi sát sao thuộc tính Percentage_Used. Một khi nó đạt tới 90%, tôi sẽ bắt đầu lập kế hoạch thay thế.

Tôi cũng lên lịch chạy một bài kiểm tra “Short” hàng đêm thông qua cron để kiểm tra các vấn đề lớn về điện hoặc cơ khí:

sudo smartctl -t short /dev/sda

Tự động hóa cảnh báo

Kiểm tra thủ công thì ổn với một máy chủ gia đình, nhưng trong môi trường production, tôi sử dụng smartd daemon đi kèm with smartmontools. Nó chạy ngầm và có thể gửi email ngay khi ổ đĩa bắt đầu có vấn đề. Tôi cấu hình nó bằng cách chỉnh sửa tệp /etc/smartd.conf.

Dòng cấu hình điển hình của tôi cho một ổ đĩa trông như thế này:

/dev/sda -a -m [email protected] -s (S/../.././02)

Dòng này yêu cầu daemon giám sát tất cả các thuộc tính (-a), gửi email cho tôi (-m), và chạy một bài tự kiểm tra ngắn vào lúc 2 giờ sáng mỗi ngày (-s).

Chiêm nghiệm sau 6 tháng

Việc chuyển sang bộ công cụ nhẹ nhàng, gốc (native) này đã thay đổi cách tôi quản lý hạ tầng. Tôi không còn phải đợi hệ thống gặp sự cố mới biết có gì đó không ổn. Ba tháng trước, tôi đã phát hiện một chiếc quạt bị hỏng trên một node gateway vì sensors hiển thị RPM bằng 0, mặc dù nhiệt độ vẫn nằm trong giới hạn chấp nhận được (nhưng đang tăng lên).

Vẻ đẹp của các công cụ này nằm ở sự đơn giản của chúng. Chúng không yêu cầu web server, cơ sở dữ liệu hay các dependency phức tạp. Chúng đọc trực tiếp từ phần cứng, cung cấp cho bạn sự thật mà không qua bất kỳ lớp trừu tượng nào. Nếu bạn quản lý các máy chủ Linux, dành ra một giờ để thiết lập ba tiện ích này là gói bảo hiểm tốt nhất mà bạn có thể mua cho dữ liệu của mình.

Share: