|
|
@@ -75,7 +75,7 @@ func NewRegistry(reg prometheus.Registerer, kernelVersion string, processInfoCh
|
|
|
if err := cgroup.Init(); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
- if err := DockerdInit(); err != nil {
|
|
|
+ if err := DockerdInit(); err != nil { //IK: 初始化docker???
|
|
|
klog.Warningln(err)
|
|
|
}
|
|
|
if err := ContainerdInit(); err != nil {
|
|
|
@@ -94,24 +94,24 @@ func NewRegistry(reg prometheus.Registerer, kernelVersion string, processInfoCh
|
|
|
|
|
|
r := &Registry{
|
|
|
reg: reg,
|
|
|
- events: make(chan ebpftracer.Event, 10000), // TODO: 队列
|
|
|
+ events: make(chan ebpftracer.Event, 10000), // IK: 队列
|
|
|
|
|
|
hostConntrack: ct,
|
|
|
|
|
|
- containersById: map[ContainerID]*Container{}, // TODO: 缓存的一些关系映射
|
|
|
+ containersById: map[ContainerID]*Container{}, // IK: 缓存的一些关系映射
|
|
|
containersByCgroupId: map[string]*Container{},
|
|
|
containersByPid: map[uint32]*Container{},
|
|
|
ip2fqdn: map[netaddr.IP]string{},
|
|
|
|
|
|
- processInfoCh: processInfoCh, // TODO: 进程信息
|
|
|
+ processInfoCh: processInfoCh, // IK: 进程信息
|
|
|
|
|
|
- tracer: ebpftracer.NewTracer(kernelVersion, *flags.DisableL7Tracing), // TODO: 核心代码
|
|
|
+ tracer: ebpftracer.NewTracer(kernelVersion, *flags.DisableL7Tracing), // IK: 核心代码
|
|
|
}
|
|
|
if err = reg.Register(r); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
- go r.handleEvents(r.events) // TODO: 处理EBPF程序发出来的数据
|
|
|
- if err = r.tracer.Run(r.events); err != nil { // TODO: 核心代码, attach Uprobe
|
|
|
+ go r.handleEvents(r.events) // IK: 处理EBPF程序发出来的数据
|
|
|
+ if err = r.tracer.Run(r.events); err != nil { // IK: 核心代码, attach Uprobe
|
|
|
close(r.events)
|
|
|
return nil, err
|
|
|
}
|
|
|
@@ -141,7 +141,7 @@ func (r *Registry) handleEvents(ch <-chan ebpftracer.Event) {
|
|
|
defer gcTicker.Stop()
|
|
|
for {
|
|
|
select {
|
|
|
- case now := <-gcTicker.C: // TODO: 周期性做一些操作
|
|
|
+ case now := <-gcTicker.C:
|
|
|
for pid, c := range r.containersByPid {
|
|
|
cg, err := proc.ReadCgroup(pid)
|
|
|
if err != nil {
|
|
|
@@ -192,7 +192,7 @@ func (r *Registry) handleEvents(ch <-chan ebpftracer.Event) {
|
|
|
}
|
|
|
}
|
|
|
r.ip2fqdnLock.Unlock()
|
|
|
- case e, more := <-ch: // TODO: 核心代码, 读取chan中的数据
|
|
|
+ case e, more := <-ch: // IK: 核心代码, 读取chan中的数据
|
|
|
if e.Pid == uint32(os.Getpid()) {
|
|
|
continue
|
|
|
}
|