azure.ai.metricsadvisor package

class azure.ai.metricsadvisor.MetricsAdvisorClient(endpoint: str, credential: azure.ai.metricsadvisor._metrics_advisor_key_credential.MetricsAdvisorKeyCredential, **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) – An instance of ~azure.ai.metricsadvisor.MetricsAdvisorKeyCredential. Requires both subscription key and API key.

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.

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, 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")
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")
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")
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)
client.add_feedback(period_feedback)
close()None[source]

Close the MetricsAdvisorClient session.

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, 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 = client.get_feedback(feedback_id=feedback_id)
print("Type: {}; Id: {}".format(result.feedback_type, result.id))
list_alerts_for_alert_configuration(alert_configuration_id: str, start_time: datetime.datetime, end_time: datetime.datetime, time_mode: Union[str, TimeMode], **kwargs: Any) → ItemPaged[Alert][source]

Query alerts under anomaly alert configuration.

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

  • start_time (datetime) – start time.

  • end_time (datetime) – end time.

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

Keyword Arguments

skip (int) –

Returns

Alerts under anomaly alert configuration.

Return type

ItemPaged[Alert]

Raises

HttpResponseError

Example:

Query anomaly detection results.
import datetime
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, 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))

results = client.list_alerts_for_alert_configuration(
    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 on: {}".format(result.created_on))
return results

list_anomalies_for_alert(alert_configuration_id: str, alert_id: str, **kwargs: Any) → ItemPaged[Anomaly][source]

Query anomalies under a specific alert.

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

  • alert_id (str) – alert id.

Keyword Arguments

skip (int) –

Returns

Anomalies under a specific alert.

Return type

ItemPaged[Anomaly]

Raises

HttpResponseError

Example:

Query anomalies using alert id.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, 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))

results = client.list_anomalies_for_alert(
        alert_configuration_id=alert_config_id,
        alert_id=alert_id,
    )
for result in results:
    print("Create on: {}".format(result.created_on))
    print("Severity: {}".format(result.severity))
    print("Status: {}".format(result.status))

list_anomalies_for_detection_configuration(detection_configuration_id: str, start_time: datetime.datetime, end_time: datetime.datetime, **kwargs: Any) → ItemPaged[Anomaly][source]

Query anomalies under anomaly detection configuration.

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

  • start_time (datetime) – start time filter under chosen time mode.

  • end_time (datetime) – end time filter under chosen time mode.

Keyword Arguments
Returns

Anomalies under anomaly detection configuration.

Return type

ItemPaged[Anomaly]

Raises

HttpResponseError

list_dimension_values_for_detection_configuration(detection_configuration_id: str, dimension_name: str, start_time: datetime.datetime, end_time: datetime.datetime, **kwargs: Any) → ItemPaged[str][source]

Query dimension values of anomalies.

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

  • dimension_name (str) – dimension to query.

  • start_time (datetime) – start time filter under chosen time mode.

  • end_time (datetime) – end time filter under chosen time mode.

Keyword Arguments
  • skip (int) –

  • dimension_name (str) – The dimension name to query.

Returns

Dimension values of anomalies.

Return type

ItemPaged[str]

Raises

HttpResponseError

