From d962394a02426072737d50318e71e2286023fab6 Mon Sep 17 00:00:00 2001 From: git commit -m first Date: Thu, 29 Aug 2019 10:14:11 +0800 Subject: [PATCH] post all srccode --- bin/http_stat_header.so | Bin 0 -> 299082 bytes conf/http_stat_header.conf | 7 + conf/http_stat_header.inf | 9 ++ src/Makefile | 23 ++++ src/http_header_v1.cpp | 189 +++++++++++++++++++++++++++ src/http_header_v1.hpp | 62 +++++++++ src/http_stat_header.cpp | 255 +++++++++++++++++++++++++++++++++++++ src/http_stat_header.h | 48 +++++++ 8 files changed, 593 insertions(+) create mode 100755 bin/http_stat_header.so create mode 100644 conf/http_stat_header.conf create mode 100644 conf/http_stat_header.inf create mode 100644 src/Makefile create mode 100644 src/http_header_v1.cpp create mode 100644 src/http_header_v1.hpp create mode 100644 src/http_stat_header.cpp create mode 100644 src/http_stat_header.h diff --git a/bin/http_stat_header.so b/bin/http_stat_header.so new file mode 100755 index 0000000000000000000000000000000000000000..79bacd9fd03202bd5914ba1c03fce8fdeea726ef GIT binary patch literal 299082 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 literal 0 HcmV?d00001 diff --git a/conf/http_stat_header.conf b/conf/http_stat_header.conf new file mode 100644 index 0000000..46c38f8 --- /dev/null +++ b/conf/http_stat_header.conf @@ -0,0 +1,7 @@ +[LOG] +log_level=30 +log_path=./log/http_statistic_runtime +fs_path=./log/http_statistic_fs + + + diff --git a/conf/http_stat_header.inf b/conf/http_stat_header.inf new file mode 100644 index 0000000..eba9fe3 --- /dev/null +++ b/conf/http_stat_header.inf @@ -0,0 +1,9 @@ +[PLUGINFO] +PLUGNAME=STHH +SO_PATH=./plug/business/http_stat_header/http_stat_header.so +INIT_FUNC=HTTP_STAT_HEADER_INIT +DESTROY_FUNC=HTTP_STAT_HEADER_DESTROY + +[HTTP] +FUNC_FLAG=HTTP_CONT_ENCODING,HTTP_CONT_TYPE,HTTP_URI +FUNC_NAME=HTTP_STAT_HEADER_ENTRY diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..0c71b18 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,23 @@ +CC = g++ +CFLAGS = -Wall -g -fPIC -shared -g3 -gdwarf-2 +INC = -I./inc/ -I/opt/MESA/include +LIBS = -L/opt/MESA/lib -lMESA_handle_logger -lMESA_prof_load -lMESA_field_stat2 +OBJS = http_stat_header.o http_header_v1.o +TARGET = http_stat_header.so + +.cpp.o: + $(CC) -c $(INC) $(CFLAGS) $< + +all: $(TARGET) CP + +$(TARGET): $(OBJS) + $(CC) -o $@ $^ $(LIBS) $(CFLAGS) + +CP: + cp $(TARGET) ../bin/ + +.PHONY:clean + +clean: + -rm -rf $(OBJS) $(TARGET) + diff --git a/src/http_header_v1.cpp b/src/http_header_v1.cpp new file mode 100644 index 0000000..7680bc8 --- /dev/null +++ b/src/http_header_v1.cpp @@ -0,0 +1,189 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "http_header_v1.hpp" + +BaseFS::~BaseFS() +{ + FS_stop(&fsstat_handle); +} + +BaseFS::BaseFS(const char * header_name, const char *logdir) +{ + char fsfile[256], commd[256]; + int value; + + if(0 != access(logdir, 0)) + { + snprintf(commd, 256, "mkdir -p %s", logdir); + system(commd); + } + snprintf(fsfile, 256, "%s/%s.txt", logdir, header_name); + fsstat_handle = FS_create_handle(); + FS_set_para(fsstat_handle, OUTPUT_DEVICE, fsfile, strlen(fsfile)+1); + value = 1; + FS_set_para(fsstat_handle, PRINT_MODE, &(value), sizeof(value)); + value = 1; + FS_set_para(fsstat_handle, STAT_CYCLE, &(value), sizeof(value)); + //value = 1; + //FS_set_para(fsstat_handle, CREATE_THREAD, &value, sizeof(value)); + value = 1; + FS_set_para(fsstat_handle, FLUSH_BY_DATE, &value, sizeof(value)); + char appname[64]; + FS_set_para(fsstat_handle, APP_NAME, appname, strlen(appname)+1); + char dst_ip[16] = "127.0.0.1"; + int dst_port = 80; + FS_set_para(fsstat_handle, STATS_SERVER_IP, dst_ip, strlen(dst_ip)+1); + FS_set_para(fsstat_handle, STATS_SERVER_PORT, &dst_port, sizeof(dst_port)); +} + +void BaseFS::start(void) +{ + FS_start(fsstat_handle); +} + +void BaseFS::passive_output(void) +{ + FS_passive_output(fsstat_handle); +} + +ContentTable::~ContentTable() +{ + FS_stop(&fsstat_handle); +} + +ContentTable::ContentTable(const char * header_name, const char *logdir):BaseFS(header_name, logdir) +{ + char total_num[64], no_head_num[64], head_num[64]; + total_status_id = 0; + no_header_id = 0; + num_column_id = 0; + ratio_column_id = 0; + header_total = 0; + no_header_num = 0; + + snprintf(total_num, 64, "%s_total", header_name); + snprintf(no_head_num, 64, "no_%s", header_name); + snprintf(head_num, 64, "%s_num", header_name); + if(0 != pthread_mutex_init(&mutex_lock, NULL)) + printf("init mutex error!!!!!!!!\n"); + + total_status_id = FS_register(fsstat_handle, FS_STYLE_STATUS, FS_CALC_CURRENT, total_num); + no_header_id = FS_register(fsstat_handle, FS_STYLE_STATUS, FS_CALC_CURRENT, no_head_num); + num_column_id = FS_register(fsstat_handle, FS_STYLE_COLUMN, FS_CALC_CURRENT, head_num); + ratio_column_id = FS_register(fsstat_handle, FS_STYLE_COLUMN, FS_CALC_CURRENT, "RATIO/milli"); +} + +int ContentTable::operate(enum field_op op, string line_name, long long value) +{ + map::iterator iter; + int line_id; + int ret = 0; + http_header_t hht; + string::size_type idx; + iter = dynamic_line_id.find(line_name); + if(iter == dynamic_line_id.end()) + { + pthread_mutex_lock(&mutex_lock); + if(iter == dynamic_line_id.end()) //防止多个线程竞争锁导致的dynamic_line_id不是最新多加一层判断 + { + line_id = FS_register(fsstat_handle, FS_STYLE_LINE, FS_CALC_CURRENT, line_name.c_str()); + hht.header_id = line_id; + hht.header_num = 1; + dynamic_line_id[line_name] = hht; + } + else + { + iter = dynamic_line_id.find(line_name); + if(iter == dynamic_line_id.end()) + { + line_id = FS_register(fsstat_handle, FS_STYLE_LINE, FS_CALC_CURRENT, line_name.c_str()); + hht.header_id = line_id; + hht.header_num = 1; + dynamic_line_id[line_name] = hht; + } + else + { + line_id = iter->second.header_id; + __sync_add_and_fetch(&(iter->second.header_num), 1); + } + } + pthread_mutex_unlock(&mutex_lock); + } + else + { + line_id = iter->second.header_id; + __sync_add_and_fetch(&(iter->second.header_num), 1); + } + __sync_add_and_fetch(&header_total, 1); + return ret; +} + +void ContentTable::operate_ratio() +{ + map::iterator iter; + http_header_t hht; + long long ratio = 0; + pthread_mutex_lock(&mutex_lock); + FS_operate(fsstat_handle, total_status_id, 0, FS_OP_SET, header_total); + FS_operate(fsstat_handle, no_header_id, 0, FS_OP_SET, no_header_num); + + iter = dynamic_line_id.begin(); + while(iter != dynamic_line_id.end()) + { + hht = iter->second; + ratio = (hht.header_num*1000)/header_total; + FS_operate(fsstat_handle, hht.header_id, num_column_id, FS_OP_SET, hht.header_num); + FS_operate(fsstat_handle, hht.header_id, ratio_column_id, FS_OP_SET, ratio); + iter ++; + } + FS_passive_output(fsstat_handle); + pthread_mutex_unlock(&mutex_lock); +} + +long long ContentTable::set_nocontent_num() +{ + return __sync_add_and_fetch(&no_header_num, 1); +} + +long long ContentTable::get_head_total() +{ + return header_total; +} + +ContentHistogram::~ContentHistogram() +{ + FS_stop(&fsstat_handle); +} + +ContentHistogram::ContentHistogram(const char * header_name, const char *logdir):BaseFS(header_name, logdir) +{ + if(0 != pthread_mutex_init(&mutex_lock, NULL)) + printf("init mutex error!!!!!!!!\n"); + const char* histogram_format="0.25,0.5,0.75,0.9,0.99000"; + FS_set_para(fsstat_handle, HISTOGRAM_GLOBAL_BINS, histogram_format, strlen(histogram_format)+10); + histogram_id = FS_register_histogram(fsstat_handle, FS_CALC_CURRENT, "CONTENT_LENGHT" ,1,9999999999,3); +} + +int ContentHistogram::content_lenght_operate(long long value) +{ + int ret = 0; + ret = FS_operate(fsstat_handle, histogram_id, 0, FS_OP_SET, value); + //FS_passive_output(fsstat_handle); + return ret; +} + + + diff --git a/src/http_header_v1.hpp b/src/http_header_v1.hpp new file mode 100644 index 0000000..6b4f5af --- /dev/null +++ b/src/http_header_v1.hpp @@ -0,0 +1,62 @@ +#ifndef __HTTP_HEADER_V1__ +#define __HTTP_HEADER_V1__ + +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +typedef struct _http_header_info +{ + int header_id; + long long header_num; +}http_header_t; + +class BaseFS +{ +public: + screen_stat_handle_t fsstat_handle; +public: + BaseFS(const char * header_name, const char *logdir); + ~BaseFS(); + + void start(void); + void passive_output(void); +}; + +class ContentTable : public BaseFS +{ +private: + map dynamic_line_id; + int total_status_id; + int no_header_id; + int num_column_id; + int ratio_column_id; + long long header_total; + long long no_header_num; + pthread_mutex_t mutex_lock; +public: + ContentTable(const char * header_name, const char *logdir); + ~ContentTable(); + int operate(enum field_op op, string line_name, long long value); + void operate_ratio(); + long long set_nocontent_num(); + long long get_head_total(); +}; + +class ContentHistogram : public BaseFS +{ +private: + int histogram_id; + pthread_mutex_t mutex_lock; +public: + ContentHistogram(const char * header_name, const char *logdir); + ~ContentHistogram(); + int content_lenght_operate(long long value); +}; +#endif diff --git a/src/http_stat_header.cpp b/src/http_stat_header.cpp new file mode 100644 index 0000000..d724199 --- /dev/null +++ b/src/http_stat_header.cpp @@ -0,0 +1,255 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "http_stat_header.h" +#include "http_header_v1.hpp" +#define HTTP_LOG_DEBUG 0 +g_env_conf_t g_env_conf_info; +long long bflag = 0; +int init_pmeinfo(content_header_flag **flag_pme, int thread_seq) +{ + content_header_flag* pme = (content_header_flag*)dictator_malloc(thread_seq, sizeof(content_header_flag)); + memset(pme, 0, sizeof(content_header_flag)); + *flag_pme = pme; + return 0; +} + +void clear_pmeinfo(content_header_flag *service_pme, int thread_seq) +{ + if(service_pme!=NULL) + { + dictator_free(thread_seq, service_pme); + } + service_pme = NULL; +} + +int checkout_head_val(std::string & line_name, int flag) +{ + int i = 0; + string tmp = line_name; + string::size_type idx; + char special_ch[14] = {'|',':','.',' ','<','>','[',']','#','!','@','\n','\r','\t'}; + for(i = 0; i < 14; i++) + { + idx = line_name.find(special_ch[i]); + if(idx != string::npos) + { + replace(line_name.begin(), line_name.end(), special_ch[i], '*'); + } + } + transform(line_name.begin(), line_name.end(), line_name.begin(), (int (*)(int))tolower); + if(flag == 1) + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_INFO, "HTTP_CONT_TYPE", "src header value[%s], dest header value[%s]", tmp.c_str(), line_name.c_str()); + else if(2 == flag) + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_INFO, "HTTP_CONT_ENCODING", "src header value[%s], dest header value[%s]", tmp.c_str(), line_name.c_str()); + else + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_INFO, "HTTP_OTHER", "src header value[%s], dest header value[%s]", tmp.c_str(), line_name.c_str()); + + return 1; +} + + +void deal_with_data(stSessionInfo * session_info, int thread_seq, struct streaminfo *a_stream, content_header_flag * flag_pme) +{ + /*if(a_stream->curdir == DIR_C2S) + { + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "FLAG", "dir error"); + return; + }*/ + int ret = 0; + long long len = 0; + string line_name; + char content_len[64] = {'0'}; + switch(session_info->prot_flag) + { + case HTTP_CONT_TYPE: + line_name = string((char *)session_info->buf, session_info->buflen); + if(0 == checkout_head_val(line_name, 1)) + { + break; + } + g_env_conf_info.cont_type_fs->operate(FS_OP_ADD, line_name, 1); + flag_pme->type_flag = 1; + break; + case HTTP_CONT_ENCODING: + line_name = string((char *)session_info->buf, session_info->buflen); + if(0 == checkout_head_val(line_name, 2)) + { + break; + } + g_env_conf_info.cont_encoding_fs->operate(FS_OP_ADD, line_name,1); + flag_pme->encoding_flag = 1; + break; + case HTTP_CONT_LENGTH: + memcpy(content_len,(char *)session_info->buf, session_info->buflen); + len = atoll(content_len); + ret = g_env_conf_info.cont_lenght_fs->content_lenght_operate(len); + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "HTTP_CONT_LENGTH", "content_length[%s], buflen:%d, addr[%s], ret = [%d]", content_len, session_info->buflen, printaddr(&(a_stream->addr), thread_seq), ret); + break; + case HTTP_RES_LINE: + flag_pme->uri_flag = 1; + break; + default: + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "ABNORMAL_HTTP", "buf:%s", (char *)session_info->buf); + break; + } +} + +void print_addr(stSessionInfo * session_info, int thread_seq, struct streaminfo *a_stream, content_header_flag * flag_pme) +{ + char p[1024] = {'\0'}; + if(session_info && session_info->buf) + { + memcpy(p, (char *)session_info->buf, session_info->buflen); +#ifdef HTTP_LOG_DEBUG + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "TEST", "[%p],[%lld],flag[%d]", flag_pme, flag_pme->bflag, session_info->session_state); +#endif + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "SESSION_INFO", "buf:[%s],buflen:[%d],addr:[%s]", p,session_info->buflen, printaddr(&(a_stream->addr), thread_seq)); + } + else + { +#ifdef HTTP_LOG_DEBUG + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "TEST", "[%p],[%lld],flag[%d]", flag_pme, flag_pme->bflag, session_info->session_state); +#endif + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "SESSION_INFO", "addr:[%s]", printaddr(&(a_stream->addr), thread_seq)); + } + return; +} + +char HTTP_STAT_HEADER_ENTRY(stSessionInfo * session_info,void **pme, int thread_seq,struct streaminfo *a_stream,void *a_packet) +{ + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "HTTP_STAT_HEADER_ENTRY","HTTP_STAT_HEADER_ENTRY:[%d]", session_info->session_state); + content_header_flag * flag_pme = (content_header_flag *)*pme; + if(NULL==session_info) + { + return PROT_STATE_DROPME; + } + + if(NULL == flag_pme) + { + if(init_pmeinfo(&flag_pme, thread_seq)<0) + { + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "INIT", "error"); + return PROT_STATE_DROPME; + } + flag_pme->bflag = (++bflag); + *pme = flag_pme; + } +#ifdef HTTP_LOG_DEBUG + if(session_info->session_state&SESSION_STATE_PENDING) + { + __sync_add_and_fetch(&(g_env_conf_info.pend_sum), 1); + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "s-sum1", "[%p],[%lld],pend_sum:%lld, addr:[%s],state[%d]",flag_pme,flag_pme->bflag,g_env_conf_info.pend_sum, printaddr(&(a_stream->addr), thread_seq), session_info->session_state); + } +#endif + if(session_info->buflen < 200) + { + print_addr(session_info, thread_seq, a_stream, flag_pme); + deal_with_data(session_info, thread_seq, a_stream, flag_pme); + } + else + { + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_FATAL, "HTTP_HEADER_ERROR", "The length of header:[%s]>200,[%d] bytes. Not do statistics! [%s]", session_info->buf, session_info->buflen, printaddr(&(a_stream->addr), thread_seq)); + } + if(session_info->session_state&SESSION_STATE_CLOSE) + { +#ifdef HTTP_LOG_DEBUG + __sync_add_and_fetch(&(g_env_conf_info.close_sum), 1); + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "s-sum2", "[%p],[%lld],close_sum:%lld, addr:[%s]",flag_pme,flag_pme->bflag,g_env_conf_info.close_sum, printaddr(&(a_stream->addr), thread_seq)); +#endif + if(1 == flag_pme->uri_flag && 1 != flag_pme->type_flag) + { + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "NO_TYPE", "[%p],[%lld]", flag_pme, flag_pme->bflag); + g_env_conf_info.cont_type_fs->set_nocontent_num(); + } + if(1 == flag_pme->uri_flag && 1 != flag_pme->encoding_flag) + { + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "NO_ENCODING", "[%p], [%lld]", flag_pme, flag_pme->bflag); + g_env_conf_info.cont_encoding_fs->set_nocontent_num(); + } + clear_pmeinfo((content_header_flag*)*pme, thread_seq); +#ifdef HTTP_LOG_DEBUG + MESA_handle_runtime_log(g_env_conf_info.logger, RLOG_LV_DEBUG, "sum", "pend_sum:%lld, close_sum:%lld", g_env_conf_info.pend_sum, g_env_conf_info.close_sum); +#endif + //return PROT_STATE_DROPME; + } + return PROT_STATE_GIVEME; +} + + +int http_service_readconf(const char* filename) +{ + MESA_load_profile_short_def(filename, "LOG", "log_level", (short*)&(g_env_conf_info.log_level), 30); + MESA_load_profile_string_def(filename, "LOG", "log_path", g_env_conf_info.log_path, sizeof(g_env_conf_info.log_path), DEFAULT_LOG_PATH); + MESA_load_profile_string_def(filename, "LOG", "fs_path", g_env_conf_info.fs_path, sizeof(g_env_conf_info.fs_path),DEFAULT_FS_PATH); + g_env_conf_info.logger = MESA_create_runtime_log_handle(g_env_conf_info.log_path, g_env_conf_info.log_level); + if(NULL == g_env_conf_info.logger) + { + printf("http_stat_header.so get log handle error!\n"); + return -1; + } + return 0; +} + +void * update_ratio(void * arg) +{ + while(1) + { + sleep(10); + g_env_conf_info.cont_type_fs->operate_ratio(); + g_env_conf_info.cont_encoding_fs->operate_ratio(); + g_env_conf_info.cont_lenght_fs->passive_output(); + } + return NULL; +} + +int HTTP_STAT_HEADER_INIT() +{ + pthread_t thread_tid; + pthread_attr_t attr; + memset(&g_env_conf_info, 0, sizeof(g_env_conf_t)); + if(0 != http_service_readconf(CONF_PATH)) + { + printf("http_stat_header.so http_service.conf read error!\n"); + return -1; + } + g_env_conf_info.cont_type_fs = new ContentTable(CONT_TYPE, g_env_conf_info.fs_path); + g_env_conf_info.cont_type_fs->start(); + g_env_conf_info.cont_encoding_fs = new ContentTable(CONT_ENCODING, g_env_conf_info.fs_path); + g_env_conf_info.cont_encoding_fs->start(); + g_env_conf_info.cont_lenght_fs = new ContentHistogram(CONT_LENGHT, g_env_conf_info.fs_path); + g_env_conf_info.cont_lenght_fs->start(); + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + if(0 != pthread_create(&thread_tid, &attr, update_ratio, NULL)) + { + printf("create thread update_ratio failed!\n"); + return -1; + } + return 0; +} + +void HTTP_STAT_HEADER_DESTROY() +{ + return; +} + diff --git a/src/http_stat_header.h b/src/http_stat_header.h new file mode 100644 index 0000000..a7dd42a --- /dev/null +++ b/src/http_stat_header.h @@ -0,0 +1,48 @@ +#ifndef HTTP_STAT_HEADER_ +#define HTTP_STAT_HEADER_ +#include "http_header_v1.hpp" + +#define CONF_PATH "./conf/http_stat_header.conf" +#define CONT_TYPE "content_type" +#define CONT_ENCODING "content_encoding" +#define CONT_LENGHT "content_lenght" +#define DEFAULT_LOG_PATH "./log/http_statistic_runtime" +#define DEFAULT_FS_PATH "./log/http_statistic_fs" + +typedef struct _content_header_flag +{ + int type_flag; + int encoding_flag; + int uri_flag; + long long bflag; +}content_header_flag; + +typedef struct _g_env_conf_t +{ + void * logger; + char log_path[512]; + short log_level; + char fs_path[512]; + screen_stat_handle_t cont_type_handle; + screen_stat_handle_t cont_encoding_handle; + ContentTable * cont_type_fs; + ContentTable * cont_encoding_fs; + ContentHistogram * cont_lenght_fs; + long long pend_sum; + long long close_sum; + long long data_sum; + +}g_env_conf_t; + +#ifdef __cplusplus +extern "C" { +#endif +char HTTP_STAT_HEADER_ENTRY(stSessionInfo * session_info,void **pme, int thread_seq,struct streaminfo *a_stream,void *a_packet); +int HTTP_STAT_HEADER_INIT(); +void HTTP_STAT_HEADER_DESTROY(); + +#ifdef __cplusplus +} +#endif + +#endif