azure.ai.metricsadvisor.aio package

class azure.ai.metricsadvisor.aio.MetricsAdvisorClient(endpoint: str, credential: Union[MetricsAdvisorKeyCredential, AsyncTokenCredential], **kwargs: Any)[source]

Represents an client that calls restful API of Azure Metrics Advisor service.

Parameters
  • endpoint (str) – Supported Cognitive Services endpoints (protocol and hostname, for example: https://<resource-name>.cognitiveservices.azure.com).

  • credential (MetricsAdvisorKeyCredential or TokenCredential) – An instance of ~azure.ai.metricsadvisor.MetricsAdvisorKeyCredential. which requires both subscription key and API key. Or an object which can provide an access token for the vault, such as a credential from azure.identity

Keyword Arguments
  • pipeline (Pipeline) – If omitted, the standard pipeline is used.

  • transport (HttpTransport) – If omitted, the standard pipeline is used.

  • policies (list[HTTPPolicy]) – If omitted, the standard pipeline is used.

async add_feedback(feedback: Union[AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback], **kwargs: Any)None[source]

Create a new metric feedback.

Parameters

feedback (AnomalyFeedback or ChangePointFeedback or CommentFeedback or PeriodFeedback) – metric feedback.

Raises

HttpResponseError

Example:

Add new feedback.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient
from azure.ai.metricsadvisor.models import AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID")

client = MetricsAdvisorClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

anomaly_feedback = AnomalyFeedback(metric_id=metric_id,
                                   dimension_key={"Dim1": "Common Lime"},
                                   start_time=datetime.datetime(2020, 8, 5),
                                   end_time=datetime.datetime(2020, 8, 7),
                                   value="NotAnomaly")
await client.add_feedback(anomaly_feedback)

change_point_feedback = ChangePointFeedback(metric_id=metric_id,
                                            dimension_key={"Dim1": "Common Lime"},
                                            start_time=datetime.datetime(2020, 8, 5),
                                            end_time=datetime.datetime(2020, 8, 7),
                                            value="NotChangePoint")
await client.add_feedback(change_point_feedback)

comment_feedback = CommentFeedback(metric_id=metric_id,
                                   dimension_key={"Dim1": "Common Lime"},
                                   start_time=datetime.datetime(2020, 8, 5),
                                   end_time=datetime.datetime(2020, 8, 7),
                                   value="comment")
await client.add_feedback(comment_feedback)

period_feedback = PeriodFeedback(metric_id=metric_id,
                                 dimension_key={"Dim1": "Common Lime"},
                                 start_time=datetime.datetime(2020, 8, 5),
                                 end_time=datetime.datetime(2020, 8, 7),
                                 period_type="AssignValue",
                                 value=2)
await client.add_feedback(period_feedback)
async close()None[source]

Close the MetricsAdvisorClient session.

async get_feedback(feedback_id: str, **kwargs: Any) → Union[AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback][source]

Get a metric feedback by its id.

Parameters

feedback_id (str) – the id of the feedback.

Returns

The feedback object

Return type

AnomalyFeedback or ChangePointFeedback or CommentFeedback or PeriodFeedback

Raises

HttpResponseError

Example:

Get a metric feedback by its id.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
feedback_id = os.getenv("METRICS_ADVISOR_FEEDBACK_ID")

client = MetricsAdvisorClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

result = await client.get_feedback(feedback_id=feedback_id)
print("Type: {}; Id: {}".format(result.feedback_type, result.id))
list_alerts(alert_configuration_id: str, start_time: Union[str, datetime.datetime], end_time: Union[str, datetime.datetime], time_mode: str, **kwargs: Any)azure.core.async_paging.AsyncItemPaged[azure.ai.metricsadvisor.models._models.AnomalyAlert][source]

Query alerts under anomaly alert configuration.

Parameters
  • alert_configuration_id (str) – anomaly alert configuration unique id.

  • datetime.datetime] start_time (Union[str,) – start time.

  • datetime.datetime] end_time (Union[str,) – end time.

  • time_mode (str or AlertQueryTimeMode) – time mode. Possible values include: “AnomalyTime”, “CreatedTime”, “ModifiedTime”.

Keyword Arguments

skip (int) –

Returns

AnomalyAlerts under anomaly alert configuration.

Return type

AsyncItemPaged[AnomalyAlert]

Raises

HttpResponseError

Example:

Query anomaly detection results.
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    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",
    )
    tolist = []
    async for result in results:
        tolist.append(result)
        print("Alert id: {}".format(result.id))
        print("Create on: {}".format(result.created_on))
    return tolist

list_anomalies(**kwargs: Any)azure.core.async_paging.AsyncItemPaged[azure.ai.metricsadvisor.models._models.DataPointAnomaly][source]

Query anomalies under a specific alert or detection configuration.

