This exporter uses the swift-dispersion-report
and swift-recon
tools to
emit Prometheus metrics about the health of an OpenStack Swift cluster.
The exporter has been tested with OpenStack Swift Train (v2.23.0) and above. For older versions of Swift, you might want to look at swift-health-statsd.
The only required build dependency is Go:
make install
This will install the binary in /usr/bin/
.
swift-health-exporter
will find the executables for swift-recon
and
swift-dispersion-report
in the directories named by the $PATH
environment
variable.
To start collecting metrics, you simply need to:
swift-health-exporter
Metrics are exposed at port 9520
by default. This port has been
allocated
for swift-health-exporter
.
You can change the listening address and the port using the --web.listen-address
flag.
swift-health-exporter --web.listen-address 127.0.0.1:9520
If the swift-recon
and swift-dispersion-report
are not in the directories
named by the $PATH
then you must provide the respective paths to
these executables using the configuration options.
When a particular collector fails once, swift-health-exporter
will continue to report
the metric values for it from the previous collection. A collection is considered to have
failed and an error is only reported after the max failure attempts have been exceeded.
You can change the value for the max failures using the --collector.max-failures
flag.
Additionally, the following environment variables are recognized:
Variable | Required | Description |
---|---|---|
SWIFT_DISPERSION_REPORT_PATH |
yes, if executable not in $PATH and dispersion collector is enabled |
Path to the swift-dispersion-report executable. |
SWIFT_RECON_PATH |
yes, if executable not in $PATH and any recon.<name> collector is enabled |
Path to the swift-recon executable. |
SWIFT_CLUSTER_RAW_CAPACITY_BYTES |
no | This cluster capacity value (in bytes) will be used for swift_cluster_storage_capacity_bytes metric instead of calculating total capacity using swift-recon tool. |
DEBUG |
no | If this option is set to true then swift-health-exporter will also output debug logs. |
Collectors are enabled by providing a --collector.<name>
flag. Collectors
that are enabled by default can be disabled by providing a
--no-collector.<name>
flag.
Name | Enabled by default |
---|---|
dispersion |
no |
recon.diskusage |
no |
recon.driveaudit |
no |
recon.md5 |
yes |
recon.quarantined |
no |
recon.replication |
no |
recon.sharding |
no |
recon.unmounted |
no |
recon.updater_sweep_time |
no |
Optionally host timeout for recon collector and context timeout for both
collectors can be provided using the respective flags. Use --help
for usage
info and default timeout values.
Metric | Labels |
---|---|
swift_dispersion_container_copies_expected |
|
swift_dispersion_container_copies_found |
|
swift_dispersion_container_copies_missing |
|
swift_dispersion_container_overlapping |
|
swift_dispersion_object_copies_expected |
|
swift_dispersion_object_copies_found |
|
swift_dispersion_object_copies_missing |
|
swift_dispersion_object_overlapping |
|
swift_dispersion_task_exit_code |
query |
swift_dispersion_errors |
Metric | Labels |
---|---|
swift_recon_task_exit_code |
query |
Metric | Labels |
---|---|
swift_cluster_storage_capacity_bytes |
|
swift_cluster_storage_free_bytes |
|
swift_cluster_storage_used_bytes |
|
swift_cluster_storage_used_percent_by_disk |
storage_ip , disk |
swift_cluster_storage_used_percent |
Metric | Labels |
---|---|
swift_cluster_drives_audit_errors |
storage_ip |
Metric | Labels |
---|---|
swift_cluster_md5_all |
kind |
swift_cluster_md5_errors |
storage_ip , kind |
swift_cluster_md5_matched |
storage_ip , kind |
swift_cluster_md5_not_matched |
storage_ip , kind |
Metric | Labels |
---|---|
swift_cluster_accounts_quarantined |
storage_ip |
swift_cluster_containers_quarantined |
storage_ip |
swift_cluster_objects_quarantined |
storage_ip |
Metric | Labels |
---|---|
swift_cluster_accounts_replication_age |
storage_ip |
swift_cluster_accounts_replication_duration |
storage_ip |
swift_cluster_containers_replication_age |
storage_ip |
swift_cluster_containers_replication_duration |
storage_ip |
swift_cluster_objects_replication_age |
storage_ip |
swift_cluster_objects_replication_duration |
storage_ip |
Metric | Labels |
---|---|
swift_cluster_containers_sharding_audit_root_attempted |
storage_ip |
swift_cluster_containers_sharding_audit_root_failure |
storage_ip |
swift_cluster_containers_sharding_audit_root_success |
storage_ip |
swift_cluster_containers_sharding_audit_root_has_overlap |
storage_ip |
swift_cluster_containers_sharding_audit_root_num_overlap |
storage_ip |
swift_cluster_containers_sharding_audit_shard_attempted |
storage_ip |
swift_cluster_containers_sharding_audit_shard_failure |
storage_ip |
swift_cluster_containers_sharding_audit_shard_success |
storage_ip |
swift_cluster_containers_sharding_cleaved_attempted |
storage_ip |
swift_cluster_containers_sharding_cleaved_failure |
storage_ip |
swift_cluster_containers_sharding_cleaved_max_time |
storage_ip |
swift_cluster_containers_sharding_cleaved_min_time |
storage_ip |
swift_cluster_containers_sharding_cleaved_success |
storage_ip |
swift_cluster_containers_sharding_created_attempted |
storage_ip |
swift_cluster_containers_sharding_created_failure |
storage_ip |
swift_cluster_containers_sharding_created_success |
storage_ip |
swift_cluster_containers_sharding_scanned_attempted |
storage_ip |
swift_cluster_containers_sharding_scanned_failure |
storage_ip |
swift_cluster_containers_sharding_scanned_max_time |
storage_ip |
swift_cluster_containers_sharding_scanned_min_time |
storage_ip |
swift_cluster_containers_sharding_scanned_success |
storage_ip |
swift_cluster_containers_sharding_misplaced_attempted |
storage_ip |
swift_cluster_containers_sharding_misplaced_failure |
storage_ip |
swift_cluster_containers_sharding_misplaced_found |
storage_ip |
swift_cluster_containers_sharding_misplaced_placed |
storage_ip |
swift_cluster_containers_sharding_misplaced_success |
storage_ip |
swift_cluster_containers_sharding_misplaced_unplaced |
storage_ip |
swift_cluster_containers_sharding_visited_attempted |
storage_ip |
swift_cluster_containers_sharding_visited_completed |
storage_ip |
swift_cluster_containers_sharding_visited_failure |
storage_ip |
swift_cluster_containers_sharding_visited_skipped |
storage_ip |
swift_cluster_containers_sharding_visited_success |
storage_ip |
swift_cluster_containers_sharding_in_progress_active |
storage_ip, account, container |
swift_cluster_containers_sharding_in_progress_cleaved |
storage_ip, account, container |
swift_cluster_containers_sharding_in_progress_created |
storage_ip, account, container |
swift_cluster_containers_sharding_in_progress_error |
storage_ip, account, container |
swift_cluster_containers_sharding_in_progress_found |
storage_ip, account, container |
swift_cluster_containers_sharding_in_progress_object_count |
storage_ip, account, container |
swift_cluster_containers_sharding_candidates_found |
storage_ip |
swift_cluster_containers_sharding_candidates_object_count |
storage_ip, account, container |
Metric | Labels |
---|---|
swift_cluster_drives_unmounted |
storage_ip |
Metric | Labels |
---|---|
swift_cluster_containers_updater_sweep_time |
storage_ip |
swift_cluster_objects_updater_sweep_time |
storage_ip |