firehol/netdata

View on GitHub
src/go/plugin/go.d/modules/scaleio/metrics.go

Summary

Maintainability
A
0 mins
Test Coverage
// 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
}