diff --git a/daemon/manager/manager.go b/daemon/manager/manager.go index ac7c82bc3..825e7affe 100644 --- a/daemon/manager/manager.go +++ b/daemon/manager/manager.go @@ -87,7 +87,7 @@ func Execute(configs *options.BootstrapConfigs) error { log.Info("controller Start successful") defer c.Stop() - statusServer := status.NewServer(c.GetXdsClient(), configs, bpfLoader.GetBpfKmeshWorkload()) + statusServer := status.NewServer(c.GetXdsClient(), configs, bpfLoader.GetBpfLogLevel()) statusServer.StartServer() defer func() { _ = statusServer.StopServer() diff --git a/pkg/bpf/bpf.go b/pkg/bpf/bpf.go index 5165d081d..855e1fc67 100644 --- a/pkg/bpf/bpf.go +++ b/pkg/bpf/bpf.go @@ -49,6 +49,7 @@ type BpfLoader struct { obj *BpfKmesh workloadObj *BpfKmeshWorkload + bpfLogLevel *ebpf.Map } func NewBpfLoader(config *options.BpfConfig) *BpfLoader { @@ -80,6 +81,7 @@ func (l *BpfLoader) StartAdsMode() (err error) { return fmt.Errorf("api env config failed, %s", err) } + l.bpfLogLevel = l.obj.SockConn.BpfLogLevel ret := C.deserial_init() if ret != 0 { l.Stop() @@ -133,6 +135,13 @@ func (l *BpfLoader) GetBpfKmeshWorkload() *BpfKmeshWorkload { return l.workloadObj } +func (l *BpfLoader) GetBpfLogLevel() *ebpf.Map { + if l == nil { + return nil + } + return l.bpfLogLevel +} + func StopMda() error { cmd := exec.Command("mdacore", "disable") output, err := cmd.CombinedOutput() diff --git a/pkg/bpf/bpf_kmesh_l4_workload.go b/pkg/bpf/bpf_kmesh_l4_workload.go index 392377755..826f49ea6 100644 --- a/pkg/bpf/bpf_kmesh_l4_workload.go +++ b/pkg/bpf/bpf_kmesh_l4_workload.go @@ -68,7 +68,7 @@ func (l *BpfLoader) StartWorkloadMode() error { l.Stop() return fmt.Errorf("bpf Attach failed, %s", err) } - + l.bpfLogLevel = l.workloadObj.SockConn.BpfLogLevel return nil } diff --git a/pkg/status/status_server.go b/pkg/status/status_server.go index 733a4eb0c..dd68598e6 100644 --- a/pkg/status/status_server.go +++ b/pkg/status/status_server.go @@ -34,7 +34,6 @@ import ( adminv2 "kmesh.net/kmesh/api/v2/admin" "kmesh.net/kmesh/api/v2/workloadapi/security" "kmesh.net/kmesh/daemon/options" - "kmesh.net/kmesh/pkg/bpf" "kmesh.net/kmesh/pkg/constants" "kmesh.net/kmesh/pkg/controller" "kmesh.net/kmesh/pkg/controller/ads" @@ -64,7 +63,7 @@ type Server struct { xdsClient *controller.XdsClient mux *http.ServeMux server *http.Server - bpfWorkloadObj *bpf.BpfKmeshWorkload + bpfLogLevelMap *ebpf.Map } func GetConfigDumpAddr(mode string) string { @@ -75,12 +74,12 @@ func GetLoggerURL() string { return "http://" + adminAddr + patternLoggers } -func NewServer(c *controller.XdsClient, configs *options.BootstrapConfigs, bpfWorkloadObj *bpf.BpfKmeshWorkload) *Server { +func NewServer(c *controller.XdsClient, configs *options.BootstrapConfigs, bpfLogLevel *ebpf.Map) *Server { s := &Server{ config: configs, xdsClient: c, mux: http.NewServeMux(), - bpfWorkloadObj: bpfWorkloadObj, + bpfLogLevelMap: bpfLogLevel, } s.server = &http.Server{ Addr: adminAddr, @@ -295,7 +294,11 @@ func (s *Server) bpfLogLevel(w http.ResponseWriter, r *http.Request) { } key := uint32(0) levelPtr := uint32(level) - if err := s.bpfWorkloadObj.SockConn.BpfLogLevel.Update(&key, &levelPtr, ebpf.UpdateAny); err != nil { + if s.bpfLogLevelMap == nil { + http.Error(w, fmt.Errorf("update log level error:%v", "bpfLogLevelMap is nil").Error(), http.StatusBadRequest) + return + } + if err := s.bpfLogLevelMap.Update(&key, &levelPtr, ebpf.UpdateAny); err != nil { http.Error(w, fmt.Errorf("update log level error:%v", err).Error(), http.StatusBadRequest) return }