云计算百科
云计算领域专业知识百科平台

ELK日志分析系统教程:Elasticsearch、Logstash、Kibana部署与远程访问

前言

服务器少的时候,我查问题基本就是 SSH 上去翻日志:先找文件,再 grep 关键字,最后沿着时间一点点往前追。机器和服务一多,这个办法最大的麻烦不是命令难,而是日志太散,很难把同一件事串起来看。

所以这篇我想解决的不是“装一个 Kibana 看图表”,而是把 Elasticsearch、Logstash 和 Kibana 这条链真正跑通:日志先集中起来,再能搜索、筛选、做可视化,排障时不用一直在终端和文件之间来回翻。

下面沿用原教程,从 ELK 的环境准备、Elasticsearch、Logstash、Kibana 安装开始,一直到索引、查询、可视化和远程访问。技术步骤保持完整,重点看它能不能把日常日志排查变成一个更集中、更直观的流程。

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

    de33a22a64bd324831ce523e1946c311

    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 }
    }

    fbccf7e441bd42dd21e8898db7d081fe

    启动并启用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

    459ccba1aa7b41eda75bf40040e0b975

    解压并设置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

    312f40f436381aef31c29c293be69d3f

    移动到用户的主目录并设置权限:

    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/

    82caafd819274f70a12f97c4f168b723

    编辑配置文件:

    sudo vi /etc/kibana/kibana.yml

    修改以下内容:

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

    启动并启用Kibana:

    ./bin/kibana

    b37985ac5ca300b2e2aa9f7da910f80f

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

    79b026ae089dbc8f5dfeb848247e0c5c

    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"}'

    image-20260305162035063

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

    image-20260305162203401

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

    image-20260305163102194

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

    image-20260305163131718

    在config/kibana.yml添加:

    i18n.locale: "zh-CN"

    重新启动,即可生效。

    image-20260305163904873

    在开发工具中,进行简单查询:

    curl -X GET "http://localhost:9201/products/_search?q=name:iphone&pretty"

    image-20260305164115817

    image-20260305164234908

    创建索引:

    curl -X PUT "http://localhost:9201/xinke?pretty"

    image-20260305164357502

    写入文档:

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

    image-20260305164619108

    7.如何使用可视化

    kibana可视化控件基于Elasticsearch的查询。利用一系列的Elasticsearch查询聚合功能来提取和处理数据,再通过创建图表来呈现数据分布和趋势

    点击Visualize菜单,进入可视化图表创建界面:

    image-20260305164908380

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

    image-20260305165226139

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

    image-20260305165257392

    image-20260305165400651

    添加X轴和Y轴:

    image-20260305165901055

    image-20260305165838709

    执行后如下:

    image-20260305170030466

    保存后显示

    image-20260305170106132

    搭建和使用的过程,理解后,是不是感觉很简单?

    在现代可观测性架构中,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

    image-20250725104019896

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

    sudo systemctl status cpolar

    22e5adfaf290a17fc3384bb296055259

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

    打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

    8a6698b1bf26d64ba3645827fbfb1c29

    9.配置公网地址

    登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

    • 隧道名称:可自定义,本例使用了:kibana,注意不要与已有的隧道名称重复
    • 协议:http
    • 本地地址:5601
    • 域名类型:随机域名
    • 地区:选择China Top

    image-20260305172359212

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

    image-20260305172822825

    访问成功。

    image-20260305172903981

    10.保留固定公网地址

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

    image-20250918151358733

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

    image-20260305173049996

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

    image-20260305173121513

    修改隧道信息,将保留成功的二级子域名配置到隧道中

    • 域名类型:选择二级子域名
    • Sub Domain:填写保留成功的二级子域名
    • 地区: China Top

    点击更新

    image-20260305173244470

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

    image-20260305173404920

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

    image-20260305173455964

    总结

    到这里,ELK 的核心链路已经完整跑通:日志进入 Elasticsearch,经由 Logstash 处理,再通过 Kibana 搜索和展示。

    对我来说,Kibana 最有价值的地方并不是“图表更漂亮”,而是当日志越来越多以后,终于可以按时间、字段和条件去筛,而不是每次出问题都重新登录服务器翻文件。需要观察趋势时再做可视化,需要定位异常时直接检索,两个场景都在同一个入口里完成。

    如果团队成员或自己在外面也需要查看这套页面,再按原教程补上外部访问即可。真正省下来的,是故障发生以后在不同服务器、不同日志文件之间反复找线索的时间。

    image-20260305173514273

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » ELK日志分析系统教程:Elasticsearch、Logstash、Kibana部署与远程访问
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!