Statistics:网关类应用交易统计的实现参考

      对于网关类应用,主要关注的监控和统计内容如下:

指标 维度 说明
交易量 来源方、目的方
TPS 来源方、目的方
耗时 来源方、目的方 交易耗时,调用耗时
峰值 来源方、目的方 交易量、TPS、耗时
成功率 来源方、目的方

      

网关类应用一般先把采集交易数据写入到日志文件中,常用的主要属性包括以下内容:

属性名 中文名 描述
tran_time 交易开始时间 格式:YYYY-MM-DD HH:mm:ss.SSS,单位ms
tran_id 交易流水号 本地流水号
app_id 应用编号
node_id 应用实例编号 应用的实例
tran_type 交易类型
src_service 源服务名
dst_service 目标服务名
tran_api 交换接口 提供的HTTP请求URL
tran_cost 交易耗时 从交易开始被调用到交易返回的时间
tran_ret_code 交易返回码 交易HTTP响应状态码
call_cost 调用耗时 调用外部交易时HTTP调用的耗时
call_ret_code 调用返回码 调用外部交易时HTTP响应状态码
fail_type 交易失败类型

app fail:应用自身处理异常、交易请求方主动中断连接等

call fail:调用外部交易时HTTP调用失败或超时

err_info 交易失败错误信息

     为了减少日志量,应用也可以基于上述交易信息,做一些初步的统计工作,然后再输入到日志文件中,此时日志属性主要包括以下内容,以下的统计时间是以分钟计算:

分类 属性名 中文名 描述
基本信息 log_time 统计时间 格式:YYYY-MM-DD HH:mm:00,精确到分钟
app_id 应用编号
node_id 应用实例编号
tran_type 交易类型
src_service 源服务名
dst_service 目标服务名
统计结果 tran_num 交易数
tran_cost_sum 交易耗时合计
max_tran_cost_api 最长交易耗时对应的api
max_tran_cost 最长交易耗时
call_num 调用数
call_cost_sum 调用耗时合计
max_call_cost_api 最长调用耗时对应的api
max_call_cost 最长调用耗时
app_fail_num 应用自身处理交易数 应用自身处理异常、交易请求方主动中断连接等
call_fail_num 调用失败交易数 调用外部交易时HTTP调用失败或超时
call_bad_num 调用返回码非200交易数 调用外部交易时HTTP返回状态码非200时

最终统计结果主要包含2部分:

1、基本统计

分类 属性 属性名 描述
基本信息 app_id 应用名
tran_type 交易类型
stat_level 统计级别 应用级、实例级
time_unit 统计时间单位 按月、按周、按天、按小时、按分钟
begin_time 统计开始时间
end_time 统计结束时间
src_service 源服务名
dst_service 目标服务名
统计结果 node_id 应用实例名
tran_num 交易数
tran_cost_sum 交易耗时合计
avg_tran_cost 平均交易耗时 tran_cost_sum / tran_num
max_tran_cost_api 最长交易耗时对应的api
max_tran_cost 最长交易耗时
call_num 调用数
call_cost_sum 调用耗时合计
avg_call_cost 平均调用耗时 call_cost_sum / call_num
max_call_cost_api 最长调用耗时对应的api
max_call_cost 最长调用耗时
app_fail_num 应用处理失败交易数
call_fail_num 调用失败交易数
call_bad_num 调用返回码非200交易数
tps 每秒交易量 tran_num / 时长
fail_rate 失败率 (app_fail_num + call_fail_num) / tran_num
bad_rate 非200率 call_bad_num / tran_num

2、峰值统计

 主要包含峰值相关统计数据

分类 属性 属性名 描述
基本信息 app_id 应用名
tran_type 交易类型
stat_level 统计级别 应用级、实例级
time_unit 统计时间单位 按月、按周、按天、按小时、按分钟
begin_time 统计开始时间
end_time 统计结束时间
src_service 源服务名
dst_service 目标服务名
峰值结果 peak_tps tps峰值
peak_tps_occur_time 发生tps峰值的时间
peak_tps_occur_node_id 发生tps峰值的实例号 为“实例级”时才有值
peak_tran_num 交易量峰值
peak_tran_num_occur_time 发生交易量峰值的时间
peak_tran_num_occur_node_id 发生交易量峰值的实例号 为“实例级”时才有值
peak_call_num 调用量峰值
peak_call_num_occur_time 发生调用量峰值的时间
peak_call_num_occur_node_id 发生调用量峰值的实例号 为“实例级”时才有值
peak_fail_num 失败量峰值
peak_fail_num_occur_time 发生失败量峰值的时间
peak_fail_num_occur_node_id 发生失败量峰值的实例号 为“实例级”时才有值
peak_bad_num 非200交易数峰值
peak_bad_num_occur_time 发生非200交易数峰值的时间
peak_bad_num_occur_node_id 发生非200交易数峰值的实例号 为“实例级”时才有值
peak_tran_cost 交易耗时峰值
peak_tran_cost_occur_time 发生交易耗时峰值的时间
peak_tran_cost_occur_node_id 发生交易耗时峰值的实例号 为“实例级”时才有值
peak_call_cost 调用耗时峰值
peak_call_cost_occur_time 发生调用耗时峰值的时间
peak_call_cost_occur_node_id 发生调用耗时峰值的实例号 为“实例级”时才有值

以上是网关类应用交易统计的主要内容,提供给大家参考,不同应用可根据自身实际情况,在此基础上添加和裁剪一些内容。