Giới thiệu
Trong bài viết này, chúng ta sẽ khám phá hai tính năng mới được tích hợp vào SurrealDB, giúp cải thiện khả năng quan sát (observability) cho cơ sở dữ liệu của bạn. Việc theo dõi và ghi lại thông tin từ cơ sở dữ liệu là rất quan trọng để đảm bảo hiệu suất và phát hiện lỗi kịp thời. Hãy cùng tìm hiểu xem những tính năng này có gì đặc biệt nhé!
Tính năng mới: Lưu đầu ra ghi log vào tệp
Tính năng đầu tiên cho phép bạn lưu đầu ra ghi log vào một tệp ở định dạng mà bạn lựa chọn. Tính năng này đã được cập nhật trong PR gần đây và có sẵn từ phiên bản 3.0.0-alpha.7 trở đi cùng với các phiên bản 2.x mới hơn.
Cách cấu hình
Để bắt đầu, bạn cần thiết lập một số biến môi trường. Hai biến đầu tiên bạn cần biết là:
SURREAL_LOG_FILE_ENABLED
: Bật tính năng ghi log vào tệp.SURREAL_LOG_FILE_FORMAT
: Chọn định dạng tệp là JSON.
Dưới đây là lệnh để khởi động cơ sở dữ liệu với ghi log được gửi tới tệp ở định dạng JSON:
bash
SURREAL_LOG_FILE_ENABLED=true SURREAL_LOG_FILE_FORMAT=json surreal start --unauthenticated --log debug
Cấu hình tên và định dạng tệp ghi log
Khi cơ sở dữ liệu bắt đầu, bạn sẽ thấy một tệp mới xuất hiện với tên theo định dạng ngày tháng, chẳng hạn như surrealdb.log.2025-07-22
. Bạn cũng có thể tùy chỉnh tên tệp và tần suất quay vòng của tệp ghi log bằng các biến môi trường sau:
SURREAL_LOG_FILE_ROTATION
: Đặt tần suất quay vòng (hàng ngày, hàng giờ hoặc không bao giờ).SURREAL_LOG_FILE_NAME
: Đặt tên tệp khác với mặc địnhsurrealdb.log
.
Ví dụ về đầu ra ghi log
Dưới đây là một ví dụ về nội dung trong tệp ghi log khi cơ sở dữ liệu được khởi động và nhanh chóng tắt:
json
{"timestamp":"2025-07-22T03:18:59.349350Z","level":"INFO","fields":{"message":"Running 3.0.0+20250721.eaff383ce for macos on aarch64"},"target":"surreal::env"}
...
{"timestamp":"2025-07-22T03:19:01.601797Z","level":"INFO","fields":{"message":"Web server stopped. Bye!"},"target":"surrealdb::net"}
Tính năng mới: Tích hợp với Tokio Console
Tính năng thứ hai là khả năng tương tác với một nền tảng có tên là tokio console
. Dự án Tokio bao gồm một console cho phép bạn theo dõi trực quan các tác vụ async đang chạy và vị trí mà hầu hết công việc đang diễn ra. Vì SurrealDB là cơ sở dữ liệu async được xây dựng bằng Rust trên môi trường chạy async Tokio, việc thêm khả năng tương tác với tokio console là rất hợp lý.
Cách cài đặt và sử dụng
Để sử dụng console, bạn cần cài đặt Rust. Bạn không cần biết Rust để sử dụng console. Dưới đây là hai lệnh để cài đặt Rust và trình quản lý gói cargo
:
bash
curl https://sh.rustup.rs -sSf | sh
cargo install --locked tokio-console
Khởi động SurrealDB với Tokio Console
Sau khi cài đặt, bạn có thể thử nghiệm bằng cách gõ tokio-console
, lúc này bạn sẽ thấy màn hình trống vì chưa có thông tin nào được gửi đến đó. Mở một cửa sổ mới và khởi động SurrealDB với console được kích hoạt thông qua biến môi trường SURREAL_TOKIO_CONSOLE_ENABLED
:
bash
SURREAL_TOKIO_CONSOLE_ENABLED=true surreal start --unauthenticated
Theo dõi trạng thái cơ sở dữ liệu
Khi bạn gõ tokio-console
một lần nữa trong cửa sổ khác, bạn sẽ thấy một trường thông tin về trạng thái của cơ sở dữ liệu. Một cơ sở dữ liệu hoạt động sẽ có giao diện như sau:

Bạn có thể sử dụng các phím mũi tên xuống để di chuyển đến một tác vụ cụ thể và nhấn enter để xem thêm chi tiết như thời gian trôi qua trung bình.
Thực tiễn tốt nhất
- Luôn bật ghi log trong môi trường phát triển để dễ dàng phát hiện lỗi.
- Kiểm tra định kỳ tệp ghi log để theo dõi hiệu suất và trạng thái của cơ sở dữ liệu.
- Sử dụng Tokio Console để theo dõi các tác vụ async và tối ưu hóa hiệu suất cơ sở dữ liệu.
Những cạm bẫy thường gặp
- Không bật ghi log có thể dẫn đến việc khó khăn trong việc phát hiện lỗi.
- Không kiểm tra định kỳ tệp ghi log có thể làm bạn bỏ lỡ thông tin quan trọng.
Mẹo tối ưu hóa hiệu suất
- Sử dụng định dạng JSON cho tệp ghi log để dễ dàng phân tích và xử lý sau này.
- Tối ưu hóa tần suất quay vòng tệp ghi log để phù hợp với lượng dữ liệu ghi lại.
Giải quyết sự cố
- Nếu bạn không thấy tệp ghi log, hãy kiểm tra cấu hình biến môi trường.
- Nếu tokio console không hiển thị dữ liệu, hãy đảm bảo bạn đã khởi động SurrealDB với đúng biến môi trường.
Kết luận
Hai tính năng mới này không chỉ giúp bạn theo dõi SurrealDB hiệu quả hơn mà còn cải thiện quá trình phát triển và bảo trì cơ sở dữ liệu. Hãy thử nghiệm và khám phá các tính năng này để tối ưu hóa hoạt động của cơ sở dữ liệu của bạn. Đừng quên theo dõi các bản cập nhật tiếp theo để tận dụng tối đa SurrealDB!
Câu hỏi thường gặp (FAQ)
- Tôi có thể sử dụng tính năng ghi log mà không cần Rust không?
- Có, bạn chỉ cần thiết lập biến môi trường.
- Tokio console có miễn phí không?
- Có, nó là một công cụ miễn phí cho các nhà phát triển.
- Có cách nào để tự động phân tích tệp ghi log không?
- Có, bạn có thể sử dụng các công cụ phân tích log tự động.
Hy vọng bài viết này sẽ giúp ích cho bạn trong việc theo dõi và tối ưu hóa SurrealDB của mình!