1、总控统一发送tcp会话创建延迟时间字段

2、修复流量统计出现负值的现象
This commit is contained in:
liuxueli
2020-03-30 16:20:02 +08:00
parent e122469706
commit 9f53396c0c
5 changed files with 32 additions and 13 deletions

View File

@@ -41,7 +41,7 @@ static __attribute__((__used__)) const char * GIT_VERSION_UNKNOWN = NULL;
#endif #endif
char TSG_MASTER_VERSION_20200322=0; char TSG_MASTER_VERSION_20200330=0;
const char *tsg_conffile="tsgconf/main.conf"; const char *tsg_conffile="tsgconf/main.conf";
g_tsg_para_t g_tsg_para; g_tsg_para_t g_tsg_para;
@@ -418,6 +418,8 @@ static int identify_application_protocol(struct streaminfo *a_stream, struct _id
extern "C" char TSG_MASTER_TCP_ENTRY(struct streaminfo *a_tcp, void **pme, int thread_seq,void *a_packet) extern "C" char TSG_MASTER_TCP_ENTRY(struct streaminfo *a_tcp, void **pme, int thread_seq,void *a_packet)
{ {
int ret=0,hit_num=0; int ret=0,hit_num=0;
struct timespec tv;
long establish_latency_ms=0;
int state=APP_STATE_GIVEME; int state=APP_STATE_GIVEME;
scan_status_t mid=NULL; scan_status_t mid=NULL;
Maat_rule_t *p_result=NULL; Maat_rule_t *p_result=NULL;
@@ -436,10 +438,8 @@ extern "C" char TSG_MASTER_TCP_ENTRY(struct streaminfo *a_tcp, void **pme, int t
identify_application_protocol(a_tcp, &identify_info); identify_application_protocol(a_tcp, &identify_info);
if(identify_info.proto==PROTO_HTTP) if(identify_info.proto==PROTO_HTTP)
{ {
struct timeval tv; clock_gettime(CLOCK_REALTIME, &tv);
long establish_latency_ms=0; establish_latency_ms=(tv.tv_sec-a_tcp->ptcpdetail->createtime)*1000+tv.tv_nsec/1000/1000;
gettimeofday(&tv, NULL);
establish_latency_ms=(tv.tv_sec-a_tcp->ptcpdetail->createtime)*1000+tv.tv_usec/1000;
ret=project_req_add_long(a_tcp, g_tsg_para.establish_latency_project_id, establish_latency_ms); ret=project_req_add_long(a_tcp, g_tsg_para.establish_latency_project_id, establish_latency_ms);
if(ret<0) if(ret<0)
{ {
@@ -741,7 +741,6 @@ extern "C" int TSG_MASTER_INIT()
if(g_tsg_para.establish_latency_project_id<0) if(g_tsg_para.establish_latency_project_id<0)
{ {
MESA_handle_runtime_log(g_tsg_para.logger, RLOG_LV_FATAL, "PROJECT_REGISTER", "Register %s failed ...", label_buff); MESA_handle_runtime_log(g_tsg_para.logger, RLOG_LV_FATAL, "PROJECT_REGISTER", "Register %s failed ...", label_buff);
return -1;
} }
ret=tsg_rule_init(tsg_conffile, g_tsg_para.logger); ret=tsg_rule_init(tsg_conffile, g_tsg_para.logger);
@@ -757,6 +756,7 @@ extern "C" int TSG_MASTER_INIT()
MESA_handle_runtime_log(g_tsg_para.logger, RLOG_LV_FATAL, "INIT_SENDLOG", "tsg_sendlog_init failed ..."); MESA_handle_runtime_log(g_tsg_para.logger, RLOG_LV_FATAL, "INIT_SENDLOG", "tsg_sendlog_init failed ...");
return -1; return -1;
} }
g_tsg_log_instance->establish_latency_project_id=g_tsg_para.establish_latency_project_id;
MESA_load_profile_int_def(tsg_conffile, "FIELD_STAT", "CYCLE", &cycle, 30); MESA_load_profile_int_def(tsg_conffile, "FIELD_STAT", "CYCLE", &cycle, 30);
MESA_load_profile_short_nodef(tsg_conffile, "FIELD_STAT","TELEGRAF_PORT", (short *)&(fs_server_port)); MESA_load_profile_short_nodef(tsg_conffile, "FIELD_STAT","TELEGRAF_PORT", (short *)&(fs_server_port));

View File

@@ -141,6 +141,7 @@ typedef struct _tsg_statistic
int fs_line_id; int fs_line_id;
int fs_field_id[STATIS_MAX]; int fs_field_id[STATIS_MAX];
struct _traffic_info *traffic_info[TSG_ACTION_MAX+1]; struct _traffic_info *traffic_info[TSG_ACTION_MAX+1];
struct _traffic_info default_total_info;
screen_stat_handle_t fs2_handle; screen_stat_handle_t fs2_handle;
}tsg_statis_para_t; }tsg_statis_para_t;

View File

@@ -19,7 +19,7 @@
#include "tsg_send_log.h" #include "tsg_send_log.h"
#include "tsg_send_log_internal.h" #include "tsg_send_log_internal.h"
char TSG_SEND_LOG_VERSION_20200119=0; char TSG_SEND_LOG_VERSION_20200330=0;
struct tsg_log_instance_t *g_tsg_log_instance; struct tsg_log_instance_t *g_tsg_log_instance;
@@ -417,6 +417,7 @@ int tsg_send_log(struct tsg_log_instance_t *instance, struct TLD_handle_t *handl
{ {
int i=0,status=0; int i=0,status=0;
char *payload=NULL; char *payload=NULL;
long establish_latency_ms=0;
struct TLD_handle_t *_handle=handle; struct TLD_handle_t *_handle=handle;
struct tsg_log_instance_t *_instance=instance; struct tsg_log_instance_t *_instance=instance;
@@ -459,6 +460,15 @@ int tsg_send_log(struct tsg_log_instance_t *instance, struct TLD_handle_t *handl
break; break;
} }
if(log_msg->result[i].action==TSG_ACTION_MONITOR && _instance->establish_latency_project_id>0)
{
establish_latency_ms=project_req_get_long(log_msg->a_stream, _instance->establish_latency_project_id);
if(establish_latency_ms>=0)
{
TLD_append(_handle, _instance->id2field[LOG_COMMON_ESTABLISH_LATENCY_MS].name, (void *)establish_latency_ms, TLD_TYPE_LONG);
}
}
TLD_append(_handle, _instance->id2field[LOG_COMMON_POLICY_ID].name, (void *)(long)(log_msg->result[i].config_id), TLD_TYPE_LONG); TLD_append(_handle, _instance->id2field[LOG_COMMON_POLICY_ID].name, (void *)(long)(log_msg->result[i].config_id), TLD_TYPE_LONG);
TLD_append(_handle, _instance->id2field[LOG_COMMON_SERVICE].name, (void *)(long)(log_msg->result[i].service_id), TLD_TYPE_LONG); TLD_append(_handle, _instance->id2field[LOG_COMMON_SERVICE].name, (void *)(long)(log_msg->result[i].service_id), TLD_TYPE_LONG);
TLD_append(_handle, _instance->id2field[LOG_COMMON_ACTION].name, (void *)(long)((unsigned char)log_msg->result[i].action), TLD_TYPE_LONG); TLD_append(_handle, _instance->id2field[LOG_COMMON_ACTION].name, (void *)(long)((unsigned char)log_msg->result[i].action), TLD_TYPE_LONG);
@@ -485,6 +495,7 @@ int tsg_send_log(struct tsg_log_instance_t *instance, struct TLD_handle_t *handl
TLD_delete(_handle, _instance->id2field[LOG_COMMON_POLICY_ID].name); TLD_delete(_handle, _instance->id2field[LOG_COMMON_POLICY_ID].name);
TLD_delete(_handle, _instance->id2field[LOG_COMMON_SERVICE].name); TLD_delete(_handle, _instance->id2field[LOG_COMMON_SERVICE].name);
TLD_delete(_handle, _instance->id2field[LOG_COMMON_ACTION].name); TLD_delete(_handle, _instance->id2field[LOG_COMMON_ACTION].name);
TLD_delete(_handle, _instance->id2field[LOG_COMMON_ESTABLISH_LATENCY_MS].name);
FS_operate(g_tsg_para.fs2_handle, g_tsg_para.fs2_field_id[TSG_FS2_LOG], 0, FS_OP_ADD, 1); FS_operate(g_tsg_para.fs2_handle, g_tsg_para.fs2_field_id[TSG_FS2_LOG], 0, FS_OP_ADD, 1);
} }

View File

@@ -59,6 +59,7 @@ typedef enum _tsg_log_field_id
LOG_COMMON_SCHAME_TYPE, LOG_COMMON_SCHAME_TYPE,
LOG_HTTP_HOST, LOG_HTTP_HOST,
LOG_SSL_SNI, LOG_SSL_SNI,
LOG_COMMON_ESTABLISH_LATENCY_MS,
LOG_COMMON_MAX LOG_COMMON_MAX
}tsg_log_field_id_t; }tsg_log_field_id_t;
@@ -79,6 +80,7 @@ struct tsg_log_instance_t
{ {
int mode; int mode;
int max_service; int max_service;
int establish_latency_project_id;
void *logger; void *logger;
char common_field_file[MAX_STRING_LEN*4]; char common_field_file[MAX_STRING_LEN*4];
char broker_list[MAX_STRING_LEN*4]; char broker_list[MAX_STRING_LEN*4];

View File

@@ -61,15 +61,20 @@ static int _get_traffic_info(struct _traffic_info *total, struct _traffic_info *
out->out_bytes=total->out_bytes-policy->out_bytes; out->out_bytes=total->out_bytes-policy->out_bytes;
out->out_packets=total->out_packets-policy->out_packets; out->out_packets=total->out_packets-policy->out_packets;
if(out->con_num<0 || out->in_bytes<0 || out->in_packets<0 || out->out_bytes<0 || out->out_packets<0) if(out->con_num-g_tsg_statis_para.default_total_info.con_num<0
|| out->in_bytes-g_tsg_statis_para.default_total_info.in_bytes<0
|| out->in_packets-g_tsg_statis_para.default_total_info.in_packets<0
|| out->out_bytes-g_tsg_statis_para.default_total_info.out_bytes<0
|| out->out_packets-g_tsg_statis_para.default_total_info.out_packets<0)
{ {
out->con_num=total->con_num; memcpy(out, &g_tsg_statis_para.default_total_info, sizeof(struct _traffic_info));
out->in_bytes=total->in_bytes; }
out->in_packets=total->in_packets; else
out->out_bytes=total->out_bytes; {
out->out_packets=total->out_packets; memcpy(&g_tsg_statis_para.default_total_info, out, sizeof(struct _traffic_info));
} }
} }
return 0; return 0;
} }