Giám sát các truy vấn mongodb

Trong hướng dẫn này, chúng tôi sẽ thảo luận về các khía cạnh khác nhau của giám sát hiệu suất MongoDB. MongoDB cung cấp một bộ công cụ và tiện ích dòng lệnh để giám sát các phiên bản MongoDB. Nhưng trước tiên, bạn cần biết những số liệu nào cần được theo dõi. Khi bạn hiểu các chỉ số hiệu suất, bạn có thể tạo quy trình công việc và quy trình để kiểm tra sức khỏe và hiệu suất của cụm MongoDB của bạn

Giám sát các truy vấn mongodb

MongoDB là gì?​

MongoDB là cơ sở dữ liệu NoSQL hướng tài liệu phổ biến phù hợp cho cả dữ liệu có cấu trúc và phi cấu trúc. Cơ sở dữ liệu NoSQL cung cấp tính linh hoạt hơn RDBMS để lưu trữ dữ liệu phi cấu trúc và bán cấu trúc. MongoDB là một trong những cơ sở dữ liệu NoSQL phổ biến nhất, với lý do chính đáng

Nó hỗ trợ ngôn ngữ truy vấn phong phú, tổng hợp dữ liệu và khả năng lọc. Các mô hình dữ liệu được nhúng trong MongoDB giảm mức sử dụng I/O của đĩa dẫn đến hiệu suất cao. Nó cũng hỗ trợ các cụm có tối thiểu ba nút để có tính sẵn sàng cao và cơ sở dữ liệu có thể được chia tỷ lệ theo chiều ngang trên hàng trăm nút

Dựa trên trường hợp sử dụng của bạn, bạn có thể chọn bất kỳ một trong ba dịch vụ của MongoDB

  • Phiên bản cộng đồng
    Phiên bản cộng đồng miễn phí được cấp phép theo SSPL (Giấy phép công cộng phía máy chủ). Đây là phiên bản tự lưu trữ nơi người dùng đảm nhận việc triển khai và xử lý quy mô.

  • Enterprise Advanced
    Phiên bản trả phí tự lưu trữ với các tính năng và hỗ trợ nâng cao.

  • Atlas
    Cung cấp cơ sở dữ liệu dựa trên đám mây dưới dạng dịch vụ. Đây là một trong những cách phổ biến nhất để bắt đầu với MongoDB.

MongoDB có thể chạy trên hầu hết các nền tảng, bao gồm Windows, macOS và các phiên bản khác nhau của Linux. Bạn có thể triển khai MongoDB như

  • Độc lập
    Cài đặt độc lập được thực hiện cho một máy. Mặc dù không được ưu tiên cho môi trường sản xuất, nhưng nó tốt cho mục đích phát triển và học tập.

  • Bộ bản sao
    Bộ bản sao cung cấp dữ liệu dự phòng và tính sẵn sàng cao. Việc triển khai bộ bản sao cung cấp các biện pháp bảo vệ khỏi các sự cố kết nối và lỗi ổ đĩa, giúp cải thiện độ tin cậy.

  • Triển khai theo phân đoạn
    Triển khai theo phân đoạn được ưu tiên trong các tổ chức có quy mô dữ liệu lớn. Dữ liệu được phân phối trên các phân đoạn giúp cải thiện thông lượng.

Tại sao phải theo dõi MongoDB?​

Lỗi cơ sở dữ liệu và độ trễ có thể ảnh hưởng xấu đến trải nghiệm người dùng. Quản trị viên cơ sở dữ liệu cần đảm bảo rằng cơ sở dữ liệu đang chạy tốt với tài nguyên cơ sở hạ tầng đầy đủ. MongoDB cung cấp nhiều công cụ và tiện ích tích hợp để truy cập thông tin về tình trạng của phiên bản. Bạn cần theo dõi các phiên bản MongoDB vì những lý do sau

  • Hiểu tắc nghẽn hiệu suất truy vấn
  • Hiểu dung lượng cơ sở dữ liệu để đáp ứng nhu cầu
  • Quan sát việc sử dụng quá mức tài nguyên cơ sở hạ tầng
  • Hiểu sức khỏe và hiệu suất của cụm

