# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = [
    'AlarmCompositeExpressionArgs',
    'AlarmCompositeExpressionArgsDict',
    'AlarmCompositeExpressionExpressionListArgs',
    'AlarmCompositeExpressionExpressionListArgsDict',
    'AlarmEscalationsCriticalArgs',
    'AlarmEscalationsCriticalArgsDict',
    'AlarmEscalationsInfoArgs',
    'AlarmEscalationsInfoArgsDict',
    'AlarmEscalationsWarnArgs',
    'AlarmEscalationsWarnArgsDict',
    'AlarmPrometheusArgs',
    'AlarmPrometheusArgsDict',
    'AlarmTargetArgs',
    'AlarmTargetArgsDict',
    'DynamicTagGroupMatchExpressArgs',
    'DynamicTagGroupMatchExpressArgsDict',
    'EventRuleContactParameterArgs',
    'EventRuleContactParameterArgsDict',
    'EventRuleEventPatternArgs',
    'EventRuleEventPatternArgsDict',
    'EventRuleFcParameterArgs',
    'EventRuleFcParameterArgsDict',
    'EventRuleMnsParameterArgs',
    'EventRuleMnsParameterArgsDict',
    'EventRuleOpenApiParameterArgs',
    'EventRuleOpenApiParameterArgsDict',
    'EventRuleSlsParameterArgs',
    'EventRuleSlsParameterArgsDict',
    'EventRuleWebhookParameterArgs',
    'EventRuleWebhookParameterArgsDict',
    'GroupMetricRuleEscalationsArgs',
    'GroupMetricRuleEscalationsArgsDict',
    'GroupMetricRuleEscalationsCriticalArgs',
    'GroupMetricRuleEscalationsCriticalArgsDict',
    'GroupMetricRuleEscalationsInfoArgs',
    'GroupMetricRuleEscalationsInfoArgsDict',
    'GroupMetricRuleEscalationsWarnArgs',
    'GroupMetricRuleEscalationsWarnArgsDict',
    'GroupMetricRuleTargetArgs',
    'GroupMetricRuleTargetArgsDict',
    'HybridMonitorSlsTaskAttachLabelArgs',
    'HybridMonitorSlsTaskAttachLabelArgsDict',
    'HybridMonitorSlsTaskSlsProcessConfigArgs',
    'HybridMonitorSlsTaskSlsProcessConfigArgsDict',
    'HybridMonitorSlsTaskSlsProcessConfigExpressArgs',
    'HybridMonitorSlsTaskSlsProcessConfigExpressArgsDict',
    'HybridMonitorSlsTaskSlsProcessConfigFilterArgs',
    'HybridMonitorSlsTaskSlsProcessConfigFilterArgsDict',
    'HybridMonitorSlsTaskSlsProcessConfigFilterFilterArgs',
    'HybridMonitorSlsTaskSlsProcessConfigFilterFilterArgsDict',
    'HybridMonitorSlsTaskSlsProcessConfigGroupByArgs',
    'HybridMonitorSlsTaskSlsProcessConfigGroupByArgsDict',
    'HybridMonitorSlsTaskSlsProcessConfigStatisticArgs',
    'HybridMonitorSlsTaskSlsProcessConfigStatisticArgsDict',
    'MetricRuleBlackListMetricArgs',
    'MetricRuleBlackListMetricArgsDict',
    'MetricRuleTemplateAlertTemplateArgs',
    'MetricRuleTemplateAlertTemplateArgsDict',
    'MetricRuleTemplateAlertTemplateEscalationsArgs',
    'MetricRuleTemplateAlertTemplateEscalationsArgsDict',
    'MetricRuleTemplateAlertTemplateEscalationsCriticalArgs',
    'MetricRuleTemplateAlertTemplateEscalationsCriticalArgsDict',
    'MetricRuleTemplateAlertTemplateEscalationsInfoArgs',
    'MetricRuleTemplateAlertTemplateEscalationsInfoArgsDict',
    'MetricRuleTemplateAlertTemplateEscalationsWarnArgs',
    'MetricRuleTemplateAlertTemplateEscalationsWarnArgsDict',
    'MonitorGroupInstancesInstanceArgs',
    'MonitorGroupInstancesInstanceArgsDict',
    'SiteMonitorIspCityArgs',
    'SiteMonitorIspCityArgsDict',
    'SlsGroupSlsGroupConfigArgs',
    'SlsGroupSlsGroupConfigArgsDict',
]

MYPY = False

if not MYPY:
    class AlarmCompositeExpressionArgsDict(TypedDict):
        expression_list_join: NotRequired[pulumi.Input[str]]
        """
        The relationship between the trigger conditions for multiple metrics. Valid values: `&&`, `||`.
        """
        expression_lists: NotRequired[pulumi.Input[Sequence[pulumi.Input['AlarmCompositeExpressionExpressionListArgsDict']]]]
        """
        The trigger conditions that are created in standard mode. See `expression_list` below.
        """
        expression_raw: NotRequired[pulumi.Input[str]]
        """
        The trigger conditions that are created by using expressions.
        """
        level: NotRequired[pulumi.Input[str]]
        """
        The level of the alert. Valid values: `CRITICAL`, `WARN`, `INFO`.
        """
        times: NotRequired[pulumi.Input[int]]
        """
        The number of consecutive triggers.
        """
elif False:
    AlarmCompositeExpressionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class AlarmCompositeExpressionArgs:
    def __init__(__self__, *,
                 expression_list_join: Optional[pulumi.Input[str]] = None,
                 expression_lists: Optional[pulumi.Input[Sequence[pulumi.Input['AlarmCompositeExpressionExpressionListArgs']]]] = None,
                 expression_raw: Optional[pulumi.Input[str]] = None,
                 level: Optional[pulumi.Input[str]] = None,
                 times: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[str] expression_list_join: The relationship between the trigger conditions for multiple metrics. Valid values: `&&`, `||`.
        :param pulumi.Input[Sequence[pulumi.Input['AlarmCompositeExpressionExpressionListArgs']]] expression_lists: The trigger conditions that are created in standard mode. See `expression_list` below.
        :param pulumi.Input[str] expression_raw: The trigger conditions that are created by using expressions.
        :param pulumi.Input[str] level: The level of the alert. Valid values: `CRITICAL`, `WARN`, `INFO`.
        :param pulumi.Input[int] times: The number of consecutive triggers.
        """
        if expression_list_join is not None:
            pulumi.set(__self__, "expression_list_join", expression_list_join)
        if expression_lists is not None:
            pulumi.set(__self__, "expression_lists", expression_lists)
        if expression_raw is not None:
            pulumi.set(__self__, "expression_raw", expression_raw)
        if level is not None:
            pulumi.set(__self__, "level", level)
        if times is not None:
            pulumi.set(__self__, "times", times)

    @property
    @pulumi.getter(name="expressionListJoin")
    def expression_list_join(self) -> Optional[pulumi.Input[str]]:
        """
        The relationship between the trigger conditions for multiple metrics. Valid values: `&&`, `||`.
        """
        return pulumi.get(self, "expression_list_join")

    @expression_list_join.setter
    def expression_list_join(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "expression_list_join", value)

    @property
    @pulumi.getter(name="expressionLists")
    def expression_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AlarmCompositeExpressionExpressionListArgs']]]]:
        """
        The trigger conditions that are created in standard mode. See `expression_list` below.
        """
        return pulumi.get(self, "expression_lists")

    @expression_lists.setter
    def expression_lists(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['AlarmCompositeExpressionExpressionListArgs']]]]):
        pulumi.set(self, "expression_lists", value)

    @property
    @pulumi.getter(name="expressionRaw")
    def expression_raw(self) -> Optional[pulumi.Input[str]]:
        """
        The trigger conditions that are created by using expressions.
        """
        return pulumi.get(self, "expression_raw")

    @expression_raw.setter
    def expression_raw(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "expression_raw", value)

    @property
    @pulumi.getter
    def level(self) -> Optional[pulumi.Input[str]]:
        """
        The level of the alert. Valid values: `CRITICAL`, `WARN`, `INFO`.
        """
        return pulumi.get(self, "level")

    @level.setter
    def level(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "level", value)

    @property
    @pulumi.getter
    def times(self) -> Optional[pulumi.Input[int]]:
        """
        The number of consecutive triggers.
        """
        return pulumi.get(self, "times")

    @times.setter
    def times(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "times", value)


if not MYPY:
    class AlarmCompositeExpressionExpressionListArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[str]]
        metric_name: NotRequired[pulumi.Input[str]]
        """
        The metric that is used to monitor the cloud service.
        """
        period: NotRequired[pulumi.Input[str]]
        """
        The statistical period of the metric. Unit: seconds. Default value: `300`.
        """
        statistics: NotRequired[pulumi.Input[str]]
        """
        Field `statistics` has been removed from provider version 1.216.0. New field `escalations_critical.statistics` instead.
        """
        threshold: NotRequired[pulumi.Input[str]]
        """
        Field `threshold` has been removed from provider version 1.216.0. New field `escalations_critical.threshold` instead.
        """
elif False:
    AlarmCompositeExpressionExpressionListArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class AlarmCompositeExpressionExpressionListArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[str]] = None,
                 metric_name: Optional[pulumi.Input[str]] = None,
                 period: Optional[pulumi.Input[str]] = None,
                 statistics: Optional[pulumi.Input[str]] = None,
                 threshold: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] metric_name: The metric that is used to monitor the cloud service.
        :param pulumi.Input[str] period: The statistical period of the metric. Unit: seconds. Default value: `300`.
        :param pulumi.Input[str] statistics: Field `statistics` has been removed from provider version 1.216.0. New field `escalations_critical.statistics` instead.
        :param pulumi.Input[str] threshold: Field `threshold` has been removed from provider version 1.216.0. New field `escalations_critical.threshold` instead.
        """
        if comparison_operator is not None:
            pulumi.set(__self__, "comparison_operator", comparison_operator)
        if metric_name is not None:
            pulumi.set(__self__, "metric_name", metric_name)
        if period is not None:
            pulumi.set(__self__, "period", period)
        if statistics is not None:
            pulumi.set(__self__, "statistics", statistics)
        if threshold is not None:
            pulumi.set(__self__, "threshold", threshold)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "comparison_operator")

    @comparison_operator.setter
    def comparison_operator(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comparison_operator", value)

    @property
    @pulumi.getter(name="metricName")
    def metric_name(self) -> Optional[pulumi.Input[str]]:
        """
        The metric that is used to monitor the cloud service.
        """
        return pulumi.get(self, "metric_name")

    @metric_name.setter
    def metric_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "metric_name", value)

    @property
    @pulumi.getter
    def period(self) -> Optional[pulumi.Input[str]]:
        """
        The statistical period of the metric. Unit: seconds. Default value: `300`.
        """
        return pulumi.get(self, "period")

    @period.setter
    def period(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "period", value)

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[str]]:
        """
        Field `statistics` has been removed from provider version 1.216.0. New field `escalations_critical.statistics` instead.
        """
        return pulumi.get(self, "statistics")

    @statistics.setter
    def statistics(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "statistics", value)

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[str]]:
        """
        Field `threshold` has been removed from provider version 1.216.0. New field `escalations_critical.threshold` instead.
        """
        return pulumi.get(self, "threshold")

    @threshold.setter
    def threshold(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "threshold", value)


if not MYPY:
    class AlarmEscalationsCriticalArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[str]]
        """
        Critical level alarm comparison operator. Default value: `>`. Valid values: `>`, `>=`, `<`, `<=`, `!=`, `==`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`. **NOTE:** From version 1.231.0, `comparison_operator` can be set to `==`.
        """
        statistics: NotRequired[pulumi.Input[str]]
        """
        Critical level alarm statistics method. It must be consistent with that defined for metrics. For more information, see [How to use it](https://cms.console.aliyun.com/metric-meta/acs_ecs_dashboard/ecs).
        """
        threshold: NotRequired[pulumi.Input[str]]
        """
        Critical level alarm threshold value, which must be a numeric value currently.
        """
        times: NotRequired[pulumi.Input[int]]
        """
        Critical level alarm retry times. Default value: `3`.
        """
