Sign inSign up

mjavier/solidfire-exporter

By mjavier

•Updated over 5 years ago

Image
0

100K+

mjavier/solidfire-exporter repository overview

⁠NetApp Solidfire Exporter

Go Go Report Card

NetApp Solidfire-Exporter queries the Solidfire API and exports the results as Prometheus metrics

Cluster Metrics

⁠Supported ElementOS Versions

API VersionEndpointNotes
11.3⁠https://your-mgmt-vip/json-rpc/11.3⁠There is a known bug in v11.3 where the api user requires Administrator access to retrieve the QoS data.
12.2⁠https://your-mgmt-vip/json-rpc/12.2⁠

⁠Installation

Binaries can be downloaded from Github releases⁠ page.

⁠Metrics

MetricTypeDescription
solidfire_cluster_active_block_space_bytesgaugeThe amount of space on the block drives. This includes additional information such as metadata entries and space which can be cleaned up.
solidfire_cluster_active_sessionsgaugeThe number of active iSCSI sessions communicating with the cluster.
solidfire_cluster_average_io_bytesgaugeAverage size in bytes of recent I/O to the cluster in the last 500 milliseconds.
solidfire_cluster_average_iopsgaugeThe average IOPS for the cluster since midnight Coordinated Universal Time (UTC)
solidfire_cluster_block_fullnessgaugeThe current computed level of block fullness of the cluster.
solidfire_cluster_client_queue_depthgaugeThe number of outstanding read and write operations to the cluster.
solidfire_cluster_recent_io_size_bytesgaugeThe average size of IOPS to all volumes in the cluster
solidfire_cluster_compression_factorgaugeThe cluster compression factor. compressionFactor = (uniqueBlocks * 4096) / (uniqueBlocksUsedSpace * 0.93)
solidfire_cluster_current_iopsgaugeThe average IOPS for all volumes in the cluster over the last 5 seconds
solidfire_cluster_de_duplication_factorgaugeThe cluster deDuplication factor. deDuplicationFactor = (nonZeroBlocks + snapshotNonZeroBlocks) / uniqueBlocks
solidfire_cluster_efficiency_factorgaugeThe cluster efficiency factor. efficiencyFactor = thinProvisioningFactor * deDuplicationFactor * compressionFactor
solidfire_cluster_fullnessgaugeReflects the highest level of fullness between 'blockFullness' and 'metadataFullness'.
solidfire_cluster_iopsgaugeCurrent actual IOPS for the entire cluster in the last 500 milliseconds.
solidfire_cluster_iops_totalcounterThe total number of I/O operations performed throughout the lifetime of the cluster.
solidfire_cluster_last_sample_read_bytesgaugeThe total number of bytes read from the cluster during the last sample period.
solidfire_cluster_last_sample_read_opsgaugeThe total number of read operations during the last sample period.
solidfire_cluster_last_sample_write_bytesgaugeThe total number of bytes written to the cluster during the last sample period.
solidfire_cluster_last_sample_write_opsgaugeThe total number of write operations during the last sample period.
solidfire_cluster_latency_secondsgaugeThe average time, in seconds, to complete operations to a cluster in the last 500 milliseconds.
solidfire_cluster_max_iopsgaugeThe estimated maximum IOPS capability of the current cluster
solidfire_cluster_max_metadata_over_provision_factorgaugeA value representative of the number of times metadata space can be over provisioned relative to the amount of space available.
solidfire_cluster_max_over_provisionable_space_bytesgaugeThe maximum amount of provisionable space. This is a computed value. You cannot create new volumes if the current provisioned space plus the new volume size would exceed this number. The value is calculated as follows: maxOverProvisionableSpace = maxProvisionedSpace * maxMetadataOverProvisionFactor
solidfire_cluster_max_provisioned_space_bytesgaugeThe total amount of provisionable space if all volumes are 100% filled (no thin provisioned metadata)
solidfire_cluster_max_used_metadata_space_bytesgaugeThe number of bytes on volume drives used to store metadata
solidfire_cluster_max_used_space_bytesgaugeThe total amount of space on all active block drives
solidfire_cluster_metadata_fullnessgaugeThe current computed level of metadata fullness of the cluster.
solidfire_cluster_non_zero_blocksgaugeThe total number of 4KiB blocks that contain data after the last garbage collection operation has completed
solidfire_cluster_normalized_iopsgaugeAverage number of IOPS for the entire cluster in the last 500 milliseconds.
solidfire_cluster_peak_active_sessionsgaugeThe peak number of iSCSI connections since midnight UTC
solidfire_cluster_peak_iopsgaugeThe highest value for currentIOPS since midnight UTC
solidfire_cluster_provisioned_space_bytesgaugeThe total amount of space provisioned in all volumes on the cluster
solidfire_cluster_read_bytes_totalcounterThe total cumulative bytes read from the cluster since the creation of the cluster.
solidfire_cluster_read_latency_secondsgaugeThe average time, in seconds, to complete read operations to the cluster in the last 500 milliseconds.
solidfire_cluster_read_latency_seconds_totalcounterThe total time spent performing read operations since the creation of the cluster.
solidfire_cluster_read_ops_totalcounterThe total cumulative read operations to the cluster since the creation of the cluster.
solidfire_cluster_sample_period_secondsgaugeThe length of the sample period, in seconds.
solidfire_cluster_services_expectedgaugeThe total number of expected services running on the cluster.
solidfire_cluster_services_runninggaugeThe number of services running on the cluster. If equal to the servicesTotal, this indicates that valid statistics were collected from all nodes.
solidfire_cluster_slice_reserve_used_threshold_percentagegaugeError condition. A system alert is triggered if the reserved slice utilization is greater than the sliceReserveUsedThresholdPct value returned.
solidfire_cluster_snapshot_non_zero_blocksgaugeThe total number of 4KiB blocks that contain data after the last garbage collection operation has completed
solidfire_cluster_stage2_aware_threshold_percentagegaugeAwareness condition. The value that is set for 'Stage 2' cluster threshold level.
solidfire_cluster_stage2_block_threshold_bytesgaugeNumber of bytes being used by the cluster at which a stage2 condition will exist.
solidfire_cluster_stage3_block_threshold_bytesgaugeNumber of bytes being used by the cluster at which a stage3 condition will exist.
solidfire_cluster_stage3_block_threshold_percentagegaugePercent value set for stage3. At this percent full, a warning is posted in the Alerts log.
solidfire_cluster_stage3_low_threshold_percentagegaugeError condition. The threshold at which a system alert is created due to low capacity on a cluster
solidfire_cluster_stage4_block_threshold_bytesgaugeNumber of bytes being used by the cluster at which a stage4 condition will exist
solidfire_cluster_stage4_critical_threshold_percentagegaugeError condition. The threshold at which a system alert is created to warn about critically low capacity on a cluster.
solidfire_cluster_stage5_block_threshold_bytesgaugeThe number of bytes being used by the cluster at which a stage5 condition will exist.
solidfire_cluster_thin_provisioning_factorgaugeThe cluster thin provisioning factor. thinProvisioningFactor = (nonZeroBlocks + zeroBlocks) / nonZeroBlocks
solidfire_cluster_throughput_utilizationgaugeThe cluster capacity being utilized. 0 - not utilized. 1 - 100% utilized.
solidfire_cluster_total_bytesgaugePhysical capacity of the cluster, measured in bytes.
solidfire_cluster_total_metadata_bytesgaugeTotal amount of space that can be used to store metadata
solidfire_cluster_unaligned_reads_totalcounterThe total cumulative unaligned read operations to a cluster since the creation of the cluster
solidfire_cluster_unaligned_writes_totalcounterThe total cumulative unaligned write operations to a cluster since the creation of the cluster.
solidfire_cluster_unique_blocksgaugeThe total number of blocks stored on the block drives The value includes replicated blocks
solidfire_cluster_unique_blocks_used_space_bytesgaugeThe total amount of data the uniqueBlocks take up on the block drives
solidfire_cluster_used_bytesgaugeNumber of bytes used on the cluster.
solidfire_cluster_used_metadata_bytesgaugeAmount of space used on volume drives to store metadata.
solidfire_cluster_used_metadata_space_bytesgaugeThe total number of bytes on volume drives used to store metadata
solidfire_cluster_used_metadata_space_in_snapshots_bytesgaugeThe number of bytes on volume drives used for storing unique data in snapshots. This number provides an estimate of how much metadata space would be regained by deleting all snapshots on the system
solidfire_cluster_used_space_bytesgaugeThe total amount of space used by all block drives in the system
solidfire_cluster_write_bytes_totalcounterThe total cumulative bytes written to the cluster since the creation of the cluster
solidfire_cluster_write_latency_secondsgaugeThe average time, in seconds, to complete write operations to a cluster in the last 500 milliseconds.
solidfire_cluster_write_latency_seconds_totalcounterThe total time spent performing write operations since the creation of the cluster.
solidfire_cluster_write_ops_totalcounterThe total cumulative write operations to the cluster since the creation of the cluster.
solidfire_cluster_zero_blocksgaugeThe total number of empty 4KiB blocks without data after the last round of garbage collection operation has completed
solidfire_drive_capacity_bytesgaugeThe drive capacity for each individual drives in the cluster's active nodes
solidfire_drive_statusgaugeThe drive status for each individual drives in the cluster's active nodes
solidfire_node_cpu_percentagegaugeCPU usage in percent.
solidfire_node_cpu_seconds_totalcounterCPU usage in seconds since last boot.
solidfire_node_infogaugeCluster node info
solidfire_node_interface_in_bytes_totalcounterBytes in on network interface.
solidfire_node_interface_out_bytes_totalcounterBytes out on network interface.
solidfire_node_interface_utilization_percentagegaugeNetwork interface utilization (in percent) of network interface.
solidfire_node_loadhistogramSystem load histogram
solidfire_node_read_latency_seconds_totalcounterThe total time spent performing read operations since the creation of the cluster.
solidfire_node_read_ops_totalcounterTotal read operations to a node.
solidfire_node_samplesgaugeNode stat sample count
solidfire_node_total_memory_bytesgaugeTotal node memory in bytes.
solidfire_node_used_memory_bytesgaugeTotal node memory used in bytes.
solidfire_node_write_latency_seconds_totalcounterThe total time spent performing write operations since the creation of the cluster.
solidfire_node_write_ops_totalcounterTotal write operations to a node.
solidfire_upgaugeWhether last scrape against Solidfire API was successful
solidfire_volume_actual_iopsgaugeThe current actual IOPS to the volume in the last 500 milliseconds
solidfire_volume_average_iop_size_bytesgaugeThe average size in bytes of recent I/O to the volume in the last 500 milliseconds
solidfire_volume_burst_iops_creditgaugeThe total number of IOP credits available to the user. When volumes are not using up to the configured maxIOPS, credits are accrued.
solidfire_volume_client_queue_depthgaugeThe number of outstanding read and write operations to the volume.
solidfire_volume_last_sample_read_bytesgaugeThe total number of bytes read from the volume during the last sample period.
solidfire_volume_last_sample_read_opsgaugeThe total number of read operations during the last sample period
solidfire_volume_last_sample_write_bytesgaugeThe total number of bytes written to the volume during the last sample period.
solidfire_volume_latency_secondsgaugeThe average time, in seconds, to complete operations to the volume in the last 500 milliseconds. A '0' (zero) value means there is no I/O to the volume.
solidfire_volume_non_zero_blocksgaugeThe total number of 4KiB blocks that contain data after the last garbage collection operation has completed.
solidfire_volume_qos_below_min_iops_percentagehistogramVolume QoS Below minimum IOPS percentage
solidfire_volume_qos_min_to_max_iops_percentagehistogramVolume QoS min to max IOPS percentage
solidfire_volume_qos_read_block_sizes_byteshistogramVolume QoS read block sizes
solidfire_volume_qos_target_utilization_percentagehistogramVolume QoS target utilization percentage
solidfire_volume_qos_throttle_percentagehistogramVolume QoS throttle percentage
solidfire_volume_qos_write_block_sizes_bytes_buckethistogramVolume QoS write block sizes
solidfire_volume_read_bytes_totalcounterThe total cumulative bytes read from the volume since the creation of the volume.
solidfire_volume_read_latency_secondsgaugeThe average time, in seconds, to complete read operations to the volume in the last 500 milliseconds.
solidfire_volume_read_latency_seconds_totalcounterThe total time spent performing read operations from the volume
solidfire_volume_read_ops_totalcounterThe total read operations to the volume since the creation of the volume.
solidfire_volume_size_bytesgaugeTotal provisioned capacity in bytes.
solidfire_volume_throttlegaugeA floating value between 0 and 1 that represents how much the system is throttling clients below their maxIOPS because of rereplication of data, transient errors, and snapshots taken.
solidfire_volume_unaligned_reads_totalcounterThe total cumulative unaligned read operations to a volume since the creation of the volume.
solidfire_volume_unaligned_writes_totalcounterThe total cumulative unaligned write operations to a volume since the creation of the volume.
solidfire_volume_utilizationgaugeA floating value that describes how much the client is using the volume. Value 0: The client is not using the volume. Value 1: The client is using their maximum. Value 1+: The client is using their burst.
solidfire_volume_write_bytes_totalcounterThe total cumulative bytes written to the volume since the creation of the volume.
solidfire_volume_write_latency_secondsgaugeThe average time, in seconds, to complete write operations to a volume in the last 500 milliseconds.
solidfire_volume_write_latency_seconds_totalcounterThe total time spent performing write operations to the volume
solidfire_volume_write_ops_last_samplegaugeThe total number of write operations during the last sample period.
solidfire_volume_write_ops_totalcounterThe total cumulative write operations to the volume since the creation of the volume.
solidfire_volume_zero_blocksgaugeThe total number of empty 4KiB blocks without data after the last round of garbage collection operation has completed.

