Rychlý Start: použití knihoven klientů nebo rozhraní REST API k přizpůsobení řešení
Začněte s poradcem metrik REST API nebo klientské knihovny. Pomocí těchto kroků nainstalujete balíček a vyzkoušíte ukázkový kód pro základní úlohy.
Použijte poradce metriky k provedení těchto akcí:
- Přidání datového kanálu ze zdroje dat
- Ověřit stav ingestování
- Konfigurace zjišťování a výstrah
- Dotaz na výsledky detekce anomálií
- Diagnostika anomálií
Referenční dokumentace | Zdrojový kód knihovny | Balíček (NuGet) | Ukázky
Požadavky
- Předplatné Azure – Vytvořte si ho zdarma .
- Aktuální verze .NET Core.
- Jakmile budete mít předplatné Azure, vytvořením prostředku Advisoru metriky v Azure Portal k nasazení instance služby Advisor pro metriky.
- vaše vlastní SQL databáze s daty časových řad.
Tip
- Ukázky pro službu .NET metriky Advisor můžete najít na GitHub.
- Pro nasazení instance služby, kterou můžete použít, může trvat 10 až 30 minut, než se dokončí váš prostředek poradce metriky. Po úspěšném nasazení klikněte na Přejít k prostředku . Po nasazení můžete začít používat vaši instanci poradce metriky s webovým portálem i REST API.
- Adresu URL pro REST API můžete najít v Azure Portal v části Přehled prostředku. Bude vypadat takto:
https://<instance-name>.cognitiveservices.azure.com/
Nastavení
Instalace klientské knihovny
po vytvoření nového projektu nainstalujte knihovnu klienta tak, že kliknete pravým tlačítkem na řešení projektu v Průzkumník řešení a vyberete spravovat NuGet balíčky. Ve Správci balíčků, který se otevře, vyberte Procházet, zaškrtněte políčko Zahrnout předprodejní a vyhledejte Azure.AI.MetricsAdvisor . Vyberte verzi 1.0.0 a pak nainstalujte.
V okně konzoly (například cmd, PowerShell nebo bash) použijte dotnet new příkaz k vytvoření nové aplikace konzoly s názvem metrics-advisor-quickstart . Tento příkaz vytvoří jednoduchý projekt C# "Hello World" s jedním zdrojovým souborem: program. cs.
dotnet new console -n metrics-advisor-quickstart
Změňte adresář na nově vytvořenou složku aplikace. Aplikaci můžete vytvořit pomocí:
dotnet build
Výstup sestavení by neměl obsahovat žádná upozornění ani chyby.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Instalace klientské knihovny
pokud používáte jiné integrované vývojové prostředí než Visual Studio můžete nainstalovat knihovnu klienta poradce pro metriky pro rozhraní .net pomocí následujícího příkazu:
dotnet add package Azure.AI.MetricsAdvisor --version 1.0.0
Tip
Chcete zobrazit celý soubor kódu pro rychlý Start najednou? můžete ji najít na GitHub, která obsahuje příklady kódu v tomto rychlém startu.
Z adresáře projektu otevřete soubor program. cs a přidejte následující using direktivy:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Azure.AI.MetricsAdvisor.Administration;
using Azure.AI.MetricsAdvisor;
using Azure.AI.MetricsAdvisor.Models;
V Main() metodě aplikace přidejte volání metod používaných v rámci tohoto rychlého startu. Budete je vytvářet později.
static void Main(string[] args){
// You will create the below methods later in the quickstart
exampleTask1();
}
Objektový model
Následující třídy zpracovávají některé z hlavních funkcí sady SDK pro službu metriky metrik v jazyce C#.
| Název | Description |
|---|---|
| MetricsAdvisorClient | Používá se pro: -Výpis incidentů -Výpis hlavní příčiny incidentů – Načítání původních dat časových řad a dat časových řad obohacených službou. -Výpis výstrah – Přidání zpětné vazby k ladění modelu |
| MetricsAdvisorAdministrationClient | Umožňuje: – Správa datových kanálů -Konfigurovat konfigurace detekce anomálií -Konfigurovat konfigurace upozorňování anomálií -Spravovat zavěšení |
| Datové kanály | Jaké metriky Advisoru ingestují ze zdroje dat. DataFeed Obsahuje řádky: – Časová razítka – Nula nebo více dimenzí – Jedna nebo více měr |
| DataFeedMetric | A DataFeedMetric je kvantifikovaná míra, která se používá k monitorování a vyhodnocení stavu konkrétního obchodního procesu. Může se jednat o kombinaci více hodnot časových řad rozdělených do dimenzí. Například metrika stavu webu může obsahovat rozměry počtu uživatelů a trhu en-US. |
Příklady kódu
Tyto fragmenty kódu ukazují, jak provádět následující úlohy pomocí klientské knihovny Poradce pro metriky pro .NET:
- Ověření klienta
- Přidání datového kanálu
- Zkontroluje stav příjmu.
- Konfigurovat detekci anomálií
- Vytvořit zavěšení
- Vytvoření konfigurace výstrahy
- Dotaz na upozornění
Ověření klienta
Ve Program třídě aplikace vytvořte proměnné pro klíče prostředku a koncový bod.
Důležité
Přejděte na Azure Portal. Pokud se prostředek poradce metriky, který jste vytvořili v části předpoklady , úspěšně nasadil, klikněte v části Další kroky na tlačítko Přejít k prostředku . Klíče předplatného a koncový bod můžete najít na stránce klíč a koncový bod prostředku v části Správa prostředků.
Pokud chcete načíst klíč rozhraní API, musíte přejít na https://metricsadvisor.azurewebsites.net . Vyberte příslušný adresář, odběry a pracovní prostor pro váš prostředek a zvolte možnost začít. Pak budete moci načíst klíče rozhraní API z https://metricsadvisor.azurewebsites.net/api-key .
Nezapomeňte odebrat klíč z kódu, až budete hotovi, a nikdy ho zveřejnit. V případě produkčního prostředí zvažte použití zabezpečeného způsobu ukládání a přístupu k vašim přihlašovacím údajům. Další informace najdete v článku o zabezpečení Cognitive Services.
Jakmile budete mít předplatné a klíče rozhraní API, vytvořte MetricsAdvisorKeyCredential. Pomocí koncového bodu a klíčového přihlašovacího údaje můžete vytvořit MetricsAdvisorClient :
string endpoint = "<endpoint>";
string subscriptionKey = "<subscriptionKey>";
string apiKey = "<apiKey>";
var credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
var client = new MetricsAdvisorClient(new Uri(endpoint), credential);
Můžete také vytvořit MetricsAdvisorAdministrationClient pro provádění operací správy:
string endpoint = "<endpoint>";
string subscriptionKey = "<subscriptionKey>";
string apiKey = "<apiKey>";
var credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
var adminClient = new MetricsAdvisorAdministrationClient(new Uri(endpoint), credential);
Přidání datového kanálu
Poradce metrik podporuje více typů zdrojů dat. v této ukázce ukážeme, jak vytvořit objekt DataFeed , který extrahuje data ze serveru SQL.
nahraďte connection_String vlastním připojovacím řetězcem SQL serveru a nahraďte query dotazem, který vrací vaše data v jednom časovém razítku. Také budete muset upravit DataFeedMetric hodnoty a na DataFeedDimension základě vlastních dat.
Důležité
Dotaz by měl vracet maximálně jeden záznam pro každou kombinaci dimenzí v každém časovém razítku. A všechny záznamy vrácené dotazem musí mít stejná časová razítka. Poradce metriky spustí tento dotaz pro každé časové razítko k ingestování vašich dat. Další informace a příklady najdete v kurzu: napište platný dotaz .
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}");
}
Zkontroluje stav příjmu.
Zkontroluje stav příjmu dříve vytvořeného 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;
}
}
Konfigurovat detekci anomálií
Vytvořte konfiguraci detekce anomálií a sdělte službě, které datové body by měly být považovány za anomálie.
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}");
Vytvořit zavěšení
Poradce metrik podporuje EmailNotificationHook WebNotificationHook třídy a jako způsob přihlášení k odběru oznámení výstrah. V tomto příkladu ukážeme, jak vytvořit EmailNotificationHook . Aby bylo možné začít dostávat oznámení, je nutné předávat zavěšení do konfigurace výstrahy anomálií. Další informace najdete v ukázce Vytvoření konfigurace výstrahy anomálií .
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}");
Vytvoření konfigurace výstrahy
Vytvořte AnomalyAlertConfiguration a sdělte službě, které výstrahy mají aktivovat.
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}");
Dotaz na upozornění
Prohlédněte si výstrahy vytvořené pomocí dané konfigurace výstrahy anomálií.
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;
}
}
Jakmile znáte ID výstrahy, uveďte anomálie , které tuto výstrahu aktivovaly.
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;
}
}
Spuštění aplikace
Spusťte aplikaci z adresáře aplikace pomocí dotnet run příkazu.
dotnet run
Referenční dokumentace | Zdrojový kód knihovny | Artefakt (Maven) | Ukázky
Požadavky
- Předplatné Azure – Vytvořte si ho zdarma .
- Aktuální verze sady Java Development Kit (JDK)
- Nástroj Gradle Buildnebo jiný správce závislostí.
- Jakmile budete mít předplatné Azure, vytvořením prostředku Advisoru metriky v Azure Portal k nasazení instance služby Advisor pro metriky.
- vaše vlastní SQL databáze s daty časových řad.
Tip
- Ukázky pro poradce Java Metrics najdete na GitHub.
- Pro nasazení instance služby, kterou můžete použít, může trvat 10 až 30 minut, než se dokončí váš prostředek poradce metriky. Po úspěšném nasazení klikněte na Přejít k prostředku . Po nasazení můžete začít používat vaši instanci poradce metriky s webovým portálem i REST API.
- Adresu URL pro REST API můžete najít v Azure Portal v části Přehled prostředku. Bude vypadat takto:
https://<instance-name>.cognitiveservices.azure.com/
Nastavení
Vytvořit nový projekt Gradle
V tomto rychlém startu se používá správce závislostí Gradle. Další informace o klientské knihovně najdete v úložišti Maven Central.
V okně konzoly (například cmd, PowerShell nebo bash) vytvořte nový adresář pro vaši aplikaci a přejděte na něj.
mkdir myapp && cd myapp
Spusťte gradle init příkaz z pracovního adresáře. Tento příkaz vytvoří základní soubory sestavení pro Gradle, včetně Build. Gradle. kts , který se používá za běhu k vytvoření a konfiguraci vaší aplikace.
gradle init --type basic
Po zobrazení výzvy k výběru DSL vyberte Kotlin.
Instalace klientské knihovny
Vyhledejte Build. Gradle. kts a otevřete ho pomocí vašeho preferovaného integrovaného vývojového prostředí (IDE) nebo textového editoru. Pak zkopírujte do této konfigurace sestavení. Nezapomeňte zahrnout závislosti projektu.
dependencies {
compile("com.azure:azure-ai-metricsadvisor:1.0.0")
}
Vytvoření souboru Java
Vytvořte složku pro ukázkovou aplikaci. V pracovním adresáři spusťte následující příkaz:
mkdir -p src/main/java
Přejděte do nové složky a vytvořte soubor s názvem MetricsAdvisorQuickstarts. Java. Otevřete ho v preferovaném editoru nebo integrovaném vývojovém prostředí a přidejte následující import příkazy:
Tip
Chcete zobrazit celý soubor kódu pro rychlý Start najednou? můžete ji najít na GitHub, která obsahuje příklady kódu v tomto rychlém startu.
Ve MetricsAdvisorQuickstarts třídě aplikace vytvořte proměnné pro klíč a koncový bod prostředku.
Důležité
Přejděte na Azure Portal. Pokud se prostředek poradce metriky, který jste vytvořili v části předpoklady , úspěšně nasadil, klikněte v části Další kroky na tlačítko Přejít k prostředku . Klíče předplatného a koncový bod můžete najít na stránce klíč a koncový bod prostředku v části Správa prostředků.
Pokud chcete načíst klíč rozhraní API, musíte přejít na https://metricsadvisor.azurewebsites.net . Vyberte příslušný adresář, odběry a pracovní prostor pro váš prostředek a zvolte možnost začít. Pak budete moci načíst klíče rozhraní API z https://metricsadvisor.azurewebsites.net/api-key .
Nezapomeňte odebrat klíč z kódu, až budete hotovi, a nikdy ho zveřejnit. V případě produkčního prostředí zvažte použití zabezpečeného způsobu ukládání a přístupu k vašim přihlašovacím údajům. Další informace najdete v článku o zabezpečení Cognitive Services.
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>";
V Main() metodě aplikace přidejte volání metod používaných v rámci tohoto rychlého startu. Později je vytvoříte.
static void Main(string[] args){
// You will create the below methods later in the quickstart
exampleTask1();
}
Objektový model
Následující třídy zpracovávají některé hlavní funkce nástroje Advisor sady Java SDK.
| Název | Description |
|---|---|
| MetricsAdvisorClient | Používá se pro: -Výpis incidentů anomálií -Výpis hlavní příčiny incidentů – Načítání původních dat časových řad a dat časových řad obohacených službou. -Výpis výstrah – Přidání zpětné vazby k ladění modelu |
| MetricsAdvisorAdministrationClient | Umožňuje: – Správa datových kanálů -Konfigurovat konfigurace detekce anomálií -Konfigurovat konfigurace upozorňování anomálií -Spravovat zavěšení |
| Datové kanály | Jaké metriky Advisoru ingestují ze zdroje dat. DataFeed Obsahuje řádky: – Časová razítka – Nula nebo více dimenzí – Jedna nebo více měr |
| DataFeedMetric | A DataFeedMetric je kvantifikovaná míra, která se používá k monitorování a vyhodnocení stavu konkrétního obchodního procesu. Může se jednat o kombinaci více hodnot časových řad rozdělených do dimenzí. Například metrika stavu webu může obsahovat rozměry počtu uživatelů a trhu en-US. |
Příklady kódu
Tyto fragmenty kódu ukazují, jak provádět následující úlohy pomocí klientské knihovny Poradce pro metriky pro jazyk Java:
- Ověření klienta
- Přidání datového kanálu
- Zkontroluje stav příjmu.
- Konfigurovat detekci anomálií
- Vytvořit zavěšení
- Vytvoření konfigurace výstrahy
- Dotaz na upozornění
Ověření klienta
Vytvoření klienta Advisor metriky pomocí MetricsAdvisorKeyCredential
MetricsAdvisorKeyCredential credential = new MetricsAdvisorKeyCredential(SUBSCRIPTION_KEY, API_KEY);
MetricsAdvisorClient metricsAdvisorClient = new MetricsAdvisorClientBuilder()
.endpoint(ENDPOINT)
.credential(credential)
.buildClient();
Vytvoření klienta pro správu metrik pomocí MetricsAdvisorKeyCredential
MetricsAdvisorKeyCredential credential = new MetricsAdvisorKeyCredential(SUBSCRIPTION_KEY, API_KEY);
MetricsAdvisorAdministrationClient metricsAdvisorAdministrationClient =
new MetricsAdvisorAdministrationClientBuilder()
.endpoint(ENDPOINT)
.credential(credential)
.buildClient();
Přidání datového kanálu
nahraďte sql_server_connection_string vlastním připojovacím řetězcem SQL serveru a nahraďte query dotazem, který vrací vaše data v jednom časovém razítku. Také budete muset upravit DataFeedMetric hodnoty a na DataFeedDimension základě vlastních dat.
Důležité
Dotaz by měl vracet maximálně jeden záznam pro každou kombinaci dimenzí v každém časovém razítku. A všechny záznamy vrácené dotazem musí mít stejná časová razítka. Poradce metriky spustí tento dotaz pro každé časové razítko k ingestování vašich dat. Další informace a příklady najdete v kurzu: napište platný dotaz .
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());
}
Zkontroluje stav příjmu.
Tento příklad kontroluje stav příjmu dříve poskytnutého zdroje datového kanálu.
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());
});
Konfigurovat detekci anomálií
Tento příklad ukazuje, jak může uživatel nakonfigurovat konfiguraci detekce anomálií pro svá data.
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))
);
Vytvořit zavěšení
Tento příklad vytvoří e-mailový háček, který obdrží výstrahy na incidenty anomálií.
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()));
Vytvoření konfigurace výstrahy
Tento příklad ukazuje, jak může uživatel nakonfigurovat konfiguraci výstrah pro zjištěné anomálie v jejich datech.
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)));
Dotaz na upozornění
Tento příklad ukazuje, jak se může uživatel dotazovat na aktivované výstrahy pro konfiguraci detekce výstrah a získat anomálie pro tuto výstrahu.
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());
});
});
Aplikaci můžete vytvořit pomocí:
gradle build
Spuštění aplikace
Spusťte aplikaci s run cílem:
gradle run
Referenční dokumentace | Zdrojový kód knihovny | Balíček (npm) | Ukázky
Požadavky
- Předplatné Azure – Vytvořte si ho zdarma .
- Aktuální verze Node.js
- Jakmile budete mít předplatné Azure, vytvořením prostředku Advisoru metriky v Azure Portal k nasazení instance služby Advisor pro metriky.
- vaše vlastní SQL databáze s daty časových řad.
Tip
- Ukázky pro poradce pro metriky jazyka JavaScript najdete na GitHub.
- Pro nasazení instance služby, kterou můžete použít, může trvat 10 až 30 minut, než se dokončí váš prostředek poradce metriky. Po úspěšném nasazení klikněte na Přejít k prostředku . Po nasazení můžete začít používat vaši instanci poradce metriky s webovým portálem i REST API.
- Adresu URL pro REST API můžete najít v Azure Portal v části Přehled prostředku. Bude vypadat takto:
https://<instance-name>.cognitiveservices.azure.com/
Nastavení
Vytvoření nové aplikace Node.js
V okně konzoly (například cmd, PowerShell nebo bash) vytvořte nový adresář pro vaši aplikaci a přejděte na něj.
mkdir myapp && cd myapp
Spuštěním npm init příkazu vytvořte aplikaci uzlu se package.json souborem.
npm init
Instalace klientské knihovny
Nainstalujte @azure/ai-metrics-advisor balíček npm:
npm install @azure/ai-metrics-advisor
Soubor vaší aplikace package.json bude aktualizován pomocí závislostí.
Vytvořte soubor s názvem index.js a importujte následující knihovny:
Tip
Chcete zobrazit celý soubor kódu pro rychlý Start najednou? můžete ji najít na GitHub, která obsahuje příklady kódu v tomto rychlém startu.
Vytvořte proměnné pro koncový bod a klíč Azure prostředku.
Důležité
Přejděte na Azure Portal. Pokud se prostředek poradce metriky, který jste vytvořili v části předpoklady , úspěšně nasadil, klikněte v části Další kroky na tlačítko Přejít k prostředku . Klíče předplatného a koncový bod můžete najít na stránce klíč a koncový bod prostředku v části Správa prostředků.
Pokud chcete načíst klíč rozhraní API, musíte přejít na https://metricsadvisor.azurewebsites.net . Vyberte příslušný adresář, odběry a pracovní prostor pro váš prostředek a zvolte možnost začít. Pak budete moci načíst klíče rozhraní API z https://metricsadvisor.azurewebsites.net/api-key .
Nezapomeňte odebrat klíč z kódu, až budete hotovi, a nikdy ho zveřejnit. V případě produkčního prostředí zvažte použití zabezpečeného způsobu ukládání a přístupu k vašim přihlašovacím údajům. Další informace najdete v článku o zabezpečení Cognitive Services.
subscriptionKey = "<paste-your-metrics-advisor-key-here>";
apiKey ="<paste-your-metrics-advisor-api-key-here>";
endpoint = "<paste-your-metrics-advisor-endpoint-here>";
Objektový model
Následující třídy a rozhraní zpracovávají některé z hlavních funkcí sady SDK pro rutiny metriky s metrikami jazyka JavaScript.
| Název | Description |
|---|---|
| MetricsAdvisorClient | Používá se pro: -Výpis incidentů -Výpis hlavní příčiny incidentů – Načítání původních dat časových řad a dat časových řad obohacených službou. -Výpis výstrah – Přidání zpětné vazby k ladění modelu |
| MetricsAdvisorAdministrationClient | Umožňuje: – Správa datových kanálů – Vytváření, konfigurace, načítání, zobrazování a odstraňování konfigurací upozorňujících na anomálii -Spravovat zavěšení |
| Datové kanály | Jaké metriky Advisoru ingestují ze zdroje dat. DataFeed Obsahuje řádky: – Časová razítka – Nula nebo více dimenzí – Jedna nebo více měr |
| DataFeedMetric | A DataFeedMetric je kvantifikovaná míra, která se používá k monitorování a vyhodnocení stavu konkrétního obchodního procesu. Může se jednat o kombinaci více hodnot časových řad rozdělených do dimenzí. Například metrika stavu webu může obsahovat rozměry počtu uživatelů a trhu en-US. |
Příklady kódu
Tyto fragmenty kódu ukazují, jak provést následující akce pomocí klientské knihovny Poradce pro metriky pro JavaScript:
- Ověření klienta
- Přidání datového kanálu
- Ověřit stav ingestování
- Konfigurovat detekci anomálií
- Vytvořit zavěšení
- Vytvoření konfigurace výstrahy
- Dotaz na upozornění
Ověření klienta
Jakmile budete mít dvě klíče a adresu koncového bodu, můžete použít třídu MetricsAdvisorKeyCredential k ověřování klientů následujícím způsobem:
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);
Přidání datového kanálu
Poradce metrik podporuje připojení různých typů zdrojů dat. Zde je ukázka pro ingestování dat z SQL Server.
nahraďte sql_server_connection_string vlastním připojovacím řetězcem SQL serveru a nahraďte query dotazem, který vrací vaše data v jednom časovém razítku. Také budete muset upravit metric hodnoty a na dimension základě vlastních dat.
Důležité
Dotaz by měl vracet maximálně jeden záznam pro každou kombinaci dimenzí v každém časovém razítku. A všechny záznamy vrácené dotazem musí mít stejná časová razítka. Poradce metriky spustí tento dotaz pro každé časové razítko k ingestování vašich dat. Další informace a příklady najdete v kurzu: napište platný dotaz .
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;
}
Ověřit stav ingestování
Po zahájení příjmu dat můžeme kontrolovat stav příjmu.
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}`);
}
}
Konfigurovat detekci anomálií
Abychom zjistili, jestli je bod v časové řadě anomálií, potřebujeme konfiguraci detekce anomálií. I když je výchozí konfigurace zjišťování automaticky použita u každé metriky, můžete vyladit režimy detekce používané na vašich datech vytvořením vlastní konfigurace detekce anomálií.
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);
}
Vytvořit zavěšení
K přihlášení k odběru výstrah v reálném čase používáme háky. V tomto příkladu vytvoříme Webhook pro službu Advisoru metrik, do které bude tato výstraha publikovat.
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);
}
Vytvoření konfigurace výstrahy
V této ukázce se dozvíte, jak nakonfigurovat podmínky, které musí být spuštěny a které se zařadí k použití jako cíle výstrahy.
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);
}
Dotaz na upozornění
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}`
);
}
}
Spuštění aplikace
Spusťte aplikaci pomocí node příkazu v souboru rychlého startu.
node index.js
Referenční dokumentace | Zdrojový kód knihovny | Balíček (PiPy) | Ukázky
Požadavky
- Předplatné Azure – Vytvořte si ho zdarma.
- Python 3.x
- Jakmile máte předplatné Azure, vytvořte prostředek Metrics Advisor prostředků Metrics Advisor v Azure Portal k nasazení Metrics Advisor instance.
- Vaše vlastní SQL databáze s daty časových řad.
Tip
- Ukázky pythonových Metrics Advisor najdete na GitHub.
- Může trvat 10 až 30 minut, než Metrics Advisor prostředek služby nasadí instanci služby, kterou budete používat. Po úspěšném nasazení klikněte na Přejít k prostředku. Po nasazení můžete začít používat svou instanci Metrics Advisor s webovým portálem i s REST API.
- Adresu URL pro tento prostředek najdete REST API Azure Portal části Přehled vašeho prostředku. Bude vypadat takto:
https://<instance-name>.cognitiveservices.azure.com/
Nastavení
Instalace klientské knihovny
Po instalaci Pythonu můžete klientskou knihovnu nainstalovat pomocí:
pip install azure-ai-metricsadvisor --pre
Vytvoření nové aplikace v Pythonu
Vytvořte nový soubor Pythonu a naimportujte následující knihovny.
import os
import datetime
Vytvořte proměnné pro koncový bod a klíč Azure vašeho prostředku.
Důležité
Přejděte na Azure Portal. Pokud se Metrics Advisor prostředků, které jste vytvořili v části Požadavky, úspěšně nasazené, klikněte na tlačítko Přejít k prostředku v části Další kroky. Klíče předplatného a koncový bod najdete na stránce Klíč a koncový bod prostředku v části Správa prostředků.
Pokud chcete načíst klíč rozhraní API, musíte přejít na https://metricsadvisor.azurewebsites.net . Vyberte pro prostředek odpovídající adresáře, předplatná a pracovní prostor a zvolte Začínáme. Pak budete moct načíst klíče rozhraní API z https://metricsadvisor.azurewebsites.net/api-key .
Až budete hotovi, nezapomeňte klíč z kódu odebrat a nikdy ho veřejně ne zveřejníte. V produkčním prostředí zvažte použití zabezpečeného způsobu ukládání přihlašovacích údajů a přístupu k těmto přihlašovacím údajům. Další informace najdete Cognitive Services zabezpečení sítě.
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>"
Objektový model
Následující třídy zvládá některé hlavní funkce sady Metrics Advisor Python SDK.
| Název | Description |
|---|---|
| MetricsAdvisorClient | Používá se pro: – Výpis incidentů – Výpis hlavní příčiny incidentů – Načítání původních dat časových řad a dat časových řad obohacených službou – Výpis upozornění – Přidání zpětné vazby k vyladění modelu |
| MetricsAdvisorAdministrationClient | Umožňuje: – Správa datových kanálů – Vytvoření, konfigurace, načtení, zobrazení seznamu a odstranění konfigurací detekce anomálií – Vytvoření, konfigurace, načtení, zobrazení seznamu a odstranění konfigurací upozornění anomálií – Správa hooků |
| Datový náhon | Co Metrics Advisor ingestuje ze zdroje dat. Obsahuje DataFeed řádky: – Časová razítka – Nula nebo více dimenzí – Jedna nebo více opatření |
| Metrika DataFeedMetric | A DataFeedMetric je kvantifikovatelná míra, která se používá k monitorování a vyhodnocení stavu konkrétního obchodního procesu. Může to být kombinace více hodnot časových řad rozdělených do dimenzí. Například metrika stavu webu může obsahovat dimenze pro počet uživatelů a trh en-us. |
Příklady kódu
Tyto fragmenty kódu ukazují, jak pomocí klientské knihovny pythonu Metrics Advisor následujícím způsobem:
- Ověření klienta
- Přidání datového kanálu
- Kontrola stavu příjmu dat
- Konfigurace detekce nastavení a konfigurace výstrah
- Vytvoření konfigurace upozornění
- Dotazování na výsledky detekce anomálií
Ověření klienta
Klient v tomto příkladu je objekt, který používá koncový bod MetricsAdvisorAdministrationClient a MetricsAdvisorKeyCredential objekt, který obsahuje vaše klíče. Tuto ukázku kódu nemusíte kopírovat. Metody, které vytvoříte později, vytvoří instanci klienta. Alternativní klient se nazývá další informace o tomto klientovi najdete v MetricsAdvisorClient referenční dokumentaci.
client = MetricsAdvisorAdministrationClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key))
Přidání datového kanálu
V nové metodě vytvořte příkazy importu jako v následujícím příkladu. Nahraďte vlastním připojovacím SQL serveru a nahraďte dotazem, který vrátí sql_server_connection_string vaše data v jednom query časovém razítku. Budete také muset upravit hodnoty a DataFeedmetric DataFeedDimension na základě vlastních dat.
Důležité
Dotaz by měl v každém časovém razítku vrátit pro každou kombinaci dimenzí nejdél jeden záznam. A všechny záznamy vrácené dotazem musí mít stejná časová razítka. Metrics Advisor spustí tento dotaz pro každé časové razítko pro ingestování dat. Další informace a příklady najdete v tématu Kurz: Zápis platného dotazu.
Vytvořte klienta s klíči a koncovým bodem a použijte ke konfiguraci client.create_data_feed() názvu, zdroje, členitosti a schématu. Můžete také nastavit čas příjmu dat, nastavení souhrnu a další možnosti.
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()
Kontrola stavu příjmu dat
V nové metodě vytvořte příkaz importu jako v následujícím příkladu. Nahraďte data_feed_id ID datového kanálu, který jste vytvořili. Vytvořte klienta s klíči a koncovým bodem a použijte k client.list_data_feed_ingestion_status() získání průběhu příjmu dat. Vytiskněte podrobnosti, například poslední aktivní a úspěšná časová razítka.
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))
Konfigurace detekce anomálií
V nové metodě vytvořte příkazy importu jako v následujícím příkladu. Nahraďte metric_id ID metriky, kterou chcete nakonfigurovat. Vytvořte klienta s klíči a koncovým bodem a pomocí client.create_detection_configuration vytvořte novou konfiguraci detekce. Podmínky prahové hodnoty určují parametry pro detekci anomálií.
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
Vytvoření webhooku
V nové metodě vytvořte příkazy importu jako v následujícím příkladu. Vytvořte klienta s vašimi klíči a koncovým bodem a pomocí client.create_hook() vytvořte webhooky. Zadejte popis, seznam e-mailů, na které se má výstraha odeslat, a externí odkaz, který se zobrazí v upozornění.
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.
)
)
Vytvoření konfigurace upozornění
V nové metodě vytvořte příkazy importu jako v následujícím příkladu. Nahraďte detection_configuration_id ID pro konfiguraci detekce anomálií a nahraďte za hook, hook_id který jste vytvořili dříve. Vytvořte klienta s vašimi klíči a koncovým bodem a pomocí client.create_alert_configuration() vytvořte konfiguraci upozornění.
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
Dotaz na upozornění
V nové metodě vytvořte příkaz importu jako v následujícím příkladu. Nahraďte alert_id ID výstrahy a nahraďte alert_config_id ID konfigurace výstrahy. Vytvořte klienta s vašimi klíči a koncovým bodem a pomocí použijte k client.list_anomalies zobrazení seznamu anomálií výstrahy.
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))
Spuštění aplikace
Spusťte aplikaci pomocí python příkazu v souboru rychlého startu.
python quickstart-file.py
Požadavky
- Předplatné Azure – Vytvořte si ho zdarma .
- Jakmile budete mít předplatné Azure, vytvořením prostředku Advisoru metriky v Azure Portal k nasazení instance služby Advisor pro metriky.
- Aktuální verze sady kudrlinkou. V tomto článku se používá několik přepínačů příkazového řádku, které jsou uvedeny v dokumentaci k kudrlinkou.
- Následující příklady BASH používají znak pro
\pokračování řádku. Pokud konzola nebo terminál používá jiný znak pro pokračování řádku, použijte tento znak.
- Následující příklady BASH používají znak pro
Tip
- Můžete najít ukázku Pythonu, která volá REST API v GitHub.
- Může to být 10 až 30 minut, než váš prostředek Advisoru metriky nasadí instanci služby, kterou chcete použít. Po úspěšném nasazení klikněte na Přejít k prostředku . Po nasazení můžete začít používat vaši instanci poradce metriky s webovým portálem i REST API.
- Adresu URL pro REST API můžete najít v Azure Portal v části Přehled prostředku. bude vypadat takto:
https://<instance-name>.cognitiveservices.azure.com/
Abyste mohli začít používat REST API, budete potřebovat dva klíče:
- Klíč k prostředku Advisoru metrik. Najdete ho v části klíče a koncový bod vašeho prostředku v Azure Portal.
- Později
Ocp-Apim-Subscription-Keyv příkladech nahraďte tento klíč.
- Později
- Klíč rozhraní API pro instanci poradce metrik. Najdete ho na webovém portálu pro poradce metrik v části klíče rozhraní API v levé navigační nabídce.
- Později
x-api-keyv příkladech nahraďte tento klíč.
- Později
Přidání datového kanálu ze vzorku nebo zdroje dat
Chcete-li začít monitorovat data časových řad, je nutné přidat datový kanál. Chcete-li přidat datový kanál, je nutné zadat schéma dat podle typu zdroje dat a parametrů. Níže uvedený text požadavku JSON uložte do souboru s názvem body.jsv a spusťte příkaz kudrlinkou.
{
"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": ""
}
Příkaz kudrlinkou se spustí z prostředí BASH. Tento příkaz upravte pomocí vlastního názvu prostředku, klíče prostředku a hodnot JSON.
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
Příklad odpovědi
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
Ve výše uvedené odpovědi je hlavičkou umístění adresa URL datového kanálu, který jste vytvořili, a obsahuje dataFeedID.
Pomocí výše uvedené adresy URL se můžete dotazovat na podrobné informace o datovém kanálu, který jste vytvořili v předchozím kroku. (V následujících krocích budeme používat metricID v informacích datového kanálu)
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"
Příklad odpovědi
{
"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"
}
}
Ověřit stav ingestování
Pokud chcete sledovat průběh úlohy příjmu, můžete po přidání datového kanálu zjistit jeho stav. Níže uvedený text požadavku JSON uložte do souboru s názvem body.jsv a spusťte příkaz kudrlinkou.
{
"startTime": "2020-01-01T00:00:00.0000000+00:00",
"endTime": "2020-01-04T00:00:00.0000000+00:00"
}
Příkaz kudrlinkou se spustí z prostředí BASH. Tento příkaz upravte pomocí vlastního názvu prostředku, klíče prostředku a hodnot JSON a velikosti JSON.
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
Příklad odpovědi
{
"@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"
}
]
}
Konfigurace detekce anomálií
I když je výchozí konfigurace automaticky použita u každé metriky, můžete ladit režimy detekce používané na vašich datech. Níže uvedený text požadavku JSON uložte do souboru s názvem body.jsv a spusťte příkaz kudrlinkou.
{
"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": [
]
}
Příkaz kudrlinkou se spustí z prostředí BASH. Tento příkaz upravte pomocí vlastního názvu prostředku, klíče prostředku a hodnot JSON a velikosti JSON.
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
Příklad odpovědi
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
Ve výše uvedené hlavičce umístění obsahuje adresu URL nového vytvořeného prostředku (konfigurace detekce).
Pomocí výše uvedené adresy URL v hlavičce umístění se můžete dotazovat na konfiguraci detekce, kterou jste vytvořili (v obsahu odpovědi v následujících krocích použijeme anomalyDetectionConfigurationId ).
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"
Příklad odpovědi
{
"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":[
]
}
Konfigurace konfigurace výstrah
Před konfigurací výstrahy je potřeba vytvořit zavěšení, které bude sloužit k upozornění na upozornění. Existují dva způsoby, jak obdržet upozornění, když se aktivuje výstraha, která je webhookem a e-mailem. Při vytváření zavěšení můžete zadat buď v konfiguraci zavěšení jako typ zavěšení.
Níže uvedený text požadavku JSON uložte do souboru s názvem body.jsv a spusťte příkaz kudrlinkou.
{
"hookType": "Webhook",
"hookName": "test_web_hook000001",
"description": "",
"externalLink": "",
"hookParameter": {
"endpoint": "https://www.xxx.com/aaa",
"username": "",
"password": ""
}
}
Příkaz kudrlinkou se spustí z prostředí BASH. Tento příkaz upravte pomocí vlastního názvu prostředku, klíče prostředku a hodnot JSON a velikosti JSON.
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
Příklad odpovědi
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
Pomocí výše uvedené adresy URL v hlavičce umístění můžete zadat dotaz na Webhook, který jste vytvořili.
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"
Příklad odpovědi
{
"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":""
}
}
Konfigurací výstrahy můžete určit podmínku detekce, která se dá použít k aktivaci výstrahy. Níže uvedený text požadavku JSON uložte do souboru s názvem body.jsv a spusťte příkaz kudrlinkou.
{
"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
},
}
]
}
Příkaz kudrlinkou se spustí z prostředí BASH. Tento příkaz upravte pomocí vlastního názvu prostředku, klíče prostředku a hodnot JSON a velikosti JSON.
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
Příklad odpovědi
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
Ve výše uvedené hlavičce umístění obsahuje adresu URL nového vytvořeného prostředku (konfigurace detekce).
Pomocí výše uvedené adresy URL můžete v hlavičce umístění zadat dotaz na vytvořenou konfiguraci výstrah. (V následujících krocích budeme používat anomalyAlertingConfigurationId v konfiguraci výstrah).
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"
Příklad odpovědi
{
"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
}
}
]
}
Výsledky detekce anomálií dotazů
Existují různé způsoby, jak získat výsledek zjišťování. Například můžete aktivně dotazovat výsledek detekce pomocí konfigurace detekce, kterou jste vytvořili, nebo můžete být upozorněni prostřednictvím výstrahy a pak můžete použít tuto výstrahu k dotazování na odpovídající anomálie.
V následující ukázce se dozvíte, jak se dotazovat na výstrahy, a pomocí této výstrahy dotazovat anomálie související s touto výstrahou.
Výstraha dotazu
K dotazování výstrahy můžete použít konfiguraci výstrah vytvořenou v předchozím kroku.
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"
Příklad odpovědi
{
"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
}
Ve výše uvedené reakci máme upozornění. Pomocí tohoto alertIDu se můžeme dotázat na všechny související anomálie, které způsobily tuto výstrahu.
(Další způsob, jak získat výstrahu, je konfigurace Webhooku a upozornění po jeho nalezení.)
Zjištění anomálií pomocí 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"
Příklad odpovědi
{
"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
}
Vyčištění prostředků
Pokud chcete vyčistit a odebrat předplatné Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků se odstraní také všechny další prostředky, které jsou k ní přidružené.