Aracılığıyla paylaş


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

İstemcinin kimliğini doğrulama

İstemcinin kimliğini doğrulamak için iki anahtar gerekir:

  1. Ö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.
  2. Ö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 MetricsAdvisorAdministrationClientoluş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, AnomalyIncidentiçindeki herhangi bir serinin sahip olduğu DataPointAnomalyher durumda s oluşturulur.

Uyarı

Tetiklenmesi gereken AnomalyAlertanomalileri 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 WebNotificationHookgibi EmailNotificationHook bir bildirim kancası kullanılarak İnternet üzerinden gönderilir.

Örnekler

Ö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 .