summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/Version.cmake2
-rw-r--r--include/common.h6
-rw-r--r--include/job_ctx.h4
-rw-r--r--src/config.c20
-rw-r--r--src/job_ctx.c66
-rw-r--r--src/monit.c31
-rw-r--r--src/trace_output.c7
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;
}