MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Giải mã nhật ký lỗi MongoDB

Đô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ần
Mô 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

  1. 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

  2. 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ỏ.

  3. 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.

  4. 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.

  5. 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.

  6. 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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Quản lý người dùng cơ sở dữ liệu với ClusterControl

  2. Kéo và addtoset cùng lúc với mongo

  3. Sử dụng MongoEngine và PyMongo cùng nhau

  4. Truy vấn ngày với ISODate trong mongodb dường như không hoạt động

  5. MongoDB $ lookup objectid nhận được mảng trống?