Keyword Arguments
  • alert_configuration_id (str) – anomaly alert configuration unique id.

  • alert_id (str) – alert id.

  • detection_configuration_id (str) – anomaly detection configuration unique id.

  • datetime.datetime] start_time (Union[str,) – start time filter under chosen time mode.

  • datetime.datetime] end_time (Union[str,) – end time filter under chosen time mode.

  • skip (int) –

  • filter (DetectionAnomalyFilterCondition) –

Returns

Anomalies under a specific alert or detection configuration.

Return type

AsyncItemPaged[DataPointAnomaly]

Raises

HttpResponseError

list_anomaly_dimension_values(detection_configuration_id: str, dimension_name: str, start_time: Union[str, datetime.datetime], end_time: Union[str, datetime.datetime], **kwargs: Any)azure.core.async_paging.AsyncItemPaged[str][source]

Query dimension values of anomalies.

Parameters
  • detection_configuration_id (str) – anomaly detection configuration unique id.

  • dimension_name (str) – dimension to query.

  • datetime.datetime] start_time (Union[str,) – start time filter under chosen time mode.

  • datetime.datetime] end_time (Union[str,) – end time filter under chosen time mode.

Keyword Arguments

skip (int) –

Returns

Dimension values of anomalies.

Return type

AsyncItemPaged[str]

Raises

HttpResponseError

Example:

Query dimension values.
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID")
dimension_name = "city"

client = MetricsAdvisorClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    results = client.list_anomaly_dimension_values(
        detection_configuration_id=detection_configuration_id,
        dimension_name=dimension_name,
        start_time=datetime.datetime(2020, 1, 1),
        end_time=datetime.datetime(2020, 10, 21),
    )
    async for result in results:
        print(str(result))

list_feedback(metric_id: str, **kwargs: Any) → AsyncItemPaged[Union[AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback]][source]

List feedback on the given metric.

Parameters

metric_id (str) – filter feedbacks by metric id

Keyword Arguments
  • skip (int) –

  • dimension_key (dict[str, str]) – filter specfic dimension name and values

  • feedback_type (str or FeedbackType) – filter feedbacks by type. Possible values include: “Anomaly”, “ChangePoint”, “Period”, “Comment”.

  • datetime.datetime] start_time (Union[str,) – start time filter under chosen time mode.

  • datetime.datetime] end_time (Union[str,) – end time filter under chosen time mode.

  • time_mode (str or FeedbackQueryTimeMode) – time mode to filter feedback. Possible values include: “MetricTimestamp”, “FeedbackCreatedTime”.

Returns

Pageable list of MetricFeedback

Return type

AsyncItemPaged[ Union[AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback]]

Raises

HttpResponseError

Example:

List feedback on the given metric.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID")

client = MetricsAdvisorClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

results = client.list_feedback(metric_id=metric_id)
async for result in results:
    print("Type: {}; Id: {}".format(result.feedback_type, result.id))
list_incident_root_causes(detection_configuration_id: str, incident_id: str, **kwargs: Any)azure.core.async_paging.AsyncItemPaged[azure.ai.metricsadvisor.models._models.IncidentRootCause][source]

Query root cause for incident.

Parameters
  • detection_configuration_id (str) – anomaly detection configuration unique id.

  • incident_id (str) – incident id.

Returns

Pageable of root cause for incident

Return type

AsyncItemPaged[IncidentRootCause]

Raises

HttpResponseError

Example:

Query incident root causes.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID")
incident_id = os.getenv("METRICS_ADVISOR_INCIDENT_ID")

client = MetricsAdvisorClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))
async with client:
    results = client.list_incident_root_causes(
        detection_configuration_id=detection_configuration_id,
        incident_id=incident_id,
    )
    async for result in results:
        print("Score: {}".format(result.score))
        print("Description: {}".format(result.description))

list_incidents(**kwargs: Any)azure.core.async_paging.AsyncItemPaged[azure.ai.metricsadvisor.models._models.AnomalyIncident][source]

Query incidents under a specific alert or detection configuration.

Keyword Arguments
  • alert_configuration_id (str) – anomaly alerting configuration unique id.

  • alert_id (str) – alert id.

  • detection_configuration_id (str) – anomaly detection configuration unique id.

  • datetime.datetime] start_time (Union[str,) – start time filter under chosen time mode.

  • datetime.datetime] end_time (Union[str,) – end time filter under chosen time mode.

  • skip (int) –

  • filter (DetectionAnomalyFilterCondition) –

Returns

AnomalyIncidents under a specific alert.

Return type

AsyncItemPaged[AnomalyIncident]

Raises

HttpResponseError

list_metric_dimension_values(metric_id: str, dimension_name: str, **kwargs: Any)azure.core.async_paging.AsyncItemPaged[str][source]

List dimension from certain metric.

Parameters
  • metric_id (str) – metric unique id.

  • dimension_name (str) – the dimension name

Keyword Arguments
  • skip (int) –

  • dimension_value_filter (str) – dimension value to be filtered.

Returns

Dimension from certain metric.

Return type

AsyncItemPaged[str]

Raises

HttpResponseError

Example:

Query metric dimension values.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID")
dimension_name = "city"

client = MetricsAdvisorClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    results = client.list_metric_dimension_values(
        metric_id=metric_id,
        dimension_name=dimension_name,
    )
    async for result in results:
        print(str(result))

list_metric_enriched_series_data(detection_configuration_id: str, series: Union[List[azure.ai.metricsadvisor._generated.models._models_py3.SeriesIdentity], List[Dict[str, str]]], start_time: Union[str, datetime.datetime], end_time: Union[str, datetime.datetime], **kwargs: Any)azure.core.async_paging.AsyncItemPaged[azure.ai.metricsadvisor.models._models.MetricEnrichedSeriesData][source]

Query series enriched by anomaly detection.

Parameters
  • detection_configuration_id (str) – anomaly alerting configuration unique id.

  • series (SeriesIdentity or list[dict[str, str]]) – List of dimensions specified for series.

  • datetime.datetime] start_time (Union[str,) – start time filter under chosen time mode.

  • datetime.datetime] end_time (Union[str,) – end time filter under chosen time mode.

Returns

Pageable of MetricEnrichedSeriesData

Return type

AsyncItemPaged[MetricEnrichedSeriesData]

Raises

HttpResponseError

Example:

Query metric enriched series data.
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID")
series_identity = {"city": "Los Angeles"}

client = MetricsAdvisorClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    results = client.list_metric_enriched_series_data(
        detection_configuration_id=detection_configuration_id,
        start_time=datetime.datetime(2020, 9, 1),
        end_time=datetime.datetime(2020, 11, 1),
        series=[series_identity]
    )
    async for result in results:
        print(str(result))

list_metric_enrichment_status(metric_id: str, start_time: Union[str, datetime.datetime], end_time: Union[str, datetime.datetime], **kwargs: Any) → AsyncItemPaged[EnrichmentStatus][source]

Query anomaly detection status.

Parameters
  • metric_id (str) – filter feedbacks by metric id.

  • datetime.datetime] start_time (Union[str,) – start time filter under chosen time mode.

  • datetime.datetime] end_time (Union[str,) – end time filter under chosen time mode.

Keyword Arguments

skip (int) –

Returns

Anomaly detection status.

Return type

AsyncItemPaged[EnrichmentStatus]

Raises

HttpResponseError

Example:

Query metric enrichment status.
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID")

client = MetricsAdvisorClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    results = client.list_metric_enrichment_status(
            metric_id=metric_id,
            start_time=datetime.datetime(2020, 1, 1),
            end_time=datetime.datetime(2020, 10, 21),
        )
    async for result in results:
        print(str(result))

list_metric_series_definitions(metric_id: str, active_since: datetime.datetime, **kwargs: Any) → AsyncItemPaged[MetricSeriesDefinition][source]

List series (dimension combinations) from metric.

Parameters
  • metric_id (str) – metric unique id.

  • active_since (datetime.datetime) – Required. query series ingested after this time, the format should be yyyy-MM-ddTHH:mm:ssZ.

Keyword Arguments
  • skip (int) –

  • dimension_filter (dict[str, list[str]]) – filter specfic dimension name and values.

Returns

Series (dimension combinations) from metric.

Return type

AsyncItemPaged[MetricSeriesDefinition]

Raises

HttpResponseError

Example:

Query metric series definitions.
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID")

client = MetricsAdvisorClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    results = client.list_metric_series_definitions(
            metric_id=metric_id,
            active_since=datetime.datetime(2020, 1, 1),
        )
    async for result in results:
        print(str(result))

list_metrics_series_data(metric_id: str, start_time: Union[str, datetime.datetime], end_time: Union[str, datetime.datetime], series_to_filter: List[Dict[str, str]], **kwargs: Any)azure.core.async_paging.AsyncItemPaged[azure.ai.metricsadvisor.models._models.MetricSeriesData][source]

Get time series data from metric.

Parameters
  • metric_id (str) – metric unique id.

  • datetime.datetime] start_time (Union[str,) – start time filter under chosen time mode.

  • datetime.datetime] end_time (Union[str,) – end time filter under chosen time mode.

  • series_to_filter (list[dict[str, str]]) – query specific series.

Returns

Time series data from metric.

Return type

AsyncItemPaged[MetricSeriesData]

Raises

HttpResponseError

Example:

Query metrics series data.
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID")

client = MetricsAdvisorClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    results = client.list_metrics_series_data(
            metric_id=metric_id,
            start_time=datetime.datetime(2020, 1, 1),
            end_time=datetime.datetime(2020, 10, 21),
            series_to_filter=[
                {"city": "Los Angeles", "category": "Homemade"}
            ]
        )
    async for result in results:
        print(str(result))

class azure.ai.metricsadvisor.aio.MetricsAdvisorAdministrationClient(endpoint: str, credential: Union[MetricsAdvisorKeyCredential, AsyncTokenCredential], **kwargs: Any)[source]

MetricsAdvisorAdministrationClient is used to create and manage data feeds.

Parameters
  • endpoint (str) – Supported Cognitive Services endpoints (protocol and hostname, for example: https://<resource-name>.cognitiveservices.azure.com).

  • credential (MetricsAdvisorKeyCredential or TokenCredential) – An instance of ~azure.ai.metricsadvisor.MetricsAdvisorKeyCredential. which requires both subscription key and API key. Or an object which can provide an access token for the vault, such as a credential from azure.identity

Example:

Authenticate MetricsAdvisorAdministrationClient with a MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))
async close()None[source]

