更新时间:2026-07-08 GMT+08:00
分享

通过函数接收告警通知

当CES云监控现有的通知渠道(邮箱、短信、语音、飞书、钉钉、企业微信等)不能满足您的需求时,可以通过FunctionGraph函数计算编写代码来实现更为定制化的诉求。

目前部分区域已将通知对象更改为联系人,通知组更改为联系组,其他区域持续上线中,具体请以控制台页面显示为准。本章节以新版本页面为您介绍告警通知的配置方式。

前提条件

请确保您已开通FunctionGraph函数云服务。具体操作,请参见FunctionGraph业务使用流程

应用场景

  • 通过函数服务对告警通知内容的格式进行处理,来实现云监控通知渠道以外的工具接收告警通知。
  • 通过函数服务处理告警通知内容,以实现云监控告警通知内容的自定义。

创建FunctionGraph函数

  1. 登录函数工作流控制台
  2. 在左侧的导航栏选择“函数 > 函数列表”。
  3. 单击右上方的“创建函数”,进入“创建函数”页面。
  4. 在“创建函数”页面,创建方式选择“创建空白函数”,函数类型选择“事件函数”,输入函数名称,运行时选择“Python 3.9”,其他参数保持默认即可。

    关于创建函数的更多参数说明请参见创建事件函数

    图1 创建函数
  5. 配置完成后,单击“创建函数”。

    页面跳转至函数详情页面,并且新增一条函数。

  6. 在函数详情页面的代码源中插入需要的自定义字段及其他参数信息,参考示例如下:
    • 告警通知内容模板的通知类型为指标。
    • 告警接收方式为URL,且URL地址为:http://10.181.139.219:5000/callback。
    • 告警通知内容字段包含AlarmRecordID、AlarmTime、AlarmLevel。通过函数接收告警通知支持的通知内容模板字段为系统模板,支持的字段结构请参见指标类型支持的通知内容事件类型支持的通知内容,您可以根据需要进行调整。
    # -*- coding:utf-8 -*-
    import json
    import requests
    def handler(event, context):
        record = event["record"][0]
        smn = record['smn']
        message_str = smn['message']
        message = json.loads(message_str)
        template_variable = message['template_variable']
        AlarmRecordID = message['AlarmRecordID']
        AlarmTime = template_variable['AlarmTime']
        AlarmLevel = template_variable['AlarmLevel']
        Source = 'Huawei'
        NewEvent = {
            "AlarmRecordID": AlarmRecordID,
            "AlarmTime": AlarmTime,
            "AlarmLevel": AlarmLevel,
            "Source": Source
        }
        print(NewEvent)
        URL = 'http://10.181.139.219:5000/callback'
        r = requests.post(URL, json=NewEvent)
        return {
            "statusCode": 200,
            "isBase64Encoded": False,
            "body": json.dumps(NewEvent),
            "headers": {
                "Content-Type": "application/json"
            }
        }
  7. 单击“部署代码”完成部署。

创建联系人

  1. 登录云监控服务管理控制台
  1. 在左侧导航栏选择“告警 > 告警通知”,进入告警通知界面。
  2. 在“联系人”页签,单击“创建联系人”,根据界面提示配置参数。
    图2 创建联系人
    表1 创建联系人

    参数

    取值样例

    参数说明

    联系人名称

    notification_functiongraph

    联系人名称,输入长度范围为1到42个字符。

    选择渠道

    FunctionGraph(函数)

    联系人接收告警通知的渠道,渠道选择“FunctionGraph(函数)”,并在选择对应的函数和版本。

    • 函数:单击函数输入框,在弹出的“选择终端”弹窗中选择创建FunctionGraph函数配置的函数。
    • 版本:选择函数名称后,在页面回显函数终端信息地址及版本号信息,版本需要手动选择。
  3. 单击“立即创建”保存配置。

    在联系人列表中新增名称为notification_functiongraph的联系人。

创建联系组

  1. 登录云监控服务管理控制台
  1. 在左侧导航栏选择“告警 > 告警通知”,进入告警通知界面。
  2. 在“联系组”页签,单击“创建联系组”,根据界面提示配置参数。
    图3 创建联系组
    表2

    参数

    取值样例

    参数解释

    组名称

    group_functiongraph

    联系组名称。只能由中文、英文字母、数字、下划线、 中划线组成,长度不得超过64个字符。

    归属企业项目

    default

    联系组所属的企业项目。只有拥有该企业项目权限的用户才可以查看和管理该告警联系组。创建企业项目请参考:创建企业项目

    联系人

    notification_functiongraph

    选择已添加的联系人,每次最多添加10个联系人。

    单击“选择联系人”按钮,在“选择联系人”页面,勾选已创建的联系人并单击,将联系人添加到已选项列表中,单击“确定”。

  3. 单击“立即创建”,完成创建联系组。

    在联系组列表中新增一条名称为group_functiongraph的联系组。

