Skip to main content

Cassandra

Plugin: go.d.plugin Module: cassandra

Overview​

This collector gathers metrics about client requests, cache hits, and many more, while also providing metrics per each thread pool.

The JMX Exporter is used to fetch metrics from a Cassandra instance and make them available at an endpoint like http://127.0.0.1:7072/metrics.

This collector is supported on all platforms.

This collector supports collecting metrics from multiple instances of this integration, including remote instances.

Default Behavior​

Auto-Detection​

This collector discovers instances running on the local host that provide metrics on port 7072.

On startup, it tries to collect metrics from:

Limits​

The default configuration for this integration does not impose any limits on data collection.

Performance Impact​

The default configuration for this integration is not expected to impose a significant performance impact on the system.

Metrics​

Metrics grouped by scope.

The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.

Per Cassandra instance​

These metrics refer to the entire monitored application.

This scope has no labels.

Metrics:

MetricDimensionsUnit
cassandra.client_requests_rateread, writerequests/s
cassandra.client_request_read_latency_histogramp50, p75, p95, p98, p99, p999seconds
cassandra.client_request_write_latency_histogramp50, p75, p95, p98, p99, p999seconds
cassandra.client_requests_latencyread, writeseconds
cassandra.row_cache_hit_ratiohit_ratiopercentage
cassandra.row_cache_hit_ratehits, missesevents/s
cassandra.row_cache_utilizationusedpercentage
cassandra.row_cache_sizesizebytes
cassandra.key_cache_hit_ratiohit_ratiopercentage
cassandra.key_cache_hit_ratehits, missesevents/s
cassandra.key_cache_utilizationusedpercentage
cassandra.key_cache_sizesizebytes
cassandra.storage_live_disk_space_usedusedbytes
cassandra.compaction_completed_tasks_ratecompletedtasks/s
cassandra.compaction_pending_tasks_countpendingtasks
cassandra.compaction_compacted_ratecompactedbytes/s
cassandra.jvm_memory_usedheap, nonheapbytes
cassandra.jvm_gc_rateparnew, cmsgc/s
cassandra.jvm_gc_timeparnew, cmsseconds
cassandra.dropped_messages_ratedroppedmessages/s
cassandra.client_requests_timeouts_rateread, writetimeout/s
cassandra.client_requests_unavailables_rateread, writeexceptions/s
cassandra.client_requests_failures_rateread, writefailures/s
cassandra.storage_exceptions_ratestorageexceptions/s

Per thread pool​

Metrics related to Cassandra's thread pools. Each thread pool provides its own set of the following metrics.

Labels:

LabelDescription
thread_poolthread pool name

Metrics:

MetricDimensionsUnit
cassandra.thread_pool_active_tasks_countactivetasks
cassandra.thread_pool_pending_tasks_countpendingtasks
cassandra.thread_pool_blocked_tasks_countblockedtasks
cassandra.thread_pool_blocked_tasks_rateblockedtasks/s

Alerts​

There are no alerts configured by default for this integration.

Setup​

Prerequisites​

Configure Cassandra with Prometheus JMX Exporter​

To configure Cassandra with the JMX Exporter:

Note: paths can differ depends on your setup.

  • Download latest jmx_exporter jar file and install it in a directory where Cassandra can access it.
  • Add the jmx_exporter.yaml file to /etc/cassandra.
  • Add the following line to /etc/cassandra/cassandra-env.sh
    JVM_OPTS="$JVM_OPTS $JVM_EXTRA_OPTS -javaagent:/opt/jmx_exporter/jmx_exporter.jar=7072:/etc/cassandra/jmx_exporter.yaml
  • Restart cassandra service.

Configuration​

File​

The configuration file name for this integration is go.d/cassandra.conf.

You can edit the configuration file using the edit-config script from the Netdata config directory.

cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config go.d/cassandra.conf

Options​

The following options can be defined globally: update_every, autodetection_retry.

Config options
NameDescriptionDefaultRequired
update_everyData collection frequency.5no
autodetection_retryRecheck interval in seconds. Zero means no recheck will be scheduled.0no
urlServer URL.http://127.0.0.1:7072/metricsyes
usernameUsername for basic HTTP authentication.no
passwordPassword for basic HTTP authentication.no
proxy_urlProxy URL.no
proxy_usernameUsername for proxy basic HTTP authentication.no
proxy_passwordPassword for proxy basic HTTP authentication.no
timeoutHTTP request timeout.2no
not_follow_redirectsRedirect handling policy. Controls whether the client follows redirects.nono
tls_skip_verifyServer certificate chain and hostname validation policy. Controls whether the client performs this check.nono
tls_caCertification authority that the client uses when verifying the server's certificates.no
tls_certClient TLS certificate.no
tls_keyClient TLS key.no

Examples​

Basic​

A basic example configuration.

jobs:
- name: local
url: http://127.0.0.1:7072/metrics

HTTP authentication​

Local server with basic HTTP authentication.

Config
jobs:
- name: local
url: http://127.0.0.1:7072/metrics
username: foo
password: bar

HTTPS with self-signed certificate​

Local server with enabled HTTPS and self-signed certificate.

Config
jobs:
- name: local
url: https://127.0.0.1:7072/metrics
tls_skip_verify: yes

Multi-instance​

Note: When you define multiple jobs, their names must be unique.

Collecting metrics from local and remote instances.

Config
jobs:
- name: local
url: http://127.0.0.1:7072/metrics

- name: remote
url: http://192.0.2.1:7072/metrics

Troubleshooting​

Debug Mode​

To troubleshoot issues with the cassandra collector, run the go.d.plugin with the debug option enabled. The output should give you clues as to why the collector isn't working.

  • Navigate to the plugins.d directory, usually at /usr/libexec/netdata/plugins.d/. If that's not the case on your system, open netdata.conf and look for the plugins setting under [directories].

    cd /usr/libexec/netdata/plugins.d/
  • Switch to the netdata user.

    sudo -u netdata -s
  • Run the go.d.plugin to debug the collector:

    ./go.d.plugin -d -m cassandra

Do you have any feedback for this page? If so, you can open a new issue on our netdata/learn repository.