Programové vytvoření monitorování úloh Stream Analytics

Tento článek ukazuje, jak povolit monitorování pro úlohu Stream Analytics. Úlohy Stream Analytics vytvořené prostřednictvím rozhraní REST API, sady Azure SDK nebo PowerShellu ve výchozím nastavení nemají povolené monitorování. Můžete ho ručně povolit na webu Azure Portal tak, že přejdete na stránku Monitorování úlohy a kliknete na tlačítko Povolit nebo můžete tento proces automatizovat pomocí kroků v tomto článku. Data monitorování se zobrazí v oblasti Metriky na webu Azure Portal pro vaši úlohu Stream Analytics.

Požadavky

Před zahájením tohoto procesu musíte mít následující požadavky:

  • Visual Studio 2019 nebo 2015
  • Sada Azure .NET SDK se stáhla a nainstalovala
  • Existující úloha Stream Analytics, která musí mít povolené monitorování

Vytvoření projektu

  1. Vytvořte konzolovou aplikaci Visual Studio C# .NET.

  2. V konzole Správce balíčků spusťte následující příkazy pro instalaci balíčků NuGet. První je sada .NET SDK pro správu Azure Stream Analytics. Druhým je sada SDK služby Azure Monitor, která se použije k povolení monitorování. Poslední je klient Microsoft Entra, který se použije k ověřování.

    Install-Package Microsoft.Azure.Management.StreamAnalytics
    Install-Package Microsoft.Azure.Insights -Pre
    Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
    
  3. Do souboru App.config přidejte následující část Nastavení.

    <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>
    

    Nahraďte hodnoty SubscriptionId a ActiveDirectoryTenantId id vašeho předplatného Azure a ID tenanta. Tyto hodnoty můžete získat spuštěním následující rutiny PowerShellu:

    Get-AzureAccount
    
  4. Do zdrojového souboru (Program.cs) v projektu přidejte následující příkazy using.

      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. Přidejte pomocnou metodu ověřování.

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

Vytváření klientů pro správu

Následující kód nastaví potřebné proměnné a klienty pro správu.

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

Povolení monitorování pro existující úlohu Stream Analytics

Následující kód umožňuje monitorování existující úlohy Stream Analytics. První část kódu provede vůči službě Stream Analytics požadavek GET, který načte informace o konkrétní úloze Stream Analytics. Používá vlastnost ID (načtenou z požadavku GET) jako parametr pro metodu Put v druhé polovině kódu, která odešle požadavek PUT do služby Přehledy k povolení monitorování úlohy Stream Analytics.

Upozorňující

Pokud jste dříve povolili monitorování pro jinou úlohu Stream Analytics, ať už prostřednictvím webu Azure Portal, nebo prostřednictvím kódu níže, doporučujeme zadat stejný název účtu úložiště, který jste použili při předchozím povolení monitorování.

Účet úložiště je propojený s oblastí, ve které jste vytvořili úlohu Stream Analytics, nikoli konkrétně s samotnou úlohou.

Všechny úlohy Stream Analytics (a všechny ostatní prostředky Azure) ve stejné oblasti sdílejí tento účet úložiště pro ukládání dat monitorování. Pokud zadáte jiný účet úložiště, může to způsobit nezamýšlené vedlejší účinky při monitorování jiných úloh Stream Analytics nebo jiných prostředků Azure.

Název účtu úložiště, který použijete k nahrazení <YOUR STORAGE ACCOUNT NAME> v následujícím kódu, by měl být účet úložiště, který je ve stejném předplatném jako úloha Stream Analytics, pro kterou povolujete monitorování.

// 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);

Získání podpory

Pokud potřebujete další pomoc, vyzkoušejte naši stránku pro otázky Microsoftu pro Azure Stream Analytics.

Další kroky