Close the MetricsAdvisorAdministrationClient session.

async create_alert_configuration(name: str, metric_alert_configurations: List[azure.ai.metricsadvisor.models._models.MetricAlertConfiguration], hook_ids: List[str], **kwargs: Any) → azure.ai.metricsadvisor.models._models.AnomalyAlertConfiguration[source]

Create an anomaly alert configuration.

Parameters
  • name (str) – Name for the anomaly alert configuration.

  • metric_alert_configurations (list[MetricAlertConfiguration]) – Anomaly alert configurations.

  • hook_ids (list[str]) – Unique hook IDs.

Keyword Arguments
  • cross_metrics_operator (str or MetricAnomalyAlertConfigurationsOperator) – Cross metrics operator should be specified when setting up multiple metric alert configurations. Possible values include: “AND”, “OR”, “XOR”.

  • description (str) – Anomaly alert configuration description.

Returns

AnomalyAlertConfiguration

Return type

AnomalyAlertConfiguration

Raises

HttpResponseError

Example:

Create an anomaly alert configuration
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
    MetricAlertConfiguration,
    MetricAnomalyAlertScope,
    TopNGroupScope,
    MetricAnomalyAlertConditions,
    SeverityCondition,
    MetricBoundaryCondition,
    MetricAnomalyAlertSnoozeCondition,
)
service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID")
hook_id = os.getenv("METRICS_ADVISOR_HOOK_ID")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    alert_config = await 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
async create_data_feed(name: str, source: Union[azure.ai.metricsadvisor.models._models.AzureApplicationInsightsDataFeedSource, azure.ai.metricsadvisor.models._models.AzureBlobDataFeedSource, azure.ai.metricsadvisor.models._models.AzureCosmosDbDataFeedSource, azure.ai.metricsadvisor.models._models.AzureDataExplorerDataFeedSource, azure.ai.metricsadvisor.models._models.AzureTableDataFeedSource, azure.ai.metricsadvisor.models._models.AzureLogAnalyticsDataFeedSource, azure.ai.metricsadvisor.models._models.InfluxDbDataFeedSource, azure.ai.metricsadvisor.models._models.MySqlDataFeedSource, azure.ai.metricsadvisor.models._models.PostgreSqlDataFeedSource, azure.ai.metricsadvisor.models._models.SqlServerDataFeedSource, azure.ai.metricsadvisor.models._models.MongoDbDataFeedSource, azure.ai.metricsadvisor.models._models.AzureDataLakeStorageGen2DataFeedSource, azure.ai.metricsadvisor.models._models.AzureEventHubsDataFeedSource], granularity: Union[str, azure.ai.metricsadvisor.models._models.DataFeedGranularity], schema: Union[List[str], azure.ai.metricsadvisor.models._models.DataFeedSchema], ingestion_settings: Union[datetime.datetime, azure.ai.metricsadvisor.models._models.DataFeedIngestionSettings], **kwargs: Any) → azure.ai.metricsadvisor.models._models.DataFeed[source]

Create a new data feed.

Parameters
Keyword Arguments
  • admin_emails (list[str]) – Data feed administrator emails.

  • data_feed_description (str) – Data feed description.

  • missing_data_point_fill_settings (DataFeedMissingDataPointFillSettings) – The fill missing point type and value.

  • rollup_settings (DataFeedRollupSettings) – The rollup settings.

  • viewer_emails (list[str]) – Data feed viewer emails.

  • access_mode (str or DataFeedAccessMode) – Data feed access mode. Possible values include: “Private”, “Public”. Default value: “Private”.

  • action_link_template (str) – action link for alert.

Returns

