报警文本模板(Text Template)

在报警器触发或订阅事件发生时,用户指定的SNS主题会收到相应的报警信息或事件信息,用户可以自定义报警文本模板对信息进行格式化。

默认的邮件报警文本模板如下:

报警器 ${ALARM_NAME} 状态改变成 ${ALARM_CURRENT_STATUS}

报警器详情:
UUID: ${ALARM_UUID}
资源名字空间: ${ALARM_NAMESPACE}
触发条件: ${ALARM_METRIC} ${ALARM_COMPARISON_OPERATOR} ${ALARM_THRESHOLD}
触发条件持续时间: ${ALARM_DURATION} seconds
先前状态: ${ALARM_PREVIOUS_STATUS}
当前值: ${ALARM_CURRENT_VALUE}
标签: ${ALARM_LABELS.join(",")}

如果用户没有设置报警文本模板,收到的报警邮件内容跟上面类似。文本中对应的变量会被替换成相应的报警器内容,如${ALARM_NAME}可能会变成Web服务器CPU。用户可以使用这些变量自定义自己的报警文本模板。

目前邮件和钉钉都可以自定义报警模板,HTTP使用JSON格式不能自定义。HTTP报警文本实例如下:

{
    "ALARM_UUID": "27f8791237ed45b4815be744a2b2fd8a",
    "ALARM_NAMESPACE": "ZStack/VM",
    "ALARM_LABELS": ["VMUuidEqual26643ce4b5604b128e3f7bb3d61ef779"],
    "ALARM_PREVIOUS_STATUS": "InsufficientData",
    "ALARM_THRESHOLD": 10.0,
    "ALARM_METRIC": "CPUUsedUtilization",
    "ALARM_DURATION": 1,
    "ALARM_CURRENT_VALUE": 101.0,
    "ALARM_COMPARISON_OPERATOR": "GreaterThan",
    "ALARM_CURRENT_STATUS": "Alarm",
    "ALARM_NAME": "alarm"
}

模板变量

ZWatch对于报警器和事件订阅了一组模板变量供报警模板引用,在生成报警文本时,ZWatch使用报警器或事件相应的值替换这些变量。报警文本模板使用的语法基于Groovy GString Template。大多数用户只需要使用${}这种最基本的方式引用变量值即可。

报警器和事件订阅支持不同的变量:
  • 报警器变量
    • ALARM_NAME:报警器名称
    • ALARM_UUID:报警器UUID
    • ALARMCOMPARISONOPERATOR: 报警器操作符
    • ALARM_METRIC:报警器metric名称
    • ALARM_NAMESPACE:报警器namespace名称
    • ALARM_THRESHOLD:报警器阈值
    • ALARMLABELS:报警器标签数组,用户可以使用*${ALARMLABELS.join(",")}*将标签组成一个以逗号分隔的字符串
    • ALARM_DURATION:metric值超过阈值持续时间
    • ALARMPREVIOUSSTATUS:报警器触发前的报警状态
    • ALARMCURRENTSTATUS: 报警器当前状态
    • ALARMCURRENTVALUE:报警器触发时的metric值
  • 订阅事件变量
    • EVENT_NAMESPACE:事件namespace名称
    • EVENT_NAME:事件名称
    • EVENTLABELS:事件标签数组,用户可以使用*${EVENTLABELS.join(",")}*将标签组成一个以逗号分隔的字符串
    • EVENTEMERGENCYLEVEL:事件紧急程度
    • EVENTRESOURCEID:发生事件的资源ID
    • EVENTRESOURCENAME:发生事件的资源的名称
    • EVENT_ERROR:如果事件跟一个错误相关,例如引发物理机失联事件的错误(如网络错误),该字段包含错误的字符串表述。如果没有错误,该字段为“”空字符串
    • EVENT_TIME:事件发生的时间,字符串
    • PARAMEVENTSUBSCRIPTION_UUID:订阅事件的UUID