Elastic Agent采集NetFlow日志数据

NetFlow是一种网络流量分析技术,可以用于监测、分析和诊断网络流量,可以帮助管理员实现对网络流量的实时监控和分析,并提高网络性能和安全性。本文通过Kibana中的Fleet Server管理Elastic Agent采集的NetFlow数据,并将NetFlow数据输出到Kibana中进行数据分析。

名词解释

名词

说明

Fleet

Elasticsearch中的一个功能强大的集中式管理解决方案,集中管理Agent服务。

Fleet Agent

轻量级数据采集代理,负责采集源端数据。

Fleet Agent可以在多个操作系统上运行,并且可以收集多种类型的数据。

Fleet Server

负责将Agent采集的源端数据传输到Elasticsearch。

准备环境

  • 创建阿里云Elasticsearch实例,具体操作请参见创建阿里云Elasticsearch实例。本文以Elasticsearch 8.5版本为例。

  • 创建ECS实例,且该ECS实例与Elasticsearch实例处于同一专有网络下。具体操作请参见自定义购买实例

    说明

    ECS实例作为源端服务器,Elastic Agent会采集ECS实例上的NetFlow数据。

创建代理策略并添加集成

步骤一:创建代理策略

  1. 登录Kibana控制台。具体操作,请参见登录Kibana控制台

  2. 单击image.png > Management > Fleet

  3. Fleet页面,单击代理策略页签。

  4. 单击创建代理策略,在创建代理策略控制面板中配置代理策略。

    1. 输入代理策略名称netflow-log。

    2. 取消选中收集系统日志和指标

    3. 单击高级选项,在代理监测区域,取消选择中收集代理日志收集代理指标

      image.png
      说明

      本场景仅采集NetFlow Records日志,因此取消选中收集系统日志和指标和代理的自身数据。

  5. 配置完成后,在页面右下角单击创建代理策略

步骤二:创建Fleet Server集成

  1. Fleet页面的代理策略页签,单击创建的代理策略netflow-log

  2. 集成页签中,单击添加集成

  3. 浏览集成页签,在搜索框中搜索Fleet Server,并单击Fleet Server

  4. 安装Fleet Server集成。

    1. Fleet Server页面,单击设置页签。

    2. 单击安装Fleet Server资产,在弹出的对话框中单击安装Fleet Server

      说明

      安装集成后,设置页签会显示集成的版本。

  5. 在页面右上角,单击添加Fleet Server

  6. 添加Fleet Server集成页面,输入集成名称,选择代理策略为netflow-log

  7. 在页面右下角,单击保存并继续,在弹出的对话框中单击稍后添加Elastic代理

步骤三:创建NetFlow集成

  1. 在代理策略netflow-log集成页签中,单击添加集成

  2. 浏览集成页签,在搜索框中搜索NetFlow Records,并单击NetFlow Records

  3. 安装NetFlow Records集成。

    1. NetFlow Records页面,单击设置页签。

    2. 单击安装NetFlow Records资产,在弹出的对话框中单击安装NetFlow Records

      说明

      安装集成后,设置页签会显示集成的版本。

  4. 在页面的右上角,单击添加NetFlow Records

  5. 添加NetFlow Records集成页面,配置集成。

    1. 集成配置区域,输入集成名称netflow-1。

    2. 单击Collect NetFlow logs后面的更改默认值,输入UDP监听地址为0.0.0.0,UDP端口保持默认的2055

      image.png

    3. 要将此集成添加到什么位置区域,在Existing hosts页签下,选择代理策略为netflow-log

  6. 配置完成后,在页面右下角单击保存并继续,在弹出的对话框中单击稍后添加Elastic代理

添加Agent并启动NetFlow服务

步骤一:设置Fleet服务器主机

  1. 登录Kibana控制台。具体操作,请参见登录Kibana控制台

  2. 单击image.png > Management > Fleet

  3. Fleet页面,单击设置页签,配置Fleet。

    1. Fleet服务器主机区域,单击编辑主机

    2. Fleet服务器主机控制面板中,输入源端的私网地址,格式为https://<私网IP>:<端口>,例如https://172.16.*.***:8220

      说明

      本文私网IP为ECS实例的主私网IP。更多配置信息,请参见Fleet Server hosts

    3. 输出区域,在操作列单击image.png

    4. 编辑输出控制面板中,输入Elasticsearch实例的私网地址,格式为http://<私网地址>:<端口>,例如http://es-cn-uqm3auln80001****.elasticsearch.aliyuncs.com:9200

    5. 单击保存并应用设置,在弹出的对话框中单击保存并部署

步骤二:添加Elastic Agent

为Fleet Server添加一个Elastic Agent。

说明

如果您需要采集多个服务器的NetFlow流量信息,可以多次执行以下步骤,在一个Fleet Server中添加多个代理,每个代理采集各自服务器中的NetFlow数据,NetFlow数据由Fleet Server统一管理。

  1. 单击image.png > Management > Fleet

  2. 单击代理策略页签。

  3. 在代理策略netflow-log的操作列,选择image.png > 添加代理

  4. 添加代理控制面板,在为Fleet服务器选择策略区域,默认选择代理策略为netflow-log

  5. 为安全选择部署模式区域,默认选中快速启动

  6. 添加您的Fleet服务器主机区域,单击右侧的添加主机

  7. 生成服务令牌区域,单击生成服务令牌

  8. 将Fleet服务器安装到集中式主机区域,复制自动生成的代码块,并将代码在ECS实例中执行。

    image.png

    代码执行完毕后,如果看到Successfully 字样,表明ECS服务器上成功安装并启动Elastic Agent。

步骤三:配置NetFlow服务

本文使用softflowd生成Netflow日志,在ECS实例中执行以下代码启动softflowd。

  1. 下载softflowd源码包。

    wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/softflowd/softflowd-0.9.9.tar.gz
  2. 安装libpcap-devel环境。

    yum install libpcap-devel
  3. 编译并安装softflowd。

    tar -xvf softflowd-0.9.9.tar.gz
    cd softflowd-0.9.9
    ./configure 
    make
    make install
  4. 运行softflowd。

    nohup softflowd -v 9 -D -i eth0 -t maxlife=1 -n localhost:2055 >/dev/null 2>&1 &

查看数据

您可以通过以下三种方法查看NetFlow数据:

  • 方法一:通过Dashboards查看NetFlow数据

    1. 单击image.png > Management > Fleet

    2. Fleet页面,单击数据流页签,Netflow相关数据已显示在数据集列表中。

    3. 在目标数据集的操作列,选择image.png > 查看仪表板,选择要查看的信息。例如选择[Logs Netflow] Overview

  • 方法二:通过Discovery查看索引数据

    单击image.png > Analytics > Discover,在Discovery中查看数据。

  • 方法三:通过kibana查询数据

    1. 单击image.png > Management > 开发工具

    2. 执行如下命令,查看NetFlow相关数据。

      GET logs-netflow.log-default/_search