Cassandra - Giám sát Cassandra (Phần 2) - Cách thu thập các thông số (nodetool)

Trong Phần 1, chúng ta đã biết về các thông số hiệu suất chính có sẵn trong Cassandra và trong phần này, chúng ta tiếp tục tìm hiểu cách thu thập các thông số này như thế nào?

Giống như Solr, Tomcat và các ứng dụng Java khác, Cassandra đưa ra các số liệu về tính khả dụng và hiệu suất thông qua JMX (Java Management Extensions). Kể từ phiên bản 1.1, các số liệu của Cassandra đã dựa trên thư viện Metrics phổ biến của Coda Hale, trong đó có rất nhiều tích hợp với các công cụ theo dõi và vẽ đồ thị. Có ít nhất ba cách để xem và theo dõi các số liệu của Cassandra, từ các tiện ích nhẹ nhưng hạn chế đến các dịch vụ được lưu trữ, đầy đủ tính năng:

  • nodetool, một giao diện dòng lệnh đi kèm với Cassandra
  • JConsole, một GUI đi kèm với Bộ phát triển Java (JDK)
  • JMXTerm (CLI): giao diện dòng lệnh
  • JMX/Metrics tích hợp với các công cụ và dịch vụ giám sát và vẽ đồ thị bên ngoài

1. Thu thập các chỉ số bằng nodetool

Nodetool là một tiện ích dòng lệnh để quản lý và giám sát một cụm Cassandra. Nó có thể được sử dụng để kích hoạt các giao dịch theo cách thủ công, để chuyển dữ liệu trong bộ nhớ vào đĩa hoặc để đặt các thông số như kích thước bộ nhớ cache và ngưỡng nén. Nó cũng có một số lệnh trả về các chỉ số nút và cụm đơn giản có thể cung cấp thông tin nhanh về tình trạng cụm của bạn. Nodetool đi cùng với Cassandra và có trong thư mục ‘bin’ của Cassandra.

Chạy lệnh ‘bin/nodetool status’ từ thư mục mà bạn đã cài đặt Cassandra sẽ đưa ra một cái nhìn tổng quan về cụm, bao gồm cả tải hiện tại trên mỗi nút và trạng thái các nút riêng lẻ là up hay down:

$ bin/nodetool status

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Owns    Host ID   Token                  Rack
UN  127.0.0.1  14.76 MB   66.7%   9e524995  -9223372036854775808   rack1
UN  127.0.0.1  14.03 MB   66.7%   12e12ead  -3074457345618258603   rack1
UN  127.0.0.1  13.92 MB   66.7%   44387d08   3074457345618258602   rack1

‘nodetool info’ đưa ra số liệu thống kê chi tiết hơn một chút cho một nút riêng lẻ trong cụm, bao gồm cả thời gian hoạt động, tải, tỷ lệ truy cập bộ nhớ cache chính và tổng số tất cả ngoại lệ. Bạn có thể chỉ định nút nào bạn muốn kiểm tra bằng cách sử dụng ‘–host’ đối số với địa chỉ IP hoặc tên máy chủ:

$ bin/nodetool --host 127.0.0.1 info

ID                     : 9aa4fe41-c9a8-43bb-990a-4a6192b3b46d
Gossip active          : true
Thrift active          : false
Native Transport active: true
Load                   : 14.76 MB
Generation No          : 1449113333
Uptime (seconds)       : 527
Heap Memory (MB)       : 158.50 / 495.00
Off Heap Memory (MB)   : 0.07
Data Center            : datacenter1
Rack                   : rack1
Exceptions             : 0
Key Cache              : entries 26, size 2.08 KB, capacity 24 MB, 87 hits, 122 requests, 0.713 recent hit rate, 14400 save period in seconds
Row Cache              : entries 0, size 0 bytes, capacity 0 bytes, 0 hits, 0 requests, NaN recent hit rate, 0 save period in seconds
Counter Cache          : entries 0, size 0 bytes, capacity 12 MB, 0 hits, 0 requests, NaN recent hit rate, 7200 save period in seconds
Token                  : -9223372036854775808

‘nodetool cfstats’ cung cấp số liệu thống kê về từng keyspace và column family (tương tự như cơ sở dữ liệu và bảng cơ sở dữ liệu), bao gồm độ trễ đọc, độ trễ ghi, và tổng dung lượng ổ đĩa được sử dụng. Theo mặc định, nodetool in số liệu thống kê trên tất cả các keyspace và column families, nhưng bạn có thể giới hạn truy vấn trong một keyspace duy nhất bằng cách thêm tên của keyspace vào lệnh:

$ bin/nodetool cfstats demo

Keyspace: demo
    Read Count: 4
    Read Latency: 1.386 ms.
    Write Count: 4
    Write Latency: 0.71675 ms.
    Pending Flushes: 0
        Table: users
        SSTable count: 3
        Space used (live), bytes: 16178
        Space used (total), bytes: 16261
        ...
        Local read count: 4
        Local read latency: 1.153 ms
        Local write count: 4
        Local write latency: 0.224 ms
        Pending flushes: 0
        ...

‘nodetool compactionstats’ hiển thị các tác vụ nén đang xử lý cũng như số lượng tác vụ nén đang chờ xử lý (pending compaction tasks).

$ bin/nodetool compactionstats

pending tasks: 5
          compaction type        keyspace           table       completed           total      unit  progress
               Compaction       Keyspace1       Standard1       282310680       302170540     bytes    93.43%
               Compaction       Keyspace1       Standard1        58457931       307520780     bytes    19.01%
Active compaction remaining time :   0h00m16s

‘nodetool gcstats’ trả về thống kê về bộ thu gom rác, bao gồm tổng số số lượng bộ thu gom và thời gian trôi qua(cả tổng và thời gian đã trôi qua tối đa). Các bộ đếm được đặt lại mỗi khi lệnh được đưa ra, vì vậy số liệu thống kê chỉ tương ứng với khoảng thời gian giữa các lệnh ‘gcstats’.

$ bin/nodetool gcstats

Interval (ms)  Max GC Elapsed (ms)  Total GC Elapsed (ms)  Stdev GC Elapsed (ms)  GC Reclaimed (MB)  Collections  Direct Memory Bytes
     73540574                   64                    595                      7         3467143560           83             67661338

‘nodetool tpstats’ cung cấp số liệu thống kê sử dụng luồng của Cassandra, bao gồm các tác vụ đang chờ xử lý cũng như các tác vụ hiện tại và lịch sử bị chặn.

$ bin/nodetool tpstats

Pool Name                    Active   Pending      Completed   Blocked  All time blocked
ReadStage                         0         0          11801         0                 0
MutationStage                     0         0         125405         0                 0
CounterMutationStage              0         0              0         0                 0
GossipStage                       0         0              0         0                 0
RequestResponseStage              0         0              0         0                 0
AntiEntropyStage                  0         0              0         0                 0
MigrationStage                    0         0             10         0                 0
MiscStage                         0         0              0         0                 0
InternalResponseStage             0         0              0         0                 0
ReadRepairStage                   0         0              0         0                 0

Tài liệu tham khảo

  • datadoghq
  • Mastering Apache Cassandra 3.x - Third Edition Ebook