Klientská knihovna Azure Metrics Advisoru pro JavaScript – verze 1.0.0
Metrics Advisor je součástí služeb Azure Cognitive Services, které používají monitorování dat a detekci anomálií v datech časových řad pomocí AI. Služba automatizuje proces aplikování modelů na vaše data a poskytuje sadu webových pracovních prostorů rozhraní API pro příjem dat, detekci anomálií a diagnostiku , aniž by bylo nutné znát strojové učení. Poradce pro metriky můžete použít k:
- Analýza multidimenzionálních dat z více zdrojů dat
- Identifikace a korelace anomálií
- Konfigurace a vyladění modelu detekce anomálií, který se používá u vašich dat
- Diagnostika anomálií a pomoc s analýzou původní příčiny
Klíčové odkazy:
Začínáme
Aktuálně podporovaná prostředí
- LtS verze Node.js
- Nejnovější verze prohlížečů Safari, Chrome, Edge a Firefox.
Další podrobnosti najdete v našich zásadách podpory .
Požadavky
- Předplatné Azure
- Existující prostředek služeb Cognitive Services nebo Metrics Advisor. Pokud potřebujete prostředek vytvořit, můžete použít Azure Portal nebo Azure CLI.
Pokud používáte Azure CLI, nahraďte <your-resource-group-name>
a <your-resource-name>
vlastními jedinečnými názvy:
az cognitiveservices account create --kind MetricsAdvisor --resource-group <your-resource-group-name> --name <your-resource-name> --sku <sku level> --location <location>
Nainstalujte balíček @azure/ai-metrics-advisor
.
Nainstalujte klientskou knihovnu Azure Metrics Advisor pro JavaScript pomocí npm
nástroje :
npm install @azure/ai-metrics-advisor
Vytvořit a ověřit MetricsAdvisorClient
nebo MetricsAdvisorAdministrationClient
K vytvoření objektu klienta pro přístup k rozhraní API Metrics Advisor budete potřebovat endpoint
prostředek Metrics Advisor a credential
. Klienti Advisoru pro metriky používají k ověření přihlašovací údaje klíče Služby Metrics Advisor.
Koncový bod pro váš prostředek Metrics Advisor najdete na webu Azure Portal nebo pomocí fragmentu kódu Azure CLI níže:
az cognitiveservices account show --name <your-resource-name> --resource-group <your-resource-group-name> --query "endpoint"
Použití klíče předplatného a klíče rozhraní API
K ověření klienta budete potřebovat dva klíče:
- Klíč předplatného k vašemu prostředku Metrics Advisoru. Najdete ho v části Klíče a koncový bod vašeho prostředku na webu Azure Portal.
- Klíč rozhraní API pro vaši instanci Služby Metrics Advisor. Najdete ho na webovém portálu Pro metriky Advisor v části Klíče rozhraní API v levé navigační nabídce. Adresu URL webového portálu najdete na webu Azure Portal v části Přehled vašeho prostředku.
Pomocí webu Azure Portal přejděte k prostředku Metrics Advisoru a načtěte klíč předplatného nebo použijte následující fragment kódu Azure CLI :
az cognitiveservices account keys list --resource-group <your-resource-group-name> --name <your-resource-name>
Kromě toho budete také potřebovat klíč rozhraní API pro jednotlivé uživatele z webového portálu Metrics Advisor.
Jakmile budete mít dva klíče a koncový bod, můžete pomocí MetricsAdvisorKeyCredential
třídy ověřit klienty následujícím způsobem:
const {
MetricsAdvisorKeyCredential,
MetricsAdvisorClient,
MetricsAdvisorAdministrationClient
} = require("@azure/ai-metrics-advisor");
const credential = new MetricsAdvisorKeyCredential("<subscription Key>", "<API key>");
const client = new MetricsAdvisorClient("<endpoint>", credential);
const adminClient = new MetricsAdvisorAdministrationClient("<endpoint>", credential);
Použití adresáře služeb Azure
Ve většině příkladů se používá autorizace pomocí klíče rozhraní API, ale klienta můžete ověřit také pomocí Azure Active Directory pomocí knihovny Azure Identity Library. Pokud chcete použít zprostředkovatele DefaultAzureCredential uvedeného níže nebo jiného zprostředkovatele přihlašovacích údajů poskytnutého se sadou Azure SDK, nainstalujte @azure/identity balíček :
npm install @azure/identity
Pokud chcete provést ověření pomocí instančního objektu, budete také muset zaregistrovat aplikaci AAD a udělit přístup službě Metrics Advisor tím, že k instančnímu objektu přiřadíte roli Uživatel služeb Cognitive Services (poznámka: jiné role, například Vlastník, neudělí potřebná oprávnění, ke spuštění příkladů a vzorového kódu bude stačit jenom uživatel služeb Cognitive Services).
Nastavte hodnoty ID klienta, ID tenanta a tajného klíče klienta aplikace AAD jako proměnné prostředí: AZURE_CLIENT_ID, AZURE_TENANT_ID AZURE_CLIENT_SECRET. Podporujeme také ověřování pomocí přihlašovacích údajů Azure Active Directoty. Jako proměnné prostředí budete potřebovat ID tenanta Azure, ID klienta Azure a tajný klíč klienta Azure.
const {
MetricsAdvisorKeyCredential,
MetricsAdvisorClient,
MetricsAdvisorAdministrationClient
} = require("@azure/ai-metrics-advisor");
import { DefaultAzureCredential } from "@azure/identity";
const credential = new DefaultAzureCredential();
const client = new MetricsAdvisorClient("<endpoint>", credential);
const adminClient = new MetricsAdvisorAdministrationClient("<endpoint>", credential);
Klíčové koncepty
MetricsAdvisorClient
MetricsAdvisorClient
je primární dotazovací rozhraní pro vývojáře, kteří používají klientskou knihovnu Metrics Advisor. Poskytuje asynchronní metody pro přístup ke konkrétnímu použití služby Metrics Advisor, jako je výpis incidentů, retrivní původní příčiny incidentů, načítání původních dat časových řad a dat časových řad obohacených službou.
MetricsAdvisorAdministrationClient
MetricsAdvisorAdministrationClient
je rozhraní zodpovědné za správu entit v prostředcích Advisoru pro metriky, jako je správa datových kanálů, konfigurace detekce anomálií nebo konfigurace upozornění na anomálie.
Datový kanál
Datový kanál je to, co Služba Metrics Advisor ingestuje z vašeho zdroje dat, jako je cosmos DB nebo SQL Server. Datový kanál obsahuje řádky:
- Časová razítka
- nula nebo více dimenzí
- jednu nebo více měr
Metric
Metrika je kvantifikovatelná 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í. Metrika stavu webu může například obsahovat dimenze pro počet uživatelů a trh en-us.
AnomalyDetectionConfiguration
AnomalyDetectionConfiguration
je vyžadován pro každou časovou řadu a určuje, zda je bod v časové řadě anomálií.
Incident anomálie &
Jakmile se konfigurace detekce použije na metriky, vygenerují se vždy, AnomalyIncident
když má jakákoli řada v rámci této řady objekt DataPointAnomaly
.
Výstrahy
Můžete nakonfigurovat, které anomálie by měly aktivovat AnomalyAlert
. Můžete nastavit více výstrah s různými nastaveními. Můžete například vytvořit výstrahu pro anomálie s nižším dopadem na firmu a další výstrahu pro důležitější výstrahy.
Hák
Nástroj Metrics Advisor umožňuje vytvářet a odebírat upozornění v reálném čase. Tyto výstrahy se odesílají přes internet pomocí oznamovacího hooku.
Úplný seznam konceptů najdete na stránce dokumentace k glosáři pro metriky .
Příklady
Následující část obsahuje několik fragmentů kódu JavaScriptu, které ilustrují běžné vzory používané v klientských knihovnách Služby Metrics Advisor.
- Přidání datového kanálu z ukázkového zdroje dat
- Kontrola stavu příjmu dat
- Konfigurace detekce anomálií
- Přidání hooků pro příjem upozornění na anomálie
- Konfigurace upozornění
- Dotazování na výsledky detekce anomálií
Přidání datového kanálu z ukázkového zdroje dat
Poradce pro metriky podporuje připojení různých typů zdrojů dat. Tady je ukázka příjmu dat z SQL Server.
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 = process.env["METRICS_ADVISOR_ENDPOINT"] || "<service endpoint>";
const subscriptionKey = process.env["METRICS_ADVISOR_SUBSCRIPTION_KEY"] || "<subscription key>";
const apiKey = process.env["METRICS_ADVISOR_API_KEY"] || "<api key>";
const sqlServerConnectionString =
process.env["METRICS_ADVISOR_SQL_SERVER_CONNECTION_STRING"] ||
"<connection string to SQL Server>";
const sqlServerQuery =
process.env["METRICS_ADVISOR_AZURE_SQL_SERVER_QUERY"] || "<SQL Server query to retrive data>";
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",
connectionString: sqlServerConnectionString,
query: sqlServerQuery,
authenticationType: "Basic"
},
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;
}
Kontrola stavu příjmu dat
Po zahájení příjmu dat můžeme zkontrolovat stav příjmu dat.
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 = process.env["METRICS_ADVISOR_ENDPOINT"] || "<service endpoint>";
const subscriptionKey = process.env["METRICS_ADVISOR_SUBSCRIPTION_KEY"] || "<subscription key>";
const apiKey = process.env["METRICS_ADVISOR_API_KEY"] || "<api key>";
const dataFeedId = process.env["METRICS_DATAFEED_ID"] || "<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}`);
}
}
Konfigurace detekce anomálií
Potřebujeme konfiguraci detekce anomálií, abychom zjistili, jestli je bod v časové řadě anomálií. I když se výchozí konfigurace detekce automaticky použije na každou metriku, můžete vyladit režimy detekce používané u vašich dat vytvořením přizpůsobené konfigurace detekce anomálií.
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 = process.env["METRICS_ADVISOR_ENDPOINT"] || "<service endpoint>";
const subscriptionKey = process.env["METRICS_ADVISOR_SUBSCRIPTION_KEY"] || "<subscription key>";
const apiKey = process.env["METRICS_ADVISOR_API_KEY"] || "<api key>";
const metricId = process.env["METRICS_ADVISOR_METRIC_ID"] || "<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 anomalyConfig = {
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(anomalyConfig);
}
Přidání hooků pro příjem upozornění na anomálie
K odběru upozornění v reálném čase používáme hooky. V tomto příkladu vytvoříme webhook pro službu Metrics Advisor, do které se upozornění POST publikuje.
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 = process.env["METRICS_ADVISOR_ENDPOINT"] || "<service endpoint>";
const subscriptionKey = process.env["METRICS_ADVISOR_SUBSCRIPTION_KEY"] || "<subscription key>";
const apiKey = process.env["METRICS_ADVISOR_API_KEY"] || "<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().toString(),
description: "description",
hookParameter: {
endpoint: "https://example.com/handleAlerts",
username: "username",
password: "password"
// certificateKey: "certificate key",
// certificatePassword: "certificate password"
}
};
return await adminClient.createHook(hook);
}
Konfigurace upozornění
Pak nakonfigurujeme, za jakých podmínek se má výstraha aktivovat a které zvoláky se mají výstrahu odeslat.
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 = process.env["METRICS_ADVISOR_ENDPOINT"] || "<service endpoint>";
const subscriptionKey = process.env["METRICS_ADVISOR_SUBSCRIPTION_KEY"] || "<subscription key>";
const apiKey = process.env["METRICS_ADVISOR_API_KEY"] || "<api key>";
const detectionConfigId = process.env["METRICS_ADVISOR_DETECTION_CONFIG_ID"] || "<detection id>";
const hookId = process.env["METRICS_ADVISOR_HOOK_ID"] || "<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);
}
Dotazování na výsledky detekce anomálií
Na upozornění a anomálie se můžeme dotazovat.
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 = process.env["METRICS_ADVISOR_ENDPOINT"] || "<service endpoint>";
const subscriptionKey = process.env["METRICS_ADVISOR_SUBSCRIPTION_KEY"] || "<subscription key>";
const apiKey = process.env["METRICS_ADVISOR_API_KEY"] || "<api key>";
const alertConfigId = process.env["METRICS_ADVISOR_ALERT_CONFIG_ID"] || "<alert config id>";
const credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
const client = new MetricsAdvisorClient(endpoint, credential);
const alerts = await queryAlerts(
client,
alertConfigId,
new Date(Date.UTC(2020, 8, 1)),
new Date(Date.UTC(2020, 8, 12))
);
if (alerts.length > 1) {
// query anomalies using an alert id.
await queryAnomaliesByAlert(client, alerts[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}`
);
}
}
Poradce při potížích
protokolování
Povolení protokolování může pomoct odhalit užitečné informace o selháních. Pokud chcete zobrazit protokol požadavků a odpovědí HTTP, nastavte proměnnou AZURE_LOG_LEVEL
prostředí na info
. Případně je možné protokolování povolit za běhu voláním setLogLevel
v :@azure/logger
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Podrobnější pokyny k povolení protokolů najdete v dokumentaci k balíčkům @azure/protokolovacího nástroje.
Další kroky
Podrobné příklady použití této knihovny najdete v adresáři ukázek .
Přispívání
Pokud chcete přispívat do této knihovny, přečtěte si příručku pro přispívání , kde najdete další informace o sestavení a testování.
kód.
Související projekty
Azure SDK for JavaScript