function __checkLowEBSLowUtilization()

in services/ec2/drivers/ec2_ebs.class.php [90:170]


    function __checkLowEBSLowUtilization(){
        global $CW;
        
        $verifyDay = 7;
        $block = $this->block;
        
        $createTime = $block['CreateTime'];
        $createDay = (strtotime('now') - strtotime($createTime)) / (60 * 60 * 24);
        
        if($createDay < $verifyDay){
            return;
        }
        
        $cwClient = $CW->getClient();
        $blockId = $this->block['VolumeId'];
        
        $dimensions = [
            [
                'Name' => 'VolumeId',
                'Value'=> $blockId
            ]
        ];
        
        $results = $cwClient->getMetricStatistics([
            'Dimensions' => $dimensions,
            'Namespace' => 'AWS/EBS',
            'MetricName' => 'VolumeReadOps',
            'StartTime' => strtotime('-'.$verifyDay.' days'),
            'EndTime' => strtotime('now'),
            'Period' => 24 * 60 * 60,
            'Statistics' => ['Average'],
            # 'Unit' => 'None'
        ]);
        
        
        $cnt = 0;
        $readDatapoints = $results['Datapoints'];
        if(sizeof($readDatapoints) < $verifyDay){
            $cnt = $verifyDay - sizeof($readDatapoints);
        }
        
        foreach($readDatapoints as $data){
            if($data['Average'] < 1){
                $cnt++;
            }
        }
        
        if($cnt < $verifyDay){
            return;
        }
        
        $cnt = 0;
        $results = $cwClient->getMetricStatistics([
            'Dimensions' => $dimensions,
            'Namespace' => 'AWS/EBS',
            'MetricName' => 'VolumeWriteOps',
            'StartTime' => strtotime('-'.$verifyDay.' days'),
            'EndTime' => strtotime('now'),
            'Period' => 24 * 60 * 60,
            'Statistics' => ['Average'],
            # 'Unit' => 'None'
        ]);
        
        $writeDatapoints = $results['Datapoints'];
        if(sizeof($writeDatapoints) < $verifyDay){
            $cnt = $verifyDay - sizeof($writeDatapoints);
        }
        
        foreach($writeDatapoints as $data){
            if($data['Average'] < 1){
                $cnt++;
            }
        }
        
        if($cnt < $verifyDay){
            return;
        }
        
        $this->results['EBSLowUtilization'] = [-1, ''];
        return;
    }