elif False:
    AlarmEscalationsCriticalArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class AlarmEscalationsCriticalArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[str]] = None,
                 statistics: Optional[pulumi.Input[str]] = None,
                 threshold: Optional[pulumi.Input[str]] = None,
                 times: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[str] comparison_operator: Critical level alarm comparison operator. Default value: `>`. Valid values: `>`, `>=`, `<`, `<=`, `!=`, `==`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`. **NOTE:** From version 1.231.0, `comparison_operator` can be set to `==`.
        :param pulumi.Input[str] statistics: Critical level alarm statistics method. It must be consistent with that defined for metrics. For more information, see [How to use it](https://cms.console.aliyun.com/metric-meta/acs_ecs_dashboard/ecs).
        :param pulumi.Input[str] threshold: Critical level alarm threshold value, which must be a numeric value currently.
        :param pulumi.Input[int] times: Critical level alarm retry times. Default value: `3`.
        """
        if comparison_operator is not None:
            pulumi.set(__self__, "comparison_operator", comparison_operator)
        if statistics is not None:
            pulumi.set(__self__, "statistics", statistics)
        if threshold is not None:
            pulumi.set(__self__, "threshold", threshold)
        if times is not None:
            pulumi.set(__self__, "times", times)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> Optional[pulumi.Input[str]]:
        """
        Critical level alarm comparison operator. Default value: `>`. Valid values: `>`, `>=`, `<`, `<=`, `!=`, `==`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`. **NOTE:** From version 1.231.0, `comparison_operator` can be set to `==`.
        """
        return pulumi.get(self, "comparison_operator")

    @comparison_operator.setter
    def comparison_operator(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comparison_operator", value)

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[str]]:
        """
        Critical level alarm statistics method. It must be consistent with that defined for metrics. For more information, see [How to use it](https://cms.console.aliyun.com/metric-meta/acs_ecs_dashboard/ecs).
        """
        return pulumi.get(self, "statistics")

    @statistics.setter
    def statistics(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "statistics", value)

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[str]]:
        """
        Critical level alarm threshold value, which must be a numeric value currently.
        """
        return pulumi.get(self, "threshold")

    @threshold.setter
    def threshold(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "threshold", value)

    @property
    @pulumi.getter
    def times(self) -> Optional[pulumi.Input[int]]:
        """
        Critical level alarm retry times. Default value: `3`.
        """
        return pulumi.get(self, "times")

    @times.setter
    def times(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "times", value)


if not MYPY:
    class AlarmEscalationsInfoArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[str]]
        """
        Info level alarm comparison operator. Default value: `>`. Valid values: `>`, `>=`, `<`, `<=`, `!=`, `==`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`. **NOTE:** From version 1.231.0, `comparison_operator` can be set to `==`.
        """
        statistics: NotRequired[pulumi.Input[str]]
        """
        Info level alarm statistics method. It must be consistent with that defined for metrics. For more information, see [How to use it](https://cms.console.aliyun.com/metric-meta/acs_ecs_dashboard/ecs).
        """
        threshold: NotRequired[pulumi.Input[str]]
        """
        Info level alarm threshold value, which must be a numeric value currently.
        """
        times: NotRequired[pulumi.Input[int]]
        """
        Info level alarm retry times. Default value: `3`.
        """
elif False:
    AlarmEscalationsInfoArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class AlarmEscalationsInfoArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[str]] = None,
                 statistics: Optional[pulumi.Input[str]] = None,
                 threshold: Optional[pulumi.Input[str]] = None,
                 times: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[str] comparison_operator: Info level alarm comparison operator. Default value: `>`. Valid values: `>`, `>=`, `<`, `<=`, `!=`, `==`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`. **NOTE:** From version 1.231.0, `comparison_operator` can be set to `==`.
        :param pulumi.Input[str] statistics: Info level alarm statistics method. It must be consistent with that defined for metrics. For more information, see [How to use it](https://cms.console.aliyun.com/metric-meta/acs_ecs_dashboard/ecs).
        :param pulumi.Input[str] threshold: Info level alarm threshold value, which must be a numeric value currently.
        :param pulumi.Input[int] times: Info level alarm retry times. Default value: `3`.
        """
        if comparison_operator is not None:
            pulumi.set(__self__, "comparison_operator", comparison_operator)
        if statistics is not None:
            pulumi.set(__self__, "statistics", statistics)
        if threshold is not None:
            pulumi.set(__self__, "threshold", threshold)
        if times is not None:
            pulumi.set(__self__, "times", times)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> Optional[pulumi.Input[str]]:
        """
        Info level alarm comparison operator. Default value: `>`. Valid values: `>`, `>=`, `<`, `<=`, `!=`, `==`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`. **NOTE:** From version 1.231.0, `comparison_operator` can be set to `==`.
        """
        return pulumi.get(self, "comparison_operator")

    @comparison_operator.setter
    def comparison_operator(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comparison_operator", value)

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[str]]:
        """
        Info level alarm statistics method. It must be consistent with that defined for metrics. For more information, see [How to use it](https://cms.console.aliyun.com/metric-meta/acs_ecs_dashboard/ecs).
        """
        return pulumi.get(self, "statistics")

    @statistics.setter
    def statistics(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "statistics", value)

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[str]]:
        """
        Info level alarm threshold value, which must be a numeric value currently.
        """
        return pulumi.get(self, "threshold")

    @threshold.setter
    def threshold(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "threshold", value)

    @property
    @pulumi.getter
    def times(self) -> Optional[pulumi.Input[int]]:
        """
        Info level alarm retry times. Default value: `3`.
        """
        return pulumi.get(self, "times")

    @times.setter
    def times(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "times", value)


if not MYPY:
    class AlarmEscalationsWarnArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[str]]
        """
        Warn level alarm comparison operator. Default value: `>`. Valid values: `>`, `>=`, `<`, `<=`, `!=`, `==`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`. **NOTE:** From version 1.231.0, `comparison_operator` can be set to `==`.
        """
        statistics: NotRequired[pulumi.Input[str]]
        """
        Warn level alarm statistics method. It must be consistent with that defined for metrics. For more information, see [How to use it](https://cms.console.aliyun.com/metric-meta/acs_ecs_dashboard/ecs).
        """
        threshold: NotRequired[pulumi.Input[str]]
        """
        Warn level alarm threshold value, which must be a numeric value currently.
        """
        times: NotRequired[pulumi.Input[int]]
        """
        Warn level alarm retry times. Default value: `3`.
        """
elif False:
    AlarmEscalationsWarnArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class AlarmEscalationsWarnArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[str]] = None,
                 statistics: Optional[pulumi.Input[str]] = None,
                 threshold: Optional[pulumi.Input[str]] = None,
                 times: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[str] comparison_operator: Warn level alarm comparison operator. Default value: `>`. Valid values: `>`, `>=`, `<`, `<=`, `!=`, `==`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`. **NOTE:** From version 1.231.0, `comparison_operator` can be set to `==`.
        :param pulumi.Input[str] statistics: Warn level alarm statistics method. It must be consistent with that defined for metrics. For more information, see [How to use it](https://cms.console.aliyun.com/metric-meta/acs_ecs_dashboard/ecs).
        :param pulumi.Input[str] threshold: Warn level alarm threshold value, which must be a numeric value currently.
        :param pulumi.Input[int] times: Warn level alarm retry times. Default value: `3`.
        """
        if comparison_operator is not None:
            pulumi.set(__self__, "comparison_operator", comparison_operator)
        if statistics is not None:
            pulumi.set(__self__, "statistics", statistics)
        if threshold is not None:
            pulumi.set(__self__, "threshold", threshold)
        if times is not None:
            pulumi.set(__self__, "times", times)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> Optional[pulumi.Input[str]]:
        """
        Warn level alarm comparison operator. Default value: `>`. Valid values: `>`, `>=`, `<`, `<=`, `!=`, `==`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`. **NOTE:** From version 1.231.0, `comparison_operator` can be set to `==`.
        """
        return pulumi.get(self, "comparison_operator")

    @comparison_operator.setter
    def comparison_operator(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comparison_operator", value)

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[str]]:
        """
        Warn level alarm statistics method. It must be consistent with that defined for metrics. For more information, see [How to use it](https://cms.console.aliyun.com/metric-meta/acs_ecs_dashboard/ecs).
        """
        return pulumi.get(self, "statistics")

    @statistics.setter
    def statistics(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "statistics", value)

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[str]]:
        """
        Warn level alarm threshold value, which must be a numeric value currently.
        """
        return pulumi.get(self, "threshold")

    @threshold.setter
    def threshold(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "threshold", value)

    @property
    @pulumi.getter
    def times(self) -> Optional[pulumi.Input[int]]:
        """
        Warn level alarm retry times. Default value: `3`.
        """
        return pulumi.get(self, "times")

    @times.setter
    def times(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "times", value)


if not MYPY:
    class AlarmPrometheusArgsDict(TypedDict):
        annotations: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]]
        """
        The annotations of the Prometheus alert rule. When a Prometheus alert is triggered, the system renders the annotated keys and values to help you understand the metrics and alert rule.
        """
        level: NotRequired[pulumi.Input[str]]
        """
        The level of the alert. Valid values: `Critical`, `Warn`, `Info`.
        """
        prom_ql: NotRequired[pulumi.Input[str]]
        """
        The PromQL query statement. **Note:** The data obtained by using the PromQL query statement is the monitoring data. You must include the alert threshold in this statement.
        """
        times: NotRequired[pulumi.Input[int]]
        """
        The number of consecutive triggers. If the number of times that the metric values meet the trigger conditions reaches the value of this parameter, CloudMonitor sends alert notifications.
        """
