Obter os registos de utilização de um cliente do Azure

Aplica-se a: Partner Center | Partner Center for Microsoft Cloud for US Government

Pode obter os registos de utilização da subscrição do Azure de um cliente por um período de tempo especificado ao utilizar a API de utilização do Azure.

Pré-requisitos

  • Credenciais conforme descrito na autenticação do Partner Center. Este cenário oferece suporte à autenticação com credenciais de aplicativo autônomo e App+User.

  • Um ID de cliente (customer-tenant-id). Se não souber o ID do cliente, pode procurá-lo no Partner Center selecionando a área de trabalho Clientes e, em seguida, o cliente na lista de clientes e, em seguida, Conta. Na página Conta do cliente, procure a ID da Microsoft na seção Informações da Conta do Cliente. A ID da Microsoft é a mesma que a ID do cliente (customer-tenant-id).

  • Um identificador de assinatura.

Essa API retorna o consumo diário e horário não classificado por um período de tempo arbitrário. No entanto, essa API não é suportada para planos do Azure. Se você tiver um plano do Azure, consulte os artigos Obter itens de linha de consumo não faturados de fatura e Obter itens de linha de consumo faturados de fatura. Estes artigos descrevem como obter uma classificação de consumo a um nível diário por metro por recurso. Esse consumo de taxa é equivalente aos dados de grãos diários fornecidos pela API de utilização do Azure. Você precisará usar o identificador de fatura para recuperar dados de uso faturados. Ou, você pode usar períodos atuais e anteriores para obter estimativas de uso não faturadas. Dados de grão de hora e filtros de intervalo de datas arbitrários não são suportados atualmente para recursos de assinatura do plano do Azure.

API de utilização do Azure

Esta API de utilização do Azure fornece acesso a registos de utilização durante um período de tempo que representa quando a utilização foi reportada no sistema de faturação. Ele fornece acesso aos mesmos dados de utilização que são usados para criar e calcular o arquivo de reconciliação. No entanto, ele não tem conhecimento da lógica do arquivo de reconciliação do sistema de faturamento. Você não deve esperar que os resultados do resumo do arquivo de reconciliação correspondam ao resultado recuperado dessa API exatamente pelo mesmo período de tempo.

Por exemplo, o sistema de faturamento usa os mesmos dados de utilização e aplica regras de atraso para determinar o que é contabilizado em um arquivo de reconciliação. Quando um período de faturação é encerrado, toda a utilização até ao final do dia em que termina o período de faturação é incluída no ficheiro de reconciliação. Qualquer uso tardio dentro do período de faturamento que seja relatado dentro de 24 horas após o término do período de faturamento é contabilizado no próximo arquivo de reconciliação. Para obter as regras de atraso de como o parceiro é cobrado, consulte Obter dados de consumo para uma assinatura do Azure.

Esta API REST está paginada. Se a carga útil de resposta for maior do que uma única página, você deverá seguir o próximo link para obter a próxima página de registros de utilização.

Cenário: o Parceiro A transferiu a propriedade de faturação da Subscrição Legada do Azure (145P) para o Parceiro B

Se um parceiro transferir a propriedade de cobrança de uma assinatura herdada do Azure para outro parceiro, quando o novo parceiro chamar a API de Utilização para a assinatura transferida, ele precisará usar a ID da Assinatura do Commerce (que aparece em sua conta do Partner Center) em vez da ID de Direito do Azure. A ID de Direito do Azure aparece para o Parceiro B somente quando ele é Administrador em nome de (AOBO) para o portal do Azure do Cliente.

Para chamar com êxito a API de utilização para a assinatura transferida, o novo parceiro precisa usar a ID de assinatura do Commerce.

C#

Para obter os Registros de Utilização do Azure:

  1. Obtenha o ID do cliente e o ID da subscrição.

  2. Chame o método IAzureUtilizationCollection.Query para retornar um ResourceCollection que contém os registros de utilização.

  3. Obtenha um enumerador de registro de utilização do Azure para percorrer as páginas de utilização. Esta etapa é necessária, porque a coleção de recursos é paginada.

// IAggregatePartner partnerOperations;
// string customerId;
// string subscriptionId;

IPartner partner = PartnerService.Instance.CreatePartnerOperations(credentials);

// Retrieve the utilization records for the last year in pages of 100 records.
var utilizationRecords = partner.Customers[customerId].Subscriptions[subscriptionId].Utilization.Azure.Query(
    DateTimeOffset.Now.AddYears(-1),
    DateTimeOffset.Now,
    size: 100);

