# 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 builtins
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__ = [
    'RuleConditionArgs',
    'RuleConditionArgsDict',
    'RuleDimensionConditionsArgs',
    'RuleDimensionConditionsArgsDict',
    'RuleDimensionConditionsMetaConditionArgs',
    'RuleDimensionConditionsMetaConditionArgsDict',
    'RuleDimensionConditionsMetaConditionMetaArgs',
    'RuleDimensionConditionsMetaConditionMetaArgsDict',
    'RuleDimensionConditionsProjectConditionArgs',
    'RuleDimensionConditionsProjectConditionArgsDict',
    'RuleDimensionConditionsTagConditionArgs',
    'RuleDimensionConditionsTagConditionArgsDict',
    'RuleDimensionConditionsTagConditionTagArgs',
    'RuleDimensionConditionsTagConditionTagArgsDict',
    'RuleLevelConditionArgs',
    'RuleLevelConditionArgsDict',
    'RuleLevelConditionConditionArgs',
    'RuleLevelConditionConditionArgsDict',
    'RuleNoDataArgs',
    'RuleNoDataArgsDict',
    'RuleNotifyTemplateArgs',
    'RuleNotifyTemplateArgsDict',
    'RuleOriginalDimensionsArgs',
    'RuleOriginalDimensionsArgsDict',
    'RuleRecoveryNotifyArgs',
    'RuleRecoveryNotifyArgsDict',
    'RuleTagArgs',
    'RuleTagArgsDict',
]

MYPY = False

if not MYPY:
    class RuleConditionArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[builtins.str]]
        """
        比较符号。支持普通阈值告警： >、>=、<、<=、!=、= ，以及以下同环比告警：last*period*increase*pct：环比上周期上涨。last*period*decrease*pct：环比上周起下降。last*period*abs*pct：环比上周期上涨或下降。last*day*increase*pct：同比昨天同一时段上涨。last*day*decrease*pct：同比昨天同一时段下降。last*day*abs*pct：同比昨天同一时段上涨或下降。last*week*increase*pct：同比上周同一时段上涨。last*week*decrease*pct：同比上周同一时段下降。last*week*abs_pct：同比上周同一时段上涨或下降。
        """
        metric_name: NotRequired[pulumi.Input[builtins.str]]
        """
        监控指标的名称。详情请参见 云监控指标查询 下各产品的 MetricName。
        """
        metric_unit: NotRequired[pulumi.Input[builtins.str]]
        """
        监控指标的单位。详情请参见 云监控指标查询 下各产品的 MetricUnit。说明同环比告警，MetricUnit 需要填写为 "Percent"。MetricUnit 中是否带有 IEC 表示不同的进位：带有 IEC：进位是 1024不带 IEC：进位是 1000。
        """
        period: NotRequired[pulumi.Input[builtins.str]]
        """
        监控指标的统计周期。详情请参见 云监控指标查询 下各产品的 Period。
        """
        statistics: NotRequired[pulumi.Input[builtins.str]]
        """
        统计方法，取值：avg：平均值。max：最大值。min：最小值。说明统计方法会应用到检测时间段内的数据上。例如，默认每次检测数据的时间跨度是 1 分钟，如果统计方法为 avg，那就是对 1 分钟内的数据取平均值。
        """
        threshold: NotRequired[pulumi.Input[builtins.str]]
        """
        指标阈值。支持输入正数或 0。最多支持三位小数。
        """
