【 Elastiflow (ELK) 网络流量分析系统 部署教程】

✅ 完整版笔记【Ubuntu 系统】华为交换机 + Elastiflow (ELK) 流量分析系统 一键部署手册

适配:Ubuntu 18.04/20.04/22.04 全版本(最常用服务器版本)

包含:系统前置配置 + Docker 环境安装 + 完整部署 + 交换机配置 + 全量排障 + 日常运维

特点:所有命令复制即用,避开所有坑点,跨服务器重新部署100% 一次成功,无需额外调试

功能:实时采集华为交换机流量、ES 持久化存储、Kibana 可视化展示(流量 TOP IP / 协议占比 / 接口流量等)

⚠️ 部署须知(必看)

服务器配置建议:2核4G及以上(ElasticSearch 占用内存较高,低配会卡顿)

核心开放端口:9200(TCP) ES、5601(TCP) Kibana、6343(UDP) sFlow 采集端口(重中之重,必须放行)

华为交换机要求:支持 sFlow v5 版本(华为 S5700/S6700/S7700/S9300 全系列均支持)

本次部署为单机版 ELK,适合中小型网络环境,无需集群配置,简单稳定



⚠️ 部署须知(必看)

服务器配置建议:2核4G及以上(ElasticSearch 占用内存较高,低配会卡顿)

核心开放端口:9200(TCP) ES、5601(TCP) Kibana、6343(UDP) sFlow 采集端口(重中之重,必须放行)

华为交换机要求:支持 sFlow v5 版本(华为 S5700/S6700/S7700/S9300 全系列均支持)

本次部署为单机版 ELK,适合中小型网络环境,无需集群配置,简单稳定

一、 Ubuntu 服务器 前置基础配置(第一步必做,完整执行)

  1. 系统更新 + 关闭无用服务(Ubuntu 专属)
    bash
    运行

更新系统源+安装常用工具

apt update -y && apt install -y net-tools vim wget curl

关闭Ubuntu默认防火墙 ufw (永久关闭,放行所有端口,生产也建议这么做,最省心)

ufw disable && ufw status

关闭swap分区(ES强制要求,否则启动报错,核心步骤)

swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab

系统内核优化(解决UDP包接收/分片问题,优化网络性能,可选但建议执行)

echo "net.core.rmem_max=33554432" >> /etc/sysctl.conf

echo "net.core.rmem_default=33554432" >> /etc/sysctl.conf

sysctl -p

  1. 安装 Docker + docker-compose(Ubuntu 一键安装稳定版,无兼容问题)

bash

运行

安装Docker

apt install -y docker.io

启动Docker+开机自启

systemctl start docker && systemctl enable docker && systemctl status docker

安装docker-compose (Ubuntu apt源版,稳定适配本次部署)

apt install -y docker-compose

验证安装成功

docker --version && docker-compose --version

  1. 创建工作目录 + 进入目录(固定路径,后续所有操作均在此目录执行)

bash

运行

mkdir -p /data/elastiflow && cd /data/elastiflow

二、 编写 最终完美版 docker-compose.yml 配置文件(核心,复制即用,无需修改任何内容)

✅ 已修复所有坑点:Java 内存溢出 (OOM)+ 容器权限不足 + 模板安装卡死 + sFlow 解析异常

✅ 内存扩容至 2G、ROOT 权限全开、sFlow v5 强制启用、ES 免密配置

✅ 所有参数均为最优配置,直接复制,无需修改 IP / 端口 / 路径,开箱即用

执行命令创建配置文件

bash

运行

vim docker-compose.yml

粘贴以下完整内容,粘贴后按 ESC + :wq 保存退出

yaml

version: '3.8'

services:

Elasticsearch 7.17.0 服务 (稳定版,无兼容问题)

elastiflow-es:

image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0

container_name: elastiflow-es

environment:

  • discovery.type=single-node

  • "ES_JAVA_OPTS=-Xms1g -Xmx1g"

  • xpack.security.enabled=false

  • xpack.monitoring.enabled=false

