kibana

2025/11/25 Tools 共 1152 字,约 4 分钟

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 使用技巧

  1. 字段名必须正确:KQL 查询会校验索引中的字段,字段不存在会报错。
  2. 避免开头通配符:*value 会严重影响性能。
  3. 使用 AND 连接多个条件:默认逻辑是 AND,但推荐明确写出,提高可读性。
  4. 结合可视化过滤器:KQL 可以和 Kibana 的图形过滤器结合使用,更快速定位数据。

Search

    Table of Contents