Créer la surveillance des tâches Stream Analytics par programmationProgrammatically create a Stream Analytics job monitor

Cet article explique comment activer la surveillance d'une tâche Stream Analytics.This article demonstrates how to enable monitoring for a Stream Analytics job. Par défaut, la surveillance n'est pas activée pour les travaux Stream Analytics créés par le biais des API REST, du kit de développement logiciel (SDK) Azure ou de PowerShell.Stream Analytics jobs that are created via REST APIs, Azure SDK, or PowerShell do not have monitoring enabled by default. Vous pouvez l’activer manuellement sur le portail Azure. Pour cela, accédez à la page Surveiller du travail et cliquez sur le bouton Activer. Vous pouvez également automatiser ce processus en suivant les étapes décrites dans cet article.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. Les données de surveillance sont affichées dans la zone Métriques du portail Azure pour le travail Stream Analytics.The monitoring data will show up in the Metrics area of the Azure portal for your Stream Analytics job.

PrérequisPrerequisites

Avant de commencer à lire ce processus, vous devez disposer des éléments suivants :Before you begin this process, you must have the following prerequisites:

  • Visual Studio 2019 ou 2015Visual Studio 2019 or 2015
  • kit de développement logiciel (SDK) Azure .NET téléchargé et installéAzure .NET SDK downloaded and installed
  • Un travail Stream Analytics existant pour lequel la surveillance doit être activéeAn existing Stream Analytics job that needs to have monitoring enabled

Création d’un projetCreate a project

  1. Créez une application console Visual Studio .NET C#.Create a Visual Studio C# .NET console application.

  2. Dans la console du Gestionnaire de package, exécutez les commandes suivantes pour installer les packages NuGet.In the Package Manager Console, run the following commands to install the NuGet packages. Le premier est le Kit de développement logiciel (SDK) .NET de gestion Azure Stream Analytics.The first one is the Azure Stream Analytics Management .NET SDK. Le second est le SDK Azure Monitor qui sera utilisé pour activer la surveillance.The second one is the Azure Monitor SDK that will be used to enable monitoring. Le dernier est le client Azure Active Directory utilisé pour l'authentification.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. Ajoutez la section appSettings suivante au fichier 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>
    

    Remplacez les valeurs de SubscriptionId et ActiveDirectoryTenantId par votre ID d’abonnement et votre ID de locataire Azure.Replace values for SubscriptionId and ActiveDirectoryTenantId with your Azure subscription and tenant IDs. Vous pouvez obtenir ces valeurs en exécutant l'applet de commande PowerShell suivante :You can get these values by running the following PowerShell cmdlet:

    Get-AzureAccount
    
  4. Ajoutez les instructions using suivantes au fichier source (Program.cs) dans le projet.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. Ajoutez une méthode d'aide pour l'authentification.Add an authentication helper method.

    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");
    }
    

Création de clients de gestionCreate management clients

Le code suivant définit les variables nécessaires et les clients de gestion.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);

Activation de la surveillance pour un travail Stream Analytics existantEnable monitoring for an existing Stream Analytics job

Le code suivant permet d'activer la surveillance pour un travail Stream Analytics existant.The following code enables monitoring for an existing Stream Analytics job. La première partie du code exécute une requête GET sur le service Stream Analytics pour récupérer des informations sur le travail Stream Analytics spécifique.The first part of the code performs a GET request against the Stream Analytics service to retrieve information about the particular Stream Analytics job. Elle utilise la propriété ID (récupérée à partir de la requête GET) en tant que paramètre pour la méthode Put dans la seconde moitié du code qui envoie une requête PUT au service Insights afin d'activer la surveillance du travail Stream Analytics.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.

Avertissement

Si vous avez déjà activé la surveillance pour un travail Stream Analytics différente par le passé, via le portail Azure ou par programmation via le code ci-dessous, nous vous recommandons de fournir le même nom de compte de stockage que celui utilisé lors de l’activation de la surveillance.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.

Le compte de stockage est lié à la région dans laquelle vous avez créé la tâche Stream Analytics, pas spécifiquement à la tâche en soi.The storage account is linked to the region that you created your Stream Analytics job in, not specifically to the job itself.

Tous les travaux Stream Analytics (et l’ensemble des autres ressources Microsoft Azure) d’une même région partagent ce compte de stockage afin d’y consigner les données de surveillance.All Stream Analytics jobs (and all other Azure resources) in that same region share this storage account to store monitoring data. Si vous communiquez un compte de stockage différent, cela peut entraîner des effets collatéraux imprévus sur la surveillance de vos autres travaux Stream Analytics ou autres ressources Microsoft 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.

Le compte de stockage utilisé pour remplacer <YOUR STORAGE ACCOUNT NAME> dans le code ci-dessous doit être un compte de stockage qui se trouve dans l’abonnement du travail Stream Analytics pour lequel vous avez activé la surveillance.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);

Obtenir de l’aideGet support

Pour obtenir de l’aide supplémentaire, consultez notre page de questions Microsoft Q&A pour Azure Stream Analytics.For further assistance, try our Microsoft Q&A question page for Azure Stream Analytics.

Étapes suivantesNext steps