Programmatisch een Stream Analytics-taakmonitor maken
In dit artikel wordt beschreven hoe u bewaking voor een Stream Analytics-taak inschakelt. Stream Analytics-taken die zijn gemaakt via REST API's, Azure SDK of PowerShell, hebben standaard geen bewaking ingeschakeld. U kunt deze handmatig inschakelen in Azure Portal door naar de pagina Monitor van de taak te gaan en op de knop Inschakelen te klikken of u kunt dit proces automatiseren door de stappen in dit artikel te volgen. De bewakingsgegevens worden weergegeven in het gebied Metrische gegevens van Azure Portal voor uw Stream Analytics-taak.
Vereisten
Voordat u met dit proces begint, moet u aan de volgende vereisten voldoen:
- Visual Studio 2019 of 2015
- Azure .NET SDK gedownload en geïnstalleerd
- Een bestaande Stream Analytics-taak waarvoor bewaking moet zijn ingeschakeld
Een project maken
Maak een Visual Studio C# .NET-consoletoepassing.
Voer in de Pakketbeheer Console de volgende opdrachten uit om de NuGet-pakketten te installeren. De eerste is de Azure Stream Analytics Management .NET SDK. De tweede is de Azure Monitor SDK die wordt gebruikt om bewaking in te schakelen. De laatste is de Microsoft Entra-client die wordt gebruikt voor verificatie.
Install-Package Microsoft.Azure.Management.StreamAnalytics Install-Package Microsoft.Azure.Insights -Pre Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
Voeg de volgende app Instellingen sectie toe aan het app.config-bestand.
<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>
Vervang waarden voor SubscriptionId en ActiveDirectoryTenantId door uw Azure-abonnement en tenant-id's. U kunt deze waarden ophalen door de volgende PowerShell-cmdlet uit te voeren:
Get-AzureAccount
Voeg de volgende using-instructies toe aan het bronbestand (Program.cs) in het 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;
Voeg een verificatiehulpmethode toe.
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"); }
Beheerclients maken
Met de volgende code worden de benodigde variabelen en beheerclients ingesteld.
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);
Bewaking inschakelen voor een bestaande Stream Analytics-taak
Met de volgende code kunt u bewaking voor een bestaande Stream Analytics-taak inschakelen. Het eerste deel van de code voert een GET-aanvraag uit voor de Stream Analytics-service om informatie over de specifieke Stream Analytics-taak op te halen. De id-eigenschap (opgehaald uit de GET-aanvraag) wordt gebruikt als parameter voor de Put-methode in de tweede helft van de code, waarmee een PUT-aanvraag naar de Insights-service wordt verzonden om bewaking voor de Stream Analytics-taak mogelijk te maken.
Waarschuwing
Als u eerder bewaking hebt ingeschakeld voor een andere Stream Analytics-taak, via Azure Portal of programmatisch via de onderstaande code, raden we u aan dezelfde opslagaccountnaam op te geven die u hebt gebruikt toen u eerder bewaking hebt ingeschakeld.
Het opslagaccount is gekoppeld aan de regio waarin u uw Stream Analytics-taak hebt gemaakt, niet specifiek voor de taak zelf.
Alle Stream Analytics-taken (en alle andere Azure-resources) in dezelfde regio delen dit opslagaccount om bewakingsgegevens op te slaan. Als u een ander opslagaccount opgeeft, kan dit onbedoelde neveneffecten veroorzaken bij het bewaken van uw andere Stream Analytics-taken of andere Azure-resources.
De naam van het opslagaccount die u in de volgende code gebruikt <YOUR STORAGE ACCOUNT NAME>
, moet een opslagaccount zijn dat zich in hetzelfde abonnement bevindt als de Stream Analytics-taak waarvoor u bewaking inschakelt.
// 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);
Ondersteuning krijgen
Probeer onze microsoft Q&A-vragenpagina voor Azure Stream Analytics voor meer hulp.