您还可以将联系人添加至已创建的联系组中,具体操作请参见添加联系人至联系组。如果您期望通过告警策略的通知方式接收告警通知,可以在配置告警策略时选择该联系组作为通知对象,具体操作请参见创建通知策略

创建告警规则

  1. 登录云监控服务管理控制台
  1. 在左侧导航栏选择“告警 > 规则配置”。

    部分区域操作路径为:“告警 > 告警规则”,请以控制台显示为准。

  2. 单击“创建告警规则”按钮。
  3. 在“创建告警规则”页面,配置告警规则的基本信息、告警内容、告警策略及告警通知,告警通知方式选择联系组,并选择创建联系组中创建的group_functiongraph

    告警规则参数说明请参见创建告警规则和通知

  4. 配置完成后,单击“立即创建”。

查看告警通知

当监控指标触发告警规则时,会触发调用目标函数,向告警通知接收目标发送告警通知。

您还可以从函数服务控制台查看目标函数的调用日志,并判断调用日志是否符合预期,具体操作请参见配置和查看函数的调用日志

指标类型支持的通知内容

本章节以弹性云服务器的CPU使用率为例,为您介绍指标类型通知内容支持的字段结构,具体示例如下:

若您对告警通知内容的字段有疑问,可以通过新建工单联系技术支持人员。

{
	"message_type": "alarm",
	"alarm_id": "al260512T094501SwVt7****",
	"alarm_name": "alarm-****",
	"alarm_status": "alarm",
	"time": 1778550457194,
	"namespace": "SYS.ECS",
	"metric_name": "cpu_util",
	"dimension": "instance_id:6b42c3f4-666d-409c-afe7-c16268d7****",
	"period": 1,
	"filter": "Raw data",
	"comparison_operator": "\u003e=",
	"value": 10,
	"unit": "%",
	"count": 1,
	"alarmValue": [{
		"time": 1778550457000,
		"value": 0.037267080745341616
	}],
	"sms_content": "[华北-北京四(cn-north-4)][企业项目:default][重要告警]尊敬的***:弹性云服务器-云服务器 “as-config-****” (私网IP:192.168.X.X,资源ID:6b42c3f4-666d-409c-afe7-c16268d7****)的CPU使用率连续1次原始值 \u003e= 10 %,\n维度信息:CPU使用率:云服务器:6b42c3f4-666d-409c-afe7-c16268d70da1\n当前数据:0.04 %,\n于2026/05/12 09:47:37 GMT+08:00触发告警,告警流水号:ah260512T094737SSSej****,告警规则:alarm-****,告警通知类型:指标,详情请访问云监控服务。\n",
	"default_content": "[华北-北京四(cn-north-4)][企业项目:default][重要告警]尊敬的***:弹性云服务器-云服务器 “as-config-****” (私网IP:192.168.X.X,资源ID:6b42c3f4-666d-409c-afe7-c16268d7****)的CPU使用率连续1次原始值 \u003e= 10 %,\n维度信息:CPU使用率:云服务器:6b42c3f4-666d-409c-afe7-c16268d7****\n当前数据:10.04 %,\n于2026/05/12 09:47:37 GMT+08:00触发告警,告警流水号:ah260512T094737SSSe****,告警规则:alarm-****,告警通知类型:指标,详情请访问云监控服务。\n",
	"template_variable": {
		"AlarmNotificationType": "指标",
		"AccountName": "***",
		"Namespace": "弹性云服务器",
		"DimensionName": "云服务器",
		"ResourceName": "as-config-****",
		"ResourceTags": "11=22",
		"MetricName": "CPU使用率",
		"IsAlarm": true,
		"IsCycleTrigger": false,
		"AlarmLevel": "重要",
		"Region": "华北-北京四",
		"RegionId": "cn-north-4",
		"ResourceId": "6b42c3f4-666d-409c-afe7-c16268d7****",
		"PrivateIp": "192.168.X.X",
		"CurrentData": "10.04 %",
		"AlarmTime": "2026/05/12 09:47:37 GMT+08:00",
		"DataPoint": {
			"2026/05/12 09:47:37 GMT+08:00": "10.04 %"
		},
		"DataPointTime": ["2026/05/12 09:47:37 GMT+08:00"],
		"AlarmDurationTime": "0",
		"AlarmRecordID": "ah260512T094737SSSej****",
		"AlarmRuleName": "alarm-****",
		"AlarmId": "al260512T094501SwVt7****",
		"MonitoringRange": "全部资源",
		"IsOriginalValue": true,
		"Filter": "原始值",
		"ComparisonOperator": "\u003e=",
		"Value": "10 %",
		"Unit": "%",
		"Count": 1,
		"Link": "https://console.huaweicloud.com/ces/?region=cn-north-4#/alarm/histories?alarmRecordId=ah260512T094737SSSej****",
		"EpName": "default",
		"IsIEC": false,
		"IsAgentEvent": false,
		"ShowImpactAndSolution": false,
		"ResourceDimensionInfos": [{
			"MetricName": "CPU使用率",
			"DimensionInfos": [{
				"Name": "云服务器",
				"Value": "6b42c3f4-666d-409c-afe7-c16268d7****"
			}]
		}]
	},
	"AlarmRecordID": "ah260512T094737SSSej****"
}

