Docs ยป Supported integrations in Splunk Observability Cloud ยป Configure application receivers for databases ยป Cassandra

Cassandra ๐Ÿ”—

The Splunk Distribution of OpenTelemetry Collector uses the Smart Agent receiver with the Cassandra monitor type to monitor Cassandra.

This integration is only available on Kubernetes and Linux.

Benefits ๐Ÿ”—

After you configure the integration, you can access these features:

Installation ๐Ÿ”—

Follow these steps to deploy this integration:

  1. Deploy the Splunk Distribution of OpenTelemetry Collector to your host or container platform:

  2. Configure the monitor, as described in the Configuration section.

  3. Restart the Splunk Distribution of OpenTelemetry Collector.

Configuration ๐Ÿ”—

To use this integration of a Smart Agent monitor with the Collector:

  1. Include the Smart Agent receiver in your configuration file.

  2. Add the monitor type to the Collector configuration, both in the receiver and pipelines sections.

Example ๐Ÿ”—

To activate this integration, add the following to your Collector configuration:

receivers:
  smartagent/cassandra:
    type: collectd/cassandra
    ...  # Additional config

Next, add the monitor to the service.pipelines.metrics.receivers section of your configuration file:

service:
  pipelines:
    metrics:
      receivers: [smartagent/cassandra]

Configuration settings ๐Ÿ”—

The following table shows the configuration options for this integration:

Option

Required

Type

Description

host

yes

string

Use this string to specify the host to connect to.

port

yes

integer

Use this number to specify the JMX connection port (not the RMI

port) for the application. This value corresponds to the com.sun.management.jmxremote.port Java property that you need to set for the JVM when you run the application.

name

no

string

serviceName

no

string

This value appears as the service type in the Splunk

Splunk Observability Cloud UI, which lets you retrieve built-in content for the service. For custom JMX integrations, you can set it to any value.

serviceURL

no

string

Use this value to define the JMX connection string. The system

