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
}
}
}
}