Pustaka klien Azure Metrics Advisor untuk Python - versi 1.0.0
Metrics Advisor adalah platform pemantauan, peringatan, dan analisis akar penyebab real time yang dapat diskalakan. Gunakan Azure Metrics Advisor untuk:
- Menganalisis data multi-dimensi dari beberapa sumber data
- Mengidentifikasi dan menghubungkan anomali
- Mengonfigurasi dan menyempurnakan model deteksi anomali yang digunakan pada data Anda
- Diagnosa anomali dan bantu analisis akar penyebab
Kode sumber | Paket (Pypi) | dokumentasi referensi API | Dokumentasi produk | Sampel
Memulai
Menginstal paket
Instal pustaka klien Azure Metrics Advisor untuk Python dengan pip:
pip install azure-ai-metricsadvisor --pre
Prasyarat
- Python 2.7, atau 3.6 atau yang lebih baru diperlukan untuk menggunakan paket ini.
- Anda memerlukan langganan Azure, dan serivce Metrics Advisor untuk menggunakan paket ini.
Mengautentikasi klien
Anda akan memerlukan dua kunci untuk mengautentikasi klien:
- Kunci langganan ke sumber daya Metrics Advisor Anda. Anda dapat menemukan ini di bagian Kunci dan Titik Akhir sumber daya Anda di portal Microsoft Azure.
- Kunci API untuk instans Metrics Advisor Anda. Anda dapat menemukan ini di portal web untuk Metrics Advisor, di kunci API di menu navigasi kiri.
Kita dapat menggunakan kunci untuk membuat baru MetricsAdvisorClient
atau MetricsAdvisorAdministrationClient
.
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))
Konsep utama
MetricsAdvisorClient
MetricsAdvisorClient
membantu dengan:
- mencantumkan insiden
- mencantumkan akar penyebab insiden
- mengambil data rangkaian waktu asli dan data rangkaian waktu yang diperkaya oleh layanan.
- mencantumkan pemberitahuan
- menambahkan umpan balik untuk menyempurnakan model Anda
MetricsAdvisorAdministrationClient
MetricsAdvisorAdministrationClient
memungkinkan Anda untuk
- mengelola umpan data
- mengelola konfigurasi deteksi anomali
- mengelola konfigurasi peringatan anomali
- kelola kait
DataFeed
DataFeed
Itulah yang diserap Metrics Advisor dari sumber data Anda, seperti Cosmos DB atau server SQL. Umpan data berisi baris:
- tanda waktu
- nol atau lebih dimensi
- satu atau beberapa ukuran
Metrik
DataFeedMetric
adalah langkah terukur yang digunakan untuk memantau dan menilai status proses bisnis tertentu. Ini bisa berupa kombinasi dari beberapa nilai seri waktu yang dibagi menjadi dimensi. Misalnya metrik kesehatan web mungkin berisi dimensi untuk jumlah pengguna dan pasar en-us.
AnomalyDetectionConfiguration
AnomalyDetectionConfiguration
diperlukan untuk setiap rangkaian waktu, dan menentukan apakah titik dalam rangkaian waktu adalah anomali.
Insiden Anomali &
Setelah konfigurasi deteksi diterapkan ke metrik, AnomalyIncident
s dihasilkan setiap kali seri apa pun di dalamnya memiliki DataPointAnomaly
.
Peringatan
Anda dapat mengonfigurasi anomali mana yang harus memicu AnomalyAlert
. Anda dapat mengatur beberapa pemberitahuan dengan pengaturan yang berbeda. Misalnya, Anda dapat membuat pemberitahuan untuk anomali dengan dampak bisnis yang lebih rendah, dan satu lagi untuk pemberitahuan yang lebih penting.
Hook Pemberitahuan
Azure Metrics Advisor memungkinkan Anda membuat dan berlangganan pemberitahuan real time. Pemberitahuan ini dikirim melalui internet, menggunakan hook pemberitahuan seperti EmailNotificationHook
atau WebNotificationHook
.
Contoh
- Menambahkan umpan data dari sampel atau sumber data
- Periksa status penyerapan
- Mengonfigurasi konfigurasi deteksi anomali
- Mengonfigurasi konfigurasi pemberitahuan
- Hasil deteksi anomali kueri
- Insiden kueri
- Akar penyebab kueri
- Menambahkan hook untuk menerima pemberitahuan anomali
Tambahkan umpan data dari sampel atau sumber data
Metrics Advisor mendukung penyambungan berbagai jenis sumber data. Berikut adalah sampel untuk menyerap data dari SQL Server.
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
Memeriksa status penyerapan
Setelah mulai penyerapan data, kita dapat memeriksa status penyerapan.
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))
Konfigurasikan konfigurasi deteksi anomali
Meskipun konfigurasi deteksi default secara otomatis diterapkan ke setiap metrik, kita dapat menyelaraskan mode deteksi yang digunakan pada data kita dengan membuat konfigurasi deteksi anomali yang disesuaikan.
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
Konfigurasikan konfigurasi peringatan
Kemudian mari kita konfigurasikan dalam kondisi mana pemberitahuan perlu dipicu.
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
Hasil deteksi anomali kueri
Kita dapat mengkueri pemberitahuan dan anomali.
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))
Insiden kueri
Kita dapat mengkueri insiden untuk konfigurasi deteksi.
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))
Akar penyebab kueri
Kita juga dapat mengkueri akar penyebab insiden
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))
Menambahkan hook untuk menerima pemberitahuan anomali
Kita dapat menambahkan beberapa kait sehingga ketika pemberitahuan dipicu, kita bisa mendapatkan panggilan kembali.
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"
)
)
API asinkron
Pustaka ini mencakup API asinkron lengkap yang didukung pada Python 3.6+. Untuk menggunakannya, Anda harus menginstal transportasi asinkron terlebih dahulu, seperti aiohttp. Lihat dokumentasi azure-core untuk informasi selengkapnya.
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)
)
Pemecahan Masalah
Umum
Klien Azure Metrics Advisor akan memunculkan pengecualian yang ditentukan dalam Azure Core.
Pembuatan Log
Pustaka ini menggunakan pustaka pengelogan standar untuk pengelogan.
Informasi dasar tentang sesi HTTP (URL, header, dll.) dicatat pada INFO
tingkat.
Pengelogan tingkat terperinci DEBUG
, termasuk isi permintaan/respons dan header yang tidak diredaktifkan , dapat diaktifkan pada klien atau per operasi dengan logging_enable
argumen kata kunci.
Lihat dokumentasi pengelogan SDK lengkap dengan contoh di sini.
Langkah berikutnya
Lebih banyak kode sampel
Untuk detail selengkapnya, lihat sampel README.
Berkontribusi
Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi cla.microsoft.com.
Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Tata Tertib atau hubungi opencode@microsoft.com untuk pertanyaan atau komentar lainnya.
Azure SDK for Python
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk