Debian下Filebeat如何监控网络
导读:Debian下使用 Filebeat 进行网络监控的正确路径 一、先明确监控目标与工具边界 Filebeat 的定位是“日志/指标收集与转发”,本身不直接抓包。要做“网络流量”层面的可观测,通常有三种做法: 让 Packetbeat(E...
Debian下使用 Filebeat 进行网络监控的正确路径
一、先明确监控目标与工具边界
- Filebeat 的定位是“日志/指标收集与转发”,本身不直接抓包。要做“网络流量”层面的可观测,通常有三种做法:
- 让 Packetbeat(Elastic 的专用网络抓包器)采集网络层/传输层流量,再由 Filebeat 转发到 Elasticsearch/Kibana;
- 收集系统/应用产生的“网络相关日志”(如 iptables/nftables 日志、Nginx/HAProxy 访问日志),用 Filebeat 模块或自定义输入读取;
- 若目标是“网络性能指标/连接状态”,使用 system 模块采集 TCP/UDP 连接、重传等指标,而非抓包。
- 因此,若你确实需要“抓包级”的可视化与统计,请部署并启用 Packetbeat;Filebeat 负责采集与输出,不负责原始流量抓取。
二、方案一 Packetbeat 抓包并由 Filebeat 转发(抓包级监控)
- 安装 Filebeat(示例为 7.x 仓库,请与集群版本匹配):
- sudo apt update & & sudo apt install filebeat -y
- 安装并启用 Packetbeat(与 Filebeat 版本保持一致):
- sudo apt install packetbeat -y
- 启用并配置 Packetbeat(示例:抓取常见服务端口,输出到本机 Logstash/Elasticsearch)
- 启用模块:sudo filebeat modules enable packetbeat
- 编辑模块配置:sudo nano /etc/filebeat/modules.d/packetbeat.yml
- 配置网络接口:例如 interfaces.device: any(生产环境建议指定具体网卡,如 eth0)
- 配置协议与端口:在 protocols 下启用 dns、http、tls、icmp、mysql、postgresql、redis、thrift 等,并设置对应的 ports
- 示例(仅示意):
- protocols:
- dns: ports: [53]
- http: ports: [80, 8080, 8000, 5000, 5601]
- tls: ports: [443, 8443]
- protocols:
- 配置输出(二选一或同时配置)
- 输出到 Logstash(推荐做解析与丰富):
- output.logstash:
- hosts: [“localhost:5044”]
- output.logstash:
- 直接输出到 Elasticsearch(需开启安全时补充认证):
- output.elasticsearch:
- hosts: [“localhost:9200”]
- output.elasticsearch:
- 输出到 Logstash(推荐做解析与丰富):
- 启动服务:
- sudo systemctl enable --now packetbeat
- sudo systemctl enable --now filebeat
- 验证与可视化
- 查看服务状态:sudo systemctl status packetbeat filebeat
- 查看日志:sudo journalctl -u packetbeat -f
- 在 Kibana 的 Discover/仪表板 中查看 Packetbeat 自带的可视化与指标(如 DNS 查询、HTTP 请求时延、TLS 握手失败等)。
三、方案二 收集网络相关日志(无需抓包)
- 场景 A:采集 iptables/nftables 日志
- 配置规则将日志写入文件(如 /var/log/iptables.log),确保 rsyslog 对该文件具备读取权限
- Filebeat 输入示例(/etc/filebeat/filebeat.yml):
- filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/iptables.log fields: log_type: firewall
- type: log
enabled: true
paths:
- processors:
- dissect: tokenizer: “%{ timestamp} %{ host} %{ chain} %{ rule} %{ src_ip} :%{ src_port} -> %{ dst_ip} :%{ dst_port} %{ protocol} %{ action} ” field: “message” target_prefix: “fw”
- filebeat.inputs:
- 输出到 Elasticsearch 或 Logstash(同上)
- 场景 B:采集 Nginx/HAProxy 访问日志
- 启用对应模块并指向日志路径:
- sudo filebeat modules enable nginx
- sudo nano /etc/filebeat/modules.d/nginx.yml(设置 access.log 与 error.log 路径)
- 输出到 Elasticsearch 或 Logstash(同上)
- 启用对应模块并指向日志路径:
- 启动与验证
- sudo systemctl enable --now filebeat
- 在 Kibana 中查看 Discover 与模块仪表板(如 Nginx 访问统计、状态码分布等)。
四、方案三 采集系统网络指标(连接/重传等)
- 启用 system 模块 获取 TCP/UDP 连接、重传、套接字等指标:
- sudo filebeat modules enable system
- sudo nano /etc/filebeat/modules.d/system.yml(可按需开启 metrics.enabled: true)
- 输出到 Elasticsearch 或 Logstash(同上)
- 在 Kibana 中查看 Metrics/仪表板 的系统网络指标视图。
五、排错与优化要点
- 版本匹配:Filebeat、Packetbeat、Elasticsearch、Kibana 版本需一致或兼容
- 权限与能力:
- 抓包需要特权,确保 Packetbeat 以具备 CAP_NET_RAW 能力的用户运行(常见做法是 root 或 setcap)
- 日志读取需保证 Filebeat 对日志文件有 读权限(如加入 adm 组或调整权限)
- 资源与性能:
- 抓包会带来 CPU/内存/磁盘 I/O 开销,生产环境建议限定网卡、采样或 BPF 过滤表达式
- 合理设置 bulk_max_size、worker、queue.mem.events 等输出参数,避免堆积
- 安全与网络:
- 开启 TLS 加密与 认证(xpack.security.enabled: true 时)
- 防火墙放行 Logstash/Elasticsearch 端口(如 5044、9200、5601)
- 配置校验与热加载:
- 校验配置:sudo filebeat test config -e
- 查看日志:sudo journalctl -u filebeat -f 或 tail -f /var/log/filebeat/filebeat
以上路径可覆盖“抓包级流量”“网络日志”“系统网络指标”三大类需求:需要“流量内容/协议分析”时选 Packetbeat;需要“访问/安全事件审计”时选“日志收集”;需要“连接/重传等性能指标”时选“system 模块”。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian下Filebeat如何监控网络
本文地址: https://pptw.com/jishu/754261.html
