OpenResty Programming

1) 开启或关闭此插件

请求

URI Method
/monitor/enable Post

参数

名称 类型 说明
enable int 0关闭1开启

返回结果

{
    "msg":"关闭自定义监控成功",
    "success":true
}

2) 获取所有配置信息

请求

URI Method
/monitor/configs Get

参数

返回结果

{
    "data": {
        "enable": true,//插件是否启用
        "rules": [ //插件下的"规则"列表
            {
                "enable": true, //本条规则是否启用
                "id": "D26E0C12-C687-4004-82C7-9AF258FE6470", //规则id
                "judge": { // "条件判断模块"配置
                    "type": 3, // 见下文描述
                    "expression": "(v[1] or v[2]) and v[3]", // 见下文描述
                    "conditions": [// 见下文描述
                        {
                            "type": "URI",
                            "operator": "match",
                            "value": "/abc"
                        },{
                            "type": "Header",
                            "operator": "=",
                            "name": "uid",
                            "value": "123"
                        },{
                            "type": "Host",
                            "operator": "=",
                            "value": "127.0.0.1"
                        }
                    ]
                },
                "time": "2016-05-04 18:57:23",//规则新建或更改时间
                "name": "/abc",// 规则名称
                "handle": { // "处理模块"配置
                    "log": false, // 是否记录日志
                    "continue": true // 匹配完该条规则后是否继续后续匹配
                }
            }
        ]
    },
    "success": true
}
  • type: 0/1/2/3,0表示只有一个匹配条件,1表示对所有条件与操作,2表示对所有条件或操作,3表示按照另一个字段expression对所有条件求值
  • expression: 当type为3时,存在此字段且不为空,它的格式是一个lua的逻辑判断表达式。表达式中每个值的格式为v[index], 比如v[1]对应的就是第一个条件的值。示例:(v[1] or v[2]) and v[3],即前两个条件至少一个为真并且第三个条件为真时,规则为真。 conditions: 匹配条件集合
  • conditions: 匹配条件集合

3) 新建某条规则

请求

URI Method 说明
/monitor/configs Put Content-Type:application/x-www-form-urlencoded; charset=UTF-8

参数

名称 类型 说明
rule string 指一条”规则”json格式的字符串

“规则”格式示例如下,具体格式描述见这里:

{
    "name": "/abc",
    "judge": {
        "type": 0,
        "conditions": [
            {
                "type": "URI",
                "operator": "match",
                "value": "/abc"
            }
        ]
    },
    "handle": {
        "continue": true,
        "log": false
    },
    "enable": true,
    "id": "D26E0C12-C687-4004-82C7-9AF258FE6470"
}

返回结果

{
    "success": true,
    "msg": "新建规则成功"
}

4) 编辑某条规则信息

请求

URI Method 说明
/monitor/configs Post Content-Type:application/x-www-form-urlencoded; charset=UTF-8

参数

名称 类型 说明
rule string 指修改后的”规则”

“规则”格式示例如下,具体格式描述见这里:

{
    "name": "/abc",
    "judge": {
        "type": 0,
        "conditions": [
            {
                "type": "URI",
                "operator": "match",
                "value": "/abc"
            }
        ]
    },
    "handle": {
        "continue": true,
        "log": false
    },
    "enable": true,
    "id": "D26E0C12-C687-4004-82C7-9AF258FE6470"
}

返回结果

{
    "success": true,
    "msg": "修改成功"
}

5) 删除某条规则

请求

URI Method 说明
/monitor/configs Delete Content-Type:application/x-www-form-urlencoded; charset=UTF-8

参数

名称 类型 说明
rule_id string 指一条”规则”的id

返回结果

{
    "success": true,
    "msg": "删除成功"
}

6) 获取满足某条规则的请求的统计信息

请求

URI Method
/monitor/stat Get

参数

名称 类型 说明
rule_id string 指一条”规则”的id

返回结果

{
    "success": true,
    "data": {
        "average_traffic_read": 0, //请求平均读流量,bytes
        "request_2xx": 0,
        "average_traffix_write": 0, //请求平均写流量,bytes
        "request_4xx": 0,
        "request_5xx": 0,
        "traffic_read": 0,//读总流量,kb
        "request_3xx": 0,
        "traffic_write": 0,//写总流量,kb
        "total_request_time": 0, //总请求时间,s
        "average_request_time": 0, //平均响应时间,ms
        "total_count": 0 //总请求数
    }
}

7) 获取数据库中此插件的最新配置

请求

URI Method
/monitor/fetch_config Get

参数

返回结果

{
    "success": true,
    "data": {
        "enable": true, //是否开启了此插件
        "rules": [] // 该插件包含的规则列表
    }
}

具体规则格式描述见这里

8) 将数据库中最新配置更新到此orange节点

请求

URI Method 说明
/monitor/sync Post Content-Type:application/x-www-form-urlencoded; charset=UTF-8

参数

返回结果

{
    "success": true, //成功或失败
    "msg": "" //描述信息
}
Tags: orange