日志分析这件事,有了 ELK 才能真正做到可搜索、可视化、可预警
日志这件事,大多数团队的态度是:平时不关心,出了问题才想起来去翻。但系统出现故障的时候,日志往往是唯一能告诉你哪里出了问题的东西——如果这时候你面对的是一堆文本文件或者散落在各个服务器上的输出,排查效率可想而知。
前言
日志这件事,大多数团队的态度是:平时不关心,出了问题才想起来去翻。但系统出现故障的时候,日志往往是唯一能告诉你哪里出了问题的东西——如果这时候你面对的是一堆文本文件或者散落在各个服务器上的输出,排查效率可想而知。
ELK 是 Elasticsearch、Logstash、Kibana 三个开源组件的组合,各自承担不同角色:Logstash 收集和解析各类日志,Elasticsearch 存储并提供搜索能力,Kibana 则是可视化和分析界面,把存在 Elasticsearch 里的数据变成可读的图表和仪表盘。三者串联起来,形成一套完整的日志采集、存储、分析链路。
Kibana 在这套体系里是面向使用者的那层——不需要写代码,通过图形界面就能做日志搜索、过滤、生成图表、配置告警规则。对于运维团队来说,花时间把 ELK 栈搭好并配好仪表盘,后续排查故障的效率会提升很多。

1.什么是Kibana?
Kibana是由Elastic公司开发的一款开源数据可视化与分析平台,它是ELK技术栈(Elasticsearch、Logstash、Kibana)中的“眼睛”——专门用于探索、分析和展示存储在Elasticsearch中的数据。
Kibana能做什么?
| 功能 | 说明 |
|---|---|
| 📊 可视化 (Visualizations) | 创建柱状图、折线图、饼图、热力图、地图等,直观展示数据趋势 |
| 🖼️ 仪表盘 (Dashboards) | 自由组合多个图表,打造专属监控大屏(如:服务器负载 + 错误日志 + 用户行为) |
| 🔍 数据探索 (Discover) | 像用搜索引擎一样查询原始日志,支持关键词、字段过滤、时间范围筛选 |
| ⚠️ 告警与监控 (Alerting & Monitoring) | 当错误率突增、CPU过高时自动触发通知(邮件、Webhook等) |
| 🤖 机器学习 (Machine Learning) | 自动检测异常流量、异常登录、性能突变等(需X-Pack或Elastic订阅版) |
| 🔐 安全与权限管理 | 控制谁能看到哪些数据(企业版功能) |
| 🔍 日志与APM分析 | 结合Beats或APM Agent,实现应用性能监控(APM)、用户体验追踪 |
典型使用场景
- 运维监控:实时查看Nginx、系统、数据库日志,快速定位故障。
- 安全审计:分析SSH登录日志,发现暴力破解行为。
- 业务分析:追踪用户点击流、订单转化率、地域分布。
- DevOps可观测性:统一监控微服务日志、指标、链路追踪(配合Elastic APM)。
技术特点
- 基于Web:通过浏览器访问(默认端口5601),无需安装客户端。
- 深度集成Elasticsearch:所有数据必须先存入ES,Kibana才能读取。
- 插件化架构:支持自定义插件扩展功能。
- 开源免费:核心功能完全开源(Apache 2.0协议),高级功能需订阅Elastic官方服务。
2.安装ELK前提条件
系统环境要求:
| 项目 | 要求 |
|---|---|
| 操作系统 | CentOS 7.6 或更高(推荐 7.9) |
| 架构 | x86_64(64位) |
| 用户权限 | 需要 root 或具有 sudo 权限的用户 |
| 网络 | 能访问外网(用于下载 RPM 包或 Elastic 官方仓库) |
硬件资源建议(最低 vs 推荐):
| 组件 | 最低配置 | 推荐配置(生填) |
|---|---|---|
| 内存 | 4 GB RAM | ≥ 8 GB(Elasticsearch 至少 4GB) |
| CPU | 2 核 | ≥ 4 核 |
| 磁盘 | 20 GB 可用空间 | ≥ 100 GB SSD(日志量需更多) |
| Swap | 禁用 Swap(Elasticsearch 强制要求) | 必须关闭 |
关闭 Swap(必须!)
关闭 Swap:
# 临时关闭
sudo swapoff -a
# 永久关闭:注释 /etc/fstab 中的 swap 行
sudo sed -i '/swap/s/^/#/' /etc/fstab
依赖软件:
- Java运行环境(仅Elasticsearch和Logstash需要)
- Elasticsearch 8.x:自带JDK(无需单独安装)
- Elasticsearch 7.x:需Java 11或Java 17(官方推荐捆绑JDK)
建议:使用Elastic官方RPM包(自带兼容JDK),不要手动安装OpenJDK,避免版本冲突。
创建Elasticsearch用户:
adduser elasticsearch # 创建名为 'elasticsearch' 的新用户
passwd elasticsearch # 为 'elasticsearch' 用户设置密码
3.安装Elasticsearch
导入Elasticsearch GPG密钥:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
创建Elasticsearch仓库文件:
sudo vi /etc/yum.repos.d/elasticsearch.repo
添加以下内容:
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