DataFeed

Return type

DataFeed

Raises

HttpResponseError

Example:

Create a data feed
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
    SqlServerDataFeedSource,
    DataFeedSchema,
    DataFeedMetric,
    DataFeedDimension,
    DataFeedRollupSettings,
    DataFeedMissingDataPointFillSettings,
)

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
sql_server_connection_string = os.getenv("METRICS_ADVISOR_SQL_SERVER_CONNECTION_STRING")
query = os.getenv("METRICS_ADVISOR_SQL_SERVER_QUERY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))
async with client:
    data_feed = await 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

async create_datasource_credential(datasource_credential: Union[azure.ai.metricsadvisor.models._models.DatasourceSqlConnectionString, azure.ai.metricsadvisor.models._models.DatasourceDataLakeGen2SharedKey, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipal, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipalInKeyVault], **kwargs: Any) → Union[azure.ai.metricsadvisor.models._models.DatasourceSqlConnectionString, azure.ai.metricsadvisor.models._models.DatasourceDataLakeGen2SharedKey, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipal, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipalInKeyVault][source]

Create a new datasource credential.

Parameters

datasource_credential (Union[DatasourceSqlConnectionString, DatasourceDataLakeGen2SharedKey, DatasourceServicePrincipal, DatasourceServicePrincipalInKeyVault]) – The datasource credential to create

Returns

The created datasource credential

Return type

Union[DatasourceSqlConnectionString, DatasourceDataLakeGen2SharedKey, DatasourceServicePrincipal, DatasourceServicePrincipalInKeyVault]

Raises

HttpResponseError

Example:

Create a datasource credential
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import DatasourceSqlConnectionString

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
connection_string = os.getenv("SQL_SERVER_CONNECTION_STRING")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

datasource_credential = await client.create_datasource_credential(
    datasource_credential=DatasourceSqlConnectionString(
        name="sql datasource credential",
        connection_string=connection_string,
        description="my datasource credential",
    )
)

return datasource_credential
async create_detection_configuration(name: str, metric_id: str, whole_series_detection_condition: azure.ai.metricsadvisor.models._models.MetricDetectionCondition, **kwargs: Any) → azure.ai.metricsadvisor.models._models.AnomalyDetectionConfiguration[source]

Create anomaly detection configuration.

Parameters
  • name (str) – The name for the anomaly detection configuration

  • metric_id (str) – Required. metric unique id.

  • whole_series_detection_condition (MetricDetectionCondition) – Required. Conditions to detect anomalies in all time series of a metric.

Keyword Arguments
Returns

AnomalyDetectionConfiguration

Return type

AnomalyDetectionConfiguration

Raises

HttpResponseError

Example:

Create an anomaly detection configuration
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
    ChangeThresholdCondition,
    HardThresholdCondition,
    SmartDetectionCondition,
    SuppressCondition,
    MetricDetectionCondition,
)

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
metric_id = os.getenv("METRICS_ADVISOR_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
    )
)

async with client:
    detection_config = await client.create_detection_configuration(
        name="my_detection_config",
        metric_id=metric_id,
        description="anomaly detection config for metric",
        whole_series_detection_condition=MetricDetectionCondition(
            cross_conditions_operator="OR",
            change_threshold_condition=change_threshold_condition,
            hard_threshold_condition=hard_threshold_condition,
            smart_detection_condition=smart_detection_condition
        )
    )

    return detection_config
async create_hook(hook: Union[azure.ai.metricsadvisor.models._models.EmailNotificationHook, azure.ai.metricsadvisor.models._models.WebNotificationHook], **kwargs: Any) → azure.ai.metricsadvisor.models._models.NotificationHook[source]

Create a new email or web hook.

Parameters

hook (Union[EmailNotificationHook, WebNotificationHook]) – An email or web hook to create

Returns

EmailNotificationHook or WebNotificationHook

Return type

Union[NotificationHook, EmailNotificationHook, WebNotificationHook]

Raises

HttpResponseError

Example:

Create a notification hook
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import EmailNotificationHook

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    hook = await 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"
        )
    )

    return hook
async delete_alert_configuration(*alert_configuration_id: str, **kwargs: Any)None[source]

Delete an anomaly alert configuration by its ID.

Parameters

alert_configuration_id (str) – anomaly alert configuration unique id.

Returns

None

Return type

None

Raises

HttpResponseError

Example:

Delete an anomaly alert configuration by its ID
from azure.core.exceptions import ResourceNotFoundError
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    await client.delete_alert_configuration(alert_config_id)

    try:
        await client.get_alert_configuration(alert_config_id)
    except ResourceNotFoundError:
        print("Alert configuration successfully deleted.")
async delete_data_feed(*data_feed_id: str, **kwargs: Any)None[source]

Delete a data feed by its ID.

Parameters

data_feed_id (str) – The data feed unique id.

Returns

None

Return type

None

Raises

HttpResponseError

Example:

Delete a data feed by its ID
from azure.core.exceptions import ResourceNotFoundError
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    await client.delete_data_feed(data_feed_id)

    try:
        await client.get_data_feed(data_feed_id)
    except ResourceNotFoundError:
        print("Data feed successfully deleted.")

async delete_datasource_credential(*credential_id: str, **kwargs: Any)None[source]

Delete a datasource credential by its ID.

::param str credential_id: Datasource credential unique ID. :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError:

Example:

Delete a datasource credential by its ID
from azure.core.exceptions import ResourceNotFoundError
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

await client.delete_datasource_credential(credential_id)
async delete_detection_configuration(*detection_configuration_id: str, **kwargs: Any)None[source]

Delete an anomaly detection configuration by its ID.

Parameters

detection_configuration_id (str) – anomaly detection configuration unique id.

Returns

None

Return type

None

Raises

HttpResponseError

Example:

Delete an anomaly detection configuration by its ID
from azure.core.exceptions import ResourceNotFoundError
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    await client.delete_detection_configuration(detection_config_id)

    try:
        await client.get_detection_configuration(detection_config_id)
    except ResourceNotFoundError:
        print("Detection configuration successfully deleted.")
async delete_hook(*hook_id: str, **kwargs: Any)None[source]

Delete a web or email hook by its ID.

Parameters

hook_id (str) – Hook unique ID.

Returns

None

Return type

None

Raises

HttpResponseError

Example:

