Programové vytvoření monitorování úloh Stream Analytics
Tento článek ukazuje, jak povolit monitorování Stream Analytics úlohy. Stream Analytics úlohy vytvořené přes rozhraní REST API, Azure SDK nebo PowerShell nemají ve výchozím nastavení povolené monitorování. Můžete ji ručně povolit v Azure Portal tak, že přejdete na stránku monitorování úlohy a kliknete na tlačítko Povolit nebo tento proces můžete automatizovat podle kroků v tomto článku. Data monitorování se zobrazí v oblasti metriky Azure Portal pro vaši úlohu Stream Analytics.
Požadavky
Než zahájíte tento proces, musíte splnit následující předpoklady:
- Visual Studio 2019 nebo 2015
- Stažená a nainstalovaná sada Azure .NET SDK
- Existující úloha Stream Analytics, která musí mít povolené monitorování
Vytvoření projektu
Vytvořte konzolovou aplikaci Visual Studio C# .NET.
V konzole správce balíčků spusťte následující příkazy a nainstalujte balíčky NuGet. První z nich je sada Azure Stream Analytics Management .NET SDK. Druhým je Azure Monitor sada SDK, která se bude používat k povolení monitorování. Poslední je klient Azure Active Directory, který se bude používat pro ověřování.
Install-Package Microsoft.Azure.Management.StreamAnalytics Install-Package Microsoft.Azure.Insights -Pre Install-Package Microsoft.IdentityModel.Clients.ActiveDirectoryDo souboru App.config přidejte následující oddíl appSettings.
<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 vaším předplatným Azure a ID tenantů. Tyto hodnoty můžete získat spuštěním následující rutiny prostředí PowerShell:
Get-AzureAccountDo 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;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);
Povolit monitorování pro existující úlohu Stream Analytics
Následující kód umožňuje monitorování pro existující úlohu Stream Analytics. První část kódu provádí požadavek GET na službu Stream Analytics, aby načetla informace o konkrétní Stream Analytics úlohy. Používá vlastnost ID (získanou z požadavku GET) jako parametr metody Put v druhé polovině kódu, který ODEŠLE požadavek PUT do služby Insights, aby povolil monitorování Stream Analytics úlohy.
Upozornění
Pokud jste dříve povolili monitorování pro jinou Stream Analytics úlohu, a to buď prostřednictvím Azure Portal nebo programově prostřednictvím níže uvedeného kódu, doporučujeme zadat stejný název účtu úložiště, který jste použili, když jste předtím povolili monitorování.
Účet úložiště je propojený s oblastí, ve které jste vytvořili úlohu Stream Analytics, a ne specificky pro samotnou úlohu.
Všechny úlohy Stream Analytics (a všechny ostatní prostředky Azure) v této 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í dalších Stream Analytics úloh 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ý se nachází ve stejném předplatném jako Stream Analytics úloha, 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 chcete získat další pomoc, vyzkoušejte si naši stránku Microsoft Q&Azure Stream Analytics.