⁠Usage

./solidfire_exporter --config config.yaml
Usage of solidfire-exporter:
  -c, --config string     Specify configuration filename. (default: config.yaml)

⁠Configuration

Yaml Configuration OptionCLI FlagEnvironment VariableDefaultExampleDescription
client.usernameN/ASOLIDFIRE_CLIENT_USERNAME""myUsernameUser with which to authenticate to the Solidfire API. NOTE: User must have administrator access to be able to query QOS data.
client.passwordN/ASOLIDFIRE_CLIENT_PASSWORD""myPasswordPassword with which to authenticate to the Solidfire API.
client.endpointN/ASOLIDFIRE_CLIENT_ENDPOINThttps://127.0.0.1/json-rpc/11.3⁠http://192.168.12.10/json-rpc/11.3⁠HTTP(s) endpoint of the Solidfire API.
client.insecureN/ASOLIDFIRE_CLIENT_INSECUREfalsetrueDisables TLS validation when calling Solidfire API. Useful for bypassing self-signed certificates in testing.
client.timeoutN/ASOLIDFIRE_CLIENT_TIMEOUT3075Timeout in seconds per call to the Solidfire API.
collect.timeoutN/ASOLIDFIRE_COLLECT_TIMEOUT6075Timeout in seconds for the complete metrics scrape (i.e. the timeout when calling /metrics)
listen.addressN/ASOLIDFIRE_LISTEN_ADDRESS0.0.0.0:9987192.168.4.2:13987IP address and port where the http server of this exporter should listen
N/A-cSOLIDFIRE_CONFIGconfig.yamlmySolidfireConfig.yamlPath to configuration file