list_feedbacks(metric_id: str, **kwargs: Any) → ItemPaged[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”.

  • start_time (datetime) – start time filter under chosen time mode.

  • end_time (datetime) – 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

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

Raises

HttpResponseError

Example:

List feedback on the given metric.
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, 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_feedbacks(metric_id=metric_id)
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) → ItemPaged[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

ItemPaged[IncidentRootCause]

Raises

HttpResponseError

list_incidents_for_alert(alert_configuration_id: str, alert_id: str, **kwargs: Any) → ItemPaged[Incident][source]

Query incidents under a specific alert.

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

  • alert_id (str) – alert id.

Keyword Arguments

skip (int) –

Returns

Incidents under a specific alert.

Return type

ItemPaged[Incident]

Raises

HttpResponseError

list_incidents_for_detection_configuration(detection_configuration_id: str, start_time: datetime.datetime, end_time: datetime.datetime, **kwargs: Any) → ItemPaged[Incident][source]

Query incidents under a specific alert.

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

  • start_time (datetime) – start time filter under chosen time mode.

  • end_time (datetime) – end time filter under chosen time mode.

Keyword Arguments

filter (DetectionIncidentFilterCondition) –

Returns

Incidents under a specific alert.

Return type

ItemPaged[Incident]

Raises

HttpResponseError

list_metric_dimension_values(metric_id: str, dimension_name: str, **kwargs: Any) → ItemPaged[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

ItemPaged[str]

Raises

HttpResponseError

list_metric_enriched_series_data(detection_configuration_id: str, series: Union[List[SeriesIdentity], List[Dict[str, str]]], start_time: datetime.datetime, end_time: datetime.datetime, **kwargs: Any) → ItemPaged[SeriesResult][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.

  • start_time (datetime) – start time filter under chosen time mode.

  • end_time (datetime) – end time filter under chosen time mode.

Returns

Pageable of SeriesResult

Return type

ItemPaged[SeriesResult]

Raises

HttpResponseError

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

Query anomaly detection status.

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

  • start_time (datetime) – start time filter under chosen time mode.

  • end_time (datetime) – end time filter under chosen time mode.

Keyword Arguments

skip (int) –

Returns

Anomaly detection status.

Return type

ItemPaged[EnrichmentStatus]

Raises

HttpResponseError

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

List series (dimension combinations) from metric.

Parameters
  • metric_id (str) – metric unique id.

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

Keyword Arguments
  • skip (int) –

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

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

Returns

Series (dimension combinations) from metric.

Return type

ItemPaged[MetricSeriesDefinition]

Raises

HttpResponseError

list_metrics_series_data(metric_id: str, start_time: datetime.datetime, end_time: datetime.datetime, series_to_filter: List[Dict[str, str]], **kwargs: Any) → ItemPaged[MetricSeriesData][source]

Get time series data from metric.

Parameters
  • metric_id (str) – metric unique id.

  • start_time (datetime) – start time filter under chosen time mode.

  • end_time (datetime) – 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

ItemPaged[MetricSeriesData]

Raises

HttpResponseError

class azure.ai.metricsadvisor.MetricsAdvisorAdministrationClient(endpoint: str, credential: MetricsAdvisorKeyCredential, **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) – An instance of ~azure.ai.metricsadvisor.MetricsAdvisorKeyCredential. Requires both subscription key and API key.

Example:

Authenticate MetricsAdvisorAdministrationClient with a MetricsAdvisorKeyCredential
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))
close()None[source]

Close the MetricsAdvisorAdministrationClient session.

create_anomaly_alert_configuration(name: str, metric_alert_configurations: List[MetricAlertConfiguration], hook_ids: List[str], **kwargs: Any) → 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, 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")
anomaly_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))

alert_config = client.create_anomaly_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
create_data_feed(name: str, source: DataFeedSourceUnion, granularity: Union[str, DataFeedGranularityType, DataFeedGranularity], schema: Union[List[str], DataFeedSchema], ingestion_settings: Union[datetime.datetime, DataFeedIngestionSettings], **kwargs: Any) → DataFeed[source]

Create a new data feed.

Parameters
Keyword Arguments

options (DataFeedOptions) – Data feed options.

Returns

DataFeed

Return type

DataFeed

Raises

HttpResponseError

Example:

Create a data feed
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import (
    SQLServerDataFeed,
    DataFeedSchema,
    Metric,
    Dimension,
    DataFeedOptions,
    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))

data_feed = client.create_data_feed(
    name="My data feed",
    source=SQLServerDataFeed(
        connection_string=sql_server_connection_string,
        query=query,
    ),
    granularity="Daily",
    schema=DataFeedSchema(
        metrics=[
            Metric(name="cost", display_name="Cost"),
            Metric(name="revenue", display_name="Revenue")
        ],
        dimensions=[
            Dimension(name="category", display_name="Category"),
            Dimension(name="city", display_name="City")
        ],
        timestamp_column="Timestamp"
    ),
    ingestion_settings=datetime.datetime(2019, 10, 1),
    options=DataFeedOptions(
        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

create_hook(name: str, hook: Union[EmailHook, WebHook], **kwargs: Any) → Union[Hook, EmailHook, WebHook][source]

Create a new email or web hook.

Parameters
  • name (str) – The name for the hook.

  • hook (Union[EmailHook, WebHook]) – An email or web hook

Returns

EmailHook or WebHook

Return type

Union[Hook, EmailHook, WebHook]

Raises

HttpResponseError

Example:

Create a hook
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient
from azure.ai.metricsadvisor.models import EmailHook

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 = client.create_hook(
    name="email hook",
    hook=EmailHook(
        description="my email hook",
        emails_to_alert=["alertme@alertme.com"],
        external_link="https://adwiki.azurewebsites.net/articles/howto/alerts/create-hooks.html"
    )
)

return hook
create_metric_anomaly_detection_configuration(name: str, metric_id: str, whole_series_detection_condition: MetricDetectionCondition, **kwargs: Any) → 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, 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
    )
)

