Collects Cassandra metrics from InstaClustr Monitoring API and exports them to prometheus format.
To run it:
make
./instaclustr_exporter [flags]
Metric | Meaning | Labels |
---|---|---|
cassandra_cluster_info | A mapping between the clusterId and clusterName | clusterId, clusterName |
cassandra_cluster_running | Whether or not the cassandra cluster is running | clusterId |
cassandra_cluster_nodes_count | Number of nodes the cluster is composed | clusterId |
cassandra_cluster_nodes_running_count | Number of nodes running in the cluster | clusterId |
cassandra_node_info | A mapping between nodeId with its IPs, racks and cluster | clusterId, clusterName, nodeId, nodePublicIp, nodePrivateIp, rack |
cassandra_node_running | Whether or not a single node is running | nodeId |
cassandra_node_cpu_utilization_percentage | Current CPU utilisation as a percentage of total available. Maximum value is 100%, regardless of the number of cores on the node | nodeId |
cassandra_node_disk_utilization_percentage | Total disk space utilisation, by Cassandra, as a percentage of total available | nodeId |
cassandra_node_client_request_read_latency | Average latency (us/1) per client read request (i.e. the period from when a node receives a client request, gathers the records and response to the client) | nodeId |
cassandra_node_client_request_write_latency | Average latency (us/1) per client write request (i.e. the period from when a node receives a client request, gathers the records and response to the client) | nodeId |
cassandra_node_client_request_read_percentile | 95th percentile (us) distribution per client read request (i.e. the period from when a node receives a client request, gathers the records and response to the client) | nodeId |
cassandra_node_client_request_write_percentile | 95th percentile (us) distribution per client write request (i.e. the period from when a node receives a client request, gathers the records and response to the client) | nodeId |
cassandra_node_client_request_read_percentile99 | 99th percentile (us) distribution per client read request (i.e. the period from when a node receives a client request, gathers the records and response to the client) | nodeId |
cassandra_node_client_request_write_percentile99 | 99th percentile (us) distribution per client write request (i.e. the period from when a node receives a client request, gathers the records and response to the client) | nodeId |
cassandra_node_reads_per_second | Reads per second by Cassandra | nodeId |
cassandra_node_writes_per_second | Writes per second by Cassandra | nodeId |
cassandra_node_compactions | Number of pending compactions | nodeId |
cassandra_node_repairs_active | Number of active repair tasks | nodeId |
cassandra_node_repairs_pending | Number of pending repair tasks | nodeId |
./instaclustr_exporter --help
instaclustr.monitoring-apikey
: Key for the provisioning APIinstaclustr.provisioning-apikey
: Key for the provisioning APIinstaclustr.user
: User for InstaClustr APIlog.format value
: Set the log target and format. Example: "logger:syslog?appname=bob&local=7" or "logger:stdout?json=true" (default "logger:stderr")log.level value
: Only log messages with the given severity or above. Valid levels: [debug, info, warn, error, fatal]version
: Print version information.web.listen-address
: Address to listen on for web interface and telemetry. (default ":9279")web.liveness-probe-url
: URL for health-checks (default "/health")web.read-timeout
: Read/Write Timeout (default 10s)web.shutdown-url
: URL for health-checks (default "/shutdown")web.telemetry-path
: Path under which to expose metrics. (default "/metrics")web.write-timeout
: Read/Write Timeout (default 10s)
INSTACLUSTR_USER
: Takes precedence overinstaclustr.user
PROVISIONING_API_KEY
: Takes precedence overinstaclustr.provisioning-apikey
MONITORING_API_KEY
: Takes precedence overinstaclustr.monitoring-apikey
You can deploy this exporter using the fcgravalos/instaclustr-exporter Docker image.
For example:
docker pull fcgravalos/instaclustr-exporter
docker run -d -p 9279:9279 fcgravalos/instaclustr-exporter \
-instaclustr.user=user \
-instaclustr.provisioning-apikey=myprovisioningkey \
-instaclustr.monitoring-apikey=mymonitoringkey