深入了解 Linux nmeter 网络监控工具 (linux nmeter)

随着计算机网络的普及,网络监控工具早已成为企业日常运维的必备工具之一。Linux nmeter 网络监控工具作为一款轻量级的开源网络监控工具,其使用简单、功能强大而备受欢迎。本文将深入探讨 Linux nmeter 网络监控工具的原理、功能和应用,帮助读者更好地了解这一工具。

一、Linux nmeter 网络监控工具的基本原理

Nmeter 是一个轻量级的基于终端的网络监控工具。它可以监测网络流量、TCP/IP 连接数、伯克利数据报文指标、网卡接口等,具有较好的可扩展性。Nmeter 以基于终端的方式呈现监控结果,让用户可以实时观察网络状况,以便快速定位问题。Nmeter 可以监控并显示以下内容:

1. 接口流量,即输入和输出的网络数据量。

2. 流量速率,确保有一个可用的扩展图形。

3. 接口错误和带宽利用率。

4. 计算和显示网络流量的统计图表信息。

5. 显示网络流量的数据信息,包括传输的协议和端口号。

6. 抓包和过滤器,筛选信息之前捕获和监视网络流量。

Nmeter 是一款使用 C 语言编写的工具,并且没有依赖关系。基于 LIBPCAP 库,它可以使用系统的全局锁来捕获所有流过系统的数据包。

二、Linux nmeter 网络监控工具的特点

1. 方便使用

Nmeter 基于终端显示结果,让用户可以实时观察网络状况,以便快速定位问题。

2. 功能强大

Nmeter 可以监控并显示网络流量、TCP/IP 连接数、伯克利数据报文指标、网卡接口等多种数据,具有较好的可扩展性。

3. 开源免费

Nmeter 是一个免费的监控工具,并且其源代码是完全开放的。因此,用户可以根据自己的需要对其进行修改和定制。

三、安装和配置 Linux nmeter 网络监控工具

1. 安装 Nmeter

Nmeter 的安装非常简单。用户只需要通过以下命令安装:

# apt-get install nmeter

2. 配置 Nmeter

Nmeter 的配置文件位于 /etc/nmeter 目录下。该目录下包含两个配置文件:

1)nmeter.conf,是 Nmeter 的主配置文件。用户可以修改参数、自定义主题等。

2)filters.conf,是 Nmeter 的过滤器配置文件。用户可以根据自己的需要添加不同的过滤器,以便更好地监控网络数据。

四、使用 Linux nmeter 网络监控工具

Nmeter 的使用非常简单。用户只要在终端窗口中执行 nmeter 命令,即可开始监控网络数据。

# nmeter

此时,Nmeter 会在终端窗口中显示一个实时的监控界面。界面中包含了一些基本的监控信息,如网卡接口名称、网速、星号数量等。

如果需要退出 Nmeter,只需要按下 “q” 键即可。

五、使用案例:监控网络连接数

Nmeter 可以用来监控网络连接数。用户只需要执行以下命令即可:

# nmeter -s tcp

此时,Nmeter 会开始监控系统中所有的 TCP 连接。Nmeter 的界面将显示连入和连出的连接数,以及每个连接的信息,如地址、端口、数据包数量等。

六、

通过本文,我们了解了 Linux nmeter 网络监控工具的基本原理、特点、安装和配置方法。Nmeter 以其方便使用、功能强大和开源免费的特点备受欢迎。同时,我们还以一个案例来展示了如何使用 Nmeter 来监控网络连接数。如果您是一名 Linux 系统管理员或网络工程师,我相信 Nmeter 这个工具会为您的工作带来极大的帮助。

相关问题拓展阅读:

怎么在LINUX上打开控制台?

桌面控制台和字符控制台:

“ctrl+alt+F1”到“F6”组合键的任何一蔽培个,即可进去自负控制台界面。相反按““ctrl+alt+F7”

控制台终端(/dev/ttyn)和虚拟终端(/dev/pts/n) —远程终端

w: 显示登陆终端信息

为 Linux 或 Solaris 启用 Java 控制台

打开一缺桐个终端窗口。

转到 Java 安装目录。在此示例中,Java 安装在 /usr/java/ 目录中。

cd /usr/java/jre1.8.0_73/bin

(将路径更改为您安装 Java 的位置)

打开 Java 控制面板。输入:

./ControlPanel

在 Java 控制面板中单击高级选项卡。

在“Java 控制台”部分下选择显示控制台。

单击应用按钮。更多Linux相关知识可参考书籍《Linux就该宏扮唯这么学》。