elif False:
    AlarmPrometheusArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class AlarmPrometheusArgs:
    def __init__(__self__, *,
                 annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 level: Optional[pulumi.Input[str]] = None,
                 prom_ql: Optional[pulumi.Input[str]] = None,
                 times: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: The annotations of the Prometheus alert rule. When a Prometheus alert is triggered, the system renders the annotated keys and values to help you understand the metrics and alert rule.
        :param pulumi.Input[str] level: The level of the alert. Valid values: `Critical`, `Warn`, `Info`.
        :param pulumi.Input[str] prom_ql: The PromQL query statement. **Note:** The data obtained by using the PromQL query statement is the monitoring data. You must include the alert threshold in this statement.
        :param pulumi.Input[int] times: The number of consecutive triggers. If the number of times that the metric values meet the trigger conditions reaches the value of this parameter, CloudMonitor sends alert notifications.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if level is not None:
            pulumi.set(__self__, "level", level)
        if prom_ql is not None:
            pulumi.set(__self__, "prom_ql", prom_ql)
        if times is not None:
            pulumi.set(__self__, "times", times)

    @property
    @pulumi.getter
    def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        The annotations of the Prometheus alert rule. When a Prometheus alert is triggered, the system renders the annotated keys and values to help you understand the metrics and alert rule.
        """
        return pulumi.get(self, "annotations")

    @annotations.setter
    def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
        pulumi.set(self, "annotations", value)

    @property
    @pulumi.getter
    def level(self) -> Optional[pulumi.Input[str]]:
        """
        The level of the alert. Valid values: `Critical`, `Warn`, `Info`.
        """
        return pulumi.get(self, "level")

    @level.setter
    def level(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "level", value)

    @property
    @pulumi.getter(name="promQl")
    def prom_ql(self) -> Optional[pulumi.Input[str]]:
        """
        The PromQL query statement. **Note:** The data obtained by using the PromQL query statement is the monitoring data. You must include the alert threshold in this statement.
        """
        return pulumi.get(self, "prom_ql")

    @prom_ql.setter
    def prom_ql(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "prom_ql", value)

    @property
    @pulumi.getter
    def times(self) -> Optional[pulumi.Input[int]]:
        """
        The number of consecutive triggers. If the number of times that the metric values meet the trigger conditions reaches the value of this parameter, CloudMonitor sends alert notifications.
        """
        return pulumi.get(self, "times")

    @times.setter
    def times(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "times", value)


if not MYPY:
    class AlarmTargetArgsDict(TypedDict):
        arn: NotRequired[pulumi.Input[str]]
        """
        ARN uniquely identifies the resource that the alert targets.
        > **NOTE:** The targets attribute is used to specify where notifications or actions should be directed when an alarm condition is met. This attribute corresponds to what is referred to as the "Push Channel" in the Alibaba Cloud console.
        > **NOTE:** Currently, the Alibaba Cloud Resource Name (ARN) of the resource. To use, please [submit an application](https://www.alibabacloud.com/help/en/cloudmonitor/latest/describemetricruletargets).
        """
        json_params: NotRequired[pulumi.Input[str]]
        """
        Specifies additional parameters for the alert callback in JSON format. This can include configuration settings specific to the alert action.
        """
        level: NotRequired[pulumi.Input[str]]
        """
        The level of the alert. Valid values: `Critical`, `Warn`, `Info`.
        """
        target_id: NotRequired[pulumi.Input[str]]
        """
        The ID of the resource for which alerts are triggered. This is typically used to specify individual resources that should respond to the alert.
        """
elif False:
    AlarmTargetArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class AlarmTargetArgs:
    def __init__(__self__, *,
                 arn: Optional[pulumi.Input[str]] = None,
                 json_params: Optional[pulumi.Input[str]] = None,
                 level: Optional[pulumi.Input[str]] = None,
                 target_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] arn: ARN uniquely identifies the resource that the alert targets.
               > **NOTE:** The targets attribute is used to specify where notifications or actions should be directed when an alarm condition is met. This attribute corresponds to what is referred to as the "Push Channel" in the Alibaba Cloud console.
               > **NOTE:** Currently, the Alibaba Cloud Resource Name (ARN) of the resource. To use, please [submit an application](https://www.alibabacloud.com/help/en/cloudmonitor/latest/describemetricruletargets).
        :param pulumi.Input[str] json_params: Specifies additional parameters for the alert callback in JSON format. This can include configuration settings specific to the alert action.
        :param pulumi.Input[str] level: The level of the alert. Valid values: `Critical`, `Warn`, `Info`.
        :param pulumi.Input[str] target_id: The ID of the resource for which alerts are triggered. This is typically used to specify individual resources that should respond to the alert.
        """
        if arn is not None:
            pulumi.set(__self__, "arn", arn)
        if json_params is not None:
            pulumi.set(__self__, "json_params", json_params)
        if level is not None:
            pulumi.set(__self__, "level", level)
        if target_id is not None:
            pulumi.set(__self__, "target_id", target_id)

    @property
    @pulumi.getter
    def arn(self) -> Optional[pulumi.Input[str]]:
        """
        ARN uniquely identifies the resource that the alert targets.
        > **NOTE:** The targets attribute is used to specify where notifications or actions should be directed when an alarm condition is met. This attribute corresponds to what is referred to as the "Push Channel" in the Alibaba Cloud console.
        > **NOTE:** Currently, the Alibaba Cloud Resource Name (ARN) of the resource. To use, please [submit an application](https://www.alibabacloud.com/help/en/cloudmonitor/latest/describemetricruletargets).
        """
        return pulumi.get(self, "arn")

    @arn.setter
    def arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "arn", value)

    @property
    @pulumi.getter(name="jsonParams")
    def json_params(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies additional parameters for the alert callback in JSON format. This can include configuration settings specific to the alert action.
        """
        return pulumi.get(self, "json_params")

    @json_params.setter
    def json_params(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "json_params", value)

    @property
    @pulumi.getter
    def level(self) -> Optional[pulumi.Input[str]]:
        """
        The level of the alert. Valid values: `Critical`, `Warn`, `Info`.
        """
        return pulumi.get(self, "level")

    @level.setter
    def level(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "level", value)

    @property
    @pulumi.getter(name="targetId")
    def target_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the resource for which alerts are triggered. This is typically used to specify individual resources that should respond to the alert.
        """
        return pulumi.get(self, "target_id")

    @target_id.setter
    def target_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "target_id", value)


if not MYPY:
    class DynamicTagGroupMatchExpressArgsDict(TypedDict):
        tag_value: pulumi.Input[str]
        """
        The tag values of the cloud resources.
        """
        tag_value_match_function: pulumi.Input[str]
        """
        The method that is used to match the tag values of the cloud resources. Valid values: `all`, `startWith`, `endWith`, `contains`, `notContains`, `equals`.
        """
elif False:
    DynamicTagGroupMatchExpressArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DynamicTagGroupMatchExpressArgs:
    def __init__(__self__, *,
                 tag_value: pulumi.Input[str],
                 tag_value_match_function: pulumi.Input[str]):
        """
        :param pulumi.Input[str] tag_value: The tag values of the cloud resources.
        :param pulumi.Input[str] tag_value_match_function: The method that is used to match the tag values of the cloud resources. Valid values: `all`, `startWith`, `endWith`, `contains`, `notContains`, `equals`.
        """
        pulumi.set(__self__, "tag_value", tag_value)
        pulumi.set(__self__, "tag_value_match_function", tag_value_match_function)

    @property
    @pulumi.getter(name="tagValue")
    def tag_value(self) -> pulumi.Input[str]:
        """
        The tag values of the cloud resources.
        """
        return pulumi.get(self, "tag_value")

    @tag_value.setter
    def tag_value(self, value: pulumi.Input[str]):
        pulumi.set(self, "tag_value", value)

    @property
    @pulumi.getter(name="tagValueMatchFunction")
    def tag_value_match_function(self) -> pulumi.Input[str]:
        """
        The method that is used to match the tag values of the cloud resources. Valid values: `all`, `startWith`, `endWith`, `contains`, `notContains`, `equals`.
        """
        return pulumi.get(self, "tag_value_match_function")

    @tag_value_match_function.setter
    def tag_value_match_function(self, value: pulumi.Input[str]):
        pulumi.set(self, "tag_value_match_function", value)


if not MYPY:
    class EventRuleContactParameterArgsDict(TypedDict):
        contact_group_name: NotRequired[pulumi.Input[str]]
        """
        The name of the alert contact group.
        """
        contact_parameters_id: NotRequired[pulumi.Input[str]]
        """
        The ID of the recipient that receives alert notifications.
        """
        level: NotRequired[pulumi.Input[str]]
        """
        The alert level and the corresponding notification methods.
        """
elif False:
    EventRuleContactParameterArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EventRuleContactParameterArgs:
    def __init__(__self__, *,
                 contact_group_name: Optional[pulumi.Input[str]] = None,
                 contact_parameters_id: Optional[pulumi.Input[str]] = None,
                 level: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] contact_group_name: The name of the alert contact group.
        :param pulumi.Input[str] contact_parameters_id: The ID of the recipient that receives alert notifications.
        :param pulumi.Input[str] level: The alert level and the corresponding notification methods.
        """
        if contact_group_name is not None:
            pulumi.set(__self__, "contact_group_name", contact_group_name)
        if contact_parameters_id is not None:
            pulumi.set(__self__, "contact_parameters_id", contact_parameters_id)
        if level is not None:
            pulumi.set(__self__, "level", level)

    @property
    @pulumi.getter(name="contactGroupName")
    def contact_group_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the alert contact group.
        """
        return pulumi.get(self, "contact_group_name")

    @contact_group_name.setter
    def contact_group_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "contact_group_name", value)

    @property
    @pulumi.getter(name="contactParametersId")
    def contact_parameters_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the recipient that receives alert notifications.
        """
        return pulumi.get(self, "contact_parameters_id")

    @contact_parameters_id.setter
    def contact_parameters_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "contact_parameters_id", value)

    @property
    @pulumi.getter
    def level(self) -> Optional[pulumi.Input[str]]:
        """
        The alert level and the corresponding notification methods.
        """
        return pulumi.get(self, "level")

    @level.setter
    def level(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "level", value)


if not MYPY:
    class EventRuleEventPatternArgsDict(TypedDict):
        product: pulumi.Input[str]
        """
        The type of the cloud service.
        """
        event_type_lists: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        The type of the event-triggered alert rule. Valid values:
        - `StatusNotification`: fault notifications.
        - `Exception`: exceptions.
        - `Maintenance`: O&M.
        - `*`: all types.
        """
        level_lists: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        The level of the event-triggered alert rule. Valid values:
        - `CRITICAL`: critical.
        - `WARN`: warning.
        - `INFO`: information.
        - `*`: all types.
        """
        name_lists: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
        """
        The name of the event-triggered alert rule.
        """
        sql_filter: NotRequired[pulumi.Input[str]]
        """
        The SQL condition that is used to filter events. If the content of an event meets the specified SQL condition, an alert is automatically triggered.
        """
elif False:
    EventRuleEventPatternArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EventRuleEventPatternArgs:
    def __init__(__self__, *,
                 product: pulumi.Input[str],
                 event_type_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 level_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 name_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 sql_filter: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] product: The type of the cloud service.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] event_type_lists: The type of the event-triggered alert rule. Valid values:
               - `StatusNotification`: fault notifications.
               - `Exception`: exceptions.
               - `Maintenance`: O&M.
               - `*`: all types.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] level_lists: The level of the event-triggered alert rule. Valid values:
               - `CRITICAL`: critical.
               - `WARN`: warning.
               - `INFO`: information.
               - `*`: all types.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] name_lists: The name of the event-triggered alert rule.
        :param pulumi.Input[str] sql_filter: The SQL condition that is used to filter events. If the content of an event meets the specified SQL condition, an alert is automatically triggered.
        """
        pulumi.set(__self__, "product", product)
        if event_type_lists is not None:
            pulumi.set(__self__, "event_type_lists", event_type_lists)
        if level_lists is not None:
            pulumi.set(__self__, "level_lists", level_lists)
        if name_lists is not None:
            pulumi.set(__self__, "name_lists", name_lists)
        if sql_filter is not None:
            pulumi.set(__self__, "sql_filter", sql_filter)

    @property
    @pulumi.getter
    def product(self) -> pulumi.Input[str]:
        """
        The type of the cloud service.
        """
        return pulumi.get(self, "product")

    @product.setter
    def product(self, value: pulumi.Input[str]):
        pulumi.set(self, "product", value)

    @property
    @pulumi.getter(name="eventTypeLists")
    def event_type_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        The type of the event-triggered alert rule. Valid values:
        - `StatusNotification`: fault notifications.
        - `Exception`: exceptions.
        - `Maintenance`: O&M.
        - `*`: all types.
        """
        return pulumi.get(self, "event_type_lists")

    @event_type_lists.setter
    def event_type_lists(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "event_type_lists", value)

    @property
    @pulumi.getter(name="levelLists")
    def level_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        The level of the event-triggered alert rule. Valid values:
        - `CRITICAL`: critical.
        - `WARN`: warning.
        - `INFO`: information.
        - `*`: all types.
        """
        return pulumi.get(self, "level_lists")

    @level_lists.setter
    def level_lists(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "level_lists", value)

    @property
    @pulumi.getter(name="nameLists")
    def name_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        The name of the event-triggered alert rule.
        """
        return pulumi.get(self, "name_lists")

    @name_lists.setter
    def name_lists(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "name_lists", value)

    @property
    @pulumi.getter(name="sqlFilter")
    def sql_filter(self) -> Optional[pulumi.Input[str]]:
        """
        The SQL condition that is used to filter events. If the content of an event meets the specified SQL condition, an alert is automatically triggered.
        """
        return pulumi.get(self, "sql_filter")

    @sql_filter.setter
    def sql_filter(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "sql_filter", value)


if not MYPY:
    class EventRuleFcParameterArgsDict(TypedDict):
        arn: NotRequired[pulumi.Input[str]]
        """
        (Available since v1.211.1) The ARN of the API operation.
        """
        fc_parameters_id: NotRequired[pulumi.Input[str]]
        """
        The ID of the recipient that receives alert notifications.
        """
        function_name: NotRequired[pulumi.Input[str]]
        """
        The name of the function.
        """
        region: NotRequired[pulumi.Input[str]]
        """
        The region where Function Compute is deployed.
        """
        service_name: NotRequired[pulumi.Input[str]]
        """
        The name of the Function Compute service.
        """
elif False:
    EventRuleFcParameterArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EventRuleFcParameterArgs:
    def __init__(__self__, *,
                 arn: Optional[pulumi.Input[str]] = None,
                 fc_parameters_id: Optional[pulumi.Input[str]] = None,
                 function_name: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None,
                 service_name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] arn: (Available since v1.211.1) The ARN of the API operation.
        :param pulumi.Input[str] fc_parameters_id: The ID of the recipient that receives alert notifications.
        :param pulumi.Input[str] function_name: The name of the function.
        :param pulumi.Input[str] region: The region where Function Compute is deployed.
        :param pulumi.Input[str] service_name: The name of the Function Compute service.
        """
        if arn is not None:
            pulumi.set(__self__, "arn", arn)
        if fc_parameters_id is not None:
            pulumi.set(__self__, "fc_parameters_id", fc_parameters_id)
        if function_name is not None:
            pulumi.set(__self__, "function_name", function_name)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if service_name is not None:
            pulumi.set(__self__, "service_name", service_name)

    @property
    @pulumi.getter
    def arn(self) -> Optional[pulumi.Input[str]]:
        """
        (Available since v1.211.1) The ARN of the API operation.
        """
        return pulumi.get(self, "arn")

    @arn.setter
    def arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "arn", value)

    @property
    @pulumi.getter(name="fcParametersId")
    def fc_parameters_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the recipient that receives alert notifications.
        """
        return pulumi.get(self, "fc_parameters_id")

    @fc_parameters_id.setter
    def fc_parameters_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "fc_parameters_id", value)

    @property
    @pulumi.getter(name="functionName")
    def function_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the function.
        """
        return pulumi.get(self, "function_name")

    @function_name.setter
    def function_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "function_name", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        """
        The region where Function Compute is deployed.
        """
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)

    @property
    @pulumi.getter(name="serviceName")
    def service_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the Function Compute service.
        """
        return pulumi.get(self, "service_name")

    @service_name.setter
    def service_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "service_name", value)


if not MYPY:
    class EventRuleMnsParameterArgsDict(TypedDict):
        arn: NotRequired[pulumi.Input[str]]
        """
        (Available since v1.211.1) The ARN of the API operation.
        """
        mns_parameters_id: NotRequired[pulumi.Input[str]]
        """
        The ID of the recipient that receives alert notifications.
        """
        queue: NotRequired[pulumi.Input[str]]
        """
        The name of the MNS queue.
        """
        region: NotRequired[pulumi.Input[str]]
        """
        The region where Message Service (MNS) is deployed.
        """
        topic: NotRequired[pulumi.Input[str]]
        """
        The MNS topic.
        """
elif False:
    EventRuleMnsParameterArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EventRuleMnsParameterArgs:
    def __init__(__self__, *,
                 arn: Optional[pulumi.Input[str]] = None,
                 mns_parameters_id: Optional[pulumi.Input[str]] = None,
                 queue: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None,
                 topic: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] arn: (Available since v1.211.1) The ARN of the API operation.
        :param pulumi.Input[str] mns_parameters_id: The ID of the recipient that receives alert notifications.
        :param pulumi.Input[str] queue: The name of the MNS queue.
        :param pulumi.Input[str] region: The region where Message Service (MNS) is deployed.
        :param pulumi.Input[str] topic: The MNS topic.
        """
        if arn is not None:
            pulumi.set(__self__, "arn", arn)
        if mns_parameters_id is not None:
            pulumi.set(__self__, "mns_parameters_id", mns_parameters_id)
        if queue is not None:
            pulumi.set(__self__, "queue", queue)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if topic is not None:
            pulumi.set(__self__, "topic", topic)

    @property
    @pulumi.getter
    def arn(self) -> Optional[pulumi.Input[str]]:
        """
        (Available since v1.211.1) The ARN of the API operation.
        """
        return pulumi.get(self, "arn")

    @arn.setter
    def arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "arn", value)

    @property
    @pulumi.getter(name="mnsParametersId")
    def mns_parameters_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the recipient that receives alert notifications.
        """
        return pulumi.get(self, "mns_parameters_id")

    @mns_parameters_id.setter
    def mns_parameters_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "mns_parameters_id", value)

    @property
    @pulumi.getter
    def queue(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the MNS queue.
        """
        return pulumi.get(self, "queue")

    @queue.setter
    def queue(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "queue", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        """
        The region where Message Service (MNS) is deployed.
        """
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)

    @property
    @pulumi.getter
    def topic(self) -> Optional[pulumi.Input[str]]:
        """
        The MNS topic.
        """
        return pulumi.get(self, "topic")

    @topic.setter
    def topic(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "topic", value)