4.安装Logstash
安装Logstash:
sudo yum install logstash -y

配置Logstash:
创建一个简单的Logstash配置文件:
sudo vi /etc/logstash/conf.d/logstash.conf
添加以下内容:
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}

启动并启用Logstash:
sudo systemctl enable logstash
sudo systemctl start logstash
5.安装Kibana
下载Kibana:
iptables -nvL # 显示当前iptables规则
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.15.0-linux-x86_64.tar.gz

解压并设置Kibana的权限:
tar -zxvf kibana-7.15.0-linux-x86_64.tar.gz # 解压Kibana存档
chown -R elasticsearch kibana-7.15.0-linux-x86_64 # 将Kibana文件的所有权更改为 'elasticsearch' 用户
修改kibana名称:
mv kibana-7.15.0-linux-x86_64/ kibana
chown -R elasticsearch kibana

移动到用户的主目录并设置权限:
cp -r elasticsearch /home/elasticsearch/ # 将Elasticsearch文件复制到 'elasticsearch' 用户的主目录
cp -r kibana /home/elasticsearch/ # 将Kibana文件复制到 'elasticsearch' 用户的主目录
cd /home/elasticsearch/ # 移动到 'elasticsearch' 用户的主目录
chown -R elasticsearch kibana/
chown -R elasticsearch elasticsearch/

编辑配置文件:
sudo vi /etc/kibana/kibana.yml
修改以下内容:
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
启动并启用Kibana:
./bin/kibana

过浏览器访问 http://localhost:5601/,Kibana的Web界面应该可见。

6.如何使用Kibana
验证是否成功检测到elasticsearch,创建一个pro索引:
x curl -X POST "http://localhost:9201/pro/_doc" \-H "Content-Type: application/json" \-d '{ "name": "iPhone 15", "price": 7999, "category": "phone"}'

然后去可视化页面查看是否创建成功,刷新页面后创建成功:

创建和管理索引模式,帮助你从Elasticsearch中检索数据。

查看并编辑字段 *****。字段属性,如类型和可搜索性,基于以下条件场映射(在新标签页或新窗口中打开)在Elasticsearch中。

在config/kibana.yml添加:
i18n.locale: "zh-CN"
重新启动,即可生效。

在开发工具中,进行简单查询:
curl -X GET "http://localhost:9201/products/_search?q=name:iphone&pretty"


创建索引:
curl -X PUT "http://localhost:9201/xinke?pretty"

写入文档:
curl -X POST "http://localhost:9201/xinke/_doc" \
-H "Content-Type: application/json" \
-d '{
"name": "iPhone 15",
"price": 7999,
"category": "phone"
}'

7.如何使用可视化
kibana可视化控件基于Elasticsearch的查询。利用一系列的Elasticsearch查询聚合功能来提取和处理数据,再通过创建图表来呈现数据分布和趋势
点击Visualize菜单,进入可视化图表创建界面:

Kibana自带有上10种图表,我们来创建一个自己的图表。

我们选择添加一个垂直条形图:


添加X轴和Y轴:


执行后如下:

保存后显示

搭建和使用的过程,理解后,是不是感觉很简单?
在现代可观测性架构中,Kibana作为Elasticsearch的可视化前端,常用于日志分析、指标监控和数据探索。然而,在实际部署中,用户常常面临一个挑战:如何安全、便捷地将本地或内网中的Kibana服务暴露到公网,供远程团队访问?
这时,cpolar的价值就凸显出来了。
cpolar提供了一种零运维成本、高安全性的解决方案——无需云服务器、无需公网IP、无需网络知识,一条命令即可打通内外网。
无论是开发调试、客户演示,还是应急排查,cpolar + Kibana的组合都能显著提升协作效率与响应速度。
8.安装cpolar实现随时随地开发
8.1 什么是cpolar?
cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。
8.2 部署cpolar
cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。
❤️以下是安装cpolar步骤:
使用一键脚本安装命令:
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
sudo systemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:
打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

9.配置公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
- 隧道名称:可自定义,本例使用了:kibana,注意不要与已有的隧道名称重复
- 协议:http
- 本地地址:5601
- 域名类型:随机域名
- 地区:选择China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

访问成功。

10.保留固定公网地址
使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是kibanaa,大家可以自定义。填写备注信息,点击保留。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑。

修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区: China Top
点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

总结
回顾整篇内容,ELK 栈的核心价值在于把散落的日志数据变成可查询、可视化、可预警的资产。Elasticsearch 负责存储和全文检索、Logstash 负责管道处理、Kibana 负责把数据呈现出来,三个组件各司其职,串联起来才完整。
搭好这套系统之后,Kibana 的可视化能力是实际使用频率最高的部分——仪表盘、图表、过滤条件这些功能上手之后,排查问题的速度比翻日志文件快得多。cpolar 在这里的作用是打通远程访问通道,适合团队成员不在同一网络环境下需要查看日志分析结果的场景。
整体来说,这套方案更适合有一定运维需求的团队或者个人开发者,花时间把链路搭好并配好索引,后续维护和排查的时候会感谢当初做的这笔投入。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)