首批通过分布式安全可靠测评,为关键业务系统打造
tsar 命令不显示 traffic 流量指标问题的原因及解决方法
更新时间:2026-06-16 09:21
问题现象
服务器: 海光 Hygon C86 7390 操作系统版本: 麒麟 v10sp3_x86_64-build23/20230324 tsar 版本: 2.1.66-1.5923e46
主机 tsar 监控命令不显示 traffic 流量指标,如下图。

问题分析
tsar 是淘宝开发的一个开源的采集工具,主要收集主机的系统信息(如:cpu、mem、io、tcp、load 等)。对应配置文件 /etc/tsar/tsar.conf,收集的数据存储的位置由配置文件中参数 output_file_path 指定,默认是 /var/log/tsar.data,详细参见:alibaba/tsar。
问题排查
通过 github issues 找到相关问题,跟网卡名有关,把想采集的网卡名配置到
/etc/tsar/tsar.conf中,比如:mod_traffic on eth0 eth1 这样。
按照上述方式,配置后,仍然不生效,下图所示。

重新根据 tsar 工具源码分析。

从上图可以看到,问题根本在于
mod_traffic.c源文件中,只定义了eth,em,en这 3 类网卡名开头的。而海光 Hygon C86 7390 服务器默认安装网卡名是自动生成的(以p开头),不在这三类网卡名内,如下图所示。
因此需重新下载 tsar 源文件,修改
mod_traffic.c文件,然后重新进行源文件编译。下载源文件:git clone。
修改
mod_traffic.c源文件,如下图所示。
说明
n_prefix配置的数量跟*prefixes[10]变量值个数需要保持一致。*prefixes[10]变量值,必须是 2 个字符及以上,不能配置为一个字符,否则会出现 tsar 命令 core 问题。
配置以单字符
p开头,tsar 命令会 core 掉,如下二副图所示。

重新编译安装。
# cd tsar # make # make install验证 traffic 流量有数据显示。

问题原因
tsar 工具和麒麟操作系统默认安装的网卡名不匹配导致。这个跟网卡名有关,不只限制麒麟操作系统,其它os应该也是一个道理。tsar 工具的 mod_traffic.c 源文件中,只定义了 eth,em,en 这 3 类网卡名开头的。对于海光 7390 服务器,网卡都是新一代的网卡,默认麒麟操作系统安装后,网卡都是以 p 开头的,不属于这三类,如果要兼容其它,就要重新修改编译。而且 mod_traffic.c 中不能是以单字符网卡名开头,否则会 core。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库所有版本。
解决方法
方法一:下载 tsar 源码,修改
mod_traffic.c文件,加入对应网卡匹配前缀,最后重新对 tsar 源文件编译。方法二:操作系统安装时,设置网卡名称以
en开头。