Skip to content

运营管理

提供规则场景指标的平台全景视图、业务域视图、引擎组件视图、规则场景视图等,并提供引擎组件心跳监控。

指标的表设计

1. 规则场景指标(原始数据)

表名:sence_metrics_raw

字段名别名数据类型长度是否必填备注
采集记录IDidBIGINT20采集原始记录ID
接口路径uriBIGINT20接口路径
业务身份-流程编码process_codeVARCHAR255流程编码
业务身份-任务编码task_codeVARCHAR32任务编码
开始时间begin_timeDATETIME32开始时间
结束时间end_timeDATETIME32结束时间
请求处理最大时长max_durationINT11单位毫秒
请求处理最小时长min_durationINT11单位毫秒
请求处理平均时长avg_durationINT11单位毫秒
请求次数total_cntVARCHAR255请求次数
请求失败次数failure_cntVARCHAR32请求失败次数
请求成功次数success_cntINT11请求成功次数
采集间隔intervalINT11间隔单位数
采集间隔单位time_unitVARCHAR16间隔时间单位,默认为second(秒)

建表语句:

sql
CREATE TABLE sence_metrics_raw (
    id BIGINT(20) PRIMARY KEY,             -- 采集原始记录ID
    uri BIGINT(20),                        -- 接口路径
    process_code VARCHAR(255),             -- 流程编码
    task_code VARCHAR(32),                 -- 任务编码
    begin_time DATETIME,                   -- 开始时间
    end_time DATETIME,                     -- 结束时间
    max_duration INT(11),                  -- 单位毫秒
    min_duration INT(11),                  -- 单位毫秒
    avg_duration INT(11),                  -- 单位毫秒
    total_cnt VARCHAR(255),                -- 请求次数
    failure_cnt VARCHAR(32),                -- 请求失败次数
    success_cnt INT(11),                   -- 请求成功次数
    interval INT(11),                      -- 间隔单位数
    time_unit VARCHAR(16)                  -- 间隔时间单位,默认为second(秒)
);

2.规则场景指标(按小时聚合)

表名: sence_metrics_hour

字段名别名数据类型长度是否必填备注
统计记录IDidBIGINT20采集原始记录ID
接口路径uriBIGINT20接口路径
业务身份-流程编码process_codeVARCHAR255流程编码
业务身份-任务编码task_codeVARCHAR32任务编码
请求处理最大时长max_durationINT11单位毫秒
请求处理最小时长min_durationINT11单位毫秒
请求处理平均时长avg_durationINT11单位毫秒
请求次数total_cntVARCHAR255请求次数
请求失败次数failure_cntVARCHAR32请求失败次数
请求成功次数success_cntINT11请求成功次数
时间坐标yyyyMMddHHDATETIME16yyyyMMddHH

建表语句:

sql
CREATE TABLE sence_metrics_hour (
    id BIGINT(20) PRIMARY KEY,             -- 采集原始记录ID
    uri BIGINT(20),                        -- 接口路径
    process_code VARCHAR(255),             -- 流程编码
    task_code VARCHAR(32),                 -- 任务编码
    max_duration INT(11),                  -- 单位毫秒
    min_duration INT(11),                  -- 单位毫秒
    avg_duration INT(11),                  -- 单位毫秒
    total_cnt VARCHAR(255),                -- 请求次数
    failure_cnt VARCHAR(32),                -- 请求失败次数
    success_cnt INT(11),                   -- 请求成功次数
    yyyyMMddHH DATETIME                    -- yyyyMMddHH
);

3.规则场景指标(按天聚合)

表名: sence_metrics_day

字段名别名数据类型长度说明
统计记录IDidBIGINT20采集原始记录ID
接口路径uriBIGINT20接口路径
业务身份-流程编码process_codeVARCHAR255流程编码
业务身份-任务编码task_codeVARCHAR32任务编码
请求处理最大时长max_durationINT11单位毫秒
请求处理最小时长min_durationINT11单位毫秒
请求处理平均时长avg_durationINT11单位毫秒
请求次数total_cntVARCHAR255请求次数
请求失败次数failure_cntVARCHAR32请求失败次数
请求成功次数success_cntINT11请求成功次数
时间坐标yyyyMMddDATETIME16yyyyMMdd

建表语句:

sql
CREATE TABLE sence_metrics_day (
    id BIGINT(20) PRIMARY KEY,             -- 采集原始记录ID
    uri BIGINT(20),                        -- 接口路径
    process_code VARCHAR(255),             -- 流程编码
    task_code VARCHAR(32),                 -- 任务编码
    max_duration INT(11),                  -- 单位毫秒
    min_duration INT(11),                  -- 单位毫秒
    avg_duration INT(11),                  -- 单位毫秒
    total_cnt VARCHAR(255),                -- 请求次数
    failure_cnt VARCHAR(32),                -- 请求失败次数
    success_cnt INT(11),                   -- 请求成功次数
    yyyyMMdd DATETIME                      -- yyyyMMdd
);

