Skip to content

feat(netdev): support regex DeviceList matching#238

Open
jasen11 wants to merge 1 commit into
ccfos:mainfrom
jasen11:fix-0616
Open

feat(netdev): support regex DeviceList matching#238
jasen11 wants to merge 1 commit into
ccfos:mainfrom
jasen11:fix-0616

Conversation

@jasen11

@jasen11 jasen11 commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

问题背景

DeviceList 用于配置需要关注的网卡设备列表,但当前多个 netdev 相关实现只支持精确字符串匹配。

例如配置 DeviceList = ["eth[0-9]+"] 在修改前无法匹配 eth0,因为旧逻辑等价于 slices.Contains([]string{"eth[0-9]+"}, "eth0")。

这会导致用户很难一次性配置一组同类网卡,例如 eth0、eth1、bond0 等。

修改内容

本 PR 在 internal/matcher 中新增通用的 ListMatcher,并应用到以下配置项:

  • EventTracing.Netdev
  • MetricCollector.NetdevDCB
  • MetricCollector.NetdevHW

匹配规则如下:

  • 不包含显式正则操作符的条目按精确名称匹配。
  • 包含正则操作符的条目按完整正则表达式匹配。
  • 普通配置项如 eth0 仍然保持精确匹配。
  • VLAN 风格接口名如 eth0.100 仍然保持精确匹配。
  • 正则配置项如 eth[0-9]+ 可以匹配 eth0、eth1 等设备。
  • 空 DeviceList 保持原有行为,即不匹配任何设备。

同时更新了示例配置和中英文配置文档,说明 DeviceList 的匹配行为。

测试

  • gofmt -w internal/matcher/list_matcher.go internal/matcher/list_matcher_test.go
  • GOFLAGS=-mod=mod go test -count=1 -v ./internal/matcher -run TestListMatcher
  • GOFLAGS=-mod=mod go test -count=1 ./internal/matcher ./core/events ./core/metrics

Signed-off-by: jasen11 <1449435446@qq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant