Procedura dettagliata sull'API REST di monitoraggio di AzureAzure Monitoring REST API walkthrough

In questo articolo viene illustrato come eseguire l'autenticazione in modo che il codice possa usare le informazioni di riferimento sulle API REST di monitoraggio di Microsoft Azure.This article shows you how to perform authentication so your code can use the Microsoft Azure Monitor REST API Reference.

L'API di monitoraggio di Azure consente di recuperare in modo programmatico le definizioni delle metriche predefinite disponibili, la granularità e i valori delle metriche.The Azure Monitor API makes it possible to programmatically retrieve the available default metric definitions, granularity, and metric values. I dati possono essere salvati in un archivio dati separato come il database SQL di Azure, Azure Cosmos DB o Azure Data Lake.The data can be saved in a separate data store such as Azure SQL Database, Azure Cosmos DB, or Azure Data Lake. Da qui, se necessario, è possibile svolgere ulteriori analisi.From there additional analysis can be performed as needed.

Oltre a essere compatibile con vari punti dati delle metriche, l'API di monitoraggio consente di elencare le regole di avviso, di visualizzare i registri delle attività e molto altro ancora.Besides working with various metric data points, the Monitor API also makes it possible to list alert rules, view activity logs, and much more. Per un elenco completo delle operazioni disponibili, vedere le informazioni di riferimento sulle API REST di monitoraggio di Microsoft Azure.For a full list of available operations, see the Microsoft Azure Monitor REST API Reference.

Autenticazione delle richieste di monitoraggio di AzureAuthenticating Azure Monitor requests

Innanzitutto è necessario autenticare la richiesta.The first step is to authenticate the request.

Tutte le attività eseguite sull'API di monitoraggio di Azure usano il modello di autenticazione Azure Resource Manager.All the tasks executed against the Azure Monitor API use the Azure Resource Manager authentication model. Di conseguenza, tutte le richieste devono essere autenticate con Azure Active Directory (Azure AD).Therefore, all requests must be authenticated with Azure Active Directory (Azure AD). Un approccio per autenticare l'applicazione client consiste nel creare un'entità servizio di Azure AD e recuperare il token di autenticazione (JTW).One approach to authenticate the client application is to create an Azure AD service principal and retrieve the authentication (JWT) token. Il seguente script di esempio mostra la creazione di un'entità servizio di Azure AD tramite PowerShell.The following sample script demonstrates creating an Azure AD service principal via PowerShell. Per una procedura più dettagliata, fare riferimento alla documentazione sull' uso di Azure PowerShell per creare un'entità servizio per accedere alle risorse.For a more detailed walk-through, refer to the documentation on using Azure PowerShell to create a service principal to access resources. È possibile anche creare un'entità di sicurezza tramite il portale di Azure.It is also possible to create a service principal via the Azure portal.

$subscriptionId = "{azure-subscription-id}"
$resourceGroupName = "{resource-group-name}"

# Authenticate to a specific Azure subscription.
Login-AzureRmAccount -SubscriptionId $subscriptionId

# Password for the service principal
$pwd = "{service-principal-password}"

# Create a new Azure AD application
$azureAdApplication = New-AzureRmADApplication `
                        -DisplayName "My Azure Monitor" `
                        -HomePage "https://localhost/azure-monitor" `
                        -IdentifierUris "https://localhost/azure-monitor" `
                        -Password $pwd

# Create a new service principal associated with the designated application
New-AzureRmADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId

