Cilium/Tetragon项目中的BPF程序性能监控指南

Cilium/Tetragon项目中的BPF程序性能监控指南

tetragon Cilium是一个开源的网络代理和网络安全解决方案,用于保护Kubernetes集群的网络通信。 - 功能:网络代理;网络安全;Kubernetes集群保护;容器网络。 - 特点:高性能;易于使用;支持多种云供应商;与Kubernetes集成。 tetragon 项目地址: https://gitcode.com/gh_mirrors/te/tetragon

概述

在Cilium/Tetragon项目中,BPF(Berkeley Packet Filter)程序是实现系统监控和安全策略执行的核心组件。了解如何监控这些BPF程序的性能指标对于系统调优和问题排查至关重要。本文将详细介绍如何获取和分析Tetragon中BPF程序的运行统计信息。

BPF程序统计原理

BPF子系统为每个加载的程序提供了性能数据,Tetragon通过两种方式暴露这些数据:

  1. 通过命令行工具实时查看(类似top命令)
  2. 通过Prometheus指标暴露长期统计数据

这些数据可以帮助我们了解:

  • 每个BPF程序的执行频率(运行次数)
  • 每个BPF程序的执行耗时(总运行时间)
  • 每个BPF程序对系统的整体影响(开销百分比)

命令行实时监控

Tetragon提供了tetra debug progs命令来实时查看BPF程序的运行情况。

基本用法

tetra debug progs

默认输出仅显示Tetragon相关的BPF程序,示例输出如下:

2024-10-31 11:12:45.94715546 +0000 UTC m=+8.038098448

Ovh(%)  Id      Cnt     Time    Name                            Pin
  0.00  22201   0       0       event_execve                    /sys/fs/bpf/tetragon/__base__/event_execve/prog
  0.00  22198   0       0       event_exit_acct_process         /sys/fs/bpf/tetragon/__base__/event_exit/prog

各列含义说明:

  • Ovh(%):BPF程序在整个系统中的开销百分比
  • Id:BPF程序的全局ID(与bpftool prog显示的一致)
  • Cnt:BPF程序执行的总次数
  • Time:BPF程序执行的总时间(纳秒)
  • Name:BPF程序名称
  • Pin:BPF程序在bpffs中的挂载路径

高级选项

  1. 查看所有BPF程序(包括非Tetragon的):
tetra debug progs --all
  1. 单次运行模式(不持续刷新):
tetra debug progs --once
  1. 自定义刷新间隔(默认为1秒):
tetra debug progs --timeout 10
  1. 自定义BPF文件系统路径:
tetra debug progs --bpf-dir /custom/path --bpf-lib /custom/lib/path

Prometheus指标监控

Tetragon会将BPF程序的性能数据导出为Prometheus指标,适合长期监控和分析。

指标类型

每个BPF程序会导出两个关键指标:

  1. tetragon_overhead_cnt_program_total:BPF程序执行总次数
  2. tetragon_overhead_time_program_total:BPF程序执行总时间(纳秒)

指标标签

每个指标都包含以下标签用于识别具体的BPF程序:

  • namespace:策略所属的Kubernetes命名空间
  • policy:策略名称
  • sensor:传感器类型(如generic_kprobe)
  • attach:程序附加点名称

示例指标

对于一个监控__x64_sys_close系统调用的BPF程序,其指标可能如下:

tetragon_overhead_program_runs_total{attach="__x64_sys_close",policy="syswritefollowfdpsswd",sensor="generic_kprobe"} 15894
tetragon_overhead_program_seconds_total{attach="__x64_sys_close",policy="syswritefollowfdpsswd",sensor="generic_kprobe"} 1.03908217e+08

启用BPF统计功能

需要注意的是,BPF程序统计功能默认是关闭的,因为它会引入额外的性能开销。启用方法有两种:

通过sysctl命令

# 启用统计
sysctl kernel.bpf_stats_enabled=1

# 禁用统计(完成后)
sysctl kernel.bpf_stats_enabled=0

通过tetra命令

tetra debug enable-stats
# 保持命令运行期间统计功能有效
# 按Ctrl+C退出后统计功能自动关闭

性能分析建议

  1. 关注高开销程序:Ovh(%)列显示的程序对系统性能影响最大
  2. 分析热点程序:Cnt和Time值高的程序可能是性能瓶颈
  3. 长期监控:通过Prometheus指标建立基线,识别异常波动
  4. 适时关闭:不需要时关闭统计功能以减少开销

总结

通过Tetragon提供的BPF程序统计功能,我们可以深入了解系统中BPF程序的运行状况,为性能调优和问题排查提供有力支持。无论是实时监控还是长期统计,都能帮助我们更好地理解系统行为并做出优化决策。

tetragon Cilium是一个开源的网络代理和网络安全解决方案,用于保护Kubernetes集群的网络通信。 - 功能:网络代理;网络安全;Kubernetes集群保护;容器网络。 - 特点:高性能;易于使用;支持多种云供应商;与Kubernetes集成。 tetragon 项目地址: https://gitcode.com/gh_mirrors/te/tetragon

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计金勇Louise

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值