【 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

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% 一次成功!

相关推荐
知乎的哥廷根数学学派2 小时前
基于多模态特征融合和可解释性深度学习的工业压缩机异常分类与预测性维护智能诊断(Python)
网络·人工智能·pytorch·python·深度学习·机器学习·分类
2301_780789662 小时前
高防 IP 的选择与配置确保业务稳定性
网络·网络协议·tcp/ip
willhuo3 小时前
基于xray的匿名、授权、IP白名单代理访问研究
服务器·网络·tcp/ip
qiuqyue3 小时前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
linux·运维·网络
无名3873 小时前
关于 VRF
网络·通信
YounGp_oo4 小时前
一次内网开发环境访问方式的改进实践:使用 FRP 替代远程桌面
网络·ssh·frp·内网穿透·开发环境
云安全干货局4 小时前
服务器被攻击后如何快速恢复?数据备份 + 应急响应手册
网络·网络安全·云服务器·弹性云服务器
猿饵块4 小时前
tcp--抓包--wireshark
网络·测试工具·wireshark
❆VE❆4 小时前
WebSocket与SSE深度对比:技术差异、场景选型及一些疑惑
前端·javascript·网络·websocket·网络协议·sse