Sfoglia il codice sorgente

Fixed #TSB-1234 test

ilucky.si 2 anni fa
parent
commit
a3e9cb0bc3
5 ha cambiato i file con 20 aggiunte e 13 eliminazioni
  1. 2 0
      containers/container.go
  2. 2 1
      containers/container_apm.go
  3. 14 10
      containers/registry.go
  4. 1 1
      ebpftracer/tls.go
  5. 1 1
      ebpftracer/tracer.go

+ 2 - 0
containers/container.go

@@ -1,6 +1,7 @@
 package containers
 
 import (
+	"fmt"
 	"os"
 	"strings"
 	"sync"
@@ -1081,6 +1082,7 @@ func (c *Container) revalidateListens(now time.Time, actualListens map[netaddr.I
 }
 
 func (c *Container) attachTlsUprobes(tracer *ebpftracer.Tracer, pid uint32) {
+	fmt.Println("-----------------attachTlsUprobes------------------------")
 	p := c.processes[pid]
 	if p == nil {
 		return

+ 2 - 1
containers/container_apm.go

@@ -14,6 +14,7 @@ func (c *Container) getTrace(traceId uint64) (*tracing.Trace, bool) {
 
 func (c *Container) InitTrace(traceId uint64, r *l7.RequestData) error {
 	method, path, hostIp, port := l7.ParseHttpHost(r.Payload)
+	fmt.Println("InitTrace..........", method, path, hostIp, port, c)
 	ip, err := netaddr.ParseIP(hostIp)
 	if err != nil {
 		return fmt.Errorf("host ip error")
@@ -44,7 +45,7 @@ func (c *Container) onL7RequestApm(pid uint32, fd uint64, timestamp uint64, r *l
 			//fmt.Println("====ProtocolTrace start1====", r.TraceId)
 			err := c.InitTrace(r.TraceId, r) // TODO: 核心方法
 			if err != nil {
-				fmt.Println(err)
+				fmt.Println(err) // TODO: InitTrace报错,还继续吗?
 			}
 			//fmt.Println("init r.TraceId:", r.TraceId)
 			//trace, _ := c.getTrace(r.TraceId)

+ 14 - 10
containers/registry.go

@@ -196,19 +196,23 @@ func (r *Registry) handleEvents(ch <-chan ebpftracer.Event) {
 			if e.Pid == uint32(os.Getpid()) {
 				continue
 			}
+			if e.Pid != 362943 { // TODO: TEST_DEBUG........只拦截一个进程.....
+				continue
+			}
+
 			if !more {
 				return
 			}
 			fmt.Println("--------- <- ch -------------pid = ", e.Pid)
 			switch e.Type {
-			case ebpftracer.EventTypeProcessStart:
+			case ebpftracer.EventTypeProcessStart: // TODO: ??????
 				fmt.Println("----EventTypeProcessStart----")
 				c, seen := r.containersByPid[e.Pid]
 				switch { // possible pids wraparound + missed `process-exit` event
 				case c == nil && seen: // ignored
 					delete(r.containersByPid, e.Pid)
 				case c != nil: // revalidating by cgroup
-					cg, err := proc.ReadCgroup(e.Pid)
+					cg, err := proc.ReadCgroup(e.Pid) // TODO: 没有什么权限?
 					if err != nil || cg.Id != c.cgroup.Id {
 						delete(r.containersByPid, e.Pid)
 						c.onProcessExit(e.Pid, false)
@@ -231,9 +235,9 @@ func (r *Registry) handleEvents(ch <-chan ebpftracer.Event) {
 					c.onFileOpen(e.Pid, e.Fd)
 				}
 
-			case ebpftracer.EventTypeListenOpen: // TODO: 核心逻辑:attachTlsUprobes, , 为什么放在这里???
-				//fmt.Println("ebpftracer.EventTypeConnectionOpen==================", e.Pid)
-				fmt.Println("----EventTypeListenOpen----")
+			case ebpftracer.EventTypeListenOpen: // TODO: 核心逻辑:attachTlsUprobes, , 为什么放在这里???根据事件绑定uprobe???
+				fmt.Println("ebpftracer.EventTypeConnectionOpen==================", e.Pid)
+				// fmt.Println("----EventTypeListenOpen----")
 				if c := r.getOrCreateContainer(e.Pid); c != nil {
 					c.onListenOpen(e.Pid, e.SrcAddr, false)
 					c.attachTlsUprobes(r.tracer, e.Pid)
@@ -246,9 +250,9 @@ func (r *Registry) handleEvents(ch <-chan ebpftracer.Event) {
 					c.onListenClose(e.Pid, e.SrcAddr)
 				}
 
-			case ebpftracer.EventTypeConnectionOpen: // TODO: 核心逻辑:attachTlsUprobes, 为什么放在这里???
-				fmt.Println("----EventTypeConnectionOpen----")
-				//fmt.Println("ebpftracer.EventTypeConnectionOpen==================", e.Pid)
+			case ebpftracer.EventTypeConnectionOpen: // TODO: 核心逻辑:attachTlsUprobes, 为什么放在这里??? 根据事件绑定uprobe???
+				// fmt.Println("----EventTypeConnectionOpen----")
+				fmt.Println("ebpftracer.EventTypeConnectionOpen==================", e.Pid)
 				if c := r.getOrCreateContainer(e.Pid); c != nil {
 					c.onConnectionOpen(e.Pid, e.Fd, e.SrcAddr, e.DstAddr, e.Timestamp, false)
 					c.attachTlsUprobes(r.tracer, e.Pid)
@@ -279,8 +283,8 @@ func (r *Registry) handleEvents(ch <-chan ebpftracer.Event) {
 					}
 				}
 			case ebpftracer.EventTypeL7Request: // TODO: 核心代码, 处理7层协议请求, 来自tracer.runEventsReader方法......
-				fmt.Println("-----EventTypeL7Request------1", e) // TODO: 需要区分是client还是server吗?
-				//fmt.Println("e.L7Request Payload:", string(e.L7Request.Payload))
+				// fmt.Println("-----EventTypeL7Request------1", e) // TODO: 需要区分是client还是server吗?
+				fmt.Println("e.L7Request Payload:", string(e.L7Request.Payload))
 				if e.L7Request == nil {
 					continue
 				}

+ 1 - 1
ebpftracer/tls.go

@@ -116,7 +116,7 @@ func (t *Tracer) AttachOpenSslUprobes(pid uint32) []link.Link {
 
 // TODO: 核心方法
 func (t *Tracer) AttachGoTlsUprobes(pid uint32) []link.Link { // TODO: 核心方法
-	fmt.Println("--------------AttachGoTlsUprobes------------pid---", pid)
+	fmt.Println("--------------AttachGoTlsUprobes------------pid:", pid)
 	if t.disableL7Tracing {
 		return nil
 	}

File diff suppressed because it is too large
+ 1 - 1
ebpftracer/tracer.go


Some files were not shown because too many files changed in this diff