Partilhar via


Obter registros de utilização de um cliente para o Azure

Aplica-se a: Centro de Parceiros | Centro de Parceiros para a Nuvem Microsoft para o Governo dos EUA

Você pode obter os registros de utilização da assinatura do Azure de um cliente por um período de tempo especificado usando a API de utilização do Azure.

Pré-requisitos

  • Credenciais conforme descrito em 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 encontrá-lo no Partner Center, selecionando o espaço de trabalho Clientes, depois o cliente da lista de clientes e, em seguida, Conta. Na página da Conta do cliente, procure o ID da Microsoft na secçã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.

Esta API retorna o consumo diário e horário sem classificação para 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 e Obter itens de linha de consumo faturados em vez disso. Estes artigos descrevem como obter uma classificação de consumo a um nível diário por metro por recurso. Esta taxa de consumo é equivalente aos dados diários de granulação 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 agregados por hora e filtros de intervalo de datas arbitrários não são suportados atualmente para recursos associados a planos de subscrição 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 as regras de atraso referentes à faturação do parceiro, 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, deverá usar a ID da Assinatura do Commerce (que aparece em sua conta do Partner Center) em vez da ID de Entitlement do Azure. O ID de Atribuição do Azure aparece para o Parceiro B somente quando ele é Administrador em nome de (AOBO) no 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 registos 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 Java SDK 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 reportar 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, chama-se a função IAzureUtilizationCollection.query para retornar uma ResourceCollection que contém os registos de utilização. Como a coleção de recursos é paginada, é necessário obter um enumerador de registo de utilização do Azure para navegar pelas 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 reportar 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, execute o comando 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 Solicitar URI
OBTER {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 Tipo Necessário Descrição
ID do cliente-locatário string (sequência de caracteres) Sim Uma cadeia de caracteres formatada em GUID que identifica o cliente.
ID da subscrição string (sequência de caracteres) Sim Uma cadeia de caracteres formatada em GUID que identifica a assinatura.
hora_de_início cadeia de caracteres 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.
hora de fim cadeia de caracteres 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 (sequência de caracteres) Não Define a granularidade das agregações de uso. As opções disponíveis são: daily (padrão) e hourly.
mostrar_detalhes Booleano Não Especifica se os detalhes de uso no nível da instância devem ser obtidos. O padrão é true.
tamanho número Não Especifica o número de agregações retornadas por uma única chamada de API. O padrão é 1000. O máximo é 1000.

Cabeçalhos de solicitação

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

Corpo do pedido

Nenhum

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 da 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
Host: api.partnercenter.microsoft.com

Resposta REST

Se for bem-sucedido, esse método retorna uma coleção de recursos do 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, tipo de código de erroe parâmetros adicionais.

Exemplo de resposta

HTTP/1.1 200 OK
Content-Length: 2630
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
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/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
        "location": "azurestack",
        "partNumber": "",
        "orderNumber": "",
        "additionalInfo": {
          "azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
          "azureStack.SubscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
          "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/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourcegroups/system.local/providers/Microsoft.Storage/storageaccounts/srphealthaccount",
        "location": "azurestack",
        "partNumber": "",
        "orderNumber": "",
        "additionalInfo": {
          "azureStack.MeterId": "09F8879E-87E9-4305-A572-4B7BE209F857",
          "azureStack.SubscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
          "azureStack.Location": "local",
          "azureStack.EventDateTime": "06/05/2017 06:00:00"
        },
        "attributes": {
          "objectType": "AzureUtilizationRecord"
        }
      },

      "links": {
        "self": {
          "uri": "customers/E499C962-9218-4DBA-8B83-8ADC94F47B9F/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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"
      }
    }
  ]
}