Kibana
→ 返回 搜索引擎
Kibana 是 ELK Stack 的可视化层,连接 Elasticsearch,提供数据探索、图表看板、日志分析、集群监控等功能,无需编写代码即可对 ES 数据进行查询和可视化。
ELK Stack 整体架构
数据源(应用日志 / 指标 / 事件)
│
▼
Logstash / Filebeat(采集 & 处理)
│
▼
Elasticsearch(存储 & 索引)
│
▼
Kibana(可视化 & 分析)
| 组件 | 职责 |
|---|---|
| Elasticsearch | 存储、索引、搜索 |
| Logstash | 数据采集、过滤、转换(重量级) |
| Filebeat | 轻量日志采集,直接发送到 ES 或 Logstash |
| Kibana | 可视化、仪表板、Dev Tools |
核心功能
Discover(数据探索)
- 浏览 ES 索引中的原始文档
- 使用 KQL(Kibana Query Language)过滤数据
- 按时间范围筛选,查看字段分布
- 保存常用搜索
KQL 常用语法:
# 字段等值
status: "error"
# 包含关键词(全文搜索)
message: "connection refused"
# 范围
response_time > 1000
# 组合
status: "error" AND service: "api-gateway"
# 通配符
host.name: web-*
# 字段存在
_exists_: error_code
Visualize(可视化)
常用图表类型:
| 图表 | 适用场景 |
|---|---|
| Line / Area | 时间序列趋势(QPS、错误率) |
| Bar | 分类对比(各服务请求量) |
| Pie / Donut | 占比分析(各状态码比例) |
| Data Table | 明细数据展示 |
| Metric | 单一指标大数字展示(总请求数) |
| Heat Map | 热力图(时间 × 服务的错误分布) |
Dashboard(仪表板)
将多个可视化组件组合到一个页面,支持:
- 时间范围联动过滤
- 点击图表元素下钻过滤
- 全屏展示 / 定时刷新(适合监控大屏)
- 导出为 PDF / PNG
Dev Tools(开发工具)
内置 Console,可以直接对 ES 发送 REST 请求,是调试 ES 查询的最佳工具:
// 查看集群健康状态
GET /_cluster/health
// 查看所有索引
GET /_cat/indices?v
// 查看某索引的 Mapping
GET /articles/_mapping
// 执行搜索
GET /articles/_search
{
"query": {
"bool": {
"must": [ { "match": { "title": "elasticsearch" } } ],
"filter": [ { "range": { "view_count": { "gte": 100 } } } ]
}
},
"sort": [ { "created_at": "desc" } ],
"size": 10
}
// 测试分词效果
GET /_analyze
{
"analyzer": "ik_smart",
"text": "分布式搜索引擎"
}
// 删除索引(谨慎)
DELETE /old_logs_2023Lens(拖拽式可视化)
新一代可视化编辑器,通过拖拽字段自动推荐图表类型:
- 拖字段到 X 轴 / Y 轴 / 分组
- 自动切换合适的聚合方式
- 实时预览,比 Visualize 更直观
Alerting(告警)
基于 ES 数据设置告警规则,触发时发通知(邮件、Slack、Webhook):
规则示例:
条件:过去 5 分钟内 status=error 的日志超过 100 条
操作:发送邮件 + 触发 Webhook
日志分析实践
接入 Spring Boot 日志
Filebeat 采集配置(filebeat.yml):
filebeat.inputs:
- type: log
enabled: true
paths:
- /app/logs/*.log
json.keys_under_root: true
json.add_error_key: true
fields:
service: my-app
env: production
output.elasticsearch:
hosts: ["http://elasticsearch:9200"]
index: "app-logs-%{+yyyy.MM.dd}"常用分析场景
# 错误日志过滤
level: "ERROR" AND service: "order-service"
# 慢接口查找
response_time > 2000 AND type: "access_log"
# 通过 traceId 查找完整链路日志
trace_id: "abc123xyz"
Index Pattern(索引模式)
使用 Kibana 前需先创建 Index Pattern,告诉 Kibana 要分析哪些索引:
app-logs-* 匹配所有日期分片的日志索引
metrics-2024.* 匹配 2024 年所有指标索引
在 Stack Management → Index Patterns 中创建,选择时间字段(通常是 @timestamp)。
常用操作
| 操作 | 说明 |
|---|---|
| 时间范围选择器 | 右上角,支持相对时间(Last 15 minutes)和绝对时间 |
| 自动刷新 | 设置刷新间隔,适合实时监控 |
| 保存搜索 | Discover 中保存过滤条件,可在 Dashboard 中复用 |
| 字段过滤 | 点击文档中的字段值,快速添加过滤或排除 |
| 全屏模式 | Dashboard 右上角,适合监控大屏展示 |
相关
- Elasticsearch — Kibana 的数据来源,核心搜索引擎
- ClickHouse — 另一种日志分析方案
- 日志 — Spring Boot 日志配置,输出结构化日志接入 ELK
- 链路追踪 — TraceId 在 Kibana 中关联日志