Membuat pemantauan pekerjaan Stream Analytics secara terprogram

Artikel ini menunjukkan cara mengaktifkan pemantauan untuk pekerjaan Stream Analytics. Pekerjaan Stream Analytics yang dibuat melalui REST API, Azure SDK, atau PowerShell tidak memiliki pemantauan yang diaktifkan secara default. Anda dapat mengaktifkannya secara manual di portal Azure dengan masuk ke halaman Pemantauan pekerjaan dan mengklik tombol Aktifkan atau Anda dapat mengotomatiskan proses ini dengan mengikuti langkah-langkah dalam artikel ini. Data pemantauan akan muncul di area Metrik portal Azure untuk pekerjaan Stream Analytics Anda.

Prasyarat

Sebelum memulai proses ini, Anda harus memiliki prasyarat berikut:

  • Visual Studio 2019 atau 2015
  • Mengunduh dan menginstal Azure .NET SDK
  • Pekerjaan Stream Analytics yang sudah ada yang perlu mengaktifkan pemantauan

Membuat proyek

  1. Buat aplikasi konsol C# .NET Visual Studio.

  2. Di Konsol Manajer Paket, jalankan perintah berikut untuk menginstal paket NuGet. Yang pertama adalah .NET SDK Manajemen Azure Stream Analytics. Yang kedua adalah Azure Monitor SDK yang akan digunakan untuk mengaktifkan pemantauan. Yang terakhir adalah klien Microsoft Entra yang akan digunakan untuk autentikasi.

    Install-Package Microsoft.Azure.Management.StreamAnalytics
    Install-Package Microsoft.Azure.Insights -Pre
    Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
    
  3. Tambahkan bagian appSettings berikut ke file 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>
    

    Ganti nilai untuk SubscriptionId dan ActiveDirectoryTenantId dengan langganan Azure dan ID penyewa Anda. Anda bisa mendapatkan nilai ini dengan menjalankan cmdlet PowerShell berikut:

    Get-AzureAccount
    
  4. Tambahkan berikut menggunakan pernyataan ke file sumber (Program.cs) dalam proyek.

      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. Tambahkan metode pendukung autentikasi

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

Membuat klien manajemen

Kode berikut akan menyiapkan variabel dan klien manajemen yang diperlukan.

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

Mengaktifkan pemantauan untuk pekerjaan Stream Analytics yang sudah ada

Kode berikut memungkinkan pemantauan untuk pekerjaan Stream Analyticsyang sudah ada. Bagian pertama dari kode melakukan permintaan GET terhadap layanan Stream Analytics untuk mengambil informasi tentang pekerjaan Stream Analytics tertentu. Ini menggunakan properti ID (diambil dari permintaan GET) sebagai parameter untuk metode Put di paruh kedua kode, yang mengirim permintaan PUT ke layanan Wawasan untuk memungkinkan pemantauan untuk pekerjaan Stream Analytics.

Peringatan

Jika sebelumnya Anda telah mengaktifkan pemantauan untuk pekerjaan Stream Analytics yang berbeda, baik melalui portal Azure atau secara terprogram melalui kode di bawah, sebaiknya berikan nama akun penyimpanan yang sama dengan yang Anda gunakan saat sebelumnya mengaktifkan pemantauan.

Akun penyimpanan ditautkan ke wilayah tempat Anda membuat pekerjaan Stream Analytics, tidak khusus untuk pekerjaan itu sendiri.

Semua lowongan Stream Analytics (dan semua sumber daya Azure lainnya) di wilayah yang sama berbagi akun penyimpanan ini untuk menyimpan data pemantauan. Jika Anda menyediakan akun penyimpanan lain, akun tersebut mungkin menyebabkan efek samping yang tidak diinginkan dalam pemantauan pekerjaan Stream Analytics yang lain atau sumber daya Azure lainnya.

Nama akun penyimpanan yang Anda gunakan untuk mengganti <YOUR STORAGE ACCOUNT NAME> di kode berikut harus menjadi akun penyimpanan yang berada dalam langganan yang sama dengan pekerjaan Stream Analytics yang dapat Anda pantau.

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

Dapatkan dukungan

Untuk bantuan lebih lanjut, coba halaman pertanyaan Microsoft Q&A untuk Azure Stream Analytics.

Langkah berikutnya