elif False:
    RuleConditionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleConditionArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[builtins.str]] = None,
                 metric_name: Optional[pulumi.Input[builtins.str]] = None,
                 metric_unit: Optional[pulumi.Input[builtins.str]] = None,
                 period: Optional[pulumi.Input[builtins.str]] = None,
                 statistics: Optional[pulumi.Input[builtins.str]] = None,
                 threshold: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] comparison_operator: 比较符号。支持普通阈值告警： >、>=、<、<=、!=、= ，以及以下同环比告警：last*period*increase*pct：环比上周期上涨。last*period*decrease*pct：环比上周起下降。last*period*abs*pct：环比上周期上涨或下降。last*day*increase*pct：同比昨天同一时段上涨。last*day*decrease*pct：同比昨天同一时段下降。last*day*abs*pct：同比昨天同一时段上涨或下降。last*week*increase*pct：同比上周同一时段上涨。last*week*decrease*pct：同比上周同一时段下降。last*week*abs_pct：同比上周同一时段上涨或下降。
        :param pulumi.Input[builtins.str] metric_name: 监控指标的名称。详情请参见 云监控指标查询 下各产品的 MetricName。
        :param pulumi.Input[builtins.str] metric_unit: 监控指标的单位。详情请参见 云监控指标查询 下各产品的 MetricUnit。说明同环比告警，MetricUnit 需要填写为 "Percent"。MetricUnit 中是否带有 IEC 表示不同的进位：带有 IEC：进位是 1024不带 IEC：进位是 1000。
        :param pulumi.Input[builtins.str] period: 监控指标的统计周期。详情请参见 云监控指标查询 下各产品的 Period。
        :param pulumi.Input[builtins.str] statistics: 统计方法，取值：avg：平均值。max：最大值。min：最小值。说明统计方法会应用到检测时间段内的数据上。例如，默认每次检测数据的时间跨度是 1 分钟，如果统计方法为 avg，那就是对 1 分钟内的数据取平均值。
        :param pulumi.Input[builtins.str] threshold: 指标阈值。支持输入正数或 0。最多支持三位小数。
        """
        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 metric_unit is not None:
            pulumi.set(__self__, "metric_unit", metric_unit)
        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[builtins.str]]:
        """
        比较符号。支持普通阈值告警： >、>=、<、<=、!=、= ，以及以下同环比告警：last*period*increase*pct：环比上周期上涨。last*period*decrease*pct：环比上周起下降。last*period*abs*pct：环比上周期上涨或下降。last*day*increase*pct：同比昨天同一时段上涨。last*day*decrease*pct：同比昨天同一时段下降。last*day*abs*pct：同比昨天同一时段上涨或下降。last*week*increase*pct：同比上周同一时段上涨。last*week*decrease*pct：同比上周同一时段下降。last*week*abs_pct：同比上周同一时段上涨或下降。
        """
        return pulumi.get(self, "comparison_operator")

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

    @property
    @pulumi.getter(name="metricName")
    def metric_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监控指标的名称。详情请参见 云监控指标查询 下各产品的 MetricName。
        """
        return pulumi.get(self, "metric_name")

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

    @property
    @pulumi.getter(name="metricUnit")
    def metric_unit(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监控指标的单位。详情请参见 云监控指标查询 下各产品的 MetricUnit。说明同环比告警，MetricUnit 需要填写为 "Percent"。MetricUnit 中是否带有 IEC 表示不同的进位：带有 IEC：进位是 1024不带 IEC：进位是 1000。
        """
        return pulumi.get(self, "metric_unit")

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

    @property
    @pulumi.getter
    def period(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监控指标的统计周期。详情请参见 云监控指标查询 下各产品的 Period。
        """
        return pulumi.get(self, "period")

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

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        统计方法，取值：avg：平均值。max：最大值。min：最小值。说明统计方法会应用到检测时间段内的数据上。例如，默认每次检测数据的时间跨度是 1 分钟，如果统计方法为 avg，那就是对 1 分钟内的数据取平均值。
        """
        return pulumi.get(self, "statistics")

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

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        指标阈值。支持输入正数或 0。最多支持三位小数。
        """
        return pulumi.get(self, "threshold")

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


if not MYPY:
    class RuleDimensionConditionsArgsDict(TypedDict):
        meta_condition: NotRequired[pulumi.Input['RuleDimensionConditionsMetaConditionArgsDict']]
        """
        根据资源名称选择告警对象的条件。当Type为meta时必填。
        """
        project_condition: NotRequired[pulumi.Input['RuleDimensionConditionsProjectConditionArgsDict']]
        """
        根据项目选择告警对象的条件。当Type为project时必填。
        """
        tag_condition: NotRequired[pulumi.Input['RuleDimensionConditionsTagConditionArgsDict']]
        """
        根据标签选择告警对象的条件。当Type为tag时必填。
        """
        type: NotRequired[pulumi.Input[builtins.str]]
        """
        Dimensions 类型。取值：project：根据项目选择告警对象。tag：根据标签选择告警对象。meta：根据资源名称选择告警对象。
        """
elif False:
    RuleDimensionConditionsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleDimensionConditionsArgs:
    def __init__(__self__, *,
                 meta_condition: Optional[pulumi.Input['RuleDimensionConditionsMetaConditionArgs']] = None,
                 project_condition: Optional[pulumi.Input['RuleDimensionConditionsProjectConditionArgs']] = None,
                 tag_condition: Optional[pulumi.Input['RuleDimensionConditionsTagConditionArgs']] = None,
                 type: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input['RuleDimensionConditionsMetaConditionArgs'] meta_condition: 根据资源名称选择告警对象的条件。当Type为meta时必填。
        :param pulumi.Input['RuleDimensionConditionsProjectConditionArgs'] project_condition: 根据项目选择告警对象的条件。当Type为project时必填。
        :param pulumi.Input['RuleDimensionConditionsTagConditionArgs'] tag_condition: 根据标签选择告警对象的条件。当Type为tag时必填。
        :param pulumi.Input[builtins.str] type: Dimensions 类型。取值：project：根据项目选择告警对象。tag：根据标签选择告警对象。meta：根据资源名称选择告警对象。
        """
        if meta_condition is not None:
            pulumi.set(__self__, "meta_condition", meta_condition)
        if project_condition is not None:
            pulumi.set(__self__, "project_condition", project_condition)
        if tag_condition is not None:
            pulumi.set(__self__, "tag_condition", tag_condition)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="metaCondition")
    def meta_condition(self) -> Optional[pulumi.Input['RuleDimensionConditionsMetaConditionArgs']]:
        """
        根据资源名称选择告警对象的条件。当Type为meta时必填。
        """
        return pulumi.get(self, "meta_condition")

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

    @property
    @pulumi.getter(name="projectCondition")
    def project_condition(self) -> Optional[pulumi.Input['RuleDimensionConditionsProjectConditionArgs']]:
        """
        根据项目选择告警对象的条件。当Type为project时必填。
        """
        return pulumi.get(self, "project_condition")

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

    @property
    @pulumi.getter(name="tagCondition")
    def tag_condition(self) -> Optional[pulumi.Input['RuleDimensionConditionsTagConditionArgs']]:
        """
        根据标签选择告警对象的条件。当Type为tag时必填。
        """
        return pulumi.get(self, "tag_condition")

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

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        Dimensions 类型。取值：project：根据项目选择告警对象。tag：根据标签选择告警对象。meta：根据资源名称选择告警对象。
        """
        return pulumi.get(self, "type")

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


if not MYPY:
    class RuleDimensionConditionsMetaConditionArgsDict(TypedDict):
        all_dimensions: NotRequired[pulumi.Input[builtins.bool]]
        """
        是否为全量资源。true：全部资源。false：部分资源。
        """
        condition: NotRequired[pulumi.Input[builtins.str]]
        """
        判断条件。and：全部满足。or：任意满足。
        """
        metas: NotRequired[pulumi.Input[Sequence[pulumi.Input['RuleDimensionConditionsMetaConditionMetaArgsDict']]]]
elif False:
    RuleDimensionConditionsMetaConditionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleDimensionConditionsMetaConditionArgs:
    def __init__(__self__, *,
                 all_dimensions: Optional[pulumi.Input[builtins.bool]] = None,
                 condition: Optional[pulumi.Input[builtins.str]] = None,
                 metas: Optional[pulumi.Input[Sequence[pulumi.Input['RuleDimensionConditionsMetaConditionMetaArgs']]]] = None):
        """
        :param pulumi.Input[builtins.bool] all_dimensions: 是否为全量资源。true：全部资源。false：部分资源。
        :param pulumi.Input[builtins.str] condition: 判断条件。and：全部满足。or：任意满足。
        """
        if all_dimensions is not None:
            pulumi.set(__self__, "all_dimensions", all_dimensions)
        if condition is not None:
            pulumi.set(__self__, "condition", condition)
        if metas is not None:
            pulumi.set(__self__, "metas", metas)

    @property
    @pulumi.getter(name="allDimensions")
    def all_dimensions(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否为全量资源。true：全部资源。false：部分资源。
        """
        return pulumi.get(self, "all_dimensions")

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

    @property
    @pulumi.getter
    def condition(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        判断条件。and：全部满足。or：任意满足。
        """
        return pulumi.get(self, "condition")

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

    @property
    @pulumi.getter
    def metas(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RuleDimensionConditionsMetaConditionMetaArgs']]]]:
        return pulumi.get(self, "metas")

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


if not MYPY:
    class RuleDimensionConditionsMetaConditionMetaArgsDict(TypedDict):
        comparator: NotRequired[pulumi.Input[builtins.str]]
        """
        标签匹配时的比较符。contain：包含not*contain：不包含prefix*match：前缀匹配suffix*match：后缀匹配equal：等于not*equal：不等于exist：存在。
        """
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键。
        """
        values: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
        """
        标签的值（Value）。当Comparator为exist时，包含 Key 对应的所有 Value，不支持输入。当Comparator为equal或not*equal时，支持输入多个 Value。当Comparator为contain、not*contain、prefix*match或suffix*match时，仅支持输入 1 个 Value。
        """
elif False:
    RuleDimensionConditionsMetaConditionMetaArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleDimensionConditionsMetaConditionMetaArgs:
    def __init__(__self__, *,
                 comparator: Optional[pulumi.Input[builtins.str]] = None,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        :param pulumi.Input[builtins.str] comparator: 标签匹配时的比较符。contain：包含not*contain：不包含prefix*match：前缀匹配suffix*match：后缀匹配equal：等于not*equal：不等于exist：存在。
        :param pulumi.Input[builtins.str] key: 标签键。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] values: 标签的值（Value）。当Comparator为exist时，包含 Key 对应的所有 Value，不支持输入。当Comparator为equal或not*equal时，支持输入多个 Value。当Comparator为contain、not*contain、prefix*match或suffix*match时，仅支持输入 1 个 Value。
        """
        if comparator is not None:
            pulumi.set(__self__, "comparator", comparator)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def comparator(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签匹配时的比较符。contain：包含not*contain：不包含prefix*match：前缀匹配suffix*match：后缀匹配equal：等于not*equal：不等于exist：存在。
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        标签的值（Value）。当Comparator为exist时，包含 Key 对应的所有 Value，不支持输入。当Comparator为equal或not*equal时，支持输入多个 Value。当Comparator为contain、not*contain、prefix*match或suffix*match时，仅支持输入 1 个 Value。
        """
        return pulumi.get(self, "values")

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


if not MYPY:
    class RuleDimensionConditionsProjectConditionArgsDict(TypedDict):
        projects: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
        """
        项目名称列表。数组形式。多个值之间使用英文半角逗号,分割。
        """
elif False:
    RuleDimensionConditionsProjectConditionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleDimensionConditionsProjectConditionArgs:
    def __init__(__self__, *,
                 projects: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] projects: 项目名称列表。数组形式。多个值之间使用英文半角逗号,分割。
        """
        if projects is not None:
            pulumi.set(__self__, "projects", projects)

    @property
    @pulumi.getter
    def projects(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        项目名称列表。数组形式。多个值之间使用英文半角逗号,分割。
        """
        return pulumi.get(self, "projects")

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


if not MYPY:
    class RuleDimensionConditionsTagConditionArgsDict(TypedDict):
        condition: NotRequired[pulumi.Input[builtins.str]]
        """
        判断条件。and：全部满足。or：任意满足。
        """
        tags: NotRequired[pulumi.Input[Sequence[pulumi.Input['RuleDimensionConditionsTagConditionTagArgsDict']]]]
elif False:
    RuleDimensionConditionsTagConditionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleDimensionConditionsTagConditionArgs:
    def __init__(__self__, *,
                 condition: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['RuleDimensionConditionsTagConditionTagArgs']]]] = None):
        """
        :param pulumi.Input[builtins.str] condition: 判断条件。and：全部满足。or：任意满足。
        """
        if condition is not None:
            pulumi.set(__self__, "condition", condition)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @property
    @pulumi.getter
    def condition(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        判断条件。and：全部满足。or：任意满足。
        """
        return pulumi.get(self, "condition")

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RuleDimensionConditionsTagConditionTagArgs']]]]:
        return pulumi.get(self, "tags")

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


if not MYPY:
    class RuleDimensionConditionsTagConditionTagArgsDict(TypedDict):
        comparator: NotRequired[pulumi.Input[builtins.str]]
        """
        标签匹配时的比较符。contain：包含not*contain：不包含prefix*match：前缀匹配suffix*match：后缀匹配equal：等于not*equal：不等于exist：存在。
        """
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键。
        """
        values: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
        """
        标签的值（Value）。当Comparator为exist时，包含 Key 对应的所有 Value，不支持输入。当Comparator为equal或not*equal时，支持输入多个 Value。当Comparator为contain、not*contain、prefix*match或suffix*match时，仅支持输入 1 个 Value。
        """
elif False:
    RuleDimensionConditionsTagConditionTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleDimensionConditionsTagConditionTagArgs:
    def __init__(__self__, *,
                 comparator: Optional[pulumi.Input[builtins.str]] = None,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        :param pulumi.Input[builtins.str] comparator: 标签匹配时的比较符。contain：包含not*contain：不包含prefix*match：前缀匹配suffix*match：后缀匹配equal：等于not*equal：不等于exist：存在。
        :param pulumi.Input[builtins.str] key: 标签键。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] values: 标签的值（Value）。当Comparator为exist时，包含 Key 对应的所有 Value，不支持输入。当Comparator为equal或not*equal时，支持输入多个 Value。当Comparator为contain、not*contain、prefix*match或suffix*match时，仅支持输入 1 个 Value。
        """
        if comparator is not None:
            pulumi.set(__self__, "comparator", comparator)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def comparator(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签匹配时的比较符。contain：包含not*contain：不包含prefix*match：前缀匹配suffix*match：后缀匹配equal：等于not*equal：不等于exist：存在。
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        标签的值（Value）。当Comparator为exist时，包含 Key 对应的所有 Value，不支持输入。当Comparator为equal或not*equal时，支持输入多个 Value。当Comparator为contain、not*contain、prefix*match或suffix*match时，仅支持输入 1 个 Value。
        """
        return pulumi.get(self, "values")

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


if not MYPY:
    class RuleLevelConditionArgsDict(TypedDict):
        conditions: NotRequired[pulumi.Input[Sequence[pulumi.Input['RuleLevelConditionConditionArgsDict']]]]
        level: NotRequired[pulumi.Input[builtins.str]]
        """
        告警通知等级，取值：notice：通知warning：警告critical：严重recovery：恢复。
        """
elif False:
    RuleLevelConditionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleLevelConditionArgs:
    def __init__(__self__, *,
                 conditions: Optional[pulumi.Input[Sequence[pulumi.Input['RuleLevelConditionConditionArgs']]]] = None,
                 level: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] level: 告警通知等级，取值：notice：通知warning：警告critical：严重recovery：恢复。
        """
        if conditions is not None:
            pulumi.set(__self__, "conditions", conditions)
        if level is not None:
            pulumi.set(__self__, "level", level)

    @property
    @pulumi.getter
    def conditions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RuleLevelConditionConditionArgs']]]]:
        return pulumi.get(self, "conditions")

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

    @property
    @pulumi.getter
    def level(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        告警通知等级，取值：notice：通知warning：警告critical：严重recovery：恢复。
        """
        return pulumi.get(self, "level")

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


if not MYPY:
    class RuleLevelConditionConditionArgsDict(TypedDict):
        comparison_operator: NotRequired[pulumi.Input[builtins.str]]
        """
        比较符号。支持普通阈值告警： >、>=、<、<=、!=、= ，以及以下同环比告警：last*period*increase*pct：环比上周期上涨。last*period*decrease*pct：环比上周起下降。last*period*abs*pct：环比上周期上涨或下降。last*day*increase*pct：同比昨天同一时段上涨。last*day*decrease*pct：同比昨天同一时段下降。last*day*abs*pct：同比昨天同一时段上涨或下降。last*week*increase*pct：同比上周同一时段上涨。last*week*decrease*pct：同比上周同一时段下降。last*week*abs_pct：同比上周同一时段上涨或下降。
        """
        metric_name: NotRequired[pulumi.Input[builtins.str]]
        """
        监控指标的名称。详情请参见 云监控指标查询 下各产品的 MetricName。
        """
        metric_unit: NotRequired[pulumi.Input[builtins.str]]
        """
        监控指标的单位。详情请参见 云监控指标查询 下各产品的 MetricUnit。说明同环比告警，MetricUnit 需要填写为 "Percent"。MetricUnit 中是否带有 IEC 表示不同的进位：带有 IEC：进位是 1024不带 IEC：进位是 1000。
        """
        period: NotRequired[pulumi.Input[builtins.str]]
        """
        监控指标的统计周期。详情请参见 云监控指标查询 下各产品的 Period。
        """
        statistics: NotRequired[pulumi.Input[builtins.str]]
        """
        统计方法，取值：avg：平均值。max：最大值。min：最小值。说明统计方法会应用到检测时间段内的数据上。例如，默认每次检测数据的时间跨度是 1 分钟，如果统计方法为 avg，那就是对 1 分钟内的数据取平均值。
        """
        threshold: NotRequired[pulumi.Input[builtins.str]]
        """
        指标阈值。支持输入正数或 0。最多支持三位小数。
        """
elif False:
    RuleLevelConditionConditionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleLevelConditionConditionArgs:
    def __init__(__self__, *,
                 comparison_operator: Optional[pulumi.Input[builtins.str]] = None,
                 metric_name: Optional[pulumi.Input[builtins.str]] = None,
                 metric_unit: Optional[pulumi.Input[builtins.str]] = None,
                 period: Optional[pulumi.Input[builtins.str]] = None,
                 statistics: Optional[pulumi.Input[builtins.str]] = None,
                 threshold: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] comparison_operator: 比较符号。支持普通阈值告警： >、>=、<、<=、!=、= ，以及以下同环比告警：last*period*increase*pct：环比上周期上涨。last*period*decrease*pct：环比上周起下降。last*period*abs*pct：环比上周期上涨或下降。last*day*increase*pct：同比昨天同一时段上涨。last*day*decrease*pct：同比昨天同一时段下降。last*day*abs*pct：同比昨天同一时段上涨或下降。last*week*increase*pct：同比上周同一时段上涨。last*week*decrease*pct：同比上周同一时段下降。last*week*abs_pct：同比上周同一时段上涨或下降。
        :param pulumi.Input[builtins.str] metric_name: 监控指标的名称。详情请参见 云监控指标查询 下各产品的 MetricName。
        :param pulumi.Input[builtins.str] metric_unit: 监控指标的单位。详情请参见 云监控指标查询 下各产品的 MetricUnit。说明同环比告警，MetricUnit 需要填写为 "Percent"。MetricUnit 中是否带有 IEC 表示不同的进位：带有 IEC：进位是 1024不带 IEC：进位是 1000。
        :param pulumi.Input[builtins.str] period: 监控指标的统计周期。详情请参见 云监控指标查询 下各产品的 Period。
        :param pulumi.Input[builtins.str] statistics: 统计方法，取值：avg：平均值。max：最大值。min：最小值。说明统计方法会应用到检测时间段内的数据上。例如，默认每次检测数据的时间跨度是 1 分钟，如果统计方法为 avg，那就是对 1 分钟内的数据取平均值。
        :param pulumi.Input[builtins.str] threshold: 指标阈值。支持输入正数或 0。最多支持三位小数。
        """
        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 metric_unit is not None:
            pulumi.set(__self__, "metric_unit", metric_unit)
        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[builtins.str]]:
        """
        比较符号。支持普通阈值告警： >、>=、<、<=、!=、= ，以及以下同环比告警：last*period*increase*pct：环比上周期上涨。last*period*decrease*pct：环比上周起下降。last*period*abs*pct：环比上周期上涨或下降。last*day*increase*pct：同比昨天同一时段上涨。last*day*decrease*pct：同比昨天同一时段下降。last*day*abs*pct：同比昨天同一时段上涨或下降。last*week*increase*pct：同比上周同一时段上涨。last*week*decrease*pct：同比上周同一时段下降。last*week*abs_pct：同比上周同一时段上涨或下降。
        """
        return pulumi.get(self, "comparison_operator")

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

    @property
    @pulumi.getter(name="metricName")
    def metric_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监控指标的名称。详情请参见 云监控指标查询 下各产品的 MetricName。
        """
        return pulumi.get(self, "metric_name")

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

    @property
    @pulumi.getter(name="metricUnit")
    def metric_unit(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监控指标的单位。详情请参见 云监控指标查询 下各产品的 MetricUnit。说明同环比告警，MetricUnit 需要填写为 "Percent"。MetricUnit 中是否带有 IEC 表示不同的进位：带有 IEC：进位是 1024不带 IEC：进位是 1000。
        """
        return pulumi.get(self, "metric_unit")

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

    @property
    @pulumi.getter
    def period(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监控指标的统计周期。详情请参见 云监控指标查询 下各产品的 Period。
        """
        return pulumi.get(self, "period")

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

    @property
    @pulumi.getter
    def statistics(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        统计方法，取值：avg：平均值。max：最大值。min：最小值。说明统计方法会应用到检测时间段内的数据上。例如，默认每次检测数据的时间跨度是 1 分钟，如果统计方法为 avg，那就是对 1 分钟内的数据取平均值。
        """
        return pulumi.get(self, "statistics")

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

    @property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        指标阈值。支持输入正数或 0。最多支持三位小数。
        """
        return pulumi.get(self, "threshold")

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


if not MYPY:
    class RuleNoDataArgsDict(TypedDict):
        enable: NotRequired[pulumi.Input[builtins.bool]]
        """
        是否开启无数据告警。取值：true：开启无数据告警。false：（默认）关闭无数据告警。
        """
        evaluation_count: NotRequired[pulumi.Input[builtins.int]]
        """
        无数据告警触发阈值，如果在配置的阈值周期内检测无数据上报，则会触发无数据告警。当Enable配置为true时，该字段为必填。整数形式，取值范围为 3～20。
        """
elif False:
    RuleNoDataArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleNoDataArgs:
    def __init__(__self__, *,
                 enable: Optional[pulumi.Input[builtins.bool]] = None,
                 evaluation_count: Optional[pulumi.Input[builtins.int]] = None):
        """
        :param pulumi.Input[builtins.bool] enable: 是否开启无数据告警。取值：true：开启无数据告警。false：（默认）关闭无数据告警。
        :param pulumi.Input[builtins.int] evaluation_count: 无数据告警触发阈值，如果在配置的阈值周期内检测无数据上报，则会触发无数据告警。当Enable配置为true时，该字段为必填。整数形式，取值范围为 3～20。
        """
        if enable is not None:
            pulumi.set(__self__, "enable", enable)
        if evaluation_count is not None:
            pulumi.set(__self__, "evaluation_count", evaluation_count)

    @property
    @pulumi.getter
    def enable(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启无数据告警。取值：true：开启无数据告警。false：（默认）关闭无数据告警。
        """
        return pulumi.get(self, "enable")

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

    @property
    @pulumi.getter(name="evaluationCount")
    def evaluation_count(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        无数据告警触发阈值，如果在配置的阈值周期内检测无数据上报，则会触发无数据告警。当Enable配置为true时，该字段为必填。整数形式，取值范围为 3～20。
        """
        return pulumi.get(self, "evaluation_count")

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


if not MYPY:
    class RuleNotifyTemplateArgsDict(TypedDict):
        channel: NotRequired[pulumi.Input[builtins.str]]
        """
        通知渠道，取值：email：邮箱sms：短信phone：电话lark：飞书dingtalk：钉钉wecom：企业微信slack：Slackapi：回调地址。
        """
        notify_template_id: NotRequired[pulumi.Input[builtins.str]]
        """
        通知模版 ID。注意每种通知渠道仅支持配置 1 个通知模版 ID。
        """
elif False:
    RuleNotifyTemplateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleNotifyTemplateArgs:
    def __init__(__self__, *,
                 channel: Optional[pulumi.Input[builtins.str]] = None,
                 notify_template_id: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] channel: 通知渠道，取值：email：邮箱sms：短信phone：电话lark：飞书dingtalk：钉钉wecom：企业微信slack：Slackapi：回调地址。
        :param pulumi.Input[builtins.str] notify_template_id: 通知模版 ID。注意每种通知渠道仅支持配置 1 个通知模版 ID。
        """
        if channel is not None:
            pulumi.set(__self__, "channel", channel)
        if notify_template_id is not None:
            pulumi.set(__self__, "notify_template_id", notify_template_id)

    @property
    @pulumi.getter
    def channel(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        通知渠道，取值：email：邮箱sms：短信phone：电话lark：飞书dingtalk：钉钉wecom：企业微信slack：Slackapi：回调地址。
        """
        return pulumi.get(self, "channel")

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

    @property
    @pulumi.getter(name="notifyTemplateId")
    def notify_template_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        通知模版 ID。注意每种通知渠道仅支持配置 1 个通知模版 ID。
        """
        return pulumi.get(self, "notify_template_id")

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


if not MYPY:
    class RuleOriginalDimensionsArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        指标 Dimension 名称，例如ResourceID、NodeName等。不同云产品的 Dimensions 名称不同，详情请参见 云监控指标查询。ResourceID为必填项，且大小写必须与 云监控指标查询 中的一致。支持同时填写多个 Dimension 名称，并基于多个 Dimension 名称进行分组。举例如下：当您仅填写ResourceID时，系统会按照ResourceID进行告警分组。当您同时填写ResourceID和NodeName时，系统会首先按照ResourceID进行告警分组。然后在每个分组内，再按照NodeName进行分组。
        """
        values: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
        """
        指标 Dimension 值，数组形式。多个值之间使用英文半角逗号,分割。允许使用通配符*选择全部实例的值。例如：["*"] 。
        """
elif False:
    RuleOriginalDimensionsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleOriginalDimensionsArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        :param pulumi.Input[builtins.str] key: 指标 Dimension 名称，例如ResourceID、NodeName等。不同云产品的 Dimensions 名称不同，详情请参见 云监控指标查询。ResourceID为必填项，且大小写必须与 云监控指标查询 中的一致。支持同时填写多个 Dimension 名称，并基于多个 Dimension 名称进行分组。举例如下：当您仅填写ResourceID时，系统会按照ResourceID进行告警分组。当您同时填写ResourceID和NodeName时，系统会首先按照ResourceID进行告警分组。然后在每个分组内，再按照NodeName进行分组。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] values: 指标 Dimension 值，数组形式。多个值之间使用英文半角逗号,分割。允许使用通配符*选择全部实例的值。例如：["*"] 。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        指标 Dimension 名称，例如ResourceID、NodeName等。不同云产品的 Dimensions 名称不同，详情请参见 云监控指标查询。ResourceID为必填项，且大小写必须与 云监控指标查询 中的一致。支持同时填写多个 Dimension 名称，并基于多个 Dimension 名称进行分组。举例如下：当您仅填写ResourceID时，系统会按照ResourceID进行告警分组。当您同时填写ResourceID和NodeName时，系统会首先按照ResourceID进行告警分组。然后在每个分组内，再按照NodeName进行分组。
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        指标 Dimension 值，数组形式。多个值之间使用英文半角逗号,分割。允许使用通配符*选择全部实例的值。例如：["*"] 。
        """
        return pulumi.get(self, "values")

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


if not MYPY:
    class RuleRecoveryNotifyArgsDict(TypedDict):
        enable: NotRequired[pulumi.Input[builtins.bool]]
        """
        是否开启告警恢复通知。取值：true：（默认）开启告警恢复通知。false：关闭告警恢复通知。
        """
elif False:
    RuleRecoveryNotifyArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleRecoveryNotifyArgs:
    def __init__(__self__, *,
                 enable: Optional[pulumi.Input[builtins.bool]] = None):
        """
        :param pulumi.Input[builtins.bool] enable: 是否开启告警恢复通知。取值：true：（默认）开启告警恢复通知。false：关闭告警恢复通知。
        """
        if enable is not None:
            pulumi.set(__self__, "enable", enable)

    @property
    @pulumi.getter
    def enable(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启告警恢复通知。取值：true：（默认）开启告警恢复通知。false：关闭告警恢复通知。
        """
        return pulumi.get(self, "enable")

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


if not MYPY:
    class RuleTagArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键。支持中文、英文大写字母、英文小写字母、数字和空格。支持以下特殊字符_.:/=+-@。不能以空格为开头或结尾。volc:和/sys:为系统预留的标签键，添加标签时，标签键的开头不能设置为任何大小写形式的volc:和/sys:。标签键的长度需为 1～128 个字符。
        """
        value: NotRequired[pulumi.Input[builtins.str]]
        """
        标签值。支持中文、英文大写字母、英文小写字母、数字和空格。支持以下特殊字符_.:/=+-@。不能以空格为开头或结尾。标签键的长度需为 0～255 个字符。
        """
elif False:
    RuleTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleTagArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 value: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] key: 标签键。支持中文、英文大写字母、英文小写字母、数字和空格。支持以下特殊字符_.:/=+-@。不能以空格为开头或结尾。volc:和/sys:为系统预留的标签键，添加标签时，标签键的开头不能设置为任何大小写形式的volc:和/sys:。标签键的长度需为 1～128 个字符。
        :param pulumi.Input[builtins.str] value: 标签值。支持中文、英文大写字母、英文小写字母、数字和空格。支持以下特殊字符_.:/=+-@。不能以空格为开头或结尾。标签键的长度需为 0～255 个字符。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键。支持中文、英文大写字母、英文小写字母、数字和空格。支持以下特殊字符_.:/=+-@。不能以空格为开头或结尾。volc:和/sys:为系统预留的标签键，添加标签时，标签键的开头不能设置为任何大小写形式的volc:和/sys:。标签键的长度需为 1～128 个字符。
        """
        return pulumi.get(self, "key")

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

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签值。支持中文、英文大写字母、英文小写字母、数字和空格。支持以下特殊字符_.:/=+-@。不能以空格为开头或结尾。标签键的长度需为 0～255 个字符。
        """
        return pulumi.get(self, "value")

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


