📖 目录
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(发现)
基本使用
- 选择索引模式:从下拉菜单选择
- 时间范围:设置时间过滤器
- 搜索查询:使用 KQL 或 Lucene 查询
- 查看文档:点击文档查看详情
字段操作
- 添加字段:点击字段添加到表格
- 排序:点击列标题排序
- 过滤:点击字段值快速过滤
导出数据
- CSV 导出:导出搜索结果
- 共享链接:生成可分享的链接
Visualize(可视化)
创建可视化
- 选择可视化类型
- 选择数据源
- 配置指标和桶
- 保存可视化
可视化类型
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(仪表板)
创建仪表板
- 添加可视化:从保存的可视化中选择
- 布局调整:拖拽调整位置和大小
- 时间同步:设置全局时间过滤器
- 保存仪表板:保存配置
仪表板功能
- 时间范围:全局时间过滤器
- 刷新:自动或手动刷新
- 全屏模式:全屏展示
- 共享:生成分享链接或嵌入代码
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/_mappingKQL 查询语言
基本语法
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-*匹配多个索引 - 时间后缀:使用日期格式的索引名
- 定期更新:定期刷新索引模式
可视化设计
- 合理选择图表类型:根据数据特点选择
- 颜色搭配:使用清晰的颜色方案
- 标签清晰:使用有意义的标签
仪表板设计
- 逻辑分组:相关可视化放在一起
- 重要信息突出:关键指标放在显眼位置
- 响应式布局:考虑不同屏幕尺寸
性能优化
- 限制数据量:合理设置时间范围
- 使用过滤器:减少不必要的数据
- 缓存查询:利用查询缓存
学习资源
💡 常用操作速查
创建索引模式
- Management > Index Patterns
- Create index pattern
- 输入索引模式(如:
logstash-*) - 选择时间字段
- Create index pattern
创建可视化
- Visualize > Create visualization
- 选择可视化类型
- 选择数据源
- 配置指标和桶
- 保存
创建仪表板
- Dashboard > Create dashboard
- Add visualization
- 选择可视化
- 调整布局
- 保存
