提出的问题
- 多 agent
- 重启后不需要重新读入
idea
- 资源-Controller 可以有多种实现, 我们现在只考虑cep引擎怎么更改资源配置。
设计
放到task.uhs.com 中, 资源配置文档
参考FileTraceDel 的实现, 其也为实现单agent 监听。
3.EventTraceTask
Think
- 代码一定分为三部分
- config_channel 中的部分是自动生成的, 不太应该就行更改, 如果要更改需要停止其自动生成
- agent-go 中实现注册Informer
- controller 注册Informer
- 之前这块不是在 controller-go 中写的, 到时候前端发个url给我说要下发, 获取信息还是维持之前的 url 。我这边应该也能判断是否入库。
我已经理解了一切。
调用
agent 端
- 在 Informer 中调用溯源函数。
- 传两个参数 (guid string, taskID string)
- 需要把 taskID 存到上传事件信息中。
controller 端
由 cep 调用。
引用 “uhs/controller/controller-go/eventtrace”
函数 “SendTraceTasks(info)(err error)” 传递
硬
web
- get, post
eventTraceTask 资源新增
部署
agent
- 重新编译 uhs-data.exe, curator.exe替换。 重新启动
controller
- 重新编译 config_channel
- 增加 agent 资源权限。更改
/fsdata/hscs/helms/config-channel/templates/configmap.yaml
添加1
2
3- apiGroups: [task.uhs.com]
resources: ["eventtracetasks", "eventtracetasks/status"]
verbs: ["list", "watch", "create", "update", "get", "delete"] - 参考 5.1.3 config_channe手动替换部署方法
- 若部署脚本执行失败,重新执行一次试试。 若部署完无法查看资源,执行。
1
kubectl apply -f /data/deployment/uhs-packages/nodeport.yaml
调用
agent
目录在 /agent/beats3/libbeat/processors/edr_trace/trace_task.go
实现其中的 dealTraceTask(guid string, taskID string)
函数,该函数会在每次资源 Create 或 Update 的时候执行一次。 期望行为是根据 guid
进行溯源, 在上传的事件中添加字段保存 taskID
信息。
controller
目录在 /controller/controller-go/pkg/tracetask/deal_cep_trace.go
调用其中的 SendTraceTasks(infos []TraceInfo) (err error)
函数, 其中 TraceInfo 字段如下, 代表一个溯源需求。
1 | type TraceInfo struct { |
我是一个一个一个一个一个一个一个一个一个一个一个一个一个一个 爱问放假啊我放假啊我 发i哦飞机娃儿佛i静安王佛i 阿文i附件为偶发我今儿 发觉为覅覅我发我i发安抚误解了史蒂夫贾文娟佛我i附件为覅哦iiii为发我发我阿飞