服务器日志集中收集,ELK搭建日志分析平台

服务器日志分散在各台机器上,排查问题时需要逐台登录,效率很低。
ELK 是 Elasticsearch、Logstash、Kibana 三个开源组件的组合,用来集中收集、存储和可视化日志。
下面从零开始,用一台 Linux 服务器搭建一套可用的日志分析平台,最终能通过浏览器搜索到多台服务器的日志。

准备环境与安装组件

先确认服务器配置:建议内存不低于 4GB,Elasticsearch 对内存较敏感。
操作系统以 Ubuntu 22.04 或 CentOS 7 为例,需要 root 或 sudo 权限。

安装 Java 运行环境,Elasticsearch 和 Logstash 依赖 JDK:

# Ubuntu/Debian
sudo apt update
sudo apt install openjdk-11-jdk -y

# CentOS/RHEL
sudo yum install java-11-openjdk -y

验证 Java 版本:

java -version

添加 Elastic 官方软件源并安装 Elasticsearch、Logstash、Kibana:

# 导入 GPG 密钥
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

# 添加源(Ubuntu 示例,CentOS 请替换为 yum 源)
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

sudo apt update
sudo apt install elasticsearch logstash kibana -y

安装完成后,三个服务的配置文件分别在:

  • Elasticsearch:/etc/elasticsearch/elasticsearch.yml
  • Logstash:/etc/logstash/logstash.yml/etc/logstash/conf.d/
  • Kibana:/etc/kibana/kibana.yml

配置 Elasticsearch 与 Kibana

修改 Elasticsearch 监听地址和端口,允许本机或内网访问:

# /etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node

启动并设置开机自启:

sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

检查是否启动成功:

curl -X GET "localhost:9200"

返回包含 "cluster_name""version" 的 JSON 即表示正常。

接着配置 Kibana,指定 Elasticsearch 地址:

# /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]

启动 Kibana:

sudo systemctl enable kibana
sudo systemctl start kibana

浏览器访问 http://服务器IP:5601,能看到 Kibana 界面说明配置成功。

用 Logstash 接收并解析日志

Logstash 负责把采集到的日志写入 Elasticsearch。
/etc/logstash/conf.d/ 下新建配置文件,例如 logstash.conf

input {
  beats {
    port => 5044
  }
}

filter {
  # 如果日志是 JSON 格式可省略 grok,普通文本可用 grok 解析
  # 示例:解析常见时间戳和日志级别
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:log_time} %{LOGLEVEL:level} %{GREEDYDATA:msg}" }
  }
}

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

启动 Logstash:

sudo systemctl enable logstash
sudo systemctl start logstash

查看日志确认无报错:

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

在业务服务器部署 Filebeat 采集日志

Filebeat 是轻量级日志采集器,安装在需要收集日志的服务器上。
同样添加 Elastic 源后安装:

sudo apt install filebeat -y

编辑 Filebeat 配置,指定要采集的日志路径和输出到 Logstash:

# /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
    - /var/log/nginx/error.log

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

LOGSTASH_SERVER_IP 替换为实际 ELK 服务器 IP。
启动 Filebeat:

sudo systemctl enable filebeat
sudo systemctl start filebeat

如果有多个业务服务器,重复这一步即可。

避开这些常见坑

  • 内存不足:Elasticsearch 默认堆内存 1GB,如果服务器内存小,需修改 /etc/elasticsearch/jvm.options 中的 -Xms-Xmx,建议不超过物理内存一半。
  • 端口未放行:确认防火墙或安全组放行了 9200、5601、5044 端口,否则 Kibana 无法访问或 Filebeat 连不上 Logstash。
  • Filebeat 无数据:检查 Filebeat 日志 /var/log/filebeat/filebeat,常见原因是路径不对或权限不足,确保 Filebeat 用户对日志文件有读权限。
  • 索引不生成:Logstash 配置中的 index 名称不要包含大写字母,Elasticsearch 要求索引名小写。
  • Kibana 报错无法连接:确认 Kibana 配置中的 elasticsearch.hosts 地址正确,且 Elasticsearch 已启动。

验证日志是否集中收集成功

在 Kibana 左侧菜单进入 Stack Management,
选择 Index Patterns,
创建索引模式,
例如 server-logs-*
时间字段选择 @timestamp

然后打开 Discover 页面,选择刚创建的索引模式,如果能看到来自不同服务器的日志记录,并且可以按时间、关键词搜索,说明日志集中收集已经生效。

如果没有数据,先检查 Filebeat 是否在业务服务器上正常运行,再检查 Logstash 日志是否有解析错误。

常见疑问

ELK 能否只装 Elasticsearch 和 Kibana,不用 Logstash?
可以,Filebeat 支持直接输出到 Elasticsearch,但缺少 Logstash 的过滤和解析能力,适合日志格式简单的场景。

日志量大了怎么办?
可以通过调整 Elasticsearch 分片、增加节点或使用索引生命周期管理(ILM)来优化,建议参考官方文档根据实际量调整。

Filebeat 和 Logstash 的区别是什么?
Filebeat 是轻量采集器,部署在业务服务器;Logstash 是重量级处理管道,负责解析和转发,两者常配合使用。

按照以上步骤,你就能搭建起一套基础的服务器日志集中收集与 ELK 日志分析平台。
遇到异常时优先检查各组件日志和端口连通性,再根据报错信息调整配置。

分享到:
上一篇
Ansible批量管理服务器,批量推送网站配置
下一篇
企业IT运维管理制度,机房服务器管理规范
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意