Delete a hook by its ID
from azure.core.exceptions import ResourceNotFoundError
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    await client.delete_hook(hook_id)

    try:
        await client.get_hook(hook_id)
    except ResourceNotFoundError:
        print("Hook successfully deleted.")
async get_alert_configuration(alert_configuration_id: str, **kwargs: Any) → azure.ai.metricsadvisor.models._models.AnomalyAlertConfiguration[source]

Get a single anomaly alert configuration.

Parameters

alert_configuration_id (str) – anomaly alert configuration unique id.

Returns

AnomalyAlertConfiguration

Return type

AnomalyAlertConfiguration

Raises

HttpResponseError

Example:

Get a single anomaly alert configuration by its ID
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    config = await client.get_alert_configuration(alert_config_id)

    print("Alert config ID: {}".format(config.id))
    print("Alert config name: {}".format(config.name))
    print("Description: {}".format(config.description))
    print("Ids of hooks associated with alert: {}".format(config.hook_ids))
    print("Use {} operator for multiple alert conditions\n".format(config.cross_metrics_operator))

    print("Alert uses detection configuration ID: {}".format(
        config.metric_alert_configurations[0].detection_configuration_id
    ))
    print("Alert scope type: {}".format(config.metric_alert_configurations[0].alert_scope.scope_type))
    print("Alert severity condition: min- {}, max- {}".format(
        config.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity,
        config.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity,
    ))
    print("\nAlert uses detection configuration ID: {}".format(
        config.metric_alert_configurations[1].detection_configuration_id
    ))
    print("Alert scope type: {}".format(config.metric_alert_configurations[1].alert_scope.scope_type))
    print("Top N: {}".format(config.metric_alert_configurations[1].alert_scope.top_n_group_in_scope.top))
    print("Point count used to look back: {}".format(
        config.metric_alert_configurations[1].alert_scope.top_n_group_in_scope.period
    ))
    print("Min top count: {}".format(
        config.metric_alert_configurations[1].alert_scope.top_n_group_in_scope.min_top_count
    ))
    print("Alert metric boundary condition direction: {}, upper bound: {}".format(
        config.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.direction,
        config.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.upper,
    ))
    print("Alert snooze condition, snooze point count: {}".format(
        config.metric_alert_configurations[1].alert_snooze_condition.auto_snooze,
    ))
    print("Alert snooze scope: {}".format(
        config.metric_alert_configurations[1].alert_snooze_condition.snooze_scope,
    ))
    print("Snooze only for successive anomalies?: {}".format(
        config.metric_alert_configurations[1].alert_snooze_condition.only_for_successive,
    ))
async get_data_feed(data_feed_id: str, **kwargs: Any) → azure.ai.metricsadvisor.models._models.DataFeed[source]

Get a data feed by its id.

Parameters

data_feed_id (str) – The data feed unique id.

Returns

DataFeed

Return type

DataFeed

Raises

HttpResponseError

Example:

Get a data feed by its ID
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    data_feed = await client.get_data_feed(data_feed_id)

    print("ID: {}".format(data_feed.id))
    print("Data feed name: {}".format(data_feed.name))
    print("Created time: {}".format(data_feed.created_time))
    print("Status: {}".format(data_feed.status))
    print("Source type: {}".format(data_feed.source.data_source_type))
    print("Granularity type: {}".format(data_feed.granularity.granularity_type))
    print("Data feed metrics: {}".format([metric.name for metric in data_feed.schema.metrics]))
    print("Data feed dimensions: {}".format([dimension.name for dimension in data_feed.schema.dimensions]))
    print("Data feed timestamp column: {}".format(data_feed.schema.timestamp_column))
    print("Ingestion data starting on: {}".format(data_feed.ingestion_settings.ingestion_begin_time))
    print("Data feed description: {}".format(data_feed.data_feed_description))
    print("Data feed rollup type: {}".format(data_feed.rollup_settings.rollup_type))
    print("Data feed rollup method: {}".format(data_feed.rollup_settings.rollup_method))
    print("Data feed fill setting: {}".format(data_feed.missing_data_point_fill_settings.fill_type))
    print("Data feed access mode: {}".format(data_feed.access_mode))
async get_data_feed_ingestion_progress(data_feed_id: str, **kwargs: Any) → azure.ai.metricsadvisor.models._models.DataFeedIngestionProgress[source]

Get last successful data ingestion job timestamp by data feed.

Parameters

data_feed_id (str) – The data feed unique id.

Returns

DataFeedIngestionProgress, containing latest_success_timestamp and latest_active_timestamp

Return type

DataFeedIngestionProgress

Raises

HttpResponseError

Example:

Get the progress of data feed ingestion
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
data_feed_id = os.getenv("METRICS_ADVISOR_DATA_FEED_ID")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    progress = await client.get_data_feed_ingestion_progress(data_feed_id)

    print("Lastest active timestamp: {}".format(progress.latest_active_timestamp))
    print("Latest successful timestamp: {}".format(progress.latest_success_timestamp))

async get_datasource_credential(credential_id: str, **kwargs: Any) → Union[azure.ai.metricsadvisor.models._models.DatasourceSqlConnectionString, azure.ai.metricsadvisor.models._models.DatasourceDataLakeGen2SharedKey, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipal, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipalInKeyVault][source]

Get a datasource credential

Parameters

credential_id (str) – Datasource credential unique ID.

Returns

The datasource credential

Return type

Union[DatasourceCredential, DatasourceSqlConnectionString, DatasourceDataLakeGen2SharedKey, DatasourceServicePrincipal, DatasourceServicePrincipalInKeyVault]

Raises

HttpResponseError

Example:

Get a datasource credential by its ID
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

credential = await client.get_datasource_credential(credential_id)

print("Credential type: {}".format(credential.credential_type))
print("Credential name: {}".format(credential.name))
print("Description: {}".format(credential.description))

async get_detection_configuration(detection_configuration_id: str, **kwargs: Any) → azure.ai.metricsadvisor.models._models.AnomalyDetectionConfiguration[source]

Get a single anomaly detection configuration.

Parameters

detection_configuration_id (str) – anomaly detection configuration unique id.

Returns

AnomalyDetectionConfiguration

Return type

AnomalyDetectionConfiguration

Raises

HttpResponseError

Example:

