温馨提示×

ubuntu syslog怎么对接ELK

小樊
43
2026-09-14 06:16:11
栏目: 智能运维

在 Ubuntu 上把 syslog 对接到 ELK(Elasticsearch + Logstash + Kibana),常见做法有三种,按使用频率从高到低:


一、推荐方案:Filebeat 读取 syslog 文件 → Logstash → ES

最常用、最稳定,适合生产环境

1. Ubuntu syslog 位置

Ubuntu 默认使用 rsyslog,日志通常在:

  • /var/log/syslog
  • /var/log/auth.log

确保 rsyslog 在运行:

sudo systemctl status rsyslog

2. 安装 Filebeat(Ubuntu)

sudo apt update
sudo apt install filebeat -y

3. 配置 Filebeat

编辑:

sudo vim /etc/filebeat/filebeat.yml

示例(读取 syslog):

filebeat.inputs:
  - type: filestream
    enabled: true
    paths:
      - /var/log/syslog
      - /var/log/auth.log

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

如果用 ES 直连(不推荐新手):

output.elasticsearch:
  hosts: ["http://es-ip:9200"]

启动:

sudo systemctl enable filebeat
sudo systemctl start filebeat

4. Logstash 配置(接收 syslog)

sudo vim /etc/logstash/conf.d/syslog.conf
input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:host} %{DATA:program}: %{GREEDYDATA:msg}" }
  }
}

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

重启 Logstash:

sudo systemctl restart logstash

5. Kibana 查看

  • 创建 Index Pattern:syslog-*
  • Discover 中即可看到 syslog

二、方案二:rsyslog 直接发到 Logstash(TCP/UDP)

适合 不装 Filebeat 的场景

1. Logstash 接收 syslog

input {
  syslog {
    port => 514
    type => "rsyslog"
  }
}

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

2. Ubuntu rsyslog 配置

sudo vim /etc/rsyslog.d/10-elk.conf
*.* @@logstash-ip:514

重启:

sudo systemctl restart rsyslog

⚠️ 注意:514 是特权端口,可能需要 sudo setcap


三、方案三:Docker / 容器 ELK

如果你用 Docker ELK:

  • Filebeat 容器挂载 /var/log
  • 或 host 网络直接发 UDP 514

四、常见问题排查

1. 没数据?

# Filebeat
sudo filebeat test output

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

2. 时间不对?

在 Logstash 中加:

date {
  match => ["timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss"]
}

3. 权限问题?

sudo usermod -aG adm filebeat

总结建议

生产环境:Filebeat + Logstash
简单测试:rsyslog → Logstash
❌ 不推荐:直接 ES 写 syslog(缺乏解析)

如果你愿意,我可以:

  • 给你 完整 ELK docker-compose
  • 或针对 Ubuntu 22.04 / 24.04 精细调配置

0