Đôi khi việc giải mã nhật ký lỗi MongoDB có thể phức tạp và có thể tiêu tốn rất nhiều thời gian quý báu của bạn. Trong bài viết này, chúng ta sẽ tìm hiểu cách kiểm tra nhật ký lỗi MongoDB bằng cách phân tích từng phần của thông báo nhật ký.
Định dạng chung cho các dòng nhật ký MongoDB
Đây là mẫu dòng nhật ký cho phiên bản 3.0 trở lên ...
<timestamp> <severity> <component> [<context>] <message>
Mẫu dòng nhật ký cho các phiên bản trước của MongoDB chỉ bao gồm:
<timestamp> [<context>] <message>
Hãy xem xét từng thẻ.
Dấu thời gian
Trường dấu thời gian của thông báo nhật ký lưu trữ thời gian chính xác khi một thông báo nhật ký được chèn vào tệp nhật ký. Có 4 loại dấu thời gian được hỗ trợ bởi MongoDB. Định dạng mặc định là:iso8601-local. Bạn có thể thay đổi nó bằng cách sử dụng tham số --timeStampFormat.
Tên định dạng dấu thời gian | Ví dụ |
---|---|
iso8601-local | 1969-12-31T19:00:00.000 + 0500 |
iso8601-utc | 1970-01-01T00:00:00.000Z |
ctime | Thứ Tư ngày 31 tháng 12 19:00:00.000 |
ctime-no-ms | Thứ Tư, ngày 31 tháng 12 19:00:00 |
Mức độ nghiêm trọng
Bảng sau đây mô tả ý nghĩa của tất cả các mức độ nghiêm trọng có thể xảy ra.
Mức độ nghiêm trọng | Mô tả |
---|---|
F | Fatal- Lỗi cơ sở dữ liệu đã khiến cơ sở dữ liệu không thể truy cập được nữa |
E | Lỗi - Lỗi cơ sở dữ liệu sẽ ngừng thực thi DB. |
W | Cảnh báo - Thông báo cơ sở dữ liệu giải thích hành vi có thể có hại của DB. |
Tôi | Thông tin - Tin nhắn chỉ nhằm mục đích thông tin như 'Đã chấp nhận kết nối mới ". |
D | Gỡ lỗi - Hầu hết hữu ích để gỡ lỗi DB |
Thành phần
Sau phiên bản 3.0, thông báo nhật ký hiện bao gồm "thành phần" để cung cấp phân loại chức năng của thông báo. Điều này cho phép bạn dễ dàng thu hẹp tìm kiếm của mình bằng cách xem xét các thành phần cụ thể.
Thành phầnMô tả lỗi | |
---|---|
Truy cập | Liên quan đến kiểm soát truy cập |
Lệnh | Liên quan đến các lệnh cơ sở dữ liệu |
Kiểm soát | Liên quan đến các hoạt động kiểm soát |
FTDC | Liên quan đến các hoạt động thu thập dữ liệu chẩn đoán |
Địa lý | Liên quan đến phân tích cú pháp các hình dạng không gian địa lý |
Chỉ mục | Liên quan đến hoạt động lập chỉ mục |
Mạng | Liên quan đến các hoạt động mạng |
Truy vấn | Liên quan đến truy vấn |
REPL | Liên quan đến bộ bản sao |
REPL_HB | Liên quan đến nhịp tim của bộ sao |
Khôi phục | Liên quan đến hoạt động khôi phục db |
Mài sắc | Liên quan đến sharding |
Bộ nhớ | Liên quan đến hoạt động lưu trữ |
Tạp chí | Liên quan đến hoạt động tạp chí |
Viết | Liên quan đến hoạt động ghi db |
Ngữ cảnh
Phần ngữ cảnh của thông báo lỗi thường chứa chuỗi hoặc id kết nối. Các giá trị khác có thể là initandlisten. Phần này được bao quanh bởi dấu ngoặc vuông. Thông báo nhật ký của bất kỳ kết nối mới nào đến MongoDB sẽ có giá trị ngữ cảnh là initandlisten, đối với tất cả các thông báo nhật ký khác, nó sẽ là id luồng hoặc id kết nối. Đối với ví dụ:
2018-05-29T19:06:29.731+0000 [initandlisten] connection accepted from 127.0.0.1:27017 #1000 (13 connections now open)
2018-05-29T19:06:35.770+0000 [conn1000] end connection 127.0.0.1:27017 (12 connections now open)
Tin nhắn
Chứa thông báo nhật ký thực tế.
Vị trí tệp nhật ký
Vị trí mặc định trên máy chủ là:/var/log/mongodb/mongodb.log
Nếu tệp nhật ký không có ở vị trí này thì bạn có thể kiểm tra tệp cấu hình MongoDB. Bạn có thể tìm thấy tệp cấu hình MongoDB tại một trong hai vị trí này.
/etc/mongod.conf or /yourMongoDBpath/mongod.conf
Khi bạn mở tệp cấu hình, hãy tìm kiếm tùy chọn đường dẫn đăng nhập trong đó. tùy chọn logpath cho MongoDB biết nơi để ghi lại tất cả các tin nhắn.
Phân tích thông báo nhật ký đơn giản
Đây là một ví dụ về thông báo lỗi MongoDB điển hình ...
2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017
Dấu thời gian:2014-11-03T18:28:32.450-0500
Mức độ nghiêm trọng:I
Thành phần:NETWORK
Bối cảnh:[initandlisten]
Thông báo:đang chờ kết nối trên cổng 27017
P>
Phần quan trọng nhất của lỗi này là phần thông báo. Trong hầu hết các trường hợp, bạn có thể tìm ra lỗi bằng cách xem trường này. Đôi khi nếu thông báo không rõ ràng với bạn, thì bạn có thể chuyển sang phần thành phần. Đối với thông báo này, giá trị của Thành phần là Mạng có nghĩa là thông báo nhật ký có liên quan đến sự cố mạng.
Nếu bạn không thể giải quyết lỗi của mình, bạn có thể kiểm tra mức độ nghiêm trọng của thông báo nhật ký cho biết thông báo này dành cho mục đích thông tin. Hơn nữa, bạn cũng có thể kiểm tra các phần khác của thông báo nhật ký như dấu thời gian hoặc ngữ cảnh để tìm ra nguyên nhân gốc rễ hoàn chỉnh.
Giải mã thông báo nhật ký lỗi phổ biến
-
Thông báo:
2018-05-10T21:19:46.942 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
Độ phân giải: Tạo người dùng quản trị trong cơ sở dữ liệu xác thực
-
Thông báo:
2018-05-10T21:19:46.942 E COMMAND [initandlisten] ** ERROR: getMore command failed. Cursor not found
Độ phân giải: Xóa thời gian chờ khỏi con trỏ hoặc tăng kích thước lô con trỏ.
-
Thông báo:
2018-05-10T21:19:46.942 E INDEX [initandlisten] ** ERROR:E11000 duplicate key error index: test.collection.$a.b_1 dup key: { : null }
Độ phân giải: Vi phạm ràng buộc khóa duy nhất. Cố gắng chèn tài liệu bằng khóa khác.
-
Thông báo:
2018-05-10T21:19:46.942 E NETWORK [initandlisten] ** ERROR:Timed out connecting to localhost:27017.
Độ phân giải: Độ trễ giữa trình điều khiển và máy chủ quá lớn, trình điều khiển có thể bỏ cuộc. Bạn có thể thay đổi cài đặt bằng cách thêm tùy chọn connectionTimeout trong chuỗi kết nối.
-
Thông báo:
2018-05-10T21:19:46.942 E WRITE [initandlisten] ** ERROR: A write operation resulted in an error. E11000 duplicate key error index: test.people.$_id_ dup key: { : 0 }
Độ phân giải: Xóa trùng lặp giá trị trường _id khỏi các tài liệu xung đột.
-
Thông báo:
2018-05-10T21:19:46.942 E NETWORK [initandlisten] ** ERROR: No connection could be made because the target machine actively refused it 127.0.0.1:27017 at System.Net.Sockets.Socket.EndConnect
Độ phân giải: Máy chủ không chạy trên cổng 27017 hoặc cố gắng khởi động lại máy chủ với máy chủ và cổng chính xác.
Công cụ quản lý nhật ký
MongoDB 3.0 đã cập nhật các tính năng ghi nhật ký của mình để cung cấp thông tin chi tiết tốt hơn cho tất cả các hoạt động cơ sở dữ liệu. Có nhiều công cụ quản lý nhật ký có sẵn trên thị trường như MongoDB Ops Manager, mục nhật ký, mtools, v.v.
Kết luận
Ghi nhật ký cũng quan trọng như Replication hoặc Sharding để quản lý cơ sở dữ liệu tốt và phù hợp. Để quản lý cơ sở dữ liệu tốt hơn, người ta sẽ có thể giải mã nhật ký dễ dàng để khắc phục các ngoại lệ / lỗi một cách nhanh chóng. Tôi hy vọng rằng sau khi đọc hướng dẫn này, bạn sẽ cảm thấy thoải mái hơn khi phân tích các bản ghi MongoDB phức tạp.