配置
eBPF探针熔断
熔断原理
eBPF探针熔断策略是根据Node节点主机CPU使用率和可用内存大小来判断是否需要执行探针熔断。
CPU默认的阈值为 75%~85%,当Node节点CPU使用率超过85%,触发探针熔断。
可用内存默认的阈值为1GB~2GB,当Node节点的可用内存小于1GB时,触发探针熔断。
探针熔断后,当主机CPU使用率低于75%时且可用内存大于2GB时,探针恢复正常工作。
需要注意的是,熔断时eBPF探针进程会退出,熔断恢复后,eBPF探针进程会重新启动。
配置修改
修改tingyunagent.yaml中的tingyun-common-config
的ebpf_cpu_blow_threshold
和ebpf_mem_blow_threshold
。
apiVersion: v1
kind: ConfigMap
metadata:
name: tingyun-common-config
namespace: tingyun
data:
VERSION: |
2.4.1.0
tingyun-common.yaml: |
#是否启用EBPF网络数据收集功能,true或false
#如果开启EBPF功能,需要同时修改Daemonset tingyun-linux-agent的requests cpu为0.5, memory为1Gi,并重启Daemonset tingyun-linux-agent
ebpf_enabled: false
#EBPF网络模块按CPU使用率熔断阈值:启用阈值,禁用阈值
#单位:百分比
#当node节点的CPU使用率高于禁用阈值时,EBPF网络模块切换到熔断状态
#当处于熔断状态,且CPU使用率低于CPU启用阈值时,且可用内存大于可用内存启用阈值时,启用EBPF网络模块
ebpf_cpu_blow_threshold: 75,85
#EBPF网络模块按可用内存大小熔断阈值:禁用阈值,启用阈值
#单位:字节
#当node节点的可用内存小于禁用阈值时,EBPF网络模块切换到熔断状态
#当处于熔断状态,且CPU使用率低于CPU启用阈值时,且可用内存大于可用内存启用阈值时,启用EBPF网络模块
ebpf_mem_blow_threshold: 1073741824,2147483648
然后使用yaml文件更新。
kubectl apply -f tingyunagent.yaml
当tingyunagent.yaml安装文件丢失时,可以使用edit configmap命令修改配置。
kubectl edit configmap tingyun-common-config -n tingyun
查看熔断日志:
kubectl -n tingyun exec -ti tingyun-linux-agent-vrtwk -- cat /opt/agent/ebpf/restart.log
输入结果类似如下:
ebpf agent stop, because of feature disable # ebpf_enabled开关为false
ebpf agent start, because of crash restart or blow recover # ebpf_enabled开关为true,探针启动
ebpf agent stop, because of trigger cpu blow # cpu高导致熔断
ebpf agent start, because of crash restart or blow recover # 熔断恢复,探针启动
ebpf agent stop, because of trigger memory blow # 可用内存不足导致熔断
ebpf agent start, because of crash restart or blow recover # 熔断恢复,探针启动
ebpf agent not start because of memory blow # 可用内存不足导致探针未启动
日志级别和审计模式
修改tingyunagent.yaml中的tingyun-sys-config
的ebpf.conf
文件内的配置项 log.level
和 log.audit
。
apiVersion: v1
kind: ConfigMap
metadata:
name: tingyun-sys-config
namespace: tingyun
data:
ebpf.conf: |
#
# 配置项: log.filecount
# 用途: 日志文件保留个数
# 缺省值: 10
# 修改后需要重启pod
log.filecount=3
#
# 配置项: log.filesize
# 用途: 单个日志文件大小
# 缺省值: 100
# 单位: MB字节
# 修改后需要重启pod
log.filesize=100
#
# 配置项: log.level
# 用途: 日志数据过滤级别
# 可设定值: debug, info, warning, error
# 缺省值: info
# 修改后需要重启pod
log.level=info
#
# 配置项: log.audit
# 用途: 开启审计模式日志
# 可设定值: true, false
# 缺省值: false
# 修改后需要重启pod
log.audit=false
然后使用yaml文件更新。
kubectl apply -f tingyunagent.yaml
当tingyunagent.yaml安装文件丢失时,可以使用edit configmap命令修改配置。
kubectl edit configmap tingyun-sys-config -n tingyun
然后delete原有tingyun-linux-agent的pod,让pod重建。
kubectl -n tingyun delete pod tingyun-linux-agent-ddefb
查看工作日志:
kubectl -n tingyun exec -ti tingyun-linux-agent-vrtwk -- cat /opt/agent/ebpf/logs/ebpf-agent.log