Get a single anomaly detection configuration by its ID
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    config = await client.get_detection_configuration(detection_config_id)

    print("Detection config name: {}".format(config.name))
    print("Description: {}".format(config.description))
    print("Metric ID: {}".format(config.metric_id))

    print("\nDetection conditions specified for configuration...")
    print("\nWhole Series Detection Conditions:\n")
    conditions = config.whole_series_detection_condition

    print("Use {} operator for multiple detection conditions".format(conditions.cross_conditions_operator))

    print("Smart Detection Condition:")
    print("- Sensitivity: {}".format(conditions.smart_detection_condition.sensitivity))
    print("- Detection direction: {}".format(conditions.smart_detection_condition.anomaly_detector_direction))
    print("- Suppress conditions: minimum number: {}; minimum ratio: {}".format(
        conditions.smart_detection_condition.suppress_condition.min_number,
        conditions.smart_detection_condition.suppress_condition.min_ratio
    ))

    print("Hard Threshold Condition:")
    print("- Lower bound: {}".format(conditions.hard_threshold_condition.lower_bound))
    print("- Upper bound: {}".format(conditions.hard_threshold_condition.upper_bound))
    print("- Detection direction: {}".format(conditions.smart_detection_condition.anomaly_detector_direction))
    print("- Suppress conditions: minimum number: {}; minimum ratio: {}".format(
        conditions.smart_detection_condition.suppress_condition.min_number,
        conditions.smart_detection_condition.suppress_condition.min_ratio
    ))

    print("Change Threshold Condition:")
    print("- Change percentage: {}".format(conditions.change_threshold_condition.change_percentage))
    print("- Shift point: {}".format(conditions.change_threshold_condition.shift_point))
    print("- Detect anomaly if within range: {}".format(conditions.change_threshold_condition.within_range))
    print("- Detection direction: {}".format(conditions.smart_detection_condition.anomaly_detector_direction))
    print("- Suppress conditions: minimum number: {}; minimum ratio: {}".format(
        conditions.smart_detection_condition.suppress_condition.min_number,
        conditions.smart_detection_condition.suppress_condition.min_ratio
    ))

async get_hook(hook_id: str, **kwargs: Any) → azure.ai.metricsadvisor.models._models.NotificationHook[source]

Get a web or email hook by its id.

Parameters

hook_id (str) – Hook unique ID.

Returns

EmailNotificationHook or WebNotificationHook

Return type

Union[NotificationHook, EmailNotificationHook, WebNotificationHook]

Raises

HttpResponseError

Example:

Get a notification hook by its ID
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))
async with client:
    hook = await client.get_hook(hook_id)

    print("Hook name: {}".format(hook.name))
    print("Description: {}".format(hook.description))
    print("Emails to alert: {}".format(hook.emails_to_alert))
    print("External link: {}".format(hook.external_link))
    print("Admins: {}".format(hook.admin_emails))

list_alert_configurations(detection_configuration_id: str, **kwargs: Any)azure.core.async_paging.AsyncItemPaged[azure.ai.metricsadvisor.models._models.AnomalyAlertConfiguration][source]

Query all anomaly alert configurations for specific anomaly detection configuration.

Parameters

detection_configuration_id (str) – anomaly detection configuration unique id.

Returns

Pageable of AnomalyAlertConfiguration

Return type

AsyncItemPaged[AnomalyAlertConfiguration]

Raises

HttpResponseError

Example:

List all anomaly alert configurations for specific anomaly detection configuration
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    configs = client.list_alert_configurations(detection_configuration_id)
    async for config in configs:
        print("Alert config name: {}".format(config.name))
        print("Alert description: {}".format(config.description))
        print("Ids of hooks associated with alert: {}\n".format(config.hook_ids))

list_data_feed_ingestion_status(data_feed_id: str, start_time: Union[str, datetime.datetime], end_time: Union[str, datetime.datetime], **kwargs: Any)azure.core.async_paging.AsyncItemPaged[azure.ai.metricsadvisor._generated.models._models_py3.IngestionStatus][source]

Get data ingestion status by data feed.

Parameters
  • data_feed_id (str) – The data feed unique id.

  • start_time (Union[str, datetime]) – Required. the start point of time range to query data ingestion status.

  • end_time (Union[str, datetime]) – Required. the end point of time range to query data ingestion status.

Keyword Arguments

skip (int) –

Returns

Pageable of DataFeedIngestionStatus

Return type

AsyncItemPaged[DataFeedIngestionStatus]

Raises

HttpResponseError

Example:

List the data feed ingestion statuses by data feed ID
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
data_feed_id = os.getenv("METRICS_ADVISOR_DATA_FEED_ID")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    ingestion_status = client.list_data_feed_ingestion_status(
        data_feed_id,
        datetime.datetime(2020, 9, 20),
        datetime.datetime(2020, 9, 25)
    )
    async for status in ingestion_status:
        print("Timestamp: {}".format(status.timestamp))
        print("Status: {}".format(status.status))
        print("Message: {}\n".format(status.message))

list_data_feeds(**kwargs: Any)azure.core.async_paging.AsyncItemPaged[azure.ai.metricsadvisor.models._models.DataFeed][source]

List all data feeds.

Keyword Arguments
  • data_feed_name (str) – filter data feed by its name.

  • data_source_type (str or DataSourceType) – filter data feed by its source type.

  • granularity_type (str or DataFeedGranularityType) – filter data feed by its granularity.

  • status (str or DataFeedStatus) – filter data feed by its status.

  • creator (str) – filter data feed by its creator.

  • skip (int) –

Returns

Pageable of DataFeed

Return type

AsyncItemPaged[DataFeed]

Raises

HttpResponseError

Example:

List data feeds under an account.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    data_feeds = client.list_data_feeds()

    async for feed in data_feeds:
        print("Data feed name: {}".format(feed.name))
        print("ID: {}".format(feed.id))
        print("Created time: {}".format(feed.created_time))
        print("Status: {}".format(feed.status))
        print("Source type: {}".format(feed.source.data_source_type))
        print("Granularity type: {}".format(feed.granularity.granularity_type))

        print("\nFeed metrics:")
        for metric in feed.schema.metrics:
            print(metric.name)

        print("\nFeed dimensions:")
        for dimension in feed.schema.dimensions:
            print(dimension.name)

