diff options
| author | fengweihao <[email protected]> | 2023-05-10 17:51:57 +0800 |
|---|---|---|
| committer | fengweihao <[email protected]> | 2023-05-10 17:51:57 +0800 |
| commit | 2a55a2be7504a39dd19b4ea2ff2f73c4a0be35f2 (patch) | |
| tree | aabf3c11720cb382f576c0e9dc983d1b15773b21 /plugin | |
| parent | 542f4cbdfa6f58dd8a07e35663116a08f54170bd (diff) | |
bugfix:修复管控策略Policy Hits Metrics误发送pinning_status,根据route_dir发送字节数
Diffstat (limited to 'plugin')
| -rw-r--r-- | plugin/business/doh/src/doh.cpp | 33 | ||||
| -rw-r--r-- | plugin/business/tsg-http/src/tsg_http.cpp | 35 |
2 files changed, 61 insertions, 7 deletions
diff --git a/plugin/business/doh/src/doh.cpp b/plugin/business/doh/src/doh.cpp index 3cde45e..9ba291d 100644 --- a/plugin/business/doh/src/doh.cpp +++ b/plugin/business/doh/src/doh.cpp @@ -869,9 +869,36 @@ void doh_send_metric_log(const struct tfe_stream * stream, struct doh_ctx *ctx, tfe_stream_info_get(stream, INFO_FROM_DOWNSTREAM_RX_OFFSET, &c2s_byte_num, sizeof(c2s_byte_num)); tfe_stream_info_get(stream, INFO_FROM_UPSTREAM_RX_OFFSET, &s2c_byte_num, sizeof(s2c_byte_num)); - tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_HIT_COUNT], 1, fieldstat->tags[thread_id], thread_id); - tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_IN_BYTES], c2s_byte_num, fieldstat->tags[thread_id], thread_id); - tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_OUT_BYTES], s2c_byte_num, fieldstat->tags[thread_id], thread_id); + + uint16_t out_size; + unsigned int route_dir; int ret=0; + int in_bytes = 0, out_bytes = 0; + + struct tfe_cmsg *cmsg = tfe_stream_get0_cmsg(stream); + if (cmsg != NULL) + { + ret = tfe_cmsg_get_value(cmsg, TFE_CMSG_COMMON_DIRECTION, (unsigned char *)&route_dir, sizeof(route_dir), &out_size); + if (ret != 0) + { + TFE_LOG_ERROR(g_doh_conf->local_logger, "failed at fetch route_dir from cmsg: %s", strerror(-ret)); + return; + } + } + int dir_is_e2i=(route_dir==69) ? 0 : 1; + if (dir_is_e2i == 1) + { + in_bytes = c2s_byte_num; + out_bytes = s2c_byte_num; + } + else + { + in_bytes = s2c_byte_num; + out_bytes = c2s_byte_num; + } + + tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_HIT_COUNT], 1, fieldstat->tags[thread_id], TAG_MAX - 1, thread_id); + tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_IN_BYTES], in_bytes, fieldstat->tags[thread_id], TAG_MAX - 1, thread_id); + tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_OUT_BYTES], out_bytes, fieldstat->tags[thread_id], TAG_MAX - 1, thread_id); return; } diff --git a/plugin/business/tsg-http/src/tsg_http.cpp b/plugin/business/tsg-http/src/tsg_http.cpp index e6f6bd3..1640414 100644 --- a/plugin/business/tsg-http/src/tsg_http.cpp +++ b/plugin/business/tsg-http/src/tsg_http.cpp @@ -3281,13 +3281,40 @@ void proxy_send_metric_log(const struct tfe_stream * stream, struct proxy_http_c { fieldstat->tags[thread_id][TAG_SUB_ACTION].value_str = proxy_action_map[ctx->enforce_rules[i].action]; } - + size_t c2s_byte_num = 0, s2c_byte_num =0; tfe_stream_info_get(stream, INFO_FROM_DOWNSTREAM_RX_OFFSET, &c2s_byte_num, sizeof(c2s_byte_num)); tfe_stream_info_get(stream, INFO_FROM_UPSTREAM_RX_OFFSET, &s2c_byte_num, sizeof(s2c_byte_num)); - tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_HIT_COUNT], 1, fieldstat->tags[thread_id], thread_id); - tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_IN_BYTES], c2s_byte_num, fieldstat->tags[thread_id], thread_id); - tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_OUT_BYTES], s2c_byte_num, fieldstat->tags[thread_id], thread_id); + + uint16_t out_size; + unsigned int route_dir; int ret=0; + int in_bytes = 0, out_bytes = 0; + + struct tfe_cmsg *cmsg = tfe_stream_get0_cmsg(stream); + if (cmsg != NULL) + { + ret = tfe_cmsg_get_value(cmsg, TFE_CMSG_COMMON_DIRECTION, (unsigned char *)&route_dir, sizeof(route_dir), &out_size); + if (ret != 0) + { + TFE_LOG_ERROR(g_proxy_rt->local_logger, "failed at fetch route_dir from cmsg: %s", strerror(-ret)); + return; + } + } + int dir_is_e2i=(route_dir==69) ? 0 : 1; + if (dir_is_e2i == 1) + { + in_bytes = c2s_byte_num; + out_bytes = s2c_byte_num; + } + else + { + in_bytes = s2c_byte_num; + out_bytes = c2s_byte_num; + } + + tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_HIT_COUNT], 1, fieldstat->tags[thread_id], TAG_MAX - 1, thread_id); + tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_IN_BYTES], in_bytes, fieldstat->tags[thread_id], TAG_MAX - 1, thread_id); + tfe_fieldstat_metric_incrby(fieldstat, fieldstat->column_array[COLUMN_OUT_BYTES], out_bytes, fieldstat->tags[thread_id], TAG_MAX - 1, thread_id); } return; } |
