内容简介:NetFLOW / sFLOW 流量报告:FastNetMon + InfluxDB + Grafana
最近稍微有点时间折腾了下 Cisco 的三层交换,尝试搭建了一套数据中心用的流量统计/监控/报告系统。过程不是很复杂,但是也只算利用了一套高级软件组合的一点点功能。之后打算继续研究更多的功能实现,不过也要看有没有时间了…
准备工作
首先确认出口路由设备支持 netflow/sflow 的对应版本。一般 Cisco 的路由器或者三层交换都是支持的。
然后准备一个常见的 Linux 系统,虚拟机或者物理机都可以。
出口路由设备能够连通到该 Linux 系统,并且 flow collector 设置到该 Linux 系统的 IP 地址和对应端口。
FastNetMon
安装 fastnetmon,只需要一条简单的脚本命令。
然后将所有要监控的网段加入 /etc/networks_list
。一行一个,例如:
10.1.0.0/16 192.168.254.0/24 8.8.0.0/16
按照安装文档打开两个终端,分别启动主进程和客户端
/opt/fastnetmon/fastnetmon
/opt/fastnetmon/fastnetmon_client
如果没有问题,应该在客户端上可以看到收到的 flow 数据。
先关闭 fastnetmon 进程,修改配置文件打开 Graphite 支持:
graphite = on graphite_host = 127.0.0.1 graphite_port = 2003 graphite_prefix = fastnetmon
InfluxDB
安装 InfluxDB,官方提供了各种包管理器的安装方式。
配置文件一般位于 /etc/influxdb/influxdb.conf
,需要根据环境做安全相关设置(侦听地址、端口、鉴权、etc)并打开 Graphite Simulation
[[graphite]] enabled = true bind-address = "127.0.0.1:2003" database = "flow_dc1" protocol = "tcp" consistency-level = "one" name-separator = "." # batch-size / batch-timeout requires InfluxDB >= 0.9.3 batch-size = 5000 # will flush if this many points get buffered batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit templates = [ "fastnetmon.hosts.* app.measurement.cidr.direction.function.resource", "fastnetmon.networks.* app.measurement.cidr.direction.resource", "fastnetmon.total.* app.measurement.direction.resource" ]
顺序重启 InfluxDB 和 fastnetmon。检查 flow 数据是否记录到 InfluxDB:
$ influx Connected to http://localhost:8086 version 1.2.4 InfluxDB shell version: 1.2.4 > use flow_dc1 Using database flow_dc1 > select mean(value) from networks where direction = 'incoming' and resource = 'bps' group by * name: networks tags: app=fastnetmon, cidr=10_1_0_0_24, direction=incoming, resource=bps time mean ---- ---- 0 4735.049632696411
Grafana
Grafana 是一款非常强大且易用的数据可视化工具。 安装 Grafana 然后修改配置文件的必要部分,配置文件一般位于 /etc/grafana/grafana.ini
。
完成后重启 Grafana,将浏览器指向 Grafana 的 HTTP 服务器地址即可看到登录界面。如果内部使用的话,建议关闭匿名访问和注册功能。
使用默认的 admin
/ admin
登录,按照引导完成配置、添加数据源(Data source),数据源即是 InfluxDB 的 HTTP API 地址。如果 Grafana 中限制了数据源白名单,需要将 InfluxDB 的 HTTP API 地址和端口加到白名单里。
添加面板、Graph,在 Graph 编辑模式里写入类似这样的查询语句:
SELECT mean("value") FROM "networks" WHERE "direction" = 'incoming' AND "resource" = 'bps' AND "cidr" =~ /^10_1_0_0_16/ AND $timeFilter GROUP BY time($interval) fill(previous)
即可看到有图表出现。根据需求完善查询语句和图表配置即可简单实现各种可视化效果。例如流量和数据包的实时报告:
总结
通过配合 FastNetMon,InfluxDB 和 Grafana 即可快速实现一套基于 NetFLOW / sFLOW 的流量统计报告系统。但是 FastNetMon 的功能远不止流量统计,Grafana 也有大量插件和灵活的用法可以满足更多需求。如果配置合理,此方案也可适用于 40Gbps+ 接入的中型数据中心且成本低廉。以及——
- InfluxDB 真的很快!
- Grafana 的图表真的很省资源!
- Chronograph 卡死了我的浏览器!(i7-7700K / Chrome)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 云安全 报告显示:流量型攻击依旧是企业梦魇
- 安全报告 | 从恶意流量看2018十大互联网安全趋势
- 科普:什么是上行流量什么是下行流量
- 混淆加密流量规避检测:黑客利用加密流量趋势明显
- 还为模拟流量测试发愁吗?!滴滴开源RDebug流量回放工具!
- 利用最新Flash漏洞,通过“流量宝”对流量从业者的攻击活动
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。