Azure Metrics Advisor-clientbibliotheek voor Python - versie 1.0.0
Metrics Advisor is een schaalbaar platform voor realtime-tijdreeksbewaking, waarschuwingen en analyse van hoofdoorzaak. Met Metrics Advisor kunt u:
- Multidimensionale gegevens van meerdere gegevensbronnen analyseren
- Anomalieën identificeren en correleren
- Het anomaliedetectiemodel dat wordt gebruikt voor uw gegevens configureren en afstemmen
- Anomalieën diagnosticeren en hulp bij analyse van hoofdoorzaak
Broncode | Pakket (Pypi) | API-referentiedocumentatie | Productdocumentatie | Monsters
Aan de slag
Het pakket installeren
Installeer de Azure Metrics Advisor-clientbibliotheek voor Python met pip:
pip install azure-ai-metricsadvisor --pre
Vereisten
- Python 2.7 of 3.6 of hoger is vereist om dit pakket te gebruiken.
- U hebt een Azure-abonnement en een Metrics Advisor-service nodig om dit pakket te kunnen gebruiken.
De client verifiëren
U hebt twee sleutels nodig om de client te verifiëren:
- De abonnementssleutel voor uw Metrics Advisor-resource. U vindt deze in het gedeelte Sleutels en eindpunt van uw resource in Azure Portal.
- De API-sleutel voor uw Metrics Advisor-exemplaar. U vindt deze in de webportal voor Metrics Advisor, in API-sleutels in het navigatiemenu aan de linkerkant.
We kunnen de sleutels gebruiken om een nieuwe MetricsAdvisorClient
of MetricsAdvisorAdministrationClient
te maken.
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))
Belangrijkste concepten
MetricsAdvisorClient
MetricsAdvisorClient
helpt bij:
- incidenten weergeven
- hoofdoorzaken van incidenten weergeven
- het ophalen van oorspronkelijke tijdreeksgegevens en tijdreeksgegevens die door de service zijn verrijkt.
- waarschuwingen weergeven
- feedback toevoegen om uw model af te stemmen
MetricsAdvisorAdministrationClient
MetricsAdvisorAdministrationClient
kunt u
- gegevensfeeds beheren
- anomaliedetectieconfiguraties beheren
- configuraties voor anomaliewaarschuwingen beheren
- hooks beheren
DataFeed
Een DataFeed
is wat Metrics Advisor opneemt uit uw gegevensbron, zoals Cosmos DB of een SQL-server. Een gegevensfeed bevat rijen van:
- Tijdstempels
- nul of meer dimensies
- een of meer metingen
Metrisch
Een DataFeedMetric
is een kwantificeerbaar metrisch gegeven dat wordt gebruikt om de status van een specifiek bedrijfsproces te controleren en te beoordelen. Dit kan een combinatie zijn van meerdere tijdreekswaarden, onderverdeeld in dimensies. Een metrisch gegeven dat de status van het web aangeeft, kan bijvoorbeeld dimensies bevatten voor het aantal gebruikers en voor het en-us-taalgebied.
AnomalyDetectionConfiguration
AnomalyDetectionConfiguration
is vereist voor elke tijdreeks en bepaalt of een punt in de tijdreeks een anomalie is.
Anomalie-incident &
Nadat een detectieconfiguratie is toegepast op metrische gegevens, AnomalyIncident
worden s gegenereerd wanneer een reeks in de configuratie een DataPointAnomaly
heeft.
Waarschuwing
U kunt configureren welke afwijkingen een AnomalyAlert
moeten activeren. U kunt meerdere waarschuwingen met verschillende instellingen instellen. U kunt bijvoorbeeld een waarschuwing maken voor afwijkingen met een lagere bedrijfsimpact en een andere waarschuwing voor belangrijkere waarschuwingen.
Meldingshook
Met Metrics Advisor kunt u realtime waarschuwingen maken en erop abonneren. Deze waarschuwingen worden verzonden via internet, met behulp van een meldingshook zoals EmailNotificationHook
of WebNotificationHook
.
Voorbeelden
- Een gegevensfeed toevoegen uit een voorbeeld of gegevensbron
- Opnamestatus controleren
- Configuratie voor anomaliedetectie configureren
- Waarschuwingsconfiguratie configureren
- Resultaten van anomaliedetectie opvragen
- Query-incidenten
- Hoofdoorzaken van query's
- Hooks toevoegen voor het ontvangen van anomaliewaarschuwingen
Een gegevensfeed van een sample of gegevensbron toevoegen
Metrics Advisor biedt ondersteuning voor het met elkaar verbinden van verschillende typen gegevensbronnen. Hier volgt een voorbeeld van het opnemen van gegevens uit 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
Opnamestatus controleren
Nadat de gegevensopname is gestart, kunt u de opnamestatus controleren.
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))
Configuratie van anomaliedetectie configureren
Hoewel een standaarddetectieconfiguratie automatisch wordt toegepast op elke metrische waarde, kunnen we de detectiemodi die voor onze gegevens worden gebruikt, afstemmen door een aangepaste configuratie voor anomaliedetectie te maken.
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
Configuratie van waarschuwingen configureren
Vervolgens gaan we configureren in welke omstandigheden een waarschuwing moet worden geactiveerd.
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
Query's uitvoeren op de anomaliedetectieresultaten
We kunnen query's uitvoeren op de waarschuwingen en afwijkingen.
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))
Query-incidenten
We kunnen een query uitvoeren op de incidenten voor een detectieconfiguratie.
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))
Hoofdoorzaken van query's
We kunnen ook de hoofdoorzaken van een incident opvragen
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))
Hooks toevoegen voor het ontvangen van anomaliewaarschuwingen
We kunnen enkele hooks toevoegen, zodat we terug kunnen worden gebeld wanneer er een waarschuwing wordt geactiveerd.
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"
)
)
Asynchrone API's
Deze bibliotheek bevat een volledige asynchrone API die wordt ondersteund in Python 3.6+. Als u deze wilt gebruiken, moet u eerst een asynchroon transport installeren, zoals aiohttp. Zie azure-core-documentatie voor meer informatie.
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)
)
Problemen oplossen
Algemeen
De Azure Metrics Advisor-clients genereren uitzonderingen die zijn gedefinieerd in Azure Core.
Logboekregistratie
Deze bibliotheek gebruikt de standaardbibliotheek voor logboekregistratie voor logboekregistratie.
Basisinformatie over HTTP-sessies (URL's, headers, enzovoort) wordt op INFO
niveau geregistreerd.
Gedetailleerde DEBUG
logboekregistratie op niveau, inclusief aanvraag-/antwoordteksten en niet-geredigeerde headers, kan worden ingeschakeld op de client of per bewerking met het logging_enable
sleutelwoordargument.
Zie hier de volledige documentatie voor SDK-logboekregistratie met voorbeelden.
Volgende stappen
Meer voorbeeldcode
Zie leesmij-voorbeelden voor meer informatie.
Bijdragen
Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar cla.microsoft.com voor meer informatie.
Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.
Azure SDK for Python