list_datasource_credentials(**kwargs: Any)azure.core.async_paging.AsyncItemPaged[Union[azure.ai.metricsadvisor.models._models.DatasourceSqlConnectionString, azure.ai.metricsadvisor.models._models.DatasourceDataLakeGen2SharedKey, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipal, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipalInKeyVault]][source]

List all datasource credential.

Parameters

skip (int) – for paging, skipped number.

Returns

Pageable containing datasource credentials

Return type

AsyncItemPaged[Union[ DatasourceCredential, DatasourceSqlConnectionString, DatasourceDataLakeGen2SharedKey, DatasourceServicePrincipal, DatasourceServicePrincipalInKeyVault]]

Raises

HttpResponseError

Example:

List all of the datasource credentials under the account
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

credentials = client.list_datasource_credentials()
async for credential in credentials:
    print("Credential type: {}".format(credential.credential_type))
    print("Credential name: {}".format(credential.name))
    print("Description: {}\n".format(credential.description))

list_detection_configurations(metric_id: str, **kwargs: Any)azure.core.async_paging.AsyncItemPaged[azure.ai.metricsadvisor.models._models.AnomalyDetectionConfiguration][source]

Query all anomaly detection configurations for specific metric.

Parameters

metric_id (str) – metric unique id.

Returns

Pageable of AnomalyDetectionConfiguration

Return type

AsyncItemPaged[AnomalyDetectionConfiguration]

Raises

HttpResponseError

Example:

List all anomaly detection configurations for a specific metric
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    configs = client.list_detection_configurations(metric_id=metric_id)
    async for config in configs:
        print("Detection config name: {}".format(config.name))
        print("Description: {}".format(config.description))
        print("Metric ID: {}\n".format(config.metric_id))

list_hooks(**kwargs: Any)azure.core.async_paging.AsyncItemPaged[azure.ai.metricsadvisor.models._models.NotificationHook][source]

List all hooks.

Keyword Arguments
  • hook_name (str) – filter hook by its name.

  • skip (int) –

Returns

Pageable containing EmailNotificationHook and WebNotificationHook

Return type

AsyncItemPaged[Union[NotificationHook, EmailNotificationHook, WebNotificationHook]]

Raises

HttpResponseError

Example:

List all the notification hooks under an account
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    hooks = client.list_hooks()
    async for hook in hooks:
        print("Hook type: {}".format(hook.hook_type))
        print("Hook name: {}".format(hook.name))
        print("Description: {}\n".format(hook.description))

async refresh_data_feed_ingestion(data_feed_id: str, start_time: Union[str, datetime.datetime], end_time: Union[str, datetime.datetime], **kwargs: Any)None[source]

Refreshes data ingestion by data feed to backfill data.

Parameters
  • data_feed_id (str) – The data feed unique id.

  • start_time (Union[str, datetime]) – The start point of time range to refresh data ingestion.

  • end_time (Union[str, datetime]) – The end point of time range to refresh data ingestion.

Returns

None

Return type

None

Raises

HttpResponseError

Example:

Refresh data feed ingestion over a period of time
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
data_feed_id = os.getenv("METRICS_ADVISOR_DATA_FEED_ID")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

async with client:
    await client.refresh_data_feed_ingestion(
        data_feed_id,
        datetime.datetime(2020, 9, 20),
        datetime.datetime(2020, 9, 25)
    )

async update_alert_configuration(alert_configuration: Union[str, azure.ai.metricsadvisor.models._models.AnomalyAlertConfiguration], **kwargs: Any) → azure.ai.metricsadvisor.models._models.AnomalyAlertConfiguration[source]

Update anomaly alerting configuration. Either pass the entire AnomalyAlertConfiguration object with the chosen updates or the ID to your alert configuration with updates passed via keyword arguments. If you pass both the AnomalyAlertConfiguration object and keyword arguments, the keyword arguments will take precedence.

Parameters

alert_configuration (str or AnomalyAlertConfiguration) – AnomalyAlertConfiguration object or the ID to the alert configuration.

Keyword Arguments
  • name (str) – Name for the anomaly alert configuration.

  • metric_alert_configurations (list[MetricAlertConfiguration]) – Anomaly alert configurations.

  • hook_ids (list[str]) – Unique hook IDs.

  • cross_metrics_operator (str or MetricAnomalyAlertConfigurationsOperator) – Cross metrics operator should be specified when setting up multiple metric alert configurations. Possible values include: “AND”, “OR”, “XOR”.

  • description (str) – Anomaly alert configuration description.

Return type

AnomalyAlertConfiguration

Raises

HttpResponseError

Example:

Update an existing anomaly alert configuration
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
    MetricAlertConfiguration,
    MetricAnomalyAlertScope,
    MetricAnomalyAlertConditions,
    MetricBoundaryCondition
)
service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")
detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

alert_config.name = "updated config name"
additional_alert = MetricAlertConfiguration(
    detection_configuration_id=detection_configuration_id,
    alert_scope=MetricAnomalyAlertScope(
        scope_type="SeriesGroup",
        series_group_in_scope={'city': 'Shenzhen'}
    ),
    alert_conditions=MetricAnomalyAlertConditions(
        metric_boundary_condition=MetricBoundaryCondition(
            direction="Down",
            lower=5
        )
    )
)
alert_config.metric_alert_configurations.append(additional_alert)

async with client:
    updated = await client.update_alert_configuration(
        alert_config,
        cross_metrics_operator="OR",
        description="updated alert config"
    )
    print("Updated alert name: {}".format(updated.name))
    print("Updated alert description: {}".format(updated.description))
    print("Updated cross metrics operator: {}".format(updated.cross_metrics_operator))
    print("Updated alert condition configuration scope type: {}".format(
        updated.metric_alert_configurations[2].alert_scope.scope_type
    ))

async update_data_feed(data_feed: Union[str, azure.ai.metricsadvisor.models._models.DataFeed], **kwargs: Any) → azure.ai.metricsadvisor.models._models.DataFeed[source]

Update a data feed. Either pass the entire DataFeed object with the chosen updates or the ID to your data feed with updates passed via keyword arguments. If you pass both the DataFeed object and keyword arguments, the keyword arguments will take precedence.

Parameters

data_feed (DataFeed or str) – The data feed with updates or the data feed ID.

Keyword Arguments
Return type

DataFeed

Raises

HttpResponseError

Example:

Update an existing data feed
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