if not MYPY:
    class EventRuleOpenApiParameterArgsDict(TypedDict):
        action: NotRequired[pulumi.Input[str]]
        """
        The API name.
        """
        arn: NotRequired[pulumi.Input[str]]
        """
        (Available since v1.211.1) The ARN of the API operation.
        """
        open_api_parameters_id: NotRequired[pulumi.Input[str]]
        """
        The ID of the recipient that receives alert notifications sent by an API callback.
        """
        product: NotRequired[pulumi.Input[str]]
        """
        The ID of the cloud service to which the API operation belongs.
        """
        region: NotRequired[pulumi.Input[str]]
        """
        The region where the resource resides.
        """
        role: NotRequired[pulumi.Input[str]]
        """
        The name of the role.
        """
        version: NotRequired[pulumi.Input[str]]
        """
        The version of the API.
        """
elif False:
    EventRuleOpenApiParameterArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EventRuleOpenApiParameterArgs:
    def __init__(__self__, *,
                 action: Optional[pulumi.Input[str]] = None,
                 arn: Optional[pulumi.Input[str]] = None,
                 open_api_parameters_id: Optional[pulumi.Input[str]] = None,
                 product: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None,
                 role: Optional[pulumi.Input[str]] = None,
                 version: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] action: The API name.
        :param pulumi.Input[str] arn: (Available since v1.211.1) The ARN of the API operation.
        :param pulumi.Input[str] open_api_parameters_id: The ID of the recipient that receives alert notifications sent by an API callback.
        :param pulumi.Input[str] product: The ID of the cloud service to which the API operation belongs.
        :param pulumi.Input[str] region: The region where the resource resides.
        :param pulumi.Input[str] role: The name of the role.
        :param pulumi.Input[str] version: The version of the API.
        """
        if action is not None:
            pulumi.set(__self__, "action", action)
        if arn is not None:
            pulumi.set(__self__, "arn", arn)
        if open_api_parameters_id is not None:
            pulumi.set(__self__, "open_api_parameters_id", open_api_parameters_id)
        if product is not None:
            pulumi.set(__self__, "product", product)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if role is not None:
            pulumi.set(__self__, "role", role)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @property
    @pulumi.getter
    def action(self) -> Optional[pulumi.Input[str]]:
        """
        The API name.
        """
        return pulumi.get(self, "action")

    @action.setter
    def action(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "action", value)

    @property
    @pulumi.getter
    def arn(self) -> Optional[pulumi.Input[str]]:
        """
        (Available since v1.211.1) The ARN of the API operation.
        """
        return pulumi.get(self, "arn")

    @arn.setter
    def arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "arn", value)

    @property
    @pulumi.getter(name="openApiParametersId")
    def open_api_parameters_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the recipient that receives alert notifications sent by an API callback.
        """
        return pulumi.get(self, "open_api_parameters_id")

    @open_api_parameters_id.setter
    def open_api_parameters_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "open_api_parameters_id", value)

    @property
    @pulumi.getter
    def product(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the cloud service to which the API operation belongs.
        """
        return pulumi.get(self, "product")

    @product.setter
    def product(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "product", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        """
        The region where the resource resides.
        """
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)

    @property
    @pulumi.getter
    def role(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the role.
        """
        return pulumi.get(self, "role")

    @role.setter
    def role(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "role", value)

    @property
    @pulumi.getter
    def version(self) -> Optional[pulumi.Input[str]]:
        """
        The version of the API.
        """
        return pulumi.get(self, "version")

    @version.setter
    def version(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "version", value)


if not MYPY:
    class EventRuleSlsParameterArgsDict(TypedDict):
        arn: NotRequired[pulumi.Input[str]]
        """
        (Available since v1.211.1) The ARN of the API operation.
        """
        log_store: NotRequired[pulumi.Input[str]]
        """
        The name of the Simple Log Service Logstore.
        """
        project: NotRequired[pulumi.Input[str]]
        """
        The name of the Simple Log Service project.
        """
        region: NotRequired[pulumi.Input[str]]
        """
        The region where Simple Log Service is deployed.
        """
        sls_parameters_id: NotRequired[pulumi.Input[str]]
        """
        The ID of the recipient that receives alert notifications.
        """
elif False:
    EventRuleSlsParameterArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EventRuleSlsParameterArgs:
    def __init__(__self__, *,
                 arn: Optional[pulumi.Input[str]] = None,
                 log_store: Optional[pulumi.Input[str]] = None,
                 project: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None,
                 sls_parameters_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] arn: (Available since v1.211.1) The ARN of the API operation.
        :param pulumi.Input[str] log_store: The name of the Simple Log Service Logstore.
        :param pulumi.Input[str] project: The name of the Simple Log Service project.
        :param pulumi.Input[str] region: The region where Simple Log Service is deployed.
        :param pulumi.Input[str] sls_parameters_id: The ID of the recipient that receives alert notifications.
        """
        if arn is not None:
            pulumi.set(__self__, "arn", arn)
        if log_store is not None:
            pulumi.set(__self__, "log_store", log_store)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if sls_parameters_id is not None:
            pulumi.set(__self__, "sls_parameters_id", sls_parameters_id)

    @property
    @pulumi.getter
    def arn(self) -> Optional[pulumi.Input[str]]:
        """
        (Available since v1.211.1) The ARN of the API operation.
        """
        return pulumi.get(self, "arn")

    @arn.setter
    def arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "arn", value)

    @property
    @pulumi.getter(name="logStore")
    def log_store(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the Simple Log Service Logstore.
        """
        return pulumi.get(self, "log_store")

    @log_store.setter
    def log_store(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "log_store", value)

    @property
    @pulumi.getter
    def project(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the Simple Log Service project.
        """
        return pulumi.get(self, "project")

    @project.setter
    def project(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "project", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        """
        The region where Simple Log Service is deployed.
        """
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)

    @property
    @pulumi.getter(name="slsParametersId")
    def sls_parameters_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the recipient that receives alert notifications.
        """
        return pulumi.get(self, "sls_parameters_id")

    @sls_parameters_id.setter
    def sls_parameters_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "sls_parameters_id", value)


if not MYPY:
    class EventRuleWebhookParameterArgsDict(TypedDict):
        method: NotRequired[pulumi.Input[str]]
        """
        The HTTP request method.
        """
        protocol: NotRequired[pulumi.Input[str]]
        """
        The name of the protocol.
        """
        url: NotRequired[pulumi.Input[str]]
        """
        The callback URL.
        """
        webhook_parameters_id: NotRequired[pulumi.Input[str]]
        """
        The ID of the recipient that receives alert notifications.
        """
elif False:
    EventRuleWebhookParameterArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EventRuleWebhookParameterArgs:
    def __init__(__self__, *,
                 method: Optional[pulumi.Input[str]] = None,
                 protocol: Optional[pulumi.Input[str]] = None,
                 url: Optional[pulumi.Input[str]] = None,
                 webhook_parameters_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] method: The HTTP request method.
        :param pulumi.Input[str] protocol: The name of the protocol.
        :param pulumi.Input[str] url: The callback URL.
        :param pulumi.Input[str] webhook_parameters_id: The ID of the recipient that receives alert notifications.
        """
        if method is not None:
            pulumi.set(__self__, "method", method)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if url is not None:
            pulumi.set(__self__, "url", url)
        if webhook_parameters_id is not None:
            pulumi.set(__self__, "webhook_parameters_id", webhook_parameters_id)

    @property
    @pulumi.getter
    def method(self) -> Optional[pulumi.Input[str]]:
        """
        The HTTP request method.
        """
        return pulumi.get(self, "method")

    @method.setter
    def method(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "method", value)

    @property
    @pulumi.getter
    def protocol(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the protocol.
        """
        return pulumi.get(self, "protocol")

    @protocol.setter
    def protocol(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "protocol", value)

    @property
    @pulumi.getter
    def url(self) -> Optional[pulumi.Input[str]]:
        """
        The callback URL.
        """
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter(name="webhookParametersId")
    def webhook_parameters_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the recipient that receives alert notifications.
        """
        return pulumi.get(self, "webhook_parameters_id")

    @webhook_parameters_id.setter
    def webhook_parameters_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "webhook_parameters_id", value)


if not MYPY:
    class GroupMetricRuleEscalationsArgsDict(TypedDict):
        critical: NotRequired[pulumi.Input['GroupMetricRuleEscalationsCriticalArgsDict']]
        """
        The critical level. See `critical` below.
        """
        info: NotRequired[pulumi.Input['GroupMetricRuleEscalationsInfoArgsDict']]
        """
        The info level. See `info` below.
        """
        warn: NotRequired[pulumi.Input['GroupMetricRuleEscalationsWarnArgsDict']]
        """
        The warn level. See `warn` below.
        """
elif False:
    GroupMetricRuleEscalationsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class GroupMetricRuleEscalationsArgs:
    def __init__(__self__, *,
                 critical: Optional[pulumi.Input['GroupMetricRuleEscalationsCriticalArgs']] = None,
                 info: Optional[pulumi.Input['GroupMetricRuleEscalationsInfoArgs']] = None,
                 warn: Optional[pulumi.Input['GroupMetricRuleEscalationsWarnArgs']] = None):
        """
        :param pulumi.Input['GroupMetricRuleEscalationsCriticalArgs'] critical: The critical level. See `critical` below.
        :param pulumi.Input['GroupMetricRuleEscalationsInfoArgs'] info: The info level. See `info` below.
        :param pulumi.Input['GroupMetricRuleEscalationsWarnArgs'] warn: The warn level. See `warn` below.
        """
        if critical is not None:
            pulumi.set(__self__, "critical", critical)
        if info is not None:
            pulumi.set(__self__, "info", info)
        if warn is not None:
            pulumi.set(__self__, "warn", warn)

    @property
    @pulumi.getter
    def critical(self) -> Optional[pulumi.Input['GroupMetricRuleEscalationsCriticalArgs']]:
        """
        The critical level. See `critical` below.
        """
        return pulumi.get(self, "critical")

    @critical.setter
    def critical(self, value: Optional[pulumi.Input['GroupMetricRuleEscalationsCriticalArgs']]):
        pulumi.set(self, "critical", value)

    @property
    @pulumi.getter
    def info(self) -> Optional[pulumi.Input['GroupMetricRuleEscalationsInfoArgs']]:
        """
        The info level. See `info` below.
        """
        return pulumi.get(self, "info")

    @info.setter
    def info(self, value: Optional[pulumi.Input['GroupMetricRuleEscalationsInfoArgs']]):
        pulumi.set(self, "info", value)

    @property
    @pulumi.getter
    def warn(self) -> Optional[pulumi.Input['GroupMetricRuleEscalationsWarnArgs']]:
        """
        The warn level. See `warn` below.
        """
        return pulumi.get(self, "warn")

    @warn.setter
    def warn(self, value: Optional[pulumi.Input['GroupMetricRuleEscalationsWarnArgs']]):
        pulumi.set(self, "warn", value)


if not MYPY:
    class GroupMetricRuleEscalationsCriticalArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[str]]
        """
        The comparison operator of the threshold for warn-level alerts.
        """
        statistics: NotRequired[pulumi.Input[str]]
        """
        The statistical aggregation method for warn-level alerts.
        """
        threshold: NotRequired[pulumi.Input[str]]
        """
        The threshold for warn-level alerts.
        """
        times: NotRequired[pulumi.Input[int]]
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
elif False:
    GroupMetricRuleEscalationsCriticalArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class GroupMetricRuleEscalationsCriticalArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[str]] = None,
                 statistics: Optional[pulumi.Input[str]] = None,
                 threshold: Optional[pulumi.Input[str]] = None,
                 times: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[str] comparison_operator: The comparison operator of the threshold for warn-level alerts.
        :param pulumi.Input[str] statistics: The statistical aggregation method for warn-level alerts.
        :param pulumi.Input[str] threshold: The threshold for warn-level alerts.
        :param pulumi.Input[int] times: The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        if comparison_operator is not None:
            pulumi.set(__self__, "comparison_operator", comparison_operator)
        if statistics is not None:
            pulumi.set(__self__, "statistics", statistics)
        if threshold is not None:
            pulumi.set(__self__, "threshold", threshold)
        if times is not None:
            pulumi.set(__self__, "times", times)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> Optional[pulumi.Input[str]]:
        """
        The comparison operator of the threshold for warn-level alerts.
        """
        return pulumi.get(self, "comparison_operator")

    @comparison_operator.setter
    def comparison_operator(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comparison_operator", value)

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[str]]:
        """
        The statistical aggregation method for warn-level alerts.
        """
        return pulumi.get(self, "statistics")

    @statistics.setter
    def statistics(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "statistics", value)

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[str]]:
        """
        The threshold for warn-level alerts.
        """
        return pulumi.get(self, "threshold")

    @threshold.setter
    def threshold(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "threshold", value)

    @property
    @pulumi.getter
    def times(self) -> Optional[pulumi.Input[int]]:
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        return pulumi.get(self, "times")

    @times.setter
    def times(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "times", value)


if not MYPY:
    class GroupMetricRuleEscalationsInfoArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[str]]
        """
        The comparison operator of the threshold for warn-level alerts.
        """
        statistics: NotRequired[pulumi.Input[str]]
        """
        The statistical aggregation method for warn-level alerts.
        """
        threshold: NotRequired[pulumi.Input[str]]
        """
        The threshold for warn-level alerts.
        """
        times: NotRequired[pulumi.Input[int]]
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
elif False:
    GroupMetricRuleEscalationsInfoArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class GroupMetricRuleEscalationsInfoArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[str]] = None,
                 statistics: Optional[pulumi.Input[str]] = None,
                 threshold: Optional[pulumi.Input[str]] = None,
                 times: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[str] comparison_operator: The comparison operator of the threshold for warn-level alerts.
        :param pulumi.Input[str] statistics: The statistical aggregation method for warn-level alerts.
        :param pulumi.Input[str] threshold: The threshold for warn-level alerts.
        :param pulumi.Input[int] times: The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        if comparison_operator is not None:
            pulumi.set(__self__, "comparison_operator", comparison_operator)
        if statistics is not None:
            pulumi.set(__self__, "statistics", statistics)
        if threshold is not None:
            pulumi.set(__self__, "threshold", threshold)
        if times is not None:
            pulumi.set(__self__, "times", times)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> Optional[pulumi.Input[str]]:
        """
        The comparison operator of the threshold for warn-level alerts.
        """
        return pulumi.get(self, "comparison_operator")

    @comparison_operator.setter
    def comparison_operator(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comparison_operator", value)

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[str]]:
        """
        The statistical aggregation method for warn-level alerts.
        """
        return pulumi.get(self, "statistics")

    @statistics.setter
    def statistics(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "statistics", value)

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[str]]:
        """
        The threshold for warn-level alerts.
        """
        return pulumi.get(self, "threshold")

    @threshold.setter
    def threshold(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "threshold", value)

    @property
    @pulumi.getter
    def times(self) -> Optional[pulumi.Input[int]]:
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        return pulumi.get(self, "times")

    @times.setter
    def times(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "times", value)


if not MYPY:
    class GroupMetricRuleEscalationsWarnArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[str]]
        """
        The comparison operator of the threshold for warn-level alerts.
        """
        statistics: NotRequired[pulumi.Input[str]]
        """
        The statistical aggregation method for warn-level alerts.
        """
        threshold: NotRequired[pulumi.Input[str]]
        """
        The threshold for warn-level alerts.
        """
        times: NotRequired[pulumi.Input[int]]
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
elif False:
    GroupMetricRuleEscalationsWarnArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class GroupMetricRuleEscalationsWarnArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[str]] = None,
                 statistics: Optional[pulumi.Input[str]] = None,
                 threshold: Optional[pulumi.Input[str]] = None,
                 times: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[str] comparison_operator: The comparison operator of the threshold for warn-level alerts.
        :param pulumi.Input[str] statistics: The statistical aggregation method for warn-level alerts.
        :param pulumi.Input[str] threshold: The threshold for warn-level alerts.
        :param pulumi.Input[int] times: The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        if comparison_operator is not None:
            pulumi.set(__self__, "comparison_operator", comparison_operator)
        if statistics is not None:
            pulumi.set(__self__, "statistics", statistics)
        if threshold is not None:
            pulumi.set(__self__, "threshold", threshold)
        if times is not None:
            pulumi.set(__self__, "times", times)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> Optional[pulumi.Input[str]]:
        """
        The comparison operator of the threshold for warn-level alerts.
        """
        return pulumi.get(self, "comparison_operator")

    @comparison_operator.setter
    def comparison_operator(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comparison_operator", value)

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[str]]:
        """
        The statistical aggregation method for warn-level alerts.
        """
        return pulumi.get(self, "statistics")

    @statistics.setter
    def statistics(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "statistics", value)

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[str]]:
        """
        The threshold for warn-level alerts.
        """
        return pulumi.get(self, "threshold")

    @threshold.setter
    def threshold(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "threshold", value)

    @property
    @pulumi.getter
    def times(self) -> Optional[pulumi.Input[int]]:
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        return pulumi.get(self, "times")

    @times.setter
    def times(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "times", value)


if not MYPY:
    class GroupMetricRuleTargetArgsDict(TypedDict):
        arn: NotRequired[pulumi.Input[str]]
        """
        The Alibaba Cloud Resource Name (ARN) of the resource.
        > **NOTE:** Currently, the Alibaba Cloud Resource Name (ARN) of the resource. To use, please [submit an application](https://www.alibabacloud.com/help/en/cloudmonitor/latest/describemetricruletargets).
        """
        id: NotRequired[pulumi.Input[str]]
        """
        The ID of the resource for which alerts are triggered.
        """
        json_params: NotRequired[pulumi.Input[str]]
        """
        The parameters of the alert callback. The parameters are in the JSON format.
        """
        level: NotRequired[pulumi.Input[str]]
        """
        The level of the alert. Valid values: `Critical`, `Warn`, `Info`.
        """
elif False:
    GroupMetricRuleTargetArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class GroupMetricRuleTargetArgs:
    def __init__(__self__, *,
                 arn: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 json_params: Optional[pulumi.Input[str]] = None,
                 level: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] arn: The Alibaba Cloud Resource Name (ARN) of the resource.
               > **NOTE:** Currently, the Alibaba Cloud Resource Name (ARN) of the resource. To use, please [submit an application](https://www.alibabacloud.com/help/en/cloudmonitor/latest/describemetricruletargets).
        :param pulumi.Input[str] id: The ID of the resource for which alerts are triggered.
        :param pulumi.Input[str] json_params: The parameters of the alert callback. The parameters are in the JSON format.
        :param pulumi.Input[str] level: The level of the alert. Valid values: `Critical`, `Warn`, `Info`.
        """
        if arn is not None:
            pulumi.set(__self__, "arn", arn)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if json_params is not None:
            pulumi.set(__self__, "json_params", json_params)
        if level is not None:
            pulumi.set(__self__, "level", level)

    @property
    @pulumi.getter
    def arn(self) -> Optional[pulumi.Input[str]]:
        """
        The Alibaba Cloud Resource Name (ARN) of the resource.
        > **NOTE:** Currently, the Alibaba Cloud Resource Name (ARN) of the resource. To use, please [submit an application](https://www.alibabacloud.com/help/en/cloudmonitor/latest/describemetricruletargets).
        """
        return pulumi.get(self, "arn")

    @arn.setter
    def arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "arn", value)

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the resource for which alerts are triggered.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="jsonParams")
    def json_params(self) -> Optional[pulumi.Input[str]]:
        """
        The parameters of the alert callback. The parameters are in the JSON format.
        """
        return pulumi.get(self, "json_params")

    @json_params.setter
    def json_params(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "json_params", value)

    @property
    @pulumi.getter
    def level(self) -> Optional[pulumi.Input[str]]:
        """
        The level of the alert. Valid values: `Critical`, `Warn`, `Info`.
        """
        return pulumi.get(self, "level")

    @level.setter
    def level(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "level", value)


