diff options
| -rw-r--r-- | cmake/Version.cmake | 2 | ||||
| -rw-r--r-- | include/common.h | 6 | ||||
| -rw-r--r-- | include/job_ctx.h | 4 | ||||
| -rw-r--r-- | src/config.c | 20 | ||||
| -rw-r--r-- | src/job_ctx.c | 66 | ||||
| -rw-r--r-- | src/monit.c | 31 | ||||
| -rw-r--r-- | src/trace_output.c | 7 |
7 files changed, 80 insertions, 56 deletions
diff --git a/cmake/Version.cmake b/cmake/Version.cmake index 3522855..0dcbb85 100644 --- a/cmake/Version.cmake +++ b/cmake/Version.cmake @@ -35,7 +35,7 @@ if(NOT DP_TRACE_VERSION_PATCH) set(DP_TRACE_VERSION_PATCH 0) endif() -set(DP_TRACE_VERSION "${DP_TRACE_VERSION_MAJOR}.${DP_TRACE_VERSION_MINOR}.${DP_TRACE_VERSION_PATCH}") +set(DP_TRACE_VERSION "${DP_TRACE_VERSION_MAJOR}.${DP_TRACE_VERSION_MINOR}.${DP_TRACE_VERSION_PATCH}-${DP_TRACE_COMMIT_HASH}") # system information execute_process(COMMAND uname -r OUTPUT_VARIABLE DP_TRACE_VERSION_KERNEL) diff --git a/include/common.h b/include/common.h index e108dda..6f75b8e 100644 --- a/include/common.h +++ b/include/common.h @@ -14,6 +14,12 @@ #define MR_SYMBOL_MAX 128 #endif +#define TELEMETRY_INDEX_START 8 +#define TELEMETRY_INDEX_END DP_TRACE_JOB_NUM_MAX + +#define TRACE_INDEX_START 0 +#define TRACE_INDEX_END TELEMETRY_INDEX_START + #ifndef likely #define likely(x) __builtin_expect(!!(x), 1) #endif /* likely */ diff --git a/include/job_ctx.h b/include/job_ctx.h index 57a79e8..fbb1f95 100644 --- a/include/job_ctx.h +++ b/include/job_ctx.h @@ -17,4 +17,6 @@ uint8_t job_id_role_get(job_bitmap_t job_id); void telemetry_job_add_cb(const char * table_name, int table_id, const char * key, const char * table_line, void ** ad, long argl, void * argp); void telemetry_job_del_cb(int table_id, void ** ad, long argl, void * argp); -void telemetry_job_uuid_get(job_bitmap_t job_id, unsigned char * uu);
\ No newline at end of file +void telemetry_job_uuid_get(job_bitmap_t job_id, unsigned char * uu); + +void job_desc_dump(const struct dp_trace_job_desc * desc);
\ No newline at end of file diff --git a/src/config.c b/src/config.c index b866d2f..d3a4ef3 100644 --- a/src/config.c +++ b/src/config.c @@ -153,9 +153,9 @@ void dynamic_config_load() g_conf->nr_desc = 0; memset(g_conf->desc, 0, sizeof(g_conf->desc)); - for (int rule_index = 0; rule_index < DP_TRACE_JOB_NUM_MAX; rule_index++) + for (int rule_index = TRACE_INDEX_START; rule_index < TRACE_INDEX_END; rule_index++) { - unsigned int enable = 1; + unsigned int enable = 0; char bpf_expr[MR_BPF_EXPRESSION_MAX] = {}; unsigned int pkt_cnt_max = 0; unsigned int sampling = 1; @@ -166,12 +166,8 @@ void dynamic_config_load() MESA_load_profile_uint_nodef(g_conf->dy_config_path, dp_trace_section, "enable", &enable); - ret = MESA_load_profile_string_nodef(g_conf->dy_config_path, dp_trace_section, "bpf_expr", bpf_expr, - sizeof(bpf_expr)); - if (ret < 0) - { - continue; - } + MESA_load_profile_string_nodef(g_conf->dy_config_path, dp_trace_section, "bpf_expr", bpf_expr, + sizeof(bpf_expr)); MESA_load_profile_uint_nodef(g_conf->dy_config_path, dp_trace_section, "pkt_cnt_max", &pkt_cnt_max); MESA_load_profile_uint_nodef(g_conf->dy_config_path, dp_trace_section, "sampling", &sampling); @@ -196,6 +192,14 @@ void dynamic_config_load() void dynamic_config_load_and_apply() { dynamic_config_load(); + for (int i = 0; i < g_conf->nr_desc; i++) + { + if (strlen(g_conf->desc[i].bpf_expr) != 0) + { + dzlog_info("dump dp trace job desc."); + job_desc_dump(&g_conf->desc[i]); + } + } job_rule_apply(g_conf->desc, g_conf->nr_desc); } diff --git a/src/job_ctx.c b/src/job_ctx.c index 352d63b..b54cf0e 100644 --- a/src/job_ctx.c +++ b/src/job_ctx.c @@ -19,15 +19,12 @@ static struct dp_trace_job_occupy dp_trace_job_occupy[DP_TRACE_JOB_NUM_MAX] = {} static struct dp_trace_telemetry_desc telemetry_descs[DP_TRACE_JOB_NUM_MAX] = {}; static int telemetry_unused_job_index_get(); -static void job_desc_dump(struct dp_trace_job_desc * desc); void job_rule_apply(struct dp_trace_job_desc desc[], unsigned int nr_desc) { int ret = 0; for (unsigned int i = 0; i < nr_desc; i++) { - job_desc_dump(&desc[i]); - uint8_t rule_index = desc[i].rule_index; job_bitmap_t cur_job_id = index_to_job_id(rule_index); uint8_t cur_job_uesd = is_job_id_used(cur_job_id); @@ -38,13 +35,13 @@ void job_rule_apply(struct dp_trace_job_desc desc[], unsigned int nr_desc) ret = marsio_dp_trace_job_add(mr_instance, &desc[i]); if (ret == 0) { - dzlog_error("add rule %u failed. bpf_expr is: %s", rule_index, desc[i].bpf_expr); + dzlog_error("add rule index %u failed. bpf_expr is: %s", rule_index, desc[i].bpf_expr); } else { dp_trace_job_occupy[rule_index].uesd = 1; dp_trace_job_occupy[rule_index].role = desc[i].measurement_type; - dzlog_info("add rule %u successfully. bpf_expr is: %s", rule_index, desc[i].bpf_expr); + dzlog_info("add rule index %u successfully. bpf_expr is: %s", rule_index, desc[i].bpf_expr); } continue; } @@ -55,7 +52,7 @@ void job_rule_apply(struct dp_trace_job_desc desc[], unsigned int nr_desc) ret = marsio_dp_trace_job_del(mr_instance, cur_job_id); if (ret < 0) { - dzlog_error("del rule %u failed. bpf_expr is: %s", rule_index, desc[i].bpf_expr); + dzlog_error("del rule index %u failed. bpf_expr is: %s", rule_index, desc[i].bpf_expr); } else { @@ -67,7 +64,7 @@ void job_rule_apply(struct dp_trace_job_desc desc[], unsigned int nr_desc) { dp_trace_pcapng_merger(cur_job_id); } - dzlog_info("del rule %u successfully. bpf_expr is: %s", rule_index, desc[i].bpf_expr); + dzlog_info("del rule index %u successfully. bpf_expr is: %s", rule_index, desc[i].bpf_expr); } continue; } @@ -98,6 +95,8 @@ void telemetry_job_add_cb(const char * table_name, int table_id, const char * ke job_desc->enable = true; memcpy(&telemetry_descs[index], &telemetry_desc, sizeof(struct dp_trace_telemetry_desc)); + dzlog_info("telemetry job desc dump..."); + job_desc_dump(&telemetry_descs[index].job_desc); job_rule_apply(&telemetry_descs[index].job_desc, 1); *ad = &telemetry_descs[index]; @@ -108,6 +107,9 @@ void telemetry_job_del_cb(int table_id, void ** ad, long argl, void * argp) struct dp_trace_telemetry_desc * telemetry_desc = *ad; struct dp_trace_job_desc * job_desc = &telemetry_desc->job_desc; job_desc->enable = false; + + dzlog_info("telemetry job desc dump..."); + job_desc_dump(job_desc); job_rule_apply(job_desc, 1); return; } @@ -147,9 +149,6 @@ void telemetry_job_uuid_get(job_bitmap_t job_id, unsigned char * uu) static int telemetry_unused_job_index_get() { -#define TELEMETRY_INDEX_START 8 -#define TELEMETRY_INDEX_END DP_TRACE_JOB_NUM_MAX - int ret = -1; for (unsigned int i = TELEMETRY_INDEX_START; i < TELEMETRY_INDEX_END; i++) { @@ -165,18 +164,17 @@ static int telemetry_unused_job_index_get() return ret; } -static void job_desc_dump(struct dp_trace_job_desc * desc) +void job_desc_dump(const struct dp_trace_job_desc * desc) { - dzlog_info("dp trace job desc dump"); dzlog_info("rule_index:%u", desc->rule_index); - dzlog_info("enable:%u", desc->enable); - dzlog_info("measurement_type:%u", desc->measurement_type); - dzlog_info("bpf_expr:%s", desc->bpf_expr); - dzlog_info("pkt_cnt_max:%u", desc->pkt_cnt_max); - dzlog_info("sampling:%u", desc->sampling); - dzlog_info("snaplen:%u", desc->snaplen); - - dzlog_info("traffic_link_id_cnt:%u", desc->traffic_link_id_cnt); + dzlog_info(" enable:%u", desc->enable); + dzlog_info(" measurement_type:%u", desc->measurement_type); + dzlog_info(" bpf_expr:%s", desc->bpf_expr); + dzlog_info(" pkt_cnt_max:%u", desc->pkt_cnt_max); + dzlog_info(" sampling:%u", desc->sampling); + dzlog_info(" snaplen:%u", desc->snaplen); + + dzlog_info(" traffic_link_id_cnt:%u", desc->traffic_link_id_cnt); char traffic_link_id_str[512]; int len = snprintf(traffic_link_id_str, sizeof(traffic_link_id_str), "%s", "["); for (unsigned int i = 0; i < desc->traffic_link_id_cnt; i++) @@ -193,29 +191,5 @@ static void job_desc_dump(struct dp_trace_job_desc * desc) snprintf(traffic_link_id_str + len, sizeof(traffic_link_id_str) - len, fromat, desc->traffic_link_ids[i]); } len += snprintf(traffic_link_id_str + len, sizeof(traffic_link_id_str) - len, "%s", "]"); - dzlog_info("traffic_link_ids:%s", traffic_link_id_str); -} - -#if 0 -int traffic_link_id_extract(char * traffic_str, uint16_t traffic_link_ids[], unsigned int size) -{ - unsigned int traffic_link_id_cnt = 0; - const char * delim = "[], "; - char * token = strtok(traffic_str, delim); - - for (unsigned int i = 0; i < size; i++) - { - if (token != NULL) - { - char * endptr; - uint16_t id = (uint16_t)strtol(token, &endptr, 10); - if (endptr != token) - { - traffic_link_ids[traffic_link_id_cnt++] = id; - } - } - token = strtok(NULL, delim); - } - return traffic_link_id_cnt; -} -#endif
\ No newline at end of file + dzlog_info(" traffic_link_ids:%s", traffic_link_id_str); +}
\ No newline at end of file diff --git a/src/monit.c b/src/monit.c index 8434564..cb4c074 100644 --- a/src/monit.c +++ b/src/monit.c @@ -1,5 +1,6 @@ #include "monit.h" #include "config.h" +#include "job_ctx.h" #include <cjson/cJSON.h> #include <pthread.h> @@ -25,6 +26,34 @@ struct record_saving_stat * record_saving_stat_point_get(unsigned int thread_id) return &monit->savint_stats[thread_id]; } +static cJSON * monit_current_job_running() +{ + struct cJSON * j_job_running_info = cJSON_CreateObject(); + + char job_runnig_str[512]; + int len = snprintf(job_runnig_str, sizeof(job_runnig_str), "%s", "["); + for (int i = 0; i < DP_TRACE_JOB_NUM_MAX; i++) + { + job_bitmap_t job_id = index_to_job_id(i); + int uesd = is_job_id_used(job_id); + + char * normal_format = "%d,"; + char * last_format = "%d"; + + char * fromat = normal_format; + if (i == DP_TRACE_JOB_NUM_MAX - 1) + { + fromat = last_format; + } + len += snprintf(job_runnig_str + len, sizeof(job_runnig_str) - len, fromat, uesd); + } + len += snprintf(job_runnig_str + len, sizeof(job_runnig_str) - len, "%s", "]"); + + cJSON_AddStringToObject(j_job_running_info, "current_job_index", job_runnig_str); + + return j_job_running_info; +} + static void monit_dump() { const struct config * conf = global_config_get(); @@ -74,6 +103,8 @@ static void monit_dump() total_stat.save_to_file_failed_at_write_to_disk); cJSON_AddNumberToObject(json_root, "save_to_file_success", total_stat.save_to_file_success); + cJSON_AddItemToObject(json_root, "current_job", monit_current_job_running()); + char * str_json_print = cJSON_Print(json_root); FILE * fp_monit = fopen(conf->monit_file_path, "w"); if (fp_monit == NULL) diff --git a/src/trace_output.c b/src/trace_output.c index d32bf65..e04834e 100644 --- a/src/trace_output.c +++ b/src/trace_output.c @@ -415,6 +415,13 @@ void dp_trace_pcapng_merger(job_bitmap_t job_id) if (!is_file_exists(dp_trace_output[index].file_bak_path)) { // Only one file, no need to merge + dzlog_info("without %s, no merge action is performed.", dp_trace_output[index].file_bak_path); + goto end; + } + + if (dp_trace_output[index].pcapng == NULL) + { + dzlog_info("%s is not opened, no merge action is performed.", dp_trace_output[index].file_path); goto end; } |
