# 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
from . import outputs

__all__ = [
    'RuleCondition',
    'RuleDimensionConditions',
    'RuleDimensionConditionsMetaCondition',
    'RuleDimensionConditionsMetaConditionMeta',
    'RuleDimensionConditionsProjectCondition',
    'RuleDimensionConditionsTagCondition',
    'RuleDimensionConditionsTagConditionTag',
    'RuleLevelCondition',
    'RuleLevelConditionCondition',
    'RuleNoData',
    'RuleNotifyTemplate',
    'RuleOriginalDimensions',
    'RuleRecoveryNotify',
    'RuleTag',
    'GetRuleConditionResult',
    'GetRuleDimensionConditionsResult',
    'GetRuleDimensionConditionsMetaConditionResult',
    'GetRuleDimensionConditionsMetaConditionMetaResult',
    'GetRuleDimensionConditionsProjectConditionResult',
    'GetRuleDimensionConditionsTagConditionResult',
    'GetRuleDimensionConditionsTagConditionTagResult',
    'GetRuleLevelConditionResult',
    'GetRuleLevelConditionConditionResult',
    'GetRuleNoDataResult',
    'GetRuleNotifyTemplateResult',
    'GetRuleOriginalDimensionsResult',
    'GetRuleRecoveryNotifyResult',
    'GetRuleTagResult',
]

@pulumi.output_type
class RuleCondition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "comparisonOperator":
            suggest = "comparison_operator"
        elif key == "metricName":
            suggest = "metric_name"
        elif key == "metricUnit":
            suggest = "metric_unit"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in RuleCondition. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        RuleCondition.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        RuleCondition.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 comparison_operator: Optional[builtins.str] = None,
                 metric_name: Optional[builtins.str] = None,
                 metric_unit: Optional[builtins.str] = None,
                 period: Optional[builtins.str] = None,
                 statistics: Optional[builtins.str] = None,
                 threshold: Optional[builtins.str] = None):
        """
        :param 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 builtins.str metric_name: 监控指标的名称。详情请参见 云监控指标查询 下各产品的 MetricName。
        :param builtins.str metric_unit: 监控指标的单位。详情请参见 云监控指标查询 下各产品的 MetricUnit。说明同环比告警，MetricUnit 需要填写为 "Percent"。MetricUnit 中是否带有 IEC 表示不同的进位：带有 IEC：进位是 1024不带 IEC：进位是 1000。
        :param builtins.str period: 监控指标的统计周期。详情请参见 云监控指标查询 下各产品的 Period。
        :param builtins.str statistics: 统计方法，取值：avg：平均值。max：最大值。min：最小值。说明统计方法会应用到检测时间段内的数据上。例如，默认每次检测数据的时间跨度是 1 分钟，如果统计方法为 avg，那就是对 1 分钟内的数据取平均值。
        :param 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[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")

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

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

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

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

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


@pulumi.output_type
class RuleDimensionConditions(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "metaCondition":
            suggest = "meta_condition"
        elif key == "projectCondition":
            suggest = "project_condition"
        elif key == "tagCondition":
            suggest = "tag_condition"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in RuleDimensionConditions. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        RuleDimensionConditions.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        RuleDimensionConditions.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 meta_condition: Optional['outputs.RuleDimensionConditionsMetaCondition'] = None,
                 project_condition: Optional['outputs.RuleDimensionConditionsProjectCondition'] = None,
                 tag_condition: Optional['outputs.RuleDimensionConditionsTagCondition'] = None,
                 type: Optional[builtins.str] = None):
        """
        :param 'RuleDimensionConditionsMetaConditionArgs' meta_condition: 根据资源名称选择告警对象的条件。当Type为meta时必填。
        :param 'RuleDimensionConditionsProjectConditionArgs' project_condition: 根据项目选择告警对象的条件。当Type为project时必填。
        :param 'RuleDimensionConditionsTagConditionArgs' tag_condition: 根据标签选择告警对象的条件。当Type为tag时必填。
        :param 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['outputs.RuleDimensionConditionsMetaCondition']:
        """
        根据资源名称选择告警对象的条件。当Type为meta时必填。
        """
        return pulumi.get(self, "meta_condition")

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

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

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


