温馨提示×

Filebeat如何转发CentOS日志

小樊
44
2026-08-29 23:26:54
栏目: 智能运维

在 CentOS 上用 Filebeat 转发日志,通常目标是把系统日志(如 /var/log/messages、/var/log/secure、systemd journal 等)发送到 Elasticsearch / Logstash / Kafka 等后端。下面给你一套从安装到配置的完整方案,适合生产环境直接使用。


一、安装 Filebeat(CentOS 7 / 8 / Stream)

方法一:使用 RPM(推荐)

# 导入 Elastic GPG Key
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# 添加 yum 源
cat <<EOF | sudo tee /etc/yum.repos.d/elastic.repo
[elastic-8.x]
name=Elastic 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
# 安装 Filebeat
yum install -y filebeat

二、Filebeat 主要配置文件

配置文件路径:

/etc/filebeat/filebeat.yml

三、转发 CentOS 系统日志(常见场景)

1️⃣ 转发 /var/log 普通日志(最常见)

filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /var/log/messages
      - /var/log/secure
      - /var/log/cron
      - /var/log/boot.log
      - /var/log/maillog

output.elasticsearch:
  hosts: ["http://elasticsearch:9200"]

✅ 适合:

  • 传统 syslog 日志
  • 审计、登录、定时任务日志

2️⃣ 转发 systemd journal 日志(CentOS 7+ 推荐)

systemd 日志比 /var/log/messages 更完整。

filebeat.inputs:
  - type: systemd
    enabled: true
    path: /var/log/journal

✅ 优点:

  • 支持服务级别日志
  • 不依赖 syslog

⚠️ 注意:

  • 需要运行在 systemd 系统
  • Filebeat 需要读取 journal 权限

3️⃣ 转发所有 /var/log/*.log

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

⚠️ 不建议生产直接这样用(会采集很多无用日志)


四、输出到 Logstash(推荐生产架构)

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

Logstash 示例:

input {
  beats {
    port => 5044
  }
}

filter {
  if [log][file][path] =~ "secure" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:host} %{WORD:program}: %{GREEDYDATA:msg}" }
    }
  }
}

output {
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]
    index => "centos-logs-%{+YYYY.MM.dd}"
  }
}

五、启动并设置开机自启

systemctl enable filebeat
systemctl start filebeat
systemctl status filebeat

六、查看运行状态

# Filebeat 状态
systemctl status filebeat

# 查看日志
journalctl -u filebeat -f

七、常见权限问题处理

1️⃣ 无法读取 /var/log/secure

usermod -aG adm filebeat
usermod -aG root filebeat

或临时测试:

chmod 644 /var/log/secure

2️⃣ SELinux 影响(CentOS 常见)

getenforce

临时关闭测试:

setenforce 0

✅ 生产建议:

  • 配置 SELinux policy
  • 或保持开启并放行 Filebeat

八、常用优化建议

✅ 添加索引生命周期(ILM)
✅ 开启 JSON 日志解析
✅ 设置 fields.type: system 区分日志来源
✅ 限制采集历史日志:

scan_frequency: 10s
harvester_buffer_size: 16384

九、典型生产架构

CentOS
  └── Filebeat
        ├── Logstash
        │     └── Elasticsearch
        └── Kibana

或

CentOS → Filebeat → Elasticsearch → Kibana

十、我可以继续帮你

你可以告诉我:

  1. ✅ Filebeat 版本(7.x / 8.x)
  2. ✅ 日志目标(ES / Logstash / Kafka)
  3. ✅ 日志类型(systemd / messages / 应用日志)
  4. ✅ 是否使用 Docker / K8s

我可以直接给你 一份可复制粘贴的完整 filebeat.yml 配置。

0 踩