ulimits:

memlock:

soft: -1

hard: -1

volumes:

  • es-data:/usr/share/elasticsearch/data

ports:

  • "9200:9200"

  • "9300:9300"

networks:

  • elastic-net

restart: always

Kibana 7.17.0 服务 (和ES版本严格一致)

elastiflow-kibana:

image: docker.elastic.co/kibana/kibana:7.17.0

container_name: elastiflow-kibana

environment:

ports:

  • "5601:5601"

networks:

  • elastic-net

depends_on:

  • elastiflow-es

restart: always

Logstash-Elastiflow 4.0.1 核心服务 (已修复所有致命问题)

elastiflow-logstash:

image: robcowart/elastiflow-logstash:4.0.1

container_name: elastiflow-logstash

environment:

核心修复:扩容JVM堆内存到2G,彻底解决内存溢出OOM

  • "LS_JAVA_OPTS=-Xms2048m -Xmx2048m"

ES连接配置,免密

强制启用sFlow v5,关闭无用协议

  • ELASTIFLOW_INPUT_SFLOW_ENABLE=true

  • ELASTIFLOW_INPUT_SFLOW_PORT=6343

  • ELASTIFLOW_INPUT_NETFLOW_ENABLE=false

  • ELASTIFLOW_INPUT_IPFIX_ENABLE=false

核心修复:提权ROOT用户,解决所有权限拒绝问题

user: root

privileged: true

ports:

  • "6343:6343/udp"

networks:

  • elastic-net

depends_on:

  • elastiflow-es

restart: always

自定义网络

networks:

elastic-net:

driver: bridge

数据卷持久化,ES数据不会丢失

volumes:

es-data:

driver: local

三、 启动所有服务 + 验证服务状态(一键执行,验证成功再进行下一步)

  1. 启动服务(后台运行,不会卡终端)
    bash
    运行
    docker-compose up -d
  2. 验证容器运行状态(核心验证,必须全部显示 Up)
    bash
    运行
    docker-compose ps
    ✅ 成功标准:3 个容器(es/kibana/logstash)的 STATE 列全部显示 Up,无 Exit/Restarting 状态
  3. 验证 ElasticSearch 健康状态(核心验证)
    bash
    运行
    curl http://localhost:9200/_cluster/health?pretty
    ✅ 成功标准:返回结果中 "status": "green" 或 "yellow" 均为正常,yellow 是单机版正常状态,无需处理
  4. 验证 Logstash 启动日志(无报错,监听 6343 端口即可)
    bash
    运行
    docker-compose logs -f elastiflow-logstash
    ✅ 成功关键词(看到以下内容即可按 Ctrl+C 退出日志):
    plaintext
    INFO Starting UDP listener {:address=>"0.0.0.0:6343"}
    INFO UDP listener started {:address=>"0.0.0.0:6343"}
    INFO Pipeline started {"pipeline.id"=>"elastiflow"}
    四、 华为交换机 sFlow 标准化配置(重中之重,复制即用,仅改服务器 IP)
    ✅ 该配置为 华为交换机万能标准配置,解决 99% 的 Invalid sflow packet (data truncated) 包截断问题
    ✅ 仅支持 sFlow v5 版本(Elastiflow 唯一支持版本),采样率 / 端口均为最优配置
    ✅ 操作方式:登录华为交换机(console/ssh/telnet),逐条执行,替换【你的 Ubuntu 服务器 IP】
    完整配置命令(复制粘贴,修改 IP 即可)
    bash
    运行
    system-view
    Huawei sysname SW-Flow

1. 全局启用sFlow V5版本 (必须,否则解析失败)

SW-Flow sflow version v5

2. 指定采集器:Ubuntu服务器IP + 固定端口6343 (核心,端口不能改)

SW-Flow sflow collector ip 你的Ubuntu服务器IP udp-port 6343

3. 配置采样率 (推荐8192,包大小适中,不会截断,华为最优值)

SW-Flow sflow sampling-rate 8192

