Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Metrics Advisor az Azure Cognitive Services része, amely AI-t használ az adatmonitorozás és anomáliadetektálás idősorozat-adatokban való végrehajtásához. A szolgáltatás automatizálja a modellek adatokra való alkalmazásának folyamatát, és api-k webes munkaterületét biztosítja az adatbetöltéshez, az anomáliadetektáláshoz és a diagnosztikahoz anélkül, hogy ismernie kellene a gépi tanulást. A Metrics Advisor használatával:
- Többdimenziós adatok elemzése több adatforrásból
- Anomáliák azonosítása és korrelálása
- Az adatokon használt anomáliadetektálási modell konfigurálása és finomhangolása
- Az anomáliák diagnosztizálása és segítség a kiváltó okok elemzésében.
Főbb hivatkozások:
Első lépések
Jelenleg támogatott környezetek
- A Node.jsLTS-verziói
- A Safari, a Chrome, az Edge és a Firefox legújabb verziói.
További részletekért tekintse meg támogatási szabályzatunkat .
Előfeltételek
- Egy Azure-előfizetés.
- Egy meglévő Cognitive Services - vagy Metrics Advisor-erőforrás. Ha létre kell hoznia az erőforrást, használhatja az Azure Portalt vagy az Azure CLI-t.
Ha az Azure CLI-t használja, cserélje le <your-resource-group-name> a és <your-resource-name> nevet a saját egyedi nevére:
az cognitiveservices account create --kind MetricsAdvisor --resource-group <your-resource-group-name> --name <your-resource-name> --sku <sku level> --location <location>
Telepítse a(z) @azure/ai-metrics-advisor csomagot
Telepítse a JavaScripthez készült Azure Metrics Advisor ügyfélkódtárat a következővel npm:
npm install @azure/ai-metrics-advisor
Létrehozás és hitelesítés MetricsAdvisorClient vagy MetricsAdvisorAdministrationClient
Ahhoz, hogy létrehozhasson egy ügyfélobjektumot a Metrics Advisor API eléréséhez, szüksége lesz a endpoint Metrics Advisor-erőforrásra és egy credential. A Metrics Advisor-ügyfelek a Metrics Advisor kulcs hitelesítő adatait használják a hitelesítéshez.
A Metrics Advisor-erőforrás végpontját az Azure Portalon vagy az alábbi Azure CLI-kódrészlet használatával találja meg:
az cognitiveservices account show --name <your-resource-name> --resource-group <your-resource-group-name> --query "endpoint"
Előfizetési kulcs és API-kulcs használata
Az ügyfél hitelesítéséhez két kulcs szükséges:
- A Metrics Advisor-erőforrás előfizetési kulcsa. Ezt az erőforrás Kulcsok és végpontok szakaszában találja az Azure Portalon.
- A Metrics Advisor-példány API-kulcsa. Ezt a Metrics Advisor webes portálján, a bal oldali navigációs menü API-kulcsaiban találja. A webportál URL-címe az erőforrás Áttekintés szakaszában található az Azure Portalon.
Az Azure Portalon keresse meg a Metrics Advisor-erőforrást, és kérjen le egy előfizetési kulcsot, vagy használja az alábbi Azure CLI-kódrészletet :
az cognitiveservices account keys list --resource-group <your-resource-group-name> --name <your-resource-name>
Emellett szüksége lesz a Metrics Advisor webportál felhasználónkénti API-kulcsára is.
Miután megkapta a két kulcsot és végpontot, a MetricsAdvisorKeyCredential osztály használatával hitelesítheti az ügyfeleket az alábbiak szerint:
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);
Az Azure Service Directory használata
Az API-kulcsok hitelesítése a legtöbb példában használatos, de az azure-identitástár használatával is hitelesítheti az ügyfelet az Azure Active Directoryval. Az alább látható DefaultAzureCredential szolgáltató vagy az Azure SDK-hoz biztosított egyéb hitelesítőadat-szolgáltatók használatához telepítse a @azure/identity csomagot:
npm install @azure/identity
A szolgáltatásnévvel történő hitelesítéshez regisztrálnia kell egy AAD-alkalmazást is, és hozzáférést kell adnia a Metrics Advisorhoz úgy, hogy hozzárendeli a "Cognitive Services-felhasználó" szerepkört a szolgáltatásnévhez (megjegyzés: más szerepkörök, például a "Tulajdonos" nem biztosítják a szükséges engedélyeket, csak a "Cognitive Services-felhasználó" elegendő a példák és a mintakód futtatásához).
Állítsa be az AAD-alkalmazás ügyfél-azonosítójának, bérlőazonosítójának és titkos ügyfélkulcsának értékeit környezeti változókként: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET. Az Azure Active Directoty-hitelesítő adatok hitelesítését is támogatjuk. Környezeti változókként szüksége lesz az Azure-bérlőazonosítóra, az Azure-ügyfél-azonosítóra és az Azure Client Secretre.
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);
Fő fogalmak
MetricsAdvisorClient
MetricsAdvisorClient A a Metrics Advisor ügyfélkódtárat használó fejlesztők elsődleges lekérdezési felülete. Aszinkron módszereket biztosít a Metrics Advisor adott használatának eléréséhez, például az incidensek listázásához, az incidensek kiváltó okainak újrapróbálásához, az eredeti idősoradatok lekéréséhez és a szolgáltatás által bővített idősoradatokhoz.
MetricsAdvisorAdministrationClient
MetricsAdvisorAdministrationClient A a Metrics Advisor-erőforrások entitásainak kezeléséért felelős felület, például az adatcsatornák, az anomáliadetektálási konfigurációk és az anomáliadetektálási konfigurációk kezelése.
Adatcsatorna
A Metrics Advisor az adatforrásból, például a Cosmos DB-ből vagy egy SQL Serverből származó adatcsatornát használ. Az adatcsatornák a következő sorokat tartalmazzák:
- Időbélyegek
- nulla vagy több dimenzió
- egy vagy több mérték
Metrika
A metrika egy számszerűsíthető mérték, amely egy adott üzleti folyamat állapotának monitorozására és értékelésére szolgál. Több idősor értékeinek kombinációja lehet dimenziókra osztva. Egy webes állapotmetrika például tartalmazhat dimenziókat a felhasználók számához és az en-us piachoz.
AnomalyDetectionConfiguration
AnomalyDetectionConfiguration minden idősorhoz szükséges, és meghatározza, hogy az idősor egy pontja anomália-e.
Anomália & incidens
Miután alkalmazta az észlelési konfigurációt a metrikákra, a rendszer s-eket hoz létre, AnomalyIncidentamikor a benne lévő összes adatsor rendelkezik egy DataPointAnomaly.
Riasztás
Konfigurálhatja, hogy mely anomáliák aktiválják a eseményt AnomalyAlert. Több riasztást is beállíthat különböző beállításokkal. Létrehozhat például egy alacsonyabb üzleti hatással rendelkező anomáliákra vonatkozó riasztást, egy másikat pedig a fontosabb riasztásokhoz.
Horog
A Metrics Advisor segítségével valós idejű riasztásokat hozhat létre és iratkozhat fel. Ezeket a riasztásokat az interneten keresztül, egy értesítési horog használatával küldi el a rendszer.
A fogalmak átfogó listáját a Metrics Advisory Glossary dokumentációs oldalán találja.
Példák
A következő szakasz számos JavaScript-kódrészletet tartalmaz, amely a Metrics Advisor ügyfélkódtárakban használt gyakori mintákat szemlélteti.
- Adatcsatorna hozzáadása mintaadatforrásból
- A betöltési állapot ellenőrzése
- Anomáliadetektálási konfiguráció konfigurálása
- Horgok hozzáadása anomáliariasztások fogadásához
- Riasztáskonfiguráció konfigurálása
- Anomáliadetektálási eredmények lekérdezése
Adatcsatorna hozzáadása mintaadatforrásból
A Metrics Advisor támogatja a különböző típusú adatforrások összekapcsolását. Íme egy minta a SQL Server adatainak betöltéséhez.
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;
}
A betöltési állapot ellenőrzése
Az adatbetöltés megkezdése után ellenőrizheti a betöltési állapotot.
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}`);
}
}
Anomáliadetektálási konfiguráció konfigurálása
Anomáliadetektálási konfigurációra van szükségünk annak meghatározásához, hogy az idősor egy pontja anomália-e. Bár a rendszer automatikusan alkalmaz egy alapértelmezett észlelési konfigurációt az egyes metrikákra, az adatokon használt észlelési módokat testre szabott anomáliadetektálási konfiguráció létrehozásával hangolhatja.
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);
}
Horgok hozzáadása anomáliariasztások fogadásához
Horogokat használunk a valós idejű riasztásokra való feliratkozáshoz. Ebben a példában létrehozunk egy webhookot a Metrics Advisor szolgáltatáshoz, amellyel közzétehetjük a riasztást.
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);
}
Riasztáskonfiguráció konfigurálása
Ezután konfiguráljuk, hogy milyen feltételek mellett kell aktiválni egy riasztást, és hogy mely horgok küldjék el a riasztást.
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);
}
Anomáliadetektálási eredmények lekérdezése
Lekérdezhetjük a riasztásokat és az anomáliákat.
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}`
);
}
}
Hibaelhárítás
Naplózás
A naplózás engedélyezése hasznos információkat deríthet fel a hibákról. A HTTP-kérések és -válaszok naplójának megtekintéséhez állítsa a környezeti változót értékre AZURE_LOG_LEVELinfo. A naplózás futásidőben is engedélyezhető a következő hívásával setLogLevel@azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
A naplók engedélyezésére vonatkozó részletesebb utasításokért tekintse meg a @azure/logger csomag dokumentációját.
Következő lépések
A kódtár használatára vonatkozó részletes példákért tekintse meg a mintakönyvtárat.
Közreműködés
Ha szeretne közreműködni ebben a könyvtárban, olvassa el a közreműködői útmutatót , amelyből többet is megtudhat a buildelésről és a tesztelésről
a kódot.
Kapcsolódó projektek
Azure SDK for JavaScript