Skapa en Stream Analytics-jobbövervakare programmatiskt

Den här artikeln visar hur du aktiverar övervakning för ett Stream Analytics-jobb. Stream Analytics-jobb som skapas via REST-API:er, Azure SDK eller PowerShell har inte övervakning aktiverat som standard. Du kan aktivera den manuellt i Azure-portalen genom att gå till jobbets övervakningssida och klicka på knappen Aktivera, eller så kan du automatisera den här processen genom att följa stegen i den här artikeln. Övervakningsdata visas i området Mått i Azure-portalen för ditt Stream Analytics-jobb.

Förutsättningar

Innan du påbörjar den här processen måste du ha följande förutsättningar:

  • Visual Studio 2019 eller 2015
  • Azure .NET SDK har laddats ned och installerats
  • Ett befintligt Stream Analytics-jobb som måste ha övervakning aktiverat

Skapa ett projekt

  1. Skapa ett Visual Studio C# .NET-konsolprogram.

  2. I Package Manager-konsolen kör du följande kommandon för att installera NuGet-paketen. Den första är Azure Stream Analytics Management .NET SDK. Den andra är Azure Monitor SDK som ska användas för att aktivera övervakning. Den sista är Microsoft Entra-klienten som ska användas för autentisering.

    Install-Package Microsoft.Azure.Management.StreamAnalytics
    Install-Package Microsoft.Azure.Insights -Pre
    Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
    
  3. Lägg till följande app Inställningar avsnitt i filen App.config.

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

    Ersätt värden för SubscriptionId och ActiveDirectoryTenantId med dina Azure-prenumerations- och klient-ID:er. Du kan hämta dessa värden genom att köra följande PowerShell-cmdlet:

    Get-AzureAccount
    
  4. Lägg till följande genom att använda instruktioner till källfilen (Program.cs) i projektet.

      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. Lägg till en autentiseringshjälpmetod.

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

Skapa hanteringsklienter

Följande kod konfigurerar nödvändiga variabler och hanteringsklienter.

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

Aktivera övervakning för ett befintligt Stream Analytics-jobb

Följande kod aktiverar övervakning för ett befintligt Stream Analytics-jobb. Den första delen av koden utför en GET-begäran mot Stream Analytics-tjänsten för att hämta information om det specifika Stream Analytics-jobbet. Den använder ID-egenskapen (hämtad från GET-begäran) som en parameter för metoden Put i den andra halvan av koden, som skickar en PUT-begäran till Insights-tjänsten för att aktivera övervakning för Stream Analytics-jobbet.

Varning

Om du tidigare har aktiverat övervakning för ett annat Stream Analytics-jobb, antingen via Azure-portalen eller programmatiskt via koden nedan, rekommenderar vi att du anger samma lagringskontonamn som du använde när du tidigare aktiverade övervakning.

Lagringskontot är länkat till den region som du skapade ditt Stream Analytics-jobb i, inte specifikt till själva jobbet.

Alla Stream Analytics-jobb (och alla andra Azure-resurser) i samma region delar det här lagringskontot för att lagra övervakningsdata. Om du anger ett annat lagringskonto kan det orsaka oavsiktliga biverkningar i övervakningen av dina andra Stream Analytics-jobb eller andra Azure-resurser.

Det lagringskontonamn som du använder för att ersätta <YOUR STORAGE ACCOUNT NAME> i följande kod bör vara ett lagringskonto som finns i samma prenumeration som Stream Analytics-jobbet som du aktiverar övervakning för.

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

Få support

Om du vill ha mer hjälp kan du prova vår frågesida för Microsoft Q&A för Azure Stream Analytics.

Nästa steg