Các chỉ số hiệu suất MongoDB quan trọng cần theo dõi​

Thao tác cơ sở dữ liệu

Tỷ lệ hoạt động cho biết tốc độ và mức độ hoạt động của cơ sở dữ liệu. Giám sát hoạt động đọc và ghi của bạn có thể giúp bạn lập kế hoạch dung lượng, tránh bão hòa tài nguyên và phát hiện tắc nghẽn hiệu suất. Bạn có thể sử dụng tiện ích MongoDB

ds.disableFreeMonitoring()
6 để truy cập các số liệu hoạt động. Các loại hoạt động cơ sở dữ liệu MongoDB sau đây thường được giám sát

  • ds.disableFreeMonitoring()
    7
    Theo dõi các lệnh cơ sở dữ liệu được xử lý mỗi giây. Các lệnh khác với các hoạt động CRUD và truy vấn dữ liệu. Chúng được sử dụng để quản lý cơ sở dữ liệu, bảo mật và sao chép.

  • ds.disableFreeMonitoring()
    8
    Số lượng thao tác truy vấn mỗi giây

  • ds.disableFreeMonitoring()
    9
    Số thao tác cập nhật mỗi giây

  • ds.disableFreeMonitoring()
    0
    Số thao tác xóa mỗi giây

  • ds.disableFreeMonitoring()
    1
    Số lần thực hiện thêm thao tác mỗi giây.
    ds.disableFreeMonitoring()
    1 được sử dụng cùng với các lệnh trả về con trỏ.

  • ds.disableFreeMonitoring()
    1
    Số thao tác chèn mỗi giây

Bạn có thể tổng hợp các chỉ số

ds.disableFreeMonitoring()
8 và
ds.disableFreeMonitoring()
1 để có được tổng số thao tác đọc trên cơ sở dữ liệu. Các thao tác ghi bao gồm
ds.disableFreeMonitoring()
1,
ds.disableFreeMonitoring()
9 và
ds.disableFreeMonitoring()
0

Tất cả các số liệu này được theo dõi ở cấp độ phiên bản. Đối với cụm MongoDB, bạn cần theo dõi tốc độ hoạt động của cơ sở dữ liệu cho các nút chính cũng như phụ của mình

Thời gian thực hiện thao tác​

Hiệu suất truy vấn có thể được theo dõi bằng cách theo dõi độ trễ trong quá trình thực thi thao tác. Thời gian thao tác đọc và ghi có thể cho biết liệu các truy vấn có cần được tối ưu hóa hơn nữa hay không. Thông thường, thời gian thao tác đọc trên

ds.disableFreeMonitoring()
7 được coi là chậm và có phạm vi để tối ưu hóa truy vấn. Bạn cũng có thể làm việc để tối ưu hóa các truy vấn hoạt động đắt tiền

Khách hàng hoặc kết nối​

Số lượng máy khách đang hoạt động thực hiện các thao tác đọc và ghi là một số liệu quan trọng khác để theo dõi. Bạn có thể lấy số lượng máy khách đang hoạt động bằng cách sử dụng lệnh

ds.disableFreeMonitoring()
8 từ trình bao MongoDB. Lệnh
ds.disableFreeMonitoring()
8 cung cấp tài liệu
db.serverStatus()
0 báo cáo về kết nối máy khách

Số lượng khách hàng đang hoạt động được báo cáo ở cấp độ khóa toàn cầu. MongoDB cho phép các hoạt động khóa ở cấp độ toàn cầu, cơ sở dữ liệu hoặc bộ sưu tập để đảm bảo tính nhất quán. Các trường sau trong đầu ra cung cấp thông tin về số lượng kết nối

  • db.serverStatus()
    1
    Số lượng kết nối máy khách đang hoạt động thực hiện thao tác đọc.

  • db.serverStatus()
    2 Số lượng kết nối máy khách đang hoạt động thực hiện thao tác ghi

Sử dụng tài nguyên