// Create an Azure utilization enumerator which will aid us in traversing the utilization pages.
var utilizationRecordEnumerator = partner.Enumerators.Utilization.Azure.Create(utilizationRecords);

while (utilizationRecordEnumerator.HasValue)
{
    //
    // Insert code here to work with this page.
    //

    // Get the next page.
    utilizationRecordEnumerator.Next();
}

Java

O SDK Java do Partner Center pode ser usado para gerenciar recursos do Partner Center. É um projeto de código aberto mantido pela comunidade de parceiros e não suportado oficialmente pela Microsoft. Você pode obter ajuda da comunidade ou abrir um problema no GitHub se tiver um problema.

Para obter os Registros de Utilização do Azure, primeiro você precisa de um identificador de cliente e um identificador de assinatura. Em seguida, você chama a função IAzureUtilizationCollection.query para retornar um ResourceCollection que contém os registros de utilização. Como a coleção de recursos é paginada, você deve obter um enumerador de registro de utilização do Azure para percorrer as páginas de utilização.

// IAggregatePartner partnerOperations;
// String customerId;
// String subscriptionId;

ResourceCollection<AzureUtilizationRecord> utilizationRecords = partnerOperations.getCustomers()
  .byId(customerId).getSubscriptions().byId(subscriptionId)
  .getUtilization().getAzure().query(
      new DateTime().minusYears(1),
      new DateTime(),
      AzureUtilizationGranularity.Daily,
      true,
      100);

// Create an Azure utilization enumerator which will aid us in traversing the utilization pages
IResourceCollectionEnumerator<ResourceCollection<AzureUtilizationRecord>> utilizationRecordEnumerator =
    partnerOperations.getEnumerators().getUtilization().getAzure().create(utilizationRecords);

while (utilizationRecordEnumerator.hasValue())
{
    //
    // Insert code here to work with this page.
    //

    // get the next page
    utilizationRecordEnumerator.next();
}

PowerShell

O módulo PowerShell do Partner Center pode ser usado para gerenciar recursos do Partner Center. É um projeto de código aberto mantido pela comunidade de parceiros e não suportado oficialmente pela Microsoft. Você pode obter ajuda da comunidade ou abrir um problema no GitHub se tiver um problema.

Para obter os Registros de Utilização do Azure, primeiro você precisa de um identificador de cliente e um identificador de assinatura. Em seguida, chame Get-PartnerCustomerSubscriptionUtilization. Este comando retornará todos os registros disponíveis para o período de tempo especificado.

# $customerId
# $subscriptionId

Get-PartnerCustomerSubscriptionUtilization -CustomerId $customerId -SubscriptionId $subscriptionId -StartDate (Get-Date).AddDays(-2).ToUniversalTime() -Granularity Hourly -ShowDetails

Pedido REST

Sintaxe da solicitação