if not MYPY:
    class HybridMonitorSlsTaskAttachLabelArgsDict(TypedDict):
        name: NotRequired[pulumi.Input[str]]
        """
        The tag key of the metric.
        """
        value: NotRequired[pulumi.Input[str]]
        """
        The tag value of the metric.
        """
elif False:
    HybridMonitorSlsTaskAttachLabelArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class HybridMonitorSlsTaskAttachLabelArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: The tag key of the metric.
        :param pulumi.Input[str] value: The tag value of the metric.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The tag key of the metric.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        """
        The tag value of the metric.
        """
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "value", value)


if not MYPY:
    class HybridMonitorSlsTaskSlsProcessConfigArgsDict(TypedDict):
        expresses: NotRequired[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigExpressArgsDict']]]]
        """
        The extended field that specifies the result of basic operations that are performed on aggregation results.
        """
        filter: NotRequired[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigFilterArgsDict']]
        """
        The conditions that are used to filter logs imported from Log Service. See `filter` below.
        """
        group_bies: NotRequired[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigGroupByArgsDict']]]]
        """
        The dimension based on which data is aggregated. This parameter is equivalent to the GROUP BY clause in SQL. See `group_by` below.
        """
        statistics: NotRequired[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigStatisticArgsDict']]]]
        """
        The method that is used to aggregate logs imported from Log Service. See `statistics` below.
        """
elif False:
    HybridMonitorSlsTaskSlsProcessConfigArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class HybridMonitorSlsTaskSlsProcessConfigArgs:
    def __init__(__self__, *,
                 expresses: Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigExpressArgs']]]] = None,
                 filter: Optional[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigFilterArgs']] = None,
                 group_bies: Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigGroupByArgs']]]] = None,
                 statistics: Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigStatisticArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigExpressArgs']]] expresses: The extended field that specifies the result of basic operations that are performed on aggregation results.
        :param pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigFilterArgs'] filter: The conditions that are used to filter logs imported from Log Service. See `filter` below.
        :param pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigGroupByArgs']]] group_bies: The dimension based on which data is aggregated. This parameter is equivalent to the GROUP BY clause in SQL. See `group_by` below.
        :param pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigStatisticArgs']]] statistics: The method that is used to aggregate logs imported from Log Service. See `statistics` below.
        """
        if expresses is not None:
            pulumi.set(__self__, "expresses", expresses)
        if filter is not None:
            pulumi.set(__self__, "filter", filter)
        if group_bies is not None:
            pulumi.set(__self__, "group_bies", group_bies)
        if statistics is not None:
            pulumi.set(__self__, "statistics", statistics)

    @property
    @pulumi.getter
    def expresses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigExpressArgs']]]]:
        """
        The extended field that specifies the result of basic operations that are performed on aggregation results.
        """
        return pulumi.get(self, "expresses")

    @expresses.setter
    def expresses(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigExpressArgs']]]]):
        pulumi.set(self, "expresses", value)

    @property
    @pulumi.getter
    def filter(self) -> Optional[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigFilterArgs']]:
        """
        The conditions that are used to filter logs imported from Log Service. See `filter` below.
        """
        return pulumi.get(self, "filter")

    @filter.setter
    def filter(self, value: Optional[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigFilterArgs']]):
        pulumi.set(self, "filter", value)

    @property
    @pulumi.getter(name="groupBies")
    def group_bies(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigGroupByArgs']]]]:
        """
        The dimension based on which data is aggregated. This parameter is equivalent to the GROUP BY clause in SQL. See `group_by` below.
        """
        return pulumi.get(self, "group_bies")

    @group_bies.setter
    def group_bies(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigGroupByArgs']]]]):
        pulumi.set(self, "group_bies", value)

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigStatisticArgs']]]]:
        """
        The method that is used to aggregate logs imported from Log Service. See `statistics` below.
        """
        return pulumi.get(self, "statistics")

    @statistics.setter
    def statistics(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigStatisticArgs']]]]):
        pulumi.set(self, "statistics", value)


if not MYPY:
    class HybridMonitorSlsTaskSlsProcessConfigExpressArgsDict(TypedDict):
        alias: NotRequired[pulumi.Input[str]]
        """
        The alias of the extended field that specifies the result of basic operations that are performed on aggregation results.
        """
        express: NotRequired[pulumi.Input[str]]
        """
        The extended field that specifies the result of basic operations that are performed on aggregation results.
        """
elif False:
    HybridMonitorSlsTaskSlsProcessConfigExpressArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class HybridMonitorSlsTaskSlsProcessConfigExpressArgs:
    def __init__(__self__, *,
                 alias: Optional[pulumi.Input[str]] = None,
                 express: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] alias: The alias of the extended field that specifies the result of basic operations that are performed on aggregation results.
        :param pulumi.Input[str] express: The extended field that specifies the result of basic operations that are performed on aggregation results.
        """
        if alias is not None:
            pulumi.set(__self__, "alias", alias)
        if express is not None:
            pulumi.set(__self__, "express", express)

    @property
    @pulumi.getter
    def alias(self) -> Optional[pulumi.Input[str]]:
        """
        The alias of the extended field that specifies the result of basic operations that are performed on aggregation results.
        """
        return pulumi.get(self, "alias")

    @alias.setter
    def alias(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "alias", value)

    @property
    @pulumi.getter
    def express(self) -> Optional[pulumi.Input[str]]:
        """
        The extended field that specifies the result of basic operations that are performed on aggregation results.
        """
        return pulumi.get(self, "express")

    @express.setter
    def express(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "express", value)


if not MYPY:
    class HybridMonitorSlsTaskSlsProcessConfigFilterArgsDict(TypedDict):
        filters: NotRequired[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigFilterFilterArgsDict']]]]
        """
        The conditions that are used to filter logs imported from Log Service. See `filters` below.
        """
        relation: NotRequired[pulumi.Input[str]]
        """
        The relationship between multiple filter conditions. Valid values: `and`(default value), `or`.
        """
elif False:
    HybridMonitorSlsTaskSlsProcessConfigFilterArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class HybridMonitorSlsTaskSlsProcessConfigFilterArgs:
    def __init__(__self__, *,
                 filters: Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigFilterFilterArgs']]]] = None,
                 relation: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigFilterFilterArgs']]] filters: The conditions that are used to filter logs imported from Log Service. See `filters` below.
        :param pulumi.Input[str] relation: The relationship between multiple filter conditions. Valid values: `and`(default value), `or`.
        """
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if relation is not None:
            pulumi.set(__self__, "relation", relation)

    @property
    @pulumi.getter
    def filters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigFilterFilterArgs']]]]:
        """
        The conditions that are used to filter logs imported from Log Service. See `filters` below.
        """
        return pulumi.get(self, "filters")

    @filters.setter
    def filters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['HybridMonitorSlsTaskSlsProcessConfigFilterFilterArgs']]]]):
        pulumi.set(self, "filters", value)

    @property
    @pulumi.getter
    def relation(self) -> Optional[pulumi.Input[str]]:
        """
        The relationship between multiple filter conditions. Valid values: `and`(default value), `or`.
        """
        return pulumi.get(self, "relation")

    @relation.setter
    def relation(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "relation", value)


if not MYPY:
    class HybridMonitorSlsTaskSlsProcessConfigFilterFilterArgsDict(TypedDict):
        operator: NotRequired[pulumi.Input[str]]
        """
        The method that is used to filter logs imported from Log Service. Valid values: `>`, `>=`, `=`, `<=`, `<`, `!=`, `contain`, `notContain`.
        """
        sls_key_name: NotRequired[pulumi.Input[str]]
        """
        The name of the key that is used to filter logs imported from Log Service.
        """
        value: NotRequired[pulumi.Input[str]]
elif False:
    HybridMonitorSlsTaskSlsProcessConfigFilterFilterArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class HybridMonitorSlsTaskSlsProcessConfigFilterFilterArgs:
    def __init__(__self__, *,
                 operator: Optional[pulumi.Input[str]] = None,
                 sls_key_name: Optional[pulumi.Input[str]] = None,
                 value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] operator: The method that is used to filter logs imported from Log Service. Valid values: `>`, `>=`, `=`, `<=`, `<`, `!=`, `contain`, `notContain`.
        :param pulumi.Input[str] sls_key_name: The name of the key that is used to filter logs imported from Log Service.
        """
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if sls_key_name is not None:
            pulumi.set(__self__, "sls_key_name", sls_key_name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def operator(self) -> Optional[pulumi.Input[str]]:
        """
        The method that is used to filter logs imported from Log Service. Valid values: `>`, `>=`, `=`, `<=`, `<`, `!=`, `contain`, `notContain`.
        """
        return pulumi.get(self, "operator")

    @operator.setter
    def operator(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "operator", value)

    @property
    @pulumi.getter(name="slsKeyName")
    def sls_key_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the key that is used to filter logs imported from Log Service.
        """
        return pulumi.get(self, "sls_key_name")

    @sls_key_name.setter
    def sls_key_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "sls_key_name", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "value", value)


if not MYPY:
    class HybridMonitorSlsTaskSlsProcessConfigGroupByArgsDict(TypedDict):
        alias: NotRequired[pulumi.Input[str]]
        """
        The alias of the extended field that specifies the result of basic operations that are performed on aggregation results.
        """
        sls_key_name: NotRequired[pulumi.Input[str]]
        """
        The name of the key that is used to filter logs imported from Log Service.
        """
elif False:
    HybridMonitorSlsTaskSlsProcessConfigGroupByArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class HybridMonitorSlsTaskSlsProcessConfigGroupByArgs:
    def __init__(__self__, *,
                 alias: Optional[pulumi.Input[str]] = None,
                 sls_key_name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] alias: The alias of the extended field that specifies the result of basic operations that are performed on aggregation results.
        :param pulumi.Input[str] sls_key_name: The name of the key that is used to filter logs imported from Log Service.
        """
        if alias is not None:
            pulumi.set(__self__, "alias", alias)
        if sls_key_name is not None:
            pulumi.set(__self__, "sls_key_name", sls_key_name)

    @property
    @pulumi.getter
    def alias(self) -> Optional[pulumi.Input[str]]:
        """
        The alias of the extended field that specifies the result of basic operations that are performed on aggregation results.
        """
        return pulumi.get(self, "alias")

    @alias.setter
    def alias(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "alias", value)

    @property
    @pulumi.getter(name="slsKeyName")
    def sls_key_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the key that is used to filter logs imported from Log Service.
        """
        return pulumi.get(self, "sls_key_name")

    @sls_key_name.setter
    def sls_key_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "sls_key_name", value)


if not MYPY:
    class HybridMonitorSlsTaskSlsProcessConfigStatisticArgsDict(TypedDict):
        alias: NotRequired[pulumi.Input[str]]
        """
        The alias of the extended field that specifies the result of basic operations that are performed on aggregation results.
        """
        function: NotRequired[pulumi.Input[str]]
        """
        The function that is used to aggregate log data within a statistical period. Valid values: `count`, `sum`, `avg`, `max`, `min`, `value`, `countps`, `sumps`, `distinct`, `distribution`, `percentile`.
        """
        parameter_one: NotRequired[pulumi.Input[str]]
        """
        The value of the function that is used to aggregate logs imported from Log Service.
        - If you set the `function` parameter to `distribution`, this parameter specifies the lower limit of the statistical interval. For example, if you want to calculate the number of HTTP requests whose status code is 2XX, set this parameter to 200.
        - If you set the `function` parameter to `percentile`, this parameter specifies the percentile at which the expected value is. For example, 0.5 specifies P50.
        """
        parameter_two: NotRequired[pulumi.Input[str]]
        """
        The value of the function that is used to aggregate logs imported from Log Service. **Note:** This parameter is required only if the `function` parameter is set to `distribution`. This parameter specifies the upper limit of the statistical interval.
        """
        sls_key_name: NotRequired[pulumi.Input[str]]
        """
        The name of the key that is used to filter logs imported from Log Service.
        """
elif False:
    HybridMonitorSlsTaskSlsProcessConfigStatisticArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class HybridMonitorSlsTaskSlsProcessConfigStatisticArgs:
    def __init__(__self__, *,
                 alias: Optional[pulumi.Input[str]] = None,
                 function: Optional[pulumi.Input[str]] = None,
                 parameter_one: Optional[pulumi.Input[str]] = None,
                 parameter_two: Optional[pulumi.Input[str]] = None,
                 sls_key_name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] alias: The alias of the extended field that specifies the result of basic operations that are performed on aggregation results.
        :param pulumi.Input[str] function: The function that is used to aggregate log data within a statistical period. Valid values: `count`, `sum`, `avg`, `max`, `min`, `value`, `countps`, `sumps`, `distinct`, `distribution`, `percentile`.
        :param pulumi.Input[str] parameter_one: The value of the function that is used to aggregate logs imported from Log Service.
               - If you set the `function` parameter to `distribution`, this parameter specifies the lower limit of the statistical interval. For example, if you want to calculate the number of HTTP requests whose status code is 2XX, set this parameter to 200.
               - If you set the `function` parameter to `percentile`, this parameter specifies the percentile at which the expected value is. For example, 0.5 specifies P50.
        :param pulumi.Input[str] parameter_two: The value of the function that is used to aggregate logs imported from Log Service. **Note:** This parameter is required only if the `function` parameter is set to `distribution`. This parameter specifies the upper limit of the statistical interval.
        :param pulumi.Input[str] sls_key_name: The name of the key that is used to filter logs imported from Log Service.
        """
        if alias is not None:
            pulumi.set(__self__, "alias", alias)
        if function is not None:
            pulumi.set(__self__, "function", function)
        if parameter_one is not None:
            pulumi.set(__self__, "parameter_one", parameter_one)
        if parameter_two is not None:
            pulumi.set(__self__, "parameter_two", parameter_two)
        if sls_key_name is not None:
            pulumi.set(__self__, "sls_key_name", sls_key_name)

    @property
    @pulumi.getter
    def alias(self) -> Optional[pulumi.Input[str]]:
        """
        The alias of the extended field that specifies the result of basic operations that are performed on aggregation results.
        """
        return pulumi.get(self, "alias")

    @alias.setter
    def alias(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "alias", value)

    @property
    @pulumi.getter
    def function(self) -> Optional[pulumi.Input[str]]:
        """
        The function that is used to aggregate log data within a statistical period. Valid values: `count`, `sum`, `avg`, `max`, `min`, `value`, `countps`, `sumps`, `distinct`, `distribution`, `percentile`.
        """
        return pulumi.get(self, "function")

    @function.setter
    def function(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "function", value)

    @property
    @pulumi.getter(name="parameterOne")
    def parameter_one(self) -> Optional[pulumi.Input[str]]:
        """
        The value of the function that is used to aggregate logs imported from Log Service.
        - If you set the `function` parameter to `distribution`, this parameter specifies the lower limit of the statistical interval. For example, if you want to calculate the number of HTTP requests whose status code is 2XX, set this parameter to 200.
        - If you set the `function` parameter to `percentile`, this parameter specifies the percentile at which the expected value is. For example, 0.5 specifies P50.
        """
        return pulumi.get(self, "parameter_one")

    @parameter_one.setter
    def parameter_one(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "parameter_one", value)

    @property
    @pulumi.getter(name="parameterTwo")
    def parameter_two(self) -> Optional[pulumi.Input[str]]:
        """
        The value of the function that is used to aggregate logs imported from Log Service. **Note:** This parameter is required only if the `function` parameter is set to `distribution`. This parameter specifies the upper limit of the statistical interval.
        """
        return pulumi.get(self, "parameter_two")

    @parameter_two.setter
    def parameter_two(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "parameter_two", value)

    @property
    @pulumi.getter(name="slsKeyName")
    def sls_key_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the key that is used to filter logs imported from Log Service.
        """
        return pulumi.get(self, "sls_key_name")

    @sls_key_name.setter
    def sls_key_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "sls_key_name", value)


if not MYPY:
    class MetricRuleBlackListMetricArgsDict(TypedDict):
        metric_name: pulumi.Input[str]
        """
        The name of the monitoring indicator.
        """
        resource: NotRequired[pulumi.Input[str]]
        """
        The extended dimension information of the instance. For example, '{"device":"C:"}' indicates that the blacklist policy is applied to all C disks under the ECS instance.
        """
elif False:
    MetricRuleBlackListMetricArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class MetricRuleBlackListMetricArgs:
    def __init__(__self__, *,
                 metric_name: pulumi.Input[str],
                 resource: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] metric_name: The name of the monitoring indicator.
        :param pulumi.Input[str] resource: The extended dimension information of the instance. For example, '{"device":"C:"}' indicates that the blacklist policy is applied to all C disks under the ECS instance.
        """
        pulumi.set(__self__, "metric_name", metric_name)
        if resource is not None:
            pulumi.set(__self__, "resource", resource)

    @property
    @pulumi.getter(name="metricName")
    def metric_name(self) -> pulumi.Input[str]:
        """
        The name of the monitoring indicator.
        """
        return pulumi.get(self, "metric_name")

    @metric_name.setter
    def metric_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "metric_name", value)

    @property
    @pulumi.getter
    def resource(self) -> Optional[pulumi.Input[str]]:
        """
        The extended dimension information of the instance. For example, '{"device":"C:"}' indicates that the blacklist policy is applied to all C disks under the ECS instance.
        """
        return pulumi.get(self, "resource")

    @resource.setter
    def resource(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "resource", value)


if not MYPY:
    class MetricRuleTemplateAlertTemplateArgsDict(TypedDict):
        category: pulumi.Input[str]
        """
        The abbreviation of the Alibaba Cloud service name.
        > **NOTE:** To obtain the abbreviation of an Alibaba Cloud service name, call the [DescribeProjectMeta](https://www.alibabacloud.com/help/en/cms/developer-reference/api-cms-2019-01-01-describeprojectmeta) operation. The metricCategory tag in the Labels response parameter indicates the abbreviation of the Alibaba Cloud service name.
        """
        metric_name: pulumi.Input[str]
        """
        The name of the metric.
        > **NOTE:** For more information, see [DescribeMetricMetaList](https://www.alibabacloud.com/help/doc-detail/98846.htm) or [Appendix 1: Metrics](https://www.alibabacloud.com/help/doc-detail/28619.htm).
        """
        namespace: pulumi.Input[str]
        """
        The namespace of the cloud service.
        > **NOTE:** For more information, see [DescribeMetricMetaList](https://www.alibabacloud.com/help/doc-detail/98846.htm) or [Appendix 1: Metrics](https://www.alibabacloud.com/help/doc-detail/28619.htm).
        """
        rule_name: pulumi.Input[str]
        """
        The name of the alert rule.
        """
        escalations: NotRequired[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsArgsDict']]
        """
        The information about the trigger condition based on the alert level. See `escalations` below.
        """
        webhook: NotRequired[pulumi.Input[str]]
        """
        The callback URL to which a POST request is sent when an alert is triggered based on the alert rule.
        """
elif False:
    MetricRuleTemplateAlertTemplateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class MetricRuleTemplateAlertTemplateArgs:
    def __init__(__self__, *,
                 category: pulumi.Input[str],
                 metric_name: pulumi.Input[str],
                 namespace: pulumi.Input[str],
                 rule_name: pulumi.Input[str],
                 escalations: Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsArgs']] = None,
                 webhook: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] category: The abbreviation of the Alibaba Cloud service name.
               > **NOTE:** To obtain the abbreviation of an Alibaba Cloud service name, call the [DescribeProjectMeta](https://www.alibabacloud.com/help/en/cms/developer-reference/api-cms-2019-01-01-describeprojectmeta) operation. The metricCategory tag in the Labels response parameter indicates the abbreviation of the Alibaba Cloud service name.
        :param pulumi.Input[str] metric_name: The name of the metric.
               > **NOTE:** For more information, see [DescribeMetricMetaList](https://www.alibabacloud.com/help/doc-detail/98846.htm) or [Appendix 1: Metrics](https://www.alibabacloud.com/help/doc-detail/28619.htm).
        :param pulumi.Input[str] namespace: The namespace of the cloud service.
               > **NOTE:** For more information, see [DescribeMetricMetaList](https://www.alibabacloud.com/help/doc-detail/98846.htm) or [Appendix 1: Metrics](https://www.alibabacloud.com/help/doc-detail/28619.htm).
        :param pulumi.Input[str] rule_name: The name of the alert rule.
        :param pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsArgs'] escalations: The information about the trigger condition based on the alert level. See `escalations` below.
        :param pulumi.Input[str] webhook: The callback URL to which a POST request is sent when an alert is triggered based on the alert rule.
        """
        pulumi.set(__self__, "category", category)
        pulumi.set(__self__, "metric_name", metric_name)
        pulumi.set(__self__, "namespace", namespace)
        pulumi.set(__self__, "rule_name", rule_name)
        if escalations is not None:
            pulumi.set(__self__, "escalations", escalations)
        if webhook is not None:
            pulumi.set(__self__, "webhook", webhook)

    @property
    @pulumi.getter
    def category(self) -> pulumi.Input[str]:
        """
        The abbreviation of the Alibaba Cloud service name.
        > **NOTE:** To obtain the abbreviation of an Alibaba Cloud service name, call the [DescribeProjectMeta](https://www.alibabacloud.com/help/en/cms/developer-reference/api-cms-2019-01-01-describeprojectmeta) operation. The metricCategory tag in the Labels response parameter indicates the abbreviation of the Alibaba Cloud service name.
        """
        return pulumi.get(self, "category")

    @category.setter
    def category(self, value: pulumi.Input[str]):
        pulumi.set(self, "category", value)

    @property
    @pulumi.getter(name="metricName")
    def metric_name(self) -> pulumi.Input[str]:
        """
        The name of the metric.
        > **NOTE:** For more information, see [DescribeMetricMetaList](https://www.alibabacloud.com/help/doc-detail/98846.htm) or [Appendix 1: Metrics](https://www.alibabacloud.com/help/doc-detail/28619.htm).
        """
        return pulumi.get(self, "metric_name")

    @metric_name.setter
    def metric_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "metric_name", value)

    @property
    @pulumi.getter
    def namespace(self) -> pulumi.Input[str]:
        """
        The namespace of the cloud service.
        > **NOTE:** For more information, see [DescribeMetricMetaList](https://www.alibabacloud.com/help/doc-detail/98846.htm) or [Appendix 1: Metrics](https://www.alibabacloud.com/help/doc-detail/28619.htm).
        """
        return pulumi.get(self, "namespace")

    @namespace.setter
    def namespace(self, value: pulumi.Input[str]):
        pulumi.set(self, "namespace", value)

    @property
    @pulumi.getter(name="ruleName")
    def rule_name(self) -> pulumi.Input[str]:
        """
        The name of the alert rule.
        """
        return pulumi.get(self, "rule_name")

    @rule_name.setter
    def rule_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "rule_name", value)

    @property
    @pulumi.getter
    def escalations(self) -> Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsArgs']]:
        """
        The information about the trigger condition based on the alert level. See `escalations` below.
        """
        return pulumi.get(self, "escalations")

    @escalations.setter
    def escalations(self, value: Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsArgs']]):
        pulumi.set(self, "escalations", value)

    @property
    @pulumi.getter
    def webhook(self) -> Optional[pulumi.Input[str]]:
        """
        The callback URL to which a POST request is sent when an alert is triggered based on the alert rule.
        """
        return pulumi.get(self, "webhook")

    @webhook.setter
    def webhook(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "webhook", value)


if not MYPY:
    class MetricRuleTemplateAlertTemplateEscalationsArgsDict(TypedDict):
        critical: NotRequired[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsCriticalArgsDict']]
        """
        The condition for triggering critical-level alerts. See `critical` below.
        """
        info: NotRequired[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsInfoArgsDict']]
        """
        The condition for triggering info-level alerts. See `info` below.
        """
        warn: NotRequired[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsWarnArgsDict']]
        """
        The condition for triggering warn-level alerts. See `warn` below.
        """
elif False:
    MetricRuleTemplateAlertTemplateEscalationsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class MetricRuleTemplateAlertTemplateEscalationsArgs:
    def __init__(__self__, *,
                 critical: Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsCriticalArgs']] = None,
                 info: Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsInfoArgs']] = None,
                 warn: Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsWarnArgs']] = None):
        """
        :param pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsCriticalArgs'] critical: The condition for triggering critical-level alerts. See `critical` below.
        :param pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsInfoArgs'] info: The condition for triggering info-level alerts. See `info` below.
        :param pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsWarnArgs'] warn: The condition for triggering warn-level alerts. See `warn` below.
        """
        if critical is not None:
            pulumi.set(__self__, "critical", critical)
        if info is not None:
            pulumi.set(__self__, "info", info)
        if warn is not None:
            pulumi.set(__self__, "warn", warn)

    @property
    @pulumi.getter
    def critical(self) -> Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsCriticalArgs']]:
        """
        The condition for triggering critical-level alerts. See `critical` below.
        """
        return pulumi.get(self, "critical")

    @critical.setter
    def critical(self, value: Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsCriticalArgs']]):
        pulumi.set(self, "critical", value)

    @property
    @pulumi.getter
    def info(self) -> Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsInfoArgs']]:
        """
        The condition for triggering info-level alerts. See `info` below.
        """
        return pulumi.get(self, "info")

    @info.setter
    def info(self, value: Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsInfoArgs']]):
        pulumi.set(self, "info", value)

    @property
    @pulumi.getter
    def warn(self) -> Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsWarnArgs']]:
        """
        The condition for triggering warn-level alerts. See `warn` below.
        """
        return pulumi.get(self, "warn")

    @warn.setter
    def warn(self, value: Optional[pulumi.Input['MetricRuleTemplateAlertTemplateEscalationsWarnArgs']]):
        pulumi.set(self, "warn", value)


if not MYPY:
    class MetricRuleTemplateAlertTemplateEscalationsCriticalArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[str]]
        """
        The comparison operator of the threshold for warn-level alerts. Valid values: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanOrEqualToThreshold`, `LessThanThreshold`, `NotEqualToThreshold`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`.
        """
        statistics: NotRequired[pulumi.Input[str]]
        """
        The statistical aggregation method for warn-level alerts.
        """
        threshold: NotRequired[pulumi.Input[str]]
        """
        The threshold for warn-level alerts.
        """
        times: NotRequired[pulumi.Input[str]]
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
elif False:
    MetricRuleTemplateAlertTemplateEscalationsCriticalArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class MetricRuleTemplateAlertTemplateEscalationsCriticalArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[str]] = None,
                 statistics: Optional[pulumi.Input[str]] = None,
                 threshold: Optional[pulumi.Input[str]] = None,
                 times: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] comparison_operator: The comparison operator of the threshold for warn-level alerts. Valid values: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanOrEqualToThreshold`, `LessThanThreshold`, `NotEqualToThreshold`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`.
        :param pulumi.Input[str] statistics: The statistical aggregation method for warn-level alerts.
        :param pulumi.Input[str] threshold: The threshold for warn-level alerts.
        :param pulumi.Input[str] times: The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        if comparison_operator is not None:
            pulumi.set(__self__, "comparison_operator", comparison_operator)
        if statistics is not None:
            pulumi.set(__self__, "statistics", statistics)
        if threshold is not None:
            pulumi.set(__self__, "threshold", threshold)
        if times is not None:
            pulumi.set(__self__, "times", times)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> Optional[pulumi.Input[str]]:
        """
        The comparison operator of the threshold for warn-level alerts. Valid values: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanOrEqualToThreshold`, `LessThanThreshold`, `NotEqualToThreshold`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`.
        """
        return pulumi.get(self, "comparison_operator")

    @comparison_operator.setter
    def comparison_operator(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comparison_operator", value)

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[str]]:
        """
        The statistical aggregation method for warn-level alerts.
        """
        return pulumi.get(self, "statistics")

    @statistics.setter
    def statistics(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "statistics", value)

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[str]]:
        """
        The threshold for warn-level alerts.
        """
        return pulumi.get(self, "threshold")

    @threshold.setter
    def threshold(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "threshold", value)

    @property
    @pulumi.getter
    def times(self) -> Optional[pulumi.Input[str]]:
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        return pulumi.get(self, "times")

    @times.setter
    def times(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "times", value)


if not MYPY:
    class MetricRuleTemplateAlertTemplateEscalationsInfoArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[str]]
        """
        The comparison operator of the threshold for warn-level alerts. Valid values: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanOrEqualToThreshold`, `LessThanThreshold`, `NotEqualToThreshold`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`.
        """
        statistics: NotRequired[pulumi.Input[str]]
        """
        The statistical aggregation method for warn-level alerts.
        """
        threshold: NotRequired[pulumi.Input[str]]
        """
        The threshold for warn-level alerts.
        """
        times: NotRequired[pulumi.Input[str]]
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
elif False:
    MetricRuleTemplateAlertTemplateEscalationsInfoArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class MetricRuleTemplateAlertTemplateEscalationsInfoArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[str]] = None,
                 statistics: Optional[pulumi.Input[str]] = None,
                 threshold: Optional[pulumi.Input[str]] = None,
                 times: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] comparison_operator: The comparison operator of the threshold for warn-level alerts. Valid values: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanOrEqualToThreshold`, `LessThanThreshold`, `NotEqualToThreshold`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`.
        :param pulumi.Input[str] statistics: The statistical aggregation method for warn-level alerts.
        :param pulumi.Input[str] threshold: The threshold for warn-level alerts.
        :param pulumi.Input[str] times: The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        if comparison_operator is not None:
            pulumi.set(__self__, "comparison_operator", comparison_operator)
        if statistics is not None:
            pulumi.set(__self__, "statistics", statistics)
        if threshold is not None:
            pulumi.set(__self__, "threshold", threshold)
        if times is not None:
            pulumi.set(__self__, "times", times)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> Optional[pulumi.Input[str]]:
        """
        The comparison operator of the threshold for warn-level alerts. Valid values: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanOrEqualToThreshold`, `LessThanThreshold`, `NotEqualToThreshold`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`.
        """
        return pulumi.get(self, "comparison_operator")

    @comparison_operator.setter
    def comparison_operator(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comparison_operator", value)

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[str]]:
        """
        The statistical aggregation method for warn-level alerts.
        """
        return pulumi.get(self, "statistics")

    @statistics.setter
    def statistics(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "statistics", value)

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[str]]:
        """
        The threshold for warn-level alerts.
        """
        return pulumi.get(self, "threshold")

    @threshold.setter
    def threshold(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "threshold", value)

    @property
    @pulumi.getter
    def times(self) -> Optional[pulumi.Input[str]]:
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        return pulumi.get(self, "times")

    @times.setter
    def times(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "times", value)


if not MYPY:
    class MetricRuleTemplateAlertTemplateEscalationsWarnArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[str]]
        """
        The comparison operator of the threshold for warn-level alerts. Valid values: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanOrEqualToThreshold`, `LessThanThreshold`, `NotEqualToThreshold`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`.
        """
        statistics: NotRequired[pulumi.Input[str]]
        """
        The statistical aggregation method for warn-level alerts.
        """
        threshold: NotRequired[pulumi.Input[str]]
        """
        The threshold for warn-level alerts.
        """
        times: NotRequired[pulumi.Input[str]]
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
elif False:
    MetricRuleTemplateAlertTemplateEscalationsWarnArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class MetricRuleTemplateAlertTemplateEscalationsWarnArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[str]] = None,
                 statistics: Optional[pulumi.Input[str]] = None,
                 threshold: Optional[pulumi.Input[str]] = None,
                 times: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] comparison_operator: The comparison operator of the threshold for warn-level alerts. Valid values: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanOrEqualToThreshold`, `LessThanThreshold`, `NotEqualToThreshold`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`.
        :param pulumi.Input[str] statistics: The statistical aggregation method for warn-level alerts.
        :param pulumi.Input[str] threshold: The threshold for warn-level alerts.
        :param pulumi.Input[str] times: The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        if comparison_operator is not None:
            pulumi.set(__self__, "comparison_operator", comparison_operator)
        if statistics is not None:
            pulumi.set(__self__, "statistics", statistics)
        if threshold is not None:
            pulumi.set(__self__, "threshold", threshold)
        if times is not None:
            pulumi.set(__self__, "times", times)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> Optional[pulumi.Input[str]]:
        """
        The comparison operator of the threshold for warn-level alerts. Valid values: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanOrEqualToThreshold`, `LessThanThreshold`, `NotEqualToThreshold`, `GreaterThanYesterday`, `LessThanYesterday`, `GreaterThanLastWeek`, `LessThanLastWeek`, `GreaterThanLastPeriod`, `LessThanLastPeriod`.
        """
        return pulumi.get(self, "comparison_operator")

    @comparison_operator.setter
    def comparison_operator(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "comparison_operator", value)

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[str]]:
        """
        The statistical aggregation method for warn-level alerts.
        """
        return pulumi.get(self, "statistics")

    @statistics.setter
    def statistics(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "statistics", value)

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[str]]:
        """
        The threshold for warn-level alerts.
        """
        return pulumi.get(self, "threshold")

    @threshold.setter
    def threshold(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "threshold", value)

    @property
    @pulumi.getter
    def times(self) -> Optional[pulumi.Input[str]]:
        """
        The consecutive number of times for which the metric value is measured before a warn-level alert is triggered.
        """
        return pulumi.get(self, "times")

    @times.setter
    def times(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "times", value)


if not MYPY:
    class MonitorGroupInstancesInstanceArgsDict(TypedDict):
        category: pulumi.Input[str]
        """
        The category of instance.
        """
        instance_id: pulumi.Input[str]
        """
        The id of instance.
        """
        instance_name: pulumi.Input[str]
        """
        The name of instance.
        """
        region_id: pulumi.Input[str]
        """
        The region id of instance.
        """
elif False:
    MonitorGroupInstancesInstanceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class MonitorGroupInstancesInstanceArgs:
    def __init__(__self__, *,
                 category: pulumi.Input[str],
                 instance_id: pulumi.Input[str],
                 instance_name: pulumi.Input[str],
                 region_id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] category: The category of instance.
        :param pulumi.Input[str] instance_id: The id of instance.
        :param pulumi.Input[str] instance_name: The name of instance.
        :param pulumi.Input[str] region_id: The region id of instance.
        """
        pulumi.set(__self__, "category", category)
        pulumi.set(__self__, "instance_id", instance_id)
        pulumi.set(__self__, "instance_name", instance_name)
        pulumi.set(__self__, "region_id", region_id)

    @property
    @pulumi.getter
    def category(self) -> pulumi.Input[str]:
        """
        The category of instance.
        """
        return pulumi.get(self, "category")

    @category.setter
    def category(self, value: pulumi.Input[str]):
        pulumi.set(self, "category", value)

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> pulumi.Input[str]:
        """
        The id of instance.
        """
        return pulumi.get(self, "instance_id")

    @instance_id.setter
    def instance_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "instance_id", value)

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> pulumi.Input[str]:
        """
        The name of instance.
        """
        return pulumi.get(self, "instance_name")

    @instance_name.setter
    def instance_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "instance_name", value)

    @property
    @pulumi.getter(name="regionId")
    def region_id(self) -> pulumi.Input[str]:
        """
        The region id of instance.
        """
        return pulumi.get(self, "region_id")

    @region_id.setter
    def region_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "region_id", value)


if not MYPY:
    class SiteMonitorIspCityArgsDict(TypedDict):
        city: pulumi.Input[str]
        """
        The ID of the city.
        """
        isp: pulumi.Input[str]
        """
        The ID of the carrier.
        """
elif False:
    SiteMonitorIspCityArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SiteMonitorIspCityArgs:
    def __init__(__self__, *,
                 city: pulumi.Input[str],
                 isp: pulumi.Input[str]):
        """
        :param pulumi.Input[str] city: The ID of the city.
        :param pulumi.Input[str] isp: The ID of the carrier.
        """
        pulumi.set(__self__, "city", city)
        pulumi.set(__self__, "isp", isp)

    @property
    @pulumi.getter
    def city(self) -> pulumi.Input[str]:
        """
        The ID of the city.
        """
        return pulumi.get(self, "city")

    @city.setter
    def city(self, value: pulumi.Input[str]):
        pulumi.set(self, "city", value)

    @property
    @pulumi.getter
    def isp(self) -> pulumi.Input[str]:
        """
        The ID of the carrier.
        """
        return pulumi.get(self, "isp")

    @isp.setter
    def isp(self, value: pulumi.Input[str]):
        pulumi.set(self, "isp", value)


if not MYPY:
    class SlsGroupSlsGroupConfigArgsDict(TypedDict):
        sls_logstore: pulumi.Input[str]
        """
        The name of the Log Store.
        """
        sls_project: pulumi.Input[str]
        """
        The name of the Project.
        """
        sls_region: pulumi.Input[str]
        """
        The Sls Region.
        """
        sls_user_id: NotRequired[pulumi.Input[str]]
        """
        The ID of the Sls User.
        """
elif False:
    SlsGroupSlsGroupConfigArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class SlsGroupSlsGroupConfigArgs:
    def __init__(__self__, *,
                 sls_logstore: pulumi.Input[str],
                 sls_project: pulumi.Input[str],
                 sls_region: pulumi.Input[str],
                 sls_user_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] sls_logstore: The name of the Log Store.
        :param pulumi.Input[str] sls_project: The name of the Project.
        :param pulumi.Input[str] sls_region: The Sls Region.
        :param pulumi.Input[str] sls_user_id: The ID of the Sls User.
        """
        pulumi.set(__self__, "sls_logstore", sls_logstore)
        pulumi.set(__self__, "sls_project", sls_project)
        pulumi.set(__self__, "sls_region", sls_region)
        if sls_user_id is not None:
            pulumi.set(__self__, "sls_user_id", sls_user_id)

    @property
    @pulumi.getter(name="slsLogstore")
    def sls_logstore(self) -> pulumi.Input[str]:
        """
        The name of the Log Store.
        """
        return pulumi.get(self, "sls_logstore")

    @sls_logstore.setter
    def sls_logstore(self, value: pulumi.Input[str]):
        pulumi.set(self, "sls_logstore", value)

    @property
    @pulumi.getter(name="slsProject")
    def sls_project(self) -> pulumi.Input[str]:
        """
        The name of the Project.
        """
        return pulumi.get(self, "sls_project")

    @sls_project.setter
    def sls_project(self, value: pulumi.Input[str]):
        pulumi.set(self, "sls_project", value)

    @property
    @pulumi.getter(name="slsRegion")
    def sls_region(self) -> pulumi.Input[str]:
        """
        The Sls Region.
        """
        return pulumi.get(self, "sls_region")

    @sls_region.setter
    def sls_region(self, value: pulumi.Input[str]):
        pulumi.set(self, "sls_region", value)

    @property
    @pulumi.getter(name="slsUserId")
    def sls_user_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the Sls User.
        """
        return pulumi.get(self, "sls_user_id")

    @sls_user_id.setter
    def sls_user_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "sls_user_id", value)


