我正在尝试获取 Solaris 10 上的网络统计信息
我在 Linux 上工作时是这样的::
02:42:06 IST IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
02:42:07 IST ens192 8.00 0.00 0.52 0.00 0.00 0.00 1.00
02:42:07 IST lo 43.00 43.00 7.98 7.98 0.00 0.00 0.00
与此相关的问题是,我们不能期望用户安装除预安装的软件包之外的任何其他软件包。
我尝试过的以及相应的问题:
- dladm 显示-dev -s:显示发送和接收的包裹总数。我需要每秒发送和接收
- dladm 显示-dev -s -i 1: 不会停止。这是不可接受的,因为脚本应该进一步在 Splunk 中索引数据。
- 数据统计:这个命令可以解决问题,但它没有预安装在 Solaris 中。
- 这里有疑问::有没有办法在 solaris 上安装 dlstat?
- 尼克斯达:Solaris 10 或 11 上未预安装。
有没有办法在不安装任何额外软件包的情况下获取这些字段?
注意:在这种情况下,手动减去发送和接收的包裹总数是不可靠的,并且不会被进一步批准实施。
提前谢谢您。
答案1
如果dladm show-dev -s ...
生成您需要的统计信息,请使用dladm show-dev -s
不带选项的命令-i 1
,这样它只打印一次,或者如果您需要多行输出来获取当前使用率的快照,您可以使命令超时。
最简单的方法是使用该timeout
实用程序,但我不知道它是否可以在 Solaris 10 上使用:
timeout 5 dladm show-dev -s -i 1
或者,在 bash 中(Solaris 10 上可用):
( dladm show-dev -s -i 1 ) & sleep 5; kill $!
(另请注意,dladm
Solaris 11 上的命令与 Solaris 10 上的命令有很大不同。dladm
我认为dladm show-dev -s ...
它不适用于 Solaris 11。)
答案2
我相信您正在寻找的命令是netstat -i
Solaris 10 命令或其变体。
dlstat
是 Solaris 11 命令。
我相信您对 nicstat 不属于 Solaris 10 的看法是对的。记得我当时下载并编译了源代码以便在 v8 上使用它。 Solaris 11 确实有以下软件包:pkg:diagnostic/nicstat
答案3
您可以使用 kstat 实用程序。 Solaris 10 和 Solaris 11 的变量不同,以下是通用代码:
KSTAT=$(kstat -p -c net '::mac:obytes64'; echo solaris10 globzone sent >/dev/null
kstat -p -c net '::mac:rbytes64'; echo solaris10 globzone rsv >/dev/null
kstat -p -c net '::phys:obytes64'; echo solaris11 globzone sent >/dev/null
kstat -p -c net '::phys:rbytes64'; echo solaris11 globzone rcv >/dev/null)
$KSTAT=$(echo "${KSTAT}" | sed 's/:[a-z]*:.*bytes64//; s/://; /vnic/d; /vsw/d;')
示例变量 KSTAT 由发送和接收的流量组成:
$ echo "$KSTAT"
igb0 1381124551259
igb1 0
igb2 0
igb3 0
usbecm2 509924057
igb0 803508091598
igb1 0
igb2 0
igb3 0
usbecm2 1007403041
所有这些计数器总是在增长。您可以对它们进行时间分析以捕获人类可读的统计数据。
另请注意,如果您有非全局区域,此统计数据仅适用于专用 IP 堆栈。共享 IP 堆栈中的所有区域都将具有相同的统计信息。