@pulumi.output_type
class RuleDimensionConditionsMetaCondition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allDimensions":
            suggest = "all_dimensions"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in RuleDimensionConditionsMetaCondition. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        RuleDimensionConditionsMetaCondition.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        RuleDimensionConditionsMetaCondition.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 all_dimensions: Optional[builtins.bool] = None,
                 condition: Optional[builtins.str] = None,
                 metas: Optional[Sequence['outputs.RuleDimensionConditionsMetaConditionMeta']] = None):
        """
        :param builtins.bool all_dimensions: 是否为全量资源。true：全部资源。false：部分资源。
        :param 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[builtins.bool]:
        """
        是否为全量资源。true：全部资源。false：部分资源。
        """
        return pulumi.get(self, "all_dimensions")

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

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


@pulumi.output_type
class RuleDimensionConditionsMetaConditionMeta(dict):
    def __init__(__self__, *,
                 comparator: Optional[builtins.str] = None,
                 key: Optional[builtins.str] = None,
                 values: Optional[Sequence[builtins.str]] = None):
        """
        :param builtins.str comparator: 标签匹配时的比较符。contain：包含not*contain：不包含prefix*match：前缀匹配suffix*match：后缀匹配equal：等于not*equal：不等于exist：存在。
        :param builtins.str key: 标签键。
        :param Sequence[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[builtins.str]:
        """
        标签匹配时的比较符。contain：包含not*contain：不包含prefix*match：前缀匹配suffix*match：后缀匹配equal：等于not*equal：不等于exist：存在。
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter
    def values(self) -> Optional[Sequence[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")


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

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


@pulumi.output_type
class RuleDimensionConditionsTagCondition(dict):
    def __init__(__self__, *,
                 condition: Optional[builtins.str] = None,
                 tags: Optional[Sequence['outputs.RuleDimensionConditionsTagConditionTag']] = None):
        """
        :param 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[builtins.str]:
        """
        判断条件。and：全部满足。or：任意满足。
        """
        return pulumi.get(self, "condition")

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


@pulumi.output_type
class RuleDimensionConditionsTagConditionTag(dict):
    def __init__(__self__, *,
                 comparator: Optional[builtins.str] = None,
                 key: Optional[builtins.str] = None,
                 values: Optional[Sequence[builtins.str]] = None):
        """
        :param builtins.str comparator: 标签匹配时的比较符。contain：包含not*contain：不包含prefix*match：前缀匹配suffix*match：后缀匹配equal：等于not*equal：不等于exist：存在。
        :param builtins.str key: 标签键。
        :param Sequence[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[builtins.str]:
        """
        标签匹配时的比较符。contain：包含not*contain：不包含prefix*match：前缀匹配suffix*match：后缀匹配equal：等于not*equal：不等于exist：存在。
        """
        return pulumi.get(self, "comparator")

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

    @property
    @pulumi.getter
    def values(self) -> Optional[Sequence[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")


@pulumi.output_type
class RuleLevelCondition(dict):
    def __init__(__self__, *,
                 conditions: Optional[Sequence['outputs.RuleLevelConditionCondition']] = None,
                 level: Optional[builtins.str] = None):
        """
        :param 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[Sequence['outputs.RuleLevelConditionCondition']]:
        return pulumi.get(self, "conditions")

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


@pulumi.output_type
class RuleLevelConditionCondition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "comparisonOperator":
            suggest = "comparison_operator"
        elif key == "metricName":
            suggest = "metric_name"
        elif key == "metricUnit":
            suggest = "metric_unit"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in RuleLevelConditionCondition. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        RuleLevelConditionCondition.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        RuleLevelConditionCondition.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 comparison_operator: Optional[builtins.str] = None,
                 metric_name: Optional[builtins.str] = None,
                 metric_unit: Optional[builtins.str] = None,
                 period: Optional[builtins.str] = None,
                 statistics: Optional[builtins.str] = None,
                 threshold: Optional[builtins.str] = None):
        """
        :param 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 builtins.str metric_name: 监控指标的名称。详情请参见 云监控指标查询 下各产品的 MetricName。
        :param builtins.str metric_unit: 监控指标的单位。详情请参见 云监控指标查询 下各产品的 MetricUnit。说明同环比告警，MetricUnit 需要填写为 "Percent"。MetricUnit 中是否带有 IEC 表示不同的进位：带有 IEC：进位是 1024不带 IEC：进位是 1000。
        :param builtins.str period: 监控指标的统计周期。详情请参见 云监控指标查询 下各产品的 Period。
        :param builtins.str statistics: 统计方法，取值：avg：平均值。max：最大值。min：最小值。说明统计方法会应用到检测时间段内的数据上。例如，默认每次检测数据的时间跨度是 1 分钟，如果统计方法为 avg，那就是对 1 分钟内的数据取平均值。
        :param 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[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")

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

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

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

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

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


@pulumi.output_type
class RuleNoData(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "evaluationCount":
            suggest = "evaluation_count"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in RuleNoData. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        RuleNoData.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        RuleNoData.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 enable: Optional[builtins.bool] = None,
                 evaluation_count: Optional[builtins.int] = None):
        """
        :param builtins.bool enable: 是否开启无数据告警。取值：true：开启无数据告警。false：（默认）关闭无数据告警。
        :param 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[builtins.bool]:
        """
        是否开启无数据告警。取值：true：开启无数据告警。false：（默认）关闭无数据告警。
        """
        return pulumi.get(self, "enable")

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


@pulumi.output_type
class RuleNotifyTemplate(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "notifyTemplateId":
            suggest = "notify_template_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in RuleNotifyTemplate. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        RuleNotifyTemplate.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        RuleNotifyTemplate.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 channel: Optional[builtins.str] = None,
                 notify_template_id: Optional[builtins.str] = None):
        """
        :param builtins.str channel: 通知渠道，取值：email：邮箱sms：短信phone：电话lark：飞书dingtalk：钉钉wecom：企业微信slack：Slackapi：回调地址。
        :param 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[builtins.str]:
        """
        通知渠道，取值：email：邮箱sms：短信phone：电话lark：飞书dingtalk：钉钉wecom：企业微信slack：Slackapi：回调地址。
        """
        return pulumi.get(self, "channel")

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


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

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


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

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


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

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


@pulumi.output_type
class GetRuleConditionResult(dict):
    def __init__(__self__, *,
                 comparison_operator: builtins.str,
                 display_name: builtins.str,
                 metric_name: builtins.str,
                 metric_unit: builtins.str,
                 period: builtins.str,
                 statistics: builtins.str,
                 threshold: builtins.str):
        """
        :param 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 builtins.str display_name: 指标显示名称。
        :param builtins.str metric_name: 监控指标的名称。详情请参见 云监控指标查询 下各产品的 MetricName。
        :param builtins.str metric_unit: 监控指标的单位。详情请参见 云监控指标查询 下各产品的 MetricUnit。说明同环比告警，MetricUnit 需要填写为 "Percent"。MetricUnit 中是否带有 IEC 表示不同的进位：带有 IEC：进位是 1024不带 IEC：进位是 1000。
        :param builtins.str period: 监控指标的统计周期。详情请参见 云监控指标查询 下各产品的 Period。
        :param builtins.str statistics: 统计方法，取值：avg：平均值。max：最大值。min：最小值。说明统计方法会应用到检测时间段内的数据上。例如，默认每次检测数据的时间跨度是 1 分钟，如果统计方法为 avg，那就是对 1 分钟内的数据取平均值。
        :param builtins.str threshold: 指标阈值。支持输入正数或 0。最多支持三位小数。
        """
        pulumi.set(__self__, "comparison_operator", comparison_operator)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "metric_name", metric_name)
        pulumi.set(__self__, "metric_unit", metric_unit)
        pulumi.set(__self__, "period", period)
        pulumi.set(__self__, "statistics", statistics)
        pulumi.set(__self__, "threshold", threshold)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> 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")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        指标显示名称。
        """
        return pulumi.get(self, "display_name")

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

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

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

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

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


@pulumi.output_type
class GetRuleDimensionConditionsResult(dict):
    def __init__(__self__, *,
                 meta_condition: 'outputs.GetRuleDimensionConditionsMetaConditionResult',
                 project_condition: 'outputs.GetRuleDimensionConditionsProjectConditionResult',
                 tag_condition: 'outputs.GetRuleDimensionConditionsTagConditionResult',
                 type: builtins.str):
        """
        :param 'GetRuleDimensionConditionsMetaConditionArgs' meta_condition: 根据资源名称选择告警对象的条件。当Type为meta时必填。
        :param 'GetRuleDimensionConditionsProjectConditionArgs' project_condition: 根据项目选择告警对象的条件。当Type为project时必填。
        :param 'GetRuleDimensionConditionsTagConditionArgs' tag_condition: 根据标签选择告警对象的条件。当Type为tag时必填。
        :param builtins.str type: Dimensions 类型。取值：project：根据项目选择告警对象。tag：根据标签选择告警对象。meta：根据资源名称选择告警对象。
        """
        pulumi.set(__self__, "meta_condition", meta_condition)
        pulumi.set(__self__, "project_condition", project_condition)
        pulumi.set(__self__, "tag_condition", tag_condition)
        pulumi.set(__self__, "type", type)

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

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

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

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


