Skip to content

Commit 0d4d6d4

Browse files
committed
nettrace: add doc/man for monitor mode
Signed-off-by: Menglong Dong <imagedong@tencent.com>
1 parent 636211c commit 0d4d6d4

4 files changed

Lines changed: 100 additions & 3 deletions

File tree

README.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ Usage:
157157
--hooks print netfilter hooks if dropping by netfilter
158158
--drop skb drop monitor mode, for replace of 'droptrace'
159159
--sock enable 'sock' mode
160+
--monitor enable 'monitor' mode
160161
--drop-stack print the kernel function call stack of kfree_skb
161162
--min-latency the minial time to live of the skb
162163
@@ -179,6 +180,7 @@ Usage:
179180
- `diag-quiet`:只显示出现存在问题的报文,不显示正常的报文
180181
- `diag-keep`:持续跟踪。`diag`模式下,默认在跟踪到异常报文后会停止跟踪,使用该参数后,会持续跟踪下去。
181182
- `sock`:启用套接口模式。这个模式下,不会再跟踪报文,而会跟踪套接口。
183+
- `monitor`:启用监控模式。一种轻量化的实时监控系统中网络异常的模式(对内核版本有一定要求)。
182184
- `hooks`:结合netfilter做的适配,详见下文
183185
- `drop`:进行系统丢包监控,取代原先的`droptrace`
184186
- `drop-stack`: 打印kfree_skb内核函数的调用堆栈
@@ -626,3 +628,27 @@ begin trace...
626628
```
627629
628630
其中,`info`里显示的内容分别是:报文在外数量、报文重传数量。`timer`显示的为当前套接口上的定时器和超时时间。目前,信息还在不断完善中。
631+
632+
## 3.5 监控模式
633+
634+
常规的网络定位手段,包括上面的报文跟踪、诊断等方式,由于开销过大,不适合在生产环境中部署和常态化运行。监控模式能够提供一种更加轻量级别的网络异常、丢包监控。由于这种模式是基于`TRACING`类型的BPF,因此其对于内核版本有较高的要求。以下是内核版本要求:
635+
636+
| TencentOS | 开源版本 | BPF特性 | monitor |
637+
|---|---|---|---|
638+
|5.4.119-19.0009 | 5.5 | TRACING | 可用,不可监控内核模块中的函数和参数个数超过6的内核函数 |
639+
| 开发中 | 5.11 | BTF_MODULES | 可用,不可监控参数个数超过6的内核函数 |
640+
| 开发中 | 开发中 | TRACING支持6+参数 | 完全可用 |
641+
642+
其中,“TRACING支持6+参数”目前正在开发中,具体进展可参见:[bpf, x86: allow function arguments up to 12 for TRACING](https://lore.kernel.org/bpf/20230607125911.145345-1-imagedong@tencent.com/)
643+
644+
基本用法(在内核特性完全支持的情况下):
645+
646+
```shell
647+
$ nettrace --monitor
648+
begin trace...
649+
[25.167980] [nft_do_chain ] ICMP: 192.168.122.1 -> 192.168.122.9 ping request, seq: 1, id: 1523 *iptables table:filter, chain:INPUT* *packet is dropped by iptables/iptables-nft*
650+
[25.167996] [kfree_skb ] ICMP: 192.168.122.1 -> 192.168.122.9 ping request, seq: 1, id: 1523, reason: NETFILTER_DROP, nf_hook_slow+0xa8
651+
[25.168000] [nf_hook_slow ] ICMP: 192.168.122.1 -> 192.168.122.9 ping request, seq: 1, id: 1523 *ipv4 in chain: INPUT* *packet is dropped by netfilter (NF_DROP)*
652+
```
653+
654+
监控模式下,也可以使用普通模式的下各种参数,如报文过滤、`--detail`详情显示等。

script/bash-completion.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
complete -W '-s --saddr -d --daddr --addr -p -D --dport -S --sport -P --port --pid --netns --netns-current -t --trace -v --detail --debug --bpf-debug --ret --basic --diag --diag-quiet --diag-keep --sock --min-latency --date --drop --drop-stack --hooks -h --help' nettrace
1+
complete -W '-s --saddr -d --daddr --addr -p -D --dport -S --sport -P --port --pid --netns --netns-current -t --trace -v --detail --debug --bpf-debug --ret --basic --diag --diag-quiet --diag-keep --sock --min-latency --date --drop --drop-stack --hooks --monitor -h --help' nettrace
22
complete -W '-h -s -d --addr -p --dport --sport --port -t -v --detail --stack --stack-tracer --timeline -c --ret --skb-mode --force-stack --tcp-flags -o --output' nettrace-legacy

script/zh_CN/nettrace.8

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ nettrace \- Linux系统下的网络报文跟踪、网络问题诊断工具
8484
\fB\fC\-\-sock\fR
8585
启用套接口模式。这个模式下,不会再跟踪报文,而会跟踪套接口。
8686
.TP
87+
\fB\fC\-\-monitor\fR
88+
启用监控模式。一种轻量化的实时监控系统中网络异常的模式(对内核版本有一定要求)。
89+
.TP
8790
\fB\fC\-\-hooks\fR
8891
打印netfilter上的钩子函数
8992
.TP
@@ -287,7 +290,8 @@ end trace...
287290
丢包的所有的钩子函数,这里只有\fB\fCiptables\fR一个钩子函数。
288291
.SS sock跟踪
289292
.PP
290-
套接口跟踪在原理上与skb的basic模式很类似,只不过跟踪对象从skb换成了sock。常规的过滤参数,如ip、端口等,在该模式下都可以直接使用,基本用法如下所示:
293+
套接口跟踪在原理上与skb的basic模式很类似,只不过跟踪对象从skb换成了sock。
294+
常规的过滤参数,如ip、端口等,在该模式下都可以直接使用,基本用法如下所示:
291295
.PP
292296
.RS
293297
.nf
@@ -306,6 +310,41 @@ begin trace...
306310
.RE
307311
.PP
308312
其中,\fB\fCinfo\fR里显示的内容分别是:报文在外数量、报文重传数量。\fB\fCtimer\fR显示的为当前套接口上的定时器和超时时间。目前,信息还在不断完善中。
313+
.SS monitor模式
314+
.PP
315+
常规的网络定位手段,包括上面的报文跟踪、诊断等方式,由于开销过大,不适合在生产环境中
316+
部署和常态化运行。监控模式能够提供一种更加轻量级别的网络异常、丢包监控。由于这种模式
317+
是基于\fB\fCTRACING\fR类型的BPF,因此其对于内核版本有较高的要求。以下是内核版本要求:
318+
.TS
319+
allbox;
320+
cb cb cb cb
321+
l l l l
322+
l l l l
323+
l l l l
324+
.
325+
TencentOS 开源版本 BPF特性 monitor
326+
5.4.119\-19.0009 5.5 TRACING 可用,不可监控内核模块中的函数和参数个数超过6的内核函数
327+
开发中 5.11 BTF_MODULES 可用,不可监控参数个数超过6的内核函数
328+
开发中 开发中 TRACING支持6+参数 完全可用
329+
.TE
330+
.PP
331+
其中,“TRACING支持6+参数”目前正在开发中,具体进展可参见:
332+
.PP
333+
bpf, x86: allow function arguments up to 12 for TRACING \[la]https://lore.kernel.org/bpf/20230607125911.145345-1-imagedong@tencent.com/\[ra]
334+
.PP
335+
基本用法(在内核特性完全支持的情况下):
336+
.PP
337+
.RS
338+
.nf
339+
$ nettrace \-\-monitor
340+
begin trace...
341+
[25.167980] [nft_do_chain ] ICMP: 192.168.122.1 \-> 192.168.122.9 ping request, seq: 1, id: 1523 *iptables table:filter, chain:INPUT* *packet is dropped by iptables/iptables\-nft*
342+
[25.167996] [kfree_skb ] ICMP: 192.168.122.1 \-> 192.168.122.9 ping request, seq: 1, id: 1523, reason: NETFILTER_DROP, nf_hook_slow+0xa8
343+
[25.168000] [nf_hook_slow ] ICMP: 192.168.122.1 \-> 192.168.122.9 ping request, seq: 1, id: 1523 *ipv4 in chain: INPUT* *packet is dropped by netfilter (NF_DROP)*
344+
.fi
345+
.RE
346+
.PP
347+
监控模式下,也可以使用普通模式的下各种参数,如报文过滤、\fB\fC\-\-detail\fR详情显示等。
309348
.SH REQUIREMENTS
310349
.PP
311350
内核需要支持\fB\fCCONFIG_BPF\fR, \fB\fCCONFIG_KPROBE\fR, \fB\fCCONFIG_DEBUG_INFO_BTF\fR(可选)功能

script/zh_CN/nettrace.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ nettrace - Linux系统下的网络报文跟踪、网络问题诊断工具
8888
`--sock`
8989
启用套接口模式。这个模式下,不会再跟踪报文,而会跟踪套接口。
9090

91+
`--monitor`
92+
启用监控模式。一种轻量化的实时监控系统中网络异常的模式(对内核版本有一定要求)。
93+
9194
`--hooks`
9295
打印netfilter上的钩子函数
9396

@@ -285,7 +288,8 @@ end trace...
285288

286289
### sock跟踪
287290

288-
套接口跟踪在原理上与skb的basic模式很类似,只不过跟踪对象从skb换成了sock。常规的过滤参数,如ip、端口等,在该模式下都可以直接使用,基本用法如下所示:
291+
套接口跟踪在原理上与skb的basic模式很类似,只不过跟踪对象从skb换成了sock。
292+
常规的过滤参数,如ip、端口等,在该模式下都可以直接使用,基本用法如下所示:
289293

290294
```shell
291295
sudo ./nettrace -p tcp --port 9999 --sock
@@ -303,6 +307,34 @@ begin trace...
303307

