Creare un monitoraggio dei processi di Analisi di flusso a livello di codiceProgrammatically create a Stream Analytics job monitor

In questo articolo viene illustrato come abilitare il monitoraggio per un processo di analisi di flusso.This article demonstrates how to enable monitoring for a Stream Analytics job. Per i processi di analisi di flusso creati tramite le API REST, Azure SDK o PowerShell, il monitoraggio non è abilitato per impostazione predefinita.Stream Analytics jobs that are created via REST APIs, Azure SDK, or PowerShell do not have monitoring enabled by default. È possibile attivare questa funzione manualmente nel portale di Azure passando alla pagina Monitoraggio del processo e facendo clic sul pulsante Attiva oppure è possibile automatizzare il processo seguendo la procedura descritta in questo articolo.You can manually enable it in the Azure portal by going to the job’s Monitor page and clicking the Enable button or you can automate this process by following the steps in this article. I dati di monitoraggio verranno visualizzati nell'area Metrica del portale di Azure relativa al processo di analisi di flusso.The monitoring data will show up in the Metrics area of the Azure portal for your Stream Analytics job.

PrerequisitiPrerequisites

Per iniziare il processo è necessario disporre degli strumenti seguenti:Before you begin this process, you must have the following:

  • Visual Studio 2017 o 2015Visual Studio 2017 or 2015
  • Azure .NET SDK scaricato e installatoAzure .NET SDK downloaded and installed
  • Un processo di analisi di flusso esistente che richiede l'abilitazione del monitoraggio.An existing Stream Analytics job that needs to have monitoring enabled

Creare un progettoCreate a project

  1. Creare un'applicazione console .NET di Visual Studio C#.Create a Visual Studio C# .NET console application.
  2. Nella Console di Gestione pacchetti, eseguire i comandi seguenti per installare i pacchetti NuGet.In the Package Manager Console, run the following commands to install the NuGet packages. Il primo è l'SDK per .NET di Analisi di flusso di Azure.The first one is the Azure Stream Analytics Management .NET SDK. Il secondo è l'SDK di Monitoraggio di Azure, che verrà usato per abilitare il monitoraggio.The second one is the Azure Monitor SDK that will be used to enable monitoring. L'ultimo è il client Azure Active Directory che verrà usato per l'autenticazione.The last one is the Azure Active Directory client that will be used for authentication.

    Install-Package Microsoft.Azure.Management.StreamAnalytics
    Install-Package Microsoft.Azure.Insights -Pre
    Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
    
  3. Aggiungere la sezione appSettings seguente al file App.config:Add the following appSettings section to the App.config file.

    <appSettings>
      <!--CSM Prod related values-->
      <add key="ResourceGroupName" value="RESOURCE GROUP NAME" />
      <add key="JobName" value="YOUR JOB NAME" />
      <add key="StorageAccountName" value="YOUR STORAGE ACCOUNT"/>
      <add key="ActiveDirectoryEndpoint" value="https://login.microsoftonline.com/" />
      <add key="ResourceManagerEndpoint" value="https://management.azure.com/" />
      <add key="WindowsManagementUri" value="https://management.core.windows.net/" />
      <add key="AsaClientId" value="1950a258-227b-4e31-a9cf-717495945fc2" />
      <add key="RedirectUri" value="urn:ietf:wg:oauth:2.0:oob" />
      <add key="SubscriptionId" value="YOUR AZURE SUBSCRIPTION ID" />
      <add key="ActiveDirectoryTenantId" value="YOUR TENANT ID" />
    </appSettings>
    

    Sostituire i valori per SubscriptionId e ActiveDirectoryTenantId con gli ID della sottoscrizione di Azure e del tenant.Replace values for SubscriptionId and ActiveDirectoryTenantId with your Azure subscription and tenant IDs. È possibile ottenere questi valori eseguendo il cmdlet PowerShell seguente:You can get these values by running the following PowerShell cmdlet:

    Get-AzureAccount
    
  4. Aggiungere le istruzioni using seguenti al file di origine (Program.cs) nel progetto.Add the following using statements to the source file (Program.cs) in the project.

      using System;
      using System.Configuration;
      using System.Threading;
      using Microsoft.Azure;
      using Microsoft.Azure.Management.Insights;
      using Microsoft.Azure.Management.Insights.Models;
      using Microsoft.Azure.Management.StreamAnalytics;
      using Microsoft.Azure.Management.StreamAnalytics.Models;
      using Microsoft.IdentityModel.Clients.ActiveDirectory;
    
  5. Aggiungere un metodo helper di autenticazione.Add an authentication helper method.

    public static string GetAuthorizationHeader()public static string GetAuthorizationHeader()

      {
          AuthenticationResult result = null;
          var thread = new Thread(() =>
          {
              try
              {
                  var context = new AuthenticationContext(
                      ConfigurationManager.AppSettings["ActiveDirectoryEndpoint"] +
                      ConfigurationManager.AppSettings["ActiveDirectoryTenantId"]);
    
                  result = context.AcquireToken(
                      resource: ConfigurationManager.AppSettings["WindowsManagementUri"],
                      clientId: ConfigurationManager.AppSettings["AsaClientId"],
                      redirectUri: new Uri(ConfigurationManager.AppSettings["RedirectUri"]),
                      promptBehavior: PromptBehavior.Always);
              }
              catch (Exception threadEx)
              {
                  Console.WriteLine(threadEx.Message);
              }
          });
    
          thread.SetApartmentState(ApartmentState.STA);
          thread.Name = "AcquireTokenThread";
          thread.Start();
          thread.Join();
    
          if (result != null)
          {
              return result.AccessToken;
          }
    
          throw new InvalidOperationException("Failed to acquire token");
    

    }}

