Utilisation de l’API de Billing d’Azure – Part 1 : ResourceUsage

Au cours des billets suivants, je vais vous proposer de travailler sur les APIs de billings qui permettent d’avoir une vue d’ensemble de votre consommation tarifaire au niveau de votre environnement Azure.

Une introduction des possibilités est disponible à l’adresse suivante :

https://azure.microsoft.com/fr-fr/documentation/articles/billing-usage-rate-card-overview/

Il y a 2 API à connaitre :

  • Resource Usage Api qui permet de  :
    • connaitre l’utilisation des services azure (à l’heure ou au jour)
    • d’avoir les informations de métadonnées des services (Tag etc…)
  • Resource RateCard API qui permet de :
    • connaitre de connaitre les services disponibles sur l’offre azure choisit
    • connaitre l’estimation tarifaire d’une unité de service dans la devise choisi.

Ces 2 APIs sont sécurisés via le RBAC, et il est nécessaire d’avoir à minima un accès Lecteur à la souscription pour être en mesure d’utiliser ses APIs. Une application sur l’Azure Active Directory de la souscription sera alors crée pour gérer les authentifications via le framework ADAL.

Vous pouvez retrouver les exemples de code fournit par Microsoft sur ce gitHub. Ces exemples montre l’utilisation de chacune des APIs de manière indépendantes. Je vous proposerais au fur & à mesure de l’explication de faire la jonction entre les 2 APIs.

https://github.com/Azure/BillingCodeSamples

Intéressons au sample concernant l’usage : https://github.com/Azure-Samples/billing-dotnet-usage-api

Après avoir configuré votre Azure Active Directory de votre souscription pour lui rajouter une application et définir votre application native, vous pouvez ,à l’aide d’un compte ayant à minima les droits Reader sur la souscription, récupérer les informations d’usage.

Le sample propose une authentification interactive au démarrage de l’application console à l’aide d’ADAL.

Pour démarrer l’application, il vous suffit de précisé quelques éléments dans le fichier de configuration :

  • Tenant Domain
  • Subscription ID
  • Client Id

Egalement, il est nécessaire d’aller un peu dans le code afin de modifier l’appel d’Api du sample afin de configurer un intervalle de temps reflétant l’utilisation de votre souscription :

(J’ai rajouté dans le program.cs la modification de l’uri avec les dates d’intervalles voulus)

string startDate = "2016-07-01";
string endDate = "2016-07-31";
// Build up the HttpWebRequest
string requestURL = String.Format("{0}/{1}/{2}/{3}",
ConfigurationManager.AppSettings["ARMBillingServiceURL"],
"subscriptions",
ConfigurationManager.AppSettings["SubscriptionID"],
"providers/Microsoft.Commerce/UsageAggregates?api-version=2015-06-01-preview&reportedstartTime="+startDate+"+00%3a00%3a00Z&reportedEndTime="+endDate+"+00%3a00%3a00Z");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestURL);

on a alors un retour avec 2 types d’enregistrements :

{
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Commerce/UsageAggregates/Daily_BRSDT_20160701_0000",
"name": "Daily_BRSDT_20160701_0000",
"type": "Microsoft.Commerce/UsageAggregate",
"properties": {
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"usageStartTime": "2016-06-30T00:00:00+00:00",
"usageEndTime": "2016-07-01T00:00:00+00:00",
"meterName": "Free App Service",
"meterCategory": "Azure App Service",
"unit": "Apps",
"instanceData": "{\"Microsoft.Resources\":{\"resourceUri\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Default-Web-westus/providers/Microsoft.Web/sites/moskitosnugetgallery\",\"location\":\"westus\",\"additionalInfo\":{\"AppServicePlanUri\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Default-Web-westus/providers/Microsoft.Web/serverfarms/Default0\"}}}",
"meterId": "c0f5cb45-6fb1-41c9-8545-72ad400d9da4",
"infoFields": {

},
"quantity": 0.004032
}
},
{
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Commerce/UsageAggregates/Daily_BRSDT_20160701_0000",
"name": "Daily_BRSDT_20160701_0000",
"type": "Microsoft.Commerce/UsageAggregate",
"properties": {
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"usageStartTime": "2016-06-30T00:00:00+00:00",
"usageEndTime": "2016-07-01T00:00:00+00:00",
"meterName": "Standard IO - Table/ Queue (GB)",
"meterCategory": "Storage",
"meterSubCategory": "Locally Redundant",
"unit": "GB",
"meterId": "bd69546d-19b0-4776-865f-8753b800883b",
"infoFields": {
"meteredRegion": "West Europe",
"meteredService": "Storage",
"meteredServiceType": "",
"project": "storeage91284058"
},
"quantity": 0.000010
}
}

les enregistrement avec le champs infoField correspond à l’ancien format des objets Azure et le chamsp InstanceData correspond au nouveau format de données des resources Azure.

Tout les détails sur ses champs sont référencés sur la documentation de l’API : https://msdn.microsoft.com/en-us/library/azure/mt219001.aspx

Les champs importants à prendre en compte pour être en mesure de rapprocher l’usage à la facturation sont les champs :

  • meterId : identifiant unique du type de service
  • quantity : quantité consommé

Ces 2 champs nous serons utile par la suite pour calculer le coût de la souscription Azure à l’aide de l’API RateCard !

This entry was posted in Non classé. Bookmark the permalink.

2 Responses to Utilisation de l’API de Billing d’Azure – Part 1 : ResourceUsage

  1. Pingback: Utilisation de l’API Billing d’Azure – Part 2 : RateCardApi | Jérémie – an other BizTalker

  2. Pingback: Azure Billing Export – Comment recréer votre consommation Azure | Jérémie – an other BizTalker

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s