Python için Azure Ölçüm Danışmanı istemci kitaplığı - sürüm 1.0.0
Ölçüm Danışmanı ölçeklenebilir bir gerçek zamanlı seri izleme, uyarı ve kök neden analizi platformudur. Ölçüm Danışmanı'na şu işlemleri yapmak için kullanın:
- Birden çok veri kaynağından çok boyutlu verileri analiz etme
- Anomalileri tanımlama ve ilişkilendirme
- Verilerinizde kullanılan anomali algılama modelini yapılandırma ve hassas ayarlamalar yapma
- Anomalileri tanılama ve kök neden analiziyle ilgili yardım
Kaynak kodu | Paket (Pypi) | API başvuru belgeleri | Ürün belgeleri | Örnekleri
Başlarken
Paketi yükleme
Pip ile Python için Azure Ölçüm Danışmanı istemci kitaplığını yükleyin:
pip install azure-ai-metricsadvisor --pre
Önkoşullar
- Bu paketi kullanmak için Python 2.7 veya 3.6 veya üzeri gereklidir.
- Bu paketi kullanmak için bir Azure aboneliğine ve Ölçüm Danışmanı serivcesine ihtiyacınız vardır.
İstemcinin kimliğini doğrulama
İstemcinin kimliğini doğrulamak için iki anahtar gerekir:
- Ölçüm Danışmanı kaynağınızın abonelik anahtarı. Bunu kaynağınızın Anahtarlar ve Uç Nokta bölümünde Azure portal bulabilirsiniz.
- Ölçüm Danışmanı örneğinizin API anahtarı. Bunu Ölçüm Danışmanı web portalında, sol gezinti menüsündeki API tuşları bölümünde bulabilirsiniz.
Yeni MetricsAdvisorClient
veya MetricsAdvisorAdministrationClient
oluşturmak için anahtarları kullanabiliriz.
import os
from azure.ai.metricsadvisor import (
MetricsAdvisorKeyCredential,
MetricsAdvisorClient,
MetricsAdvisorAdministrationClient,
)
service_endpoint = os.getenv("ENDPOINT")
subscription_key = os.getenv("SUBSCRIPTION_KEY")
api_key = os.getenv("API_KEY")
client = MetricsAdvisorClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key))
admin_client = MetricsAdvisorAdministrationClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key))
Önemli kavramlar
MetricsAdvisorClient
MetricsAdvisorClient
şu yardımcı olur:
- olayları listeleme
- olayların kök nedenlerini 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
MetricsAdvisorAdministrationClient
MetricsAdvisorAdministrationClient
şunları yapmanızı sağlar:
- veri akışlarını yönetme
- anomali algılama yapılandırmalarını yönetme
- anomali uyarı yapılandırmalarını yönetme
- kancaları yönetme
DataFeed
A DataFeed
, Ölçüm Danışmanı'nın Cosmos DB veya SQL server gibi veri kaynağınızdan gelen veri kaynağıdır. Veri akışı şu satırları içerir:
- Zaman damga -ları
- sıfır veya daha fazla boyut
- bir veya daha fazla ölçü
Ölçüm
A DataFeedMetric
, belirli bir iş sürecinin durumunu izlemek ve değerlendirmek için kullanılan ölçü birimidir. Boyutlara bölünmüş birden çok zaman serisi değerinin birleşimi olabilir. Örneğin bir web durumu ölçümü, kullanıcı sayısı ve en-us pazarı için boyutlar içerebilir.
AnomalyDetectionConfiguration
AnomalyDetectionConfiguration
her zaman serisi için gereklidir ve zaman serisindeki bir noktanın anomali olup olmadığını belirler.
Anomali & Olayı
Ölçümlere bir algılama yapılandırması uygulandıktan sonra, AnomalyIncident
içindeki herhangi bir serinin sahip olduğu DataPointAnomaly
her durumda s oluşturulur.
Uyarı
Tetiklenmesi gereken AnomalyAlert
anomalileri yapılandırabilirsiniz. Farklı ayarlarla birden çok uyarı ayarlayabilirsiniz. Örneğin, daha düşük iş etkisine sahip anomaliler için bir uyarı ve daha önemli uyarılar için başka bir uyarı oluşturabilirsiniz.
Bildirim Kancası
Ölçüm Danışmanı, gerçek zamanlı uyarılar oluşturmanıza ve bu uyarılara abone olmanıza olanak tanır. Bu uyarılar, veya WebNotificationHook
gibi EmailNotificationHook
bir bildirim kancası kullanılarak İnternet üzerinden gönderilir.
Örnekler
- Örnek veya veri kaynağından veri akışı ekleme
- Alma durumunu denetleme
- Anomali algılama yapılandırmasını yapılandırma
- Uyarı yapılandırmasını yapılandırma
- Sorgu anomali algılama sonuçları
- Olayları sorgulama
- Sorgu kök nedenleri
- Anomali uyarılarını almak için kanca ekleme
Örnek veya veri kaynağından veri akışı ekleme
Ölçüm Danışmanı, farklı veri kaynağı türlerinin bağlanmasını destekler. SQL Server'dan veri almak için bir örnek aşağıda verilmiştir.
import os
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
SqlServerDataFeedSource,
DataFeedSchema,
DataFeedMetric,
DataFeedDimension,
DataFeedRollupSettings,
DataFeedMissingDataPointFillSettings
)
service_endpoint = os.getenv("ENDPOINT")
subscription_key = os.getenv("SUBSCRIPTION_KEY")
api_key = os.getenv("API_KEY")
sql_server_connection_string = os.getenv("SQL_SERVER_CONNECTION_STRING")
query = os.getenv("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
Alma durumunu denetleme
Veri alımını başlattıktan sonra alım durumunu denetleyebiliriz.
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
service_endpoint = os.getenv("ENDPOINT")
subscription_key = os.getenv("SUBSCRIPTION_KEY")
api_key = os.getenv("API_KEY")
data_feed_id = os.getenv("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ılama yapılandırmasını yapılandırma
Her ölçüme otomatik olarak bir varsayılan algılama yapılandırması uygulanırken, özelleştirilmiş bir anomali algılama yapılandırması oluşturarak verilerimizde kullanılan algılama modlarını ayarlayabiliriz.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
ChangeThresholdCondition,
HardThresholdCondition,
SmartDetectionCondition,
SuppressCondition,
MetricDetectionCondition,
)
service_endpoint = os.getenv("ENDPOINT")
subscription_key = os.getenv("SUBSCRIPTION_KEY")
api_key = os.getenv("API_KEY")
metric_id = os.getenv("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
Uyarı yapılandırmasını yapılandırma
Ardından bir uyarının hangi koşullarda tetiklenmesi gerektiğini yapılandıralım.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
MetricAlertConfiguration,
MetricAnomalyAlertScope,
TopNGroupScope,
MetricAnomalyAlertConditions,
SeverityCondition,
MetricBoundaryCondition,
MetricAnomalyAlertSnoozeCondition,
)
service_endpoint = os.getenv("ENDPOINT")
subscription_key = os.getenv("SUBSCRIPTION_KEY")
api_key = os.getenv("API_KEY")
anomaly_detection_configuration_id = os.getenv("DETECTION_CONFIGURATION_ID")
hook_id = os.getenv("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=anomaly_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=anomaly_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
Sorgu anomali algılama sonuçları
Uyarıları ve anomalileri sorgulayabiliriz.
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient
service_endpoint = os.getenv("ENDPOINT")
subscription_key = os.getenv("SUBSCRIPTION_KEY")
api_key = os.getenv("API_KEY")
alert_config_id = os.getenv("ALERT_CONFIG_ID")
alert_id = os.getenv("ALERT_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 time: {}".format(result.created_time))
results = client.list_anomalies(
alert_configuration_id=alert_config_id,
alert_id=alert_id,
)
for result in results:
print("Create time: {}".format(result.created_time))
print("Severity: {}".format(result.severity))
print("Status: {}".format(result.status))
Olayları sorgulama
Algılama yapılandırması için olayları sorgulayabiliriz.
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient
service_endpoint = os.getenv("ENDPOINT")
subscription_key = os.getenv("SUBSCRIPTION_KEY")
api_key = os.getenv("API_KEY")
anomaly_detection_configuration_id = os.getenv("DETECTION_CONFIGURATION_ID")
client = MetricsAdvisorClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key)
)
results = client.list_incidents(
detection_configuration_id=anomaly_detection_configuration_id,
start_time=datetime.datetime(2020, 1, 1),
end_time=datetime.datetime(2020, 9, 9),
)
for result in results:
print("Metric id: {}".format(result.metric_id))
print("Incident ID: {}".format(result.id))
print("Severity: {}".format(result.severity))
print("Status: {}".format(result.status))
Sorgu kök nedenleri
Ayrıca bir olayın kök nedenlerini de sorgulayabiliriz
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient
service_endpoint = os.getenv("ENDPOINT")
subscription_key = os.getenv("SUBSCRIPTION_KEY")
api_key = os.getenv("API_KEY")
anomaly_detection_configuration_id = os.getenv("DETECTION_CONFIGURATION_ID")
incident_id = os.getenv("INCIDENT_ID")
client = MetricsAdvisorClient(service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key)
)
results = client.list_incident_root_causes(
detection_configuration_id=anomaly_detection_configuration_id,
incident_id=incident_id,
)
for result in results:
print("Score: {}".format(result.score))
print("Description: {}".format(result.description))
Anomali uyarılarını almak için kanca ekleme
Bir uyarı tetiklendiğinde geri çağrı alabilmemiz için bazı kancalar ekleyebiliriz.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import EmailNotificationHook
service_endpoint = os.getenv("ENDPOINT")
subscription_key = os.getenv("SUBSCRIPTION_KEY")
api_key = os.getenv("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://docs.microsoft.com/en-us/azure/cognitive-services/metrics-advisor/how-tos/alerts"
)
)
Zaman Uyumsuz API'ler
Bu kitaplık, Python 3.6+ üzerinde desteklenen tam bir zaman uyumsuz API içerir. Bunu kullanmak için önce aiohttp gibi bir zaman uyumsuz aktarım yüklemeniz gerekir. Daha fazla bilgi için bkz. azure-core belgeleri .
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient, MetricsAdvisorAdministrationClient
client = MetricsAdvisorClient(
service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key)
)
admin_client = MetricsAdvisorAdministrationClient(
service_endpoint,
MetricsAdvisorKeyCredential(subscription_key, api_key)
)
Sorun giderme
Genel
Azure Ölçüm Danışmanı istemcileri, Azure Core'da tanımlanan özel durumları tetikler.
Günlüğe Kaydetme
Bu kitaplık, günlüğe kaydetme için standart günlük kitaplığını kullanır.
HTTP oturumlarıyla ilgili temel bilgiler (URL'ler, üst bilgiler vb.) düzeyinde günlüğe kaydedilir INFO
.
İstek/yanıt gövdeleri ve işlenmemiş üst bilgiler de dahil olmak üzere ayrıntılı DEBUG
düzey günlüğe kaydetme, istemcide veya anahtar sözcük bağımsız değişkeniyle logging_enable
işlem başına etkinleştirilebilir.
Burada örneklerin bulunduğu tam SDK günlük belgelerine bakın.
Sonraki adımlar
Daha fazla örnek kod
Daha fazla ayrıntı için bkz. BENİOKU örnekleri.
Katkıda bulunma
Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için cla.microsoft.com adresini ziyaret edin.
Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları SSS bölümüne bakın veya ek sorularınız veya yorumlarınızla iletişime geçin opencode@microsoft.com .
Azure SDK for Python