Преглед на файлове

Feature #TASK_QT-31635【国网辽宁电力】6.2.1平台支持euspace-抓取不到Java访问mysql数据 & env APP_NAME同步 & InitKProcInfo失败处理

Tom преди 6 месеца
родител
ревизия
d23efec0fd
променени са 3 файла, в които са добавени 19 реда и са изтрити 1 реда
  1. 2 1
      containers/container.go
  2. 3 0
      containers/registry.go
  3. 14 0
      tracing/apm_tracing.go

+ 2 - 1
containers/container.go

@@ -1551,7 +1551,8 @@ func (c *Container) attachJVMUprobes(tracer *ebpftracer.Tracer, pid uint32) erro
 		c.l7AttachSuccess()
 		err = tracer.InitKProcInfo(pid, &c.AppInfo)
 		if err != nil {
-			klog.Errorf("[attach] InitKProcInfo failed pid:[%d] ;%s.", err.Error(), pid)
+			klog.Errorf("[attach] InitKProcInfo failed pid:[%d] ;%s.", pid, err.Error())
+			return err
 		} else {
 			klog.Infof("[attach] InitKProcInfo succeed! pid:[%d]", pid)
 		}

+ 3 - 0
containers/registry.go

@@ -426,6 +426,9 @@ func (r *Registry) handleEvents(ch <-chan ebpftracer.Event) {
 					}
 					if common.IsOpenFilter() && common.IsFilterPid(e.Pid) {
 						c.WhiteSettingInfo.AppName = enums.TestApp
+						if os.Getenv("APP_NAME") != "" {
+							c.WhiteSettingInfo.AppName = os.Getenv("APP_NAME")
+						}
 						c.WhiteSettingInfo.WhiteStackSettingInfo.WhiteList = os.Getenv("WHITE_LIST")
 						err := c.RegisterAppInfo(r, e.Pid)
 						if err != nil {

+ 14 - 0
tracing/apm_tracing.go

@@ -405,6 +405,20 @@ func isCURDOperation(q string) bool {
 	// 先查固定允许的操作
 	if _, ok := builtinOps[prefix]; ok {
 		return true
+	} else {
+		// 尝试清理所有非字母字符(移除控制字符、BOM、数字、标点等):
+		//`SELECT` 长度 6,字节:[83 69 76 69 67 84]
+		//prefix中的值长度 8,字节:[0 1 83 69 76 69 67 84]
+		prefixTmp := strings.Map(func(r rune) rune {
+			// 只保留大写字母 A-Z
+			if r >= 'A' && r <= 'Z' {
+				return r
+			}
+			return -1 // 删除其他所有字符
+		}, prefix)
+		if _, ok := builtinOps[prefixTmp]; ok {
+			return true
+		}
 	}
 
 	// 加载环境变量控制的操作(只执行一次)