规则管理
目录
规则管理
一、规则管理概述
规则管理是一个用于集中管理和配置系统中各类规则的功能模块,支持创建,更新、删除和启用或者停用规则。规则管理主要包括四种类型的规则管理:
| 规则类型 | 说明 |
|---|---|
| 告警规则 | 根据实际需要对某个特定的监控指标设置自定义告警规则 |
| 流控规则 | 通过预设的规则对请求流量进行控制和管理 |
| 访问控制规则 | 通过预设的规则对用户或应用的访问进行管理和控制 |
| HTTP/REST API数据处理规则 | 通过动态加载、配置数据处理规则,以扩展系统功能、提高灵活性和可维护性 |
二、使用指南
(一) 告警规则
告警规则(Alert Rules)是指在系统、应用或服务运行过程中,根据预设的条件对监控数据进行实时分析,当数据满足某些异常或阈值条件时,自动触发告警通知相关人员或系统,以便及时发现和处理潜在问题。
告警规则标签页,展示所有已经创建的告警规则。支持新建,查看,编辑,删除,复制和启动/停止操作。点击规则名称可以查看告警规则详情。
可以根据规则名称、监控类型和告警级别对告警规则进行筛选查找。
1. 创建告警规则
登录管理中心,在左侧导航菜单选择 "规则管理",默认进入 "告警规则" 标签页。 单击“新建”,弹出创建告警规则对话框。
| 参数 | 参数说明 | 必填 |
|---|---|---|
| 规则名称 | 用户自定义告警规则的名称。 | 是 |
| 规则描述 | 用户对该告警规则的详细描述信息。 | 否 |
| 规则状态 | 定义该告警规则是否为启用状态。 | 否 |
| 监控类型 | 分为“流程监控”、“ESB运行时监控”,"API监控“,”网关运行时监控“。 | 是 |
| 监控范围 | 该属性有多个选项,与监控类型有关;不同的监控类型有不同的选项,用户可根据需求进行选择。 | 否 |
| 通知时间 | 设置告警消息通知的时间段。 | 是 |
| 告警频率 | 设置告警信息的通知频率,分为两种: 1. 单位时间内只通知一次:在指定时间窗口内只发送一次告警信息 2. 每次通知:每个告警都会发送一次告警信息 | 是 |
| 到期时间 | 告警规则结束(到期)的时间。 | 否 |
| 告警级别 | 设置告警的级别; 包括“提示”、“一般”、“重要”、“紧急”四个级别。 | 是 |
| 触发条件 | 可选“事件告警”、“阈值告警”、“关键字告警(API)”。 事件告警,当事件发生会发送告警信息;阈值告警,当配置的阈值条件达到时会发送告警信息;关键字告警(API),当API调用或者响应包含关键字时会发送告警信息。 | 是 |
| 通知对象 | 以“人”为单位或以“组”为单位。 | 否 |
| 通知方式 | 告警规则触发后可通过“微信”、“企业微信”、“邮件”、“短信”、“钉钉机器人”向特定“通知对象”进行消息通知。 关于“微信”、“企业微信”、“邮件”等消息通道的设置,请参考[配置消息通道]。 | 否 |
| 接口回调 | 告警规则触发之后可以调用用户预先配置的接口,单击下方的蓝色“添加”文字,可添加多个。 | 否 |
温馨提示: 为了让 API 关键字告警顺利生效,请提前完成以下两处配置—— API 高级开关 进入「API 配置 ➞ 高级配置」,将「打印后端日志」开关拨到 ON。 集群日志策略 前往「集群管理 ➞ 日志配置」,把「缺省是否记录报文日志」设为 是。 完成以上两步,告警即可精准捕捉关键信息,日志也将一目了然。
配置完成后,单击“确定”,完成告警规则的创建操作,若界面弹出“创建成功”提示信息,则说明告警规则创建成功。系统会按照告警规则配置发送告警信息给指定接收人。
2. 编辑告警规则
登录管理中心,在左侧导航菜单选择 "规则管理",默认进入 "告警规则" 标签页。点击"编辑",弹出编辑告警规则对话框。
编辑时,规则名称、监控类型和告警级别无法修改
3. 复制告警规则
登录管理中心,在左侧导航菜单选择 "规则管理",默认进入 "告警规则" 标签页。点击按钮"复制",弹出复制告警规则对话框
4. 启动告警规则
登录管理中心,在左侧导航菜单选择 "规则管理",默认进入 "告警规则" 标签页。点击按钮"启动",弹出启动告警规则确认对话框
5. 停止告警规则
登录管理中心,在左侧导航菜单选择 "规则管理",默认进入 "告警规则" 标签页。点击按钮"停止",弹出停止告警规则确认对话框
6. 删除告警规则
登录管理中心,在左侧导航菜单选择 "规则管理",默认进入 "告警规则" 标签页。点击按钮"删除",弹出删除告警规则确认对话框
7. 批量删除告警规则
登录管理中心,在左侧导航菜单选择 "规则管理",默认进入 "告警规则" 标签页。勾选表格中需要删除的告警规则复选框,点击表格上面的按钮"删除",弹出批量删除告警规则确认对话框
(二) 流控规则
流控规则用于对系统的访问流量进行监控和限制,防止因流量过大导致系统资源耗尽或服务不可用。流控规则用于限制API、应用或者集成的访问频率,支持以下控制方式:
- 次数控制 :限制单位时间内的访问次数
- 流量控制 :限制单位时间内的访问流量大小
1. 创建流控规则
在运维中心左侧导航栏中,选择“规则管理”>“流控规则”,进入流控规则页面。单击“新建”,弹出创建流控规则窗口。
| 参数 | 参数说明 |
|---|---|
| 适用范围 | 流控规则适用的范围,可以选择“API","流程集成” |
| 策略类型 | 可选次数控制和流量控制。 • 次数控制:在一个控制周期内访问次数超过控制值后请求将被拒绝。 • 流量控制:在一个控制周期内访问流量超过控制值后请求将被拒绝。 |
| 流控周期 | 正整数,最多4位,单位可选分钟、小时、天。 |
| 流控值 | 正整数,最多9位。 • 策略类型为“次数控制”时,单位为次。 • 策略类型为“流量控制”时,单位可选K、M。 |
配置完成后,单击“确定”,完成流控规则的创建操作。若界面弹出“创建成功”提示信息,则说明流控规则创建成功。
2. 绑定资源
选择指定的流控规则,点击“绑定资源”按钮,弹出绑定资源对话框,针对使用范围打开不同类型的资源绑定列表:
根据需要绑定的资源类型,选择“绑定资源”。选择需要绑定的流程或者API加入到已选列表种,点击确定,即完成相应流程/API和流控规则的绑定操作。即流控规则会在已选的流程或者API上生效。
3. 操作按钮
3.1 停止按钮
当流控规则的状态为启用时,可以点击“停止”。当前流控规则绑定的所有流程或者API的流控效果全部失效。
3.2 编辑按钮
需要修改流控配置时,可以点击“编辑”,修改完相关配置后点击确定。当规则状态为启用时,修改后规则会自动同步给已绑定流程或者API;规则状态为停用时,下一次启动时会同步给已绑定流程或者API。
3.3 删除按钮
需要删除流控配置时,可以点击“删除”。当规则存在已绑定的流程或者API时则无法删除。
(三) 访问控制规则
访问控制规则用于对系统资源的访问进行精细化管理,主要包括IP控制和时间控制两种类型。通过配置访问控制规则,可以实现对特定IP或特定时间段的访问权限进行允许或拒绝操作,从而提升系统的安全性和灵活性。
1. 创建访问控制规则
在运维中心左侧导航栏中,选择“规则管理”>“访问控制规则”,进入访问控制规则页面。单击“新建”,弹出创建访问控制规则窗口。
| 参数名称 | 参数说明 |
|---|---|
| 策略名称 | 最多20位,只支持数字、字母、下划线、中文。 |
| 策略类型 | “IP控制”或“时间控制”。 |
| 类型 | 策略类型为IP控制时可选“允许”或“拒绝”;策略类型为时间控制时只可选“允许”。 |
| 描述 | 策略的描述信息,最多200位。 |
| IP地址 | 策略类型为“IP控制”时生效。 可输入IP或IP段,多个以“;”分隔,最多填写10个。 如:127.0.0.1/10;127.0.0.99。 |
| 应用名称 | 用于控制应用所在IP地址。 |
| 服务日期 | 勾选允许访问的日期。 |
| 服务时间 | 设置允许访问的时间段。 |
配置完成后,单击“确定”,完成访问控制规则的创建操作。若界面弹出“创建成功”提示信息,则说明访问控制规则创建成功。
2. 绑定资源
选择指定的访问控制规则,点击“绑定资源”按钮,弹出绑定资源对话框:
根据需要绑定的资源类型,选择“绑定流程”或者“绑定API”tab页。将需要绑定的流程或者API加入到已选列表中,点击确定,即完成相应流程/API和访问控制规则的绑定操作。即访问控制规则会在已选的流程或者API上生效。
3. 操作按钮
3.1 停止按钮
当访问控制规则的状态为启用时,可以点击“停止”。当前访问控制规则绑定的所有流程或者API的流控效果全部失效。
3.2 编辑按钮
需要修改访问控制配置时,可以点击“编辑”,修改完相关配置后点击确定。当规则状态为启用时,修改后规则会自动同步给已绑定流程或者API;规则状态为停用时,下一次启动时会同步给已绑定流程或者API。
3.3 删除按钮
需要删除访问控制配置时,可以点击“删除”。当规则存在已绑定的流程或者API时则无法删除。
(四) HTTP/REST API数据处理规则
HTTP/REST API数据处理规则是API网关系统中预置的标准化处理单元,用于实现特定的数据处理、转换或验证功能。每个功能组件专注于单一职责,可在API请求或响应的处理流程中被配置和组合,以实现复杂的业务逻辑。通过可视化界面进行配置,无需编写代码。
创建HTTP/REST API数据处理规则
登录管理中心管理控制台,在左侧导航栏中,选择“规则管理”>“HTTP/REST API数据处理规则”,进入HTTP/REST API数据处理规则页面。单击“新建”,弹出创建HTTP/REST API数据处理规则窗口。
| 参数名称 | 参数说明 |
|---|---|
| 名称 | 插件名称。支持输入长度在20个字符以内的数字、字母、下划线、中文。 |
| 描述 | 插件描述信息。 |
拖动右边功能组件到请求或者响应流程中,并填写必要信息。单击“确定”,页面提示“创建成功”。
绑定API
选择指定的HTTP/REST API数据处理规则,点击”绑定API“按钮,弹出绑定API对话框:
将需要绑定的API加入到已选列表中,点击确定,即完成相应API和数据处理规则的绑定操作。即数据处理规则会在已选的API上生效。
HTTP验证
HTTP验证是指用户调用API时将签名身份验证以请求头的方式添加到请求中,API网关对签名信息进行校验以确定传入请求的完整性。
签名内容
签名内容可以是请求头(无请求体时)或者请求头+请求体(有请求体时),签名内容的格式如下:
a) header格式为无换行符的json字符串,
b) Key和Value间使用冒号+空格隔开;
c) key-value键值对间使用逗号+空格隔开;
d) 多个请求头顺序按照ASCII码确定;
请求头:签名内容格式为【base64(header字符串)】
请求头+请求体:签名内容格式为【base64(header字符串)_base64(body)】。
示例如下:
header:
| 请求头 | 值 |
|---|---|
| X-Test-Name | alice |
| X-Test-Host | 192.168.1.10 |
| X-Test-Date | 2022-12-01 |
body:hello
a) header原文:{"X-Test-Date": "2022-12-01", "X-Test-Host": "192.168.1.10", "X-Test-Name": "alice"}
b) headre的base64编码:eyJYLVRlc3QtRGF0ZSI6ICIyMDIyLTEyLTAxIiwgIlgtVGVzdC1Ib3N0IjogIjE5Mi4xNjguMS4xMCIsICJYLVRlc3QtTmFtZSI6ICJhbGljZSJ9
c) body的base64编码:aGVsbG8=
d) 签名内容:eyJYLVRlc3QtRGF0ZSI6ICIyMDIyLTEyLTAxIiwgIlgtVGVzdC1Ib3N0IjogIjE5Mi4xNjguMS4xMCIsICJYLVRlc3QtTmFtZSI6ICJhbGljZSJ9_aGVsbG8=
签名
针对以上内容计算的签名将携带在请求头中,其格式如下:
| key | value |
|---|---|
| Signature | Signature keyId="rsa-key-1",created=1630590825,expires=" + s +",algorithm="hmac-sha256",headers="X-Test-Date X-Test-Host X-Test-Name",signature="签名结果" |
验证配置
| 参数 | 说明 |
|---|---|
| 描述 | 详细的描述说明 |
| Secret | 签名算法的密钥,请求报文中的签名使用此密钥计算签名 |
| 签名算法 | 请求报文中签名使用的签名算法 |
| 强制请求头 | 请求报文中签名内容包含的请求头 |
| 时钟偏差 | 用于防止重放攻击,超过时间的请求将会被拒绝。 |
HTTP签名
HTTP签名是在API调用时,API网关将签名信息以请求头的方式添加到请求报文中,后端服务通过验证签名信息确定接收请求的完整性。
签名配置
拖拽页面右侧的HTTP****签名插件到左侧Request或Response区域。
| 参数 | 说明 |
|---|---|
| SecretID | 签名的SecretID,将带在生成的签名里作为Signature keyId的值 |
| Secret | 签名算法的密钥 |
| 算法 | 选择对应的签名算法:HmacSHA1,HmacSHA512,HmacSHA256 |
| Headers | 需要进行签名的请求头 |
| 创建时间 | 勾选后,在签名中将包含创建时间 |
| 过期时间 | 勾选后,需要填写过期时间,以秒为单位。验证时会验证过期时间,超过后则失败。用于防止重放攻击 |
签名内容的格式:与HTTP验证中描述的格式一致
签名格式:与HTTP验证中描述的格式一致,其中Signature keyId的值为SecretID
| key | value |
|---|---|
| Signature | Signature keyId="SecretID的值",created=1630590825,expires=1630590885,algorithm="hmac-sha512",headers="test",signature="签名结果" |
数据加密
数据加组件利用不同算法对请求或响应body进行加密,实现信息屏蔽,从而起到保护信息的安全。接收方将收到加密后的内容,以此保障用户数据的安全性。数据加密组件支持对称加密(AES-256、AES-128、SM4)和非对称加密(RSA、SM2)算法。
加密配置
拖拽页面右侧的数据加密插件到左侧Request或Response区域。
| 参数 | 说明 |
|---|---|
| 加密类型 | 加密算法类型,对称加密,非对称加密 |
| 算法 | 对称加密算法:AES-128,AES-256,SM4;非对称加密:RSA,SM2 |
| 密钥 | 对称加密算法的加密密钥 |
| 公钥 | 非对称加密算法的公钥 |
| 私钥 | 非对称加密算法的私钥 |
数据解密
数据解密插件通过选定的算法对请求或响应body进行解密,将解密后的结果发送给后端或者返回。当插件位于请求流时请求body必须是通过指定算法进行加密的内容,位于响应流时响应body必须是通过指定算法进行加密的内容。
| 参数 | 说明 |
|---|---|
| 加密类型 | 加密算法类型,对称加密,非对称加密 |
| 算法 | 对称加密算法:AES-128,AES-256,SM4;非对称加密:RSA,SM2 |
| 密钥 | 对称加密算法的加密密钥 |
| 公钥 | 非对称加密算法的公钥 |
| 私钥 | 非对称加密算法的私钥 |
Headers转换
Header转换组件可以对API的请求报文或者响应报文中Header进行增加或者删除操作。
| 参数 | 说明 |
|---|---|
| 增加Headers | Key,Value,可以输入多个键值对,输入的键值对将增加到报文头中 |
| 删除Headers | Key,可以输入多个Key,Key值匹配的Headers将从报文中删除 |
Query参数转换(仅请求)
Query参数转换组件支持对请求中的参数进行增加或者删除操作(仅支持请求)。
- 专用于请求(Request)参数处理
- 支持两种操作:添加新的查询参数或删除现有参数
- 不影响原始请求的其他部分
**注意:**Query参数只适用于Request请求。
| 参数 | 说明 |
|---|---|
| 增加Query参数 | Key,Value,可以输入多个键值对,输入的键值对将增加到请求参数中 |
| 删除Query参数 | Key,可以输入多个Key,Key值匹配的Query参数将从报文中删除 |
JSON转XML
JSON转XML组件支持将请求/响应body从json格式转换为xml格式。
JSON转XML示例:
转换前:{ "name":"张三"\ }。
转换后:<?xml version="1.0" encoding="UTF-8"?><root><name>张三</name></root>
| 参数 | 说明 |
|---|---|
| 根元素 | 转换后XML文档的根元素 |
XML转JSON
XML转JSON组件支持请求/响应报文的body从xml格式转换为json格式。
XML转JSON示例:
转换前:
转换后:{"root":{"name":"张三"}}。
有效性验证(仅请求)
有效性验证组件支持对请求头或者body(仅支持json格式)中的指定字段内容进行校验。支持多个字段的有效性验证。如果验证不通过则直接返回失败信息。
**注意:**有效性验证只适用于Request请求。
| 参数 | 说明 |
|---|---|
| 字段 | 需要验证有效型的字段名称,请求头中的字段以header开头“header.aaa”,aaa为字段名;请求体中的字段以body开头“body.test",test为字段名 |
| 规则 | 校验规则,支持多种校验规则: 非空:非空校验会对请求对应字段进行非空校验。 最小值:最小值校验会对请求对应字段进行最小值校验。 最大值:最大值校验会对请求对应字段进行最大值校验。 EMAIL地址:Email校验会对请求对应字段是否为邮箱地址进行正则校验。 电话号码:电话号码校验会对请求对应字段是否为电话号码进行正则校验。 日期:日期校验会对请求对应字段进行日志的格式校验(例:yyyy-MM-dd)。 正则表达式:正则校验会对请求对应字段进行输入正则表达式的校验。 长度值在…之间:长度校验会对请求对应字段进行长度校验。l 枚举:填写枚举类型,多个枚举值间使用英文逗号分割。 |
| 参数 | 根据不同的规则填写不同参数 |
数据映射
数据映射支持自定义的格式转换,通过拖拽的方式定义字段间的映射关系,支持xml、json、csv格式的数据转换。该组件支持可视化数据映射,无需编写程序。
映射方式:
-
一对一:支持各种映射方式、追加、首字母大写等等。
-
多对一:支持多个字段对一个字段、一个数组对一个字段,支持各种过滤条件和组合方式。
-
一对多:支持一个字段对数组或者一个字段对多个字段,支持各种分隔方式。
数据映射的源是客户端发送的请求报文或者后端服务的响应报文,目标是发送给后端服务的请求报文或者返回给客户端的响应报文。
源和目标的报文schema通过导入操作导入到系统中,导入的schema支持schema或者instance两种格式,如果是instance,系统会自动将文件转换为schema进行展示。
数据映射可以是字段到字段的映射,对象到对象的映射,数组到数组的映射。当作对象到对象的映射时,对象下的字段不能再作映射。对象到对象的映射不支持格式转换。
用户可以根据需求将需要映射的字段进行连线并配置相应的映射规则,左侧栏中显示字段映射的详情,支持多种映射方式。
动态路由(仅请求)
根据路由规则中的条件判断是否将请求重定向到指定的后端服务。当匹配条件成功后请求将重定向到指定后端,反之则将请求转发给API配置的后端服务。
| 参数 | 说明 |
|---|---|
| 规则 | 支持添加多个规则,配置指定规则后即将请求转发至规则对应的后端服务 |
| 名称 | 规则名称,每个规则指定一个名称来区分 |
| 匹配条件 | 规则对应的匹配条件,如: allow if {input.attributes.request.http.method == "POST" } |
| 重定向 | 重定向的后端服务地址,如:127.0.0.1:19302 |
HTTP方法重置(仅请求)
HTTP方法重置,用于将请求方法修改为后端服务要求的方法,比如:将GET方法改为POST方法。
注意:HTTP方法重置只适用于Request请求。
| 参数 | 说明 |
|---|---|
| 重置方法 | 需要重置的方法:GET,PUT,POST,DELETE,PATCH,HEAD,OPTIONS |
三、常见问题
(一) 告警规则匹配的优先级
-
阈值告警:优先匹配阈值统计时间段,再匹配告警频率,再匹配通知时间段,最后匹配通知方式和通知对象。
-
事件告警:只需匹配告警频率。
(二)配置了告警规则,却收不到告警通知
请按以下步骤排查:
- 检查规则状态是否启用
- 验证通知对象配置是否正确
- 确认通知渠道是否正常
- 查看告警日志定位原因
(三)告警规则中的告警等级如何设置?
告警分级可以帮助运维团队更好地分配资源,确保最重要的问题得到最快的响应,同时避免告警疲劳。根据具体的业务场景和团队情况,可以适当调整这些配置建议。
合理设置阈值
-
紧急告警:核心指标严重偏离(如错误率>50%)
-
重要告警:关键指标明显异常(如错误率>20%)
-
一般告警:指标出现波动(如错误率>5%)
-
提示信息:一般性波动或例行通知
考虑告警持续时间
-
紧急告警:立即触发
-
重要告警:持续3-5分钟异常才触发
-
一般告警:持续10-15分钟异常才触发
-
提示信息:可以根据定期汇总发送
告警通知方式
- 紧急告警:电话、短信、即时通讯等多渠道通知
- 重要告警:即时通讯+邮件通知
- 一般告警:即时通讯或邮件通知
- 提示信息:邮件或系统内通知
(四)设置流控规则的作用?
通过合理配置流量控制规则,可以有效保护系统安全,提高服务质量,确保系统稳定运行。这对于构建可靠的分布式系统和微服务架构尤为重要。
防止系统过载
-
限制单位时间内的访问次数或流量大小
-
防止因突发流量导致系统资源耗尽
-
确保系统在可承受的范围内稳定运行
保护系统资源
-
合理分配和限制请求处理速率
-
避免因资源竞争导致系统性能下降
-
防止级联故障和雪崩效应
提高系统可用性
-
通过限制访问频率,确保系统能够持续提供服务
-
防止恶意攻击或异常流量对系统造成影响
-
为所有用户提供公平的服务质量
优化资源利用
-
根据系统容量合理分配请求处理能力
-
避免资源浪费和过度消耗
-
提高系统整体运行效率