零基础搭建ELK日志分析系统:从安装到看日志的完整教程

服务器日志越来越庞大,用 grep 和 tail 查找问题效率太低。
ELK 日志分析系统能帮你把日志集中采集、索引并可视化,几秒钟定位异常。
本文以 Ubuntu 20.04 为例,带你走通 ELK 完整流程,全程可照做。

搭建前需要准备什么

一台 Linux 服务器(内存至少 4GB,推荐 8GB),确保能连外网。
提前安装好 Java 环境(Elasticsearch 依赖 Java 11 或 17),用以下命令确认:

java -version

如果未安装,执行:

sudo apt update
sudo apt install openjdk-11-jdk -y

同时关闭防火墙或放行 9200、5601 端口(Elasticsearch 和 Kibana 默认端口)。

第一步:安装 Elasticsearch 并启动

Elasticsearch 是整个系统的存储和搜索引擎。
添加官方 GPG 密钥和源:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
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 -y

安装后编辑主配置文件 /etc/elasticsearch/elasticsearch.yml,开放外网访问(仅测试环境):

network.host: 0.0.0.0
discovery.type: single-node

启动并设置开机自启:

sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

验证:curl http://localhost:9200,看到集群信息代表成功。

第二步:安装 Kibana 并连接 Elasticsearch

Kibana 是可视化界面,让日志展示更直观。
同样从官方源安装:

sudo apt install kibana -y

编辑 /etc/kibana/kibana.yml,修改以下两行:

server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]

启动 Kibana:

sudo systemctl start kibana
sudo systemctl enable kibana

浏览器访问 http://服务器IP:5601,看到 Kibana 登录界面即成功。

第三步:安装 Logstash 并配置 Nginx 日志采集

Logstash 负责采集和处理日志。
安装:

sudo apt install logstash -y

假设你想分析 Nginx 的访问日志(路径 /var/log/nginx/access.log)。
创建一个配置文件 /etc/logstash/conf.d/nginx.conf

input {
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "nginx-access-%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }
}

启动 Logstash:

sudo systemctl start logstash
sudo systemctl enable logstash

如果 Nginx 日志无数据,手动访问一次网站生成新日志:curl http://localhost

第四步:在 Kibana 中创建索引并查看日志

回到 Kibana 页面,左侧菜单点击 Stack Management索引模式创建索引模式

在名称输入框中填 nginx-access-*,时间字段选择 @timestamp,点击创建。

接着点击 Discover,选择刚创建的索引模式,就能看到采集到的 Nginx 日志条目了。
你可以按时间筛选、按字段搜索(例如 response: 404),快速找出错误趋势。

新手最容易踩的坑

  • 内存不足导致 Elasticsearch 启动失败:在 /etc/elasticsearch/jvm.options 中调整 -Xms-Xmx 为适当值(如 2g),不要超过物理内存一半。
  • Logstash 抓不到日志:检查文件路径权限,运行 sudo -u logstash cat /var/log/nginx/access.log 看能否读取。
  • Kibana 页面一直 loading:确认 Elasticsearch 已正常启动,且 Kibana 配置中的 elasticsearch.hosts 地址正确。
  • 索引模式中的时间字段不显示:检查 Logstash 的 date 过滤器是否生效,可以在 Logstash 控制台查看解析后的日志。

验证效果

成功搭建后,你能在 Kibana 的 Dashboard 中创建统计图表。
例如:统计每小时的请求量、Top 10 慢请求、状态码分布。
ELK 日志分析的价值就在于这些实时可视化报表,让问题无处遁形。

常见问题解答

Q:必须用 Nginx 日志吗?
不,Logstash 支持 tail、syslog、TCP 等多种输入,可以采集任何文本日志。

Q:Elasticsearch 版本怎么选?
建议使用 7.x 系列稳定版,8.x 有架构变动,新手先玩 7.x 更稳妥。

Q:日志过多撑爆磁盘怎么办?
配置 ILM(索引生命周期管理)自动删除旧索引,或者设置定时任务清理。

如果遇到其他问题,建议先对照本文步骤重新检查配置,大部分 ELK 日志分析报错都出在端口未放通、Java 版本不对或配置文件语法错误上。

分享到:
上一篇
零基础搭建Grafana监控大屏
下一篇
零基础搭建Prometheus告警:从规则配置到钉钉通知
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意