Hoạt động cơ sở dữ liệu tiêu thụ bộ nhớ và lưu trữ dữ liệu cần không gian. Ngay cả khi bạn đang chạy cơ sở dữ liệu của mình trên đám mây, bạn cần tối ưu hóa cơ sở dữ liệu của mình để sử dụng tài nguyên vì tài nguyên tốn tiền. Sau đây là một số số liệu chính mà bạn nên theo dõi về việc sử dụng tài nguyên MongoDB

Mức sử dụng đĩa
Mức sử dụng đĩa là một chỉ báo tốt về tình trạng tổng thể của đĩa. MongoDB đưa ra tỷ lệ phần trăm sử dụng tối đa và trung bình của tất cả các ổ đĩa.

Mức sử dụng bộ nhớ
Chỉ số bộ nhớ bao gồm chỉ số cho bộ nhớ thường trú và bộ nhớ ảo (đối với công cụ lưu trữ WiredTiger). Bộ nhớ thường trú biểu thị số megabyte bộ nhớ vật lý được sử dụng bởi quy trình mongod, trong khi bộ nhớ ảo biểu thị số megabyte bộ nhớ ảo được sử dụng bởi quy trình mongod.

Mức sử dụng CPU hệ thống
Việc sử dụng CPU hệ thống của tất cả các quy trình trong nút MongoDB cần được theo dõi. Việc sử dụng CPU cao có thể dẫn đến các truy vấn cơ sở dữ liệu chậm.

hàng đợi

MongoDB duy trì một hàng đợi cho các thao tác đọc và ghi đang chờ khóa. Độ dài hàng đợi cao trong MongoDB có thể cho biết hoạt động truy vấn không được tối ưu hóa và có thể làm chậm cơ sở dữ liệu. Lệnh

ds.disableFreeMonitoring()
6 cung cấp bản cập nhật kéo dài một giây đối với các thao tác đọc và ghi đang chờ khóa

Replication và Oplog Metrics​

Cụm bản sao MongoDB thường bao gồm ba nút với một nút chính và hai nút phụ. Trong các cụm MongoDB, luồng dữ liệu là một chiều. Chỉ có một nút chính trên mỗi cụm gửi dữ liệu đến các nút phụ. Một cụm có thể là một bộ bản sao hoặc một cụm phân đoạn

Bộ bản sao
Bộ bản sao được sử dụng để dự phòng dữ liệu và tính sẵn sàng cao. Đó là một nhóm các máy chủ MongoDB chứa cùng một bản sao dữ liệu.

Cụm phân đoạn
Cụm phân đoạn chủ yếu được sử dụng để chia tỷ lệ theo chiều ngang, trong đó dữ liệu được phân phối trên nhiều máy chủ.

Theo mặc định, MongoDB Atlas cung cấp một cụm có bộ bản sao. Sau đây là các số liệu hiệu suất chính để sao chép

Độ trễ sao chép
Độ trễ sao chép được định nghĩa là số giây mà nút phụ chậm hơn nút chính trong quá trình tạo bản sao dữ liệu. Độ trễ sao chép cao cho biết nút phụ không thể sao chép dữ liệu đủ nhanh. Có thể có nhiều lý do đằng sau độ trễ sao chép cao - độ trễ mạng, thông lượng ổ đĩa, đồng thời hoặc chỉ các thao tác ghi lớn trên cơ sở dữ liệu MongoDB của bạn.

Cửa sổ Oplog
Oplog (Nhật ký hoạt động) là thành phần chính của cơ sở dữ liệu MongoDB hỗ trợ sao chép. Tất cả các thay đổi dữ liệu trong nút chính được lưu trong Oplog để sao chép cụm. Cửa sổ Oplog đề cập đến lượng thời gian ước tính các thay đổi dữ liệu có sẵn trong Oplog chính. Bạn cũng có thể gọi nó là sự khác biệt về thời gian giữa các mục cũ nhất và mới nhất trong Oplog của bạn.