Método URI do pedido
GET {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/utilizations/azure?start_time={start-time}&end_time={end-time}&granularity={granularity}&show_details={True}

Parâmetros de URI

Use o caminho a seguir e os parâmetros de consulta para obter os registros de utilização.

Nome Type Obrigatório Description
ID do cliente-locatário string Sim Uma cadeia de caracteres formatada em GUID que identifica o cliente.
ID da subscrição string Sim Uma cadeia de caracteres formatada em GUID que identifica a assinatura.
hora de início string no formato de deslocamento de data-hora UTC Sim O início do intervalo de tempo que representa quando a utilização foi relatada no sistema de faturamento.
end_time string no formato de deslocamento de data-hora UTC Sim O final do intervalo de tempo que representa quando a utilização foi relatada no sistema de faturamento.
granularidade string Não Define a granularidade das agregações de uso. As opções disponíveis são: daily (padrão) e hourly.
show_details boolean Não Especifica se os detalhes de uso no nível da instância devem ser obtidos. A predefinição é true.
size number Não Especifica o número de agregações retornadas por uma única chamada de API. A predefinição é 1000. O máximo é 1000.

Cabeçalhos do pedido

Para obter mais informações, consulte Cabeçalhos REST do Partner Center.

Corpo do pedido

None

Exemplo de solicitação

A solicitação de exemplo a seguir produz resultados semelhantes aos que o arquivo de reconciliação mostrará para o período de 7/2 a 8/1. Esses resultados podem não corresponder exatamente (consulte a seção API de utilização do Azure para obter detalhes).

Este exemplo de solicitação retorna dados de utilização relatados no sistema de faturamento entre 7/2 às 12h (UTC) e 8/2 às 12h (UTC).

GET https://api.partnercenter.microsoft.com/v1/customers/E499C962-9218-4DBA-8B83-8ADC94F47B9F/subscriptions/FC8F8908-F918-4406-AF13-D5BC0FE41865/utilizations/azure?start_time=2017-07-02T00:00:00-08:00&end_time=2017-08-02T00:00:00-08:00 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: e6a3b6b2-230a-4813-999d-57f883b60d38
MS-CorrelationId: a687bc47-8d08-4b78-aff6-5a59aa2055c2
X-Locale: en-US
Host: api.partnercenter.microsoft.com

Resposta do REST

Se bem-sucedido, esse método retorna uma coleção de recursos do Registro de Utilização do Azure no corpo da resposta. Se os dados de utilização do Azure ainda não estiverem prontos em um sistema dependente, esse método retornará um Código de Status HTTP 204 com um cabeçalho Retry-After.

Códigos de sucesso e erro de resposta

Cada resposta vem com um código de status HTTP que indica sucesso ou falha e informações adicionais de depuração. Use uma ferramenta de rastreamento de rede para ler o código de status HTTP, o tipo de código de erro e os parâmetros adicionais.

Exemplo de resposta

HTTP/1.1 200 OK
Content-Length: 2630
Content-Type: application/json; charset=utf-8
MS-CorrelationId: a687bc47-8d08-4b78-aff6-5a59aa2055c2
MS-RequestId: e6a3b6b2-230a-4813-999d-57f883b60d38
MS-CV: PjuGoYrw806o6A3Y.0
MS-ServerId: 030020525
Date: Fri, 04 Aug 2017 23:48:28 GMT

{
  "totalCount": 2,
  "items": [
    {
      "usageStartTime": "2017-06-07T17:00:00-07:00",
      "usageEndTime": "2017-06-08T17:00:00-07:00",
      "resource": {
        "id": "8767aeb3-6909-4db2-9927-3f51e9a9085e",
        "name": "Storage Admin",
        "category": "Storage",
        "subcategory": "Block Blob",
        "region": "Azure Stack"
      },
      "quantity": 0.217790327034891,
      "unit": "1 GB/Hr",
      "infoFields": {},
      "instanceData": {
        "resourceUri": "/subscriptions/ab7e2384-eeee-489a-a14f-1eb41ddd261d/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
        "location": "azurestack",
        "partNumber": "",
        "orderNumber": "",
        "additionalInfo": {
          "azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
          "azureStack.SubscriptionId": "dbd1aa30-e40d-4436-b465-3a8bc11df027",
          "azureStack.Location": "local",
          "azureStack.EventDateTime": "06/05/2017 06:00:00"
        }
      },
      "attributes": {
        "objectType": "AzureUtilizationRecord"
      }
    },
    {
      "usageStartTime": "2017-06-07T17:00:00-07:00",
      "usageEndTime": "2017-06-08T17:00:00-07:00",
      "resource": {
        "id": "8767aeb3-6909-4db2-9927-3f51e9a9085e",
        "name": "Storage Admin",
        "category": "Storage",
        "subcategory": "Block Blob",
        "region": "Azure Stack"
      },
      "quantity": 0.217790327034891,
      "unit": "1 GB/Hr",
      "infoFields": {},
      "instanceData": {
        "resourceUri": "/subscriptions/ab7e2384-eeee-489a-a14f-1eb41ddd261d/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
        "location": "azurestack",
        "partNumber": "",
        "orderNumber": "",
        "additionalInfo": {
          "azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
          "azureStack.SubscriptionId": "dbd1aa30-e40d-4436-b465-3a8bc11df027",
          "azureStack.Location": "local",
          "azureStack.EventDateTime": "06/05/2017 06:00:00"
        },
        "attributes": {
          "objectType": "AzureUtilizationRecord"
        }
      },

      "links": {
        "self": {
          "uri": "customers/E499C962-9218-4DBA-8B83-8ADC94F47B9F/subscriptions/FC8F8908-F918-4406-AF13-D5BC0FE41865/utilizations/azure?start_time=2017-06-10T00:00:00Z&end_time=2017-07-09T00:00:00Z&granularity=Daily&show_details=True&size=1000",
          "method": "GET",
          "headers": []
        }
      },
      "attributes": {
        "objectType": "Collection"
      }
    }
  ]
}