centos

CentOS上Filebeat与Logstash联用指南

小樊
36
2025-11-05 19:24:26
栏目: 智能运维

CentOS上Filebeat与Logstash联用指南

1. 前提准备

确保CentOS系统已更新至最新版本,并安装了wgetrpm等基础工具。若未安装,可通过yum install -y wget rpm命令安装。

2. 安装Elastic官方YUM仓库

为确保Filebeat与Logstash版本兼容,需先添加Elastic官方YUM仓库:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo tee /etc/yum.repos.d/elasticsearch.repo <<EOF
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

3. 安装Filebeat与Logstash

通过YUM仓库安装最新稳定版本的Filebeat和Logstash:

sudo yum install -y filebeat logstash

4. 配置Filebeat

Filebeat的配置文件位于/etc/filebeat/filebeat.yml,需修改以下核心参数:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log  # 监控所有.log文件
  exclude_files: ['\.gz$']  # 排除压缩文件

output.logstash:
  hosts: ["localhost:5044"]  # Logstash地址
  # 若启用SSL加密,需取消以下注释并配置证书路径
  # ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]

5. 配置Logstash

Logstash的配置文件需存放在/etc/logstash/conf.d/目录下(推荐使用单独文件,如filebeat.conf),配置分为输入过滤输出三部分:

input {
  beats {
    port => 5044  # 监听Filebeat的端口
    # 若启用SSL,需取消以下注释并配置证书
    # ssl => true
    # ssl_certificate => "/etc/logstash/certs/logstash.crt"
    # ssl_key => "/etc/logstash/certs/logstash.key"
  }
}

filter {
  # 示例:解析Apache Common Log格式
  if [fileset][module] == "apache" and [fileset][name] == "access" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    date {
      match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]  # 解析日志中的时间戳
      target => "@timestamp"  # 覆盖默认的@timestamp字段
    }
    geoip {
      source => "clientip"  # 根据客户端IP添加地理位置信息
      target => "geoip"
    }
  }

  # 示例:清理冗余字段
  mutate {
    remove_field => ["message", "headers", "agent"]  # 删除不必要的字段
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]  # Elasticsearch地址
    index => "filebeat-%{+YYYY.MM.dd}"  # 动态生成索引名
    # 若启用认证,需取消以下注释并配置账号密码
    # user => "elastic"
    # password => "your_password"
  }

  # 调试时输出到控制台(生产环境建议关闭)
  stdout {
    codec => rubydebug  # 以易读格式显示数据
  }
}

6. 启动并启用服务

配置完成后,启动Filebeat和Logstash服务,并设置为开机自启:

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

# 启动Logstash
sudo systemctl start logstash
sudo systemctl enable logstash

7. 验证配置

7.1 检查服务状态

确保Filebeat和Logstash均处于运行状态:

sudo systemctl status filebeat
sudo systemctl status logstash

若状态显示为active (running),则表示服务启动成功。

7.2 查看Filebeat日志

通过日志确认Filebeat是否成功发送数据至Logstash:

sudo tail -f /var/log/filebeat/filebeat

若看到Successfully sent batch of events to logstash字样,说明连接正常。

7.3 查看Logstash日志

检查Logstash是否接收到数据并进行处理:

sudo tail -f /var/log/logstash/logstash-plain.log

若看到Pipeline startedReceived event等字样,表示数据传输正常。

7.4 验证Elasticsearch索引

通过Elasticsearch的_cat/indices接口查看是否生成了Filebeat索引:

curl -X GET "localhost:9200/_cat/indices?v"

若看到类似filebeat-2025.11.05的索引,说明数据已成功存储至Elasticsearch。

8. 常见问题排查

8.1 连接失败

8.2 数据未处理

8.3 性能瓶颈

通过以上步骤,即可在CentOS上完成Filebeat与Logstash的联用配置,实现日志的收集、处理与存储。根据实际需求,可调整输入路径、过滤规则及输出目标,构建更复杂的日志处理管道。

0
看了该问题的人还看了