Hoeveel kosten mijn applicaties in de cloud? Tags to the rescue!

In de blog post Maak de kosten van cloudgebruik inzichtelijk voor gebruikers hebben we gezien dat je (onder andere bij Azure) gedetailleerd inzicht in je cloudkosten kunt krijgen. Dat gaat het eenvoudigst als je een landing zone hebt met een structuur die past bij de manier waarop je kosten uitgesplitst wilt hebben. Maar dat is niet altijd het geval, bv. doordat je twee omgevingen hebt samengevoegd of omdat je cloud resources zijn gegroepeerd naar wie ze beheert en niet naar eigenaar of gebruiker.

In gevallen waar de structuur van de landing zone niet voldoet voor interne kostenrapportage of doorbelasting, kun je met tags gaan werken. In deze blog post wat meer informatie over het werken met tags voor dit doel.

Wat zijn tags en waarvoor dienen ze?

In de cloud kun je (bijna) alle resources labelen met meta-data. De meta-data bestaan uit paren van een sleutel en een waarde (key-value paren). Ieder paar is een tag.

Resource tags kunnen worden gebruikt voor verschillende doelen, van het vastleggen van de eigenaar ervan, classificatie van de gegevens die ermee worden verwerkt, voor welke omgeving de resource is (bv. productie/acceptatie/test), (intern) service level, en meer.

Hier is een voorbeeld van de tags van een virtuele machine in AWS:

Screenshot van de AWS console die de tags laat zien van een EC2 VM.
Tags van een EC2 instance in de AWS console

Hier zien we vijf tag keys met bij elke key een waarde. De tags geven informatie over de VM. Door deze informatie in tags op te nemen, is er een verminderde noodzaak om deze in de machinenaam te coderen. Je kunt resources eenvoudig opzoeken op tag key en waarde.

Sommige cloudproviders genereren automatisch een of meerdere tags wanneer resources worden aangemaakt. Deze tags kunnen niet door de gebruiker worden veranderd. Bij AWS dit te herkennen doordat de tag key begint met “aws:“, bijvoorbeeld “aws:createdBy = Root:012345678901”. Niet alle cloudproviders maken dit onderscheid in de tag keys.

Tags voor kosteninzicht

De kostenbeheertools van cloudproviders hebben de mogelijkheid om filters te maken op basis van resource tags. Als voorbeeld heb ik in Azure mijn resources getagd met het project waar ze bij horen. In de Azure Cost Management portal kan ik filteren op tag “project = costmgmt” en dan zie ik hoeveel kosten ik maak:

Screenshot van Azure cost management portal die een staafdiagram laat zien met de verbruikskosten gefilterd op tag "project = costmgmt" en gegroepeerd naar resource group.
Azure kosten gefilterd op tag "project = cosmgmt" en gegroepeerd naar resource group

De twee kleuren blauw geven aan in welke resource groups de kosten zijn gemaakt.

Bij AWS moet je nog een extra stap uitvoeren voordat je je kosten naar tag kunt filteren en groeperen. In je AWS management account moet je in de billing console expliciet de tag keys markeren die je hiervoor wilt gebruiken. In AWS termen: je activeert de tags als cost allocation tags.

Als je met kostenbeheer tools van derde partijen werkt, dan kun je ook gebruik maken van tags om je kosten te analyseren. De gedetailleerde verbruiksgegevens bevatten ook de tags van resources. De meeste tools voor kostenbeheer lezen deze tags en laten je er op filteren.

Voor de SURFcumulus gebruikers met een AWS account: deze functionaliteit is beschikbaar in CloudCheckr. Hier is een voorbeeld waarin ik voor een aantal AWS accounts de kosten heb gefilterd op de tag key AWSMarketplaceProductName.

Schermafbeelding van CloudCheckr die AWS kosten laat zien gefilterd op tag key "AWSMarketPlaceProductName".
AWS kosten in CloudCheckr gefilterd op tag key AWSMarketPlaceProductName

Tagging strategie en tag policies

Het is vrijwel onmogelijk om alle tags met de hand te beheren. Je bent afhankelijk van de interne cloudbeheerders en het is onvermijdelijk dat zij fouten maken in tagging als ze het met de hand moeten doen. Je moet ze ermee helpen.

Stap 1 daarin is een tagging strategie uitwerken. Daarin leg je vast welke tag keys gebruikt gaan worden en waarvoor ze dienen. Ruwweg zijn er twee typen doelen: business doelen (bv. kosteninzicht) en operationele doelen (bv. security classificatie of service level).

Daarna moet je zorgen dat de tags consistent worden toegepast. Dat kun je doen door tag policies te maken. Tag policies helpen hierbij. Bij Azure gebruik je Azure Policy initiatives om te zorgen dat tags consistent worden toegepast. Met een Azure Policy kun je bv. eisen dat alle resources groups een of meer tag keys hebben wanneer ze worden aangemaakt. Een andere mogelijkheid is om met Azure Policy te zorgen dat resources automatisch worden getagd met een tag van de resource group waarin ze zijn aangemaakt.

Bij AWS is ook voor tag policies een aparte stap nodig. Tag policies in AWS worden namelijk toegepast in het management account. Je hebt een AWS Organization nodig met alle Organization features. Beheerders in het management kunnen dan de tag policies centraal maken en beheren. De tag policies uit het management account worden toegepast in alle onderliggende member accounts.

Afsluitende tip en vervolg

Tag keys en waarden zijn niet versleuteld en zijn breed zichtbaar, bv. in gedetailleerde verbruiksgegevens en voor gebruikers met weinig rechten. Neem daarom geen (privacy-) gevoelige informatie op in tags.

In deze blog en de vorige zijn we ingegaan op het krijgen van inzicht in de kosten van cloudgebruik. Dit inzicht is nodig om te bepalen of je kosten in lijn zijn met prognoses en budgetten, en om goed te kunnen bepalen waar je kosten kunt besparen. Daarop gaan we in een volgende blog in.

Auteur

Reacties

Dit artikel heeft 0 reacties