diff options
Diffstat (limited to '')
-rw-r--r-- | src/go/plugin/go.d/modules/scaleio/metrics.go | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/src/go/plugin/go.d/modules/scaleio/metrics.go b/src/go/plugin/go.d/modules/scaleio/metrics.go new file mode 100644 index 000000000..a5a9b9810 --- /dev/null +++ b/src/go/plugin/go.d/modules/scaleio/metrics.go @@ -0,0 +1,126 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +package scaleio + +type metrics struct { + System systemMetrics `stm:"system"` + Sdc map[string]sdcMetrics `stm:"sdc"` + StoragePool map[string]storagePoolMetrics `stm:"storage_pool"` +} + +type capacity struct { + MaxCapacity int64 `stm:"max_capacity"` + ThickInUse int64 `stm:"thick_in_use"` + ThinInUse int64 `stm:"thin_in_use"` + Snapshot int64 `stm:"snapshot"` + Spare int64 `stm:"spare"` + Decreased int64 `stm:"decreased"` // not in statistics, should be calculated + Unused int64 `stm:"unused"` + + InUse int64 `stm:"in_use"` + AvailableForVolumeAllocation int64 `stm:"available_for_volume_allocation"` + + Protected int64 `stm:"protected"` + InMaintenance int64 `stm:"in_maintenance"` + Degraded int64 `stm:"degraded"` + Failed int64 `stm:"failed"` + UnreachableUnused int64 `stm:"unreachable_unused"` +} + +type ( + systemMetrics struct { + Capacity systemCapacity `stm:"capacity"` + Workload systemWorkload `stm:""` + Rebalance systemRebalance `stm:"rebalance"` + Rebuild systemRebuild `stm:"rebuild"` + Components systemComponents `stm:"num_of"` + } + systemCapacity = capacity + systemComponents struct { + Devices int64 `stm:"devices"` + FaultSets int64 `stm:"fault_sets"` + ProtectionDomains int64 `stm:"protection_domains"` + RfcacheDevices int64 `stm:"rfcache_devices"` + Sdc int64 `stm:"sdc"` + Sds int64 `stm:"sds"` + Snapshots int64 `stm:"snapshots"` + StoragePools int64 `stm:"storage_pools"` + MappedToAllVolumes int64 `stm:"mapped_to_all_volumes"` + ThickBaseVolumes int64 `stm:"thick_base_volumes"` + ThinBaseVolumes int64 `stm:"thin_base_volumes"` + UnmappedVolumes int64 `stm:"unmapped_volumes"` + MappedVolumes int64 `stm:"mapped_volumes"` + Volumes int64 `stm:"volumes"` + VTrees int64 `stm:"vtrees"` + } + systemWorkload struct { + Total bwIOPS `stm:"total"` + Backend struct { + Total bwIOPS `stm:"total"` + Primary bwIOPS `stm:"primary"` + Secondary bwIOPS `stm:"secondary"` + } `stm:"backend"` + Frontend bwIOPS `stm:"frontend_user_data"` + } + systemRebalance struct { + TimeUntilFinish float64 `stm:"time_until_finish"` + bwIOPSPending `stm:""` + } + systemRebuild struct { + Total bwIOPSPending `stm:"total"` + Forward bwIOPSPending `stm:"forward"` + Backward bwIOPSPending `stm:"backward"` + Normal bwIOPSPending `stm:"normal"` + } +) + +type ( + sdcMetrics struct { + bwIOPS `stm:""` + MappedVolumes int64 `stm:"num_of_mapped_volumes"` + MDMConnectionState bool `stm:"mdm_connection_state"` + } +) + +type ( + storagePoolMetrics struct { + Capacity storagePoolCapacity `stm:"capacity"` + Components struct { + Devices int64 `stm:"devices"` + Volumes int64 `stm:"volumes"` + Vtrees int64 `stm:"vtrees"` + Snapshots int64 `stm:"snapshots"` + } `stm:"num_of"` + } + storagePoolCapacity struct { + capacity `stm:""` + Utilization float64 `stm:"utilization,100,1"` // TODO: only StoragePool (sparePercentage) + AlertThreshold struct { + Critical int64 `stm:"critical_threshold"` + High int64 `stm:"high_threshold"` + } `stm:"alert"` + } +) + +type ( + readWrite struct { + Read float64 `stm:"read,1000,1"` + Write float64 `stm:"write,1000,1"` + ReadWrite float64 `stm:"read_write,1000,1"` + } + bwIOPS struct { + BW readWrite `stm:"bandwidth"` + IOPS readWrite `stm:"iops"` + IOSize readWrite `stm:"io_size"` + } + bwIOPSPending struct { + bwIOPS `stm:""` + Pending int64 `stm:"pending_capacity_in_Kb"` + } +) + +func (rw *readWrite) set(r, w float64) { + rw.Read = r + rw.Write = w + rw.ReadWrite = r + w +} |