From afa323f5e7e1f8ff14b1ce614f71a1e717f4352a Mon Sep 17 00:00:00 2001 From: Guy Bertental Date: Mon, 12 Sep 2022 18:26:20 +0300 Subject: [PATCH] Improve cost reporting docs (#2588) * improve cost report docs --- .../cost-reporting-sequence-diagram.png | Bin 0 -> 80584 bytes docs/azure-tre-overview/cost-reporting.md | 295 ++++++++++++++++++ .../tre-resources-breakdown.md | 16 - .../authoring-workspace-templates.md | 17 +- mkdocs.yml | 1 + 5 files changed, 297 insertions(+), 32 deletions(-) create mode 100644 docs/assets/cost-reporting-sequence-diagram.png create mode 100644 docs/azure-tre-overview/cost-reporting.md diff --git a/docs/assets/cost-reporting-sequence-diagram.png b/docs/assets/cost-reporting-sequence-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf30696dc4e47caa8e709ed8437ea2b018762c6 GIT binary patch literal 80584 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 literal 0 HcmV?d00001 diff --git a/docs/azure-tre-overview/cost-reporting.md b/docs/azure-tre-overview/cost-reporting.md new file mode 100644 index 0000000000..da49d8d4fb --- /dev/null +++ b/docs/azure-tre-overview/cost-reporting.md @@ -0,0 +1,295 @@ +# Cost Reporting + +The exact running costs will depend on the number of workspaces you have deployed, the workspace services you have enabled within them and the Azure Data center region. TRE users can use the Azure TRE cost API to get a report of the running costs of TRE resources according to their role. + +TRE provides a set of cost APIs which generates costs reports by custom timeframe, and level of details according to user's role. + +Cost APIs are based on [Azure Cost Management](https://docs.microsoft.com/en-us/azure/cost-management-billing/) and [TRE Templates azure resource tagging](#azure-resources-tagging), Azure resources must be tagged when authoring new template. + +## Cost APIs + +| Method | Endpoint | Description | Allowed Roles | Level of details | +| --- | --- | --- | --- | --- | +| GET | /api/costs | Get overall costs of a TRE Instance | TRE Admin | Core services, Shared services, workspaces | +| GET | /api/workspace/{workspace\_id}/costs | Get workspace costs | TRE Admin, Workspace Owner | Workspace, workspace services, user resources | + + +## Get overall cost report + +**Description** + +Get overall cost report for TRE instance (core services), per shared services and per workspace + +**Authorization** + +Only TRE Admin can call this url, others will get unauthorized + +**Endpoint** + +GET /api/costs + +**Query Parameters** + +| Parameter name| Type| Description| Default Value | +| --- | --- | --- | --- | +| from, to | datetime | Custom time period, up to 1 year timeframe, iso-8601 format | Month to date period | +| granularity| Enum (Daily, None) | The granularity of rows in the query. | None | + +**Output** + +```json +{ + "coreServices": [ + {"date":"", "cost":"", "currency":""} + ], + "sharedServices": [ { + "id":"shared service id", + "name":"shared service name", + "costs": [ + {"date":"", "cost":"", "currency":""} + ] + }], + "workspaces": [ { + "id": "workspace id", + "name": "workspace name", + "costs":[ + {"date":"", "cost":"", "currency":""} + ]} + ] +} +``` + +## Get workspace cost report +**Description** + +Get overall cost report for a specific workspace + +**Authorization** + +Only TRE Admin and the workspace owner can call this url, others will get unauthorized + +**Input** + +GET /api/workspaces/{workspace_id}/costs + +**Query Parameters** + +| Parameter name| Type| Description| Default Value | +| --- | --- | --- | --- | +| from, to | datetime | Custom time period, up to 1 year timeframe, iso-8601 format | Month to date period | +| granularity| Enum (Daily, None) | The granularity of rows in the query. | None | +| workspace_id |Guid |The workspace id to generate report for | Required field for workspace and user resource level apis | + +**Output** +```json +{ + "id": "workspace id", + "name": "workspace name", + "workspaceServices":[{ + "id": "workspace service id", + "name": "workspace service name", + "costs":[{"date":"", "cost":"", "currency":""}], + "userResources":[{ + "id": "user resource id", + "name": "user resource name", + "costs":[{"date":"", "cost":"", "currency":""}], + }] + }] +} +``` + +## Sequence Diagram + +[source](https://swimlanes.io/u/JlMQKbGqd?rev=4) + +[![Sequence Diagram](../assets/cost-reporting-sequence-diagram.png)](../assets/cost-reporting-sequence-diagram.png) + + +## Limitations and notes + +* Cost and usage data is typically available in Cost Management within 8-24 hours. + +* Tags aren't applied to historical data, template authors need to make sure all relavent [Azure resources of a TRE resource are tagged as instructed](#azure-resources-tagging). + +* Cost records might include [multiple currencies](https://azure.microsoft.com/en-us/blog/azure-cost-management-updates-july-2019/#currency) for the same date and TRE resource. + +* Once cost data becomes available in Cost Management, it will be retained for at least seven years. Only the last 13 months is available from the TRE Cost API and Azure Portal. For historical data before 13 months, please use [Exports](https://docs.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-export-acm-data?tabs=azure-portal) or the [UsageDetails API](https://docs.microsoft.com/en-us/rest/api/consumption/usage-details/list?tabs=HTTP). + +* For more information please refer to [Azure Cost Management](https://docs.microsoft.com/en-us/azure/cost-management-billing/costs/understand-cost-mgt-data) and Cost API swagger docs. + + +## Azure Resources Tagging + +TRE Cost Reporting is based on Azure tagging to be able to generate cost report for core services, shared services, workspace, workspace services and user resources. +Templates authors need to make sure that underling Azure resources are tagged with the following tags: + + +|
Tag
| Value | Applies to | +| ---------------------------------- | ----- | ---------- | +| `tre_id` | Unique ID of the TRE instance | All resources of a TRE instance | +| `tre_core_service_id` | Unique ID of the TRE instance | All TRE core azure resources | +| `shared_service_id` | The shared service unique ID | Shared Services | +| `workspace_id` | The workspace unique ID | Workspaces, Workspace Services and User Resources | +| `workspace_service_id` | The workspace service unique ID | Workspace Services and User Resources | +| `user_resource_id` | The user resoruce unique ID | User Resources | + +!!! Notes + Main Azure Container Registry and Storage Account are not be tagged as those resources are used to spin up more than one Azure TRE Instance. + +[![Resource tagging example](../assets/resource-tagging-example.png)](../assets/resource-tagging-example.png) + + +## Cost management query API + +Cost management query API, which Azure TRE Cost APIs are based upon, returns a flat result of all cost with every tag combination which exists on the filtered resources by the provided tag, meaning that a resource which has tre_id, tre_core_service_id, tre_workspace_id, tre_workspace_service_id, and tre_user_resource_id will get be summarized by all those tags. + +Group costs by tag name and filter only resources which have this tag, if filtered resources have more tags, the tags will appear in the result. + +Azure TRE Cost API joins this response with the hierarchical structure of the requested report. + +**Request example** + +```text +@SUBSCRIPTION = FILL_YOUR_SUBSCRIPTION_ID +@COST_API_URI = https://management.azure.com/subscriptions/{{SUBSCRIPTION}}/providers/Microsoft.CostManagement +@COST_API_VERSION = 2021-10-01 +@TRE_ID = FILL_TRE_ID +@TIME_FROM = MM/DD/YYYY +@TIME_TO = MM/DD/YYYY + +POST {{COST_API_URI}}/query?api-version={{COST_API_VERSION}}&$expand=properties/data +Authorization: {{$aadToken $aadV2TenantId}} +Content-Type: application/json +``` + +Payload +```json +{ + "type": "Usage", + "timeframe": "Custom", // can be also BillingMonthToDate|MonthToDate|TheLastBillingMonth|TheLastMonth|WeekToDate according to input + "timePeriod": { + "from": "{{TIME_FROM}}", + "to": "{{TIME_TO}}" + }, + "dataset": { + "granularity": "Daily", // can be also "None" for total costs + "aggregation": { + "totalCost": { + "name": "PreTaxCost", // can be also 'UsageQuantity','Cost','CostUSD','PreTaxCostUSD' (up to two aggregations) + "function": "Sum" + } + }, + "filter": { + "tags": { + "name": "tre_id", + "operator": "In", + "values" : [ + "{{TRE_ID}}", + ] + } + }, + "grouping": [ + { + "type": "Tag", + } + ] + } +} +``` + +Response + +```json +{ + "id": "subscriptions/xxxxxxxxxxxxx/providers/Microsoft.CostManagement/query/ec1f0eae-9343-4f4e-a0c0-dd219a66efc4", + "name": "ec1f0eae-9343-4f4e-a0c0-dd219a66efc4", + "type": "Microsoft.CostManagement/query", + "location": null, + "sku": null, + "eTag": null, + "properties": { + "nextLink": null, + "columns": [ + { + "name": "PreTaxCost", + "type": "Number" + }, + { + "name": "Tag", + "type": "String" + }, + { + "name": "Currency", + "type": "String" + } + ], + "rows": [ + [ + 3.9306515711531222, + "\"tre_core_service\":\"mytre\"", + "USD" + ], + [ + 11.66335497490112, + "\"tre_id\":\"mytre\"", + "USD" + ], + [ + 0.033, + "\"tre_shared_service\":\"2fea\"", + "USD" + ], + [ + 3.62175702964083, + "\"tre_shared_service\":\"4a5b\"", + "USD" + ], + [ + 0.093523886643774659, + "\"tre_user_resource_id\":\"126d\"", + "USD" + ], + [ + 0.078465743393993009, + "\"tre_user_resource_id\":\"2627\"", + "USD" + ], + [ + 0.20275980676694544, + "\"tre_user_resource_id\":\"319e\"", + "USD" + ], + [ + 0.17165788614506686, + "\"tre_user_resource_id\":\"3370\"", + "USD" + ], + [ + 0.17518017912599823, + "\"tre_user_resource_id\":\"b2be\"", + "USD" + ], + [ + 0.39905729127776768, + "\"tre_workspace_id\":\"5e86\"", + "USD" + ], + [ + 0.98272254462049369, + "\"tre_workspace_id\":\"af30\"", + "USD" + ], + [ + 0.17198963003776765, + "\"tre_workspace_service\":\"8d0a\"", + "USD" + ], + [ + 0.54959787203801058, + "\"tre_workspace_service\":\"e70d\"", + "USD" + ] + ] + } +} +``` diff --git a/docs/azure-tre-overview/tre-resources-breakdown.md b/docs/azure-tre-overview/tre-resources-breakdown.md index 0cd5ad7320..c81be67659 100644 --- a/docs/azure-tre-overview/tre-resources-breakdown.md +++ b/docs/azure-tre-overview/tre-resources-breakdown.md @@ -70,19 +70,3 @@ A TRE Workspace will be provisioned in a separate Resource Group along with its !!! note Network resources such as Network Interfaces, Network Security Groups and Private Endpoints are not listed above. - -## Running costs - -The exact running costs will depend on the number of workspaces you have deployed, the workspace services you have enabled within them and the Azure Data center region. You can use the Azure TRE cost API to get a report of the running costs. - -Cost API is based on [Azure Cost Management](https://docs.microsoft.com/en-us/azure/cost-management-billing/) and [TRE Templates azure resource tagging](../tre-workspace-authors/authoring-workspace-templates.md#azure-resources-tagging). - -Cost and usage data is typically available in Cost Management within 8-24 hours. - -Tags aren't applied to historical data, template authors need to make sure all relevant [Azure resources of a TRE resource are tagged as instructed](../tre-workspace-authors/authoring-workspace-templates.md#azure-resources-tagging). - -Cost records might include [multiple currencies](https://azure.microsoft.com/en-us/blog/azure-cost-management-updates-july-2019/#currency) for the same date and TRE resource. - -Once cost data becomes available in Cost Management, it will be retained for at least seven years. Only the last 13 months is available from the TRE Cost API and Azure Portal. For historical data before 13 months, please use [Exports](https://docs.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-export-acm-data?tabs=azure-portal) or the [UsageDetails API](https://docs.microsoft.com/en-us/rest/api/consumption/usage-details/list?tabs=HTTP). - -For more information please refer to [Azure Cost Management](https://docs.microsoft.com/en-us/azure/cost-management-billing/costs/understand-cost-mgt-data) and Cost API swagger docs. diff --git a/docs/tre-workspace-authors/authoring-workspace-templates.md b/docs/tre-workspace-authors/authoring-workspace-templates.md index ba4d49e265..b089c51ad7 100644 --- a/docs/tre-workspace-authors/authoring-workspace-templates.md +++ b/docs/tre-workspace-authors/authoring-workspace-templates.md @@ -114,22 +114,7 @@ The mandatory parameters for User Resources are: ## Azure Resources Tagging TRE Cost Reporting is based on Azure tagging to be able to generate cost report for core services, shared services, workspace, workspace services and user resources. -Templates authors need to make sure that underling Azure resources are tagged with the following tags: - - -|
Tag
| Value | Applies to | -| ---------------------------------- | ----- | ---------- | -| `tre_id` | Unique ID of the TRE instance | All resources of a TRE instance | -| `tre_core_service_id` | Unique ID of the TRE instance | All TRE core azure resources | -| `shared_service_id` | The shared service unique ID | Shared Services | -| `workspace_id` | The workspace unique ID | Workspaces, Workspace Services and User Resources | -| `workspace_service_id` | The workspace service unique ID | Workspace Services and User Resources | -| `user_resource_id` | The user resoruce unique ID | User Resources | - -!!! Notes - Main Azure Container Registry and Storage Account are not be tagged as those resources are used to spin up more than one Azure TRE Instance. - -[![Resource tagging example](../assets/resource-tagging-example.png)](../assets/resource-tagging-example.png) +Templates authors need to make sure that underling Azure resources are tagged with the relevent tags, for more information see [cost reporting](../azure-tre-overview/cost-reporting.md#azure-resources-tagging): ## Versioning diff --git a/mkdocs.yml b/mkdocs.yml index d777445679..2c5d1dbaf6 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -49,6 +49,7 @@ nav: - Network Architecture: azure-tre-overview/networking.md - Azure Resources: azure-tre-overview/tre-resources-breakdown.md - Airlock: azure-tre-overview/airlock.md + - Cost Reporting: azure-tre-overview/cost-reporting.md - Compliance: azure-tre-overview/compliance-info.md - QuickStart: # Setup steps for anyone performing an initial deployment of the AzureTRE for eval purposes