kibana
在大数据和日志分析的世界里,Kibana 是一个不可或缺的可视化工具,而 KQL(Kibana Query Language)则是 Kibana 查询和过滤数据的核心语言。
什么是 Kibana?
Kibana 是 Elasticsearch 的可视化界面,用于:
- 数据搜索和过滤:通过图形化界面快速找到感兴趣的数据。
- 数据可视化:支持折线图、柱状图、饼图、地图等多种可视化形式。
- 仪表盘管理:将多个可视化组件组合成仪表盘,实时监控业务指标或日志状态。
- 告警和报告:配合 Elasticsearch 和 Alerting 插件,可以设置实时告警和报表。
简单来说,Kibana 是将 Elasticsearch 存储的数据通过可视化方式呈现的利器,让日志分析和业务监控更加直观。
什么是 KQL?
KQL(Kibana Query Language)是 Kibana 提供的查询语言,用于在 Discover、Dashboard、Lens 等模块中对数据进行搜索和过滤。相比传统的 Lucene 查询语法,KQL 更简洁、直观,同时支持逻辑运算和范围查询。
KQL 基础语法
1. 字段匹配
直接匹配字段值:
status:200
匹配 status 字段等于 200 的数据。
字符串匹配需要用引号:
message:"user login failed"
2. 逻辑运算符
- AND
status:200 AND extension:jpg
匹配同时满足两个条件的数据。
- OR
status:404 OR status:500
匹配任意一个条件的数据。
- NOT
NOT status:200
排除特定条件的数据。
默认情况下,KQL 多个条件之间使用 AND。
3. 范围查询
- 数值范围:
age >= 30 AND age <= 40
- 日期范围:
timestamp >= "2025-11-01" AND timestamp < "2025-12-01"
- 简写范围:
age:[30 TO 40]
timestamp:["2025-11-01" TO "2025-12-01"]
4. 通配符与正则
- 通配符:
filename:log*
匹配以 log 开头的文件名。
- 正则:
error_message:/^timeout.*/
匹配以 timeout 开头的错误信息。
5. 存在与缺失字段
- 存在字段:
_exists_:user_id
- 缺失字段:
NOT _exists_:user_id
6. 嵌套与组合查询
可以使用括号组合复杂条件:
(status:200 OR status:201) AND extension:jpg
KQL 使用技巧
- 字段名必须正确:KQL 查询会校验索引中的字段,字段不存在会报错。
- 避免开头通配符:
*value会严重影响性能。 - 使用 AND 连接多个条件:默认逻辑是 AND,但推荐明确写出,提高可读性。
- 结合可视化过滤器:KQL 可以和 Kibana 的图形过滤器结合使用,更快速定位数据。