Nếu một nút phụ chậm hơn cửa sổ Oplog, thì nút đó sẽ không thể sao chép dữ liệu vì dữ liệu bị ghi đè và sẽ yêu cầu đồng bộ lại toàn bộ. Cửa sổ Oplog không phải là một giá trị cố định và tiếp tục dao động dựa trên các hoạt động của cơ sở dữ liệu. Và đó là lý do tại sao bạn cần theo dõi nó và tốt nhất là đặt cả cảnh báo

Người phản đối để sao chép
Giống như Người chống đối cho nút chính, bạn cũng cần giám sát hoạt động cơ sở dữ liệu cho các nút phụ của mình.

Dung lượng sao chép
Bạn cũng có thể giám sát khoảng trống sao chép để đảm bảo các nút phụ luôn có thể sao chép dữ liệu từ nút chính. Đó là sự khác biệt giữa cửa sổ oplog sao chép của chính và độ trễ sao chép của phụ. Nếu khoảng trống sao chép liên tục giảm, thì điều đó có nghĩa là các thay đổi dữ liệu trong Oplog có khả năng bị ghi đè cao.

MongoDB trong các công cụ & tiện ích được xây dựng để theo dõi​

MongoDB cung cấp một số tiện ích và công cụ để theo dõi tình trạng của cá thể và cụm. Ngoài thông tin về tình trạng của phiên bản, bạn cũng có thể theo dõi các thông số vận hành để nắm được hoạt động của cơ sở dữ liệu. Một khung giám sát mạnh mẽ có thể giúp bạn chẩn đoán trước các lỗi và thực hiện các bước để tránh chúng

MongoDB có nhiều loại khác nhau và đôi khi nó có thể gây nhầm lẫn nên sử dụng công cụ hoặc tiện ích nào để theo dõi. Đây là bảng phân tích tất cả các công cụ và tiện ích mà MongoDB cung cấp

Giám sát đám mây miễn phí​

MongoDB cung cấp giám sát đám mây miễn phí cho phiên bản cộng đồng của nó trong phiên bản 4. 0 trở lên. Sau khi được bật, bạn sẽ nhận được một URL duy nhất nơi bạn có thể xem dữ liệu được theo dõi của mình. Dữ liệu bao gồm

  • Thời gian thực hiện thao tác
  • Sử dụng bộ nhớ
  • sử dụng CPU
  • Số lượng hoạt động

Bạn có thể bật giám sát đám mây miễn phí cho MongoDB chạy cục bộ của mình bằng cách chạy lệnh sau từ Mongo shell

db.enableFreeMonitoring()
Bản sao

Giám sát các truy vấn mongodb
Bật tính năng giám sát đám mây miễn phí cho các phiên bản MongoDB cục bộ.

Bạn có thể tắt giám sát đám mây bằng lệnh bên dưới.

ds.disableFreeMonitoring()
Bản sao

tiện ích

MongoDB cung cấp hai tiện ích mạnh mẽ cung cấp ảnh chụp nhanh hoạt động cơ sở dữ liệu theo thời gian thực. bộ đếm cho loại truy vấn đang được thực thi và hoạt động đọc và ghi trên mỗi bộ sưu tập. Hãy xem xét cả hai tiện ích một cách ngắn gọn

  • ds.disableFreeMonitoring()
    6
    Lệnh
    ds.disableFreeMonitoring()
    6 trả về số lượng thao tác cơ sở dữ liệu như
    ds.disableFreeMonitoring()
    1,
    ds.disableFreeMonitoring()
    8,
    ds.disableFreeMonitoring()
    9 và
    ds.disableFreeMonitoring()
    0 trong khoảng thời gian một giây. Nó có thể được chạy trực tiếp từ dòng lệnh. Lưu ý rằng bạn sẽ cần các đặc quyền nâng cao để chạy lệnh này. Nếu bạn đã bật xác thực, bạn sẽ cần xác thực bằng tên người dùng và mật khẩu của mình để chạy lệnh.

    Giám sát các truy vấn mongodb

  • ds.disableFreeMonitoring()
    10
    Lệnh
    ds.disableFreeMonitoring()
    10 trả về thông tin về hoạt động đọc và ghi của tất cả các bộ sưu tập trong cơ sở dữ liệu. Trong thời gian tải cao điểm, lệnh
    ds.disableFreeMonitoring()
    10 có thể được sử dụng để xác định bộ sưu tập nào có nhiều hoạt động cơ sở dữ liệu nhất.

    Giám sát các truy vấn mongodb