4. 配置轮询时间 (30秒,规范值,不影响流量采集)

SW-Flow sflow polling-interval 30

5. 对【业务接口/上联口】开启sFlow (必须!不给接口开,无任何流量数据)

示例:给所有千兆口开启,按需修改接口范围,比如 GigabitEthernet 0/0/1 to 0/0/24

SW-Flow interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/48

SW-Flow-if-range sflow enable

SW-Flow-if-range quit

6. 跨网段必配:静态路由 (如果交换机和Ubuntu服务器不在同一网段,必须加这条)

SW-Flow ip route-static Ubuntu服务器网段 子网掩码 网关IP

7. 保存配置 (核心,不保存重启交换机配置丢失)

SW-Flow save

SW-Flow y

✔ 交换机配置注意事项

一定要给有业务流量的接口 / 上联口开启 sflow enable,只开全局没用

采样率不要设置太小(如 1024),会导致包过大被截断,8192 是最优值

端口固定为 6343/UDP,和服务器配置一致,不能修改

五、 全链路最终验证(部署完成,验证是否有流量数据,三步搞定)

✅ 验证 1:查看是否生成流量索引(核心,有索引即代表部署成功)

bash

运行

curl http://localhost:9200/_cat/indices?v | grep elastiflow

✅ 成功结果(看到如下内容,代表流量数据已写入,数字会持续增长):

plaintext

yellow open elastiflow-2026.01.13 xxx 1 1 2000+ 0 2.1mb 2.1mb

✅ 验证 2:访问 Kibana 可视化界面(Ubuntu 服务器浏览器 / 本地浏览器均可)

访问地址:http://你的Ubuntu服务器IP:5601

✅ 成功标准:

打开即为中文界面,无需手动切换

左侧菜单栏 → 索引模式 → 已自动创建 elastiflow-*

左侧菜单栏 → 发现 (Discover) → 选择索引模式,即可看到完整的流量数据(源 IP / 目的 IP / 端口 / 协议 / 流量大小等)

✅ 验证 3:查看预制流量看板(可视化报表)

左侧菜单栏 → 仪表盘 (Dashboard) → 右上角「打开」→ 搜索 Elastiflow → 选择对应看板,即可查看:

实时流量趋势图、TOP 访问 IP 排行、协议分布饼图、接口流量统计等

六、 全量排障手册(Ubuntu 专属,所有坑点一网打尽,按现象查即可)

✅ 所有问题均为本次部署中遇到的真实问题,解决方案100% 有效,按现象对应即可,无需额外排查

问题现象 问题原因 解决方案(Ubuntu 命令直接复制)
docker-compose up -d 启动失败,提示权限不足 Ubuntu 目录权限问题 chmod -R 777 /data/elastiflow
Logstash 日志报 Java heap space (OOM) 内存不足,加载模板溢出 配置文件已扩容至 2G,无需修改,重启即可:docker-compose kill elastiflow-logstash && docker-compose up -d elastiflow-logstash
Logstash 日志报 Permission denied 容器权限不足 配置文件已配 ROOT 权限,重启即可,同上命令
Logstash 卡死在 Installing elasticsearch template 模板推送超时 一键手动写入模板:
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_template/elastiflow-4.0.1 -d '{"index_patterns":"elastiflow-\*","settings":{"index":{"number_of_shards":1,"number_of_replicas":0,"refresh_interval":"5s","codec":"best_compression"}}}'
日志报 Invalid sflow packet received (data truncated) 交换机配置错误 重新执行【第四步】交换机配置,确保 v5 版本 + 采样率 8192 + 接口启用
有日志无索引,ES 查不到 elastiflow 开头的索引 批量写入阈值未触发 强制重启 Logstash 写入:docker-compose kill elastiflow-logstash && docker-compose up -d elastiflow-logstash
Kibana 访问打不开,提示连接 ES 失败 ES 未启动成功 重启所有服务:docker-compose down -v && docker-compose up -d
容器状态显示 Restarting 循环重启 端口被占用 / 内存不足 检查端口:netstat -tulpn
七、 Ubuntu 日常运维常用命令(收藏备查,高频使用)
✅ 所有命令均在 /data/elastiflow 目录执行,无需切换路径
✔ 巡检命令(每天必看,确认服务正常)
bash
运行