detection_config = client.create_metric_anomaly_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
delete_anomaly_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, 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))

client.delete_anomaly_alert_configuration(alert_config_id)

try:
    client.get_anomaly_alert_configuration(alert_config_id)
except ResourceNotFoundError:
    print("Alert configuration successfully deleted.")
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, 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))

client.delete_data_feed(data_feed_id)

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

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, 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))

client.delete_hook(hook_id)

try:
    client.get_hook(hook_id)
except ResourceNotFoundError:
    print("Hook successfully deleted.")
delete_metric_anomaly_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, 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))

client.delete_metric_anomaly_detection_configuration(detection_config_id)

try:
    client.get_metric_anomaly_detection_configuration(detection_config_id)
except ResourceNotFoundError:
    print("Detection configuration successfully deleted.")
get_anomaly_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, 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))

config = client.get_anomaly_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,
))
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 single data feed 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))

data_feed = 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.options.data_feed_description))
print("Data feed rollup type: {}".format(data_feed.options.rollup_settings.rollup_type))
print("Data feed rollup method: {}".format(data_feed.options.rollup_settings.rollup_method))
print("Data feed fill setting: {}".format(data_feed.options.missing_data_point_fill_settings.fill_type))
print("Data feed access mode: {}".format(data_feed.options.access_mode))
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, 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))

progress = 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))

get_hook(hook_id: str, **kwargs: Any) → Union[Hook, EmailHook, WebHook][source]

Get a web or email hook by its id.

Parameters

hook_id (str) – Hook unique ID.

Returns

EmailHook or Webhook

Return type

Union[Hook, EmailHook, WebHook]

Raises

HttpResponseError

Example:

Get a hook 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))

hook = 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.admins))

get_metric_anomaly_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, 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))

config = client.get_metric_anomaly_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
))

list_anomaly_alert_configurations(detection_configuration_id: str, **kwargs: Any) → ItemPaged[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

ItemPaged[AnomalyAlertConfiguration]

Raises

HttpResponseError

Example:

List all anomaly alert configurations for specific anomaly detection configuration
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")
anomaly_detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID")

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

configs = client.list_anomaly_alert_configurations(anomaly_detection_configuration_id)
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: datetime.datetime, end_time: datetime.datetime, **kwargs: Any) → ItemPaged[DataFeedIngestionStatus][source]

Get data ingestion status by data feed.

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

  • start_time (datetime) – Required. the start point of time range to query data ingestion status.

  • end_time (datetime) – Required. the end point of time range to query data ingestion status.

Keyword Arguments

skip (int) –

Returns

Pageable of DataFeedIngestionStatus

Return type

ItemPaged[DataFeedIngestionStatus]

Raises

HttpResponseError

Example:

List the data feed ingestion statuses by data feed ID
import datetime
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")
data_feed_id = os.getenv("METRICS_ADVISOR_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))

list_data_feeds(**kwargs: Any) → ItemPaged[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

ItemPaged[DataFeed]

Raises

HttpResponseError

Example:

List data feeds under an 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))

data_feeds = client.list_data_feeds()

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_hooks(**kwargs: Any) → ItemPaged[Union[Hook, EmailHook, WebHook]][source]

List all hooks.

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

  • skip (int) –

Returns

Pageable containing EmailHook and WebHook

Return type

ItemPaged[Union[Hook, EmailHook, WebHook]]

Raises

HttpResponseError

Example:

List all of the hooks 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))

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

list_metric_anomaly_detection_configurations(metric_id: str, **kwargs: Any) → ItemPaged[AnomalyDetectionConfiguration][source]

Query all anomaly detection configurations for specific metric.

Parameters

metric_id (str) – metric unique id.

Returns

Pageable of AnomalyDetectionConfiguration

Return type

ItemPaged[AnomalyDetectionConfiguration]

Raises

HttpResponseError

Example:

List all anomaly detection configurations for a specific metric
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")
metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID")

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

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

