1

Je cherche à tirer les métriques cloudwatch pour l'utilisation de volume/espace disque et j'ai pu le faire avec ci-dessous aws powershell script en plus de cela, je suis aussi en train de comprendre un moyen d'associer la taille du volume/disque dans Windows et Linux pas en mesure de trouver un moyen.La taille dans le code ne fournit pas vraiment la bonne taille car une instance peut avoir plus d'un volume attaché.AWS Volume/utilisation de l'espace disque pour linux et windows dans linux

Des suggestions?

function GetEC2InstanceName ($instanceId) 
{ 

$tags = (Get-EC2Instance).RunningInstance | Where-Object {$_.instanceId -eq $instanceId} |select Tag 
$tagName = $tags.Tag | Where-Object {$_.Key -eq "Name"} | select -ExpandProperty Value 

return $tagName 

} 

$volumesByInstance = @{} 
$mountByInstance = @{} 

Get-CWMetricList -Namespace 'System/Linux' -MetricName 'DiskSpaceUtilization' | % { 
    $instanceId = ($_.Dimensions | Where-Object {$_.Name -eq 'InstanceId'} | Select -ExpandProperty Value) 
    $mountpath = ($_.Dimensions | Where-Object {$_.Name -eq 'MountPath'} | Select -ExpandProperty Value) 
    $volume = ($_.Dimensions | Where-Object {$_.Name -eq 'Filesystem'} | Select -ExpandProperty Value) 
    if (-not $volumesByInstance.ContainsKey($volume)) { 
     $volumesByInstance[$instanceId] = @($volume) 
     $mountByInstance[$instanceId] = @($mountpath) 

    } else { 
     $volumesByInstance[$instanceId] += $volume 
     $mountByInstance[$instanceId] += $mountpath 

     } 
    } 


$endDate = Get-Date 
$startDate = $endDate.AddDays(-2) 
$period = [TimeSpan]::FromDays(1).TotalSeconds 

$linux = @() 

$volumesByInstance.Keys | % { 
    $instanceId = $_ 
    $mountByInstance[$instanceId] | % { 
    $mountpath = $_ 
    $volumesByInstance[$instanceId] | % { 
     $filesystem = $_ 
    (Get-CWMetricStatistics ` 
      -Namespace 'System/Linux' -MetricName 'DiskSpaceUtilization' ` 
      -Dimension @{name="InstanceId"; value="$instanceId"}, @{name="Filesystem"; value="$filesystem"}, @{name="MountPath"; value="$mountpath"} ` 
      -StartTime $startDate -EndTime $endDate -Period $period ` 
      -Statistics ('Maximum', 'Minimum')).Datapoints | % { 
      $InstanceName = GetEC2InstanceName $instanceId 
      $size = (Get-EC2Volume -filter @( 
    @{ 
    name='attachment.instance-id' 
    values=$instanceId 
    } 
    )) | Select -ExpandProperty Size 
      $linuxObject = New-Object -TypeName PSObject -Prop (@{ 
       'InstanceId'=$instanceId; 
       'Filesystem'=$filesystem; 
       'MountPath'=$mountpath; 
       'Max Utilization (%)'=$_.Maximum; 
       'Min Utilization (%)'=$_.Minimum; 
       'Name'=$InstanceName; 
       'Size'=$size; 
       'Timestamp'=$_.Timestamp 
      }) 

      $linux += $linuxObject 
     } 
    } 
} 

}

Répondre

0

Essayez:

$diskC = Get-WmiObject Win32_LogicalDisk -ComputerName remotecomputer -Filter "DeviceID='C:'" | 
Select-Object Size 

$diskC.Size