NetFlow
NetFlow 采集器可以用来可视化和监控已开启 NetFlow 的设备,并将日志采集到观测云,帮助监控分析 NetFlow 各种异常情况。
什么是 NetFlow¶
NetFlow 是最广泛使用的流量数据统计标准,由 Cisco 开发,用于监控和记录进出接口的所有流量。NetFlow 分析它收集的流量数据,以提供关于流量和流量的可见性,并跟踪流量从何处来、流向何处以及在任何时候生成的流量。记录的信息可用于使用情况监视、异常检测和其他各种网络管理任务。
目前 Datakit 支持以下协议:
- netflow5
- netflow9
- sflow5
- ipfix
配置¶
前置条件¶
- 支持 NetFlow 功能的设备并且已开启 NetFlow 功能。每个设备的开启方法不尽相同,建议参考官方文档。例如:在 Cisco ASA 上开启 NetFlow
进入 DataKit 安装目录下的 conf.d/netflow
目录,复制 netflow.conf.sample
并命名为 netflow.conf
。示例如下:
[[inputs.netflow]]
source = "netflow"
namespace = "namespace"
#[[inputs.netflow.listeners]]
# flow_type = "netflow9"
# port = 2055
[[inputs.netflow.listeners]]
flow_type = "netflow5"
port = 2056
#[[inputs.netflow.listeners]]
# flow_type = "ipfix"
# port = 4739
#[[inputs.netflow.listeners]]
# flow_type = "sflow5"
# port = 6343
[inputs.netflow.tags]
# some_tag = "some_value"
# more_tag = "some_other_value"
配置好后,重启 DataKit 即可。
目前可以通过 ConfigMap 方式注入采集器配置来开启采集器。
日志¶
以下是一个日志示例:
{
"flush_timestamp":1692077978547,
"type":"netflow5",
"sampling_rate":0,
"direction":"ingress",
"start":1692077976,
"end":1692077976,
"bytes":668,
"packets":1588,
"ether_type":"IPv4",
"ip_protocol":"TCP",
"device":{
"namespace":"namespace"
},
"exporter":{
"ip":"10.200.14.142"
},
"source":{
"ip":"130.240.103.204",
"port":"4627",
"mac":"00:00:00:00:00:00",
"mask":"130.240.96.0/20"
},
"destination":{
"ip":"152.222.36.168",
"port":"424",
"mac":"00:00:00:00:00:00",
"mask":"152.0.0.0/8"
},
"ingress":{
"interface":{
"index":0
}
},
"egress":{
"interface":{
"index":0
}
},
"host":"MacBook-Air-2.local",
"next_hop":{
"ip":"20.104.52.139"
}
}
解释如下:
- Root/NetFlow 节点
字段 | 说明 |
---|---|
flush_timestamp | 上报时间 |
type | 协议 |
sampling_rate | 采样频率 |
direction | 方向 |
start | 开始时间 |
end | 结束时间 |
bytes | 传输字节数 |
packets | 传输包数量 |
ether_type | 以太网类型(IPv4/IPv6) |
ip_protocol | IP 协议(TCP/UDP) |
device | 设备信息节点 |
exporter | Exporter 信息节点 |
source | Flow 来源端信息节点 |
destination | Flow 去向端信息节点 |
ingress | 入口网关信息节点 |
egress | 出口网关信息节点 |
host | Collector 的 Hostname |
tcp_flags | TCP 标记 |
next_hop | Next_Hop 属性信息节点 |
device
节点
字段 | 说明 |
---|---|
namespace | 命名空间 |
exporter
节点
字段 | 说明 |
---|---|
ip | Exporter 的 IP |
source
节点
字段 | 说明 |
---|---|
ip | 来源端的 IP 地址 |
port | 来源端的端口 |
mac | 来源端的 MAC 地址 |
mask | 来源端的网络掩码 |
destination
节点
字段 | 说明 |
---|---|
ip | 去向端的 IP 地址 |
port | 去向端的端口 |
mac | 去向端的 MAC 地址 |
mask | 去向端的 IP 网络掩码 |
ingress
节点
字段 | 说明 |
---|---|
interface | 网口编号 |
egress
节点
字段 | 说明 |
---|---|
interface | 网口编号 |
next_hop
节点
字段 | 说明 |
---|---|
ip | Next_Hop 属性中去往目的地的下一跳 IP 地址 |
指标集¶
以下所有数据采集,默认会追加名为 host
的全局 tag(tag 值为 DataKit 所在主机名),也可以在配置中通过 [inputs.netflow.tags]
指定其它标签:
Info
Netflow 采集的数据,存放在日志类(L
)数据中。
netflow
¶
Using source
field in the config file, default is default
.
- 标签
Tag | Description |
---|---|
host |
Hostname. |
ip |
Collector IP address. |
- 指标列表
Metric | Description | Type | Unit |
---|---|---|---|
bytes |
Flow bytes. | int | B |
dest_ip |
Flow destination IP. | string | - |
dest_port |
Flow destination port. | string | - |
device_ip |
NetFlow exporter IP. | string | - |
ip_protocol |
Flow network protocol. | string | - |
message |
The text of the logging. | string | - |
source_ip |
Flow source IP. | string | - |
source_port |
Flow source port. | string | - |
status |
The status of the logging, only supported info/emerg/alert/critical/error/warning/debug/OK/unknown . |
string | - |
type |
Flow type. | string | - |