There are two different options to configure the solidfire-exporter

  1. Using environment variables. These option takes precedence if config.yaml is also specified.
⁠Shell-Like Environments

Note that you MAY double-quote the values here:

export SOLIDFIRE_CLIENT_USERNAME="mySolidfireUsername"
export SOLIDFIRE_CLIENT_PASSWORD="mySolidfirePassword"
export SOLIDFIRE_LISTEN_ADDRESS="127.0.0.1:9987"
export SOLIDFIRE_CLIENT_ENDPOINT="https://10.10.10.10/json-rpc/11.3"
export SOLIDFIRE_CLIENT_INSECURE=true
export SOLIDFIRE_CLIENT_TIMEOUT=30
⁠Docker-Type Environments / SystemD EnvironmentFile Environment

Note that you MAY NOT have any double quotes in the values below!

SOLIDFIRE_CLIENT_USERNAME=mySolidfireUsername
SOLIDFIRE_CLIENT_PASSWORD=mySolidfirePassword
SOLIDFIRE_LISTEN_ADDRESS=0.0.0.0:9987
SOLIDFIRE_CLIENT_ENDPOINT=https://10.10.10.10/json-rpc/11.3
SOLIDFIRE_CLIENT_INSECURE=true
SOLIDFIRE_CLIENT_TIMEOUT=30
  1. Using a config.yaml file
