Skip to content

fcgravalos/instaclustr_exporter

Repository files navigation

InstaClustr Exporter Build Status CircleCI

Collects Cassandra metrics from InstaClustr Monitoring API and exports them to prometheus format.

To run it:

make
./instaclustr_exporter [flags]

Exported Metrics

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

Flags

./instaclustr_exporter --help
  • instaclustr.monitoring-apikey: Key for the provisioning API
  • instaclustr.provisioning-apikey: Key for the provisioning API
  • instaclustr.user: User for InstaClustr API
  • log.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)

Environment variables

  • INSTACLUSTR_USER: Takes precedence over instaclustr.user
  • PROVISIONING_API_KEY: Takes precedence over instaclustr.provisioning-apikey
  • MONITORING_API_KEY: Takes precedence over instaclustr.monitoring-apikey

Using Docker

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