Voorjaarsschoonmaak: ruim ongebruikte cloud resources op en bespaar geld

Inleiding

We hebben het eerder al benoemd: als je clouddiensten gebruikt, dan is het niet makkelijk om te weten welke cloud resources gebruikt worden voor welk doel. Daar kun je wat aan doen. Als je weet welke resources bij welke applicatie of bij welk project horen, dan kun je met de eigenaar kijken of er kosten bespaard kunnen worden.

Als er in je organisatie geen gestructureerde aanpak is voor lifecycle management van IT-componenten (software of hardware), dan is het denkbaar, of zelfs waarschijnlijk, dat er cloud resources zijn die helemaal niet meer nodig zijn. Het komt niet zelden voor dat resources die zijn aangemaakt om iets te testen niet worden opgeruimd. Of dat na een grote update van een applicatie oude VMs, disk volumes, of database exports even worden bewaard om een rollback uit te kunnen voeren mocht dat nodig zijn. Maar worden die backup kopieën wel opgeruimd?

In deze blog kijken we naar het opruimen van ongebruikte en onnodige cloud resources. We gaan aan de digitale voorjaarsschoonmaak!

Hoe weet je welke dingen niet meer nodig zijn?

Voordat je dingen kunt gaan weggooien, moet je weten wat er weggegooid mag worden. Hoe weet je welke cloud resources niet meer nodig zijn?

Als je van nul begint, dan is er eigenlijk maar één optie: in gesprek gaan met de eigenaren van de resources: zij zijn degenen die moeten weten of iets nog nodig is of niet. Daarom is het zo belangrijk dat je de eigenaren van je applicaties/projecten kent.

Wat doe ik als eigenaar van een applicatie?

Ja, lekker dan. Nu hebben we het probleem verschoven van het cloud- of platformteam, naar de eigenaren van applicaties. Wat kan een applicatie-eigenaar doen als zij van nul begint?

De applicatie-eigenaar moet aan de slag met de teamleden die rechten hebben om resources te beheren in de cloud. Samen moeten ze uitzoeken wat er weggegooid kan worden en wat er bewaard moet blijven.

Er zijn wat hulpmiddelen om die klus te klaren. Hier zijn een paar voorbeelden voor de cloudproviders die het meest worden gebruikt bij SURFcumulus.

Azure

De Azure Resource Graph is een goede plek om te zoeken naar Azure resources die niet actief worden gebruikt, en die mogelijk kunnen worden weggegooid. Queries op de Azure Resource Graph kunnen worden uitgevoerd vanuit de Azure Portal, de Azure CLI, Azure PowerShell, of met de Azure REST API. Hier zijn een paar voorbeelden:

Ongebruikte IP-adressen

Met de Azure Resource Graph kun je eenvoudig de publieke IP-adressen opzoeken die niet zijn gekoppeld aan een andere resource (bv. VM, NAT gateway, load balancer, etc.). Zo ziet de query eruit:

Resources
| where type == "microsoft.network/publicipaddresses"
| where properties.ipConfiguration == ""
    and properties.natGateway == ""
    and properties.publicIPPrefix == ""
| extend Details = pack_all()
| project subscriptionId, 
    Resource=id, 
    resourceGroup, 
    location,
    Type=tostring(sku.name), 
    AllocationMethod=tostring(properties.publicIPAllocationMethod),
    tags,
    Details

Disk volumes die niet zijn gekoppeld aan VMs

Disk volumes die niet aan VMs zijn gekoppeld, worden niet actief gebruikt. Daarmee zijn het kandidaten om opgeruimd te worden.

Je kunt ongekoppelde disk volumes opzoeken in de Azure resource graph:

Resources
| where type has "microsoft.compute/disks"
| extend diskState = tostring(properties.diskState)
| where (managedBy == "") or (diskState == 'Unattached')
| extend Details = pack_all()
| project subscriptionId, 
    Resource=id, 
    resourceGroup, 
    location, 
    diskType=sku.name, 
    diskSizeGB=properties.diskSizeGB, 
    timeCreated=properties.timeCreated, 
    tags, 
    Details

Dit is geen optimale query om ongebruikte disken te vinden. De query houdt geen rekening met disken die een actieve Shared Access Signature hebben (wat je waarschijnlijk niet moet doen, Microsoft raadt aan om Entra ID met managed identities te gebruiken), disken die gebruikt worden voor Azure Site Recovery, of disken die in AKS PVCs worden gebruikt. Deze uitzonderingen zijn toe te voegen aan de query met extra where-clauses.

Voor de geïnteresseerden is hier de volledige query:

Resources
| where type has "microsoft.compute/disks"
| extend diskState = tostring(properties.diskState)
| where (managedBy == "" and diskState != 'ActiveSAS') or
    (diskState == 'Unattached' and diskState != 'ActiveSAS')
| where not(name endswith "-ASRReplica" or 
    name startswith "ms-asr-" or 
    name startswith "asrseeddisk-")
| where (tags !contains "kubernetes.io-created-for-pvc") and
    tags !contains "ASR-ReplicaDisk" and 
    tags !contains "asrseeddisk" and 
    tags !contains "RSVaultBackup"
| extend Details = pack_all()
| project subscriptionId, 
    Resource=id, 
    resourceGroup, 
    location, 
    diskType=sku.name, 
    diskSizeGB=properties.diskSizeGB, 
    timeCreated=properties.timeCreated, 
    tags, 
    Details

Deze en veel andere nuttige queries voor het opsporen van ongebruikte resources in Azure zijn opgenomen in het Azure Orphaned Resources Workbook, een open source project gestart door Dolev Shor.

Daarnaast is het een goed idee om eens per kwartaal je Azure Advisor pagina te raadplegen. Hierin staan adviezen op verschillende terreinen, bv. over het verbeteren van je security posture, en over mogelijke kostenbesparingen. Op basis van verbruiksgegevens staan er adviezen om VMs kleiner, of er een reservering voor aan te schaffen. Ook kun je hier resources aantreffen waarvan de Azure Advisor zegt: "Kijk hier eens naar, deze worden volgens ons niet meer gebruikt".

AWS

AWS gebruikers kunnen de AWS Compute Optimizer gebruiken om resources op te sporen die niet actief gebruikt worden. Dit werkt voor een beperkt aantal resource typen (EC2 instances, EBS volumes, ECS Fargate services, NAT gateway en Aurora & RDS databases). Standaard kijkt Compute Optimizer twee weken terug om tot dagelijkse aanbevelingen te komen. Hier zijn geen kosten aan verbonden. Als je een langere terugkijkperiode wilt gebruiken, dan kan dat, maar is het niet meer gratis.

Een tweede manier om grip te krijgen op ongebruikte resources in AWS is met AWS Trusted Advisor checks voor kostenoptimalisatie. Die gaan verder dan het opsporen van ongebruikte resources. Er zijn bv. checks voor het opsporen van overprovisioning. Let wel: voor dit gebruik van Trusted Advisor is minimaal AWS Business support nodig op je AWS account(s).

Geïnspireerd geraakt, of nog vragen?

Ben je al een digitale emmer en een digitale spons aan het pakken voor je virtuele cloud voorjaarsschoonmaak? Mooi. Als je tijdens het opruimen tegen zaken oploopt, en je hebt nu al een vraag. Neem dan contact met het surfcumulus-team op. We helpen je graag. Je bereikt ons via surfcumulus@surf.nl

We wensen je een schoon voorjaar!

Auteur

Reacties

Dit artikel heeft 0 reacties