Hızlı başlangıç: çözümünüzü özelleştirmek için istemci kitaplıklarını veya REST API 'Lerini kullanma
Ölçüm Danışmanı REST API veya istemci kitaplıklarını kullanmaya başlayın. Paketi yüklemek için bu adımları izleyin ve temel görevler için örnek kodu deneyin.
Şunları yapmak için ölçüm Danışmanı 'nı kullanın:
- Veri kaynağından veri akışı ekleme
- Alma durumunu denetle
- Algılama ve Uyarıları yapılandırma
- Anomali algılama sonuçlarını sorgulama
- Bozukluklar tanılayın
Başvuru belgeleri | Kitaplık kaynak kodu | Paket (NuGet) | Örnekler
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- .NET Core'un geçerli sürümü.
- Azure aboneliğiniz olduktan sonra, ölçüm Danışmanı örneğinizi dağıtmak için Azure Portal ölçüm Danışmanı kaynağı oluşturun.
- zaman serisi verileriyle kendi SQL veritabanınız.
İpucu
- .NET ölçüm Danışmanı örneklerini GitHubbulabilirsiniz.
- Ölçüm Danışmanı kaynağınızın kullanabilmeniz için bir hizmet örneği dağıtması 10 ila 30 dakika sürebilir. Başarılı bir şekilde dağıtıldıktan sonra Kaynağa Git ' e tıklayın. Dağıtımdan sonra, ölçüm Danışmanı örneğinizi hem Web portalı hem de REST API kullanmaya başlayabilirsiniz.
- Azure portal REST API URL 'sini kaynağınızın genel bakış bölümünde bulabilirsiniz. Şu şekilde görünür:
https://<instance-name>.cognitiveservices.azure.com/
Ayarlanıyor
İstemci kitaplığını yükler
yeni bir proje oluşturduktan sonra, Çözüm Gezgini proje çözümüne sağ tıklayıp NuGet paketlerini yönet' i seçerek istemci kitaplığını yükleyebilirsiniz. Açılan paket yöneticisinde, Seç ' i seçin, ön sürümü dahil et ' i işaretleyin ve arama yapın Azure.AI.MetricsAdvisor . Sürüm 1.0.0 ' ü ve ardından öğesini seçin.
Konsol penceresinde (cmd, PowerShell veya Bash gibi), dotnet new adıyla yeni bir konsol uygulaması oluşturmak için komutunu kullanın metrics-advisor-quickstart . Bu komut, tek bir kaynak dosyası olan basit bir "Merhaba Dünya" C# projesi oluşturur: program. cs.
dotnet new console -n metrics-advisor-quickstart
Dizininizi yeni oluşturulan uygulama klasörüyle değiştirin. Uygulamayı ile oluşturabilirsiniz:
dotnet build
Derleme çıktısı hiçbir uyarı veya hata içermemelidir.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
İstemci kitaplığını yükler
Visual Studio dışında bir ıde kullanıyorsanız aşağıdaki komutla .net için ölçüm danışmanı istemci kitaplığı ' nı yükleyebilirsiniz:
dotnet add package Azure.AI.MetricsAdvisor --version 1.0.0
İpucu
Tüm hızlı başlangıç kodu dosyasını aynı anda görüntülemek mi istiyorsunuz? bu hızlı başlangıçta kod örneklerini içeren GitHubüzerinde bulabilirsiniz.
Proje dizininden program. cs dosyasını açın ve aşağıdaki using yönergeleri ekleyin:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Azure.AI.MetricsAdvisor.Administration;
using Azure.AI.MetricsAdvisor;
using Azure.AI.MetricsAdvisor.Models;
Uygulamanın Main() yönteminde, bu hızlı başlangıçta kullanılan yöntemlere çağrılar ekleyin. Bunları daha sonra oluşturacaksınız.
static void Main(string[] args){
// You will create the below methods later in the quickstart
exampleTask1();
}
Nesne modeli
Aşağıdaki sınıflar, ölçüm Danışmanı C# SDK 'SıNıN bazı önemli özelliklerini işler.
| Ad | Açıklama |
|---|---|
| MetricsAdvisorClient | Kullanım için: -Olayları listeleme -Olayların temel nedenini listeleme -Özgün zaman serisi verileri ve zaman serisi verilerinin hizmet tarafından zenginleştirerek elde alınması. -Uyarılar listeleniyor -Modelinizi ayarlamak için geri bildirim ekleme |
| MetricsAdvisorAdministrationClient | Şunları yapmanıza olanak sağlar: -Veri akışlarını yönetme -Anomali algılama yapılandırmasını yapılandırma -Anomali uyarı yapılandırmasını yapılandırın -Kancaları Yönet |
| Veri akışı | Veri kaynağından alınan ölçüm danışmanı. Şu DataFeed satırları içerir: -Zaman damgaları -Sıfır veya daha fazla boyut -Bir veya daha fazla ölçü |
| DataFeedMetric | , DataFeedMetric Belirli bir iş sürecinin durumunu izlemek ve değerlendirmek için kullanılan, ölçülebilir bir ölçüdür. Bu, boyutlara bölünen birden çok zaman serisi değerinin bir birleşimi olabilir. Örneğin, bir Web durumu ölçümü Kullanıcı sayısı ve en-US pazarında boyut içerebilir. |
Kod örnekleri
Bu kod parçacıkları, .NET için ölçüm Danışmanı istemci kitaplığı ile aşağıdaki görevlerin nasıl yapılacağını gösterir:
- İstemcinin kimliğini doğrulama
- Veri akışı Ekle
- Alma durumunu denetleme
- Anomali algılamayı yapılandırma
- Kanca oluşturma
- Uyarı yapılandırması oluşturma
- Uyarıyı sorgulama
İstemcinin kimliğini doğrulama
Uygulamanın Program sınıfında, kaynağınızın anahtarları ve uç noktası için değişkenler oluşturun.
Önemli
Azure portala gidin. Önkoşullar bölümünde oluşturduğunuz ölçüm Danışmanı kaynağı başarıyla dağıtılırsa, sonraki adımlar altında Kaynağa Git düğmesine tıklayın. Kaynak yönetimi altında, kaynağın anahtar ve uç nokta sayfasında abonelik Anahtarlarınızı ve uç noktanızı bulabilirsiniz.
API anahtarınızı almak için adresine gitmeniz gerekir https://metricsadvisor.azurewebsites.net . Kaynağınız için uygun: Dizin, abonelikler ve çalışma alanını seçin ve kullanmaya başlayın ' ı seçin. Bundan sonra API anahtarlarınızı adresinden alabilirsiniz https://metricsadvisor.azurewebsites.net/api-key .
İşiniz bittiğinde kodu koddan kaldırmayı unutmayın ve hiçbir zaman herkese açık bir şekilde nakletmeyin. Üretim için, kimlik bilgilerinizi depolamak ve bunlara erişmek için güvenli bir yol kullanmayı düşünün. Daha fazla bilgi için bilişsel Hizmetler güvenlik makalesine bakın.
Abonelik ve API anahtarlarına sahip olduktan sonra bir MetricsAdvisorKeyCredential oluşturun. Uç nokta ve anahtar kimlik bilgileri ile şunu oluşturabilirsiniz MetricsAdvisorClient :
string endpoint = "<endpoint>";
string subscriptionKey = "<subscriptionKey>";
string apiKey = "<apiKey>";
var credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
var client = new MetricsAdvisorClient(new Uri(endpoint), credential);
MetricsAdvisorAdministrationClientYönetim işlemleri gerçekleştirmek için bir de oluşturabilirsiniz:
string endpoint = "<endpoint>";
string subscriptionKey = "<subscriptionKey>";
string apiKey = "<apiKey>";
var credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);
var adminClient = new MetricsAdvisorAdministrationClient(new Uri(endpoint), credential);
Veri akışı Ekle
Ölçüm Danışmanı birden çok veri kaynağı türünü destekler. bu örnekte, bir DataFeed SQL sunucusundan veri çıkaran bir oluşturma işlemini göstereceğiz.
connection_Stringkendi SQL server bağlantı dizeniz ile değiştirin ve query tek bir zaman damgasında verilerinizi döndüren bir sorguyla değiştirin. Ayrıca, DataFeedMetric ve DataFeedDimension değerlerini özel verilerinize göre ayarlamanız gerekir.
Önemli
Sorgu her bir zaman damgasında her bir boyut birleşimi için en çok bir kayıt döndürmelidir. Ve sorgu tarafından döndürülen tüm kayıtlar aynı zaman damgalarına sahip olmalıdır. Ölçüm Danışmanı, verilerinizi almak için bu sorguyu her zaman damgası için çalıştırır. Daha fazla bilgi ve örnekler için öğreticiye bakın: geçerli bir sorgu yazın .
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}");
}
Alma durumunu denetleme
Daha önce oluşturulan bir öğesinin giriş durumunu denetleme 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;
}
}
Anomali algılamayı yapılandırma
Hizmete hangi veri noktalarının anormal düşünüldüler olduğunu bildirmek için bir anomali algılama yapılandırması oluşturun.
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}");
Kanca oluşturma
Ölçüm Danışmanı, EmailNotificationHook WebNotificationHook Uyarı bildirimlerine abone olma yöntemi olarak ve sınıflarını destekler. Bu örnekte nasıl oluşturulacağını göstereceğiz EmailNotificationHook . Bildirimleri almaya başlamak için bir anomali uyarı yapılandırmasına geçiş yapmanız gerekir. Daha fazla bilgi için bkz. anomali uyarı yapılandırması oluşturma örneği.
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}");
Uyarı yapılandırması oluşturma
AnomalyAlertConfigurationHizmeti, uyarıları tetikleyebilen bir hizmete bildirmek için oluşturun.
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}");
Uyarıyı sorgulama
Belirli bir anomali uyarı yapılandırması tarafından oluşturulan uyarılara bakın.
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;
}
}
Bir uyarının KIMLIĞINI öğrendikten sonra, bu uyarıyı tetikleyen anormallikleri listeleyin.
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;
}
}
Uygulamayı çalıştırma
Uygulamayı komut ile uygulama dizininizden çalıştırın dotnet run .
dotnet run
Başvuru belgeleri | Kitaplık kaynak kodu | Yapıt (Maven) | Örnekler
Önkoşullar
- Azure aboneliği - Ücretsiz bir abonelik oluşturun
- Java Development Kit'in (JDK) geçerli sürümü
- Gradle derleme aracıveya başka bir bağımlılık yöneticisi.
- Azure aboneliğinize sahip olduktan sonra, Ölçüm Danışmanı kaynağı oluşturun ve Ölçüm Danışmanı örneğinizi oluşturun.
- Zaman serisi SQL kendi veritabanınız.
İpucu
- Java uygulama örneklerini Ölçüm Danışmanı üzerinde bulabilirsiniz GitHub.
- Kaynak kaynağınız için bir hizmet Ölçüm Danışmanı dağıtmanız 10-30 dakika sürebilir. Başarıyla dağıtıldıktan sonra Kaynağa git'e tıklayın. Dağıtımdan sonra, hem web portalı hem Ölçüm Danışmanı web portalı ile REST API.
- Kaynağın URL'sini, REST API genel Azure portal bölümünde bulabilirsiniz. Şu şekilde görünür:
https://<instance-name>.cognitiveservices.azure.com/
Ayarlama
Yeni bir Gradle projesi oluşturma
Bu hızlı başlangıçta Gradle bağımlılık yöneticisi 2. Maven Central Repository hakkında daha fazla istemci kitaplığı bilgisi bulabilirsiniz.
Konsol penceresinde (cmd, PowerShell veya Bash gibi) uygulama için yeni bir dizin oluşturun ve bu dizine gidin.
mkdir myapp && cd myapp
Komutunu gradle init çalışma dizinden çalıştırın. Bu komut, çalışma zamanında uygulama oluşturmak ve yapılandırmak için kullanılan build.gradle.kts dahil olmak üzere Gradle için temel derleme dosyaları oluşturacak.
gradle init --type basic
DSL seçmeniz istendiğinde Kotlin'i seçin.
İstemci kitaplığını yükleme
build.gradle.kts'yi bulun ve tercih ettiğiniz IDE veya metin düzenleyicisiyle açın. Ardından bu derleme yapılandırmasına kopyalayın. Proje bağımlılıklarını dahil etmek için emin olun.
dependencies {
compile("com.azure:azure-ai-metricsadvisor:1.0.0")
}
Java dosyası oluşturma
Örnek uygulamanız için bir klasör oluşturun. Çalışma dizininize aşağıdaki komutu çalıştırın:
mkdir -p src/main/java
Yeni klasöre gidin ve MetricsQuickstarts.java adlı bir dosya oluşturun. Tercih ettiğiniz düzenleyicide veya IDE'de açın ve aşağıdaki import deyimlerini ekleyin:
İpucu
Hızlı başlangıç kod dosyasının tamamını aynı anda görüntülemek ister misiniz? Bu hızlı başlangıçtaki GitHubörneklerini içeren dosyada bulabilirsiniz.
Uygulamanın MetricsAdvisorQuickstarts sınıfında, kaynağınız anahtarı ve uç noktası için değişkenler oluşturun.
Önemli
Azure portala gidin. Önkoşullar Ölçüm Danışmanı oluşturduğunuz kaynak başarıyla dağıtılırsa, Sonraki Adımlar'ın altındaki Kaynağa Git düğmesine tıklayın. Abonelik anahtarlarınızı ve uç noktanızı kaynağın Anahtar ve Uç Nokta sayfasında, Kaynak Yönetimi altında bulabilirsiniz.
API anahtarınızı almak için'e https://metricsadvisor.azurewebsites.net gitebilirsiniz. Kaynağınız için uygun dizini, Abonelikler ve Çalışma Alanı'Kullanmaya başlayın. Ardından API anahtarlarınızı 'den https://metricsadvisor.azurewebsites.net/api-key aabileceksiniz.
Bitiren kodundan anahtarı kaldırmayı unutmayın ve hiçbir zaman herkese açık şekilde yayınlayamayabilirsiniz. Üretim için kimlik bilgilerinizi depolamak ve erişmek için güvenli bir yol kullanmayı göz önünde bulundurarak. Daha fazla bilgi için Bilişsel Hizmetler güvenliği makalesine bakın.
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>";
Uygulamanın Main() yönteminde, bu hızlı başlangıçta kullanılan yöntemler için çağrılar ekleyin. Bunları daha sonra oluşturacağız.
static void Main(string[] args){
// You will create the below methods later in the quickstart
exampleTask1();
}
Nesne modeli
Aşağıdaki sınıflar, Java SDK'sı için Ölçüm Danışmanı ele almaktadır.
| Ad | Açıklama |
|---|---|
| MetricsClient | için kullanılır: - Anomali olaylarını listeleme - Olayın kök nedenini listeleme - Hizmet tarafından zenginleştirilmiş özgün zaman serisi verilerini ve zaman serisi verilerini alma. - Uyarıları listeleme - Modelinizi ayarlamak için geri bildirim ekleme |
| MetricsClientAdministrationClient | Şunları sağlar: - Veri akışlarını yönetme - Anomali algılama yapılandırmalarını yapılandırma - Anomali uyarı yapılandırmalarını yapılandırma - Kancaları yönetme |
| DataFeed | Veri Ölçüm Danışmanı neleri içerir? , DataFeed şu satırları içerir: - Zaman Damgası - Sıfır veya daha fazla boyut - Bir veya daha fazla ölçü |
| DataFeedMetric | , DataFeedMetric belirli bir iş sürecinin durumunu izlemek ve değerlendirmek için kullanılan ölçülebilir bir ölçüdür. Boyutlara bölünmüş birden çok zaman serisi değeri birleşimi olabilir. Örneğin bir web durumu ölçümü, kullanıcı sayısı ve en-us pazarı için boyutlar içerebilir. |
Kod örnekleri
Bu kod parçacıkları Java için istemci kitaplığını kullanarak aşağıdaki Ölçüm Danışmanı nasıl gerçekleştirebilirsiniz?
- İstemcinin kimliğini doğrulama
- Veri akışı ekleme
- Alımın durumunu denetleme
- Anomali algılamayı yapılandırma
- Kanca oluşturma
- Uyarı yapılandırması oluşturma
- Uyarıyı sorgulama
İstemcinin kimliğini doğrulama
MetricsIserKeyCredential kullanarak Ölçüm Danışmanı istemci oluşturma
MetricsAdvisorKeyCredential credential = new MetricsAdvisorKeyCredential(SUBSCRIPTION_KEY, API_KEY);
MetricsAdvisorClient metricsAdvisorClient = new MetricsAdvisorClientBuilder()
.endpoint(ENDPOINT)
.credential(credential)
.buildClient();
MetricsIserKeyCredential kullanarak Ölçüm Yönetimi istemcisi oluşturma
MetricsAdvisorKeyCredential credential = new MetricsAdvisorKeyCredential(SUBSCRIPTION_KEY, API_KEY);
MetricsAdvisorAdministrationClient metricsAdvisorAdministrationClient =
new MetricsAdvisorAdministrationClientBuilder()
.endpoint(ENDPOINT)
.credential(credential)
.buildClient();
Veri akışı ekleme
yerine kendi sunucu SQL dizenizi, yerine de tek bir zaman damgasında verilerinizi sql_server_connection_string query döndüren bir sorgu girin. Ayrıca ve değerlerini özel DataFeedMetric DataFeedDimension verilerinize göre ayarlamanız da gerekir.
Önemli
Sorgu, her boyut birleşimi için her zaman damgasında en fazla bir kayıt dönüşletir. Sorgu tarafından döndürülen tüm kayıtların aynı zaman damgasına sahip olması gerekir. Ölçüm Danışmanı verilerinizi alan her zaman damgası için bu sorguyu çalıştırabilirsiniz. Daha fazla bilgi ve örnekler için Öğretici: Geçerli bir sorgu yazma'ya bakın.
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());
}
Alımın durumunu denetleme
Bu örnek, önceden sağlanan bir veri akışı kaynağının veri alımı durumunu denetler.
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());
});
Anomali algılamayı yapılandırma
Bu örnekte, kullanıcının verileri için anomali algılama yapılandırmasını nasıl yapılandırabilirsiniz?
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))
);
Kanca oluşturma
Bu örnek, anomali olay uyarılarını alan bir e-posta kancası oluşturur.
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()));
Uyarı yapılandırması oluşturma
Bu örnekte, bir kullanıcının verilerinde algılanan anomaliler için uyarı yapılandırmasını nasıl yapılandırabilirsiniz?
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)));
Uyarıyı sorgulama
Bu örnek, bir kullanıcının uyarı algılama yapılandırması için tetiklenen uyarıları nasıl sorgulay ve bu uyarı için anomalileri nasıl ala olduğunu gösterir.
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());
});
});
Uygulamayı ile oluşturabilirsiniz:
gradle build
Uygulamayı çalıştırma
Uygulamayı run hedefle çalıştırın:
gradle run
Başvuru belgeleri | Kitaplık kaynak kodu | Paket (NPM) | Örnekler
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Node.js geçerli sürümü
- Azure aboneliğiniz olduktan sonra, ölçüm Danışmanı örneğinizi dağıtmak için Azure Portal ölçüm Danışmanı kaynağı oluşturun.
- zaman serisi verileriyle kendi SQL veritabanınız.
İpucu
- JavaScript ölçüm Danışmanı örneklerini GitHubbulabilirsiniz.
- Ölçüm Danışmanı kaynağınızın kullanabilmeniz için bir hizmet örneği dağıtması 10 ila 30 dakika sürebilir. Başarılı bir şekilde dağıtıldıktan sonra Kaynağa Git ' e tıklayın. Dağıtımdan sonra, ölçüm Danışmanı örneğinizi hem Web portalı hem de REST API kullanmaya başlayabilirsiniz.
- Azure portal REST API URL 'sini kaynağınızın genel bakış bölümünde bulabilirsiniz. Şu şekilde görünür:
https://<instance-name>.cognitiveservices.azure.com/
Ayarlanıyor
Yeni bir Node.js uygulaması oluşturma
Konsol penceresinde (cmd, PowerShell veya Bash gibi), uygulamanız için yeni bir dizin oluşturun ve bu uygulamaya gidin.
mkdir myapp && cd myapp
npm initBir dosya ile bir düğüm uygulaması oluşturmak için komutunu çalıştırın package.json .
npm init
İstemci kitaplığını yükler
@azure/ai-metrics-advisorNPM paketini yüklerken:
npm install @azure/ai-metrics-advisor
Uygulamanızın package.json dosyası bağımlılıklarla güncelleştirilir.
Adlı bir dosya oluşturun index.js ve aşağıdaki kitaplıkları içeri aktarın:
İpucu
Tüm hızlı başlangıç kodu dosyasını aynı anda görüntülemek mi istiyorsunuz? bu hızlı başlangıçta kod örneklerini içeren GitHubüzerinde bulabilirsiniz.
Kaynağınızın Azure uç noktası ve anahtarı için değişkenler oluşturun.
Önemli
Azure portala gidin. Önkoşullar bölümünde oluşturduğunuz ölçüm Danışmanı kaynağı başarıyla dağıtılırsa, sonraki adımlar altında Kaynağa Git düğmesine tıklayın. Kaynak yönetimi altında, kaynağın anahtar ve uç nokta sayfasında abonelik Anahtarlarınızı ve uç noktanızı bulabilirsiniz.
API anahtarınızı almak için adresine gitmeniz gerekir https://metricsadvisor.azurewebsites.net . Kaynağınız için uygun: Dizin, abonelikler ve çalışma alanını seçin ve kullanmaya başlayın ' ı seçin. Bundan sonra API anahtarlarınızı adresinden alabilirsiniz https://metricsadvisor.azurewebsites.net/api-key .
İşiniz bittiğinde kodu koddan kaldırmayı unutmayın ve hiçbir zaman herkese açık bir şekilde nakletmeyin. Üretim için, kimlik bilgilerinizi depolamak ve bunlara erişmek için güvenli bir yol kullanmayı düşünün. Daha fazla bilgi için bilişsel Hizmetler güvenlik makalesine bakın.
subscriptionKey = "<paste-your-metrics-advisor-key-here>";
apiKey ="<paste-your-metrics-advisor-api-key-here>";
endpoint = "<paste-your-metrics-advisor-endpoint-here>";
Nesne modeli
Aşağıdaki sınıflar ve arabirimler, ölçüm Danışmanı JavaScript SDK 'sının önemli özelliklerinden bazılarını işler.
| Ad | Açıklama |
|---|---|
| MetricsAdvisorClient | Kullanım için: -Olayları listeleme -Olayların temel nedenini listeleme -Özgün zaman serisi verileri ve zaman serisi verilerinin hizmet tarafından zenginleştirerek elde alınması. -Uyarılar listeleniyor -Modelinizi ayarlamak için geri bildirim ekleme |
| MetricsAdvisorAdministrationClient | Şunları yapmanıza olanak sağlar: -Veri akışlarını yönetme -Anomali uyarı yapılandırması oluşturma, yapılandırma, alma, listeleme ve silme -Kancaları Yönet |
| Veri akışı | Veri kaynağından alınan ölçüm danışmanı. Şu DataFeed satırları içerir: -Zaman damgaları -Sıfır veya daha fazla boyut -Bir veya daha fazla ölçü |
| DataFeedMetric | , DataFeedMetric Belirli bir iş sürecinin durumunu izlemek ve değerlendirmek için kullanılan, ölçülebilir bir ölçüdür. Bu, boyutlara bölünen birden çok zaman serisi değerinin bir birleşimi olabilir. Örneğin, bir Web durumu ölçümü Kullanıcı sayısı ve en-US pazarında boyut içerebilir. |
Kod örnekleri
Bu kod parçacıkları, JavaScript için ölçüm Danışmanı istemci kitaplığı ile aşağıdakilerin nasıl yapılacağını gösterir:
- İstemcinin kimliğini doğrulama
- Veri akışı Ekle
- Alma durumunu denetle
- Anomali algılamayı yapılandırma
- Kanca oluşturma
- Uyarı yapılandırması oluşturma
- Uyarıyı sorgulama
İstemcinin kimliğini doğrulama
İki anahtara ve uç nokta adresine sahip olduktan sonra, istemcilerin kimliğini doğrulamak için MetricsAdvisorKeyCredential sınıfını aşağıdaki şekilde kullanabilirsiniz:
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);
Veri akışı Ekle
Ölçüm Danışmanı, farklı türlerde veri kaynaklarına bağlanmayı destekler. SQL Server verileri almak için bir örnek aşağıda verilmiştir.
sql_server_connection_stringkendi SQL server bağlantı dizeniz ile değiştirin ve query tek bir zaman damgasında verilerinizi döndüren bir sorguyla değiştirin. Ayrıca, metric ve dimension değerlerini özel verilerinize göre ayarlamanız gerekir.
Önemli
Sorgu her bir zaman damgasında her bir boyut birleşimi için en çok bir kayıt döndürmelidir. Ve sorgu tarafından döndürülen tüm kayıtlar aynı zaman damgalarına sahip olmalıdır. Ölçüm Danışmanı, verilerinizi almak için bu sorguyu her zaman damgası için çalıştırır. Daha fazla bilgi ve örnekler için öğreticiye bakın: geçerli bir sorgu yazın .
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;
}
Alma durumunu denetle
Veri alımı başladıktan sonra, alma durumunu kontrol edebilirsiniz.
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}`);
}
}
Anomali algılamayı yapılandırma
Zaman serisinde bir noktanın bir anomali olup olmadığını saptamak için anomali algılama yapılandırmasına ihtiyacımız var. Varsayılan algılama yapılandırması her ölçüm için otomatik olarak uygulanırken, özelleştirilmiş bir anomali algılama yapılandırması oluşturarak verilerinizde kullanılan algılama modlarını ayarlayabilirsiniz.
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);
}
Kanca oluşturma
Gerçek zamanlı Uyarılara abone olmak için kancalar kullanıyoruz. Bu örnekte, uyarının NAKLEDILECEĞI ölçüm Danışmanı hizmeti için bir Web kancası oluşturacağız.
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);
}
Uyarı yapılandırması oluşturma
Bu örnek, bir uyarının tetiklenmesi gerektiğini ve bir uyarı için hedef olarak hangi kancaların kullanılacağını nasıl yapılandıracağınızı gösterir.
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);
}
Uyarıyı sorgulama
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}`
);
}
}
Uygulamayı çalıştırma
Uygulamayı node hızlı başlangıç dosyanızdaki komutla çalıştırın.
node index.js
Başvuru belgeleri | Kitaplık kaynak kodu | Paket (PiPy) | Örnekler
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Python 3.x
- Azure aboneliğiniz olduktan sonra, ölçüm Danışmanı örneğinizi dağıtmak için Azure Portal ölçüm Danışmanı kaynağı oluşturun.
- zaman serisi verileriyle kendi SQL veritabanınız.
İpucu
- GitHubüzerinde Python ölçümleri Danışmanı örneklerini bulabilirsiniz.
- Ölçüm Danışmanı kaynağınızın kullanabilmeniz için bir hizmet örneği dağıtması 10 ila 30 dakika sürebilir. Başarılı bir şekilde dağıtıldıktan sonra Kaynağa Git ' e tıklayın. Dağıtımdan sonra, ölçüm Danışmanı örneğinizi hem Web portalı hem de REST API kullanmaya başlayabilirsiniz.
- Azure portal REST API URL 'sini kaynağınızın genel bakış bölümünde bulabilirsiniz. Şu şekilde görünür:
https://<instance-name>.cognitiveservices.azure.com/
Ayarlanıyor
İstemci kitaplığını yükler
Python yükledikten sonra, ile istemci kitaplığını yükleyebilirsiniz:
pip install azure-ai-metricsadvisor --pre
Yeni bir Python uygulaması oluşturma
Yeni bir Python dosyası oluşturun ve aşağıdaki kitaplıkları içeri aktarın.
import os
import datetime
Kaynağınızın Azure uç noktası ve anahtarı için değişkenler oluşturun.
Önemli
Azure portala gidin. Önkoşullar bölümünde oluşturduğunuz ölçüm Danışmanı kaynağı başarıyla dağıtılırsa, sonraki adımlar altında Kaynağa Git düğmesine tıklayın. Kaynak yönetimi altında, kaynağın anahtar ve uç nokta sayfasında abonelik Anahtarlarınızı ve uç noktanızı bulabilirsiniz.
API anahtarınızı almak için adresine gitmeniz gerekir https://metricsadvisor.azurewebsites.net . Kaynağınız için uygun: Dizin, abonelikler ve çalışma alanını seçin ve kullanmaya başlayın ' ı seçin. Bundan sonra API anahtarlarınızı adresinden alabilirsiniz https://metricsadvisor.azurewebsites.net/api-key .
İşiniz bittiğinde kodu koddan kaldırmayı unutmayın ve hiçbir zaman herkese açık bir şekilde nakletmeyin. Üretim için, kimlik bilgilerinizi depolamak ve bunlara erişmek için güvenli bir yol kullanmayı düşünün. Daha fazla bilgi için bilişsel Hizmetler güvenlik makalesine bakın.
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>"
Nesne modeli
Aşağıdaki sınıflar, ölçüm Danışmanı Python SDK 'sının önemli özelliklerinden bazılarını işler.
| Ad | Açıklama |
|---|---|
| MetricsAdvisorClient | Kullanım için: -Olayları listeleme -Olayların temel nedenini listeleme -Özgün zaman serisi verileri ve zaman serisi verilerinin hizmet tarafından zenginleştirerek elde alınması. -Uyarılar listeleniyor -Modelinizi ayarlamak için geri bildirim ekleme |
| MetricsAdvisorAdministrationClient | Şunları yapmanıza olanak sağlar: -Veri akışlarını yönetme -Anomali algılama yapılandırması oluşturma, yapılandırma, alma, listeleme ve silme -Anomali uyarı yapılandırması oluşturma, yapılandırma, alma, listeleme ve silme -Kancaları Yönet |
| Veri akışı | Veri kaynağından alınan ölçüm danışmanı. Şu DataFeed satırları içerir: -Zaman damgaları -Sıfır veya daha fazla boyut -Bir veya daha fazla ölçü |
| DataFeedMetric | , DataFeedMetric Belirli bir iş sürecinin durumunu izlemek ve değerlendirmek için kullanılan, ölçülebilir bir ölçüdür. Bu, boyutlara bölünen birden çok zaman serisi değerinin bir birleşimi olabilir. Örneğin, bir Web durumu ölçümü Kullanıcı sayısı ve en-US pazarında boyut içerebilir. |
Kod örnekleri
Bu kod parçacıkları, Python için ölçüm Danışmanı istemci kitaplığı ile aşağıdakileri nasıl yapılacağını gösterir:
- İstemcinin kimliğini doğrulama
- Veri akışı Ekle
- Alma durumunu denetle
- Kurulum algılama yapılandırması ve uyarı yapılandırması
- Uyarı yapılandırması oluşturma
- Sorgu anomali algılama sonuçları
İstemcinin kimliğini doğrulama
Bu örnekteki istemci, MetricsAdvisorAdministrationClient uç noktanızı ve anahtarlarınızı içeren bir nesneyi kullanan bir nesnedir MetricsAdvisorKeyCredential . Bu kod örneğini kopyalamanız gerekmez. Daha sonra oluşturduğunuz Yöntemler istemcisini örneklendirilecek. Diğer istemci, MetricsAdvisorClient Bu istemci hakkında daha fazla bilgi olarak, başvuru belgelerindebulunabilir.
client = MetricsAdvisorAdministrationClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key))
Veri akışı Ekle
Yeni bir yöntemde, aşağıdaki örnekte olduğu gibi içeri aktarma deyimleri oluşturun. sql_server_connection_stringkendi SQL server bağlantı dizeniz ile değiştirin ve query tek bir zaman damgasında verilerinizi döndüren bir sorguyla değiştirin. Ayrıca, DataFeedmetric ve DataFeedDimension değerlerini özel verilerinize göre ayarlamanız gerekir.
Önemli
Sorgu her bir zaman damgasında her bir boyut birleşimi için en çok bir kayıt döndürmelidir. Ve sorgu tarafından döndürülen tüm kayıtlar aynı zaman damgalarına sahip olmalıdır. Ölçüm Danışmanı, verilerinizi almak için bu sorguyu her zaman damgası için çalıştırır. Daha fazla bilgi ve örnek için öğreticiye bakın: geçerli bir sorgu yazın .
Anahtarlarınız ve uç noktanızla bir istemci oluşturun ve client.create_data_feed() ad, kaynak, ayrıntı düzeyi ve şemayı yapılandırmak için kullanın. Alma süresini, toplama ayarlarını ve daha fazlasını da ayarlayabilirsiniz.
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()
Alma durumunu denetleme
Yeni bir yöntemde, aşağıdaki örnekte olduğu gibi bir içeri aktarma açıklaması oluşturun. data_feed_idOluşturduğunuz veri akışı kimliğiyle değiştirin. Anahtarlarınız ve uç noktanız ile bir istemci oluşturun ve client.list_data_feed_ingestion_status() alma ilerlemesini almak için kullanın. Son etkin ve başarılı zaman damgaları gibi ayrıntıları yazdırın.
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))
Anomali algılamayı yapılandırma
Yeni bir yöntemde, aşağıdaki örnekte olduğu gibi içeri aktarma deyimleri oluşturun. metric_idYapılandırmak istediğiniz ölçümün kimliğiyle değiştirin. Anahtarlarınız ve uç noktanızla bir istemci oluşturun ve client.create_detection_configuration Yeni bir algılama yapılandırması oluşturmak için kullanın. Eşik koşulları anomali algılama için parametreleri belirtir.
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
Kanca oluşturma
Yeni bir yöntemde, aşağıdaki örnekte olduğu gibi içeri aktarma deyimleri oluşturun. Anahtarlarınız ve uç noktanızla bir istemci oluşturun ve client.create_hook() bir kanca oluşturmak için kullanın. Bir açıklama, uyarının gönderileceği e-postaların bir listesini ve uyarıda görünecek bir dış bağlantıyı girin.
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.
)
)
Uyarı yapılandırması oluşturma
Yeni bir yöntemde, aşağıdaki örnekte olduğu gibi içeri aktarma deyimleri oluşturun. detection_configuration_idAnomali algılama YAPıLANDıRMANıZıN kimliğiyle değiştirin ve öğesini hook_id daha önce oluşturduğunuz kanca ile değiştirin. Anahtarlarınız ve uç noktanızla bir istemci oluşturun ve client.create_alert_configuration() bir uyarı yapılandırması oluşturmak için kullanı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
Uyarıyı sorgulama
Yeni bir yöntemde, aşağıdaki örnekte olduğu gibi bir içeri aktarma açıklaması oluşturun. alert_idUyarınız için olan kimlikle değiştirin ve alert_config_id uyarı yapılandırma kimliğiyle değiştirin. Anahtarlarınız ve uç noktanız ile bir istemci oluşturun ve client.list_anomalies bir uyarının anorlarını listelemek için kullanın.
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))
Uygulamayı çalıştırma
Uygulamayı python hızlı başlangıç dosyanızdaki komutla çalıştırın.
python quickstart-file.py
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Azure aboneliğiniz olduktan sonra, ölçüm Danışmanı örneğinizi dağıtmak için Azure Portal ölçüm Danışmanı kaynağı oluşturun.
- Geçerli kıvrınsürümü. Bu makalede, kıvrımlı belgelerdebelirtilen birkaç komut satırı anahtarı kullanılır.
- Aşağıdaki BASH örnekleri,
\satır devamlılık karakterini kullanır. Konsol veya Terminal farklı bir satır devamlılık karakteri kullanıyorsa, bu karakteri kullanın.
- Aşağıdaki BASH örnekleri,
İpucu
- GitHubREST API çağıran bir Python örneği bulabilirsiniz.
- Ölçüm Danışmanı kaynağınızın kullanmanız için bir hizmet örneği dağıtması 10 ila 30 dakika olabilir. Başarılı bir şekilde dağıtıldıktan sonra Kaynağa Git ' e tıklayın. Dağıtımdan sonra, ölçüm Danışmanı örneğinizi hem Web portalı hem de REST API kullanmaya başlayabilirsiniz.
- Azure portal REST API URL 'sini kaynağınızın genel bakış bölümünde bulabilirsiniz. şöyle görünür:
https://<instance-name>.cognitiveservices.azure.com/
REST API kullanmaya başlamak için iki anahtara ihtiyacınız olacaktır:
- Ölçüm Danışmanı kaynağınızın anahtarı. Bunu, Azure portal kaynağınızın anahtarlar ve uç nokta bölümünde bulabilirsiniz.
- Daha sonra
Ocp-Apim-Subscription-Keyörneklerde bu anahtarla değiştirirsiniz.
- Daha sonra
- Ölçüm Danışmanı örneğiniz için API anahtarı. Bunu, ölçüm Danışmanı için web portalında, sol gezinti menüsündeki API tuşları bölümünde bulabilirsiniz.
- Daha sonra
x-api-keyörneklerde bu anahtarla değiştirirsiniz.
- Daha sonra
Örnek veya veri kaynağından veri akışı ekleme
Zaman serisi verilerinizi izlemeye başlamak için bir veri akışı eklemeniz gerekir. Veri akışı eklemek için veri kaynağı türü ve parametrelerine göre bir veri şeması sağlamanız gerekir. Aşağıdaki JSON istek gövdesini üzerindebody.js adlı bir dosyaya kaydedin ve kıvrımlı komutunu çalıştırın.
{
"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": ""
}
Kıvral komutu bir BASH kabuğundan yürütülür. Bu komutu kendi kaynak adınızla, kaynak anahtarınızla ve JSON değerlerinizle düzenleyin.
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
Örnek yanıt
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
Yukarıdaki yanıtta, konum üstbilgisi oluşturduğunuz veri akışı URL 'Sidir ve Datafeedid'yi içerir.
Yukarıdaki URL 'yi kullanarak, önceki adımda oluşturduğunuz veri akışı hakkında ayrıntılı bilgileri sorgulayabilirsiniz. (Aşağıdaki adımlarda, veri akışı bilgilerinde metricID kullanacağız)
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"
Örnek yanıt
{
"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"
}
}
Alma durumunu denetle
Veri akışı eklendikten sonra, bir alım işinin ilerlemesini denetlemek isterseniz, onun durumunu kontrol edebilirsiniz. Aşağıdaki JSON istek gövdesini üzerindebody.js adlı bir dosyaya kaydedin ve kıvrımlı komutunu çalıştırın.
{
"startTime": "2020-01-01T00:00:00.0000000+00:00",
"endTime": "2020-01-04T00:00:00.0000000+00:00"
}
Kıvral komutu bir BASH kabuğundan yürütülür. Bu komutu kendi kaynak adınızla, kaynak anahtarınızla, JSON değerlerinizle ve JSON boyutunda düzenleyin.
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
Örnek yanıt
{
"@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"
}
]
}
Anomali algılama yapılandırmasını Yapılandır
Varsayılan yapılandırma her ölçüm için otomatik olarak uygulandığında, verilerinizde kullanılan algılama modlarını ayarlayabilirsiniz. Aşağıdaki JSON istek gövdesini üzerindebody.js adlı bir dosyaya kaydedin ve kıvrımlı komutunu çalıştırın.
{
"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": [
]
}
Kıvral komutu bir BASH kabuğundan yürütülür. Bu komutu kendi kaynak adınızla, kaynak anahtarınızla, JSON değerlerinizle ve JSON boyutunda düzenleyin.
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
Örnek yanıt
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
Yukarıdaki konum üst bilgisinde, yeni oluşturulan kaynağın (algılama yapılandırması) URL 'sini içerir.
Konum üst bilgisinde yukarıdaki URL 'yi kullanarak, oluşturduğunuz algılama yapılandırmasını sorgulayabilir (aşağıdaki adımlarda yanıt Içeriği için anomalyDetectionConfigurationId kullanacağız)
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"
Örnek yanıt
{
"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":[
]
}
Uyarı yapılandırmasını Yapılandır
Uyarıyı yapılandırmadan önce, uyarıyı bilgilendirmek için kullanılacak bir kanca oluşturmanız gerekir. Web kancası ve e-posta olan bir uyarı tetiklendiğinde bildirim almanın iki yolu vardır. Kanca oluştururken kanca türü olarak bu bunlardan birini kanca içinde belirtebilirsiniz.
Aşağıdaki JSON istek gövdesini üzerindebody.js adlı bir dosyaya kaydedin ve kıvrımlı komutunu çalıştırın.
{
"hookType": "Webhook",
"hookName": "test_web_hook000001",
"description": "",
"externalLink": "",
"hookParameter": {
"endpoint": "https://www.xxx.com/aaa",
"username": "",
"password": ""
}
}
Kıvral komutu bir BASH kabuğundan yürütülür. Bu komutu kendi kaynak adınızla, kaynak anahtarınızla, JSON değerlerinizle ve JSON boyutunda düzenleyin.
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
Örnek yanıt
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
Konum üst bilgisinde yukarıdaki URL 'yi kullanarak, oluşturduğunuz Web kancasını sorgulayabilirsiniz.
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"
Örnek yanıt
{
"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":""
}
}
Uyarı yapılandırmasını yapılandırarak, uyarının tetiklenmesi için kullanılabilecek algılama koşulu belirtebilirsiniz. Aşağıdaki JSON istek gövdesini üzerindebody.js adlı bir dosyaya kaydedin ve kıvrımlı komutunu çalıştırın.
{
"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
},
}
]
}
Kıvral komutu bir BASH kabuğundan yürütülür. Bu komutu kendi kaynak adınızla, kaynak anahtarınızla, JSON değerlerinizle ve JSON boyutunda düzenleyin.
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
Örnek yanıt
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
Yukarıdaki konum üst bilgisinde, yeni oluşturulan kaynağın (algılama yapılandırması) URL 'sini içerir.
Konum üst bilgisinde yukarıdaki URL 'yi kullanarak, oluşturduğunuz uyarı yapılandırmasını sorgulayabilirsiniz. (Aşağıdaki adımlarda, uyarı yapılandırmasında Anoyalertingconfigurationıd kullanacağız)
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"
Örnek yanıt
{
"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
}
}
]
}
Sorgu anomali algılama sonuçları
Algılama sonucunu almanın farklı yolları vardır. Örneğin, algılama işlemini oluşturduğunuz algılama yapılandırmasını kullanarak düzenli aralıklarla etkin bir şekilde sorgulayabilir veya uyarı aracılığıyla size bildirimde bulunabilir ve ardından bu uyarıyı kullanarak ilgili bozukluklar sorgulayabilirsiniz.
Aşağıdaki örnekte, uyarının nasıl sorgulandığından ve Bu uyarıyla ilgili anormallikleri sorgulamak için bu uyarının nasıl kullanılacağı gösterilmektedir.
Sorgu uyarısı
Uyarıyı sorgulamak için yukarıdaki adımda oluşturulan uyarı yapılandırması ' nı kullanabilirsiniz.
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"
Örnek yanıt
{
"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
}
Yukarıdaki yanıtta bir uyarı aldık. Bu AlertId'yi kullanarak, ilgili tüm anormallikleri bu uyarıya neden olacak şekilde sorgulayabilir.
(Uyarı almanın başka bir yolu da Web kancasını yapılandırmaktır ve bulunduğunda kapsamlı olarak Uyarı alındı)
AlertId kullanarak anomali sorgula
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"
Örnek yanıt
{
"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
}
Kaynakları temizleme
Bilişsel hizmetler aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, onunla ilişkili diğer tüm kaynakları da siler.