refresh_data_feed_ingestion(data_feed_id: str, start_time: datetime.datetime, end_time: 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 (datetime) – The start point of time range to refresh data ingestion.

  • end_time (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, 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))

client.refresh_data_feed_ingestion(
    data_feed_id,
    datetime.datetime(2020, 9, 20),
    datetime.datetime(2020, 9, 25)
)

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

Returns

AnomalyAlertConfiguration

Return type

AnomalyAlertConfiguration

Raises

HttpResponseError

Example:

Update an existing anomaly alert configuration
from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, 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")
anomaly_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=anomaly_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)

updated = client.update_anomaly_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
))

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
  • name (str) – The name to update the data feed.

  • timestamp_column (str) – User-defined timestamp column name.

  • ingestion_begin_time (datetime) – Ingestion start time.

  • data_source_request_concurrency (int) – The max concurrency of data ingestion queries against user data source. Zero (0) means no limitation.

  • ingestion_retry_delay (int) – The min retry interval for failed data ingestion tasks, in seconds.

  • ingestion_start_offset (int) – The time that the beginning of data ingestion task will delay for every data slice according to this offset, in seconds.

  • stop_retry_after (int) – Stop retry data ingestion after the data slice first schedule time in seconds.

  • rollup_identification_value (str) – The identification value for the row of calculated all-up value.

  • rollup_type (str or DataFeedRollupType) – Mark if the data feed needs rollup. Possible values include: “NoRollup”, “AutoRollup”, “AlreadyRollup”. Default value: “AutoRollup”.

  • auto_rollup_group_by_column_names (list[str]) – Roll up columns.

  • rollup_method (str or DataFeedAutoRollupMethod) – Roll up method. Possible values include: “None”, “Sum”, “Max”, “Min”, “Avg”, “Count”.

  • fill_type (str or DataSourceMissingDataPointFillType) – The type of fill missing point for anomaly detection. Possible values include: “SmartFilling”, “PreviousValue”, “CustomValue”, “NoFilling”. Default value: “SmartFilling”.

  • custom_fill_value (float) – The value of fill missing point for anomaly detection if “CustomValue” fill type is specified.

  • admins (list[str]) – Data feed administrators.

  • data_feed_description (str) – Data feed description.

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

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

  • status (str or DataFeedStatus) – Data feed status. Possible values include: “Active”, “Paused”.

  • source (Union[AzureApplicationInsightsDataFeed, AzureBlobDataFeed, AzureCosmosDBDataFeed, AzureDataExplorerDataFeed, AzureDataLakeStorageGen2DataFeed, AzureTableDataFeed, HttpRequestDataFeed, InfluxDBDataFeed, MySqlDataFeed, PostgreSqlDataFeed, SQLServerDataFeed, MongoDBDataFeed, ElasticsearchDataFeed]) – The source of the data feed for update

Returns

DataFeed

Return type

DataFeed

Raises

HttpResponseError

Example:

Update an existing data feed
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))

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

updated_data_feed = client.update_data_feed(
    data_feed,
    access_mode="Public",
    fill_type="CustomValue",
    custom_fill_value=1
)

print("Updated name: {}".format(updated_data_feed.name))
print("Updated description: {}".format(updated_data_feed.options.data_feed_description))
print("Updated access mode: {}".format(updated_data_feed.options.access_mode))
print("Updated fill setting, value: {}, {}".format(
    updated_data_feed.options.missing_data_point_fill_settings.fill_type,
    updated_data_feed.options.missing_data_point_fill_settings.custom_fill_value,
))
update_hook(hook: Union[str, EmailHook, WebHook], **kwargs: Any) → Union[Hook, EmailHook, WebHook][source]

Update a hook. Either pass the entire EmailHook or WebHook 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, EmailHook, WebHook]) – 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 EmailHook.

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

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

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

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

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

Returns

EmailHook or WebHook

Return type

Union[Hook, EmailHook, WebHook]

Raises

HttpResponseError

Example:

Update an existing hook
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))

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

updated = 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))
update_metric_anomaly_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, 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
    )
)

updated = client.update_metric_anomaly_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
))

class azure.ai.metricsadvisor.MetricsAdvisorKeyCredential(subscription_key: str, api_key: str)[source]

Credential type used for authenticating to an Azure Metrics Advisor service.

Parameters
  • subscription_key (str) – The subscription key

  • api_key (str) – The api key

Raises

TypeError