Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 计算每个进程的网络流量zabbix_Unix_Zabbix - Fatal编程技术网

Unix 计算每个进程的网络流量zabbix

Unix 计算每个进程的网络流量zabbix,unix,zabbix,Unix,Zabbix,我使用的是Zabbix 3.2。我想根据程序名计算网络接口上的流量统计 与获取总传入流量一样,我们在[if,]中使用net.if.in,通过同样的方式,可以像在Nethogs中一样检索每个正在运行的进程所使用的流量。如果是,请共享项目密钥。或者,如果有任何sh脚本也可以这样做 提前感谢。您还没有指定操作系统,但问题被标记为“unix”,您提到了nethogs和shell脚本——我假设是Linux 监控所有进程的流量可能有点太多了——可能有数百个进程,尽管许多进程不使用网络,但在服务器系统上,许多

我使用的是Zabbix 3.2。我想根据程序名计算网络接口上的流量统计

与获取总传入流量一样,我们在[if,]中使用net.if.in,通过同样的方式,可以像在Nethogs中一样检索每个正在运行的进程所使用的流量。如果是,请共享项目密钥。或者,如果有任何sh脚本也可以这样做


提前感谢。

您还没有指定操作系统,但问题被标记为“unix”,您提到了nethogs和shell脚本——我假设是Linux

监控所有进程的流量可能有点太多了——可能有数百个进程,尽管许多进程不使用网络,但在服务器系统上,许多进程会使用网络

如何构造数据也很重要。例如,您是希望按进程名称拆分,还是按单个进程拆分?甚至可能是进程名及其参数——如果在同一个机器上运行多个Java JVM。您必须对所有这些做出决定,因为这将影响数据收集

在向Zabbix发送数据时,Zabbix端最简单的方法是只按流程名称进行监视,如果您知道所有感兴趣的流程名称,则提前创建项。如果您不知道它们,则必须使用Zabbix在新流程出现时自动创建项

最后我们进入数据收集部分。在这里,它确实可能是使用nethogs最简单的方法(请记住)。您可以在“跟踪”模式下运行nethogs,这与top的“批处理”模式几乎相同。在此模式下,输出仅打印到标准输出

nethogs -c 1 -d 60 -t
这里,参数意味着:

  • -c-打印输出的次数
  • -d-迭代之间的睡眠时间,包括第一次输出之前的时间
  • -t-跟踪或批处理模式
Nethogs还支持使用
-v
标志设置流量输出类型。您必须决定如何将其可视化:

  • 0-KB/s
  • 1-总KB
  • 2-总计B
  • 3-总MB
使用Zabbix,您可能不想使用模式1或3-最好以字节存储数据,并允许Zabbix根据需要添加乘数。在KB/s模式(0)的情况下,可能值得添加1024的项目乘数以字节形式存储数据,并再次受益于Zabbix的自动单元应用程序。请注意,在任何情况下,您都希望背靠背运行nethog实例,以避免在不收集数据的窗口中运行。将任何窗口的可能性降至最低的一种方法是持续运行nethogs(不提供
-c
选项)并将输出重定向到文件。然后,脚本将解析该文件,并使用Zabbix_sender将数据发送到Zabbix

您不会将其作为正常的Zabbix运行,也不会作为主动或被动检查运行-它会阻塞太长时间。考虑使用<代码> ATD < /COD>()或<代码> NOHUP 启动一个将数据发送到ZabBIX的脚本。 请注意,您必须以root用户身份运行nethogs,并为此使用sudo

我不知道有任何用于此的现有脚本,但以下内容可能会帮助您开始:

nethogs -c 1 -d 1 -t | awk 'BEGIN {FS="[[:space:]/]+"}; /Refreshing/,0 \
{if ($1 != "Refreshing:" && $1 != "unknown") {print $(NF-4), $(NF-1), $NF}}'

这里,
awk
只抓取程序行并打印出程序名和发送/接收的流量。

有什么脚本可以将nethogs数据提取到zabbix吗?我回答中的代码片段以一种应该易于与
zabbix\u发送方使用的格式提供数据。