在很多桌面系统下,可以打开终端。

Ubuntu(Unity)下,按键(Ubuntu下称为Super),打开搜索框,输入Terminal即可。

Ubuntu(Gnome)下神卜,左上角的菜单里有。

另外,Linux有纯字符界面游茄穗,按~,总共有6个纯字符的界面。

有什么不懂的问我哈,发挥纳岩共享精神。。。欢迎采纳~

之一种方法:按“Ctrl+Alt+T”即可打开终端窗口

第二种方法,按“Ctrl+Alt+F1-F6”均可进入终端。

第三种,搜索终端并进入。

注意事项

如果采用了F1-F6的方法,返回图形界面只要按“Ctrl+Alt+F7即可”

Linux是扰则一种自由和

开放源码

的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了

Linux内核

Linux可安装在各种计算机硬件设备中,比如手机、

平板电脑

、路由器、视频游戏控制台、台式计算机、大型机和

超级计算机

Linux是一个领先的操作系统绝李让,世界上运算最快的10台超级计算机运行的都是

Linux操作系统

。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并并局且使用GNU 工程各种工具和数据库的操作系统。

ctrl+alt+t ubantu下

桌面右键

如何在Linux用户和内核空间中进行动态跟踪

你不记得如何在代码扰弊中插入探针点了吗? 没问题!了解如何使用uprobe和kprobe来动态插入它们吧。 基本上,程序员需要在源代码汇编指令的不同位置插入动态探针点。

探针点

探针点是一个调试语句,有助于探索软件的执行特性(即,执行流程以及当探针语句执行时软件数据结构的状态)。printk是探针语句的最简单形式,也是黑客用于内核攻击的基础工具之一。

因为它需要重新编译源代码,所以printk插入是静态的探测方法。内核代码中重要位置上还有许多其他静态跟踪点可以动态启用或禁用。 Linux内核有一些框架可以帮助程序员探测内核或用户空间应用程序,而无需重新编译源代码。Kprobe是在内核代码中插入探针点的动态方法之一,并且uprobe在用户应用程序中执行此操作。

使用uprobe跟踪用户空间

可以通过使用thesysfs接口或perf工具将uprobe跟踪点插入用户空间代码。

使用sysfs接口插入uprobe

考虑以下简单测试代码,没有打印语句,我们想在某个指令中插入探针:

#include \n#include \n#include

编译代码并找到要探测的指令地址:

# gcc -o test test.\n# objdump -d test

假设我们在ARM64平台上有以下目标代码:

20 :\t\tadr\tx0,

并且我们想在偏移量0x620和0x644之间插入探针。执行以下命令:

# echo ‘p:func_2_entry test:0x620’ > /sys/kernel/debug/tracing/uprobe_event\n# echo ‘p:func_1_entry test:0x644’ >> /sys/kernel/debug/tracing/uprobe_event\n# echo 1 > /sys/kernel/debug/tracing/events/uprobes/enable# ./test&

在上面的之一个和第二个echo语句中,p告诉我们这是一个简单的测试。(探测器可以是简单的或返回的。)func_n_entry是我们在跟踪输出中看到的名称,名称是可选字段,如果没有提供,我们应该期待像p_test_0x644这样的名字。test 是我们要插入探针的可执行二进制文件野中。如果test 不在当前目录中,则需要指定path_to_test / test。

0x620或0x640是从程序启动开始的指令偏移量。请注意>>在第二个echo语句中,因为我们要再添加一个探针。所以,当我们在前两个命令中插入探针点之后,我们启用uprobe跟踪,当我们写入events/ uprobes / enable时,它将启用所有的uprobe事件。程序员还可以通过写入在该事件目录中创建的特定事件文件来启用单个事件。一旦探针点入和启用,每当执行探测指令时,我们可以看到一个跟踪条目。

读取跟踪文件以查看输出:

# cat /sys/kernel/debug/tracing/trac\n# tracer: no\n\n# entries-in-buffer/entries-written: 8/8\n#P:\n\n# _—–=> irqs-of\n# / _—-=> need-resche\n# | / _—=> hardirq/softir\n# || / _–=> preempt-dept\n# ||| / dela\n# TASK-PID CP\n# |||| TIMESTAMP FUNCTION# | | | |||| | |

我们可以看到哪个CPU完成了什么任务,什么时候执行了探测指令。

返回探针也可以插入指令。当返回该指令的函数时,将记录一个条目:

# echo 0 > /sys/kernel/debug/tracing/events/uprobes/enabl\n# echo ‘r:func_2_exit test:0x620’ >> /sys/kernel/debug/颂李山tracing/uprobe_event\n# echo ‘r:func_1_exit test:0x644’ >> /sys/kernel/debug/tracing/uprobe_event\n# echo 1 > /sys/kernel/debug/tracing/events/uprobes/enable

这里我们使用r而不是p,所有其他参数是相同的。请注意,如果要插入新的探测点,需要禁用uprobe事件:

test-3009 …. 4813.852674: func_1_entry: (0x400644)

上面的日志表明,func_1返回到地址0x4006b0,时间戳为4813.852691。

# echo 0 > /sys/kernel/debug/tracing/events/uprobes/enabl\n# echo ‘p:func_2_entry test:0x630’ > /sys/kernel/debug/tracing/uprobe_events count=%x\n# echo 1 > /sys/kernel/debug/tracing/events/uprobes/enabl\n# echo > /sys/kernel/debug/tracing/trace# ./test&

当执行偏移量0x630的指令时,将打印ARM64 x1寄存器的值作为count =。

输出如下所示:

test-3095 …. 7918.629728: func_2_entry: (0x400630) count=0x1

使用perf插入uprobe

找到需要插入探针的指令或功能的偏移量很麻烦,而且需要知道分配给局部变量的CPU寄存器的名称更为复杂。 perf是一个有用的工具,用于帮助引导探针插入源代码中。

除了perf,还有一些其他工具,如SystemTap,DTrace和LTTng,可用于内核和用户空间跟踪;然而,perf与内核配合完美,所以它受到内核程序员的青睐。

# gcc -g -o test test.c# perf probe -x ./test func_2_entry=func_\n# perf probe -x ./test func_2_exit=func_2%retur\n# perf probe -x ./test test_15=test.c:1\n# perf probe -x ./test test_25=test.c:25 numbe\n# perf record -e probe_test:func_2_entry -e\nprobe_test:func_2_exit -e probe_test:test_15\n-e probe_test:test_25 ./test

如上所示,程序员可以将探针点直接插入函数start和return,源文件的特定行号等。可以获取打印的局部变量,并拥有许多其他选项,例如调用函数的所有实例。 perf探针用于创建探针点事件,那么在执行./testexecutable时,可以使用perf记录来探测这些事件。当创建一个perf探测点时,可以使用其他录音选项,例如perf stat,可以拥有许多后期分析选项,如perf脚本或perf报告。

使用perf脚本,上面的例子输出如下:

# perf script

使用kprobe跟踪内核空间

与uprobe一样,可以使用sysfs接口或perf工具将kprobe跟踪点插入到内核代码中。

使用sysfs接口插入kprobe

程序员可以在/proc/kallsyms中的大多数符号中插入kprobe;其他符号已被列入内核的黑名单。还有一些与kprobe插入不兼容的符号,比如kprobe_events文件中的kprobe插入将导致写入错误。 也可以在符号基础的某个偏移处插入探针,像uprobe一样,可以使用kretprobe跟踪函数的返回,局部变量的值也可以打印在跟踪输出中。

以下是如何做:

; disable all events, just to insure that we see only kprobe output in trace\n# echo 0 > /sys/kernel/debug/tracing/events/enable; disable kprobe events until probe points are inseted\n# echo 0 > /sys/kernel/debug/tracing/events/kprobes/enable; clear out all the events from kprobe_events\n to insure that we see output for; only those for which we have enabled

irqs-of\n# / _—-=> need-resche\n# | / _—=> hardirq/softirq#\n|| / _–=> preempt-depth#\n ||| / delay# TASK-PID CPU#\n |||| TIMESTAMP FUNCTION#\n | | | |||| | |

使用perf插入kprobe

与uprobe一样,程序员可以使用perf在内核代码中插入一个kprobe,可以直接将探针点插入到函数start和return中,源文件的特定行号等。程序员可以向-k选项提供vmlinux,也可以为-s选项提供内核源代码路径:

# perf probe -k vmlinux kfree_entry=kfre\n# perf probe -k vmlinux kfree_exit=kfree%retur\n# perf probe -s ./ kfree_mid=mm/slub.c:3408 \n# perf record -e probe:kfree_entry -e probe:kfree_exit -e probe:kfree_mid sleep 10

使用perf脚本,以上示例的输出:

linux nmeter的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux nmeter,深入了解 Linux nmeter 网络监控工具,怎么在LINUX上打开控制台?,如何在Linux用户和内核空间中进行动态跟踪的信息别忘了在本站进行查找喔。


数据运维技术 » 深入了解 Linux nmeter 网络监控工具 (linux nmeter)