# update data feed on the data feed itself or by using available keyword arguments
data_feed.name = "updated name"
data_feed.data_feed_description = "updated description for data feed"

async with client:
    updated = await client.update_data_feed(
        data_feed,
        access_mode="Public",
        fill_type="CustomValue",
        custom_fill_value=1
    )
    print("Updated name: {}".format(updated.name))
    print("Updated description: {}".format(updated.data_feed_description))
    print("Updated access mode: {}".format(updated.access_mode))
    print("Updated fill setting, value: {}, {}".format(
        updated.missing_data_point_fill_settings.fill_type,
        updated.missing_data_point_fill_settings.custom_fill_value,
    ))
async update_datasource_credential(datasource_credential: Union[azure.ai.metricsadvisor.models._models.DatasourceSqlConnectionString, azure.ai.metricsadvisor.models._models.DatasourceDataLakeGen2SharedKey, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipal, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipalInKeyVault], **kwargs: Any) → Union[azure.ai.metricsadvisor.models._models.DatasourceSqlConnectionString, azure.ai.metricsadvisor.models._models.DatasourceDataLakeGen2SharedKey, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipal, azure.ai.metricsadvisor.models._models.DatasourceServicePrincipalInKeyVault][source]

Update a credential entity.

Parameters

datasource_credential (Union[DatasourceSqlConnectionString, DatasourceDataLakeGen2SharedKey, DatasourceServicePrincipal, DatasourceServicePrincipalInKeyVault]) – The new datasource credential object

Return type

Union[DatasourceSqlConnectionString, DatasourceDataLakeGen2SharedKey, DatasourceServicePrincipal, DatasourceServicePrincipalInKeyVault]

Raises

HttpResponseError

Example:

Update an existing datasource credential
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

datasource_credential.description = "updated description"

updated = await client.update_datasource_credential(datasource_credential)
print("Credential type: {}".format(updated.credential_type))
print("Credential name: {}".format(updated.name))
print("Description: {}\n".format(updated.description))
async update_detection_configuration(detection_configuration: Union[str, azure.ai.metricsadvisor.models._models.AnomalyDetectionConfiguration], **kwargs: Any) → azure.ai.metricsadvisor.models._models.AnomalyDetectionConfiguration[source]

Update anomaly metric detection configuration. Either pass the entire AnomalyDetectionConfiguration object with the chosen updates or the ID to your detection configuration with updates passed via keyword arguments. If you pass both the AnomalyDetectionConfiguration object and keyword arguments, the keyword arguments will take precedence.

Parameters

detection_configuration (str or AnomalyDetectionConfiguration) – AnomalyDetectionConfiguration object or the ID to the detection configuration.

Keyword Arguments
Returns

AnomalyDetectionConfiguration

Return type

AnomalyDetectionConfiguration

Raises

HttpResponseError

Example:

Update an existing anomaly detection configuration
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
    MetricSeriesGroupDetectionCondition,
    MetricSingleSeriesDetectionCondition,
    SmartDetectionCondition,
    SuppressCondition
)

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

detection_config.name = "updated config name"
detection_config.description = "updated with more detection conditions"
smart_detection_condition = SmartDetectionCondition(
    anomaly_detector_direction="Up",
    sensitivity=10,
    suppress_condition=SuppressCondition(
        min_number=2,
        min_ratio=2
    )
)

async with client:
    updated = await client.update_detection_configuration(
        detection_config,
        series_group_detection_conditions=[
            MetricSeriesGroupDetectionCondition(
                series_group_key={"city": "Seoul"},
                smart_detection_condition=smart_detection_condition
            )
        ],
        series_detection_conditions=[
            MetricSingleSeriesDetectionCondition(
                series_key={"city": "Osaka", "category": "Cell Phones"},
                smart_detection_condition=smart_detection_condition
            )
        ]
    )
    print("Updated detection name: {}".format(updated.name))
    print("Updated detection description: {}".format(updated.description))
    print("Updated detection condition for series group: {}".format(
        updated.series_group_detection_conditions[0].series_group_key
    ))
    print("Updated detection condition for series: {}".format(
        updated.series_detection_conditions[0].series_key
    ))

async update_hook(hook: Union[str, azure.ai.metricsadvisor.models._models.EmailNotificationHook, azure.ai.metricsadvisor.models._models.WebNotificationHook], **kwargs: Any) → azure.ai.metricsadvisor.models._models.NotificationHook[source]

Update a hook. Either pass the entire EmailNotificationHook or WebNotificationHook object with the chosen updates, or the ID to your hook configuration with the updates passed via keyword arguments. If you pass both the hook object and keyword arguments, the keyword arguments will take precedence.

Parameters

hook (Union[str, EmailNotificationHook, WebNotificationHook]) – An email or web hook or the ID to the hook. If an ID is passed, you must pass hook_type.

Keyword Arguments
  • hook_type (str) – The hook type. Possible values are “Email” or “Web”. Must be passed if only the hook ID is provided.

  • name (str) – Hook unique name.

  • description (str) – Hook description.

  • external_link (str) – Hook external link.

  • emails_to_alert (list[str]) – Email TO: list. Only should be passed to update EmailNotificationHook.

  • endpoint (str) – API address, will be called when alert is triggered, only support POST method via SSL. Only should be passed to update WebNotificationHook.

  • username (str) – basic authentication. Only should be passed to update WebNotificationHook.

  • password (str) – basic authentication. Only should be passed to update WebNotificationHook.

  • certificate_key (str) – client certificate. Only should be passed to update WebNotificationHook.

  • certificate_password (str) – client certificate password. Only should be passed to update WebNotificationHook.

Return type

Union[NotificationHook, EmailNotificationHook, WebNotificationHook]

Raises

HttpResponseError

Example:

Update an existing notification hook
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential
from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient

service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT")
subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY")
api_key = os.getenv("METRICS_ADVISOR_API_KEY")

client = MetricsAdvisorAdministrationClient(service_endpoint,
                              MetricsAdvisorKeyCredential(subscription_key, api_key))

hook.name = "updated hook name"
hook.description = "updated hook description"

async with client:
    updated = await client.update_hook(
        hook,
        emails_to_alert=["newemail@alertme.com"]
    )
    print("Updated name: {}".format(updated.name))
    print("Updated description: {}".format(updated.description))
    print("Updated emails: {}".format(updated.emails_to_alert))