依赖检查

创建时间:2024-04-02 最近修改时间:2025-10-24

#1. 依赖检查

原理上 Agent 仅依赖于Linux Kernel 2.6.23+

#2. 采集配置

deepflow-agent.yaml 配置文件:

  • 推荐:将vtap-group-id-request设置为系统-采集器-组页面的某个ID字段值,使得采集器被发现时可自动加入特定的采集器组

系统-采集器-配置页面:

  • 采集网口配置为采集流量的网口的正则表达式
    • 采集网口主要有两类:虚拟机直接与宿主机相连的虚拟网卡、KVM宿主机的物理网卡
    • 为避免采集不必要的网卡,请添加^强制匹配开头,例如:^(eth|tap).*
    • 注意:仅采集虚拟机连接宿主机网卡和宿主机连接物理交换机网卡的流量,不要采集宿主机内其他虚拟网卡流量,否则会导致采集流量重复、资源开销增大。
      • eth.* 或者 bond.*:采集KVM出接口(物理网卡)的流量。注意当有网卡汇聚配置时,配置 bond.* 而非 eth.*
      • tap.*:采集虚拟机的虚拟网卡的流量
    • 注意:青云私有云请按如下方法配置
      • eth.* 或者 bond.*:采集KVM出接口(物理网卡)的流量,请根据实际物理网卡名称配置。但是当KVM使用了硬件网卡直通或VXLAN offlloading能力时,并不是所有的流量都能在物理网卡上采集到,此时还需增加如下配置:
        • [0-9a-zA-Z]+_[0-9]{1,3}$: 青云直通网卡场景需要配置该接口,网卡名通常与物理网卡名称有相同的前缀,例如 ens1f0_44
        • vf.*:连到同一个子网的虚拟机网卡(名为MAC地址后4B)在一个bridge中,这个bridge中vf前缀的虚接口负责调用硬件网卡的vxlan封装能力,这个网口可认为是该bridge的出接口。这个接口的vf前缀后会跟着物理网卡名称的前缀,例如vfenp或者vfens
      • [0-9a-f]{8}$:采集虚拟机的虚拟网卡的流量,注意末尾加 $ 严格匹配 8 个字符
  • 虚拟机MAC解析默认配置为接口MAC即可,具体候选项含义为
    • 接口MAC:适用于大多数场景,通过tap口的MAC后5字节确定虚拟机MAC,第一字节忽略
    • 接口名称:Contrail采用此方式,tap口的名称后缀代表MAC地址的后5字节,同样第一字节忽略
      • 早期版本的青云私有云也要使用此方式,且只能获取到MAC地址后4字节。但是2020年接触的青云私有云已无此问题,直接可使用接口MAC
      • 青云环境如果使用直通网卡,仍然需要配置为接口名称来通过直通网卡的名称查询bridege fdb表获取MAC地址
    • 虚拟机XML:在某些版本华为私有云中,tap口的MAC和名称均和虚拟机实际MAC无关联,此时需要读取虚拟机的QEMU XML文件确定实际MAC
  • 隧道解封装配置为正确的SDN隧道协议,以展示虚拟网络链路追踪能力
    • 当KVM上使用VXLAN隧道封装时
      • 若未部署KVM上虚拟机内的容器采集器,或容器跨节点通信不使用隧道封装,需要配置KVM采集器隧道解封装参数为VXLAN
      • 若KVM上虚拟机运行容器、部署了容器采集器、且容器跨节点通信使用隧道时,需根据容器CNI隧道类型配置KVM采集器的隧道解封装参数为VXLAN-VXLANVXLAN-IPIP
    • 对于腾讯专有云(TCE)场景,需要配置为TCE GRE

#3. 安装 Agent

一般KVM环境需要客户自行将 agent 的 rpm/deb 包上传并安装到宿主机上。包含如下步骤:

# 将采集器 rpm/deb 包拷贝至计算节点 /tmp 目录下并安装
# Centos 系统操作系统用 rpm 文件,Debian 系列操作系统用 deb 文件
rpm -ivh  /tmp/deepflow-agent-1.0-XXXX.rpm
dpkg -i  /tmp/deepflow-agent-1.0-XXXX.deb

# 修改 /etc/deepflow-agent.yaml 文件中的 controller_ips,此为 DeepFlow 控制器IP
sed -ir 's#127.0.0.1#10.10.241.115#g' /etc/deepflow-agent.yaml

# 按需修改 deepflow-agent.yaml 中的 vtap-group-id-request

# 启动 deepflow-agent 服务并设置为开机启动
systemctl enable deepflow-agent && systemctl start deepflow-agent

# 检查服务正常运行
systemctl status deepflow-agent

# 杀死 deepflow-agent 并继续检查是否可恢复运行
pkill -9 deepflow-agent
systemctl status deepflow-agent
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19