Creare i client di gestioneCreate management clients

Il codice seguente configurerà le variabili e i client di gestione necessari.The following code will set up the necessary variables and management clients.

string resourceGroupName = "<YOUR AZURE RESOURCE GROUP NAME>";
string streamAnalyticsJobName = "<YOUR STREAM ANALYTICS JOB NAME>";

// Get authentication token
TokenCloudCredentials aadTokenCredentials =
    new TokenCloudCredentials(
        ConfigurationManager.AppSettings["SubscriptionId"],
        GetAuthorizationHeader());

Uri resourceManagerUri = new
Uri(ConfigurationManager.AppSettings["ResourceManagerEndpoint"]);

// Create Stream Analytics and Insights management client
StreamAnalyticsManagementClient streamAnalyticsClient = new
StreamAnalyticsManagementClient(aadTokenCredentials, resourceManagerUri);
InsightsManagementClient insightsClient = new
InsightsManagementClient(aadTokenCredentials, resourceManagerUri);

Abilitare il monitoraggio per un processo di analisi di flusso esistenteEnable monitoring for an existing Stream Analytics job

Il codice seguente abilita il monitoraggio per un processo di analisi di flusso esistente.The following code enables monitoring for an existing Stream Analytics job. La prima parte del codice esegue una richiesta GET al servizio di Analisi dei flussi per recuperare informazioni sul processo di Analisi dei flussi specifico.The first part of the code performs a GET request against the Stream Analytics service to retrieve information about the particular Stream Analytics job. Viene usa la proprietà Id (recuperata dalla richiesta GET) come parametro per il metodo Put nella seconda metà del codice, che invia una richiesta PUT al servizio Insights per abilitare il monitoraggio del processo di analisi di flusso.It uses the Id property (retrieved from the GET request) as a parameter for the Put method in the second half of the code, which sends a PUT request to the Insights service to enable monitoring for the Stream Analytics job.

Avviso

Se la funzione di monitoraggio è stata precedentemente abilitata per un processo di analisi di flusso diverso, tramite il portale di Azure o a livello di programmazione con il codice riportato di seguito, è consigliabile specificare lo stesso nome di account di archiviazione usato nel monitoraggio abilitato precedentemente.If you have previously enabled monitoring for a different Stream Analytics job, either through the Azure portal or programmatically via the below code, we recommend that you provide the same storage account name that you used when you previously enabled monitoring.

L'account di archiviazione è collegato all'area in cui è stato creato il processo di analisi di flusso, non specificamente al processo stesso.The storage account is linked to the region that you created your Stream Analytics job in, not specifically to the job itself.

Tutti i processi di analisi di flusso (e tutte le altre risorse di Azure) nella stessa area condividono questo account di archiviazione per archiviare i dati di monitoraggio.All Stream Analytics jobs (and all other Azure resources) in that same region share this storage account to store monitoring data. Se si specifica un account di archiviazione diverso, potrebbero verificarsi effetti collaterali imprevisti durante il monitoraggio di altri processi di analisi di flusso e/o altre risorse di Azure.If you provide a different storage account, it might cause unintended side effects in the monitoring of your other Stream Analytics jobs or other Azure resources.

Il nome dell'account di archiviazione usato per sostituire <YOUR STORAGE ACCOUNT NAME> nel codice seguente deve essere un account di archiviazione presente nella stessa sottoscrizione del processo di analisi di flusso per cui viene abilitato il monitoraggio.The storage account name that you use to replace <YOUR STORAGE ACCOUNT NAME> in the following code should be a storage account that is in the same subscription as the Stream Analytics job that you are enabling monitoring for.

// Get an existing Stream Analytics job
JobGetParameters jobGetParameters = new JobGetParameters()
{
    PropertiesToExpand = "inputs,transformation,outputs"
};
JobGetResponse jobGetResponse = streamAnalyticsClient.StreamingJobs.Get(resourceGroupName, streamAnalyticsJobName, jobGetParameters);

// Enable monitoring
ServiceDiagnosticSettingsPutParameters insightPutParameters = new ServiceDiagnosticSettingsPutParameters()
{
        Properties = new ServiceDiagnosticSettings()
        {
            StorageAccountName = "<YOUR STORAGE ACCOUNT NAME>"
        }
};
insightsClient.ServiceDiagnosticSettingsOperations.Put(jobGetResponse.Job.Id, insightPutParameters);

SupportoGet support

Per ulteriore assistenza, provare il Forum di Analisi dei flussi di Azure.For further assistance, try our Azure Stream Analytics forum.

Passaggi successiviNext steps