Inspektor Gadget 附带一个小工具目录。 每个小工具都是一个基于 eBPF 的自包含工具,用于捕获一种系统活动并将其与 Kubernetes 元数据相关联。 本文列出了按类别分组的官方小工具,以便你可以为特定任务选择正确的工具。 这些小工具的用途非常广泛,涵盖从 DNS 故障排除到文件访问可观测性等多个方面,因此不妨浏览一下完整目录。
你可以使用 kubectl gadget run <gadget> 命令运行任何设备。 例如,kubectl gadget run trace_dns。 若要了解如何限定和运行小工具,请参阅 “运行小工具”以检查 AKS 上的工作负载。
Important
AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
设备类别
小工具按它们执行的观察类型命名。 前缀告知小工具的行为方式:
| 类别 | 前缀 | Behavior |
|---|---|---|
| Trace | trace_ |
在事件发生时持续流式传输这些事件。 |
| 快照 | snapshot_ |
返回当前状态的时间点视图。 |
| Top | top_ |
定期报告最繁忙的资源,例如 top 命令。 |
| 个人资料 | profile_ |
聚合一段时间内的数据,通常是直方图。 |
| 建议 | advise_ |
观察活动并建议配置。 |
| 审计 | audit_ |
记录与安全相关的审核事件。 |
| 其他 | — | 不符合上述类别的专用工具。 |
跟踪小工具
跟踪小工具实时流式传输事件。 使用它们实时查看活动情况。
| 小工具 | 它跟踪的内容 |
|---|---|
trace_bind |
套接字 bind() 调用,以查看进程正在侦听哪些端口。 |
trace_capabilities |
Linux 能力检查,用于查找工作负载所需的能力。 |
trace_dns |
DNS 查询和响应,以及发起这些查询和响应的 Pod。 |
trace_exec |
新的进程执行(execve)及其命令和参数。 |
trace_fsslower |
文件系统操作速度比可配置阈值慢。 |
trace_init_module |
内核模块加载 (init_module)。 |
trace_lsm |
Linux 安全模块 (LSM) 挂钩决策。 |
trace_malloc |
用户空间内存分配和释放(malloc/free)。 |
trace_oomkill |
内存不足(OOM)杀手事件。 |
trace_open |
打开的文件(open/openat包含文件名和标志)。 |
trace_signal |
在进程之间发送的信号。 |
trace_sni |
ClientHello 中的 TLS 服务器名称指示 (SNI) 值。 |
trace_ssl |
通过 TLS 库上的用户态探针获取 SSL/TLS 数据。 |
trace_tcp |
TCP 连接、接受和关闭事件。 |
trace_tcpdrop |
被内核丢弃的 TCP 数据包。 |
trace_tcpretrans |
TCP 重传。 |
快照小工具
运行快照小工具时返回当前状态。
| 小工具 | 它捕获的内容 |
|---|---|
snapshot_process |
当前正在运行的进程。 |
snapshot_socket |
活动网络套接字。 |
snapshot_file |
每个进程当前打开的文件。 |
热门电子产品
排名靠前的小工具按活动定期刷新资源,类似于 Linux top 命令。
| 小工具 | 它排名的内容 |
|---|---|
top_process |
按 CPU 和内存使用情况处理。 |
top_file |
按文件读写活动划分的进程 |
top_tcp |
按流量划分的 TCP 连接 |
top_blockio |
通过块 I/O 进行处理。 |
top_cpu_throttle |
因其 cgroup CPU 限制而受限的进程 |
top_cuda_memory |
按 GPU (CUDA) 内存使用情况处理。 |
个人资料小工具
分析小工具会对一段时间内的测量数据进行聚合,并通常以直方图形式将其汇总。
| 小工具 | 它分析的内容 |
|---|---|
profile_cpu |
通过采样堆栈跟踪分析 CPU 使用情况,用于火焰图分析。 |
profile_blockio |
阻止 I/O 延迟分布。 |
profile_tcprtt |
TCP 往返时间(RTT)分布。 |
profile_qdisc_latency |
排队规则 (qdisc) 延迟分布。 |
profile_cuda |
GPU (CUDA) 内核活动。 |
推荐小工具
Advise 工具会持续观察你的工作负载,并生成推荐配置。
| 小工具 | 建议的内容 |
|---|---|
advise_networkpolicy |
一组基于观察到的流量的 Kubernetes 网络策略。 |
advise_seccomp |
基于系统调用工作负荷的 seccomp 配置文件。 |
审计小工具
审计工具会记录与安全相关的事件,以供审查。
| 小工具 | 它审核的内容 |
|---|---|
audit_seccomp |
Seccomp 事件,例如被 seccomp 配置阻止或记录的系统调用。 |
其他小工具
这些专用工具针对特定的调试场景。
| 小工具 | 它的作用是什么 |
|---|---|
bpfstats |
报告有关节点上运行的 eBPF 程序的统计信息,例如运行时和内存使用情况。 |
tcpdump |
以 tcpdump 样式捕获数据包,并将其写入 pcap 文件。 |
traceloop |
在环形缓冲区中持续记录系统调用,以便进行事后回放。 |
deadlock |
检测目标进程中的潜在互斥锁死锁。 |
fdpass |
跟踪经由 SCM_RIGHTS 在进程之间传递的文件描述符。 |
fsnotify |
跟踪fsnotify和inotify文件系统通知事件。 |
ttysnoop |
镜像终端(tty 或 pts)会话的输入和输出。 |
注释
每个小工具都有自己的字段和内核要求。 某些小工具(如 GPU 相关小工具)需要具有匹配硬件的节点。