304308
其中,`info`里显示的内容分别是:报文在外数量、报文重传数量。`timer`显示的为当前套接口上的定时器和超时时间。目前,信息还在不断完善中。
305309

310+
### monitor模式
311+
312+
常规的网络定位手段,包括上面的报文跟踪、诊断等方式,由于开销过大,不适合在生产环境中
313+
部署和常态化运行。监控模式能够提供一种更加轻量级别的网络异常、丢包监控。由于这种模式
314+
是基于`TRACING`类型的BPF,因此其对于内核版本有较高的要求。以下是内核版本要求:
315+
316+
| TencentOS | 开源版本 | BPF特性 | monitor |
317+
|---|---|---|---|
318+
|5.4.119-19.0009 | 5.5 | TRACING | 可用,不可监控内核模块中的函数和参数个数超过6的内核函数 |
319+
| 开发中 | 5.11 | BTF_MODULES | 可用,不可监控参数个数超过6的内核函数 |
320+
| 开发中 | 开发中 | TRACING支持6+参数 | 完全可用 |
321+
322+
其中,“TRACING支持6+参数”目前正在开发中,具体进展可参见:
323+
324+
[bpf, x86: allow function arguments up to 12 for TRACING](https://lore.kernel.org/bpf/20230607125911.145345-1-imagedong@tencent.com/)
325+
326+
基本用法(在内核特性完全支持的情况下):
327+
328+
```shell
329+
$ nettrace --monitor
330+
begin trace...
331+
[25.167980] [nft_do_chain ] ICMP: 192.168.122.1 -> 192.168.122.9 ping request, seq: 1, id: 1523 *iptables table:filter, chain:INPUT* *packet is dropped by iptables/iptables-nft*
332+
[25.167996] [kfree_skb ] ICMP: 192.168.122.1 -> 192.168.122.9 ping request, seq: 1, id: 1523, reason: NETFILTER_DROP, nf_hook_slow+0xa8
333+
[25.168000] [nf_hook_slow ] ICMP: 192.168.122.1 -> 192.168.122.9 ping request, seq: 1, id: 1523 *ipv4 in chain: INPUT* *packet is dropped by netfilter (NF_DROP)*
334+
```
335+
336+
监控模式下,也可以使用普通模式的下各种参数,如报文过滤、`--detail`详情显示等。
337+
306338
## REQUIREMENTS
307339

308340
内核需要支持`CONFIG_BPF`, `CONFIG_KPROBE`, `CONFIG_DEBUG_INFO_BTF`(可选)功能

0 commit comments

Comments
 (0)