Lệnh cơ sở dữ liệu

Ngoài các tiện ích trên, bạn có thể chạy một số lệnh cơ sở dữ liệu để lấy số liệu thống kê về cơ sở dữ liệu. Hãy có một cái nhìn tổng quan ngắn gọn về các lệnh này

  • ds.disableFreeMonitoring()
    8
    Lệnh
    ds.disableFreeMonitoring()
    8 trả về một đầu ra dài về trạng thái của cơ sở dữ liệu, việc sử dụng tài nguyên, kết nối và truy vấn. Bạn có thể chạy lệnh này như sau từ trình bao MongoDB của mình.

    db.serverStatus()
    Bản sao

    Đầu ra có nhiều phần như

    ds.disableFreeMonitoring()
    15,
    ds.disableFreeMonitoring()
    16,
    ds.disableFreeMonitoring()
    17,
    ds.disableFreeMonitoring()
    18, v.v. Đó là một lệnh hữu ích khi bạn muốn biết thông tin chi tiết về việc sử dụng máy chủ

    Giám sát các truy vấn mongodb
    Ảnh chụp phần kết nối với lệnh serverStatus
  • ds.disableFreeMonitoring()
    19
    Lệnh
    ds.disableFreeMonitoring()
    19 đưa ra số liệu thống kê ngắn gọn với một số chỉ số quan trọng về cơ sở dữ liệu hiện tại. Bạn có thể sử dụng lệnh
    ds.disableFreeMonitoring()
    19 như sau từ trình bao MongoDB của mình.

    ds.disableFreeMonitoring()
    1Bản sao

    Đây là ảnh chụp đầu ra của lệnh

    ds.disableFreeMonitoring()
    19

    Giám sát các truy vấn mongodb

Các công cụ giám sát MongoDB được lưu trữ​

MongoDB Atlas đi kèm với bộ công cụ giám sát giúp quản lý việc triển khai MongoDB của bạn dễ dàng hơn. Công cụ báo cáo số liệu cho tất cả các nút trong cụm với các biểu đồ hữu ích về tổng số hoạt động, mức sử dụng mạng và kết nối

Giám sát các truy vấn mongodb
Bộ giám sát MongoDB Atlas (Nguồn. MongoDB)

Tương tự, phiên bản MongoDB được lưu trữ trên máy chủ được quản lý có tên là Enterprise Advanced đi kèm với Trình quản lý vận hành giám sát việc triển khai và bật cài đặt cảnh báo trên dữ liệu đã thu thập.

Suy nghĩ cuối cùng

Trong bài đăng này, chúng tôi đã xem xét một số chỉ số giám sát chính của MongoDB. MongoDB cung cấp một số công cụ tích hợp để truy cập ảnh chụp nhanh hiệu suất. Nó rất hữu ích trong trường hợp đăng ký hoặc gỡ lỗi nhanh. Nhưng bạn cần một hệ thống giám sát chuyên dụng để theo dõi hiệu suất của các phiên bản MongoDB của bạn theo thời gian

Một công cụ giám sát cho phép bạn lưu trữ, truy vấn và trực quan hóa các số liệu giám sát MongoDB có thể giúp bạn gỡ lỗi các vấn đề về hiệu suất một cách nhanh chóng. Đối với các ứng dụng hiện đại dựa trên kiến ​​trúc phân tán, điều quan trọng là phải tương quan các chỉ số MongoDB của bạn với phần còn lại của cơ sở hạ tầng ứng dụng

Bạn có thể thiết lập giám sát MongoDB bằng APM nguồn mở - SigNoz. SigNoz được xây dựng để hỗ trợ OpenTelemetry, đang trở thành tiêu chuẩn thế giới để thiết lập các ứng dụng dựa trên đám mây

Trong bài đăng sau, chúng tôi hướng dẫn bạn cách thiết lập giám sát MongoDB bằng OpenTelemetry và Signoz