interprets it as a Go template, so you can specify the value using replaceable variables that map to your configuration options. Note: Avoid setting this string directly. Instead, set the host and port options. (default: service:jmx:rmi:///jndi/rmi://{{.Host}}:{{.Port}}/jmxrmi)

instancePrefix

no

string

The system adds this value as a prefix to the generated plugin

instance name. If you specify a second instancePrefix in a referenced MBean block, the prefix specified in the Connection block will appear at the beginning of the plugin instance, and the prefix specified in the MBean block will be appended to it.

username

no

string

Use this value to specify the user name you want to send to the

server for authentication.

password

no

string

Use this value to specify the password for the user name.

customDimensions

no

map of strings

This object specifies custom dimensions to add at the connection

level.

mBeansToCollect

no

list of strings

This array specifies a list of the MBeans defined in

mBeanDefinitions that you want to collect. If you donโ€™t provide the array, the monitor collects all defined MBeans.

mBeansToOmit

no

list of strings

This array specifies a list of the MBeans defined in

mBeanDefinitions that you want to omit. Use this list when you want to omit only a few MBeans from the default list.

mBeanDefinitions

no

map of objects (see the following table for details)

This object specifies how to map JMX MBean values to metrics.

Cassandra comes pre-loaded with a set of mappings. Any mappings that you add in this option are merged with the pre-loaded ones. To learn more, see the Collectd documentation .

The mBeanDefinitions configuration option has the following fields:

Option

Required

Type

Description

objectName

no

string

This name sets a pattern that the monitor uses to retrieve

MBeans from the MBeanServer. If the server returns more than one MBean, use the instanceFrom option to make the MBean identifiers unique.

instancePrefix

no

string

This value prefixes the generated plugin instance.

instanceFrom

no

list of strings

This array specifies a list of object names used by JMX to

identify MBeans, including properties that are key-value pairs. If the given object name is not unique and the server returns multiple MBeans, the values of these properties usually differ. Use the instanceFrom option to build the plugin instance from the appropriate property values. You can have multiple values of this option in your configuration, so you can generate the plugin instance from multiple property values.

values

no

list of objects (see the following table for details)

This array specifies a list of objects corresponding to blocks

in the values option. Each block maps the attributes of an MBean to a value list in collectd. You need to specify at least one value object for each MBean.

dimensions

no

list of strings

The values configuration option has the following fields:

Option

Required

Type

Description

type

no

string

Use this value to set the data set used within collectd to

handle the values of the MBean attribute

table

no

bool

Set this flag to true if the returned attribute is a

composite type. If you set it to true, the server appends keys within the composite type to the type instance. (default: false)

instancePrefix

no

string

See the definition of instancePrefix in the description of

mBeanDefinitions. This option is similar, but it sets the type instance instead.

instanceFrom

no

list of strings

See the definition of instancePrefix in the description of

mBeanDefinitions. This option is similar, but it sets the type instance instead.

attribute

no

string

Use this value to set the name of the attribute from which to

read the value. You can access the keys of composite types by using a dot to concatenate the key name to the attribute name. For example, attrib0.key42 specifies the key42 attribute in the attrib0 object. If you set the table option to true, the path must point to a composite type, otherwise it must point to a numeric type.

attributes

no

list of strings

Use this option to derive multiple metrics from a single MBean.

Metrics ๐Ÿ”—

The following metrics are available for this integration:

NameDescriptionCategoryType
gauge.jvm.threads.count

Number of JVM threads

Defaultgauge
gauge.loaded_classes

Number of classes loaded in the JVM

Defaultgauge
invocations

Total number of garbage collection events

Defaultcumulative
jmx_memory.committed

Amount of memory guaranteed to be available in bytes

Defaultgauge
jmx_memory.max

Maximum amount of memory that can be used in bytes

Defaultgauge
jmx_memory.used

Current memory usage in bytes

Defaultgauge
total_time_in_ms.collection_time

Amount of time spent garbage collecting in milliseconds

Defaultcumulative
jmx_memory.init

Amount of initial memory at startup in bytes

Defaultgauge
counter.cassandra.ClientRequest.RangeSlice.Latency.Count

Count of range slice operations since server start. This typically indicates a server overload condition.

If this value is increasing across the cluster then the cluster is too small for the application range slice load.

If this value is increasing for a single server in a cluster, then one of the following conditions may be true:

  • one or more clients are directing more load to this server than the others
  • the server is experiencing hardware or software issues and may require maintenance.
Defaultcumulative
counter.cassandra.ClientRequest.RangeSlice.TotalLatency.Count

The total number of microseconds elapsed in servicing range slice requests.

Customcumulative
counter.cassandra.ClientRequest.RangeSlice.Timeouts.Count

Count of range slice timeouts since server start. This typically indicates a server overload condition.

If this value is increasing across the cluster then the cluster is too small for the application range slice load.

If this value is increasing for a single server in a cluster, then one of the following conditions may be true:

  • one or more clients are directing more load to this server than the others
  • the server is experiencing hardware or software issues and may require maintenance.
Defaultcumulative
counter.cassandra.ClientRequest.RangeSlice.Unavailables.Count

Count of range slice unavailables since server start. A non-zero value means that insufficient replicas were available to fulfil a range slice request at the requested consistency level.

This typically means that one or more nodes are down. To fix this condition, any down nodes must be restarted, or removed from the cluster.

Defaultcumulative
counter.cassandra.ClientRequest.Read.Latency.Count

Count of read operations since server start.

Defaultcumulative
counter.cassandra.ClientRequest.Read.TotalLatency.Count

The total number of microseconds elapsed in servicing client read requests.

It can be devided by counter.cassandra.ClientRequest.Read.Latency.Count to find the real time read latency.

Customcumulative
counter.cassandra.ClientRequest.CASRead.Latency.Count

Count of transactional read operations since server start.

Customcumulative
counter.cassandra.ClientRequest.CASRead.TotalLatency.Count

The total number of microseconds elapsed in servicing client transactional read requests.

It can be devided by counter.cassandra.ClientRequest.CASRead.Latency.Count to find the real time transactional read latency.

Customcumulative
counter.cassandra.ClientRequest.Read.Timeouts.Count

Count of read timeouts since server start. This typically indicates a server overload condition.

If this value is increasing across the cluster then the cluster is too small for the application read load.

If this value is increasing for a single server in a cluster, then one of the following conditions may be true:

  • one or more clients are directing more load to this server than the others
  • the server is experiencing hardware or software issues and may require maintenance.
Defaultcumulative
counter.cassandra.ClientRequest.Read.Unavailables.Count

Count of read unavailables since server start. A non-zero value means that insufficient replicas were available to fulfil a read request at the requested consistency level. This typically means that one or more nodes are down. To fix this condition, any down nodes must be restarted, or removed from the cluster.

Defaultcumulative
counter.cassandra.ClientRequest.Write.Latency.Count

Count of write operations since server start.

Defaultcumulative
counter.cassandra.ClientRequest.Write.TotalLatency.Count

The total number of microseconds elapsed in servicing client write requests.

It can be devided by counter.cassandra.ClientRequest.Write.Latency.Count to find the real time write latency.

Customcumulative
counter.cassandra.ClientRequest.CASWrite.Latency.Count

Count of transactional write operations since server start.

Customcumulative
counter.cassandra.ClientRequest.CASWrite.TotalLatency.Count

The total number of microseconds elapsed in servicing client transactional write requests.

It can be devided by counter.cassandra.ClientRequest.CASWrite.Latency.Count to find the real time transactional write latency.

Customcumulative
counter.cassandra.ClientRequest.Write.Timeouts.Count

Count of write timeouts since server start. This typically indicates a server overload condition.

If this value is increasing across the cluster then the cluster is too small for the application write load.

If this value is increasing for a single server in a cluster, then one of the following conditions may be true:

  • one or more clients are directing more load to this server than the others
  • the server is experiencing hardware or software issues and may require maintenance.
Defaultcumulative
counter.cassandra.ClientRequest.Write.Unavailables.Count

Count of write unavailables since server start. A non-zero value means that insufficient replicas were available to fulfil a write request at the requested consistency level.

This typically means that one or more nodes are down. To fix this condition, any down nodes must be restarted, or removed from the cluster.

Defaultcumulative
counter.cassandra.Compaction.TotalCompactionsCompleted.Count

Number of compaction operations since node start. If this value does not increase steadily over time then the node may be experiencing problems completing compaction operations.

Customcumulative
gauge.cassandra.ClientRequest.RangeSlice.Latency.50thPercentile

50th percentile (median) of Cassandra range slice latency. This value should be similar across all nodes in the cluster. If some nodes have higher values than the rest of the cluster then they may have more connected clients or may be experiencing heavier than usual compaction load.

Customgauge
gauge.cassandra.ClientRequest.RangeSlice.Latency.99thPercentile

99th percentile of Cassandra range slice latency. This value should be similar across all nodes in the cluster. If some nodes have higher values than the rest of the cluster then they may have more connected clients or may be experiencing heavier than usual compaction load.

Defaultgauge
gauge.cassandra.ClientRequest.RangeSlice.Latency.Max

Maximum Cassandra range slice latency.

Customgauge
gauge.cassandra.ClientRequest.Read.Latency.50thPercentile

50th percentile (median) of Cassandra read latency. This value should be similar across all nodes in the cluster. If some nodes have higher values than the rest of the cluster then they may have more connected clients or may be experiencing heavier than usual compaction load.

Defaultgauge
gauge.cassandra.ClientRequest.Read.Latency.99thPercentile

99th percentile of Cassandra read latency. This value should be similar across all nodes in the cluster. If some nodes have higher values than the rest of the cluster then they may have more connected clients or may be experiencing heavier than usual compaction load.

Defaultgauge
gauge.cassandra.ClientRequest.Read.Latency.Max

Maximum Cassandra read latency.

Defaultgauge
gauge.cassandra.ClientRequest.CASRead.Latency.50thPercentile

50th percentile (median) of Cassandra transactional read latency.

Customgauge
gauge.cassandra.ClientRequest.CASRead.Latency.99thPercentile

99th percentile of Cassandra transactional read latency.

Customgauge
gauge.cassandra.ClientRequest.CASRead.Latency.Max

Maximum Cassandra transactional read latency.

Customgauge
gauge.cassandra.ClientRequest.Write.Latency.50thPercentile

50th percentile (median) of Cassandra write latency. This value should be similar across all nodes in the cluster. If some nodes have higher values than the rest of the cluster then they may have more connected clients or may be experiencing heavier than usual compaction load.

Defaultgauge
gauge.cassandra.ClientRequest.Write.Latency.99thPercentile

99th percentile of Cassandra write latency. This value should be similar across all nodes in the cluster. If some nodes have higher values than the rest of the cluster then they may have more connected clients or may be experiencing heavier than usual compaction load.

Defaultgauge
gauge.cassandra.ClientRequest.Write.Latency.Max

Maximum Cassandra write latency

Defaultgauge
gauge.cassandra.ClientRequest.CASWrite.Latency.50thPercentile

50th percentile (median) of Cassandra transactional write latency.

Customgauge
gauge.cassandra.ClientRequest.CASWrite.Latency.99thPercentile

99th percentile of Cassandra transactional write latency.

Customgauge
gauge.cassandra.ClientRequest.CASWrite.Latency.Max

Maximum Cassandra transactional write latency.

Customgauge
gauge.cassandra.Compaction.PendingTasks.Value

Number of compaction operations waiting to run. If this value is continually increasing then the node may be experiencing problems completing compaction operations.

Defaultgauge
counter.cassandra.Storage.Exceptions.Count

Number of internal exceptions caught. Under normal exceptions this should be zero.

Customcumulative
counter.cassandra.Storage.Load.Count

Storage used for Cassandra data in bytes. Use this metric to see how much storage is being used for data by a Cassandra node.

The value of this metric is influenced by:

  • Total data stored into the database
  • compaction behavior
Defaultcumulative
counter.cassandra.Storage.TotalHints.Count

Total hints since node start. Indicates that write operations cannot be delivered to a node, usually because a node is down. If this value is increasing and all nodes are up then there may be some connectivity issue between nodes in the cluster.

Customcumulative
counter.cassandra.Storage.TotalHintsInProgress.Count

Total pending hints. Indicates that write operations cannot be delivered to a node, usually because a node is down. If this value is increasing and all nodes are up then there may be some connectivity issue between nodes in the cluster.

Defaultcumulative

Notes ๐Ÿ”—

  • To learn more about the available in Splunk Observability Cloud see Metric types

  • In host-based subscription plans, default metrics are those metrics included in host-based subscriptions in Splunk Observability Cloud, such as host, container, or bundled metrics. Custom metrics are not provided by default and might be subject to charges. See Metric categories for more information.

  • In MTS-based subscription plans, all metrics are custom.

  • To add additional metrics, see how to configure extraMetrics in Add additional metrics

Troubleshooting ๐Ÿ”—

If you are a Splunk Observability Cloud customer and are not able to see your data in Splunk Observability Cloud, you can get help in the following ways.

Available to Splunk Observability Cloud customers

Available to prospective customers and free trial users

  • Ask a question and get answers through community support at Splunk Answers .

  • Join the Splunk #observability user group Slack channel to communicate with customers, partners, and Splunk employees worldwide. To join, see Chat groups in the Get Started with Splunk Community manual.

This page was last updated on Feb 11, 2025.