listen:
  address: 127.0.0.1:9987
client:
  endpoint: https://192.168.1.2/json-rpc/11.3
  username: mySolidfireUsername
  password: mySolidfirePassword
  insecure: false
  timeout: 20
collect:
  timeout: 75

⁠Prometheus Configuration

NOTE: If you plan to use the official grafana dashboards, you must add the sfcluster label as shown below.

- job_name: solidfire_exporter
  honor_timestamps: true
  scrape_interval: 30s
  scrape_timeout: 20s
  metrics_path: /metrics
  scheme: http
  static_configs:
  - targets:
    - localhost:9987
    labels:
      app: solidfire-exporter
      group: prometheus
      sfcluster: sfcluster01

⁠Using Docker

Create an file with the environment variables set and pass it to docker run.

docker build . -t sf-exporter:latest
docker run --env-file=.env_file  --rm -p 9987:9987 sf-exporter:latest

⁠Grafana Dashboards

Official Dashboards can be found at:

The dashboard json files are generated by running make dashboards, and can be found in the ./dashboards⁠ folder of this repo.

⁠Contributing

We welcome contributions. Please fork the project on GitHub and open Pull Requests for any proposed changes.

⁠License

Code is licensed under the Apache License 2.0.

Tag summary

Content type

Image

Digest

Size

7.9 MB

Last updated

over 5 years ago

docker pull mjavier/solidfire-exporter