# Assign Reader role to the newly created service principal
New-AzureRmRoleAssignment -RoleDefinitionName Reader `
                          -ServicePrincipalName $azureAdApplication.ApplicationId.Guid

Per eseguire query nell'API di monitoraggio di Azure, l'applicazione client deve effettuare l'autenticazione usando l'entità servizio creata in precedenza.To query the Azure Monitor API, the client application should use the previously created service principal to authenticate. Nell'esempio seguente di script di PowerShell viene illustrato un approccio in cui viene usato Active Directory Authentication Library (ADAL) per ottenere il token di autenticazione JTW.The following example PowerShell script shows one approach, using the Active Directory Authentication Library (ADAL) to obtain the JWT authentication token. Il token JTW viene trasmesso come parte di un parametro di autorizzazione HTTP nelle richieste all'API di Monitoraggio di Azure.The JWT token is passed as part of an HTTP Authorization parameter in requests to the Azure Monitor REST API.

$azureAdApplication = Get-AzureRmADApplication -IdentifierUri "https://localhost/azure-monitor"

$subscription = Get-AzureRmSubscription -SubscriptionId $subscriptionId

$clientId = $azureAdApplication.ApplicationId.Guid
$tenantId = $subscription.TenantId
$authUrl = "https://login.microsoftonline.com/${tenantId}"

$AuthContext = [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext]$authUrl
$cred = New-Object -TypeName Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential -ArgumentList ($clientId, $pwd)

$result = $AuthContext.AcquireToken("https://management.core.windows.net/", $cred)

# Build an array of HTTP header values
$authHeader = @{
'Content-Type'='application/json'
'Accept'='application/json'
'Authorization'=$result.CreateAuthorizationHeader()
}

Dopo l'autenticazione, è possibile eseguire le query con l'API REST di monitoraggio di Azure.After authenticating, queries can then be executed against the Azure Monitor REST API. Esistono due query utili:There are two helpful queries:

  1. Elencare le definizioni delle metriche per una risorsaList the metric definitions for a resource
  2. Recuperare i valori delle metricheRetrieve the metric values

Recuperare le definizioni delle metriche (API multidimensionale)Retrieve Metric Definitions (Multi-Dimensional API)

Usare l'API REST relativa alle definizione delle metriche del Monitoraggio di Azure per accedere all'elenco di metriche disponibili per un servizio.Use the Azure Monitor Metric definitions REST API to access the list of metrics that are available for a service.

Metodo: GETMethod: GET

URI richiesta: https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName/providers/microsoft.insights/metricDefinitions?api-version={apiVersion}Request URI: https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName/providers/microsoft.insights/metricDefinitions?api-version={apiVersion}

Ad esempio, per recuperare le definizioni delle metriche per un account di archiviazione di Azure, la richiesta avrebbe il seguente aspetto:For example, to retrieve the metric definitions for an Azure Storage account, the request would appear as follows:

$request = "https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/accounts/ContosoStorage/providers/microsoft.insights/metricDefinitions?api-version=2017-05-01-preview"

Invoke-RestMethod -Uri $request `
                  -Headers $authHeader `
                  -Method Get `
                  -OutFile ".\contosostorage-metricdef-results.json" `
                  -Verbose

Nota

Per recuperare le definizioni delle metriche mediante l'API REST delle metriche di monitoraggio di Azure, usare "2017-05-01-anteprima" come versione dell'API.To retrieve metric definitions using the multi-dimensional Azure Monitor metrics REST API, use "2017-05-01-preview" as the API version.

Il corpo della risposta JSON risultante dovrebbe essere simile all'esempio seguente: (si noti che la seconda metrica dispone di dimensioni)The resulting JSON response body would be similar to the following example: (Note that the second metric has dimensions)

{
    "value": [
        {
            "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/accounts/ContosoStorage/providers/microsoft.insights/metricdefinitions/UsedCapacity",
            "resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/accounts/ContosoStorage",
            "category": "Capacity",
            "name": {
                "value": "UsedCapacity",
                "localizedValue": "Used capacity"
            },
            "isDimensionRequired": false,
            "unit": "Bytes",
            "primaryAggregationType": "Average",
            "metricAvailabilities": [
                {
                    "timeGrain": "PT1M",
                    "retention": "P30D"
                },
                {
                    "timeGrain": "PT1H",
                    "retention": "P30D"
                }
            ]
        },
        {
            "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/accounts/ContosoStorage/providers/microsoft.insights/metricdefinitions/Transactions",
            "resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/accounts/ContosoStorage",
            "category": "Transaction",
            "name": {
                "value": "Transactions",
                "localizedValue": "Transactions"
            },
            "isDimensionRequired": false,
            "unit": "Count",
            "primaryAggregationType": "Total",
            "metricAvailabilities": [
                {
                    "timeGrain": "PT1M",
                    "retention": "P30D"
                },
                {
                    "timeGrain": "PT1H",
                    "retention": "P30D"
                }
            ],
            "dimensions": [
                {
                    "value": "ResponseType",
                    "localizedValue": "Response type"
                },
                {
                    "value": "GeoType",
                    "localizedValue": "Geo type"
                },
                {
                    "value": "ApiName",
                    "localizedValue": "API name"
                }
            ]
        },
        ...
    ]
}

Recuperare i valori delle dimensioni (API multidimensionale)Retrieve Dimension Values (Multi-Dimensional API)

Una volta stabilite le definizioni delle metriche disponibili, potrebbero essere presenti alcune metriche con dimensioni.Once the available metric definitions are known, there may be some metrics that have dimensions. Prima di eseguire una query relativa alla metrica, si potrebbe voler individuare l'intervallo di valori di una dimensione.Before querying for the metric you may want to discover what the range of values a dimension has. In base a questi valori della dimensione è quindi possibile scegliere di filtrare o di segmentare le metriche in base ai valori della dimensione durante l'esecuzione della query relativa alle metriche.Based on these dimension values you can then choose to filter or segment the metrics based on dimension values while querying for metrics. Usare il 'valore' del nome della metrica (non ' localizedValue') per tutte le richieste di filtro (ad esempio, per recuperare i punti dati delle metriche 'CpuTime' e 'Requests').Use the metric’s name ‘value’ (not the ‘localizedValue’) for any filtering requests (for example, retrieve the ‘CpuTime’ and ‘Requests’ metric data points). Se non è specificato alcun filtro, viene restituita la metrica predefinita.If no filters are specified, the default metric is returned.

Nota

Per recuperare i valori della dimensione mediante l'API REST di monitoraggio di Azure, usare "2017-05-01-anteprima" come versione dell'API.To retrieve dimension values using the Azure Monitor REST API, use "2017-05-01-preview" as the API version.

Metodo: GETMethod: GET

URI richiesta: https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{resource-provider-namespace}/{resource-type}/{resource-name}/providers/microsoft.insights/metrics?metric={metric}&timespan={starttime/endtime}&$filter={filter}&resultType=metadata&api-version={apiVersion}Request URI: https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{resource-provider-namespace}/{resource-type}/{resource-name}/providers/microsoft.insights/metrics?metric={metric}&timespan={starttime/endtime}&$filter={filter}&resultType=metadata&api-version={apiVersion}

Ad esempio, per recuperare l'elenco dei valori potenziali della "dimensione nome API" per la metrica "Transazioni" in un intervallo di tempo specificato, la richiesta sarebbe:For example, to retrieve the list of potential values the 'API Name dimension' for the 'Transactions' metric during a given time range, the request would be as follows:

$filter = "APIName eq '*'"
$request = "https://management.azure.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/accounts/ContosoStorage/providers/microsoft.insights/metrics?metric=Transactions&timespan=2017-09-01T00:00:00Z/2017-09-10T00:00:00Z&resultType=metadata&$filter=${filter}&api-version=2017-05-01-preview"
Invoke-RestMethod -Uri $request `
    -Headers $authHeader `
    -Method Get `
    -OutFile ".\contosostorage-dimension-values.json" `
    -Verbose

Il corpo della risposta JSON risultante dovrebbe essere simile all'esempio seguente:The resulting JSON response body would be similar to the following example:

{
  "timespan": "2017-09-01T00:00:00Z/2017-09-10T00:00:00Z",
  "value": [
    {
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/accounts/ContosoStorage/providers/Microsoft.Insights/metrics/Transactions",
      "type": "Microsoft.Insights/metrics",
      "name": {
        "value": "Transactions",
        "localizedValue": "Transactions"
      },
      "unit": "Count",
      "timeseries": [
        {
          "metadatavalues": [
            {
              "name": {
                "value": "apiname",
                "localizedValue": "apiname"
              },
              "value": "DeleteBlob"
            }
          ]
        },
        {
          "metadatavalues": [
            {
              "name": {
                "value": "apiname",
                "localizedValue": "apiname"
              },
              "value": "SetBlobProperties"
            }
          ]
        },
        {
          "metadatavalues": [
            {
              "name": {
                "value": "apiname",
                "localizedValue": "apiname"
              },
              "value": "PutPage"
            }
          ]
        },
        {
          "metadatavalues": [
            {
              "name": {
                "value": "apiname",
                "localizedValue": "apiname"
              },
              "value": "Unknown"
            }
          ]
        },
        ...
      ]    
    }
  ]
}

Recuperare i valori delle metriche (API multidimensionale)Retrieve Metric Values (Multi-Dimensional API)

Una volta che le definizioni delle metriche disponibili e i possibili valori della dimensione sono noti, è possibile recuperare i relativi valori delle metriche.Once the available metric definitions and possible dimension values are known, it is then possible to retrieve the related metric values. Usare il nome "value" della metrica (non "localizedValue") per tutte le richieste di filtro.Use the metric’s name ‘value’ (not the ‘localizedValue’) for any filtering requests. Se non viene specificato alcun filtro della dimensione, viene restituita la metrica di rollup aggregata.If no dimension filters are specified, the rolled up aggregated metric is returned.

Nota

Per recuperare i valori delle metriche multidimensionali mediante l'API REST di monitoraggio di Azure, usare "2017-05-01-anteprima" come versione dell'API.To retrieve multi-dimensional metric values using the Azure Monitor REST API, use "2017-05-01-preview" as the API version.

Metodo: GETMethod: GET

URI richiesta: https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{resource-provider-namespace}/{resource-type}/{resource-name}/providers/microsoft.insights/metrics?metric={metric}&timespan={starttime/endtime}&$filter={filter}&interval={timeGrain}&aggregation={aggreation}&api-version={apiVersion}Request URI: https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{resource-provider-namespace}/{resource-type}/{resource-name}/providers/microsoft.insights/metrics?metric={metric}&timespan={starttime/endtime}&$filter={filter}&interval={timeGrain}&aggregation={aggreation}&api-version={apiVersion}

Ad esempio, per recuperare i valori della metrica di archiviazione "Transazioni" durante un intervallo di 5 minuti, per tutte le transazioni per il nome dell'API "GetBlobProperties", la richiesta sarebbe la seguente:For example, to retrieve the metric values the storage 'Transactions' metric during a 5 min range, for all transactions to the API name 'GetBlobProperties', the request would be as follows:

$filter = "APIName eq 'GetBlobProperties'"
$request = "https://management.azure.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/accounts/ContosoStorage/providers/microsoft.insights/metrics?metric=Transactions&timespan=2017-09-19T02:00:00Z/2017-09-19T02:05:00Z&$filter=${filter}&interval=PT1M&aggregation=Count&api-version=2017-05-01-preview"
Invoke-RestMethod -Uri $request `
    -Headers $authHeader `
    -Method Get `
    -OutFile ".\contosostorage-metric-values.json" `
    -Verbose

Il corpo della risposta JSON risultante dovrebbe essere simile all'esempio seguente:The resulting JSON response body would be similar to the following example:

{
  "cost": 0,
  "timespan": "2017-09-19T02:00:00Z/2017-09-19T02:05:00Z",
  "interval": "PT1M",
  "value": [
    {
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/accounts/ContosoStorage/providers/Microsoft.Insights/metrics/Transactions",
      "type": "Microsoft.Insights/metrics",
      "name": {
        "value": "Transactions",
        "localizedValue": "Transactions"
      },
      "unit": "Count",
      "timeseries": [
        {
          "metadatavalues": [
            {
              "name": {
                "value": "apiname",
                "localizedValue": "apiname"
              },
              "value": "GetBlobProperties"
            }
          ],
          "data": [
            {
              "timeStamp": "2017-09-19T02:00:00Z",
              "count": 2.0
            },
            {
              "timeStamp": "2017-09-19T02:01:00Z",
              "count": 1.0
            },
            {
              "timeStamp": "2017-09-19T02:02:00Z",
              "count": 3.0
            },
            {
              "timeStamp": "2017-09-19T02:03:00Z",
              "count": 7.0
            },
            {
              "timeStamp": "2017-09-19T02:04:00Z",
              "count": 2.0
            }
          ]
        }
      ]
    }
  ]
}

Recuperare le definizioni delle metricheRetrieve metric definitions

Usare l'API REST relativa alle definizione delle metriche del Monitoraggio di Azure per accedere all'elenco di metriche disponibili per un servizio.Use the Azure Monitor Metric definitions REST API to access the list of metrics that are available for a service.

Metodo: GETMethod: GET

URI richiesta: https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}/providers/microsoft.insights/metricDefinitions?api-version={apiVersion}Request URI: https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}/providers/microsoft.insights/metricDefinitions?api-version={apiVersion}

Ad esempio, per recuperare le definizioni delle metriche per un'app per la logica di Azure, la richiesta avrebbe il seguente aspetto:For example, to retrieve the metric definitions for an Azure Logic App, the request would appear as follows:

$request = "https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets/providers/microsoft.insights/metricDefinitions?api-version=2016-03-01"

Invoke-RestMethod -Uri $request `
                  -Headers $authHeader `
                  -Method Get `
                  -OutFile ".\contostweets-metricdef-results.json" `
                  -Verbose

Nota

Per recuperare le definizioni delle metriche mediante l'API REST di monitoraggio di Azure, usare "2016-03-01" come versione dell'API.To retrieve metric definitions using the Azure Monitor REST API, use "2016-03-01" as the API version.

Il corpo della risposta JSON risultante dovrebbe essere simile all'esempio seguente:The resulting JSON response body would be similar to the following example:

{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets/providers/microsoft.insights/metricdefinitions",
  "value": [
    {
      "name": {
        "value": "RunsStarted",
        "localizedValue": "Runs Started"
      },
      "category": "AllMetrics",
      "startTime": "0001-01-01T00:00:00Z",
      "endTime": "0001-01-01T00:00:00Z",
      "unit": "Count",
      "primaryAggregationType": "Total",
      "resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets",
      "resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets",
      "metricAvailabilities": [
        {
          "timeGrain": "PT1M",
          "retention": "P30D",
          "location": null,
          "blobLocation": null
        },
        {
          "timeGrain": "PT1H",
          "retention": "P30D",
          "location": null,
          "blobLocation": null
        }
      ],
      "properties": null,
      "dimensions": null,
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets/providers/microsoft.insights/metricdefinitions/RunsStarted",
      "supportedAggregationTypes": [ "None", "Average", "Minimum", "Maximum", "Total", "Count" ]
    }
  ]
}

Per ulteriori informazioni, vedere la documentazione Elencare le definizioni delle metriche per una risorsa nell'API REST di monitoraggio di Azure .For more information, see the List the metric definitions for a resource in Azure Monitor REST API documentation.

Recuperare i valori delle metricheRetrieve metric values

Una volta che le definizioni delle metriche disponibili sono note, è possibile recuperare i relativi valori.Once the available metric definitions are known, it is then possible to retrieve the related metric values. Usare il 'valore' del nome della metrica (non ' localizedValue') per tutte le richieste di filtro (ad esempio, per recuperare i punti dati delle metriche 'CpuTime' e 'Requests').Use the metric’s name ‘value’ (not the ‘localizedValue’) for any filtering requests (for example, retrieve the ‘CpuTime’ and ‘Requests’ metric data points). Se non è specificato alcun filtro, viene restituita la metrica predefinita.If no filters are specified, the default metric is returned.

Nota

Per recuperare i valori delle metriche mediante l'API REST di monitoraggio di Azure, usare "2016-09-01" come versione dell'API.To retrieve metric values using the Azure Monitor REST API, use "2016-09-01" as the API version.

Metodo: GETMethod: GET

URI richiesta: https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{resource-provider-namespace}/{resource-type}/{resource-name}/providers/microsoft.insights/metrics?$filter={filter}&api-version={apiVersion}Request URI: https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{resource-provider-namespace}/{resource-type}/{resource-name}/providers/microsoft.insights/metrics?$filter={filter}&api-version={apiVersion}

Ad esempio, per recuperare i dati della metrica RunsSucceeded per la finestra temporale specificata e per un intervallo di tempo di 1 ora, la richiesta sarà come mostrato di seguito:For example, to retrieve the RunsSucceeded metric data points for the given time range and for a time grain of 1 hour, the request would be as follows:

$filter = "(name.value eq 'RunsSucceeded') and aggregationType eq 'Total' and startTime eq 2017-08-18T19:00:00 and endTime eq 2017-08-18T23:00:00 and timeGrain eq duration'PT1H'"
$request = "https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets/providers/microsoft.insights/metrics?$filter=${filter}&api-version=2016-09-01"
Invoke-RestMethod -Uri $request `
    -Headers $authHeader `
    -Method Get `
    -OutFile ".\contostweets-metrics-results.json" `
    -Verbose

Il corpo della risposta JSON risultante dovrebbe essere simile all'esempio seguente:The resulting JSON response body would be similar to the following example:

{
  "value": [
    {
      "data": [
        {
          "timeStamp": "2017-08-18T19:00:00Z",
          "total": 0.0
        },
        {
          "timeStamp": "2017-08-18T20:00:00Z",
          "total": 159.0
        },
        {
          "timeStamp": "2017-08-18T21:00:00Z",
          "total": 174.0
        },
        {
          "timeStamp": "2017-08-18T22:00:00Z",
          "total": 97.0
        }
      ],
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets/providers/Microsoft.Insights/metrics/RunsSucceeded",
      "name": {
        "value": "RunsSucceeded",
        "localizedValue": "Runs Succeeded"
      },
      "type": "Microsoft.Insights/metrics",
      "unit": "Count"
    }
  ]
}

Per recuperare più punti dati o di aggregazione, aggiungere i nomi delle definizioni delle metriche e i tipi di aggregazione al filtro, come illustrato nell'esempio seguente:To retrieve multiple data or aggregation points, add the metric definition names and aggregation types to the filter, as seen in the following example:

$filter = "(name.value eq 'ActionsCompleted' or name.value eq 'RunsSucceeded') and (aggregationType eq 'Total' or aggregationType eq 'Average') and startTime eq 2017-08-18T21:00:00 and endTime eq 2017-08-18T21:30:00 and timeGrain eq duration'PT1M'"
$request = "https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets/providers/microsoft.insights/metrics?$filter=${filter}&api-version=2016-09-01"
Invoke-RestMethod -Uri $request `
    -Headers $authHeader `
    -Method Get `
    -OutFile ".\contostweets-metrics-multiple-results.json" `
    -Verbose

Il corpo della risposta JSON risultante dovrebbe essere simile all'esempio seguente:The resulting JSON response body would be similar to the following example:

{
  "value": [
    {
      "data": [
        {
          "timeStamp": "2017-08-18T21:03:00Z",
          "total": 5.0,
          "average": 1.0
        },
        {
          "timeStamp": "2017-08-18T21:04:00Z",
          "total": 7.0,
          "average": 1.0
        }
      ],
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets/providers/Microsoft.Insights/metrics/ActionsCompleted",
      "name": {
        "value": "ActionsCompleted",
        "localizedValue": "Actions Completed "
      },
      "type": "Microsoft.Insights/metrics",
      "unit": "Count"
    },
    {
      "data": [
        {
          "timeStamp": "2017-08-18T21:03:00Z",
          "total": 5.0,
          "average": 1.0
        },
        {
          "timeStamp": "2017-08-18T21:04:00Z",
          "total": 7.0,
          "average": 1.0
        }
      ],
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets/providers/Microsoft.Insights/metrics/RunsSucceeded",
      "name": {
        "value": "RunsSucceeded",
        "localizedValue": "Runs Succeeded"
      },
      "type": "Microsoft.Insights/metrics",
      "unit": "Count"
    }
  ]
}

Usare ARMClientUse ARMClient

Un approccio aggiuntivo consiste nell'usare ARMClient sul proprio computer Windows.An additional approach is to use ARMClient on your Windows machine. ARMClient gestisce automaticamente l'autenticazione di Azure AD (e il token JTW risultante).ARMClient handles the Azure AD authentication (and resulting JWT token) automatically. Di seguito viene illustrato l'uso di ARMClient per recuperare i dati della metrica:The following steps outline the use of ARMClient for retrieving metric data:

  1. Installare Chocolatey e ARMClient.Install Chocolatey and ARMClient.
  2. In una finestra del terminale digitare armclient.exe login.In a terminal window, type armclient.exe login. Viene richiesto di accedere ad Azure.Doing so prompts you to log in to Azure.
  3. Digitare armclient GET [your_resource_id]/providers/microsoft.insights/metricdefinitions?api-version=2016-03-01Type armclient GET [your_resource_id]/providers/microsoft.insights/metricdefinitions?api-version=2016-03-01
  4. Digitare armclient GET [your_resource_id]/providers/microsoft.insights/metrics?api-version=2016-09-01Type armclient GET [your_resource_id]/providers/microsoft.insights/metrics?api-version=2016-09-01

Ad esempio, per poter recuperare le definizioni della metrica per un'app per la logica specifica, eseguire il comando seguente:For example, in order to retrieve the metric definitions for a specific Logic App, issue the following command:

armclient GET /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets/providers/microsoft.insights/metricDefinitions?api-version=2016-03-01

Recuperare l'ID risorsaRetrieve the resource ID

L'uso dell'API REST può aiutare davvero a comprendere le definizioni delle metriche disponibili, la granularità e i valori correlati.Using the REST API can really help to understand the available metric definitions, granularity, and related values. Tali informazioni sono utili quando si usa Azure Management Library.That information is helpful when using the Azure Management Library.

Per il codice precedente, l'ID risorsa da usare è il percorso completo verso la risorsa Azure desiderata.For the preceding code, the resource ID to use is the full path to the desired Azure resource. Ad esempio, per eseguire una query su un'App Web di Azure, l'ID risorsa potrebbe essere:For example, to query against an Azure Web App, the resource ID would be:

/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{site-name}//subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{site-name}/

Il seguente elenco contiene alcuni esempi di formati di ID risorsa per le varie risorse di Azure:The following list contains a few examples of resource ID formats for various Azure resources:

  • Hub IoT - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Devices/IotHubs/{iot-hub-name}IoT Hub - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Devices/IotHubs/{iot-hub-name}
  • Pool elastico di SQL - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{pool-db}/elasticpools/{sql-pool-name}Elastic SQL Pool - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{pool-db}/elasticpools/{sql-pool-name}
  • Database SQL (v12) - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}SQL Database (v12) - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}
  • Bus di servizio - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.ServiceBus/{namespace}/{servicebus-name}Service Bus - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.ServiceBus/{namespace}/{servicebus-name}
  • Set di scalabilità della macchina virtuale - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Compute/virtualMachineScaleSets/{vm-name}Virtual machine scale sets - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Compute/virtualMachineScaleSets/{vm-name}
  • VM - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Compute/virtualMachines/{vm-name}VMs - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Compute/virtualMachines/{vm-name}
  • Hub eventi - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.EventHub/namespaces/{eventhub-namespace}Event Hubs - /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.EventHub/namespaces/{eventhub-namespace}

Esistono approcci alternativi per recuperare l'ID risorsa, tra cui l'uso di Esplora risorse di Azure, la visualizzazione della risorsa desiderata nel portale di Azure e tramite PowerShell o l'interfaccia della riga di comando di Azure.There are alternative approaches to retrieving the resource ID, including using Azure Resource Explorer, viewing the desired resource in the Azure portal, and via PowerShell or the Azure CLI.

Esplora risorse di AzureAzure Resource Explorer

Per trovare l'ID risorsa per la risorsa desiderata, un approccio utile consiste nell'usare lo strumento Esplora risorse di Azure .To find the resource ID for a desired resource, one helpful approach is to use the Azure Resource Explorer tool. Individuare la risorsa desiderata e quindi esaminare l'ID indicato, come illustrato nella schermata seguente:Navigate to the desired resource and then look at the ID shown, as in the following screenshot:

Alt "Esplora risorse di Azure"

Portale di AzureAzure portal

L'ID risorsa può anche essere ottenuto dal portale di Azure.The resource ID can also be obtained from the Azure portal. A tale scopo, accedere alla risorsa desiderata e scegliere Proprietà.To do so, navigate to the desired resource and then select Properties. L'ID risorsa viene visualizzato nella sezione Proprietà, come illustrato nella schermata seguente:The Resource ID is displayed in the Properties section, as seen in the following screenshot:

Alt "ID risorsa visualizzato nel pannello Proprietà del portale di Azure"

Azure PowerShellAzure PowerShell

L'ID risorsa può essere recuperato anche tramite i cmdlet di Azure PowerShell.The resource ID can be retrieved using Azure PowerShell cmdlets as well. Ad esempio, per ottenere l'ID risorsa per un'app per la logica di Azure, eseguire Get-AzureLogicApp cmdlet, come illustrato nell'esempio seguente:For example, to obtain the resource ID for an Azure Logic App, execute the Get-AzureLogicApp cmdlet, as in the following example:

Get-AzureRmLogicApp -ResourceGroupName azmon-rest-api-walkthrough -Name contosotweets

Il risultato dovrebbe essere simile all'esempio seguente:The result should be similar to the following example:

Id             : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets
Name           : ContosoTweets
Type           : Microsoft.Logic/workflows
Location       : centralus
ChangedTime    : 8/21/2017 6:58:57 PM
CreatedTime    : 8/18/2017 7:54:21 PM
AccessEndpoint : https://prod-08.centralus.logic.azure.com:443/workflows/f3a91b352fcc47e6bff989b85446c5db
State          : Enabled
Definition     : {$schema, contentVersion, parameters, triggers...}
Parameters     : {[$connections, Microsoft.Azure.Management.Logic.Models.WorkflowParameter]}
SkuName        :
AppServicePlan :
PlanType       :
PlanId         :
Version        : 08586982649483762729

Interfaccia della riga di comando di AzureAzure CLI

Per recuperare l'ID di risorsa per un account di archiviazione di Azure usando l'interfaccia della riga di comando di Azure, eseguire il comando "az storage account show", come illustrato nell'esempio seguente:To retrieve the resource ID for an Azure Storage account using the Azure CLI, execute the 'az storage account show' command, as shown in the following example:

az storage account show -g azmon-rest-api-walkthrough -n contosotweets2017

Il risultato dovrebbe essere simile all'esempio seguente:The result should be similar to the following example:

{
  "accessTier": null,
  "creationTime": "2017-08-18T19:58:41.840552+00:00",
  "customDomain": null,
  "enableHttpsTrafficOnly": false,
  "encryption": null,
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/contosotweets2017",
  "identity": null,
  "kind": "Storage",
  "lastGeoFailoverTime": null,
  "location": "centralus",
  "name": "contosotweets2017",
  "networkAcls": null,
  "primaryEndpoints": {
    "blob": "https://contosotweets2017.blob.core.windows.net/",
    "file": "https://contosotweets2017.file.core.windows.net/",
    "queue": "https://contosotweets2017.queue.core.windows.net/",
    "table": "https://contosotweets2017.table.core.windows.net/"
  },
  "primaryLocation": "centralus",
  "provisioningState": "Succeeded",
  "resourceGroup": "azmon-rest-api-walkthrough",
  "secondaryEndpoints": null,
  "secondaryLocation": "eastus2",
  "sku": {
    "name": "Standard_GRS",
    "tier": "Standard"
  },
  "statusOfPrimary": "available",
  "statusOfSecondary": "available",
  "tags": {},
  "type": "Microsoft.Storage/storageAccounts"
}

Nota

Le app per la logica di Azure non sono ancora disponibili tramite l'interfaccia della riga di comando di Azure, pertanto un account di archiviazione di Azure è illustrato nell'esempio precedente.Azure Logic Apps are not yet available via the Azure CLI, thus an Azure Storage account is shown in the preceding example.

Recuperare i dati del registro attivitàRetrieve activity log data

Oltre alle definizioni delle metriche e ai valori correlati, è anche possibile usare l'API REST di monitoraggio di Azure per recuperare interessanti informazioni aggiuntive relative alle risorse di Azure.In addition to metric definitions and related values, it is also possible to use the Azure Monitor REST API to retrieve additional interesting insights related to Azure resources. Ad esempio, è possibile eseguire query sui dati del registro attività .As an example, it is possible to query activity log data. Nell'esempio seguente viene illustrato l'uso dell'API REST di monitoraggio di Azure per eseguire query sui dati del registro attività all'interno di un intervallo di date specifico per una sottoscrizione di Azure:The following sample demonstrates using the Azure Monitor REST API to query activity log data within a specific date range for an Azure subscription:

$apiVersion = "2015-04-01"
$filter = "eventTimestamp ge '2017-08-18' and eventTimestamp le '2017-08-19'and eventChannels eq 'Admin, Operation'"
$request = "https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/microsoft.insights/eventtypes/management/values?api-version=${apiVersion}&$filter=${filter}"
Invoke-RestMethod -Uri $request `
    -Headers $authHeader `
    -Method Get `
    -Verbose

Passaggi successiviNext steps