Skip to content

📖 目录


Kibana 基础概念

什么是 Kibana?

Kibana 是一个开源的数据可视化平台,用于 Elasticsearch 数据的探索、可视化和分析。

核心特性

  • 数据探索:强大的数据搜索和过滤
  • 数据可视化:丰富的图表类型
  • 仪表板:创建交互式仪表板
  • 实时分析:实时数据分析和监控
  • 易于使用:直观的用户界面

应用场景

  • 日志分析:ELK 栈的可视化组件
  • 监控仪表板:系统和应用监控
  • 数据分析:业务数据分析
  • 安全分析:安全事件分析

安装和启动

bash
# 下载 Kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.11.0-linux-x86_64.tar.gz
tar -xzf kibana-8.11.0-linux-x86_64.tar.gz
cd kibana-8.11.0

# 配置 Elasticsearch 连接
# 编辑 config/kibana.yml
# elasticsearch.hosts: ["http://localhost:9200"]

# 启动 Kibana
./bin/kibana

# 访问 Kibana
# http://localhost:5601

核心功能

Index Pattern(索引模式)

定义要搜索的 Elasticsearch 索引。

bash
# 创建索引模式
# Management > Index Patterns > Create index pattern
# 例如: logstash-*

Discover(发现)

搜索和探索数据。

Visualize(可视化)

创建各种图表和可视化。

Dashboard(仪表板)

组合多个可视化创建仪表板。

Dev Tools(开发工具)

执行 Elasticsearch 查询和管理操作。


Discover(发现)

基本使用

  1. 选择索引模式:从下拉菜单选择
  2. 时间范围:设置时间过滤器
  3. 搜索查询:使用 KQL 或 Lucene 查询
  4. 查看文档:点击文档查看详情

字段操作

  • 添加字段:点击字段添加到表格
  • 排序:点击列标题排序
  • 过滤:点击字段值快速过滤

导出数据

  • CSV 导出:导出搜索结果
  • 共享链接:生成可分享的链接

Visualize(可视化)

创建可视化

  1. 选择可视化类型
  2. 选择数据源
  3. 配置指标和桶
  4. 保存可视化

可视化类型

1. 柱状图(Vertical Bar)

json
{
  "metrics": [
    {
      "type": "count"
    }
  ],
  "buckets": [
    {
      "type": "date_histogram",
      "field": "@timestamp",
      "interval": "1h"
    }
  ]
}

2. 折线图(Line)

json
{
  "metrics": [
    {
      "type": "avg",
      "field": "price"
    }
  ],
  "buckets": [
    {
      "type": "date_histogram",
      "field": "@timestamp",
      "interval": "1d"
    }
  ]
}

3. 饼图(Pie)

json
{
  "metrics": [
    {
      "type": "count"
    }
  ],
  "buckets": [
    {
      "type": "terms",
      "field": "status.keyword",
      "size": 10
    }
  ]
}

4. 数据表(Data Table)

json
{
  "metrics": [
    {
      "type": "count"
    }
  ],
  "buckets": [
    {
      "type": "terms",
      "field": "user.keyword",
      "size": 10,
      "order": {
        "metric": "count",
        "direction": "desc"
      }
    }
  ]
}

5. 指标(Metric)

json
{
  "metrics": [
    {
      "type": "avg",
      "field": "price"
    },
    {
      "type": "max",
      "field": "price"
    },
    {
      "type": "min",
      "field": "price"
    }
  ]
}

Dashboard(仪表板)

创建仪表板

  1. 添加可视化:从保存的可视化中选择
  2. 布局调整:拖拽调整位置和大小
  3. 时间同步:设置全局时间过滤器
  4. 保存仪表板:保存配置

仪表板功能

  • 时间范围:全局时间过滤器
  • 刷新:自动或手动刷新
  • 全屏模式:全屏展示
  • 共享:生成分享链接或嵌入代码

Dev Tools(开发工具)

Console

执行 Elasticsearch 查询和管理操作。

bash
# 查看索引
GET /_cat/indices?v

# 搜索文档
GET /my_index/_search
{
  "query": {
    "match_all": {}
  }
}

# 创建索引
PUT /my_index
{
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      }
    }
  }
}

# 索引文档
POST /my_index/_doc
{
  "title": "Test Document"
}

# 查看映射
GET /my_index/_mapping

KQL 查询语言

基本语法

kql
# 字段匹配
status: 200

# 范围查询
price: > 100
price: < 200
price: >= 100 AND price: <= 200

# 文本搜索
message: "error"

# 通配符
host: "web-*"

# 逻辑操作
status: 200 AND method: "GET"
status: 200 OR status: 404
NOT status: 200

# 字段存在
_exists_: "user"

# 短语匹配
message: "quick brown fox"

示例查询

kql
# 查找错误日志
level: "error" AND timestamp: >= "2024-01-01"

# 查找特定 IP
clientip: "192.168.1.100"

# 查找特定用户
user: "admin" AND action: "login"

# 组合查询
(status: 200 OR status: 404) AND method: "GET" AND response_time: > 1000

最佳实践

索引模式

  • 使用通配符logstash-* 匹配多个索引
  • 时间后缀:使用日期格式的索引名
  • 定期更新:定期刷新索引模式

可视化设计

  • 合理选择图表类型:根据数据特点选择
  • 颜色搭配:使用清晰的颜色方案
  • 标签清晰:使用有意义的标签

仪表板设计

  • 逻辑分组:相关可视化放在一起
  • 重要信息突出:关键指标放在显眼位置
  • 响应式布局:考虑不同屏幕尺寸

性能优化

  • 限制数据量:合理设置时间范围
  • 使用过滤器:减少不必要的数据
  • 缓存查询:利用查询缓存

学习资源


💡 常用操作速查

创建索引模式

  1. Management > Index Patterns
  2. Create index pattern
  3. 输入索引模式(如:logstash-*
  4. 选择时间字段
  5. Create index pattern

创建可视化

  1. Visualize > Create visualization
  2. 选择可视化类型
  3. 选择数据源
  4. 配置指标和桶
  5. 保存

创建仪表板

  1. Dashboard > Create dashboard
  2. Add visualization
  3. 选择可视化
  4. 调整布局
  5. 保存