ELK Stack 8 接入ElasticFlow

介绍

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部署

text 复制代码
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
# 确认服务已启动。
配置文件示例
yaml 复制代码
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 -开发工具执行。

text 复制代码
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

text 复制代码
protocols sflow {
 polling-interval 20;
 sample-rate 1000;
 collector 10.204.32.46;
 interfaces ge-0/0/0.0;
}

MikroTik ROS 配置IPFIX

text 复制代码
/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/

相关推荐
zzzzzz31011 小时前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode11 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220701 天前
如何搭建本地yum源(上)
运维
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz4 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
网络研究院4 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理