0

0

Linux tetragon 的 tracing policy yaml 与 kprobe/uprobe 挂钩实践

冷漠man

冷漠man

发布时间:2026-02-16 15:25:32

|

593人浏览过

|

来源于php中文网

原创

tetragon tracingpolicy 必须显式指定正确 symbol 或 address 才能挂载 kprobe/uprobe;kprobe 需内核导出符号且非 notrace,uprobe 需容器内带 debuginfo 的二进制及动态符号;eventkind: trace、symbol/binarypath 等字段缺一不可,且大小写敏感、命名空间需精准匹配。

linux tetragon 的 tracing policy yaml 与 kprobe/uprobe 挂钩实践

怎么让 Tetragon 的 tracing policy 正确挂到 kprobe/uprobe 上

必须明确一点:Tetragon 的 tracingPolicy 不会自动帮你找函数地址或符号,它只按你写的 symboladdress 去 attach。写错符号名、没开 debuginfo、内核版本不匹配——三者任一出问题,policy 就静默失效,连日志都不报。

  • kprobe 时,symbol 必须是内核导出的符号(cat /proc/kallsyms | grep do_sys_open 能搜到才行),不能写 sys_open 这类别名
  • uprobebinaryPath 必须是容器内真实路径(比如 /usr/bin/curl),不是宿主机路径;且该二进制需带调试信息(file /usr/bin/curl 输出含 debug 字样)
  • Tetragon 默认只加载 /etc/tetragon/policies/ 下的 YAML,改完要 sudo systemctl restart tetragon 或用 tetra apply -f policy.yaml

为什么 kprobe symbol 写对了却没触发事件

常见假阴性:符号存在,但 probe 没生效。根本原因通常是内核配置或符号可见性限制。

  • 检查内核是否启用 CONFIG_KPROBES=yCONFIG_KPROBE_EVENTS=yzcat /proc/config.gz | grep KPROBE
  • 某些符号(如 __x64_sys_openat)在较新内核中被标记为 notracekprobe 无法 attach,得换 do_filp_open 这类更底层且可 trace 的函数
  • 使用 bpftool prog list 确认 program 是否已加载;再用 bpftool perf event show 看对应 tracepoint 是否 active

uprobe 的 symbol 名怎么查才靠谱

别猜,也别信文档里的例子。容器里跑的进程,符号得从那个环境里实时扒。

Pixlr Remove BG
Pixlr Remove BG

几秒钟删除图片背景

下载
  • 进目标容器:docker exec -it <id> sh</id>,然后装 readelfobjdump
  • 查函数符号:readelf -Ws /usr/bin/curl | grep ' open$'(注意结尾空格,过滤重载)
  • 查动态符号表(.dynsym)而非 .symtab:objdump -T /usr/bin/curl | grep 'open',因为 uprobe 只认动态链接符号
  • 如果函数是 inlined 或编译优化掉了(比如 -O2),可能根本不出现在符号表里——这时只能退到 syscall 级别用 kprobe

tracingPolicy YAML 里哪些字段实际影响挂载成败

看似可选的字段,有些是硬性依赖。少一个,probe 就不会注册。

  • eventKind: trace 是必须的,漏写会导致 Tetragon 当作普通 policy 处理,完全忽略 kprobe/uprobe 字段
  • kprobe 下必须有 symboladdress,二者不可同时为空;uprobebinaryPathsymbol 都不能为空
  • matchPIDs 如果用了 pid 字段,值必须是容器 init 进程 PID(1 在容器命名空间里),不是宿主机 PID;更稳妥用 processName 匹配
  • 字段名大小写敏感:symbol 不是 SymbolbinaryPath 不是 binarypath

最常被忽略的是符号生命周期——uprobe 绑定的进程退出后,probe 自动卸载;但若 policy 里写了 processName: curl 却没限制 namespace,Tetragon 可能去 attach 宿主机上的 curl,而不是你预期的那个容器实例。盯住 namespacecontainerName 字段的实际取值,比调参数重要得多。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

452

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

181

2023.10.30

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

265

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

512

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

411

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

447

2024.04.08

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

11

2026.02.11

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1520

2023.06.21

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

283

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.2万人学习

Git 教程
Git 教程

共21课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号