Giới thiệu về công cụ Tsar
Tsar được phát triển bởi đội ngũ kỹ thuật tại Alibaba, đây là một tiện ích dòng lệnh giúp thu thập và báo cáo các chỉ số hiệu suất của hệ thống server cũng như ứng dụng chạy trên đó. Công cụ này có khả năng ghi lại thông tin tài nguyên phần cứng (như CPU, bộ nhớ RAM) cùng với trạng thái của các dịch vụ phổ biến (Nginx, HAProxy, v.v.). Dữ liệu sau khi thu thập sẽ được lưu trữ trực tiếp trên ổ đĩa máy chủ, cho phép truy xuất lịch sử bất cứ lúc nào hoặc tích hợp để gửi cảnh báo sang các hệ thống như Nagios.
Một điểm mạnh của Tsar là tính linh hoạt trong việc mở rộng. Người quản trị hoàn toàn có thể xây dựng các module tùy chỉnh bằng cách viết các hàm thu thập dữ liệu và hiển thị theo định dạng quy chuẩn của Tsar.
Cài đặt và Biên dịch
Nguồn mã của Tsar hiện đang được lưu trữ công khai trên nền tảng GitHub. Để thiết lập môi trường vận hành, bạn cần tải xuống mã nguồn và tiến hành biên dịch:
# Lấy mã nguồn từ kho chứa
git clone https://github.com/alibaba/tsar.git
# Di chuyển vào thư mục dự án
cd tsar
# Khởi chạy quá trình biên dịch tự động
make
Sau khi quá trình cài đặt hoàn tất, hệ thống sẽ tạo ra các thư mục và tập tin cấu hình quan trọng sau đây:
- /etc/cron.d/tsar: Chứa tác vụ lên lịch, đảm bảo chương trình chạy mỗi phút một lần để thu thập dữ liệu mới.
- /etc/logrotate.d/tsar: Cấu hình xoay vòng tập tin log, giúp quản lý dung lượng lưu trữ hàng tháng.
- /etc/tsar/tsar.conf: Tập tin cấu hình chính, xác định các module được bật và đường dẫn đầu ra.
- /usr/local/tsar/modules: Thư mục lưu trữ các file .so của từng module chức năng khác nhau.
Cấu hình Hệ thống
Khi mới cài đặt xong, chưa có dữ liệu lưu trữ. Để xác minh công cụ hoạt động tốt, hãy thử lệnh xem thông tin thời gian thực:
$ tsar --live --interval=1 --cpu
Nếu xuất hiện dòng dữ liệu liên tục giống dưới đây nghĩa là mô-đun CPU đang hoạt động:
Thời gian -----------------------cpu----------------------
Thời gian user sys wait hirq sirq util
15/03/24-10:20:01 1.20 0.50 0.00 0.00 0.00 1.70
15/03/24-10:20:02 0.90 0.30 0.00 0.00 0.00 1.20
Chi tiết về cấu hình trong /etc/tsar/tsar.conf:
- Kích hoạt Module: Thêm dòng
mod_ten_ban_vao on(thay tên module tương ứng). - Bật/Tắt: Thay đổi trạng thái giữa
onvàoff. - Xuất dữ liệu: Tham số
output_stdio_modquyết định nơi hiển thị kết quả khi chạy lệnh. - Đường dẫn lưu trữ:
output_file_pathchỉ định vị trí file log chứa dữ liệu gốc. Nếu thay đổi vị trí này, bạn cần cập nhật tương ứng trong cấu hình/etc/logrotate.d/tsar.
Dữ liệu thô mặc định thường nằm tại /var/log/tsar.data. Tác vụ Cron sẽ tự động gọi chương trình mỗi phút và lưu trữ tối đa 10 năm với 120 bản sao lưu xoay vòng.
Các Lệnh Thường Gặp
Để vận hành hiệu quả, người dùng cần nắm vững các tùy chọn sau:
- --check/-C: Hiển thị bản ghi cuối cùng phục vụ cho hệ thống cảnh báo.
- --watch/-w: Quan sát dữ liệu trong N phút gần nhất.
- --cron/-c: Chạy ở chế độ nền, đẩy dữ liệu thẳng vào file.
- --interval/-i: Khoảng thời gian lấy mẫu (phút hoặc giây tùy mode live).
- --live/-l: In ra dữ liệu ngay lập tức khi chạy.
- --file/-f: Chỉ định file đầu vào tùy chỉnh.
- --ndays/-n: Truy vấn dữ liệu trong N ngày qua.
- --date/-d: Xem dữ liệu theo ngày cụ thể (YYYYMMDD).
- --detail/-D: Hiển thị giá trị gốc, không làm tròn sang đơn vị K/M/G.
- --spec/-s: Lọc hiển thị theo trường cụ thể.
- --item/-I: Lọc hiển thị theo tên thiết bị/mục cụ thể.
Ví dụ minh họa:
1. Xuất báo cáo tóm tắt 1 ngày qua (mặc định 5 phút/lần):
$ tsar | head -n 5
Thời gian ---cpu-- ---mem-- ---tcp-- -----traffic---- --sda--- ---load-
util util retran bytin bytout util load1
15/03/24-08:10 10.50 8.12 0.02 12.0M 8.2M 1.10 0.85
...
2. Giám sát CPU thời gian thực với tốc độ cao:
$ tsar --live -i 2 --cpu
Thời gian -----------------------cpu----------------------
user sys wait hirq sirq util
15/03/24-14:00:01 1.00 0.50 0.00 0.00 0.00 1.50
15/03/24-14:00:03 1.20 0.60 0.00 0.00 0.00 1.80
3. Kiểm tra ngưỡng cảnh báo gần nhất của CPU:
$ tsar --check --cpu
server-prod-01 tsar cpu:user=1.5 cpu:sys=0.5 cpu:wait=0.0 cpu:hirq=0.0 cpu:sirq=0.0 cpu:util=2.0
4. Xem dữ liệu chi tiết không làm tròn đơn vị:
$ tsar --traffic -D
Thời gian ---------------------traffic--------------------
Time bytin bytout pktin pktout pkterr pktdrp
15/03/24-10:40 1024500.00 512000.00 ...
5. Truy vấn lịch sử cụ thể:
# Xem dữ liệu của ngày hôm kia
$ tsar --ndays 2
# Xem dữ liệu của một ngày cố định
$ tsar --date 20240315
# Chỉ hiện trường util của module cpu
$ tsar --cpu --spec util
6. Xem xu hướng 10 phút vừa qua:
$ tsar --watch 10
Xử Lý Sự Cố
Trong quá trình vận hành, nếu gặp vấn đề về dữ liệu, hãy thực hiện tuần tự các bước kiểm tra sau:
Bước 1: Xác nhận cài đặt
Kiểm tra phiên bản đã cài đặt trong hệ thống:
# rpm -qi tsar
Tên : tsar
Phiên bản : 2.1.1
Kiến trúc : x86_64
Ngày cài đặt : ...
Bước 2: Kiểm tra quy trình Cron
Đảm bảo dịch vụ định kỳ đang chạy để kích hoạt Tsar:
$ ps aux | grep -i crond
root 1234 0.0 0.1 ... /usr/sbin/crond ...
Xem xét log hệ thống để tìm các lần gọi thành công:
$ sudo grep tsar /var/log/cron | tail -n 5
Bước 3: Rà soát cấu hình module
Xác minh xem các module cần thiết (ví dụ cpu) đã được bật trong file config:
$ grep "^mod_" /etc/tsar/tsar.conf
Bước 4: Kiểm tra cập nhật dữ liệu
Xem xét thời gian sửa đổi gần nhất của file log lưu trữ để chắc chắn dữ liệu đang chảy:
$ stat /var/log/tsar.data
Bước 5: Thử nghiệm thực tế
Chạy thủ công chế độ live để loại trừ lỗi cron:
$ tsar --live --cpu
Nếu dữ liệu hiển thị đúng trên màn hình nhưng không lưu vào file, nguyên nhân thường nằm ở quyền truy cập đường dẫn lưu trữ hoặc cấu hình logrotate.