在现代 IT 运维和开发中,日志分析是保障系统稳定、排查故障的重要手段。而 ELK 栈(Elasticsearch + Logstash + Kibana)是一套非常流行的开源日志收集、存储与可视化工具组合。本文将带你从零开始,在 Ubuntu 系统上搭建并配置 ELK 栈,实现高效的日志分析功能。无论你是运维新手还是开发小白,都能轻松上手!

一、什么是 ELK 栈?
ELK 是三个开源项目的首字母缩写:
Elasticsearch:分布式搜索引擎,用于存储和快速检索日志数据。 Logstash:日志处理管道,可接收、过滤、转换并输出日志。 Kibana:可视化界面,用于查询、分析和展示 Elasticsearch 中的数据。近年来,很多人用轻量级的 Filebeat 替代 Logstash 做日志采集(因为资源占用更低),再由 Logstash 做集中处理。因此完整的流程常为:
Filebeat → Logstash → Elasticsearch → Kibana。
二、准备工作
本教程基于 Ubuntu 22.04 LTS,请确保你有以下条件:
一台 Ubuntu 服务器(本地或云服务器均可) sudo 权限 至少 4GB 内存(Elasticsearch 对内存要求较高)首先更新系统:
sudo apt updatesudo apt upgrade -y
三、安装 Java 环境
Elasticsearch 和 Logstash 都依赖 Java,我们安装 OpenJDK 17:
sudo apt install openjdk-17-jdk -yjava -version
确认输出包含
openjdk version "17.x.x"即可。
四、安装 Elasticsearch
1. 添加 Elastic 官方 GPG 密钥:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
2. 添加 APT 仓库:
echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
3. 安装 Elasticsearch:
sudo apt updatesudo apt install elasticsearch -y
4. 启动并设置开机自启:
sudo systemctl enable elasticsearchsudo systemctl start elasticsearch
5. 检查状态(可能需要等待几秒):
curl -X GET "localhost:9200"
若返回 JSON 格式的集群信息,说明 Elasticsearch 已成功运行。
五、安装 Logstash
sudo apt install logstash -ysudo systemctl enable logstashsudo systemctl start logstash
创建一个简单的 Logstash 配置文件,用于接收 Filebeat 发送的日志:
sudo nano /etc/logstash/conf.d/filebeat.conf
粘贴以下内容:
input { beats { port => 5044 }}filter { if [fileset][module] == "system" { if [message] =~ /^\w{3}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2}/ { grok { match => { "message" => "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} %{DATA:[system][auth][program]}(?:\[%{POSINT:[system][auth][pid]}\])?: %{GREEDYDATA:[system][auth][message]}" } pattern_definitions => { "GREEDYDATA" => ".*" } } } }}output { elasticsearch { hosts => ["http://localhost:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" }}保存后重启 Logstash:
sudo systemctl restart logstash
六、安装 Filebeat(日志采集器)
Filebeat 负责从本地日志文件(如 /var/log/syslog)采集数据并发送给 Logstash。
sudo apt install filebeat -y
编辑配置文件:
sudo nano /etc/filebeat/filebeat.yml
修改以下关键部分(注释掉 Elasticsearch 输出,启用 Logstash 输出):
#output.elasticsearch:# hosts: ["localhost:9200"]output.logstash: hosts: ["localhost:5044"]
启用系统日志模块:
sudo filebeat modules enable system
加载 Kibana 仪表盘模板(方便后续可视化):
sudo filebeat setup --pipelinessudo filebeat setup --dashboards
启动 Filebeat:
sudo systemctl enable filebeatsudo systemctl start filebeat
七、安装 Kibana(可视化界面)
sudo apt install kibana -y
编辑配置文件,允许外部访问(默认只监听 localhost):
sudo nano /etc/kibana/kibana.yml
取消注释并修改以下行:
server.host: "0.0.0.0"server.port: 5601elasticsearch.hosts: ["http://localhost:9200"]
启动 Kibana:
sudo systemctl enable kibanasudo systemctl start kibana
现在,打开浏览器访问
http://你的服务器IP:5601,即可进入 Kibana 控制台。
八、在 Kibana 中查看日志
1. 首次登录后,点击左侧菜单的 “Analytics” → “Discover”。
2. 系统会提示你创建索引模式(Index Pattern),输入
filebeat-*并选择时间字段(如
@timestamp)。
3. 创建完成后,你就能看到实时采集的系统日志了!
通过筛选、搜索、创建可视化图表,你可以轻松实现可视化日志管理,快速定位错误、监控系统状态。
九、常见问题与优化建议
内存不足:Elasticsearch 默认分配 1GB 堆内存,可在/etc/elasticsearch/jvm.options中调整
-Xms和
-Xmx。 安全加固:生产环境建议启用 HTTPS、用户认证(可使用 Elastic 的免费安全功能)。 日志轮转:避免日志文件无限增长,配置 logrotate。
十、总结
通过本教程,你已经成功在 Ubuntu 上搭建了一套完整的 ELK 日志分析系统。这套系统不仅能帮助你集中管理多台服务器的日志,还能通过 Kibana 实现强大的可视化日志管理能力。无论是排查故障、监控性能,还是做安全审计,ELK 都是不可或缺的利器。
关键词回顾:本文涵盖了 Ubuntu ELK日志分析、ELK栈安装教程、Logstash Filebeat配置 以及 可视化日志管理 等核心内容,适合初学者快速入门。
快去试试吧!如有疑问,欢迎在评论区交流~
