centos

CentOS Filebeat与Logstash配合使用教程

小樊
35
2025-09-30 18:22:18
栏目: 智能运维

CentOS下Filebeat与Logstash配合使用教程

1. 准备工作

确保CentOS系统已联网,且具备rootsudo权限。本教程基于Elastic Stack 7.x版本(兼容性最佳),需提前安装Java 8及以上环境(Logstash依赖Java运行)。

2. 安装Elastic YUM仓库

Elastic官方提供了YUM仓库,用于便捷安装Filebeat、Logstash等组件。执行以下命令添加仓库:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo tee /etc/yum.repos.d/elasticsearch.repo <<EOF
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.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,需修改以下内容:

4.1 启用日志输入

默认监控/var/log/*.log(系统日志),可根据需求调整路径(如Nginx日志/var/log/nginx/*.log):

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log

4.2 设置输出到Logstash

将Filebeat收集的日志发送至Logstash,默认监听localhost:5044(需与Logstash输入端口一致):

output.logstash:
  hosts: ["localhost:5044"]

4.3 可选:添加自定义字段(便于后续检索)

为日志事件添加environment(环境)、application(应用)等标签,提升查询效率:

fields:
  environment: production
  application: myapp
fields_under_root: true  # 将自定义字段提升至事件顶层

5. 配置Logstash

Logstash的配置文件需新建在/etc/logstash/conf.d/目录下(推荐),例如创建filebeat.conf

sudo vi /etc/logstash/conf.d/filebeat.conf

配置文件分为**Input(输入)、Filter(过滤)、Output(输出)**三部分:

5.1 输入配置

接收Filebeat发送的Beats协议数据(端口需与Filebeat输出端口一致):

input {
  beats {
    port => 5044
  }
}

5.2 过滤配置(可选但推荐)

使用Grok插件解析非结构化日志(如Apache/Nginx日志),提取关键字段(如时间、IP、请求方法、状态码等):

filter {
  # 解析Apache Common Log Format(需根据实际日志格式调整)
  if [fileset][module] == "apache" and [fileset][name] == "access" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    # 解析时间戳并转换为Elasticsearch支持的格式
    date {
      match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
    }
    # 添加地理位置信息(基于客户端IP)
    geoip {
      source => "clientip"
      target => "geoip"
      database => "/usr/share/logstash/vendor/geoip/GeoLite2-City.mmdb"  # 需下载GeoIP数据库
    }
  }
  # 通用JSON解析(若日志为JSON格式)
  else if [message] =~ /^\s*\{.*\}\s*$/ {
    json {
      source => "message"
      target => "parsed_json"
    }
  }
}

5.3 输出配置

将处理后的日志发送至Elasticsearch,索引名称按日期分割(如filebeat-2025.09.30):

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "filebeat-%{+YYYY.MM.dd}"
    manage_template => false  # 禁用自动生成模板(可选)
  }
  # 输出到控制台(调试用,正式环境可注释)
  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均处于active (running)状态:

sudo systemctl status filebeat
sudo systemctl status logstash

7.2 查看Filebeat日志

若Filebeat未正常发送数据,可通过以下命令查看日志:

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

7.3 查看Logstash日志

若Logstash未正确处理数据,检查其日志:

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

7.4 验证Elasticsearch索引

通过Elasticsearch的_cat/indices接口查看是否生成filebeat-*索引:

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

7.5 使用Kibana查看数据

访问Kibana(默认http://<服务器IP>:5601),进入Dev Tools,执行以下命令查询日志:

GET /filebeat-*/_search
{
  "query": {
    "match_all": {}
  }
}

8. 常见问题排查

8.1 Filebeat无法连接到Logstash

8.2 Logstash无法解析日志

8.3 Elasticsearch索引未生成

通过以上步骤,即可完成CentOS下Filebeat与Logstash的配合配置,实现日志的收集、处理与存储。根据实际需求,可进一步优化过滤规则(如添加更多Grok模式)、调整性能参数(如批量发送大小flush_size),或集成Kibana进行可视化分析。

0
看了该问题的人还看了