Metrics Exporter from InstaClustr API to Prometheus
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Godeps
collector
common
instaclustr
mock
vendor
.promu.yml
.travis.yml
Dockerfile
LICENSE
Makefile
NOTICE
README.md
VERSION
circle.yml
instaclustr_exporter.go
instaclustr_exporter_test.go

README.md

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