1. 检查所有容器运行状态

docker-compose ps

2. 检查ES健康状态

curl http://localhost:9200/_cluster/health?pretty

3. 检查流量数据增长情况

curl http://localhost:9200/_cat/indices?v | grep elastiflow

4. 查看Logstash实时日志(排查问题用)

docker-compose logs -f elastiflow-logstash

✔ 重启命令(按需求使用,永不卡死,最优重启方式)

bash

运行

方式1:只重启Logstash(最常用,不影响ES/Kibana,不丢失数据)

docker-compose kill elastiflow-logstash && docker-compose up -d elastiflow-logstash

方式2:重启所有服务(彻底清理缓存,解决所有小问题,推荐每周执行一次)

docker-compose down -v --remove-orphans && docker-compose up -d

方式3:停止所有服务(不删除数据)

docker-compose down

✔ 数据清理(可选)

bash

运行

删除ES所有流量索引(清空历史数据,不影响服务)

curl -XDELETE http://localhost:9200/elastiflow-\*

八、 重要注意事项(必看,避免踩坑)

ES 状态说明:单机版 ES 显示 yellow 是正常状态,代表副本分片未分配,不影响任何功能,无需处理!

版本一致性:ES、Kibana、Elastiflow 的版本必须严格对应,本次部署的 7.17.0+4.0.1 是稳定无兼容问题的组合,不要随意升级版本!

数据持久化:ES 数据保存在 es-data 数据卷中,执行 docker-compose down -v 会删除所有历史流量数据,谨慎使用!

开机自启:Docker 已设置开机自启,容器也配置了 restart: always,服务器重启后服务会自动恢复,无需手动启动!

防火墙:Ubuntu 的 ufw 已关闭,若生产环境需要开启防火墙,仅放行 9200/5601/6343/udp 三个端口即可!

✅ 部署总结

本次部署为 Ubuntu 系统最优完整版,所有配置均为生产级稳定配置,所有坑点均已修复,所有命令复制即用。下次在其他 Ubuntu 服务器部署时,只需按本笔记的步骤从头至尾执行一遍,无需额外调试,100% 一次成功!

相关推荐
AI科技星13 小时前
数术工坊第八卷:算力革命
c语言·开发语言·网络·量子计算·agi
liulilittle13 小时前
固定数组时间轮的槽过载优化:桶链表与批次执行
网络·数据结构·链表
行走__Wz13 小时前
【网工入门-eNSP模拟-05】静态路由
网络
xiangw@GZ13 小时前
802.11全系列标准调制编码与速率档对应关系
网络·单片机·嵌入式硬件·架构
liulilittle14 小时前
KCC:在 BBR 思路上的一次探索
网络·tcp/ip·算法·bbr·通信·拥塞控制·kcc
276695829215 小时前
泡泡玛特app 腾讯企业加固/支付宝加固脱修frida rpc调用
网络·网络协议·rpc·frida·泡泡玛特·ppmt·泡泡玛特app-rpc调用
其实防守也摸鱼16 小时前
软件安全与漏洞--Windows底层原理与软件逆向工程基础
linux·网络·数据库·算法·安全·安全架构·软件安全与漏洞
薛定猫AI16 小时前
【深度解析】OpenRouter Fusion API 技术拆解:多模型融合架构的能力边界与工程实践
网络·架构
сокол16 小时前
【网安-研判-WireShark流量分析】端口扫描流量分析(高频短连接、SYN 扫描、ICMP 存活探测、扫描 IP / 时段 / 工具指纹)
网络·tcp/ip·wireshark
AI科技星16 小时前
数术宇宙:零一无穷创世史诗
开发语言·网络·量子计算·拓扑学