温馨提示×

Debian系统Filebeat与Logstash联调步骤

小樊
39
2025-10-24 07:41:42
栏目: 智能运维

Debian系统Filebeat与Logstash联调步骤

1. 环境准备

确保Debian系统已更新至最新版本,并安装wgetvim等基础工具(可选但推荐):

sudo apt update && sudo apt upgrade -y
sudo apt install wget vim -y

2. 安装Filebeat

通过Debian官方仓库安装Filebeat(推荐,便于后续更新):

sudo apt install filebeat -y

安装完成后,Filebeat默认配置文件位于/etc/filebeat/filebeat.yml,二进制文件位于/usr/share/filebeat

3. 安装Logstash

同样通过Debian官方仓库安装Logstash:

sudo apt install logstash -y

安装后,Logstash主配置目录为/etc/logstash,默认日志文件位于/var/log/logstash

4. 配置Filebeat输出至Logstash

编辑Filebeat配置文件/etc/filebeat/filebeat.yml,完成以下关键配置:

  • 启用日志输入:选择需要收集的日志类型(以系统日志为例),设置监控路径:
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/syslog       # 系统日志
        - /var/log/auth.log     # 认证日志
    
  • 配置Logstash输出:指定Logstash服务器的地址和端口(默认监听5044):
    output.logstash:
      hosts: ["localhost:5044"]  # 若Logstash在远程服务器,替换为"remote_ip:5044"
    
  • 可选优化:开启多线程发送(提升性能)、负载均衡(多Logstash节点):
    output.logstash:
      hosts: ["localhost:5044", "remote_ip:5044"]
      workers: 2                # 发送线程数
      loadbalance: true         # 负载均衡
    

5. 配置Logstash接收Filebeat数据

在Logstash中创建自定义配置文件(如/etc/logstash/conf.d/filebeat.conf),定义输入→过滤→输出管道:

  • 输入配置:监听Filebeat的Beats协议(端口5044):
    input {
      beats {
        port => 5044
      }
    }
    
  • 过滤配置(可选):使用Grok插件解析日志(以系统日志为例):
    filter {
      if [fileset][module] == "system" {
        grok {
          match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{DATA:program}(?:\[%{POSINT:pid}\])?: %{GREEDYDATA:message}" }
        }
        date {
          match => [ "timestamp", "MMM dd HH:mm:ss", "ISO8601" ]
        }
      }
    }
    
  • 输出配置:将处理后的数据发送至Elasticsearch(需提前安装并运行):
    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        index => "filebeat-%{+YYYY.MM.dd}"  # 按日期生成索引
      }
      stdout { codec => rubydebug }         # 控制台输出(调试用,生产环境可注释)
    }
    

6. 启动并启用服务

依次启动Filebeat和Logstash,并设置为开机自启:

# 启动Logstash(需先启动,否则Filebeat无法连接)
sudo systemctl start logstash
sudo systemctl enable logstash

# 启动Filebeat
sudo systemctl start filebeat
sudo systemctl enable filebeat

7. 验证联调结果

  • 检查服务状态:确认Filebeat和Logstash均正常运行:
    sudo systemctl status filebeat
    sudo systemctl status logstash
    
  • 查看Filebeat日志:确认日志是否成功发送至Logstash:
    sudo journalctl -u filebeat -f
    
  • 查看Logstash日志:确认是否接收到Filebeat数据:
    sudo tail -f /var/log/logstash/logstash-plain.log
    
  • 检查Elasticsearch索引:若配置了Elasticsearch输出,可通过以下命令查看生成的索引:
    curl -X GET "localhost:9200/_cat/indices?v"
    
    应能看到类似filebeat-2025.10.24的索引(日期随当前时间变化)。

8. 常见问题排查

  • 连接失败:检查Filebeat与Logstash的网络连通性(pingtelnet),确认端口5044是否开放(sudo ufw allow 5044)。
  • 配置语法错误:使用以下命令测试Filebeat配置:
    sudo filebeat test config -e
    
    测试Logstash配置:
    sudo logstash -f /etc/logstash/conf.d/filebeat.conf --config.test_and_exit
    
  • 日志无输出:检查Filebeat输入路径是否存在日志文件,确认Logstash过滤规则是否匹配日志格式。

通过以上步骤,即可完成Debian系统下Filebeat与Logstash的联调,实现日志的收集、处理与存储。

0