3.规则场景指标(按月聚合)

表名: sence_metrics_month

字段名别名数据类型长度是否必填备注
统计记录IDidBIGINT20采集原始记录ID
接口路径uriBIGINT20接口路径
业务身份-流程编码process_codeVARCHAR255流程编码
业务身份-任务编码task_codeVARCHAR32任务编码
请求处理最大时长max_durationINT11单位毫秒
请求处理最小时长min_durationINT11单位毫秒
请求处理平均时长avg_durationINT11单位毫秒
请求次数total_cntVARCHAR255请求次数
请求失败次数failure_cntVARCHAR32请求失败次数
请求成功次数success_cntINT11请求成功次数
时间坐标yyyyMMDATETIME16yyyyMM

建表语句:

sql
CREATE TABLE sence_metrics_month (
    id BIGINT(20) PRIMARY KEY,             -- 采集原始记录ID
    uri BIGINT(20),                        -- 接口路径
    process_code VARCHAR(255),             -- 流程编码
    task_code VARCHAR(32),                 -- 任务编码
    max_duration INT(11),                  -- 单位毫秒
    min_duration INT(11),                  -- 单位毫秒
    avg_duration INT(11),                  -- 单位毫秒
    total_cnt VARCHAR(255),                -- 请求次数
    failure_cnt VARCHAR(32),                -- 请求失败次数
    success_cnt INT(11),                   -- 请求成功次数
    yyyyMM DATETIME                        -- yyyyMM
);

3.引擎组件心跳

表名: app_heartbeat

字段名别名数据类型长度是否必填备注
统计记录IDidBIGINT20采集原始记录ID
ip地址ipVARCHAR128ip地址
端口portVARCHAR16端口
工程名称project_nameVARCHAR255工程名称
第一次心跳/注册时间first_heartbeatDATETIME第一次心跳/注册时间
最后一次心跳last_heartbeatDATETIME最后一次心跳

建表语句:

sql
CREATE TABLE app_heartbeat (
    id BIGINT(20) PRIMARY KEY,             -- 采集原始记录ID
    ip VARCHAR(128),                       -- ip地址
    port VARCHAR(16),                      -- 端口
    project_name VARCHAR(255),             -- 工程名称
    first_heartbeat DATETIME,              -- 第一次心跳/注册时间
    last_heartbeat DATETIME                 -- 最后一次心跳
);

指标的接口设计

1. 指标内容

  • 接口名称、业务身份(流程编码、任务编码)
  • 请求总次数、请求失败次数、请求成功次数
  • 请求平均处理时长、请求最小处理时长、请求最大处理时长
  • 采集开始时间、采集结束时间

2. 指标格式

指标的采集格式:一种是用Prometheus格式,一种是用JSON格式,对比讨论一下。个人暂时倾向于JSON,可以减少指标上报的次数和上报的报文大小。

Prometheus格式

txt
# 总请求次数
req_total_cnt{uri="", process_code="", task_code="", begin="", end=""} 1000

# 成功请求次数
req_success_cnt{uri="", process_code="", task_code="",begin="", end=""} 950

# 失败请求次数
req_failure_cnt{uri="", process_code="", task_code="",begin="", end=""} 50

# 平均请求时长
req_avg_duration{uri="", process_code="", task_code="",begin="", end=""}0.25

# 最小请求时长
req_min_duration{uri="", process_code="", task_code="",begin="", end=""}0.1

# 最大请求时长
req_max_duration{uri="", process_code="", task_code="",begin="", end=""}2.5

JSON格式

json
{
  "uri": "api_name",
  "process_code": "xx",
  "task_code": "yy",
  "avg": 10,
  "min": 5,
  "max": 15,
  "failure": 2,
  "success": 1898,
  "total": 1900,
  "begin": "202404070830",
  "end": "202404070839"
}

3. 上报协议

指标的上报协议:一种使用HTTP,一种是用MQ(暂定TongLINK/Q)。可对比讨论一下。个人暂时倾向于MQ,管理面和运行面解耦相对彻底。

  • mq topic的路径: persistent://${newland-urc}/metrics/api-metrics , 其中newland-urc是租户名(暂定,根据实际情况定)、metrics是空间名称、api-metrics是主题
  • http 接口的路径:http://${context-base-path}/metrics/api-metrics, 其中context-base-path是管理平台的接收模块的base-path, 剩下的是约定的接口路径。

4. 注意事项

  • 因为现在一个接口上处理某个领域聚合根下的多种业务场景,接口实际上是一个模板,需要根据业务身份,才能确定实例化的场景(真正的用途)。
  • 采集的指标统计,不要跨天,便于后续按自然单位时间(小时、天、周、月、年)等维度的聚合统计,也就是说开始和结束两个时间必须在同一小时,若跨小时,拆两条统计数据,运行面默认60秒生成统计数据1次。