温馨提示×

Debian下Filebeat如何监控网络

小樊
43
2025-11-24 04:14:25
栏目: 智能运维

Debian下使用 Filebeat 进行网络监控的正确路径

一、先明确监控目标与工具边界

  • Filebeat 的定位是“日志/指标收集与转发”,本身不直接抓包。要做“网络流量”层面的可观测,通常有三种做法:
    1. Packetbeat(Elastic 的专用网络抓包器)采集网络层/传输层流量,再由 Filebeat 转发到 Elasticsearch/Kibana
    2. 收集系统/应用产生的“网络相关日志”(如 iptables/nftables 日志、Nginx/HAProxy 访问日志),用 Filebeat 模块或自定义输入读取;
    3. 若目标是“网络性能指标/连接状态”,使用 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]
    • 配置输出(二选一或同时配置)
      • 输出到 Logstash(推荐做解析与丰富):
        • output.logstash:
          • hosts: [“localhost:5044”]
      • 直接输出到 Elasticsearch(需开启安全时补充认证):
        • output.elasticsearch:
          • hosts: [“localhost:9200”]
    • 启动服务:
      • sudo systemctl enable --now packetbeat
      • sudo systemctl enable --now filebeat
  • 验证与可视化
    • 查看服务状态:sudo systemctl status packetbeat filebeat
    • 查看日志:sudo journalctl -u packetbeat -f
    • KibanaDiscover/仪表板 中查看 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
      • processors:
        • dissect: tokenizer: “%{timestamp} %{host} %{chain} %{rule} %{src_ip}:%{src_port} -> %{dst_ip}:%{dst_port} %{protocol} %{action}” field: “message” target_prefix: “fw”
    • 输出到 Elasticsearch 或 Logstash(同上)
  • 场景 B:采集 Nginx/HAProxy 访问日志
    • 启用对应模块并指向日志路径:
      • sudo filebeat modules enable nginx
      • sudo nano /etc/filebeat/modules.d/nginx.yml(设置 access.logerror.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 端口(如 504492005601
  • 配置校验与热加载:
    • 校验配置:sudo filebeat test config -e
    • 查看日志:sudo journalctl -u filebeat -f 或 tail -f /var/log/filebeat/filebeat

以上路径可覆盖“抓包级流量”“网络日志”“系统网络指标”三大类需求:需要“流量内容/协议分析”时选 Packetbeat;需要“访问/安全事件审计”时选“日志收集”;需要“连接/重传等性能指标”时选“system 模块”。

0