github.com/netdata/go.d.plugin@v0.58.1/modules/scaleio/metrics.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package scaleio
     4  
     5  type metrics struct {
     6  	System      systemMetrics                 `stm:"system"`
     7  	Sdc         map[string]sdcMetrics         `stm:"sdc"`
     8  	StoragePool map[string]storagePoolMetrics `stm:"storage_pool"`
     9  }
    10  
    11  type capacity struct {
    12  	MaxCapacity int64 `stm:"max_capacity"`
    13  	ThickInUse  int64 `stm:"thick_in_use"`
    14  	ThinInUse   int64 `stm:"thin_in_use"`
    15  	Snapshot    int64 `stm:"snapshot"`
    16  	Spare       int64 `stm:"spare"`
    17  	Decreased   int64 `stm:"decreased"` // not in statistics, should be calculated
    18  	Unused      int64 `stm:"unused"`
    19  
    20  	InUse                        int64 `stm:"in_use"`
    21  	AvailableForVolumeAllocation int64 `stm:"available_for_volume_allocation"`
    22  
    23  	Protected         int64 `stm:"protected"`
    24  	InMaintenance     int64 `stm:"in_maintenance"`
    25  	Degraded          int64 `stm:"degraded"`
    26  	Failed            int64 `stm:"failed"`
    27  	UnreachableUnused int64 `stm:"unreachable_unused"`
    28  }
    29  
    30  type (
    31  	systemMetrics struct {
    32  		Capacity   systemCapacity   `stm:"capacity"`
    33  		Workload   systemWorkload   `stm:""`
    34  		Rebalance  systemRebalance  `stm:"rebalance"`
    35  		Rebuild    systemRebuild    `stm:"rebuild"`
    36  		Components systemComponents `stm:"num_of"`
    37  	}
    38  	systemCapacity   = capacity
    39  	systemComponents struct {
    40  		Devices            int64 `stm:"devices"`
    41  		FaultSets          int64 `stm:"fault_sets"`
    42  		ProtectionDomains  int64 `stm:"protection_domains"`
    43  		RfcacheDevices     int64 `stm:"rfcache_devices"`
    44  		Sdc                int64 `stm:"sdc"`
    45  		Sds                int64 `stm:"sds"`
    46  		Snapshots          int64 `stm:"snapshots"`
    47  		StoragePools       int64 `stm:"storage_pools"`
    48  		MappedToAllVolumes int64 `stm:"mapped_to_all_volumes"`
    49  		ThickBaseVolumes   int64 `stm:"thick_base_volumes"`
    50  		ThinBaseVolumes    int64 `stm:"thin_base_volumes"`
    51  		UnmappedVolumes    int64 `stm:"unmapped_volumes"`
    52  		MappedVolumes      int64 `stm:"mapped_volumes"`
    53  		Volumes            int64 `stm:"volumes"`
    54  		VTrees             int64 `stm:"vtrees"`
    55  	}
    56  	systemWorkload struct {
    57  		Total   bwIOPS `stm:"total"`
    58  		Backend struct {
    59  			Total     bwIOPS `stm:"total"`
    60  			Primary   bwIOPS `stm:"primary"`
    61  			Secondary bwIOPS `stm:"secondary"`
    62  		} `stm:"backend"`
    63  		Frontend bwIOPS `stm:"frontend_user_data"`
    64  	}
    65  	systemRebalance struct {
    66  		TimeUntilFinish float64 `stm:"time_until_finish"`
    67  		bwIOPSPending   `stm:""`
    68  	}
    69  	systemRebuild struct {
    70  		Total    bwIOPSPending `stm:"total"`
    71  		Forward  bwIOPSPending `stm:"forward"`
    72  		Backward bwIOPSPending `stm:"backward"`
    73  		Normal   bwIOPSPending `stm:"normal"`
    74  	}
    75  )
    76  
    77  type (
    78  	sdcMetrics struct {
    79  		bwIOPS             `stm:""`
    80  		MappedVolumes      int64 `stm:"num_of_mapped_volumes"`
    81  		MDMConnectionState bool  `stm:"mdm_connection_state"`
    82  	}
    83  )
    84  
    85  type (
    86  	storagePoolMetrics struct {
    87  		Capacity   storagePoolCapacity `stm:"capacity"`
    88  		Components struct {
    89  			Devices   int64 `stm:"devices"`
    90  			Volumes   int64 `stm:"volumes"`
    91  			Vtrees    int64 `stm:"vtrees"`
    92  			Snapshots int64 `stm:"snapshots"`
    93  		} `stm:"num_of"`
    94  	}
    95  	storagePoolCapacity struct {
    96  		capacity       `stm:""`
    97  		Utilization    float64 `stm:"utilization,100,1"` // TODO: only StoragePool (sparePercentage)
    98  		AlertThreshold struct {
    99  			Critical int64 `stm:"critical_threshold"`
   100  			High     int64 `stm:"high_threshold"`
   101  		} `stm:"alert"`
   102  	}
   103  )
   104  
   105  type (
   106  	readWrite struct {
   107  		Read      float64 `stm:"read,1000,1"`
   108  		Write     float64 `stm:"write,1000,1"`
   109  		ReadWrite float64 `stm:"read_write,1000,1"`
   110  	}
   111  	bwIOPS struct {
   112  		BW     readWrite `stm:"bandwidth"`
   113  		IOPS   readWrite `stm:"iops"`
   114  		IOSize readWrite `stm:"io_size"`
   115  	}
   116  	bwIOPSPending struct {
   117  		bwIOPS  `stm:""`
   118  		Pending int64 `stm:"pending_capacity_in_Kb"`
   119  	}
   120  )
   121  
   122  func (rw *readWrite) set(r, w float64) {
   123  	rw.Read = r
   124  	rw.Write = w
   125  	rw.ReadWrite = r + w
   126  }