暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ELK Stack 8 接入ElasticFlow

网工格物 2025-02-12
168

 

介绍

Netflow v5 v9 v10(IPFIX),支持大部分网络厂商及VMware的分布式交换机。

NetFlow是一种数据交换方式。Netflow提供网络流量的会话级视图,记录下每个TCP/IP事务的信息。当汇集起来时,它更加易于管理和易读。Netflow由Cisco创造。而IPFIX是Netflow v9的开放标准实现。

同NetFlow一样,sFlow是一种向采集器发送报告的推送技术。所不同的是,NetFlow是一种基于软件的技术,而sFlow则采用内置在硬件中的专用芯片,这种做法消除了路由器或交换机的CPU和内存的负担,但也牺牲了灵活性。

本教程修改了ElasticFlow 4版本,以支持 Elasticsearch 8 ,还更新了Logstash 7到最新版本,Geo IP/AS地址库到最新版本。

已在Elasticsearch 8.13上测试过

单机部署教程:https://songxwn.com/elk/

ELK系列文章:https://songxwn.com/categories/linux/ELK/

注:多谢袖子Seven 大佬提供的Kibana 模板和帮助。

各种Flow 类型

Flow名称
代表厂商
主要版本
备注
NetFlow
Cisco
V1、V5、V7、V8、V9
应用最广
sFlow
Foundry、HP、Alcatel、NEC、Extreme等
V4、V5
实时性较强,具备突出的第二~七层信息描述能力。对设备性能开销低。
NetStream
华为、华三
V5、V8、V9
与NetFlow较为类似
IPFIX
IETF标准规范
RFC 3917
以NetFlow V9为蓝本,公共标准协议
CFlowd
Juniper
V5、V8
厂商跟进力度不高

ElasticFlow

ElasticFlow 是基于Logstash 7的修改版本,支持Netflow、IPfix、Sflow,自带模板。但目前已闭源。

注意事项

  • • Docker网络使用主机模式,占用 2055、6343、4739端口。
  • • 本文章适用于接入现有的ES 8数据库。


使用Docker-compose部署

cd opt
git clone https://github.com/Songxwn/elastiflow.git
# 下载配置文件
cd opt/elastiflow
vim docker-compose.yml
# 修改配置文件,更改ES地址,账号、密码。
docker-compose pull
# 加载镜像
docker-compose up -d
# 启动镜像,静等几分钟。
ss -an | grep 2055
ss -an | grep 6343
ss -an | grep 4739
# 确认服务已启动。

配置文件示例

version: '3'
services:
elastiflow-logstash:
    image:songxwn/elastiflow-logstash:4.8.12
    container_name:elastiflow-logstash
    restart:'unless-stopped'
    network_mode:host
    environment:
      # JVM Heap size - this MUST be at least 3GB (4GB preferred)
      LS_JAVA_OPTS:'-Xms4g -Xmx4g'
      # ElastiFlow global configuration
      ELASTIFLOW_AGENT_ID:elastiflow
      ELASTIFLOW_GEOIP_CACHE_SIZE:16384
      ELASTIFLOW_GEOIP_LOOKUP:'true'
      ELASTIFLOW_ASN_LOOKUP:'true'
      ELASTIFLOW_OUI_LOOKUP:'false'
      ELASTIFLOW_POPULATE_LOGS:'true'
      ELASTIFLOW_KEEP_ORIG_DATA:'true'
      ELASTIFLOW_DEFAULT_APPID_SRCTYPE:'__UNKNOWN'
      # Name resolution option
      ELASTIFLOW_RESOLVE_IP2HOST:'false'
      ELASTIFLOW_NAMESERVER:'127.0.0.1'
      ELASTIFLOW_DNS_HIT_CACHE_SIZE:25000
      ELASTIFLOW_DNS_HIT_CACHE_TTL:900
      ELASTIFLOW_DNS_FAILED_CACHE_SIZE:75000
      ELASTIFLOW_DNS_FAILED_CACHE_TTL:3600
      ELASTIFLOW_ES_HOST:'http://127.0.0.1:9200'
      #ELASTIFLOW_ES_USER: 'elastic'
      #ELASTIFLOW_ES_PASSWD: 'changeme'
      ELASTIFLOW_NETFLOW_IPV4_PORT:2055
      ELASTIFLOW_NETFLOW_UDP_WORKERS:2
      ELASTIFLOW_NETFLOW_UDP_QUEUE_SIZE:4096
      ELASTIFLOW_NETFLOW_UDP_RCV_BUFF:33554432
      ELASTIFLOW_SFLOW_IPV4_PORT:6343
      ELASTIFLOW_SFLOW_UDP_WORKERS:2
      ELASTIFLOW_SFLOW_UDP_QUEUE_SIZE:4096
      ELASTIFLOW_SFLOW_UDP_RCV_BUFF:33554432
      ELASTIFLOW_IPFIX_UDP_IPV4_PORT:4739
      ELASTIFLOW_IPFIX_UDP_WORKERS:2
      ELASTIFLOW_IPFIX_UDP_QUEUE_SIZE:4096
      ELASTIFLOW_IPFIX_UDP_RCV_BUFF: 33554432

  • • ELASTIFLOW_ES_HOST 需要修改。
  • • ELASTIFLOW_ES_USER 需要修改,如果无认证,则不需要取消注释。
  • • ELASTIFLOW_ES_PASSWD 需要修改,如果无认证,则不需要取消注释。


索引模板创建

需要打开Kibana Web,在主菜单-Stack Management -开发工具执行。

PUT _index_template/template_
{
  "template": {
    "mappings": {
      "properties": {
        "client": {
          "type": "object",
          "properties": {
            "geo": {
              "type": "object",
              "properties": {
                "location": {
                  "type": "geo_point"
                }
              }
            }
          }
        },
        "server": {
          "type": "object",
          "properties": {
            "geo": {
              "type": "object",
              "properties": {
                "location": {
                  "type": "geo_point"
                }
              }
            }
          }
        }
      }
    }
  },
  "index_patterns": [
    "elastiflow-*"
  ],
  "allow_auto_create": true
}


Kibana 模板导入

模板下载:https://songxwn.com/file/elastiflow4.kibana.8.x.ndjson

需要打开Kibana Web,在主菜单-Stack Management -已保存对象导入。

交换机Sflow配置实例

Juniper

protocols sflow {
 polling-interval 20;
 sample-rate 1000;
 collector 10.204.32.46;
 interfaces ge-0/0/0.0;
}

MikroTik ROS 配置IPFIX

/ip traffic-flow
set cache-entries=1M enabled=yes interfaces=ether2
/ip traffic-flow target
add dst-address=2.2.2.2 src-address=1.1.1.1 v9-template-refresh=15 version=ipfix

ELK 自带插件-可不看

Logstash 自带配置示例

input {
  udp {
    port  => 2055
    codec => netflow
  }
}

Filebeat 配置示例

- module: netflow
  log:
    enabled: true
    var:
      netflow_host: 0.0.0.0
      netflow_port: 2055

[root@cncs ~]# filebeat modules enable netflow
Enabled netflow
[root@cncs ~]# filebeat modules list
Enabled:
netflow
Disabled:
activemq
......





参考

https://www.elastic.co/guide/en/logstash/current/plugins-codecs-netflow.html

https://www.elastic.co/guide/en/beats/filebeat/8.7/filebeat-module-netflow.html

https://www.eflytop.com/post/elk-netflow/

 


文章转载自网工格物,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论