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_2023

Lens(拖拽式可视化)

新一代可视化编辑器,通过拖拽字段自动推荐图表类型:

  • 拖字段到 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 中关联日志