Quickstart: De clientbibliotheken of REST API's gebruiken om uw oplossing aan te passen
Aan de slag met de Metrics Advisor REST API of clientbibliotheken. Volg deze stappen om het pakket te installeren en de voorbeeldcode voor basistaken uit te proberen.
Met Metrics Advisor kunt u het volgende doen:
- Een gegevensfeed van een gegevensbron toevoegen
- Opnamestatus controleren
- Detectie en waarschuwingen configureren
- Query's uitvoeren op de anomaliedetectieresultaten
- Anomalieën diagnosticeren
Referentiedocumentatie | Broncode van bibliotheek | Pakket (NuGet) | Voorbeelden
Vereisten
- Azure-abonnement: Krijg een gratis abonnement
- De huidige versie van .NET Core.
- Wanneer u uw Azure-abonnement hebt, kunt u een Metrics Advisor-resource maken in de Azure-portal om uw Metrics Advisor-instantie te implementeren.
- Uw eigen SQL-database met tijdreeksgegevens.
Tip
- Op GitHub vindt u .NET-voorbeelden voor Metrics Advisor.
- Het kan 10 tot 30 minuten duren voordat uw Metrics Advisor-resource een service-instantie heeft geïmplementeerd die u kunt gebruiken. Klik op Naar de resource gaan zodra de implementatie is voltooid. Na de implementatie kunt u uw Metrics Advisor-instantie gebruiken met zowel de webportal als de REST API.
- U kunt de URL voor de REST API in Azure Portal vinden in het gedeelte Overzicht van uw resource. Dit zal er als volgt uitzien:
https://<instance-name>.cognitiveservices.azure.com/
Instellen
De clientbibliotheek installeren
Nadat u een nieuw project hebt gemaakt, installeert u de clientbibliotheek door in Solution Explorer met de rechtermuisknop op de projectoplossing te klikken en NuGet-pakketten beheren te selecteren. Selecteer in de package manager die wordt geopend de optie Bladeren, schakel Prerelease opnemen in en zoek naar Azure.AI.MetricsAdvisor. Selecteer versie 1.0.0 en vervolgens Installeren.
Gebruik in een consolevenster (zoals cmd, PowerShell of Bash) de opdracht dotnet new om een nieuwe console-app te maken met de naam metrics-advisor-quickstart. Met deze opdracht maakt u een eenvoudig Hallo wereld-C#-project met één bronbestand: program.cs.
dotnet new console -n metrics-advisor-quickstart
Wijzig uw map in de zojuist gemaakte app-map. U kunt de toepassing maken met:
dotnet build
De build-uitvoer mag geen waarschuwingen of fouten bevatten.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
De clientbibliotheek installeren
Als u een andere IDE gebruikt dan Visual Studio, kunt u de Metrics Advisor-clientbibliotheek voor .NET installeren met de volgende opdracht:
dotnet add package Azure.AI.MetricsAdvisor --version 1.0.0
Tip
Wilt u het codebestand voor de quickstart in één keer weergeven? Die is te vinden op GitHub, waar de codevoorbeelden uit deze quickstart zich bevinden.
Open vanuit de projectmap het bestand program.cs en voeg de volgende using-instructies toe:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Azure.AI.MetricsAdvisor.Administration;
using Azure.AI.MetricsAdvisor;
using Azure.AI.MetricsAdvisor.Models;
Voeg in de methode Main() van de toepassing aanroepen toe voor de methoden die in deze quickstart worden gebruikt. U gaat deze later maken.
static void Main(string[] args){
// You will create the below methods later in the quickstart
exampleTask1();
}
Objectmodel
De volgende klassen worden gebruikt voor enkele van de belangrijkste functies van de Metrics Advisor C#-SDK.
| Naam | Beschrijving |
|---|---|
| MetricsAdvisorClient | Gebruikt voor: - het weergeven van incidenten - het weergeven van hoofdoorzaken van incidenten - het ophalen van de oorspronkelijke tijdreeksgegevens en tijdreeksgegevens die door de service zijn verrijkt - het weergeven van waarschuwingen - het toevoegen van feedback om uw model af te stemmen |
| MetricsAdvisorAdministrationClient | Hiermee kunt u: - gegevensfeeds beheren - configuratie voor anomaliedetectie configureren - configuratie voor anomaliewaarschuwingen configureren - hooks beheren |
| DataFeed | Wat Metrics Advisor van uw gegevensbron opneemt. Een DataFeed bevat rijen van: - tijdstempels - nul of meer dimensies - één of meer metingen |
| DataFeedMetric | Een DataFeedMetric is een kwantificeerbaar metrisch gegeven dat wordt gebruikt om de status van een specifiek bedrijfsproces te controleren en te beoordelen. Dit kan een combinatie zijn van meerdere tijdreekswaarden, onderverdeeld in dimensies. Een metrisch gegeven dat de status van het web aangeeft, kan bijvoorbeeld dimensies bevatten voor het aantal gebruikers en voor het en-us-taalgebied. |
Codevoorbeelden
Deze codefragmenten laten zien hoe u de volgende taken kunt uitvoeren met de Metrics Advisor-clientbibliotheek voor .NET:
- De client verifiëren
- Een gegevensfeed toevoegen
- De opnamestatus controleren
- Anomaliedetectie configureren
- Een hook maken
- Een waarschuwingsconfiguratie maken
- De waarschuwing opvragen
De client verifiëren
Maak in de klasse Program van de toepassing variabelen voor de sleutel en het eindpunt van uw resource.
Belangrijk
Ga naar Azure Portal. Als de Metrics Advisor-resource die u in de sectie Vereisten hebt gemaakt, succesvol is geïmplementeerd, klikt u op de knop Ga naar resource onder Volgende stappen. U vindt uw abonnementssleutels en eindpunt op de pagina Sleutel en eindpunt van de resource, onder Resourcebeheer.
Als u uw API-sleutel wilt ophalen, moet u naar https://metricsadvisor.azurewebsites.net gaan. Selecteer de gewenste optie: Map, Abonnementen en Werkruimte voor uw resource en kies Aan de slag. U kunt de API-sleutels vervolgens ophalen van https://metricsadvisor.azurewebsites.net/api-key.
Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en plaats deze sleutel nooit in het openbaar. Overweeg om voor productie een veilige manier te gebruiken voor het opslaan en openen van uw referenties. Zie het artikel Cognitive Services Beveiliging voor meer informatie.
Als u het abonnement en de API-sleutels hebt, maakt u een MetricsAdvisorKeyCredential. Met het eindpunt en de sleutelreferentie kunt u een MetricsAdvisorClient maken:
string endpoint = "<endpoint>";
string subscriptionKey = "<subscriptionKey>";
string apiKey = "<apiKey>";
var credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
var client = new MetricsAdvisorClient(new Uri(endpoint), credential);
U kunt ook een MetricsAdvisorAdministrationClient maken om beheerbewerkingen uit te voeren:
string endpoint = "<endpoint>";
string subscriptionKey = "<subscriptionKey>";
string apiKey = "<apiKey>";
var credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
var adminClient = new MetricsAdvisorAdministrationClient(new Uri(endpoint), credential);
Een gegevensfeed toevoegen
Metrics Advisor biedt ondersteuning voor het gebruik van meerdere typen gegevensbronnen. In dit voorbeeld laten we zien hoe u een DataFeed maakt die gegevens ophaalt van een SQL-Server.
Vervang connection_String door uw eigen SQL Server-verbindingsreeks en vervang query door een query die uw gegevens voor één enkele tijdstempel retourneert. U moet ook de waarden DataFeedMetric en DataFeedDimension aanpassen op basis van uw aangepaste gegevens.
Belangrijk
Met de query wordt maximaal één record per dimensiecombinatie geretourneerd voor elke tijdstempel. En alle records die zijn geretourneerd met de query, moeten dezelfde tijdstempels hebben. In Metrics Advisor wordt deze query uitgevoerd voor elke tijdstempel om uw gegevens op te nemen. Zie de Zelfstudie: Een geldige query schrijven voor meer informatie en voorbeelden.
string sqlServerConnectionString = "<connection_String>";
string sqlServerQuery = "<query>";
var dataFeedName = "Sample data feed";
var dataFeedSource = new SqlServerDataFeedSource(sqlServerConnectionString, sqlServerQuery);
var dataFeedGranularity = new DataFeedGranularity(DataFeedGranularityType.Daily);
var dataFeedMetrics = new List<DataFeedMetric>()
{
new DataFeedMetric("cost"),
new DataFeedMetric("revenue")
};
var dataFeedDimensions = new List<DataFeedDimension>()
{
new DataFeedDimension("category"),
new DataFeedDimension("city")
};
var dataFeedSchema = new DataFeedSchema(dataFeedMetrics)
{
DimensionColumns = dataFeedDimensions
};
var ingestionStartTime = DateTimeOffset.Parse("2020-01-01T00:00:00Z");
var dataFeedIngestionSettings = new DataFeedIngestionSettings(ingestionStartTime);
var dataFeed = new DataFeed()
{
Name = dataFeedName,
DataSource = dataFeedSource,
Granularity = dataFeedGranularity,
Schema = dataFeedSchema,
IngestionSettings = dataFeedIngestionSettings,
};
Response<string> response = await adminClient.CreateDataFeedAsync(dataFeed);
string dataFeedId = response.Value;
Console.WriteLine($"Data feed ID: {dataFeedId}");
// Note that only the ID of the data feed is known at this point. You can perform another
// service call to GetDataFeedAsync or GetDataFeed to get more information, such as status,
// created time, the list of administrators, or the metric IDs.
Response<DataFeed> response = await adminClient.GetDataFeedAsync(dataFeedId);
DataFeed dataFeed = response.Value;
Console.WriteLine($"Data feed status: {dataFeed.Status.Value}");
Console.WriteLine($"Data feed created time: {dataFeed.CreatedTime.Value}");
Console.WriteLine($"Data feed administrators:");
foreach (string admin in dataFeed.AdministratorEmails)
{
Console.WriteLine($" - {admin}");
}
Console.WriteLine($"Metric IDs:");
foreach (DataFeedMetric metric in dataFeed.Schema.MetricColumns)
{
Console.WriteLine($" - {metric.MetricName}: {metric.MetricId}");
}
De opnamestatus controleren
Controleer de opnamestatus van een eerder gemaakte DataFeed
string dataFeedId = "<dataFeedId>";
var startTime = DateTimeOffset.Parse("2020-01-01T00:00:00Z");
var endTime = DateTimeOffset.Parse("2020-09-09T00:00:00Z");
var options = new GetDataFeedIngestionStatusesOptions(startTime, endTime)
{
MaxPageSize = 5
};
Console.WriteLine("Ingestion statuses:");
Console.WriteLine();
int statusCount = 0;
await foreach (DataFeedIngestionStatus ingestionStatus in adminClient.GetDataFeedIngestionStatusesAsync(dataFeedId, options))
{
Console.WriteLine($"Timestamp: {ingestionStatus.Timestamp}");
Console.WriteLine($"Status: {ingestionStatus.Status}");
Console.WriteLine($"Service message: {ingestionStatus.Message}");
Console.WriteLine();
// Print at most 5 statuses.
if (++statusCount >= 5)
{
break;
}
}
Anomaliedetectie configureren
Maak een anomaliedetectieconfiguratie om de service te laten weten welke gegevenspunten als anomalie moeten worden beschouwd.
string metricId = "<metricId>";
string configurationName = "Sample anomaly detection configuration";
var hardThresholdSuppressCondition = new SuppressCondition(1, 100);
var hardThresholdCondition = new HardThresholdCondition(AnomalyDetectorDirection.Down, hardThresholdSuppressCondition)
{
LowerBound = 5.0
};
var smartDetectionSuppressCondition = new SuppressCondition(4, 50);
var smartDetectionCondition = new SmartDetectionCondition(10.0, AnomalyDetectorDirection.Up, smartDetectionSuppressCondition);
var detectionCondition = new MetricWholeSeriesDetectionCondition()
{
HardThresholdCondition = hardThresholdCondition,
SmartDetectionCondition = smartDetectionCondition,
CrossConditionsOperator = DetectionConditionsOperator.Or
};
var detectionConfiguration = new AnomalyDetectionConfiguration(metricId, configurationName, detectionCondition);
Response<string> response = await adminClient.CreateDetectionConfigurationAsync(detectionConfiguration);
string detectionConfigurationId = response.Value;
Console.WriteLine($"Anomaly detection configuration ID: {detectionConfigurationId}");
Een hook maken
Metrics Advisor biedt ondersteuning voor de klassen EmailNotificationHook en WebNotificationHook als middel om u te abonneren op waarschuwingsmeldingen. In dit voorbeeld laten we zien hoe u een EmailNotificationHook maakt. U begint pas meldingen te ontvangen nadat u de hook hebt doorgegeven aan een anomaliewaarschuwingsconfiguratie. Zie het voorbeeld Een anomaliewaarschuwingsconfiguratie maken voor meer informatie.
string hookName = "Sample hook";
var emailsToAlert = new List<string>()
{
"email1@sample.com",
"email2@sample.com"
};
var emailHook = new EmailNotificationHook(hookName, emailsToAlert);
Response<string> response = await adminClient.CreateHookAsync(emailHook);
string hookId = response.Value;
Console.WriteLine($"Hook ID: {hookId}");
Een waarschuwingsconfiguratie maken
Maak een AnomalyAlertConfiguration om de service te laten weten welke anomalieën waarschuwingen moeten activeren.
string hookId = "<hookId>";
string anomalyDetectionConfigurationId = "<anomalyDetectionConfigurationId>";
string configurationName = "Sample anomaly alert configuration";
var idsOfHooksToAlert = new List<string>() { hookId };
var scope = MetricAnomalyAlertScope.GetScopeForWholeSeries();
var metricAlertConfigurations = new List<MetricAnomalyAlertConfiguration>()
{
new MetricAnomalyAlertConfiguration(anomalyDetectionConfigurationId, scope)
};
AnomalyAlertConfiguration alertConfiguration = new AnomalyAlertConfiguration(configurationName, idsOfHooksToAlert, metricAlertConfigurations);
Response<string> response = await adminClient.CreateAlertConfigurationAsync(alertConfiguration);
string alertConfigurationId = response.Value;
Console.WriteLine($"Alert configuration ID: {alertConfigurationId}");
De waarschuwing opvragen
Blader door de waarschuwingen die zijn gemaakt op basis van een opgegeven configuratie voor anomaliewaarschuwingen.
string anomalyAlertConfigurationId = "<anomalyAlertConfigurationId>";
var startTime = DateTimeOffset.Parse("2020-01-01T00:00:00Z");
var endTime = DateTimeOffset.UtcNow;
var options = new GetAlertsOptions(startTime, endTime, AlertQueryTimeMode.AnomalyTime)
{
MaxPageSize = 5
};
int alertCount = 0;
await foreach (AnomalyAlert alert in client.GetAlertsAsync(anomalyAlertConfigurationId, options))
{
Console.WriteLine($"Alert created at: {alert.CreatedTime}");
Console.WriteLine($"Alert at timestamp: {alert.Timestamp}");
Console.WriteLine($"Id: {alert.Id}");
Console.WriteLine();
// Print at most 5 alerts.
if (++alertCount >= 5)
{
break;
}
}
Zodra u de id van een waarschuwing weet, vermeldt u de anomalieën die deze waarschuwing hebben geactiveerd.
string alertConfigurationId = "<alertConfigurationId>";
string alertId = "<alertId>";
var options = new GetAnomaliesForAlertOptions() { MaxPageSize = 3 };
int anomalyCount = 0;
await foreach (DataPointAnomaly anomaly in client.GetAnomaliesAsync(alertConfigurationId, alertId, options))
{
Console.WriteLine($"Anomaly detection configuration ID: {anomaly.AnomalyDetectionConfigurationId}");
Console.WriteLine($"Metric ID: {anomaly.MetricId}");
Console.WriteLine($"Anomaly at timestamp: {anomaly.Timestamp}");
Console.WriteLine($"Anomaly detected at: {anomaly.CreatedTime}");
Console.WriteLine($"Status: {anomaly.Status}");
Console.WriteLine($"Severity: {anomaly.Severity}");
Console.WriteLine("Series key:");
foreach (KeyValuePair<string, string> keyValuePair in anomaly.SeriesKey.AsDictionary())
{
Console.WriteLine($" Dimension '{keyValuePair.Key}': {keyValuePair.Value}");
}
Console.WriteLine();
// Print at most 3 anomalies.
if (++anomalyCount >= 3)
{
break;
}
}
De toepassing uitvoeren
Voer de toepassing op vanuit uw toepassingsmap met de opdracht dotnet run.
dotnet run
Referentiedocumentatie | Broncode bibliotheek | Artefact (Maven) | Voorbeelden
Vereisten
- Azure-abonnement: Krijg een gratis abonnement
- De huidige versie van de Java Development Kit (JDK)
- Het hulpprogramma Gradle of een andere afhankelijkheidsbeheerder.
- Wanneer u uw Azure-abonnement hebt, kunt u een Metrics Advisor-resource maken in de Azure-portal om uw Metrics Advisor-instantie te implementeren.
- Uw eigen SQL-database met tijdreeksgegevens.
Tip
- Op GitHub vindt u Java-voorbeelden voor Metrics Advisor.
- Het kan 10 tot 30 minuten duren voordat uw Metrics Advisor-resource een service-instantie heeft geïmplementeerd die u kunt gebruiken. Klik op Naar de resource gaan zodra de implementatie is voltooid. Na de implementatie kunt u uw Metrics Advisor-instantie gebruiken met zowel de webportal als de REST API.
- U kunt de URL voor de REST API in Azure Portal vinden in het gedeelte Overzicht van uw resource. Dit zal er als volgt uitzien:
https://<instance-name>.cognitiveservices.azure.com/
Instellen
Een nieuw Gradle-project maken
Deze quickstart maakt gebruik van de Gradle-afhankelijkheidsmanager. U vindt meer informatie over clientbibliotheken in de centrale opslagplaats van Maven.
Maak in een consolevenster (zoals cmd, PowerShell of Bash) een nieuwe map voor de app, en navigeer naar deze map.
mkdir myapp && cd myapp
Voer de opdracht gradle init uit vanuit uw werkmap. Met deze opdracht maakt u essentiële buildbestanden voor Gradle, inclusief build.gradle.kts, dat tijdens runtime wordt gebruikt om de toepassing te maken en te configureren.
gradle init --type basic
Wanneer u wordt gevraagd om een DSL te kiezen, selecteert u Kotlin.
De clientbibliotheek installeren
Zoek build.gradle.kts op en open het met uw favoriete IDE of teksteditor. Kopieer het vervolgens in deze buildconfiguratie. Zorg ervoor dat u de projectafhankelijkheden mee kopieert.
dependencies {
compile("com.azure:azure-ai-metricsadvisor:1.0.0")
}
Een Java-bestand maken
Maak een map voor de voorbeeld-app. Voer de volgende opdracht uit vanuit uw werkmap:
mkdir -p src/main/java
Ga naar de nieuwe map en maak een bestand met de naam MetricsAdvisorQuickstarts.java. Open het bestand in uw voorkeurseditor of IDE en voeg de volgende import-instructies toe:
Tip
Wilt u het codebestand voor de quickstart in één keer weergeven? Die is te vinden op GitHub, waar de codevoorbeelden uit deze quickstart zich bevinden.
Maak in de klasse MetricsAdvisorQuickstarts van de toepassing variabelen voor de sleutel en het eindpunt van uw resource.
Belangrijk
Ga naar Azure Portal. Als de Metrics Advisor-resource die u in de sectie Vereisten hebt gemaakt, succesvol is geïmplementeerd, klikt u op de knop Ga naar resource onder Volgende stappen. U vindt uw abonnementssleutels en eindpunt op de pagina Sleutel en eindpunt van de resource, onder Resourcebeheer.
Als u uw API-sleutel wilt ophalen, moet u naar https://metricsadvisor.azurewebsites.net gaan. Selecteer de gewenste optie: Map, Abonnementen en Werkruimte voor uw resource en kies Aan de slag. U kunt de API-sleutels vervolgens ophalen van https://metricsadvisor.azurewebsites.net/api-key.
Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en plaats deze sleutel nooit in het openbaar. Overweeg om voor productie een veilige manier te gebruiken voor het opslaan en openen van uw referenties. Zie het artikel Cognitive Services Beveiliging voor meer informatie.
private static String SUBSCRIPTION_KEY = "<replace-with-your-metrics-advisor-subscription-key-here>";
private static String API_KEY = "<replace-with-your-metrics-advisor-api-key-here>"
private static String ENDPOINT = "<replace-with-your-metrics-advisor-endpoint-here>";
Voeg in de methode Main() van de toepassing aanroepen toe voor de methoden die in deze quickstart worden gebruikt. U gaat deze later maken.
static void Main(string[] args){
// You will create the below methods later in the quickstart
exampleTask1();
}
Objectmodel
De volgende klassen worden gebruikt voor enkele van de belangrijkste functies van de Metrics Advisor Java-SDK.
| Naam | Beschrijving |
|---|---|
| MetricsAdvisorClient | Gebruikt voor: - het weergeven van anomalie-incidenten - het weergeven van hoofdoorzaken van incidenten - het ophalen van de oorspronkelijke tijdreeksgegevens en tijdreeksgegevens die door de service zijn verrijkt - het weergeven van waarschuwingen - het toevoegen van feedback om uw model af te stemmen |
| MetricsAdvisorAdministrationClient | Hiermee kunt u: - gegevensfeeds beheren - configuratie voor anomaliedetectie configureren - configuratie voor anomaliewaarschuwingen configureren - hooks beheren |
| DataFeed | Wat Metrics Advisor van uw gegevensbron opneemt. Een DataFeed bevat rijen van: - tijdstempels - nul of meer dimensies - één of meer metingen |
| DataFeedMetric | Een DataFeedMetric is een kwantificeerbaar metrisch gegeven dat wordt gebruikt om de status van een specifiek bedrijfsproces te controleren en te beoordelen. Dit kan een combinatie zijn van meerdere tijdreekswaarden, onderverdeeld in dimensies. Een metrisch gegeven dat de status van het web aangeeft, kan bijvoorbeeld dimensies bevatten voor het aantal gebruikers en voor het en-us-taalgebied. |
Codevoorbeelden
Deze codefragmenten laten zien hoe u de volgende taken kunt uitvoeren met de Metrics Advisor-clientbibliotheek voor Java:
- De client verifiëren
- Een gegevensfeed toevoegen
- De opnamestatus controleren
- Anomaliedetectie configureren
- Een hook maken
- Een waarschuwingsconfiguratie maken
- De waarschuwing opvragen
De client verifiëren
Een Metrics Advisor-client maken met behulp van MetricsAdvisorKeyCredential
MetricsAdvisorKeyCredential credential = new MetricsAdvisorKeyCredential(SUBSCRIPTION_KEY, API_KEY);
MetricsAdvisorClient metricsAdvisorClient = new MetricsAdvisorClientBuilder()
.endpoint(ENDPOINT)
.credential(credential)
.buildClient();
Een Metrics Administration-client maken met behulp van MetricsAdvisorKeyCredential
MetricsAdvisorKeyCredential credential = new MetricsAdvisorKeyCredential(SUBSCRIPTION_KEY, API_KEY);
MetricsAdvisorAdministrationClient metricsAdvisorAdministrationClient =
new MetricsAdvisorAdministrationClientBuilder()
.endpoint(ENDPOINT)
.credential(credential)
.buildClient();
Een gegevensfeed toevoegen
Vervang sql_server_connection_string door uw eigen SQL Server-verbindingsreeks en vervang query door een query die uw gegevens voor één enkele tijdstempel retourneert. U moet ook de waarden DataFeedMetric en DataFeedDimension aanpassen op basis van uw aangepaste gegevens.
Belangrijk
Met de query wordt maximaal één record per dimensiecombinatie geretourneerd voor elke tijdstempel. En alle records die zijn geretourneerd met de query, moeten dezelfde tijdstempels hebben. In Metrics Advisor wordt deze query uitgevoerd voor elke tijdstempel om uw gegevens op te nemen. Zie de Zelfstudie: Een geldige query schrijven voor meer informatie en voorbeelden.
DataFeed dataFeed = new DataFeed()
.setName("dataFeedName")
.setSource(new MySqlDataFeedSource("conn-string", "query"))
.setGranularity(new DataFeedGranularity().setGranularityType(DataFeedGranularityType.DAILY))
.setSchema(new DataFeedSchema(
Arrays.asList(
new DataFeedMetric("cost"),
new DataFeedMetric("revenue")
)).setDimensions(
Arrays.asList(
new DataFeedDimension("city"),
new DataFeedDimension("category")
))
)
.setIngestionSettings(new DataFeedIngestionSettings(OffsetDateTime.parse("2020-01-01T00:00:00Z")))
.setOptions(new DataFeedOptions()
.setDescription("data feed description")
.setRollupSettings(new DataFeedRollupSettings()
.setRollupType(DataFeedRollupType.AUTO_ROLLUP)));
final DataFeed createdSqlDataFeed = metricsAdvisorAdminClient.createDataFeed(dataFeed);
System.out.printf("Data feed Id : %s%n", createdSqlDataFeed.getId());
System.out.printf("Data feed name : %s%n", createdSqlDataFeed.getName());
System.out.printf("Is the query user is one of data feed administrator : %s%n", createdSqlDataFeed.isAdmin());
System.out.printf("Data feed created time : %s%n", createdSqlDataFeed.getCreatedTime());
System.out.printf("Data feed granularity type : %s%n",
createdSqlDataFeed.getGranularity().getGranularityType());
System.out.printf("Data feed granularity value : %d%n",
createdSqlDataFeed.getGranularity().getCustomGranularityValue());
System.out.println("Data feed related metric Ids:");
createdSqlDataFeed.getMetricIds().forEach(System.out::println);
System.out.printf("Data feed source type: %s%n", createdSqlDataFeed.getSourceType());
if (SQL_SERVER_DB == createdSqlDataFeed.getSourceType()) {
System.out.printf("Data feed sql server query: %s%n",
((SqlServerDataFeedSource) createdSqlDataFeed.getSource()).getQuery());
}
De opnamestatus controleren
In dit voorbeeld wordt de opnamestatus van een eerder opgegeven bron van een gegevensfeed gecontroleerd.
String dataFeedId = "<use-the-data-feed-id-from-createdSqlDataFeed.getId()";
metricsAdvisorAdminClient.listDataFeedIngestionStatus(
dataFeedId,
new ListDataFeedIngestionOptions(
OffsetDateTime.parse("2020-01-01T00:00:00Z"),
OffsetDateTime.parse("2020-09-09T00:00:00Z"))
).forEach(dataFeedIngestionStatus -> {
System.out.printf("Message : %s%n", dataFeedIngestionStatus.getMessage());
System.out.printf("Timestamp value : %s%n", dataFeedIngestionStatus.getTimestamp());
System.out.printf("Status : %s%n", dataFeedIngestionStatus.getStatus());
});
Anomaliedetectie configureren
In dit voorbeeld ziet u hoe een gebruiker een anomaliedetectieconfiguratie voor zijn gegevens kan configureren.
String metricId = "<metric-id-from-adding-data-feed>";
ChangeThresholdCondition changeThresholdCondition = new ChangeThresholdCondition(
20,
10,
true,
AnomalyDetectorDirection.BOTH,
new SuppressCondition(1, 2));
HardThresholdCondition hardThresholdCondition = new HardThresholdCondition(
AnomalyDetectorDirection.DOWN,
new SuppressCondition(1, 1))
.setLowerBound(5.0);
SmartDetectionCondition smartDetectionCondition = new SmartDetectionCondition(
10.0,
AnomalyDetectorDirection.UP,
new SuppressCondition(1, 2));
final AnomalyDetectionConfiguration anomalyDetectionConfiguration =
metricsAdvisorAdminClient.createMetricAnomalyDetectionConfig(
metricId,
new AnomalyDetectionConfiguration("My dataPoint anomaly detection configuration")
.setDescription("anomaly detection config description")
.setWholeSeriesDetectionCondition(
new MetricWholeSeriesDetectionCondition()
.setChangeThresholdCondition(changeThresholdCondition)
.setHardThresholdCondition(hardThresholdCondition)
.setSmartDetectionCondition(smartDetectionCondition)
.setConditionOperator(DetectionConditionOperator.OR))
);
Een hook maken
In dit voorbeeld wordt een e-mailhook gemaakt die incidentwaarschuwingen bij anomalieën ontvangt.
NotificationHook emailNotificationHook = new EmailNotificationHook("email Hook")
.setDescription("my email Hook")
.addEmailToAlert("alertme@alertme.com")
.setExternalLink("https://example.com/handleAlerts"); // you must enter a valid webhook url to post the alert payload
final NotificationHook notificationHook = metricsAdvisorAdminClient.createHook(emailNotificationHook);
EmailNotificationHook createdEmailHook = (EmailNotificationHook) notificationHook;
System.out.printf("Email Hook Id: %s%n", createdEmailHook.getId());
System.out.printf("Email Hook name: %s%n", createdEmailHook.getName());
System.out.printf("Email Hook description: %s%n", createdEmailHook.getDescription());
System.out.printf("Email Hook external Link: %s%n", createdEmailHook.getExternalLink());
System.out.printf("Email Hook emails to alert: %s%n",
String.join(",", createdEmailHook.getEmailsToAlert()));
Een waarschuwingsconfiguratie maken
Dit voorbeeld laat zien hoe een gebruiker een waarschuwingsconfiguratie kan configureren voor anomalieën die in zijn gegevens zijn gedetecteerd.
String detectionConfigurationId1 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
String detectionConfigurationId2 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
String hookId1 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
String hookId2 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
final AnomalyAlertConfiguration anomalyAlertConfiguration
= metricsAdvisorAdminClient.createAnomalyAlertConfig(
new AnomalyAlertConfiguration("My anomaly alert config name")
.setDescription("alert config description")
.setMetricAlertConfigurations(
Arrays.asList(
new MetricAnomalyAlertConfiguration(detectionConfigurationId1,
MetricAnomalyAlertScope.forWholeSeries()),
new MetricAnomalyAlertConfiguration(detectionConfigurationId2,
MetricAnomalyAlertScope.forWholeSeries())
.setAlertConditions(new MetricAnomalyAlertConditions()
.setSeverityRangeCondition(new SeverityCondition(AnomalySeverity.HIGH,
AnomalySeverity.HIGH)))
))
.setCrossMetricsOperator(MetricAnomalyAlertConfigurationsOperator.AND)
.setIdOfHooksToAlert(Arrays.asList(hookId1, hookId2)));
De waarschuwing opvragen
Dit voorbeeld laat zien hoe een gebruiker waarschuwingen kan opvragen die zijn geactiveerd voor een waarschuwingsdetectieconfiguratie, en hoe hij anomalieën voor die waarschuwing kan ophalen.
String alertConfigurationId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
final OffsetDateTime startTime = OffsetDateTime.parse("2020-01-01T00:00:00Z");
final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
metricsAdvisorClient.listAlerts(
alertConfigurationId,
startTime, endTime)
.forEach(alert -> {
System.out.printf("AnomalyAlert Id: %s%n", alert.getId());
System.out.printf("AnomalyAlert created on: %s%n", alert.getCreatedTime());
// List anomalies for returned alerts
metricsAdvisorClient.listAnomaliesForAlert(
alertConfigurationId,
alert.getId())
.forEach(anomaly -> {
System.out.printf("DataPoint Anomaly was created on: %s%n", anomaly.getCreatedTime());
System.out.printf("DataPoint Anomaly severity: %s%n", anomaly.getSeverity().toString());
System.out.printf("DataPoint Anomaly status: %s%n", anomaly.getStatus());
System.out.printf("DataPoint Anomaly related series key: %s%n", anomaly.getSeriesKey().asMap());
});
});
U kunt de app maken met:
gradle build
De toepassing uitvoeren
De toepassing uitvoeren met het doel run:
gradle run
Referentiedocumentatie | Bibliotheekbroncode | Pakket (npm) | Voorbeelden
Vereisten
- Azure-abonnement: Krijg een gratis abonnement
- De huidige versie van Node.js
- Wanneer u uw Azure-abonnement hebt, kunt u een Metrics Advisor-resource maken in de Azure-portal om uw Metrics Advisor-instantie te implementeren.
- Uw eigen SQL-database met tijdreeksgegevens.
Tip
- Op GitHub vindt u JavaScript-voorbeelden voor Metrics Advisor.
- Het kan 10 tot 30 minuten duren voordat uw Metrics Advisor-resource een service-instantie heeft geïmplementeerd die u kunt gebruiken. Klik op Naar de resource gaan zodra de implementatie is voltooid. Na de implementatie kunt u uw Metrics Advisor-instantie gebruiken met zowel de webportal als de REST API.
- U kunt de URL voor de REST API in Azure Portal vinden in het gedeelte Overzicht van uw resource. Dit zal er als volgt uitzien:
https://<instance-name>.cognitiveservices.azure.com/
Instellen
Een nieuwe Node.js-toepassing maken
Maak in een consolevenster (zoals cmd, PowerShell of Bash) een nieuwe map voor de app, en navigeer naar deze map.
mkdir myapp && cd myapp
Voer de opdracht npm init uit om een knooppunttoepassing te maken met een package.json-bestand.
npm init
De clientbibliotheek installeren
Installeer het NPM-pakket @azure/ai-metrics-advisor:
npm install @azure/ai-metrics-advisor
Het package.json-bestand van uw app wordt bijgewerkt met de afhankelijkheden.
Maak een bestand met de naam index.js en importeer de volgende bibliotheken:
Tip
Wilt u het codebestand voor de quickstart in één keer weergeven? Die is te vinden op GitHub, waar de codevoorbeelden uit deze quickstart zich bevinden.
Maak variabelen voor het Azure-eindpunt en de Azure-sleutel voor uw resource.
Belangrijk
Ga naar Azure Portal. Als de Metrics Advisor-resource die u in de sectie Vereisten hebt gemaakt, succesvol is geïmplementeerd, klikt u op de knop Ga naar resource onder Volgende stappen. U vindt uw abonnementssleutels en eindpunt op de pagina Sleutel en eindpunt van de resource, onder Resourcebeheer.
Als u uw API-sleutel wilt ophalen, moet u naar https://metricsadvisor.azurewebsites.net gaan. Selecteer de gewenste optie: Map, Abonnementen en Werkruimte voor uw resource en kies Aan de slag. U kunt de API-sleutels vervolgens ophalen van https://metricsadvisor.azurewebsites.net/api-key.
Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en plaats deze sleutel nooit in het openbaar. Overweeg om voor productie een veilige manier te gebruiken voor het opslaan en openen van uw referenties. Zie het artikel Cognitive Services Beveiliging voor meer informatie.
subscriptionKey = "<paste-your-metrics-advisor-key-here>";
apiKey ="<paste-your-metrics-advisor-api-key-here>";
endpoint = "<paste-your-metrics-advisor-endpoint-here>";
Objectmodel
De volgende klassen en interfaces verwerken enkele van de belangrijkste functies van de Metrics Advisor JavaScript-SDK.
| Naam | Beschrijving |
|---|---|
| MetricsAdvisorClient | Gebruikt voor: - het weergeven van incidenten - het weergeven van hoofdoorzaken van incidenten - het ophalen van de oorspronkelijke tijdreeksgegevens en tijdreeksgegevens die door de service zijn verrijkt - het weergeven van waarschuwingen - het toevoegen van feedback om uw model af te stemmen |
| MetricsAdvisorAdministrationClient | Hiermee kunt u: - gegevensfeeds beheren - configuraties voor anomaliewaarschuwingen maken, configureren, ophalen, weergeven en verwijderen - hooks beheren |
| DataFeed | Wat Metrics Advisor van uw gegevensbron opneemt. Een DataFeed bevat rijen van: - tijdstempels - nul of meer dimensies - één of meer metingen |
| DataFeedMetric | Een DataFeedMetric is een kwantificeerbaar metrisch gegeven dat wordt gebruikt om de status van een specifiek bedrijfsproces te controleren en te beoordelen. Dit kan een combinatie zijn van meerdere tijdreekswaarden, onderverdeeld in dimensies. Een metrisch gegeven dat de status van het web aangeeft, kan bijvoorbeeld dimensies bevatten voor het aantal gebruikers en voor het en-us-taalgebied. |
Codevoorbeelden
Deze codefragmenten laten zien hoe u het volgende kunt uitvoeren met de Metrics Advisor-clientbibliotheek voor JavaScript:
- De client verifiëren
- Een gegevensfeed toevoegen
- Opnamestatus controleren
- Anomaliedetectie configureren
- Een hook maken
- Een waarschuwingsconfiguratie maken
- De waarschuwing opvragen
De client verifiëren
Zodra u de twee sleutels en het eindpuntadres hebt, kunt u de klasse MetricsAdvisorKeyCredential gebruiken om de clients als volgt te verifiëren:
const {
MetricsAdvisorKeyCredential,
MetricsAdvisorClient,
MetricsAdvisorAdministrationClient
} = require("@azure/ai-metrics-advisor");
const credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
const client = new MetricsAdvisorClient(endpoint, credential);
const adminClient = new MetricsAdvisorAdministrationClient(endpoint, credential);
Een gegevensfeed toevoegen
Metrics Advisor biedt ondersteuning voor het met elkaar verbinden van verschillende typen gegevensbronnen. Hier volgt een voorbeeld van het opnemen van gegevens uit SQL Server.
Vervang sql_server_connection_string door uw eigen SQL Server-verbindingsreeks en vervang query door een query die uw gegevens voor één enkele tijdstempel retourneert. U moet ook de waarden metric en dimension aanpassen op basis van uw aangepaste gegevens.
Belangrijk
Met de query wordt maximaal één record per dimensiecombinatie geretourneerd voor elke tijdstempel. En alle records die zijn geretourneerd met de query, moeten dezelfde tijdstempels hebben. In Metrics Advisor wordt deze query uitgevoerd voor elke tijdstempel om uw gegevens op te nemen. Zie de Zelfstudie: Een geldige query schrijven voor meer informatie en voorbeelden.
const {
MetricsAdvisorKeyCredential,
MetricsAdvisorAdministrationClient
} = require("@azure/ai-metrics-advisor");
async function main() {
const subscriptionKey = "<paste-your-metrics-advisor-key-here>";
const apiKey ="<paste-your-metrics-advisor-api-key-here>";
const endpoint = "<paste-your-metrics-advisor-endpoint-here>";
const sqlServerConnectionString ="<sql_server_connection_string>";
const sqlServerQuery ="<query>";
const credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
const adminClient = new MetricsAdvisorAdministrationClient(endpoint, credential);
const created = await createDataFeed(adminClient, sqlServerConnectionString, sqlServerQuery);
console.log(`Data feed created: ${created.id}`);
}
async function createDataFeed(adminClient, sqlServerConnectionString, sqlServerQuery) {
console.log("Creating Datafeed...");
const dataFeed = {
name: "test_datafeed_" + new Date().getTime().toString(),
source: {
dataSourceType: "SqlServer",
dataSourceParameter: {
connectionString: sqlServerConnectionString,
query: sqlServerQuery
}
},
granularity: {
granularityType: "Daily"
},
schema: {
metrics: [
{
name: "revenue",
displayName: "revenue",
description: "Metric1 description"
},
{
name: "cost",
displayName: "cost",
description: "Metric2 description"
}
],
dimensions: [
{ name: "city", displayName: "city display" },
{ name: "category", displayName: "category display" }
],
timestampColumn: null
},
ingestionSettings: {
ingestionStartTime: new Date(Date.UTC(2020, 5, 1)),
ingestionStartOffsetInSeconds: 0,
dataSourceRequestConcurrency: -1,
ingestionRetryDelayInSeconds: -1,
stopRetryAfterInSeconds: -1
},
rollupSettings: {
rollupType: "AutoRollup",
rollupMethod: "Sum",
rollupIdentificationValue: "__CUSTOM_SUM__"
},
missingDataPointFillSettings: {
fillType: "SmartFilling"
},
accessMode: "Private",
admins: ["xyz@example.com"]
};
const result = await adminClient.createDataFeed(dataFeed);
return result;
}
Opnamestatus controleren
Nadat de gegevensopname is gestart, kunt u de opnamestatus controleren.
const {
MetricsAdvisorKeyCredential,
MetricsAdvisorAdministrationClient
} = require("@azure/ai-metrics-advisor");
async function main() {
// You will need to set these environment variables or edit the following values
const endpoint = "<service endpoint>";
const subscriptionKey = "<subscription key>";
const apiKey = "<api key>";
const dataFeedId = "<data feed id>";
const credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
const adminClient = new MetricsAdvisorAdministrationClient(endpoint, credential);
await checkIngestionStatus(
adminClient,
dataFeedId,
new Date(Date.UTC(2020, 8, 1)),
new Date(Date.UTC(2020, 8, 12))
);
}
async function checkIngestionStatus(adminClient, datafeedId, startTime, endTime) {
// This shows how to use for-await-of syntax to list status
console.log("Checking ingestion status...");
const iterator = adminClient.listDataFeedIngestionStatus(datafeedId, startTime, endTime);
for await (const status of iterator) {
console.log(` [${status.timestamp}] ${status.status} - ${status.message}`);
}
}
Anomaliedetectie configureren
Er is een anomaliedetectieconfiguratie vereist om te bepalen of een punt in de tijdreeks een anomalie is. Hoewel er op elk metrisch gegeven automatisch een standaard detectieconfiguratie wordt toegepast, kunt u de detectiemodi die op uw gegevens worden gebruikt, afstemmen door een aangepaste anomaliedetectieconfiguratie te maken.
const {
MetricsAdvisorKeyCredential,
MetricsAdvisorAdministrationClient
} = require("@azure/ai-metrics-advisor");
async function main() {
const endpoint = "<service endpoint>";
const subscriptionKey = "<subscription key>";
const apiKey = "<api key>";
const metricId = "<metric id>";
const credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
const adminClient = new MetricsAdvisorAdministrationClient(endpoint, credential);
const detectionConfig = await configureAnomalyDetectionConfiguration(adminClient, metricId);
console.log(`Detection configuration created: ${detectionConfig.id}`);
}
async function configureAnomalyDetectionConfiguration(adminClient, metricId) {
console.log(`Creating an anomaly detection configuration on metric '${metricId}'...`);
const detectionConfig = {
name: "test_detection_configuration" + new Date().getTime().toString(),
metricId,
wholeSeriesDetectionCondition: {
smartDetectionCondition: {
sensitivity: 100,
anomalyDetectorDirection: "Both",
suppressCondition: {
minNumber: 1,
minRatio: 1
}
}
},
description: "Detection configuration description"
};
return await adminClient.createDetectionConfig(detectionConfig);
}
Een hook maken
Er worden hooks gebruikt om u te abonneren op real-time waarschuwingen. In dit voorbeeld maken we een webhook voor de Metrics Advisor-service waar de waarschuwing moet worden geplaatst.
const {
MetricsAdvisorKeyCredential,
MetricsAdvisorAdministrationClient
} = require("@azure/ai-metrics-advisor");
async function main() {
// You will need to set these environment variables or edit the following values
const endpoint = "<service endpoint>";
const subscriptionKey = "<subscription key>";
const apiKey = "<api key>";
const credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
const adminClient = new MetricsAdvisorAdministrationClient(endpoint, credential);
const hook = await createWebhookHook(adminClient);
console.log(`Webhook hook created: ${hook.id}`);
}
async function createWebhookHook(adminClient) {
console.log("Creating a webhook hook");
const hook = {
hookType: "Webhook",
name: "web hook " + new Date().getTime().toFixed(),
description: "description",
hookParameter: {
endpoint: "https://example.com/handleAlerts", // you must enter a valid webhook url to post the alert payload
username: "username",
password: "password"
// certificateKey: "certificate key",
// certificatePassword: "certificate password"
}
};
return await adminClient.createHook(hook);
}
Een waarschuwingsconfiguratie maken
In dit voorbeeld ziet u hoe u voorwaarden configureert waardoor een waarschuwing moet worden geactiveerd, en welke hooks als bestemming voor een waarschuwing moeten worden gebruikt.
const {
MetricsAdvisorKeyCredential,
MetricsAdvisorAdministrationClient
} = require("@azure/ai-metrics-advisor");
async function main() {
// You will need to set these environment variables or edit the following values
const endpoint = "<service endpoint>";
const subscriptionKey = "<subscription key>";
const apiKey = "<api key>";
const detectionConfigId = "<detection id>";
const hookId = "<hook id>";
const credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
const adminClient = new MetricsAdvisorAdministrationClient(endpoint, credential);
const alertConfig = await configureAlertConfiguration(adminClient, detectionConfigId, [hookId]);
console.log(`Alert configuration created: ${alertConfig.id}`);
}
async function configureAlertConfiguration(adminClient, detectionConfigId, hookIds) {
console.log("Creating a new alerting configuration...");
const anomalyAlertConfig = {
name: "test_alert_config_" + new Date().getTime().toString(),
crossMetricsOperator: "AND",
metricAlertConfigurations: [
{
detectionConfigurationId: detectionConfigId,
alertScope: {
scopeType: "All"
},
alertConditions: {
severityCondition: { minAlertSeverity: "Medium", maxAlertSeverity: "High" }
},
snoozeCondition: {
autoSnooze: 0,
snoozeScope: "Metric",
onlyForSuccessive: true
}
}
],
hookIds,
description: "Alerting config description"
};
return await adminClient.createAlertConfig(anomalyAlertConfig);
}
De waarschuwing opvragen
const { MetricsAdvisorKeyCredential, MetricsAdvisorClient } = require("@azure/ai-metrics-advisor");
async function main() {
// You will need to set these environment variables or edit the following values
const endpoint = "<service endpoint>";
const subscriptionKey = "<subscription key>";
const apiKey = "<api key>";
const alertConfigId = "<alert config id>";
const credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
const client = new MetricsAdvisorClient(endpoint, credential);
const alertIds = await queryAlerts(
client,
alertConfigId,
new Date(Date.UTC(2020, 8, 1)),
new Date(Date.UTC(2020, 8, 12))
);
if (alertIds.length > 1) {
// query anomalies using an alert id.
await queryAnomaliesByAlert(client, alertConfigId, alertIds[0]);
} else {
console.log("No alerts during the time period");
}
}
async function queryAlerts(client, alertConfigId, startTime, endTime) {
let alerts = [];
const iterator = client.listAlerts(alertConfigId, startTime, endTime, "AnomalyTime");
for await (const alert of iterator) {
alerts.push(alert);
}
return alerts;
}
async function queryAnomaliesByAlert(client, alert) {
console.log(
`Listing anomalies for alert configuration '${alert.alertConfigId}' and alert '${alert.id}'`
);
const iterator = client.listAnomaliesForAlert(alert);
for await (const anomaly of iterator) {
console.log(
` Anomaly ${anomaly.severity} ${anomaly.status} ${anomaly.seriesKey} ${anomaly.timestamp}`
);
}
}
De toepassing uitvoeren
Voer de toepassing uit met de opdracht node in uw quickstart-bestand.
node index.js
Referentiedocumentatie | Broncode bibliotheek | Package (PiPy) | Voorbeelden
Vereisten
- Azure-abonnement: Krijg een gratis abonnement
- Python 3.x
- Wanneer u uw Azure-abonnement hebt, kunt u een Metrics Advisor-resource maken in de Azure-portal om uw Metrics Advisor-instantie te implementeren.
- Uw eigen SQL-database met tijdreeksgegevens.
Tip
- Op GitHub vindt u Python-voorbeelden voor Metrics Advisor.
- Het kan 10 tot 30 minuten duren voordat uw Metrics Advisor-resource een service-instantie heeft geïmplementeerd die u kunt gebruiken. Klik op Naar de resource gaan zodra de implementatie is voltooid. Na de implementatie kunt u uw Metrics Advisor-instantie gebruiken met zowel de webportal als de REST API.
- U kunt de URL voor de REST API in Azure Portal vinden in het gedeelte Overzicht van uw resource. Dit zal er als volgt uitzien:
https://<instance-name>.cognitiveservices.azure.com/
Instellen
De clientbibliotheek installeren
Na de installatie van Python kunt u de clientbibliotheek installeren met:
pip install azure-ai-metricsadvisor --pre
Een nieuwe Python-toepassing maken
Maak een nieuw Python-bestand en importeer de volgende bibliotheken.
import os
import datetime
Maak variabelen voor het Azure-eindpunt en de Azure-sleutel voor uw resource.
Belangrijk
Ga naar Azure Portal. Als de Metrics Advisor-resource die u in de sectie Vereisten hebt gemaakt, succesvol is geïmplementeerd, klikt u op de knop Ga naar resource onder Volgende stappen. U vindt uw abonnementssleutels en eindpunt op de pagina Sleutel en eindpunt van de resource, onder Resourcebeheer.
Als u uw API-sleutel wilt ophalen, moet u naar https://metricsadvisor.azurewebsites.net gaan. Selecteer de gewenste optie: Map, Abonnementen en Werkruimte voor uw resource en kies Aan de slag. U kunt de API-sleutels vervolgens ophalen van https://metricsadvisor.azurewebsites.net/api-key.
Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en plaats deze sleutel nooit in het openbaar. Overweeg om voor productie een veilige manier te gebruiken voor het opslaan en openen van uw referenties. Zie het artikel Cognitive Services Beveiliging voor meer informatie.
subscription_key = "<paste-your-metrics-advisor-subscription-key-here>"
api_key = "<paste-your-metrics-advisor-api-key-here>"
service_endpoint = "<paste-your-metrics-advisor-endpoint-here>"
Objectmodel
De volgende klassen worden gebruikt voor enkele van de belangrijkste functies van de Metrics Advisor Python-SDK.
| Naam | Beschrijving |
|---|---|
| MetricsAdvisorClient | Gebruikt voor: - het weergeven van incidenten - het weergeven van hoofdoorzaken van incidenten - het ophalen van de oorspronkelijke tijdreeksgegevens en tijdreeksgegevens die door de service zijn verrijkt - het weergeven van waarschuwingen - het toevoegen van feedback om uw model af te stemmen |
| MetricsAdvisorAdministrationClient | Hiermee kunt u: - gegevensfeeds beheren - configuraties voor anomaliedetectie maken, configureren, ophalen, weergeven en verwijderen - configuraties voor anomaliewaarschuwingen maken, configureren, ophalen, weergeven en verwijderen - hooks beheren |
| DataFeed | Wat Metrics Advisor van uw gegevensbron opneemt. Een DataFeed bevat rijen van: - tijdstempels - nul of meer dimensies - één of meer metingen |
| DataFeedMetric | Een DataFeedMetric is een kwantificeerbaar metrisch gegeven dat wordt gebruikt om de status van een specifiek bedrijfsproces te controleren en te beoordelen. Dit kan een combinatie zijn van meerdere tijdreekswaarden, onderverdeeld in dimensies. Een metrisch gegeven dat de status van het web aangeeft, kan bijvoorbeeld dimensies bevatten voor het aantal gebruikers en voor het en-us-taalgebied. |
Codevoorbeelden
Deze codefragmenten laten zien hoe u de volgende taken kunt uitvoeren met de Metrics Advisor-clientbibliotheek voor Python:
- De client verifiëren
- Een gegevensfeed toevoegen
- Opnamestatus controleren
- Detectieconfiguratie en waarschuwingsconfiguratie instellen
- Een waarschuwingsconfiguratie maken
- Query's uitvoeren op de anomaliedetectieresultaten
De client verifiëren
De client in dit voorbeeld is een MetricsAdvisorAdministrationClient-object dat gebruikmaakt van uw eindpunt en een MetricsAdvisorKeyCredential-object dat uw sleutels bevat. U hoeft dit codevoorbeeld niet te kopiëren. De-methoden die u later maakt, maken een instantie van de client. De alternatieve client heet MetricsAdvisorClient. Meer informatie over deze client vindt u in de referentiedocumentatie.
client = MetricsAdvisorAdministrationClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key))
Een gegevensfeed toevoegen
In een nieuwe methode maakt u importinstructies, zoals in het voorbeeld hieronder. Vervang sql_server_connection_string door uw eigen SQL Server-verbindingsreeks en vervang query door een query die uw gegevens voor één enkele tijdstempel retourneert. U moet ook de waarden DataFeedmetric en DataFeedDimension aanpassen op basis van uw aangepaste gegevens.
Belangrijk
Met de query wordt maximaal één record per dimensiecombinatie geretourneerd voor elke tijdstempel. En alle records die zijn geretourneerd met de query, moeten dezelfde tijdstempels hebben. In Metrics Advisor wordt deze query uitgevoerd voor elke tijdstempel om uw gegevens op te nemen. Zie de Zelfstudie: Een geldige query schrijven voor meer informatie en voorbeelden.
Maak een client met uw sleutels en eindpunt, en gebruik client.create_data_feed() om de naam, de bron, de granulariteit en het schema te configureren. U kunt ook de tijd van opname, instellingen voor samentellen en meer instellen.
def sample_create_data_feed():
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
SqlServerDataFeedSource,
DataFeedSchema,
DataFeedMetric,
DataFeedDimension,
DataFeedRollupSettings,
DataFeedMissingDataPointFillSettings
)
sql_server_connection_string = "<replace-with-your-sql-server-connection-string>"
query = "<replace-with-metrics-advisor-sql-server-query>"
client = MetricsAdvisorAdministrationClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key))
data_feed = client.create_data_feed(
name="My data feed",
source=SqlServerDataFeedSource(
connection_string=sql_server_connection_string,
query=query,
),
granularity="Daily",
schema=DataFeedSchema(
metrics=[
DataFeedMetric(name="cost", display_name="Cost"),
DataFeedMetric(name="revenue", display_name="Revenue")
],
dimensions=[
DataFeedDimension(name="category", display_name="Category"),
DataFeedDimension(name="city", display_name="City")
],
timestamp_column="Timestamp"
),
ingestion_settings=datetime.datetime(2019, 10, 1),
data_feed_description="cost/revenue data feed",
rollup_settings=DataFeedRollupSettings(
rollup_type="AutoRollup",
rollup_method="Sum",
rollup_identification_value="__CUSTOM_SUM__"
),
missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings(
fill_type="SmartFilling"
),
access_mode="Private"
)
)
return data_feed
sample_create_data_feed()
De opnamestatus controleren
In een nieuwe methode maakt u importinstructies, zoals in het voorbeeld hieronder. Vervang data_feed_id door de id voor de gegevensfeed die u hebt gemaakt. Maak een client met uw sleutels en eindpunt en gebruik client.list_data_feed_ingestion_status() om de voortgang van de opname op te halen. Geef de details weer, zoals de laatste actieve en geslaagde tijdstempels.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
data_feed_id = "<replace-with-your-metrics-advisor-data-feed-id>"
client = MetricsAdvisorAdministrationClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key)
)
ingestion_status = client.list_data_feed_ingestion_status(
data_feed_id,
datetime.datetime(2020, 9, 20),
datetime.datetime(2020, 9, 25)
)
for status in ingestion_status:
print("Timestamp: {}".format(status.timestamp))
print("Status: {}".format(status.status))
print("Message: {}\n".format(status.message))
Anomaliedetectie configureren
In een nieuwe methode maakt u importinstructies, zoals in het voorbeeld hieronder. Vervang metric_id door de id voor het metrische gegeven dat u wilt configureren. Maak een client met uw sleutels en eindpunt en gebruik client.create_detection_configuration om een nieuwe detectieconfiguratie te maken. Met de drempelvoorwaarden worden de parameters voor anomaliedetectie opgegeven.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
ChangeThresholdCondition,
HardThresholdCondition,
SmartDetectionCondition,
SuppressCondition,
MetricDetectionCondition,
)
metric_id = "replace-with-your-metric-id"
client = MetricsAdvisorAdministrationClient(
service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key)
)
change_threshold_condition = ChangeThresholdCondition(
anomaly_detector_direction="Both",
change_percentage=20,
shift_point=10,
within_range=True,
suppress_condition=SuppressCondition(
min_number=5,
min_ratio=2
)
)
hard_threshold_condition = HardThresholdCondition(
anomaly_detector_direction="Up",
upper_bound=100,
suppress_condition=SuppressCondition(
min_number=2,
min_ratio=2
)
)
smart_detection_condition = SmartDetectionCondition(
anomaly_detector_direction="Up",
sensitivity=10,
suppress_condition=SuppressCondition(
min_number=2,
min_ratio=2
)
)
detection_config = client.create_detection_configuration(
name="my_detection_config",
metric_id=metric_id,
description="anomaly detection config for metric",
whole_series_detection_condition=MetricDetectionCondition(
condition_operator="OR",
change_threshold_condition=change_threshold_condition,
hard_threshold_condition=hard_threshold_condition,
smart_detection_condition=smart_detection_condition
)
)
return detection_config
Een hook maken
In een nieuwe methode maakt u importinstructies, zoals in het voorbeeld hieronder. Maak een client met uw sleutels en eindpunt en gebruik client.create_hook() om een hook te maken. Voer een beschrijving in, een lijst met e-mailberichten waar de waarschuwing naar moet worden verzonden en een externe koppeling die in de waarschuwing wordt weergegeven.
def sample_create_hook():
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import EmailNotificationHook
client = MetricsAdvisorAdministrationClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key))
client = MetricsAdvisorAdministrationClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key))
hook = client.create_hook(
hook=EmailNotificationHook(
name="email hook",
description="my email hook",
emails_to_alert=["alertme@alertme.com"],
external_link="https://example.com/handleAlerts" #A customized field configured by users, which will be displayed in the anomaly alert. It's usually been used to link to a troubleshooting guide to help further diagnose the issue.
)
)
Een waarschuwingsconfiguratie maken
In een nieuwe methode maakt u importinstructies, zoals in het voorbeeld hieronder. Vervang detection_configuration_id door de ID van uw configuratie van de anomaliedetectie en vervang hook_id door de hook die u eerder hebt gemaakt. Maak een client met uw sleutels en eindpunt, en gebruik client.create_alert_configuration() om een nieuwe waarschuwingsconfiguratie te maken.
def sample_create_alert_config():
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
MetricAlertConfiguration,
MetricAnomalyAlertScope,
TopNGroupScope,
MetricAnomalyAlertConditions,
SeverityCondition,
MetricBoundaryCondition,
MetricAnomalyAlertSnoozeCondition
)
anomaly_detection_configuration_id = "<replace-with-your-detection-configuration-id"
hook_id = "<replace-with-your-hook-id>"
client = MetricsAdvisorAdministrationClient(
service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key)
)
alert_config = client.create_alert_configuration(
name="my alert config",
description="alert config description",
cross_metrics_operator="AND",
metric_alert_configurations=[
MetricAlertConfiguration(
detection_configuration_id=detection_configuration_id,
alert_scope=MetricAnomalyAlertScope(
scope_type="WholeSeries"
),
alert_conditions=MetricAnomalyAlertConditions(
severity_condition=SeverityCondition(
min_alert_severity="Low",
max_alert_severity="High"
)
)
),
MetricAlertConfiguration(
detection_configuration_id=detection_configuration_id,
alert_scope=MetricAnomalyAlertScope(
scope_type="TopN",
top_n_group_in_scope=TopNGroupScope(
top=10,
period=5,
min_top_count=5
)
),
alert_conditions=MetricAnomalyAlertConditions(
metric_boundary_condition=MetricBoundaryCondition(
direction="Up",
upper=50
)
),
alert_snooze_condition=MetricAnomalyAlertSnoozeCondition(
auto_snooze=2,
snooze_scope="Metric",
only_for_successive=True
)
),
],
hook_ids=[hook_id]
)
return alert_config
De waarschuwing opvragen
In een nieuwe methode maakt u importinstructies, zoals in het voorbeeld hieronder. Vervang alert_id door de id van uw waarschuwing en vervang alert_config_id door de id van de waarschuwingsconfiguratie. Maak een client met uw sleutels en eindpunt, en gebruik client.list_anomalies om de anomalieën voor een waarschuwing weer te geven.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient
alert_id = "<replace-with-your-alert-id>"
alert_config_id = "<replace-with-your-alert-configuration-id"
client = MetricsAdvisorClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key)
)
results = client.list_alerts(
alert_configuration_id=alert_config_id,
start_time=datetime.datetime(2020, 1, 1),
end_time=datetime.datetime(2020, 9, 9),
time_mode="AnomalyTime",
)
for result in results:
print("Alert id: {}".format(result.id))
print("Create on: {}".format(result.created_on))
results = client.list_anomalies(
alert_configuration_id=alert_config_id,
alert_id=alert_id,
)
for result in results:
print("Create on: {}".format(result.created_on))
print("Severity: {}".format(result.severity))
print("Status: {}".format(result.status))
De toepassing uitvoeren
Voer de toepassing uit met de opdracht python in uw quickstart-bestand.
python quickstart-file.py
Vereisten
- Azure-abonnement: Krijg een gratis abonnement
- Wanneer u uw Azure-abonnement hebt, kunt u een Metrics Advisor-resource maken in de Azure-portal om uw Metrics Advisor-instantie te implementeren.
- De huidige versie van cURL. In dit artikel worden verschillende opdrachtregelopties gebruikt, die worden vermeld in de cURL-documentatie.
- In de volgende BASH-voorbeelden wordt het regelvoortzettingsteken
\gebruikt. Als in uw console of terminal een ander regelvoortzettingsteken wordt gebruikt, gebruikt u dit teken.
- In de volgende BASH-voorbeelden wordt het regelvoortzettingsteken
Tip
- U vindt een Python-voorbeeld dat de REST API aanroept op GitHub.
- Het kan 10 tot 30 minuten duren voordat uw Metrics Advisor-resource een service-exemplaar heeft geïmplementeerd dat u kunt gebruiken. Klik op Naar de resource gaan zodra de implementatie is voltooid. Na de implementatie kunt u uw Metrics Advisor-instantie gebruiken met zowel de webportal als de REST API.
- U kunt de URL voor de REST API in Azure Portal vinden in het gedeelte Overzicht van uw resource. deze ziet er als volgt uit:
https://<instance-name>.cognitiveservices.azure.com/
U hebt twee sleutels nodig om aan de slag te gaan met de REST API:
- De sleutel voor de Metrics Advisor-resource. U vindt deze in het gedeelte Sleutels en eindpunt van uw resource in Azure Portal.
- Later vervangt u
Ocp-Apim-Subscription-Keyin de voorbeelden door deze sleutel.
- Later vervangt u
- De API-sleutel voor uw Metrics Advisor-exemplaar. U vindt deze in de webportal voor Metrics Advisor, in API-sleutels in het navigatiemenu aan de linkerkant.
- Later vervangt u
x-api-keyin de voorbeelden door deze sleutel.
- Later vervangt u
Een gegevensfeed van een sample of gegevensbron toevoegen
Als u de tijdreeksgegevens wilt gaan controleren, moet u een gegevensfeed toevoegen. Om een gegevensfeed toe te voegen, moet u een gegevensschema opgeven op basis van het gegevensbrontype en de parameters. Sla de onderstaande hoofdtekst van de JSON-aanvraag op in een bestand met de naam body.json en voer de cURL-opdracht uit.
{
"dataSourceType": "SqlServer",
"dataFeedName": "test_data_feed_00000001",
"dataFeedDescription": "",
"dataSourceParameter": {
"connectionString": "Server=ad-sample.database.windows.net,1433;Initial Catalog=ad-sample;Persist Security Info=False;User ID=adreadonly;Password=Readonly@2020;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
"query": "select * from adsample3 where Timestamp = @StartTime"
},
"granularityName": "Daily",
"granularityAmount": 0,
"metrics": [
{
"metricName": "revenue",
"metricDisplayName": "revenue",
"metricDescription": ""
},
{
"metricName": "cost",
"metricDisplayName": "cost",
"metricDescription": ""
}
],
"dimension": [
{
"dimensionName": "city",
"dimensionDisplayName": "city"
},
{
"dimensionName": "category",
"dimensionDisplayName": "category"
}
],
"timestampColumn": "timestamp",
"dataStartFrom": "2020-06-01T00:00:00.000Z",
"startOffsetInSeconds": 0,
"maxConcurrency": -1,
"minRetryIntervalInSeconds": -1,
"stopRetryAfterInSeconds": -1,
"needRollup": "NoRollup",
"fillMissingPointType": "SmartFilling",
"fillMissingPointValue": 0,
"viewMode": "Private",
"admins": [
"xxx@microsoft.com"
],
"viewers": [
],
"actionLinkTemplate": ""
}
De cURL-opdracht wordt uitgevoerd vanuit een BASH-shell. Bewerk deze opdracht met uw eigen resourcenaam, resourcesleutel en JSON-waarden.
curl -i https://REPLACE-WITH-YOUR-ENDPOINT/metricsadvisor/v1.0/datafeeds \
-X POST \
-H "Ocp-Apim-Subscription-Key: REPLACE-WITH-YOUR-RESOURCE-KEY" \
-H "x-api-key: REPLACE-WITH-YOUR-API-KEY" \
-H "Content-Type:application/json" \
-d @body.json
Voorbeeld van een antwoord
HTTP/1.1 201 Created
Content-Length: 0
Location: https://gualala-beta-0617.cognitiveservices.azure.com/metricsadvisor/v1.0/datafeeds/b5921405-8001-42b2-8746-004ddeeb780d
x-envoy-upstream-service-time: 564
apim-request-id: 4e4fe70b-d663-4fb7-a804-b9dc14ba02a3
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
x-content-type-options: nosniff
Date: Thu, 03 Sep 2020 18:29:27 GMT
In het bovenstaande antwoord is de Location-header de URL van de gegevensfeed die u hebt gemaakt, en bevat deze dataFeedID.
Met de bovenstaande URL kunt u een gedetailleerde informatie opvragen over de gegevensfeed die u in de vorige stap hebt gemaakt. (In de volgende stappen wordt metricID gebruikt in de informatie over de gegevensfeed)
curl https://REPLACE-WITH-YOUR-ENDPOINT/metricsadvisor/v1.0/datafeeds/REPLACE-WITH-YOUR-DATA-FEED-ID \
-H "Ocp-Apim-Subscription-Key: REPLACE-WITH-YOUR-RESOURCE-KEY" \
-H "x-api-key: REPLACE-WITH-YOUR-API-KEY"
Voorbeeld van een antwoord
{
"dataFeedId":"90919c03-be13-4efa-86e5-aa9dc72764ce",
"dataFeedName":"test_data_feed_00000007",
"metrics":[
{
"metricId":"8d03e541-a56d-4c28-8d9c-09ce91c6d95f",
"metricName":"cost",
"metricDisplayName":"cost",
"metricDescription":""
},
{
"metricId":"82bbc63d-3739-4d57-b190-accb69721b6a",
"metricName":"revenue",
"metricDisplayName":"revenue",
"metricDescription":""
}
],
"dimension":[
{
"dimensionName":"category",
"dimensionDisplayName":"category"
},
{
"dimensionName":"city",
"dimensionDisplayName":"city"
}
],
"dataStartFrom":"2020-06-01T00:00:00Z",
"dataSourceType":"SqlServer",
"timestampColumn":"timestamp",
"startOffsetInSeconds":0,
"maxQueryPerMinute":30.0,
"granularityName":"Daily",
"granularityAmount":null,
"allUpIdentification":null,
"needRollup":"NoRollup",
"fillMissingPointType":"SmartFilling",
"fillMissingPointValue":0.0,
"rollUpMethod":"None",
"rollUpColumns":[
],
"dataFeedDescription":"",
"stopRetryAfterInSeconds":-1,
"minRetryIntervalInSeconds":-1,
"maxConcurrency":-1,
"viewMode":"Private",
"admins":[
"xyz@microsoft.com"
],
"viewers":[
],
"creator":"xyz@microsoft.com",
"status":"Active",
"createdTime":"2020-09-08T08:39:28Z",
"isAdmin":true,
"actionLinkTemplate":"",
"dataSourceParameter":{
"connectionString":"Server=ad-sample.database.windows.net,1433;Initial Catalog=ad-sample;Persist Security Info=False;User ID=adreadonly;Password=Readonly@2020;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
"query":"select * from adsample3 where Timestamp = @StartTime"
}
}
Opnamestatus controleren
Nadat u de gegevensfeed hebt toegevoegd, kunt u de voortgang van een opnametaak bekijken door de status ervan te controleren. Sla de onderstaande hoofdtekst van de JSON-aanvraag op in een bestand met de naam body.json en voer de cURL-opdracht uit.
{
"startTime": "2020-01-01T00:00:00.0000000+00:00",
"endTime": "2020-01-04T00:00:00.0000000+00:00"
}
De cURL-opdracht wordt uitgevoerd vanuit een BASH-shell. Bewerk deze opdracht met uw eigen resourcenaam, resourcesleutel, JSON-waarden en JSON-grootte.
curl https://REPLACE-WITH-YOUR-ENDPOINT/metricsadvisor/v1.0/datafeeds/REPLACE-WITH-YOUR-DATA-FEED-ID/ingestionStatus/query \
-X POST \
-H "Ocp-Apim-Subscription-Key: REPLACE-WITH-YOUR-RESOURCE-KEY" \
-H "x-api-key: REPLACE-WITH-YOUR-API-KEY" \
-H "Content-Type:application/json" \
-d @body.json
Voorbeeld van een antwoord
{
"@nextLink": "https://demo.example.com/datafeeds/01234567-8901-2345-6789-012345678901/ingestionStatus/query?$skip=3&$top=1",
"value": [
{
"timestamp": "2020-09-03T00:00:00.0000000+00:00",
"status": "Running",
"message": ""
},
{
"timestamp": "2020-09-02T00:00:00.0000000+00:00",
"status": "Succeeded",
"message": ""
},
{
"timestamp": "2020-09-01T00:00:00.0000000+00:00",
"status": "Failed",
"message": "No valid record pulled from source for current timestamp 2020-01-01T00:00:00Z"
}
]
}
Configuratie van anomaliedetectie configureren
Hoewel er op elke metriek automatisch een standaardconfiguratie wordt toegepast, kunt u de detectiemodus voor uw gegevens aanpassen. Sla de onderstaande hoofdtekst van de JSON-aanvraag op in een bestand met de naam body.json en voer de cURL-opdracht uit.
{
"name": "test_detection_config0000000001",
"description": "string",
"metricId": "8d03e541-a56d-4c28-8d9c-09ce91c6d95f",
"wholeMetricConfiguration": {
"smartDetectionCondition": {
"sensitivity": 100,
"anomalyDetectorDirection": "Both",
"suppressCondition": {
"minNumber": 1,
"minRatio": 1
}
}
},
"dimensionGroupOverrideConfigurations": [
],
"seriesOverrideConfigurations": [
]
}
De cURL-opdracht wordt uitgevoerd vanuit een BASH-shell. Bewerk deze opdracht met uw eigen resourcenaam, resourcesleutel, JSON-waarden en JSON-grootte.
curl -i https://REPLACE-WITH-YOUR-ENDPOINT/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations \
-X POST \
-H "Ocp-Apim-Subscription-Key: REPLACE-WITH-YOUR-RESOURCE-KEY" \
-H "x-api-key: REPLACE-WITH-YOUR-API-KEY" \
-H "Content-Type:application/json" \
-d @body.json
Voorbeeld van een antwoord
HTTP/1.1 201 Created
Content-Length: 0
Location: https://gualala-beta-0617.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/6a977d61-f0f5-488a-a162-2feb4643ae09
x-request-id: 17752fcc-9085-46d5-ad37-c4e9e9ba6a5a
x-envoy-upstream-service-time: 253
apim-request-id: 17752fcc-9085-46d5-ad37-c4e9e9ba6a5a
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
x-content-type-options: nosniff
Date: Tue, 08 Sep 2020 09:50:38 GMT
In de bovenstaande Location-header, bevat deze de URL van de nieuwe gemaakte resource (detectieconfiguratie).
Met de bovenstaande URL in Location-header kunt u een query uitvoeren op de detectieconfiguratie die u hebt gemaakt (in de volgende stappen wordt anomalyDetectionConfigurationId gebruikt in de antwoordinhoud)
curl https://REPLACE-WITH-YOUR-ENDPOINT/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/REPLACE-WITH-YOUR-DETECTION-CONFIGURATION-ID \
-H "Ocp-Apim-Subscription-Key: REPLACE-WITH-YOUR-RESOURCE-KEY" \
-H "x-api-key: REPLACE-WITH-YOUR-API-KEY"
Voorbeeld van een antwoord
{
"anomalyDetectionConfigurationId":"6a977d61-f0f5-488a-a162-2feb4643ae09",
"name":"test_detection_config0000000001",
"description":"string",
"metricId":"8d03e541-a56d-4c28-8d9c-09ce91c6d95f",
"wholeMetricConfiguration":{
"smartDetectionCondition":{
"sensitivity":100.0,
"anomalyDetectorDirection":"Both",
"suppressCondition":{
"minNumber":1,
"minRatio":1.0
}
}
},
"dimensionGroupOverrideConfigurations":[
],
"seriesOverrideConfigurations":[
]
}
Configuratie van waarschuwingen configureren
Voordat u een waarschuwing configureert, moet u een hook maken die wordt gebruikt om een melding te verzenden. Er zijn twee manieren om een melding te ontvangen als een waarschuwing wordt geactiveerd: per webhook en e-mail. Tijdens het maken van een hook kunt u een van beide opgeven als hooktype in de hookconfiguratie.
Sla de onderstaande hoofdtekst van de JSON-aanvraag op in een bestand met de naam body.json en voer de cURL-opdracht uit.
{
"hookType": "Webhook",
"hookName": "test_web_hook000001",
"description": "",
"externalLink": "",
"hookParameter": {
"endpoint": "https://www.xxx.com/aaa",
"username": "",
"password": ""
}
}
De cURL-opdracht wordt uitgevoerd vanuit een BASH-shell. Bewerk deze opdracht met uw eigen resourcenaam, resourcesleutel, JSON-waarden en JSON-grootte.
curl -i https://REPLACE-WITH-YOUR-ENDPOINT/metricsadvisor/v1.0/hooks \
-X POST \
-H "Ocp-Apim-Subscription-Key: REPLACE-WITH-YOUR-RESOURCE-KEY" \
-H "x-api-key: REPLACE-WITH-YOUR-API-KEY" \
-H "Content-Type:application/json" \
-d @body.json
Voorbeeld van een antwoord
HTTP/1.1 201 Created
Content-Length: 0
Location: https://gualala-beta-0617.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/34d677bd-0875-4760-8bf6-24d48abde7c3
x-request-id: 7b6cc1a6-02cb-405b-bee3-174fdae0a7d2
x-envoy-upstream-service-time: 1640
apim-request-id: 7b6cc1a6-02cb-405b-bee3-174fdae0a7d2
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
x-content-type-options: nosniff
Date: Tue, 08 Sep 2020 10:37:59 GMT
Met de bovenstaande URL in Location-header kunt u een query uitvoeren op de webhook die u hebt gemaakt.
curl https://REPLACE-WITH-YOUR-ENDPOINT/metricsadvisor/v1.0/hooks/REPLACE-WITH-YOUR-HOOK-ID \
-H "Ocp-Apim-Subscription-Key: REPLACE-WITH-YOUR-RESOURCE-KEY" \
-H "x-api-key: REPLACE-WITH-YOUR-API-KEY"
Voorbeeld van een antwoord
{
"hookId":"34d677bd-0875-4760-8bf6-24d48abde7c3",
"hookName":"test_web_hook000001",
"hookType":"Webhook",
"externalLink":"",
"description":"",
"admins":[
"bowgong@microsoft.com"
],
"hookParameter":{
"endpoint":"https://www.xxx.com/aaa",
"username":"",
"password":"",
"headers":{
},
"certificateKey":"",
"certificatePassword":""
}
}
Door een configuratie voor waarschuwingen te configureren, kunt u een detectievoorwaarde opgeven die kan worden gebruikt om een waarschuwing te activeren. Sla de onderstaande hoofdtekst van de JSON-aanvraag op in een bestand met de naam body.json en voer de cURL-opdracht uit.
{
"name": "test_alert_config00000001",
"description": "",
"crossMetricsOperator": "AND",
"hookIds": [
"34d677bd-0875-4760-8bf6-24d48abde7c3"
],
"metricAlertingConfigurations": [
{
"anomalyDetectionConfigurationId": "6a977d61-f0f5-488a-a162-2feb4643ae09",
"anomalyScopeType": "All",
"severityFilter": {
"minAlertSeverity": "Low",
"maxAlertSeverity": "High"
},
"snoozeFilter": {
"autoSnooze": 0,
"snoozeScope": "Metric",
"onlyForSuccessive": true
},
}
]
}
De cURL-opdracht wordt uitgevoerd vanuit een BASH-shell. Bewerk deze opdracht met uw eigen resourcenaam, resourcesleutel, JSON-waarden en JSON-grootte.
curl -i https://REPLACE-WITH-YOUR-ENDPOINT/metricsadvisor/v1.0/alert/anomaly/configurations \
-X POST \
-H "Ocp-Apim-Subscription-Key: REPLACE-WITH-YOUR-RESOURCE-KEY" \
-H "x-api-key: REPLACE-WITH-YOUR-API-KEY" \
-H "Content-Type:application/json" \
-d @body.json
Voorbeeld van een antwoord
HTTP/1.1 201 Created
Content-Length: 0
Location: https://gualala-beta-0617.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/40004c91-6996-47c0-b8c8-fd20a8f4f0ab
x-request-id: 17752fcc-9085-46d5-ad37-c4e9e9ba6a5a
x-envoy-upstream-service-time: 253
apim-request-id: 17752fcc-9085-46d5-ad37-c4e9e9ba6a5a
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
x-content-type-options: nosniff
Date: Tue, 08 Sep 2020 09:50:38 GMT
In de bovenstaande Location-header, bevat deze de URL van de nieuwe gemaakte resource (detectieconfiguratie).
Met de bovenstaande URL in Location-header kunt u een query uitvoeren op de configuratie van waarschuwingen die u hebt gemaakt. (In de volgende stappen wordt gebruikgemaakt van anomalyAlertingConfigurationId in de configuratie van waarschuwingen)
curl https://REPLACE-WITH-YOUR-ENDPOINT/metricsadvisor/v1.0/alert/anomaly/configurations/REPLACE-WITH-YOUR-ANOMALY-ALERTING-CONFIGURATION-ID \
-H "Ocp-Apim-Subscription-Key: REPLACE-WITH-YOUR-RESOURCE-KEY" \
-H "x-api-key: REPLACE-WITH-YOUR-API-KEY"
Voorbeeld van een antwoord
{
"anomalyAlertingConfigurationId":"40004c91-6996-47c0-b8c8-fd20a8f4f0ab",
"name":"test_alert_config00000001",
"description":"",
"hookIds":[
"34d677bd-0875-4760-8bf6-24d48abde7c3"
],
"metricAlertingConfigurations":[
{
"anomalyDetectionConfigurationId":"6a977d61-f0f5-488a-a162-2feb4643ae09",
"anomalyScopeType":"All",
"negationOperation":false,
"severityFilter":{
"minAlertSeverity":"Low",
"maxAlertSeverity":"High"
},
"snoozeFilter":{
"autoSnooze":0,
"snoozeScope":"Metric",
"onlyForSuccessive":true
}
}
]
}
Query's uitvoeren op de anomaliedetectieresultaten
Er zijn verschillende manieren om het detectieresultaat op te halen. U kunt bijvoorbeeld periodiek het detectieresultaat opvragen met behulp van de detectieconfiguratie die u hebt gemaakt, of u kunt een melding ontvangen via een waarschuwing en vervolgens deze waarschuwing gebruiken om de bijbehorende anomalieën op te vragen.
In het volgende voorbeeld ziet u hoe u een query kunt uitvoeren op waarschuwingen en deze waarschuwing kunt gebruiken voor het uitvoeren van een query op anomalieën die gerelateerd zijn aan deze waarschuwing.
Waarschuwing opvragen
U kunt de configuratie van waarschuwingen die u in de bovenstaande stap hebt gemaakt, gebruiken om de waarschuwing op te vragen.
curl https://REPLACE-WITH-YOUR-ENDPOINT/metricsadvisor/v1.0/alert/anomaly/configurations/REPLACE-WITH-YOUR-ANOMALY-ALERTING-CONFIGURATION-ID/alerts/query \
-H "Ocp-Apim-Subscription-Key: REPLACE-WITH-YOUR-RESOURCE-KEY" \
-H "x-api-key: REPLACE-WITH-YOUR-API-KEY"
Voorbeeld van een antwoord
{
"value":[
{
"alertId":"17465dcc000",
"timestamp":"2020-09-07T00:00:00Z",
"createdTime":"2020-09-08T19:12:46.532Z",
"modifiedTime":"2020-09-08T19:12:46.588Z"
}
],
"@nextLink":null
}
In het bovenstaande antwoord hebben we een waarschuwing ontvangen. Met deze alertID kunnen we een query uitvoeren op alle gerelateerde anomalieën die deze waarschuwing hebben veroorzaakt.
(U kunt ook een webhook configureren zodat u passief een waarschuwing ontvangt zodra een anomalie is gevonden)
Anomalieën opvragen met behulp van alertID
curl https://REPLACE-WITH-YOUR-ENDPOINT/metricsadvisor/v1.0/alert/anomaly/configurations/REPLACE-WITH-YOUR-ANOMALY-ALERTING-CONFIGURATION-ID/alerts/REPLACE-WITH-YOUR-ALERTID/anomalies \
-H "Ocp-Apim-Subscription-Key: REPLACE-WITH-YOUR-RESOURCE-KEY" \
-H "x-api-key: REPLACE-WITH-YOUR-API-KEY"
Voorbeeld van een antwoord
{
"value":[
{
"metricId":"8d03e541-a56d-4c28-8d9c-09ce91c6d95f",
"anomalyDetectionConfigurationId":"6a977d61-f0f5-488a-a162-2feb4643ae09",
"timestamp":"2020-09-07T00:00:00Z",
"createdTime":"2020-09-08T19:12:46.566Z",
"modifiedTime":"2020-09-08T19:12:46.566Z",
"dimension":{
"city":"Amphibian",
"category":"Caucasian Fir"
},
"property":{
"anomalySeverity":"High",
"anomalyStatus":"Active"
}
},
{
"metricId":"8d03e541-a56d-4c28-8d9c-09ce91c6d95f",
"anomalyDetectionConfigurationId":"6a977d61-f0f5-488a-a162-2feb4643ae09",
"timestamp":"2020-09-07T00:00:00Z",
"createdTime":"2020-09-08T19:12:46.566Z",
"modifiedTime":"2020-09-08T19:12:46.566Z",
"dimension":{
"city":"Animals by number of neurons",
"category":"Crack willow"
},
"property":{
"anomalySeverity":"High",
"anomalyStatus":"Active"
}
},
{
"metricId":"8d03e541-a56d-4c28-8d9c-09ce91c6d95f",
"anomalyDetectionConfigurationId":"6a977d61-f0f5-488a-a162-2feb4643ae09",
"timestamp":"2020-09-07T00:00:00Z",
"createdTime":"2020-09-08T19:12:46.566Z",
"modifiedTime":"2020-09-08T19:12:46.566Z",
"dimension":{
"city":"Amphibian",
"category":"Crack willow"
},
"property":{
"anomalySeverity":"High",
"anomalyStatus":"Active"
}
},
{
"metricId":"8d03e541-a56d-4c28-8d9c-09ce91c6d95f",
"anomalyDetectionConfigurationId":"6a977d61-f0f5-488a-a162-2feb4643ae09",
"timestamp":"2020-09-07T00:00:00Z",
"createdTime":"2020-09-08T19:12:46.566Z",
"modifiedTime":"2020-09-08T19:12:46.566Z",
"dimension":{
"city":"Animals by number of neurons",
"category":"Common Lime"
},
"property":{
"anomalySeverity":"High",
"anomalyStatus":"Active"
}
},
{
"metricId":"8d03e541-a56d-4c28-8d9c-09ce91c6d95f",
"anomalyDetectionConfigurationId":"6a977d61-f0f5-488a-a162-2feb4643ae09",
"timestamp":"2020-09-07T00:00:00Z",
"createdTime":"2020-09-08T19:12:46.566Z",
"modifiedTime":"2020-09-08T19:12:46.566Z",
"dimension":{
"city":"Chickadee",
"category":"Common Lime"
},
"property":{
"anomalySeverity":"High",
"anomalyStatus":"Active"
}
},
{
"metricId":"8d03e541-a56d-4c28-8d9c-09ce91c6d95f",
"anomalyDetectionConfigurationId":"6a977d61-f0f5-488a-a162-2feb4643ae09",
"timestamp":"2020-09-07T00:00:00Z",
"createdTime":"2020-09-08T19:12:46.566Z",
"modifiedTime":"2020-09-08T19:12:46.566Z",
"dimension":{
"city":"Amphibian",
"category":"Common Lime"
},
"property":{
"anomalySeverity":"High",
"anomalyStatus":"Active"
}
},
{
"metricId":"8d03e541-a56d-4c28-8d9c-09ce91c6d95f",
"anomalyDetectionConfigurationId":"6a977d61-f0f5-488a-a162-2feb4643ae09",
"timestamp":"2020-09-07T00:00:00Z",
"createdTime":"2020-09-08T19:12:46.566Z",
"modifiedTime":"2020-09-08T19:12:46.566Z",
"dimension":{
"city":"Chickadee",
"category":"Crack willow"
},
"property":{
"anomalySeverity":"High",
"anomalyStatus":"Active"
}
}
],
"@nextLink":null
}
Resources opschonen
Als u een Cognitive Services-abonnement wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook alle bijbehorende resources verwijderd.