kibana介绍与部署(详细版)
- [Kibana 是什么?](#Kibana 是什么?)
- [Elasticsearch 用户体系](#Elasticsearch 用户体系)
-
- [为什么需要专门的 kibana_system 用户?](#为什么需要专门的 kibana_system 用户?)
- [Kibana 的主要功能](#Kibana 的主要功能)
- 实际应用场景
- [Kibana 的工作流程](#Kibana 的工作流程)
- [Kibana 界面组成](#Kibana 界面组成)
- [为什么需要 Kibana?](#为什么需要 Kibana?)
- [🆚 Kibana vs 传统方式](#🆚 Kibana vs 传统方式)
- [Kibana 的特点](#Kibana 的特点)
- 常见疑问解答
- Windows上安装Kibana的详细步骤
Kibana 是什么?
Kibana 是一个用于 Elasticsearch 的"数据可视化和管理界面"。但它本身不存储数据。它需要连接到Elasticsearch 集群来读取和写入数据(例如保存仪表板、可视化等)
简单比喻
- Elasticsearch 是 数据库/搜索引擎(存储和检索数据的地方)
- Kibana 是 操作界面/仪表盘(帮助查看、管理和分析这些数据的工具)
当 Kibana 启动时,它需要使用一个 Elasticsearch 用户来连接到 Elasticsearch。这个用户必须存在于 Elasticsearch 中,并且具有足够的权限来管理 Kibana 的索引(例如 .kibana_*)。
所有用户的认证(用户名/密码)都存储在 Elasticsearch 中,包括:
- elastic 用户(超级管理员)
- kibana_system 用户(Kibana 系统用户)
- 自己创建的其他用户
Elasticsearch 用户体系
Elasticsearch 默认有这些内置用户:
| 用户名 | 用途 | 类似角色 |
|---|---|---|
| elastic | 超级管理员 | 银行行长 |
| kibana_system | Kibana连接专用 | ATM机专用账户 |
| logstash_system | Logstash连接专用 | 存款机专用账户 |
| beats_system | Beats连接专用 | 点钞机专用账户 |
| apm_system | APM连接专用 | 监控系统账户 |
| remote_monitoring_user | 监控专用 | 监控摄像头账户 |
对于 Elasticsearch 8.0 及以上版本,可以概括为:默认安全已开启,内置账户已存在,但初始密码为空,必须由管理员设置后才能使用
默认情况下,Elasticsearch 提供了一个内置用户 kibana_system,专门用于 Kibana 连接。因此,我们需要在 Elasticsearch 中设置这个用户(kibana)的密码(通常第一次使用才需要),在已有es账密的条件下,可以执行:
bash
curl -u elastic账号:elastic密码 -X POST "http://es的IP端口/_security/user/kibana_system/_password" -H "Content-Type: application/json" -d '{"password": "123456"}'
这条命令的意思是:
"用行长账户(elastic)为ATM机创建一个专用账户(kibana_system),密码设为123456",后面可以使用这个账密登录kibana
为什么需要专门的 kibana_system 用户?
1. 安全分离 :Kibana 不应该使用 elastic 超级管理员账户
2. 权限最小化 :kibana_system 只有Kibana需要的权限
3. 审计跟踪:可以单独审计Kibana的操作
Kibana 的主要功能
1. 数据可视化 📈
- 将 Elasticsearch 中的数据变成图表、图形、仪表盘
- 支持柱状图、饼图、折线图、地图等多种可视化类型
2. 数据探索 🔍
- 搜索和筛选存储在 Elasticsearch 中的海量数据
- 实时查看日志、指标、交易记录等
3. 监控和告警 ⚠️
- 监控服务器性能、应用状态、网络流量
- 设置阈值,异常时自动发送告警
4. 安全管理 🛡️
- 管理用户权限和角色
- 查看安全事件和威胁
5. 开发工具 🛠️
- 内置的 Elasticsearch API 测试工具(Dev Tools)
- 可以直接执行查询命令,无需命令行
实际应用场景
场景1:日志分析(最常见)
bash
应用产生日志 → Elasticsearch 存储日志 → Kibana 展示和分析日志
结果:在漂亮的界面上查看错误日志、用户行为等。
场景2:服务器监控
bash
服务器指标(CPU、内存)→ Elasticsearch → Kibana 仪表盘
结果:实时看到所有服务器的健康状况。
场景3:电商数据分析
bash
用户点击、购买记录 → Elasticsearch → Kibana 图表
结果:分析用户行为、销售趋势、热门商品。
场景4:安全监控
bash
防火墙日志、登录记录 → Elasticsearch → Kibana 安全面板
结果:检测异常登录、网络攻击。
Kibana 的工作流程
bash
原始数据 → Beats/Logstash(收集) → Elasticsearch(存储/搜索) → Kibana(可视化/分析)
举例说明:
- 你的网站有访问日志
- Filebeat(采集器)收集这些日志
- 发送到 Elasticsearch 存储
- 打开 Kibana,创建图表显示:
- 每小时访问量
- 最热门页面
- 用户地域分布
- 错误率趋势
Kibana 界面组成
在登录后看到的各个部分(部分列举):
| 功能区域 | 图标 | 用途 |
|---|---|---|
| Discover | 🔍 | 搜索和探索原始数据 |
| Dashboard | 📊 | 仪表盘(图表集合) |
| Visualize | 📈 | 创建图表和图形 |
| Canvas | 🎨 | 创建动态信息图 |
| Maps | 🗺️ | 地理空间数据可视化 |
| Machine Learning | 🤖 | 异常检测和预测 |
| Dev Tools | ⚙️ | Elasticsearch API 工具 |
| Management | ⚙️ | 系统管理和设置 |
为什么需要 Kibana?
没有 Kibana 时:
- 只能通过命令行查询 Elasticsearch
- 看到的是 JSON 格式的原始数据
- 需要自己写程序来生成图表
- 无法实时监控和告警
有了 Kibana 后:
- 点点鼠标就能创建漂亮的图表
- 实时刷新查看最新数据
- 拖拽操作构建仪表盘
- 预设模板快速开始
- 团队共享分析结果
🆚 Kibana vs 传统方式
| 任务 | 传统方式 | 使用 Kibana |
|---|---|---|
| 查看日志 | grep 命令 | 点击筛选器 |
| 分析趋势 | 写 Python 脚本 | 拖拽创建图表 |
| 监控状态 | 自定义监控系统 | 使用内置监控 |
| 共享报告 | 导出 CSV + Excel | 分享链接 |
| 设置告警 | 写脚本检测 | 可视化配置 |
Kibana 的特点
1. 开源免费 (基础功能免费)
2. 实时性 :数据几乎实时显示
3. 交互性 :可以下钻查看细节
4. 可扩展 :支持插件和自定义
5. 集成性好:与 Elasticsearch 完美配合
常见疑问解答
Q:为什么不能直接用 elastic 用户连接 Kibana?
A:安全考虑。如果Kibana被攻击,攻击者只能获得有限的权限,而不是超级管理员权限。
Q:为什么不能直接在 Kibana 界面设置 kibana_system 密码?
A:因为密码必须存储在 Elasticsearch 中,Kibana 只是读取这个密码来连接。
Q:为什么 elastic 用户能创建其他用户?
A:elastic 是内置的超级管理员,拥有所有权限。
Q:如果忘记了 elastic 密码怎么办?
A:需要重置 Elasticsearch 的密码,这通常在 Elasticsearch 服务器上操作。
Windows上安装Kibana的详细步骤
1. 选定版本下载(本文以kibana-8.15.2为例)
Elastic Stack 要求 Kibana 和 Elasticsearch 的主版本号必须完全一致,所以需要先确定Elasticsearch的版本:
bash
curl -u elastic账号:密码 http://ip:端口/

然后下载对应版本的Kibana:
https://www.elastic.co/cn/downloads/kibana
2. 下载后解压

组织结构简述:

- config (配置中心)
这是最重要的目录,存放所有配置文件。需要编辑其中的 kibana.yml 来连接 Elasticsearch(设置主机、端口、用户名、密码等)。 - bin (程序入口)
存放可执行文件。在 Windows 上,主要通过运行 kibana.bat 来启动服务。 - data (内部数据)
Kibana 运行时产生的内部数据,如内部状态、缓存等。通常无需手动修改。 - logs (运行日志)
启动 Kibana 后,运行日志会在此生成。当遇到问题时,查看这里的 *.log 文件是首要的排错方法。 - plugins (功能扩展)
存放用户安装的插件。Kibana 的很多高级功能(如某些图表类型、数据源连接器)以插件形式提供。 - node 与 node_modules (运行环境)
Kibana 基于 Node.js 开发,这两个目录包含了它运行所需的Node.js环境和所有依赖的第三方代码库,请勿手动修改或删除。
3. 启动Kibana
双击kibana.bat

正常启动后可以看到:

之后打开http://localhost:5601/?code=647183 这个code是随机生成的,具体结合实际code跳转
4. 配置要连接的elastic服务器


5. 使用kibana账密登录(这个账密对应上面提到的kibana_system):

之后会看到这个界面:

6. 到这一步表示已经成功建立起kibana与elastic的连接,之后就可以使用es的账密登录进入到图形化界面了:

7. 登录成功:


下一篇会详细介绍下如何使用Kibana!!