azure.ai.metricsadvisor package

class azure.ai.metricsadvisor.MetricsAdvisorClient(endpoint: str, 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 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.

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(alert_configuration_id: str, start_time: datetime.datetime, end_time: datetime.datetime, time_mode: Union[str, AlertQueryTimeMode], **kwargs: Any) → ItemPaged[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

ItemPaged[AnomalyAlert]

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(
    alert_configuration_id=alert_config_id,
    start_time=datetime.datetime(2020, 1, 1),
    end_time=datetime.datetime(2020, 9, 9),
    time_mode="AnomalyTime",
)

tolist = []
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) → ItemPaged[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) → ItemPaged[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

ItemPaged[str]

Raises

HttpResponseError

Example:

Query dimension values.
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")
detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID")
dimension_name = "city"

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

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),
)
for result in results:
    print(str(result))

list_feedback(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”.

  • 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

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_feedback(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

Example:

Query incident root causes.
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")
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))
results = client.list_incident_root_causes(
    detection_configuration_id=detection_configuration_id,
    incident_id=incident_id,
)
for result in results:
    print("Score: {}".format(result.score))
    print("Description: {}".format(result.description))

list_incidents(**kwargs: Any) → ItemPaged[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 or detection configuration.

Return type

AsyncItemPaged[AnomalyIncident]

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

Example:

Query metric dimension values.
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")
dimension_name = "city"

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

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

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

ItemPaged[MetricEnrichedSeriesData]

Raises

HttpResponseError

Example:

Query metric enriched series data.
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")
detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID")
series_identity = {"city": "Los Angeles"}

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

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]
)
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) → ItemPaged[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

ItemPaged[EnrichmentStatus]

Raises

HttpResponseError

Example:

Query metric enrichment status.
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")
metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID")

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

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

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

ItemPaged[MetricSeriesDefinition]

Raises

HttpResponseError

Example:

Query metric series definitions.
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")
metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID")

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

results = client.list_metric_series_definitions(
        metric_id=metric_id,
        active_since=datetime.datetime(2020, 1, 1),
    )
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) → ItemPaged[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

ItemPaged[MetricSeriesData]

Raises

HttpResponseError

Example:

Query metrics series data.
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")
metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID")

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

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"}
        ]
    )
for result in results:
    print(str(result))

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 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 Metrics Advisor service, such as a credential from azure.identity

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_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")
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_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
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
  • 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, 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))

data_feed = client.create_data_feed(
    name="My data feed",
    source=SqlServerDataFeedSource(
        connection_string=sql_server_connection_string,
        query=query,
    ),
    granularity="Daily",
    schema=DataFeedSchema(
        metrics=[
            DataFeedMetric(name="cost", display_name="Cost"),
            DataFeedMetric(name="revenue", display_name="Revenue")
        ],
        dimensions=[
            DataFeedDimension(name="category", display_name="Category"),
            DataFeedDimension(name="city", display_name="City")
        ],
        timestamp_column="Timestamp"
    ),
    ingestion_settings=datetime.datetime(2019, 10, 1),
    data_feed_description="cost/revenue data feed",
    rollup_settings=DataFeedRollupSettings(
        rollup_type="AutoRollup",
        rollup_method="Sum",
        rollup_identification_value="__CUSTOM_SUM__"
    ),
    missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings(
        fill_type="SmartFilling"
    ),
    access_mode="Private"
)

return data_feed

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

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

return credential
create_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_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
create_hook(hook: Union[EmailNotificationHook, WebNotificationHook], **kwargs: Any) → Union[NotificationHook, EmailNotificationHook, WebNotificationHook][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, 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))

hook = client.create_hook(
    hook=EmailNotificationHook(
        name="email hook",
        description="my email hook",
        emails_to_alert=["alertme@alertme.com"],
        external_link="https://docs.microsoft.com/en-us/azure/cognitive-services/metrics-advisor/how-tos/alerts"
    )
)

return hook
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, 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_alert_configuration(alert_config_id)

try:
    client.get_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_datasource_credential(*credential_id: str, **kwargs: Any)None[source]

Delete a datasource credential by its ID.

Parameters

credential_id (str) – Datasource credential unique ID.

Returns

None

Return type

None

Raises

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

client.delete_datasource_credential(credential_id)
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, 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_detection_configuration(detection_config_id)

try:
    client.get_detection_configuration(detection_config_id)
except ResourceNotFoundError:
    print("Detection configuration 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.")
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, 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_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.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))
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_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) – Data source credential entity 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 = client.get_datasource_credential(credential_id)

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

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

get_hook(hook_id: str, **kwargs: Any) → Union[NotificationHook, EmailNotificationHook, WebNotificationHook][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, 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.admin_emails))

list_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")
detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID")

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

configs = client.list_alert_configurations(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: Union[str, datetime.datetime], end_time: Union[str, 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 (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

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_datasource_credentials(**kwargs: Any) → ItemPaged[DatasourceCredential][source]

List all credential entities.

Parameters

skip (int) – for paging, skipped number.

Returns

Pageable containing datasource credential

Return type

ItemPaged[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()
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) → 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_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))

list_hooks(**kwargs: Any) → ItemPaged[Union[NotificationHook, EmailNotificationHook, WebNotificationHook]][source]

List all hooks.

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

  • skip (int) –

Returns

Pageable containing EmailNotificationHook and WebNotificationHook

Return type

ItemPaged[Union[NotificationHook, EmailNotificationHook, WebNotificationHook]]

Raises

HttpResponseError

Example:

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

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

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

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

updated = 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,
))
update_datasource_credential(datasource_credential: azure.ai.metricsadvisor.models._models.DatasourceCredential, **kwargs: Any) → azure.ai.metricsadvisor.models._models.DatasourceCredential[source]

Update a datasource credential.

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

update_hook(hook: Union[str, EmailNotificationHook, WebNotificationHook], **kwargs: Any) → Union[NotificationHook, EmailNotificationHook, WebNotificationHook][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, 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"

client.update_hook(
    hook,
    emails_to_alert=["newemail@alertme.com"]
)
updated = client.get_hook(hook.id)
print("Updated name: {}".format(updated.name))
print("Updated description: {}".format(updated.description))
print("Updated emails: {}".format(updated.emails_to_alert))
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

update_key(**kwargs: Any)None[source]

Update the subscription key or the api key.

This can be used when you’ve regenerated your service keys and want to update long-lived clients.

Keyword Arguments
  • subscription_key (str) – The subscription key

  • api_key (str) – The api key

Raises

ValueError or TypeError

property api_key

The value of the api key.

Return type

str

property subscription_key

The value of the subscription key.

Return type

str

Subpackages