事件类型支持的通知内容

本章节以重启弹性云服务器为例,为您介绍事件类型通知内容支持的字段结构,具体示例如下:

若您对告警通知内容的字段有疑问,可以通过新建工单联系技术支持人员。

{
	"message_type": "alarm",
	"alarm_id": "al260514T104252SVeqi****",
	"alarm_name": "alarm-8***",
	"alarm_status": "alarm",
	"time": 1778726924655,
	"namespace": "SYS.ECS",
	"metric_name": "rebootServer",
	"dimension": "instance_id:095b058c-ae86-4544-b3b9-6dd4583a****",
	"period": 0,
	"filter": "average",
	"comparison_operator": "\\u003e=",
	"value": 1,
	"unit": "count",
	"count": 1,
	"alarmValue": [{
		"time": 1778726607943,
		"value": 1
	}],
	"sms_content": "[华北-北京四(cn-north-4)][企业项目:default][重要告警]尊敬的***:弹性云服务器“ecs-***”(私网IP:192.168.X.X,ID:095b058c-ae86-4544-b3b9-6dd4583a****)的重启虚拟机于2026/05/14 10:48:44 GMT+08:00触发告警,告警流水号:ah260514T104844Shz0J****,告警规则:alarm-8***,告警通知类型:事件,事件影响范围: 虚拟机重启,建议处理措施: 确认业务是否恢复,详情请访问云监控服务。",
	"default_content": "[华北-北京四(cn-north-4)][企业项目:default][重要告警]尊敬的***:弹性云服务器“ecs-***”(私网IP:192.168.X.X,ID:095b058c-ae86-4544-b3b9-6dd4583a****)的重启虚拟机于2026/05/14 10:48:44 GMT+08:00触发告警,告警流水号:ah260514T104844Shz0J****,告警规则:alarm-8***,告警通知类型:事件,事件影响范围: 虚拟机重启,建议处理措施: 确认业务是否恢复,详情请访问云监控服务。",
	"template_variable": {
		"PrivateIPV6": "XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX",
		"AlarmNotificationType": "事件",
		"AccountName": "***",
		"Namespace": "弹性云服务器",
		"ResourceName": "ecs-****",
		"ResourceTags": "CES_TAG_XXX",
		"MetricName": "重启虚拟机",
		"IsAlarm": true,
		"IsCycleTrigger": false,
		"AlarmLevel": "重要",
		"Region": "华北-北京四",
		"RegionId": "cn-north-4",
		"ResourceId": "095b058c-ae86-4544-b3b9-6dd4583a****",
		"PrivateIp": "192.168.X.X",
		"CurrentData": "1.00 ",
		"AlarmTime": "2026/05/14 10:48:44 GMT+08:00",
		"DataPoint": {
			"2026/05/14 10:43:27 GMT+08:00": "1.00"
		},
		"DataPointTime": ["2026/05/14 10:43:27 GMT+08:00"],
		"AlarmRecordID": "ah260514T104844Shz0J****",
		"AlarmRuleName": "alarm-8***",
		"AlarmId": "al260514T104252SVeqi****",
		"MonitoringRange": "全部资源",
		"IsOriginalValue": false,
		"Filter": "平均值",
		"ComparisonOperator": "\\u003e=",
		"Count": 1,
		"Link": "https://console.huaweicloud.com/ces/?region=cn-north-4#/alarm/histories?alarmRecordId=ah260514T104844Shz0J****",
		"EpName": "default",
		"IsIEC": false,
		"IsAgentEvent": false,
		"ShowImpactAndSolution": true,
		"ImpactScope": "虚拟机重启",
		"RecommendedSolution": "确认业务是否恢复"
	},
	"AlarmRecordID": "ah260514T104844Shz0J****"
}

相关文档