diff --git a/avoid-use-ato.patch b/avoid-use-ato.patch deleted file mode 100644 index 63403b11714093865e30af57008df206a464eacf..0000000000000000000000000000000000000000 --- a/avoid-use-ato.patch +++ /dev/null @@ -1,291 +0,0 @@ -From 5a3f1ba26d09349a610d84547a076d619b2539bd Mon Sep 17 00:00:00 2001 -From: hlp_00667687 -Date: Thu, 25 Apr 2024 17:21:15 +0800 -Subject: [PATCH] avoid use ato* - ---- - src/common/histogram.c | 2 +- - src/lib/probe/extend_probe.c | 2 +- - src/lib/probe/snooper.c | 4 ++-- - src/probes/extends/ebpf.probe/src/ioprobe/ioprobe.c | 2 +- - src/probes/extends/ebpf.probe/src/lib/conntrack.c | 8 ++++---- - src/probes/extends/ebpf.probe/src/lib/java_support.c | 8 ++++---- - src/probes/extends/ebpf.probe/src/lib/tcp.c | 2 +- - src/probes/extends/ebpf.probe/src/pgsliprobe/pgsliprobe.c | 2 +- - src/probes/system_infos.probe/system_cpu.c | 4 ++-- - src/probes/system_infos.probe/system_disk.c | 2 +- - src/probes/system_infos.probe/system_os.c | 4 ++-- - src/probes/system_infos.probe/system_procs.c | 6 +++--- - src/probes/virtualized_infos.probe/virt_proc.c | 4 ++-- - 13 files changed, 25 insertions(+), 25 deletions(-) - -diff --git a/src/common/histogram.c b/src/common/histogram.c -index cf79899..40ef2ef 100644 ---- a/src/common/histogram.c -+++ b/src/common/histogram.c -@@ -209,7 +209,7 @@ static int resolve_bucket_size(char *buf, char **new_buf) - } - *pos = '\0'; - -- ret = atoi(buf); -+ ret = strtol(buf, NULL, 10); - if (ret <= 0) { - return -1; - } -diff --git a/src/lib/probe/extend_probe.c b/src/lib/probe/extend_probe.c -index 5580ddb..bb40867 100644 ---- a/src/lib/probe/extend_probe.c -+++ b/src/lib/probe/extend_probe.c -@@ -60,7 +60,7 @@ static int lkup_and_set_probe_pid(struct probe_s *probe) - if (exec_cmd((const char *)cmd, pid_str, INT_LEN) < 0) { - return -1; - } -- pid = atoi(pid_str); -+ pid = strtol(pid_str, NULL, 10); - (void)pthread_rwlock_wrlock(&probe->rwlock); - probe->pid = pid; - (void)pthread_rwlock_unlock(&probe->rwlock); -diff --git a/src/lib/probe/snooper.c b/src/lib/probe/snooper.c -index 053e80a..917d1f1 100644 ---- a/src/lib/probe/snooper.c -+++ b/src/lib/probe/snooper.c -@@ -1176,7 +1176,7 @@ static int gen_snooper_by_procname(struct probe_s *probe) - } - } - // Well matched -- (void)add_snooper_obj_procid(probe, (u32)atoi(entry->d_name)); -+ (void)add_snooper_obj_procid(probe, strtoul(entry->d_name, NULL, 10)); - break; - } - cmdline_obtained = 0; -@@ -1233,7 +1233,7 @@ static int __gen_snooper_by_container(struct probe_s *probe, con_id_element *con - LL_FOREACH_SAFE(con_id_list, con_info_elem, tmp) { - if (strcmp((const char *)container_id, con_info_elem->con_id) == 0) { - // Well matched -- (void)add_snooper_obj_procid(probe, (u32)atoi(entry->d_name)); -+ (void)add_snooper_obj_procid(probe, strtoul(entry->d_name, NULL, 10)); - break; - } - } -diff --git a/src/probes/extends/ebpf.probe/src/ioprobe/ioprobe.c b/src/probes/extends/ebpf.probe/src/ioprobe/ioprobe.c -index cc75ef4..272a264 100644 ---- a/src/probes/extends/ebpf.probe/src/ioprobe/ioprobe.c -+++ b/src/probes/extends/ebpf.probe/src/ioprobe/ioprobe.c -@@ -599,7 +599,7 @@ static char is_load_probe(char *probe_name) - return 0; - } - -- count = atoi((const char *)count_str); -+ count = strtol(count_str, NULL, 10); - - return (count > 0) ? 1 : 0; - } -diff --git a/src/probes/extends/ebpf.probe/src/lib/conntrack.c b/src/probes/extends/ebpf.probe/src/lib/conntrack.c -index db56071..d1f7391 100644 ---- a/src/probes/extends/ebpf.probe/src/lib/conntrack.c -+++ b/src/probes/extends/ebpf.probe/src/lib/conntrack.c -@@ -134,7 +134,7 @@ static struct tcp_conntrack_s *parse_conntrack_tcp(const char *s) - if (__get_sub_str((const char *)p, "sport=", " ", sub_str, INET6_ADDRSTRLEN)) { - goto err; - } -- conn_tcp->sport = atoi(sub_str); -+ conn_tcp->sport = strtol(sub_str, NULL, 10); - - // parse conntrack tcp dst port - p = strstr((const char *)p, "dport="); -@@ -145,7 +145,7 @@ static struct tcp_conntrack_s *parse_conntrack_tcp(const char *s) - if (__get_sub_str((const char *)p, "dport=", " ", sub_str, INET6_ADDRSTRLEN)) { - goto err; - } -- conn_tcp->dport = atoi(sub_str); -+ conn_tcp->dport = strtol(sub_str, NULL, 10); - - // parse conntrack tcp reply src ip address - p = strstr((const char *)p, "src="); -@@ -178,7 +178,7 @@ static struct tcp_conntrack_s *parse_conntrack_tcp(const char *s) - if (__get_sub_str((const char *)p, "sport=", " ", sub_str, INET6_ADDRSTRLEN)) { - goto err; - } -- conn_tcp->reply_sport = atoi(sub_str); -+ conn_tcp->reply_sport = strtol(sub_str, NULL, 10); - - // parse conntrack tcp reply dst port - p = strstr((const char *)p, "dport="); -@@ -189,7 +189,7 @@ static struct tcp_conntrack_s *parse_conntrack_tcp(const char *s) - if (__get_sub_str((const char *)p, "dport=", " ", sub_str, INET6_ADDRSTRLEN)) { - goto err; - } -- conn_tcp->reply_dport = atoi(sub_str); -+ conn_tcp->reply_dport = strtol(sub_str, NULL, 10); - - return conn_tcp; - -diff --git a/src/probes/extends/ebpf.probe/src/lib/java_support.c b/src/probes/extends/ebpf.probe/src/lib/java_support.c -index 0456db2..f8cc134 100644 ---- a/src/probes/extends/ebpf.probe/src/lib/java_support.c -+++ b/src/probes/extends/ebpf.probe/src/lib/java_support.c -@@ -76,13 +76,13 @@ static int _set_effective_id(int pid, struct jvm_process_info *v) - size_t size; - while (getline(&line, &size, status_file) != -1) { - if (strncmp(line, "Uid:", 4) == 0 && strtok(line + 4, "\t ") != NULL) { -- eUid = (uid_t)atoi(strtok(NULL, "\t ")); -+ eUid = strtoul(strtok(NULL, "\t "), NULL, 10); - } else if (strncmp(line, "Gid:", 4) == 0 && strtok(line + 4, "\t ") != NULL) { -- eGid = (gid_t)atoi(strtok(NULL, "\t ")); -+ eGid = strtoul(strtok(NULL, "\t "), NULL, 10); - } else if (strncmp(line, "NStgid:", 7) == 0) { - char* s; - for (s = strtok(line + 7, "\t "); s != NULL; s = strtok(NULL, "\t ")) { -- nspid = atoi(s); -+ nspid = strtol(s, NULL, 10); - } - nspid_found = 1; - } -@@ -247,7 +247,7 @@ static int _exe_attach_cmd(char *cmd) - while(fgets(result_buf, sizeof(result_buf), f) != NULL) { - DEBUG("%s\n", result_buf); - /* 判断load指令执行返回结果,非0表示失败 */ -- if (isdigit(result_buf[0]) && atoi(result_buf) != 0) { -+ if (isdigit(result_buf[0]) && strtol(result_buf, NULL, 10) != 0) { - ERROR("[JAVA_SUPPORT]: attach failed, cmd: %s, ret code: %s\n", cmd, result_buf); - (void)pclose(f); - return -1; -diff --git a/src/probes/extends/ebpf.probe/src/lib/tcp.c b/src/probes/extends/ebpf.probe/src/lib/tcp.c -index 572c3e5..664b9f7 100644 ---- a/src/probes/extends/ebpf.probe/src/lib/tcp.c -+++ b/src/probes/extends/ebpf.probe/src/lib/tcp.c -@@ -652,7 +652,7 @@ int get_listen_sock_inode(struct tcp_listen_port *tlp, unsigned long *ino) - return -1; - } - SPLIT_NEWLINE_SYMBOL(line); -- *ino = atoi(line); -+ *ino = strtol(line, NULL, 10); - - (void)pclose(f); - return 0; -diff --git a/src/probes/extends/ebpf.probe/src/pgsliprobe/pgsliprobe.c b/src/probes/extends/ebpf.probe/src/pgsliprobe/pgsliprobe.c -index c7a680e..a3faacf 100644 ---- a/src/probes/extends/ebpf.probe/src/pgsliprobe/pgsliprobe.c -+++ b/src/probes/extends/ebpf.probe/src/pgsliprobe/pgsliprobe.c -@@ -299,7 +299,7 @@ static int add_bpf_link_by_search_pids() - if (fgets(line, LINE_BUF_LEN, f) == NULL) { - continue; - } -- pid = (unsigned int)atoi(line); -+ pid = strtoul(line, NULL, 10); - if (pid <= 0) { - continue; - } -diff --git a/src/probes/system_infos.probe/system_cpu.c b/src/probes/system_infos.probe/system_cpu.c -index f90592f..7c1a25f 100644 ---- a/src/probes/system_infos.probe/system_cpu.c -+++ b/src/probes/system_infos.probe/system_cpu.c -@@ -66,7 +66,7 @@ static void get_cpu_time_in_jiff(char *cpu_total_line, u64 *time_total, u64 *tim - - while (i++ < PROC_STAT_COL_NUM) { - retrieved_time = __strtok_r(NULL, " ", &save); -- time = atoll(retrieved_time); -+ time = strtoll(retrieved_time, NULL, 10); - - *time_total += time; - -@@ -256,7 +256,7 @@ static int get_cpu_mhz_info(void) - token = strtok(NULL, ":"); - } - if (last_token != NULL && index < cpus_num) { -- cur_cpus[index]->mhz = atof(last_token); -+ cur_cpus[index]->mhz = strtod(last_token, NULL); - index++; - } - } -diff --git a/src/probes/system_infos.probe/system_disk.c b/src/probes/system_infos.probe/system_disk.c -index f3fc32e..6465697 100644 ---- a/src/probes/system_infos.probe/system_disk.c -+++ b/src/probes/system_infos.probe/system_disk.c -@@ -468,7 +468,7 @@ static int get_diskdev_num(int *num) - return -1; - } - SPLIT_NEWLINE_SYMBOL(line); -- *num = atoi(line); -+ *num = strtol(line, NULL, 10); - (void)pclose(f); - return 0; - } -diff --git a/src/probes/system_infos.probe/system_os.c b/src/probes/system_infos.probe/system_os.c -index ceb8398..6a7088a 100644 ---- a/src/probes/system_infos.probe/system_os.c -+++ b/src/probes/system_infos.probe/system_os.c -@@ -139,7 +139,7 @@ static int parse_netmask(char *ip_addr) - if (colon == NULL) { - return 32; - } -- return (atoi(colon + 1) > 32) ? 0 : atoi(colon + 1); -+ return (strtol(colon + 1, NULL, 10) > 32) ? 0 : strtol(colon + 1, NULL, 10); - } - - /* 检查IP是否在某网段内 */ -@@ -281,7 +281,7 @@ static int get_resource_info(struct node_infos *infos) - infos->clock_ticks = (u64)sysconf(_SC_CLK_TCK); - sys_btime[0] = 0; - (void)get_system_btime(sys_btime); -- infos->os_btime = (u64)atoll(sys_btime); -+ infos->os_btime = strtoull(sys_btime, NULL, 10); - return 0; - } - -diff --git a/src/probes/system_infos.probe/system_procs.c b/src/probes/system_infos.probe/system_procs.c -index 5a10fc3..f8dd1a3 100644 ---- a/src/probes/system_infos.probe/system_procs.c -+++ b/src/probes/system_infos.probe/system_procs.c -@@ -50,7 +50,7 @@ static proc_hash_t *hash_find_proc(u32 pid, const char *stime) - proc_hash_t temp = {0}; - - temp.key.pid = pid; -- temp.key.start_time = (u64)atoll(stime); -+ temp.key.start_time = strtoull(stime, NULL, 10); - HASH_FIND(hh, g_procmap, &temp.key, sizeof(proc_key_t), p); - - return p; -@@ -236,7 +236,7 @@ static int get_proc_fdcnt(u32 pid, proc_info_t *proc_info) - - static void do_set_proc_stat(proc_info_t *proc_info, char *buf, int index) - { -- u64 value = (u64)atoll(buf); -+ u64 value = strtoull(buf, NULL, 10); - switch (index) - { - case PROC_STAT_MIN_FLT: -@@ -557,7 +557,7 @@ static proc_hash_t* init_one_proc(u32 pid, char *stime, char *comm) - (void)memset(item, 0, sizeof(proc_hash_t)); - - item->key.pid = pid; -- item->key.start_time = (u64)atoll(stime); -+ item->key.start_time = strtoull(stime, NULL, 10); - - (void)snprintf(item->info.comm, sizeof(item->info.comm), "%s", comm); - item->flag = PROC_IN_PROBE_RANGE; -diff --git a/src/probes/virtualized_infos.probe/virt_proc.c b/src/probes/virtualized_infos.probe/virt_proc.c -index cbdb6e0..7a6848b 100644 ---- a/src/probes/virtualized_infos.probe/virt_proc.c -+++ b/src/probes/virtualized_infos.probe/virt_proc.c -@@ -110,7 +110,7 @@ static int get_qemu_proc_tgid(struct proc_infos *one_proc) - ERROR("[VIRT_PROC] get uuid(%s)'s tgid failed.\n", one_proc->uuid); - return -1; - } -- one_proc->tgid = atoi(line); -+ one_proc->tgid = strtol(line, NULL, 10); - - output_proc_infos(one_proc); - -@@ -147,7 +147,7 @@ static int get_vhost_proc_tgid(struct proc_infos *one_proc) - return -1; - } - SPLIT_NEWLINE_SYMBOL(line); -- tmp.tgid = atoi(line); -+ tmp.tgid = strtol(line, NULL, 10); - output_proc_infos(&tmp); - } - --- -2.28.0.windows.1 - diff --git a/bugfix-probe_define-access-out-of-bounds.patch b/bugfix-probe_define-access-out-of-bounds.patch deleted file mode 100644 index 58715a4981c6dd83ec3b81bf678884c411a07845..0000000000000000000000000000000000000000 --- a/bugfix-probe_define-access-out-of-bounds.patch +++ /dev/null @@ -1,237 +0,0 @@ -From dda00ceb8e98171a05cb5903cf26378a3d1c18d2 Mon Sep 17 00:00:00 2001 -From: wo_cow -Date: Fri, 26 Apr 2024 11:19:00 +0800 -Subject: [PATCH] bugfix: probe_define access out of bounds - ---- - gala-gopher.spec | 10 +++-- - src/common/ipc.h | 58 ++++++++++++++++++++++++++++ - src/lib/probe/probe_mng.c | 80 ++++++++++++--------------------------- - src/lib/probe/probe_mng.h | 1 + - 4 files changed, 90 insertions(+), 59 deletions(-) - -diff --git a/gala-gopher.spec b/gala-gopher.spec -index 24f6bae..85fa3fa 100644 ---- a/gala-gopher.spec -+++ b/gala-gopher.spec -@@ -109,7 +109,7 @@ BUILD_OPTS=( - -DENABLE_FLAMEGRAPH=%[0%{?without_flamegraph}?0:1] - -DENABLE_L7=%[0%{?without_l7}?0:1] - -DENABLE_TCP=%[0%{?without_tcp}?0:1] -- -DENABLE_SOCKET=%[0%{?without_tcp}?0:1] -+ -DENABLE_SOCKET=%[0%{?without_socket}?0:1] - -DENABLE_IO=%[0%{?without_io}?0:1] - -DENABLE_PROC=%[0%{?without_proc}?0:1] - -DENABLE_JVM=%[0%{?without_jvm}?0:1] -@@ -155,8 +155,12 @@ if [ -d /var/log/gala-gopher ]; then - othermode=$(expr $(stat -L -c "%a" /var/log/gala-gopher) % 10) - if [ $othermode -ne 0 ]; then - chmod 750 /var/log/gala-gopher -- chmod 750 /var/log/gala-gopher/debug -- chmod 640 /var/log/gala-gopher/debug/gopher.log -+ if [ -d /var/log/gala-gopher ]; then -+ chmod 750 /var/log/gala-gopher/debug -+ fi -+ if [ -e /var/log/gala-gopher/debug/gopher.log ]; then -+ chmod 640 /var/log/gala-gopher/debug/gopher.log -+ fi - fi - fi - -diff --git a/src/common/ipc.h b/src/common/ipc.h -index 0bc043a..c14bbf1 100644 ---- a/src/common/ipc.h -+++ b/src/common/ipc.h -@@ -21,6 +21,64 @@ - #include "args.h" - #include "object.h" - -+#ifndef ENABLE_BASEINFO -+#define ENABLE_BASEINFO 0 -+#endif -+#ifndef ENABLE_VIRT -+#define ENABLE_VIRT 0 -+#endif -+#ifndef ENABLE_FLAMEGRAPH -+#define ENABLE_FLAMEGRAPH 0 -+#endif -+#ifndef ENABLE_L7 -+#define ENABLE_L7 0 -+#endif -+#ifndef ENABLE_TCP -+#define ENABLE_TCP 0 -+#endif -+#ifndef ENABLE_SOCKET -+#define ENABLE_SOCKET 0 -+#endif -+#ifndef ENABLE_IO -+#define ENABLE_IO 0 -+#endif -+#ifndef ENABLE_PROC -+#define ENABLE_PROC 0 -+#endif -+#ifndef ENABLE_JVM -+#define ENABLE_JVM 0 -+#endif -+#ifndef ENABLE_POSTGRE_SLI -+#define ENABLE_POSTGRE_SLI 0 -+#endif -+#ifndef ENABLE_OPENGAUSS_SLI -+#define ENABLE_OPENGAUSS_SLI 0 -+#endif -+#ifndef ENABLE_NGINX -+#define ENABLE_NGINX 0 -+#endif -+#ifndef ENABLE_KAFKA -+#define ENABLE_KAFKA 0 -+#endif -+#ifndef ENABLE_TPROFILING -+#define ENABLE_TPROFILING 0 -+#endif -+#ifndef ENABLE_HW -+#define ENABLE_HW 0 -+#endif -+#ifndef ENABLE_NGINX -+#define ENABLE_NGINX 0 -+#endif -+#ifndef ENABLE_KSLI -+#define ENABLE_KSLI 0 -+#endif -+#ifndef ENABLE_CONTAINER -+#define ENABLE_CONTAINER 0 -+#endif -+#ifndef ENABLE_SERMANT -+#define ENABLE_SERMANT 0 -+#endif -+ - #define SNOOPER_MAX 100 - - /* FlameGraph subprobe define */ -diff --git a/src/lib/probe/probe_mng.c b/src/lib/probe/probe_mng.c -index 83629cc..769a08b 100644 ---- a/src/lib/probe/probe_mng.c -+++ b/src/lib/probe/probe_mng.c -@@ -39,60 +39,24 @@ static int set_probe_bin(struct probe_s *probe, const char *bin); - static void init_probe_bin(struct probe_s *probe, enum probe_type_e probe_type); - - struct probe_define_s probe_define[] = { --#ifdef ENABLE_BASEINFO -- {"baseinfo", "system_infos", PROBE_BASEINFO}, --#endif --#ifdef ENABLE_VIRT -- {"virt", "virtualized_infos", PROBE_VIRT}, --#endif --#ifdef ENABLE_FLAMEGRAPH -- {"flamegraph", "/opt/gala-gopher/extend_probes/stackprobe", PROBE_FG}, --#endif --#ifdef ENABLE_L7 -- {"l7", "/opt/gala-gopher/extend_probes/l7probe", PROBE_L7}, --#endif --#ifdef ENABLE_TCP -- {"tcp", "/opt/gala-gopher/extend_probes/tcpprobe", PROBE_TCP}, --#endif --#ifdef ENABLE_SOCKET -- {"socket", "/opt/gala-gopher/extend_probes/endpoint", PROBE_SOCKET}, --#endif --#ifdef ENABLE_IO -- {"io", "/opt/gala-gopher/extend_probes/ioprobe", PROBE_IO}, --#endif --#ifdef ENABLE_PROC -- {"proc", "/opt/gala-gopher/extend_probes/taskprobe", PROBE_PROC}, --#endif --#ifdef ENABLE_JVM -- {"jvm", "/opt/gala-gopher/extend_probes/jvmprobe", PROBE_JVM}, --#endif --#ifdef ENABLE_POSTGRE_SLI -- {"postgre_sli", "/opt/gala-gopher/extend_probes/pgsliprobe", PROBE_POSTGRE_SLI}, --#endif --#ifdef ENABLE_OPENGAUSS_SLI -- {"opengauss_sli", "/opt/gala-gopher/extend_probes/pg_stat_probe.py", PROBE_GAUSS_SLI}, --#endif --#ifdef ENABLE_NGINX -- {"nginx", "/opt/gala-gopher/extend_probes/nginx_probe", PROBE_NGINX}, --#endif --#ifdef ENABLE_KAFKA -- {"kafka", "/opt/gala-gopher/extend_probes/kafkaprobe", PROBE_KAFKA}, --#endif --#ifdef ENABLE_TPROFILING -- {"tprofiling", "/opt/gala-gopher/extend_probes/tprofiling", PROBE_TP}, --#endif --#ifdef ENABLE_HW -- {"hw", "/opt/gala-gopher/extend_probes/hwprobe", PROBE_HW}, --#endif --#ifdef ENABLE_KSLI -- {"ksli", "/opt/gala-gopher/extend_probes/ksliprobe", PROBE_KSLI}, --#endif --#ifdef ENABLE_CONTAINER -- {"container", "/opt/gala-gopher/extend_probes/cadvisor_probe.py", PROBE_CONTAINER}, --#endif --#ifdef ENABLE_SERMANT -- {"sermant", "/opt/gala-gopher/extend_probes/sermant_probe.py", PROBE_SERMANT} --#endif -+ {"baseinfo", "system_infos", PROBE_BASEINFO, ENABLE_BASEINFO}, -+ {"virt", "virtualized_infos", PROBE_VIRT, ENABLE_VIRT}, -+ {"flamegraph", "/opt/gala-gopher/extend_probes/stackprobe", PROBE_FG, ENABLE_FLAMEGRAPH}, -+ {"l7", "/opt/gala-gopher/extend_probes/l7probe", PROBE_L7, ENABLE_L7}, -+ {"tcp", "/opt/gala-gopher/extend_probes/tcpprobe", PROBE_TCP, ENABLE_TCP}, -+ {"socket", "/opt/gala-gopher/extend_probes/endpoint", PROBE_SOCKET, ENABLE_SOCKET}, -+ {"io", "/opt/gala-gopher/extend_probes/ioprobe", PROBE_IO, ENABLE_IO}, -+ {"proc", "/opt/gala-gopher/extend_probes/taskprobe", PROBE_PROC, ENABLE_PROC}, -+ {"jvm", "/opt/gala-gopher/extend_probes/jvmprobe", PROBE_JVM, ENABLE_JVM}, -+ {"postgre_sli", "/opt/gala-gopher/extend_probes/pgsliprobe", PROBE_POSTGRE_SLI, ENABLE_POSTGRE_SLI}, -+ {"opengauss_sli", "/opt/gala-gopher/extend_probes/pg_stat_probe.py", PROBE_GAUSS_SLI, ENABLE_OPENGAUSS_SLI}, -+ {"nginx", "/opt/gala-gopher/extend_probes/nginx_probe", PROBE_NGINX, ENABLE_NGINX}, -+ {"kafka", "/opt/gala-gopher/extend_probes/kafkaprobe", PROBE_KAFKA, ENABLE_KAFKA}, -+ {"tprofiling", "/opt/gala-gopher/extend_probes/tprofiling", PROBE_TP, ENABLE_TPROFILING}, -+ {"hw", "/opt/gala-gopher/extend_probes/hwprobe", PROBE_HW, ENABLE_HW}, -+ {"ksli", "/opt/gala-gopher/extend_probes/ksliprobe", PROBE_KSLI, ENABLE_KSLI}, -+ {"container", "/opt/gala-gopher/extend_probes/cadvisor_probe.py", PROBE_CONTAINER, ENABLE_CONTAINER}, -+ {"sermant", "/opt/gala-gopher/extend_probes/sermant_probe.py", PROBE_SERMANT, ENABLE_SERMANT}, - - // If you want to add a probe, add the probe define. - }; -@@ -595,15 +559,20 @@ static enum probe_type_e get_probe_type_by_name(const char *probe_name) - size_t size = sizeof(probe_define) / sizeof(struct probe_define_s); - - if (probe_name == NULL) { -+ PARSE_ERR("invalid probe name"); - return PROBE_TYPE_MAX; - } - - for (int i = 0; i < size; i++) { - if (!strcasecmp(probe_define[i].desc, probe_name)) { -+ if (probe_define[i].enable == 0) { -+ PARSE_ERR("not supported in the current version"); -+ return PROBE_TYPE_MAX; -+ } - return probe_define[i].type; - } - } -- -+ PARSE_ERR("invalid probe name"); - return PROBE_TYPE_MAX; - } - -@@ -611,7 +580,6 @@ static struct probe_s *get_probe_by_name(const char *probe_name) - { - enum probe_type_e probe_type = get_probe_type_by_name(probe_name); - if (probe_type >= PROBE_TYPE_MAX) { -- PARSE_ERR("invalid probe name"); - return NULL; - } - -diff --git a/src/lib/probe/probe_mng.h b/src/lib/probe/probe_mng.h -index f09190f..7853f17 100644 ---- a/src/lib/probe/probe_mng.h -+++ b/src/lib/probe/probe_mng.h -@@ -41,6 +41,7 @@ struct probe_define_s { - char *desc; - char *bin; - enum probe_type_e type; -+ char enable; - }; - - typedef int (*ParseParam)(const char*, struct probe_params *); --- -2.28.0.windows.1 - diff --git a/cadvisor_probe-fix-int-to-str-warnings.patch b/cadvisor_probe-fix-int-to-str-warnings.patch deleted file mode 100644 index a45936de583f3826c379a62203c8c5e50ee58576..0000000000000000000000000000000000000000 --- a/cadvisor_probe-fix-int-to-str-warnings.patch +++ /dev/null @@ -1,25 +0,0 @@ -From e6e97f66c1127834a0026a6f5d2ee83bc040d9bb Mon Sep 17 00:00:00 2001 -From: xietangxin -Date: Tue, 30 Apr 2024 14:46:43 +0800 -Subject: [PATCH] cadvisor_probe: fix int to str warnings - ---- - .../extends/python.probe/cadvisor.probe/cadvisor_probe.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py b/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py -index c4dcb45..d31f7a6 100755 ---- a/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py -+++ b/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py -@@ -118,7 +118,7 @@ class CadvisorProbe(): - else: - raise Exception('[cadvisor_probe]cAdvisor running but get info failed') - whitelist_label = "-whitelisted_container_labels=" + get_meta_label_list() -- interval = "--housekeeping_interval="+ period + "s" -+ interval = "--housekeeping_interval="+ str(period) + "s" - ps = subprocess.Popen(["/usr/bin/cadvisor", "-port", str(self.port),\ - "--store_container_labels=false", interval, whitelist_label,\ - DISABLE_METRICS_OPTION],\ --- -2.28.0.windows.1 - diff --git a/fix-buffer-overflow-caused-by-strcpy.patch b/fix-buffer-overflow-caused-by-strcpy.patch deleted file mode 100644 index 25fe1ab8edf6ef96194ac29729c405aafb223a15..0000000000000000000000000000000000000000 --- a/fix-buffer-overflow-caused-by-strcpy.patch +++ /dev/null @@ -1,155 +0,0 @@ -From 75b51832bbcea4b176fec299105c66140aafaaea Mon Sep 17 00:00:00 2001 -From: xietangxin -Date: Mon, 6 May 2024 11:22:24 +0800 -Subject: [PATCH] fix buffer overflow caused by strcpy() - ---- - build/install.sh | 6 ++---- - src/probes/extends/ebpf.probe/src/ioprobe/ioprobe.c | 2 +- - src/probes/extends/ebpf.probe/src/lib/tcp.c | 2 +- - src/probes/system_infos.probe/system_cpu.c | 2 +- - src/probes/system_infos.probe/system_disk.c | 8 ++++---- - src/probes/system_infos.probe/system_disk.h | 5 +++-- - src/probes/system_infos.probe/system_meminfo.c | 8 ++++---- - 7 files changed, 16 insertions(+), 17 deletions(-) - -diff --git a/build/install.sh b/build/install.sh -index acde443..152b4fa 100755 ---- a/build/install.sh -+++ b/build/install.sh -@@ -172,10 +172,8 @@ function install_shared_lib() - cp ${SHARED_LIB} ${GOPHER_SHARED_LIB_DIR} - done - -- if ! [[ $EXTEND_PROBES =~ "l7probe" ]] || ! [[ $EXTEND_PROBES =~ "stackprobe" ]] || ! [[ $EXTEND_PROBES =~ "jvm.probe" ]] ; then -- echo "install lib:" ${JVM_ATTACH_BIN} -- cp ${JVM_ATTACH_BIN} ${GOPHER_SHARED_LIB_DIR} -- fi -+ echo "install lib:" ${JVM_ATTACH_BIN} -+ cp ${JVM_ATTACH_BIN} ${GOPHER_SHARED_LIB_DIR} - } - - function install_extend_probes() -diff --git a/src/probes/extends/ebpf.probe/src/ioprobe/ioprobe.c b/src/probes/extends/ebpf.probe/src/ioprobe/ioprobe.c -index 272a264..93d02d6 100644 ---- a/src/probes/extends/ebpf.probe/src/ioprobe/ioprobe.c -+++ b/src/probes/extends/ebpf.probe/src/ioprobe/ioprobe.c -@@ -237,7 +237,7 @@ static void get_diskname(const char* dev_name, char *disk_name, size_t size) - char *p; - char last_disk_name[DISK_NAME_LEN]; - -- strcpy(cmd, LSBLK_TREE_CMD); -+ snprintf(cmd, sizeof(cmd), "%s", LSBLK_TREE_CMD); - f = popen_chroot(cmd, "r"); - if (f == NULL) { - return; -diff --git a/src/probes/extends/ebpf.probe/src/lib/tcp.c b/src/probes/extends/ebpf.probe/src/lib/tcp.c -index 664b9f7..e928e8a 100644 ---- a/src/probes/extends/ebpf.probe/src/lib/tcp.c -+++ b/src/probes/extends/ebpf.probe/src/lib/tcp.c -@@ -210,7 +210,7 @@ static struct tcp_estab_comm* __get_estab_comm(const char *start, unsigned int l - return NULL; - } - te_comm->comm[0] = 0; -- (void)strcpy(te_comm->comm, comm); -+ (void)snprintf(te_comm->comm, sizeof(te_comm->comm), "%s", comm); - - te_comm->pid = strtoul(pid_s, NULL, 10); - te_comm->fd = strtoul(fd_s, NULL, 10); -diff --git a/src/probes/system_infos.probe/system_cpu.c b/src/probes/system_infos.probe/system_cpu.c -index 7c1a25f..ac7ccb5 100644 ---- a/src/probes/system_infos.probe/system_cpu.c -+++ b/src/probes/system_infos.probe/system_cpu.c -@@ -85,7 +85,7 @@ static void report_cpu_status(struct ipc_body_s *ipc_body) - } - - entityId[0] = 0; -- (void)strcpy(entityId, "cpu"); -+ (void)snprintf(entityId, sizeof(entityId), "%s", "cpu"); - - evt.entityName = ENTITY_NAME; - evt.entityId = entityId; -diff --git a/src/probes/system_infos.probe/system_disk.c b/src/probes/system_infos.probe/system_disk.c -index 6465697..bd16523 100644 ---- a/src/probes/system_infos.probe/system_disk.c -+++ b/src/probes/system_infos.probe/system_disk.c -@@ -162,12 +162,12 @@ static int init_fs_inode_info(void) - (void)pclose(f); - return -1; - } -- strcpy(fsItem->mount_on, stats.mount_on); -+ snprintf(fsItem->mount_on, sizeof(fsItem->mount_on), "%s", stats.mount_on); - HASH_ADD_STR(g_df_tbl, mount_on, fsItem); - } - fsItem->valid = 1; -- strcpy(fsItem->fsname, stats.fsname); -- strcpy(fsItem->fstype, stats.fstype); -+ snprintf(fsItem->fsname, sizeof(fsItem->fsname), "%s", stats.fsname); -+ snprintf(fsItem->fstype, sizeof(fsItem->fstype), "%s", stats.fstype); - fsItem->inode_sum = stats.inode_sum; - fsItem->inode_used = stats.inode_used; - fsItem->inode_free = stats.inode_free; -@@ -258,7 +258,7 @@ static int init_fs_status(void) - if (!fsItem || !fsItem->valid) { - continue; - } -- (void)strcpy(fsItem->mount_status, mountStatus); -+ (void)snprintf(fsItem->mount_status, sizeof(fsItem->mount_status), "%s", mountStatus); - } - - (void)pclose(f); -diff --git a/src/probes/system_infos.probe/system_disk.h b/src/probes/system_infos.probe/system_disk.h -index 999b06e..7747d1e 100644 ---- a/src/probes/system_infos.probe/system_disk.h -+++ b/src/probes/system_infos.probe/system_disk.h -@@ -24,11 +24,12 @@ - /* the interval of time (@p) is given in second */ - #define S_VALUE(m,n,p) (((double) ((n) - (m))) / (p)) - --#define FSTYPE_LEN 64 -+#define FSNAME_LEN 128 -+#define FSTYPE_LEN 32 - #define MOUNTON_LEN 128 - #define MOUNTSTATUS_LEN 8 - typedef struct { -- char fsname[FSTYPE_LEN]; -+ char fsname[FSNAME_LEN]; - char fstype[FSTYPE_LEN]; - char mount_on[MOUNTON_LEN]; - char mount_status[MOUNTSTATUS_LEN]; -diff --git a/src/probes/system_infos.probe/system_meminfo.c b/src/probes/system_infos.probe/system_meminfo.c -index 6c1dc91..023ae59 100644 ---- a/src/probes/system_infos.probe/system_meminfo.c -+++ b/src/probes/system_infos.probe/system_meminfo.c -@@ -44,7 +44,7 @@ int system_meminfo_init(void) - "SwapTotal", "SwapFree", "Shmem", "Slab", "SReclaimable", "SUnreclaim", "KernelStack", "PageTables", - "VmallocUsed", "HugePages_Total", "Hugepagesize"}; - for (int i = MEM_TOTAL; i < TOTAL_DATA_INDEX; i++) { -- strcpy(meminfo_fields[i].key, key_[i]); -+ snprintf(meminfo_fields[i].key, sizeof(meminfo_fields[i].key), "%s", key_[i]); - meminfo_fields[i].value = 0; - } - return 0; -@@ -109,8 +109,8 @@ static void report_meminfo_status(struct ipc_body_s *ipc_body, double mem_util, - - entityId[0] = 0; - entityName[0] = 0; -- (void)strcpy(entityId, "/proc/meminfo"); -- (void)strcpy(entityName, "mem"); -+ (void)snprintf(entityId, sizeof(entityId), "%s", "/proc/meminfo"); -+ (void)snprintf(entityName, sizeof(entityName), "%s", "mem"); - - evt.entityName = entityName; - evt.entityId = entityId; -@@ -192,7 +192,7 @@ static int get_meminfo(struct ipc_body_s *ipc_body) - } - int cur_index = 0; - while (!feof(f)) { -- line[0] = 0; -+ line[0] = 0; - if (fgets(line, LINE_BUF_LEN, f) == NULL) { - break; - } --- -2.28.0.windows.1 - diff --git a/fix-compile-warnings-when-disable-KAFKA_CHANNEL.patch b/fix-compile-warnings-when-disable-KAFKA_CHANNEL.patch deleted file mode 100644 index bf4979630c4c1d848c23068b203546697a31a007..0000000000000000000000000000000000000000 --- a/fix-compile-warnings-when-disable-KAFKA_CHANNEL.patch +++ /dev/null @@ -1,110 +0,0 @@ -From f35fe992298b244064c841e8407ac7d96dce1be5 Mon Sep 17 00:00:00 2001 -From: xietangxin -Date: Tue, 30 Apr 2024 12:11:59 +0800 -Subject: [PATCH] fix compile warnings when disable KAFKA_CHANNEL - ---- - build/install.sh | 11 ++++++++--- - src/common/event.c | 19 +++++++++++-------- - src/egress/egress.c | 1 + - 3 files changed, 20 insertions(+), 11 deletions(-) - -diff --git a/build/install.sh b/build/install.sh -index 55d911d..acde443 100755 ---- a/build/install.sh -+++ b/build/install.sh -@@ -22,7 +22,10 @@ function __create_btf_cache() - for file in $(find ${BTF_DIR} -name "*"${ARCH}"*.btf.tar.xz") ; do - tar -xf $file - done -- find ./ -name "*.btf" | xargs mv -t ${BTF_CACHE} -+ -+ for file in $(find ./ -name "*.btf") ; do -+ mv $file -t ${BTF_CACHE} -+ done - } - - function __delete_btf_cache() -@@ -169,8 +172,10 @@ function install_shared_lib() - cp ${SHARED_LIB} ${GOPHER_SHARED_LIB_DIR} - done - -- echo "install lib:" ${JVM_ATTACH_BIN} -- cp ${JVM_ATTACH_BIN} ${GOPHER_SHARED_LIB_DIR} -+ if ! [[ $EXTEND_PROBES =~ "l7probe" ]] || ! [[ $EXTEND_PROBES =~ "stackprobe" ]] || ! [[ $EXTEND_PROBES =~ "jvm.probe" ]] ; then -+ echo "install lib:" ${JVM_ATTACH_BIN} -+ cp ${JVM_ATTACH_BIN} ${GOPHER_SHARED_LIB_DIR} -+ fi - } - - function install_extend_probes() -diff --git a/src/common/event.c b/src/common/event.c -index a53dc2f..2694c2d 100644 ---- a/src/common/event.c -+++ b/src/common/event.c -@@ -26,11 +26,15 @@ - #include "nprobe_fprintf.h" - #endif - --static struct evt_ts_hash_t *g_evt_head = NULL; -+ - static unsigned int g_evt_period = 600; - // static EventsConfig *g_evt_conf; - // static char g_lang_type[MAX_EVT_GRP_NAME_LEN] = "zh_CN"; - -+ -+#ifdef ENABLE_REPORT_EVENT -+static struct evt_ts_hash_t *g_evt_head = NULL; -+ - static void hash_clear_older_evt(time_t cur_time); - static unsigned int hash_count_evt(void); - static int is_evt_need_report(const char *entityId, time_t cur_time); -@@ -61,7 +65,6 @@ static struct evt_sec_s secs[EVT_SEC_MAX] = { - {21, "FATAL"} - }; - --#ifdef ENABLE_REPORT_EVENT - #define __EVT_BODY_LEN 512 // same as MAX_IMDB_METRIC_VAL_LEN - void report_logs(const struct event_info_s* evt, enum evt_sec_e sec, const char * fmt, ...) - { -@@ -143,12 +146,6 @@ void report_logs(const struct event_info_s* evt, enum evt_sec_e sec, const char - #endif - return; - } --#else --void report_logs(const struct event_info_s* evt, enum evt_sec_e sec, const char * fmt, ...) --{ -- return; --} --#endif - - void emit_otel_log(struct otel_log *ol) - { -@@ -243,6 +240,12 @@ static int is_evt_need_report(const char *entityId, time_t cur_time) - } - return 0; - } -+#else -+void report_logs(const struct event_info_s* evt, enum evt_sec_e sec, const char * fmt, ...) -+{ -+ return; -+} -+#endif - - void init_event_mgr(unsigned int time_out) - { -diff --git a/src/egress/egress.c b/src/egress/egress.c -index 3af7396..6081b34 100644 ---- a/src/egress/egress.c -+++ b/src/egress/egress.c -@@ -21,6 +21,7 @@ - #include - - #include "base.h" -+#include "common.h" - #include "egress.h" - - EgressMgr *EgressMgrCreate(void) --- -2.28.0.windows.1 - diff --git a/fix-delete-unnecessary-judgments.patch b/fix-delete-unnecessary-judgments.patch deleted file mode 100644 index 9f8fc4e378755d73a961e092722c58a20bf3795e..0000000000000000000000000000000000000000 --- a/fix-delete-unnecessary-judgments.patch +++ /dev/null @@ -1,78 +0,0 @@ -From f5078ecd0e1bd4d4e3862746c483b988a4f99b00 Mon Sep 17 00:00:00 2001 -From: wangqing -Date: Tue, 7 May 2024 18:09:13 +0800 -Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=A0=E9=99=A4=E6=B2=A1=E5=BF=85?= - =?UTF-8?q?=E8=A6=81=E7=9A=84=E5=88=A4=E6=96=AD?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: wangqing ---- - .../cadvisor.probe/cadvisor_probe.py | 49 +++++++++---------- - 1 file changed, 24 insertions(+), 25 deletions(-) - -diff --git a/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py b/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py -index d31f7a6..81e06c9 100755 ---- a/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py -+++ b/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py -@@ -231,32 +231,31 @@ def print_metrics(): - continue - for key, record in records.items(): - s = "|" + table + "|" -- if table in g_meta: -- for field_name, field_type in g_meta[table].items(): -- value = 0 -- if field_type == LABEL: -- continue -- -- if field_type == KEY: -- value = key -- s += value + "|" -- continue -- -- if field_name not in record: -- value = "" -- else: -- for item in record[field_name].values(): -- if field_type == COUNTER: -- if item[1] > item[0]: -- value += item[1] - item[0] -- else: -- value += 0 -- item[0] = item[1] -+ for field_name, field_type in g_meta[table].items(): -+ value = 0 -+ if field_type == LABEL: -+ continue -+ -+ if field_type == KEY: -+ value = key -+ s += value + "|" -+ continue -+ -+ if field_name not in record: -+ value = "" -+ else: -+ for item in record[field_name].values(): -+ if field_type == COUNTER: -+ if item[1] > item[0]: -+ value += item[1] - item[0] - else: -- value += item -- s = s + str(value) + "|" -- print(s) -- sys.stdout.flush() -+ value += 0 -+ item[0] = item[1] -+ else: -+ value += item -+ s = s + str(value) + "|" -+ print(s) -+ sys.stdout.flush() - - - def clean_metrics(): --- -2.28.0.windows.1 - diff --git a/fix-segmentation-fault-when-setting-out_channel-of-m.patch b/fix-segmentation-fault-when-setting-out_channel-of-m.patch deleted file mode 100644 index 848ab52bb88571d738e1f0411ccf6cae3aff85a0..0000000000000000000000000000000000000000 --- a/fix-segmentation-fault-when-setting-out_channel-of-m.patch +++ /dev/null @@ -1,39 +0,0 @@ -From a0909c7b51feedabda52faedfd0ec6d5f70b2c89 Mon Sep 17 00:00:00 2001 -From: xietangxin -Date: Mon, 29 Apr 2024 19:45:29 +0800 -Subject: [PATCH] fix segmentation fault when setting out_channel of metrics to - logs - ---- - src/daemon/daemon.c | 14 +++++++++----- - 1 file changed, 9 insertions(+), 5 deletions(-) - -diff --git a/src/daemon/daemon.c b/src/daemon/daemon.c -index 84d9a09..4891ef2 100644 ---- a/src/daemon/daemon.c -+++ b/src/daemon/daemon.c -@@ -127,12 +127,16 @@ int DaemonRun(ResourceMgr *mgr) - INFO("[DAEMON] create egress thread success.\n"); - - // 3. start web_server thread -- ret = pthread_create(&mgr->web_server_mgr->tid, NULL, DaemonRunWebServer, mgr->web_server_mgr); -- if (ret != 0) { -- ERROR("[DAEMON] create web_server thread failed.(errno:%d, %s)\n", errno, strerror(errno)); -- return -1; -+ if (mgr->web_server_mgr == NULL) { -+ INFO("[DAEMON] skip create web_server thread.\n"); -+ } else { -+ ret = pthread_create(&mgr->web_server_mgr->tid, NULL, DaemonRunWebServer, mgr->web_server_mgr); -+ if (ret != 0) { -+ ERROR("[DAEMON] create web_server thread failed.(errno:%d, %s)\n", errno, strerror(errno)); -+ return -1; -+ } -+ INFO("[DAEMON] create web_server thread success.\n"); - } -- INFO("[DAEMON] create web_server thread success.\n"); - - // 4. start metadata_report thread - ret = pthread_create(&mgr->mmMgr->tid, NULL, DaemonRunMetadataReport, mgr->mmMgr); --- -2.28.0.windows.1 - diff --git a/fix-writing-metadata-to-log-file-properly.patch b/fix-writing-metadata-to-log-file-properly.patch deleted file mode 100644 index 3cc0b2a4190af9577e3b41874f834c3c075a6a4c..0000000000000000000000000000000000000000 --- a/fix-writing-metadata-to-log-file-properly.patch +++ /dev/null @@ -1,84 +0,0 @@ -From a04d1a44441a6d19f105177c0a6c9b73d36291ec Mon Sep 17 00:00:00 2001 -From: xietangxin -Date: Mon, 29 Apr 2024 19:25:01 +0800 -Subject: [PATCH] fix writing metadata to log file properly - ---- - doc/constraints_introduction.md | 4 ++-- - src/common/logs.c | 7 +++---- - src/lib/meta/meta.c | 8 ++++++-- - 3 files changed, 11 insertions(+), 8 deletions(-) - -diff --git a/doc/constraints_introduction.md b/doc/constraints_introduction.md -index 4e25a1f..8a30224 100644 ---- a/doc/constraints_introduction.md -+++ b/doc/constraints_introduction.md -@@ -38,5 +38,5 @@ logs = - ... - }; - ``` --#### 1.2.3 meta 与 raw 日志 --- meta, raw 日志打印配置与 debug 基本相同, 备份与最大校验尺寸配置方法一致。 -+#### 1.2.3 meta 日志 -+- meta 日志当前允许最大存储量为 100MB, 单位 MB, 当前meta日志不允许备份,当超过最大允许存储后会清除后重头部开始写 -diff --git a/src/common/logs.c b/src/common/logs.c -index 7a2ba16..b68e1c8 100644 ---- a/src/common/logs.c -+++ b/src/common/logs.c -@@ -363,7 +363,7 @@ static void init_all_logger(void) - init_logger(&g_metrics_logger, "metrics", 0, METRICS_LOGS_FILESIZE); - init_logger(&g_event_logger, "event", 1, EVENT_LOGS_FILESIZE); - init_logger(&g_debug_logger, "debug", 1, DEBUG_LOGS_FILESIZE); -- init_logger(&g_meta_logger, "meta", 1, META_LOGS_FILESIZE); -+ init_logger(&g_meta_logger, "meta", 0, META_LOGS_FILESIZE); - } - - #define FULL_PATH_LEN (PATH_LEN * 2) -@@ -777,9 +777,8 @@ void wr_meta_logs(const char* logs) - if (access(g_meta_abs_path, F_OK) == -1) { - (void)append_meta_logger(local); - } -- if (g_meta_logger.level <= LOGGER_DEBUG) { // using debug level -- log_without_date(&g_meta_logger, logs); -- } -+ -+ log_without_date(&g_meta_logger, logs); - } - - static void reappend_debug_logger(struct log_mgr_s *mgr) -diff --git a/src/lib/meta/meta.c b/src/lib/meta/meta.c -index 156b1cd..9302363 100644 ---- a/src/lib/meta/meta.c -+++ b/src/lib/meta/meta.c -@@ -591,6 +591,10 @@ static int report_one_metadata(const MeasurementMgr *mgr, const Measurement *mm) - int ret; - char *json_str = NULL; - -+ if (mgr->meta_out_channel != OUT_CHNL_KAFKA && mgr->meta_out_channel != OUT_CHNL_LOGS) { -+ return 0; -+ } -+ - json_str = (char *)malloc(MAX_DATA_STR_LEN); - if (json_str == NULL) { - return -1; -@@ -628,7 +632,7 @@ static int report_one_metadata(const MeasurementMgr *mgr, const Measurement *mm) - return 0; - } - --static int ReportMeteData(const MeasurementMgr *mgr) -+static int ReportMetaData(const MeasurementMgr *mgr) - { - Measurement *mm = NULL; - int i, meta_num; -@@ -670,7 +674,7 @@ int ReportMetaDataMain(const MeasurementMgr *mgr) - #endif - - for (;;) { -- ret = ReportMeteData(mgr); -+ ret = ReportMetaData(mgr); - if (ret < 0) { - return -1; - } --- -2.28.0.windows.1 - diff --git a/gala-gopher-2.0.1.tar.gz b/gala-gopher-2.0.2.tar.gz similarity index 76% rename from gala-gopher-2.0.1.tar.gz rename to gala-gopher-2.0.2.tar.gz index 4964a4ff7bd0990219a8739c7cf5eadc51644459..c2096199a2505cb802683473e177f53f5a4bbbe8 100644 Binary files a/gala-gopher-2.0.1.tar.gz and b/gala-gopher-2.0.2.tar.gz differ diff --git a/gala-gopher.spec b/gala-gopher.spec index 9633350cce4bca045d3e0f27c51e5df8379b2bb8..a9869acd83d88e38ac2cebc6d491b2cda3fec098 100644 --- a/gala-gopher.spec +++ b/gala-gopher.spec @@ -1,5 +1,5 @@ -#needsrootforbuild %define __os_install_post %{nil} +%define gopher_state_dir %{_rundir}/gala_gopher %define without_baseinfo 0 %define without_virt 0 @@ -19,6 +19,8 @@ %define without_ksli 0 %define without_container 0 %define without_sermant 1 +%define without_sli 0 +%define without_flowtracer 1 %define disable_report_event 0 %define disable_kafka_channel 0 @@ -27,8 +29,8 @@ Summary: Intelligent ops toolkit for openEuler Name: gala-gopher -Version: 2.0.1 -Release: 2 +Version: 2.0.2 +Release: 1 License: Mulan PSL v2 URL: https://gitee.com/openeuler/gala-gopher Source: %{name}-%{version}.tar.gz @@ -82,7 +84,7 @@ Requires: libcurl Requires: python3-psycopg2 python3-yaml net-tools %endif %if !0%{?without_container} -Requires: cadvisor python3-requests net-tools util-linux +Requires: cadvisor python3-requests util-linux %endif %if !0%{?without_postgre_sli} Requires: iproute @@ -94,15 +96,6 @@ Requires: jsoncpp conntrack-tools Requires: lsof %endif -Patch1: avoid-use-ato.patch -Patch2: refactor-cadvisor-remove-the-dependency-on-the-pytho.patch -Patch3: fix-writing-metadata-to-log-file-properly.patch -Patch4: fix-segmentation-fault-when-setting-out_channel-of-m.patch -Patch5: fix-compile-warnings-when-disable-KAFKA_CHANNEL.patch -Patch6: fix-buffer-overflow-caused-by-strcpy.patch -Patch7: fix-delete-unnecessary-judgments.patch -Patch8: cadvisor_probe-fix-int-to-str-warnings.patch -Patch9: bugfix-probe_define-access-out-of-bounds.patch %description gala-gopher is a low-overhead eBPF-based probes framework @@ -119,7 +112,7 @@ BUILD_OPTS=( -DENABLE_FLAMEGRAPH=%[0%{?without_flamegraph}?0:1] -DENABLE_L7=%[0%{?without_l7}?0:1] -DENABLE_TCP=%[0%{?without_tcp}?0:1] - -DENABLE_SOCKET=%[0%{?without_tcp}?0:1] + -DENABLE_SOCKET=%[0%{?without_socket}?0:1] -DENABLE_IO=%[0%{?without_io}?0:1] -DENABLE_PROC=%[0%{?without_proc}?0:1] -DENABLE_JVM=%[0%{?without_jvm}?0:1] @@ -132,6 +125,8 @@ BUILD_OPTS=( -DENABLE_KSLI=%[0%{?without_ksli}?0:1] -DENABLE_CONTAINER=%[0%{?without_cadvisor}?0:1] -DENABLE_SERMANT=%[0%{?without_sermant}?0:1] + -DENABLE_SLI=%[0%{?without_sli}?0:1] + -DENABLE_FLOWTRACER=%[0%{?without_flowtracer}?0:1] -DENABLE_REPORT_EVENT=%[0%{?disable_report_event}?0:1] -DKAFKA_CHANNEL=%[0%{?disable_kafka_channel}?0:1] @@ -155,20 +150,16 @@ install -d %{buildroot}%{_bindir} install -d %{buildroot}/usr/libexec/gala-gopher/ mkdir -p %{buildroot}/usr/lib/systemd/system install -m 0600 service/gala-gopher.service %{buildroot}/usr/lib/systemd/system/gala-gopher.service +install -d %{buildroot}/%{gopher_state_dir} +install -d %{buildroot}/var/log/gala-gopher pushd build sh install.sh %{buildroot}%{_bindir} %{buildroot}/opt/gala-gopher %{buildroot}/etc/gala-gopher %{buildroot}/usr/libexec/gala-gopher/ %{buildroot}/opt/gala-gopher popd +%pre + %post %systemd_post gala-gopher.service -if [ -d /var/log/gala-gopher ]; then - othermode=$(expr $(stat -L -c "%a" /var/log/gala-gopher) % 10) - if [ $othermode -ne 0 ]; then - chmod 750 /var/log/gala-gopher - chmod 750 /var/log/gala-gopher/debug - chmod 640 /var/log/gala-gopher/debug/gopher.log - fi -fi %preun %systemd_preun gala-gopher.service @@ -176,10 +167,13 @@ fi %postun if [ $1 -eq 0 ]; then rm -rf /sys/fs/bpf/gala-gopher > /dev/null + rm -rf /opt/gala-gopher > /dev/null fi %systemd_postun_with_restart gala-gopher.service %files +%attr(0750,root,root) %dir /var/log/gala-gopher +%attr(0750,root,root) %dir %{gopher_state_dir} %attr(0750,root,root) %dir /opt/gala-gopher %attr(0550,root,root) %dir /opt/gala-gopher/extend_probes %attr(0750,root,root) %dir /opt/gala-gopher/meta @@ -195,20 +189,13 @@ fi %attr(0640,root,root) %config(noreplace) /etc/gala-gopher/extend_probes/*.conf %attr(0600,root,root) /usr/lib/systemd/system/gala-gopher.service %attr(0550,root,root) /usr/libexec/gala-gopher/init_probes.sh +%attr(0550,root,root) /usr/libexec/gala-gopher/start_pre.sh %changelog -* Wed May 8 2024 Liping Hu - 2.0.1-2 -- fix delete unnecessary judgments - fix buffer overflow caused by strcpy() - cadvisor_probe: fix int to str warnings - fix compile warnings when disable KAFKA_CHANNEL - fix segmentation fault when setting out_channel of metrics to logs - fix writing metadata to log file properly - bugfix: probe_define access out of bounds - refactor(cadvisor): remove the dependency on the python-libconf - avoid use ato* - -* Wed Apr 24 2024 Tangxin Xie - 2.0.1-1 +* Wed Aug 21 2024 wocow - 2.0.2-1 +- Update to 2.0.2-1 + +* Wed Apr 24 2024 Tangxin Xie - 2.0.0-1 - Update to 2.0.1 * Fri Mar 8 2024 Zhen Chen - 1.0.2-4 diff --git a/refactor-cadvisor-remove-the-dependency-on-the-pytho.patch b/refactor-cadvisor-remove-the-dependency-on-the-pytho.patch deleted file mode 100644 index 354d48755d315c1b1e46254062da2af37192a4d4..0000000000000000000000000000000000000000 --- a/refactor-cadvisor-remove-the-dependency-on-the-pytho.patch +++ /dev/null @@ -1,543 +0,0 @@ -From 388da3f3fc05357f1fbfc8a12ce40ad198397332 Mon Sep 17 00:00:00 2001 -From: h00465007 -Date: Wed, 24 Apr 2024 10:45:15 +0800 -Subject: [PATCH] refactor(cadvisor): remove the dependency on the - python-libconf - ---- - gala-gopher.spec | 2 +- - .../cadvisor.probe/cadvisor_probe.conf | 449 +++++++++--------- - .../cadvisor.probe/cadvisor_probe.py | 26 +- - 3 files changed, 240 insertions(+), 237 deletions(-) - -diff --git a/gala-gopher.spec b/gala-gopher.spec -index 2c11562..24f6bae 100644 ---- a/gala-gopher.spec -+++ b/gala-gopher.spec -@@ -81,7 +81,7 @@ Requires: libcurl - Requires: python3-psycopg2 python3-yaml net-tools - %endif - %if !0%{?without_container} --Requires: cadvisor python3-libconf python3-requests net-tools util-linux -+Requires: cadvisor python3-requests net-tools util-linux - %endif - %if !0%{?without_postgre_sli} - Requires: iproute -diff --git a/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.conf b/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.conf -index 1ff2283..79686ee 100644 ---- a/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.conf -+++ b/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.conf -@@ -1,224 +1,225 @@ --version = "1.0.0" --measurements: --( -- { -- table_name: "container_cpu", -- entity_name: "container", -- fields: -- ( -- { -- description: "container id", -- type: "key", -- name: "container_id", -- }, -- { -- description: "cpu", -- type: "label", -- name: "cpu", -- }, -- { -- description: "Cumulative system cpu time consumed in seconds", -- type: "counter", -- name: "cpu_system_seconds_total", -- }, -- { -- description: "Cumulative cpu time consumed in seconds", -- type: "counter", -- name: "cpu_usage_seconds_total", -- }, -- { -- description: "Cumulative user cpu time consumed in seconds", -- type: "counter", -- name: "cpu_user_seconds_total", -- }, -- { -- description: "Total time duration the container has been throttled", -- type: "counter", -- name: "cpu_cfs_throttled_seconds_total" -- } -- ) -- }, -- { -- table_name: "container_fs", -- entity_name: "container", -- fields: -- ( -- { -- description: "container id", -- type: "key", -- name: "container_id", -- }, -- { -- description: "device", -- type: "label", -- name: "device", -- }, -- { -- description: "Number of available Inodes", -- type: "gauge", -- name: "fs_inodes_free", -- }, -- { -- description: "Number of Inodes", -- type: "gauge", -- name: "fs_inodes_total", -- }, -- { -- description: "Cumulative count of seconds spent reading", -- type: "counter", -- name: "fs_read_seconds_total", -- }, -- { -- description: "Cumulative count of seconds spent writing", -- type: "counter", -- name: "fs_write_seconds_total", -- }, -- { -- description: "Cumulative count of bytes read", -- type: "counter", -- name: "fs_reads_bytes_total", -- }, -- { -- description: "Cumulative count of bytes written", -- type: "counter", -- name: "fs_writes_bytes_total", -- } -- ) -- }, -- { -- table_name: "container_memory", -- entity_name: "container", -- fields: -- ( -- { -- description: "container id", -- type: "key", -- name: "container_id", -- }, -- { -- description: "Number of bytes of page cache memory", -- type: "gauge", -- name: "memory_cache", -- }, -- { -- description: "Size of memory mapped files in bytes", -- type: "gauge", -- name: "memory_mapped_file", -- }, -- { -- description: "Size of RSS in byte", -- type: "gauge", -- name: "memory_rss", -- }, -- { -- description: "Current memory usage in bytes, including all memory regardless of when it was accessed", -- type: "gauge", -- name: "memory_usage_bytes", -- }, -- { -- description: "Current working set in bytes", -- type: "gauge", -- name: "memory_working_set_bytes", -- } -- ) -- }, -- { -- table_name: "container_network", -- entity_name: "container", -- fields: -- ( -- { -- description: "container id", -- type: "key", -- name: "container_id", -- }, -- { -- description: "interface", -- type: "label", -- name: "interface", -- }, -- { -- description: "Cumulative count of bytes received", -- type: "counter", -- name: "network_receive_bytes_total", -- }, -- { -- description: "Cumulative count of errors encountered while receiving", -- type: "counter", -- name: "network_receive_errors_total", -- }, -- { -- description: "Cumulative count of packets dropped while receiving", -- type: "counter", -- name: "network_receive_packets_dropped_total", -- }, -- { -- description: "Cumulative count of bytes transmitted", -- type: "counter", -- name: "network_transmit_bytes_total", -- }, -- { -- description: "Cumulative count of errors encountered while transmitting", -- type: "counter", -- name: "network_transmit_errors_total", -- }, -- { -- description: "Cumulative count of packets dropped while transmitting", -- type: "counter", -- name: "network_transmit_packets_dropped_total", -- } -- ) -- }, -- { -- table_name: "container_oom", -- entity_name: "container", -- fields: -- ( -- { -- description: "container id", -- type: "key", -- name: "container_id", -- }, -- { -- description: "Count of out of memory events observed for the container", -- type: "counter", -- name: "oom_events_total", -- } -- ) -- }, -- { -- table_name: "container_start", -- entity_name: "container", -- fields: -- ( -- { -- description: "container id", -- type: "key", -- name: "container_id", -- }, -- { -- description: "Start time of the container since unix epoch in seconds", -- type: "gauge", -- name: "start_time_seconds", -- } -- ) -- }, -- { -- table_name: "container_file", -- entity_name: "container", -- fields: -- ( -- { -- description: "container id", -- type: "key", -- name: "container_id", -- }, -- { -- description: "Number of open file descriptors for the container", -- type: "gauge", -- name: "file_descriptors", -- } -- ) -- } --) -- -+{ -+ "version": "1.0.0", -+ "measurements": -+ [ -+ { -+ "table_name": "container_cpu", -+ "entity_name": "container", -+ "fields": -+ [ -+ { -+ "description": "container id", -+ "type": "key", -+ "name": "container_id" -+ }, -+ { -+ "description": "cpu", -+ "type": "label", -+ "name": "cpu" -+ }, -+ { -+ "description": "Cumulative system cpu time consumed in seconds", -+ "type": "counter", -+ "name": "cpu_system_seconds_total" -+ }, -+ { -+ "description": "Cumulative cpu time consumed in seconds", -+ "type": "counter", -+ "name": "cpu_usage_seconds_total" -+ }, -+ { -+ "description": "Cumulative user cpu time consumed in seconds", -+ "type": "counter", -+ "name": "cpu_user_seconds_total" -+ }, -+ { -+ "description": "Total time duration the container has been throttled", -+ "type": "counter", -+ "name": "cpu_cfs_throttled_seconds_total" -+ } -+ ] -+ }, -+ { -+ "table_name": "container_fs", -+ "entity_name": "container", -+ "fields": -+ [ -+ { -+ "description": "container id", -+ "type": "key", -+ "name": "container_id" -+ }, -+ { -+ "description": "device", -+ "type": "label", -+ "name": "device" -+ }, -+ { -+ "description": "Number of available Inodes", -+ "type": "gauge", -+ "name": "fs_inodes_free" -+ }, -+ { -+ "description": "Number of Inodes", -+ "type": "gauge", -+ "name": "fs_inodes_total" -+ }, -+ { -+ "description": "Cumulative count of seconds spent reading", -+ "type": "counter", -+ "name": "fs_read_seconds_total" -+ }, -+ { -+ "description": "Cumulative count of seconds spent writing", -+ "type": "counter", -+ "name": "fs_write_seconds_total" -+ }, -+ { -+ "description": "Cumulative count of bytes read", -+ "type": "counter", -+ "name": "fs_reads_bytes_total" -+ }, -+ { -+ "description": "Cumulative count of bytes written", -+ "type": "counter", -+ "name": "fs_writes_bytes_total" -+ } -+ ] -+ }, -+ { -+ "table_name": "container_memory", -+ "entity_name": "container", -+ "fields": -+ [ -+ { -+ "description": "container id", -+ "type": "key", -+ "name": "container_id" -+ }, -+ { -+ "description": "Number of bytes of page cache memory", -+ "type": "gauge", -+ "name": "memory_cache" -+ }, -+ { -+ "description": "Size of memory mapped files in bytes", -+ "type": "gauge", -+ "name": "memory_mapped_file" -+ }, -+ { -+ "description": "Size of RSS in byte", -+ "type": "gauge", -+ "name": "memory_rss" -+ }, -+ { -+ "description": "Current memory usage in bytes, including all memory regardless of when it was accessed", -+ "type": "gauge", -+ "name": "memory_usage_bytes" -+ }, -+ { -+ "description": "Current working set in bytes", -+ "type": "gauge", -+ "name": "memory_working_set_bytes" -+ } -+ ] -+ }, -+ { -+ "table_name": "container_network", -+ "entity_name": "container", -+ "fields": -+ [ -+ { -+ "description": "container id", -+ "type": "key", -+ "name": "container_id" -+ }, -+ { -+ "description": "interface", -+ "type": "label", -+ "name": "interface" -+ }, -+ { -+ "description": "Cumulative count of bytes received", -+ "type": "counter", -+ "name": "network_receive_bytes_total" -+ }, -+ { -+ "description": "Cumulative count of errors encountered while receiving", -+ "type": "counter", -+ "name": "network_receive_errors_total" -+ }, -+ { -+ "description": "Cumulative count of packets dropped while receiving", -+ "type": "counter", -+ "name": "network_receive_packets_dropped_total" -+ }, -+ { -+ "description": "Cumulative count of bytes transmitted", -+ "type": "counter", -+ "name": "network_transmit_bytes_total" -+ }, -+ { -+ "description": "Cumulative count of errors encountered while transmitting", -+ "type": "counter", -+ "name": "network_transmit_errors_total" -+ }, -+ { -+ "description": "Cumulative count of packets dropped while transmitting", -+ "type": "counter", -+ "name": "network_transmit_packets_dropped_total" -+ } -+ ] -+ }, -+ { -+ "table_name": "container_oom", -+ "entity_name": "container", -+ "fields": -+ [ -+ { -+ "description": "container id", -+ "type": "key", -+ "name": "container_id" -+ }, -+ { -+ "description": "Count of out of memory events observed for the container", -+ "type": "counter", -+ "name": "oom_events_total" -+ } -+ ] -+ }, -+ { -+ "table_name": "container_start", -+ "entity_name": "container", -+ "fields": -+ [ -+ { -+ "description": "container id", -+ "type": "key", -+ "name": "container_id" -+ }, -+ { -+ "description": "Start time of the container since unix epoch in seconds", -+ "type": "gauge", -+ "name": "start_time_seconds" -+ } -+ ] -+ }, -+ { -+ "table_name": "container_file", -+ "entity_name": "container", -+ "fields": -+ [ -+ { -+ "description": "container id", -+ "type": "key", -+ "name": "container_id" -+ }, -+ { -+ "description": "Number of open file descriptors for the container", -+ "type": "gauge", -+ "name": "file_descriptors" -+ } -+ ] -+ } -+ ] -+} -diff --git a/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py b/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py -index 5adbaf2..c4dcb45 100755 ---- a/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py -+++ b/src/probes/extends/python.probe/cadvisor.probe/cadvisor_probe.py -@@ -7,7 +7,8 @@ import subprocess - import os - import io - import requests --import libconf -+import json -+import re - import ipc - - CONTAINER_ID_LEN = 64 -@@ -49,13 +50,13 @@ def convert_meta(): - global g_meta - meta_path = os.path.join("/etc/gala-gopher/extend_probes/cadvisor_probe.conf") - with io.open(meta_path, encoding='utf-8') as f: -- meta = libconf.load(f) -+ meta = json.load(f) - g_meta = dict() -- for measure in meta.measurements: -- g_meta[measure.table_name] = dict() -- for field in measure.fields: -+ for measure in meta.get("measurements"): -+ g_meta[measure.get("table_name")] = dict() -+ for field in measure.get("fields"): - try: -- g_meta[measure.table_name][field.name] = field.type -+ g_meta[measure.get("table_name")][field.get("name")] = field.get("type") - except KeyError: - # main will catch the exception - raise -@@ -164,20 +165,21 @@ class CadvisorProbe(): - if table_name not in g_metric: - g_metric[table_name] = dict() - -- metric_str = libconf.loads(line[(line.index("{") + 1):line.index("} ")]) -+ metric_str = line[line.index("{"):line.index("} ")+1] -+ metric_dict = json.loads(re.sub(r'(\w+)=', r'"\1":', metric_str)) - # cadvisor metric id is cgroup path of container -- if metric_str.id not in self.cgroup_path_map.keys(): -- continue; -+ if metric_dict.get("id") not in self.cgroup_path_map.keys(): -+ continue - - label_key= '' - for field_name, field_type in g_meta[table_name].items(): -- if field_type == LABEL and field_name in metric_str: -- label_key += "_" + metric_str[field_name] -+ if field_type == LABEL and field_name in metric_dict: -+ label_key += "_" + metric_dict[field_name] - - if label_key == '': - label_key = LABEL - -- container_id = self.cgroup_path_map[metric_str.id] -+ container_id = self.cgroup_path_map[metric_dict.get("id")] - if container_id not in g_metric[table_name]: - g_metric[table_name][container_id] = dict() - --- -2.28.0.windows.1 -