@pulumi.output_type
class GetRuleDimensionConditionsMetaConditionResult(dict):
    def __init__(__self__, *,
                 all_dimensions: builtins.bool,
                 condition: builtins.str,
                 metas: Sequence['outputs.GetRuleDimensionConditionsMetaConditionMetaResult']):
        """
        :param builtins.bool all_dimensions: 是否为全量资源。true：全部资源。false：部分资源。
        :param builtins.str condition: 判断条件。and：全部满足。or：任意满足。
        :param Sequence['GetRuleDimensionConditionsMetaConditionMetaArgs'] metas: 判断条件。and：全部满足。or：任意满足。
        """
        pulumi.set(__self__, "all_dimensions", all_dimensions)
        pulumi.set(__self__, "condition", condition)
        pulumi.set(__self__, "metas", metas)

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

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

    @property
    @pulumi.getter
    def metas(self) -> Sequence['outputs.GetRuleDimensionConditionsMetaConditionMetaResult']:
        """
        判断条件。and：全部满足。or：任意满足。
        """
        return pulumi.get(self, "metas")


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

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

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[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")


@pulumi.output_type
class GetRuleDimensionConditionsProjectConditionResult(dict):
    def __init__(__self__, *,
                 projects: Sequence[builtins.str]):
        """
        :param Sequence[builtins.str] projects: 项目名称列表。数组形式。多个值之间使用英文半角逗号,分割。
        """
        pulumi.set(__self__, "projects", projects)

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


@pulumi.output_type
class GetRuleDimensionConditionsTagConditionResult(dict):
    def __init__(__self__, *,
                 condition: builtins.str,
                 tags: Sequence['outputs.GetRuleDimensionConditionsTagConditionTagResult']):
        """
        :param builtins.str condition: 判断条件。and：全部满足。or：任意满足。
        :param Sequence['GetRuleDimensionConditionsTagConditionTagArgs'] tags: 标签列表。最多支持配置 10 个标签列表。标签值不能超过 50 个字符。
        """
        pulumi.set(__self__, "condition", condition)
        pulumi.set(__self__, "tags", tags)

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

    @property
    @pulumi.getter
    def tags(self) -> Sequence['outputs.GetRuleDimensionConditionsTagConditionTagResult']:
        """
        标签列表。最多支持配置 10 个标签列表。标签值不能超过 50 个字符。
        """
        return pulumi.get(self, "tags")


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

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

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[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")


@pulumi.output_type
class GetRuleLevelConditionResult(dict):
    def __init__(__self__, *,
                 conditions: Sequence['outputs.GetRuleLevelConditionConditionResult'],
                 level: builtins.str):
        """
        :param Sequence['GetRuleLevelConditionConditionArgs'] conditions: 告警分级配置。
        :param builtins.str level: 告警通知等级，取值：notice：通知warning：警告critical：严重recovery：恢复。
        """
        pulumi.set(__self__, "conditions", conditions)
        pulumi.set(__self__, "level", level)

    @property
    @pulumi.getter
    def conditions(self) -> Sequence['outputs.GetRuleLevelConditionConditionResult']:
        """
        告警分级配置。
        """
        return pulumi.get(self, "conditions")

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


@pulumi.output_type
class GetRuleLevelConditionConditionResult(dict):
    def __init__(__self__, *,
                 comparison_operator: builtins.str,
                 display_name: builtins.str,
                 metric_name: builtins.str,
                 metric_unit: builtins.str,
                 period: builtins.str,
                 statistics: builtins.str,
                 threshold: builtins.str):
        """
        :param 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 builtins.str display_name: 指标显示名称。
        :param builtins.str metric_name: 监控指标的名称。详情请参见 云监控指标查询 下各产品的 MetricName。
        :param builtins.str metric_unit: 监控指标的单位。详情请参见 云监控指标查询 下各产品的 MetricUnit。说明同环比告警，MetricUnit 需要填写为 "Percent"。MetricUnit 中是否带有 IEC 表示不同的进位：带有 IEC：进位是 1024不带 IEC：进位是 1000。
        :param builtins.str period: 监控指标的统计周期。详情请参见 云监控指标查询 下各产品的 Period。
        :param builtins.str statistics: 统计方法，取值：avg：平均值。max：最大值。min：最小值。说明统计方法会应用到检测时间段内的数据上。例如，默认每次检测数据的时间跨度是 1 分钟，如果统计方法为 avg，那就是对 1 分钟内的数据取平均值。
        :param builtins.str threshold: 指标阈值。支持输入正数或 0。最多支持三位小数。
        """
        pulumi.set(__self__, "comparison_operator", comparison_operator)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "metric_name", metric_name)
        pulumi.set(__self__, "metric_unit", metric_unit)
        pulumi.set(__self__, "period", period)
        pulumi.set(__self__, "statistics", statistics)
        pulumi.set(__self__, "threshold", threshold)

    @property
    @pulumi.getter(name="comparisonOperator")
    def comparison_operator(self) -> 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")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        指标显示名称。
        """
        return pulumi.get(self, "display_name")

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

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

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

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

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


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

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

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


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

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

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


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

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

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


@pulumi.output_type
class GetRuleRecoveryNotifyResult(dict):
    def __init__(__self__, *,
                 enable: builtins.bool):
        """
        :param builtins.bool enable: 是否开启告警恢复通知。取值：true：（默认）开启告警恢复通知。false：关闭告警恢复通知。
        """
        pulumi.set(__self__, "enable", enable)

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


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

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

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


