Gestão de custos eficiente e FinOps se tornaram uma das principais prioridades para clientes de nuvem pública em todos os setores. Um dos principais motivos para estouros de orçamento de nuvem é a falta de visibilidade no ciclo de vida de um volume, o que leva à presença de recursos órfãos e não utilizados. Esses recursos negligenciados são contribuídos para uma conta de nuvem da empresa, e os usuários nem esperam que estejam pagando por eles.
Depois da nossa postagem no blog Reduza sua conta da AWS limpando snapshots de disco órfãos e não utilizados temos muitas perguntas sobre como isso pode ser aplicado às metas de otimização de custos da nuvem para outras nuvens públicas, como Microsoft Azure e Alibaba Cloud?
Vamos explorar como podemos realizar operações de limpeza semelhantes neles.
Limpando instantâneos do MS Azure
O processo de localização de snapshots não utilizados no Azure pode ser realizado aplicando os seguintes critérios à lista de snapshots:
- o instantâneo é mais antigo que uma determinada data
- o disco de origem do qual o instantâneo foi criado não existe
Vamos usar o Azure Cloud Shell no modo Bash para encontrar esses instantâneos.
Fazendo uma lista de instantâneos antigos (você pode definir um limite de data de acordo com suas necessidades):
OLD_SNAPSHOTS=$(az snapshot list --query "[?timeCreated <= '2021-01-01T00:00:00.000000+00:00'].{DiskId:creationData.sourceResourceId,Id:id}" --output table | tail -n +3)
Listagem de discos:
USED_DISKS=$(lista de discos az --query "[].{Id:id}" --output table | tail -n +3)
Filtrando instantâneos que ainda possuem disco de origem:
UNUSED_SNAPSHOTS=() IS_UNUSED_SNAPSHOT=false IS_DISK_ID=true para RESOURCE_ID em $OLD_SNAPSHOTS do if $IS_DISK_ID then if [[ ! "$USED_DISKS[*]" =~ $RESOURCE_ID ]] then IS_UNUSED_SNAPSHOT=true fi IS_DISK_ID=false else if $IS_UNUSED_SNAPSHOT then UNUSED_SNAPSHOTS+=($RESOURCE_ID) fi IS_UNUSED_SNAPSHOT=false IS_DISK_ID=true fi done echo "Detectados os seguintes snapshots não utilizados: $UNUSED_SNAPSHOTS"
Depois de listá-los e verificar que você realmente não precisa deles, você pode limpá-los facilmente com um único comando:
az snapshot delete --ids "${UNUSED_SNAPSHOTS[@]}"
Otimização de custo de nuvem gratuita. Vida
Limpando instantâneos no Alibaba Cloud
No Alibaba Cloud, as propriedades do Snapshot têm mais um valor útil que nos permite colocá-lo como critério para filtragem – campo “Uso” que fica vazio se este Snapshot não for usado como fonte para algum disco ou imagem.
Dito isso, veja como você pode detectar Snapshots não utilizados usando o Alibaba Cloud Shell.
Fazendo uma lista de instantâneos antigos (você pode definir um limite de data de acordo com suas necessidades):
OLD_SNAPSHOTS=$(aliyun ecs DescribeSnapshots --pager --Uso nenhum --Filter.2.Key CreationEndTime --Filter.2.Value 2021-01-01T00:00Z --output cols=SnapshotId,SourceDiskId rows=Snapshots.Snapshot[] | tail -n +3 | sed 's/ | /,/g')
Listagem de discos:
USED_DISKS=$(aliyun ecs DescribeDisks --pager --output cols=Disks.Disk[].DiskId | tail -n +3 | sed 's/[//' | sed 's/]//')
Filtrando instantâneos que ainda possuem disco de origem:
para SNAP_INFO em $OLD_SNAPSHOTS faça SNAPSHOTID=$(cut -d, -f1 <<< $SNAP_INFO) DISKID=$(cut -d, -f2 <<< $SNAP_INFO) se [[ ! "$USED_DISKS[*]" =~ $DISKID ]] então ecoe "Snapshot detectado - $SNAPSHOTID" # aliyun ecs DeleteSnapshot --SnapshotId=$SNAPSHOTID fi feito
Observe a linha comentada no último snippet. Você precisará descomentá-la assim que verificar a lista de snapshots não utilizados detectados e estiver pronto para limpá-los
As maneiras de identificar e limpar snapshots órfãos descritas acima ajudarão sua empresa a manter os custos do MS Azure e do Alibaba Cloud sob controle e a implementar as melhores práticas da metodologia FinOps, fornecendo à sua equipe de TI mais visibilidade dos recursos da nuvem.
Encontre práticas recomendadas + dicas úteis sobre como marcar recursos de nuvem no MS Azure → https://hystax.com/ms-azure-tagging-best-practices.