资讯动态

【搜索引擎】Kibana使用指南

发布时间:2026/11/6 3:46:13 来源:尧图企业网站定制
Kibana 使用指南Kibana 是 Elastic Stack 的可视化平台用于搜索、查看和分析 Elasticsearch 中存储的数据。核心功能模块模块用途典型场景Discover浏览和搜索原始文档日常排障、查看单条日志Lens拖拽式可视化图表QPS 统计、响应时间分布Dashboard聚合多个可视化面板服务监控大盘Dev Tools直接操作 ES 的控制台调试 DSL、查看 mappingStack Management管理索引模式、保存对象配置 Index PatternAlerting设置告警规则错误率超阈值告警Discover日志浏览与搜索Discover 是日常排障最常用的模块用于浏览原始文档和执行即席查询。基本操作流程选择 Index Pattern → 设置时间范围 → 输入 KQL 查询 → 查看结果 → 添加字段列 → 保存查询时间范围选择右上角时间选择器支持三种模式模式说明示例快速选择预设常用时间范围最近 15 分钟 / 1 小时 / 24 小时 / 7 天绝对时间精确指定起止时间2026-07-31 14:00:00~2026-07-31 15:00:00相对时间相对于当前时间现在 - 30 分钟排障建议先缩小时间范围再查询避免全量扫描导致页面卡顿。字段过滤左侧字段列表提供快捷过滤点击字段名 →过滤出该字段存在的文档点击字段值 →按该值过滤点击字段值 →-排除该值顶部 Filter 栏支持更精细的操作编辑修改过滤条件临时禁用点击开关图标不删除但暂时不生效反转将is变为is notPin跨页面切换时保留该过滤条件列定制左侧字段点击添加到表格列表格列可拖拽排序点击列头可排序仅限数值和日期类型配置完成后可保存为Saved Search自动刷新时间选择器旁可设置Auto-refresh10s / 30s / 1m / 5m / 15m适合实时监控场景保存与加载操作说明Save Query保存当前查询条件下次直接加载Saved Search保存查询 列配置可在 Dashboard 中引用Open加载已保存的查询KQL 查询语法KQLKibana Query Language是 Kibana 查询栏的默认语法专为日志查询设计比 Lucene 语法更简洁。精准匹配# 字段值完全匹配 service.name: user-service # 多值匹配OR 语义 service.name: (user-service, order-service) # 数值匹配 response.code: 200 # 布尔值 is_error: true模糊匹配# 通配符匹配* 匹配任意字符? 匹配单个字符 uri: *app-picture* message: error?timeout # 前缀匹配 uri: http://my-service* # 模糊搜索~ 后跟编辑距离允许 N 个字符差异 message: error~1 message: timeout~2逻辑组合# AND service.name: user-service and response.code: 200 # OR service.name: user-service or service.name: order-service # NOT not service.name: user-service # 组合括号优先级最高 (service.name: user-service or service.name: order-service) and response.code: 200范围查询# 数值范围闭区间 response.time: [100 TO 500] # 时间范围 timestamp: [2026-07-31T00:00:00 TO 2026-07-31T23:59:59] # 开放范围 response.time: [100 TO *] response.time: [* TO 500]字段存在性# 字段存在 uri: * # 字段不存在 not uri: *转义特殊字符以下字符在 KQL 中有特殊含义需用\转义 - || ! ( ) { } [ ] ^ ~ * ? : \ /示例message: error\(timeout\) uri: https\:\/\/example\.comKQL vs Lucene 语法对比特性KQLLucene字段匹配field: valuefield: value多值 ORfield: (a, b)field: (a OR b)逻辑运算and/or/notAND/OR/NOT范围查询field: [1 TO 10]field:[1 TO 10]嵌套查询支持嵌套对象不支持默认行为不指定字段时搜索所有字段不指定字段时搜索_all可读性更高较低切换方式Stack Management → Advanced Settings →query:language可切换 KQL / Lucene。字段类型与查询方式能否模糊匹配取决于字段在 ES 中的mapping 类型。类型对照表类型支持的查询方式能否模糊匹配典型场景text分词后匹配match可以日志内容、URL、描述keyword精确匹配term只能精准状态码、服务名、IPtextkeyword子字段两者都支持uri模糊uri.keyword精准多用途字段long/integer数值范围不支持响应时间、状态码date时间范围不支持timestampbooleantrue / false不支持是否错误ipIP / CIDR 范围不支持客户端 IP查看字段类型方法一Dev Tools Console# 查看某个字段的 mappingGETapp-access-log-*/_mapping/field/uri # 查看完整 mappingGETapp-access-log-*/_mapping返回示例{app-access-log-2026.07.31:{mappings:{properties:{uri:{type:text,fields:{keyword:{type:keyword,ignore_above:256}}}}}}}方法二Kibana Discover进入Kibana → Discover选择对应 Index Pattern左侧字段列表中字段名旁边的图标表示类型图标类型说明ttext支持模糊匹配tkeyword仅精准匹配#number数值类型日历date日期类型falseboolean布尔类型方法三Stack ManagementStack Management→Index Management→ 找到索引 →Mappings标签页常见问题字段不能模糊搜索原因字段被映射为keyword类型只能精准匹配。解决方案临时方案在 KQL 中用通配符uri.keyword: *app-picture*注意keyword类型用通配符性能较差仅适合临时排查。根本方案修改 Index Template将字段改为textkeywordPUT_index_template/app-access-log-template{index_patterns:[app-access-log-*],template:{mappings:{properties:{uri:{type:text,fields:{keyword:{type:keyword,ignore_above:256}}}}}}}注意修改模板只对新创建的索引生效旧索引需要 reindex。Lens可视化图表Lens 是 Kibana 的拖拽式可视化工具无需写代码即可创建图表。常用图表类型图表类型适用场景X 轴Y 轴折线图时间序列趋势timestampCount / Avg柱状图分类对比keyword 字段Count / Sum饼图占比分布keyword 字段Count数据表明细列表分组字段多个指标指标卡单值展示-Count / Avg创建 QPS 趋势图进入 Lens主菜单 → Visualize Library → Create visualization → Lens选择数据源左侧选择 Index Pattern设置 Y 轴拖入RecordsCount代表日志条数设置 X 轴拖入timestamp设为 Date Histogram间隔1s添加过滤service.nameisyour-service保存点击 Save命名后可在 Dashboard 中引用创建响应时间 P95 趋势图Y 轴response.time聚合方式选Percentile值为95X 轴timestamp间隔1m过滤uri: /api/v1/loginDashboard监控面板Dashboard 将多个可视化组件聚合到一个页面适合构建监控大盘。创建 Dashboard主菜单 →Dashboard→Create点击Add from library选择已保存的 Lens 图表拖拽调整面板布局和大小顶部可添加全局过滤器对所有面板生效保存 Dashboard实用技巧时间范围联动右上角时间选择器对所有面板生效面板钻取点击图表中的数据点可查看明细自动刷新设置 Auto-refresh 实现实时监控分享可生成分享链接或嵌入 iframeDev ToolsES 控制台Dev Tools 提供 Console 直接操作 ES是排障和调试的利器。查询类命令// 查看所有索引GET_cat/indices?v// 查看索引 mappingGETapp-access-log-*/_mapping// 查看索引 settingsGETapp-access-log-*/_settings// 搜索文档GETapp-access-log-*/_search{query:{match:{uri:app-picture}},size:10,sort:[{timestamp:desc}]}// 按条件计数GETapp-access-log-*/_count{query:{term:{service.name.keyword:user-service}}}排障类命令// 集群健康状态GET_cluster/health// 节点信息GET_cat/nodes?v// 分片状态GET_cat/shards/app-access-log-*?v// 索引大小和文档数GET_cat/indices/app-access-log-*?vhindex,docs.count,store.size// ILM 策略GET_ilm/policy// 索引模板GET_index_template/*access-log*权限问题执行命令返回 403 时{error:{type:security_exception,reason:no permissions for [indices:monitor/settings/get] and User [namexxx]},status:403}需要联系 ES 管理员添加对应权限。索引与索引模板按天分索引日志数据通常按天滚动创建索引app-access-log-2026.07.31 app-access-log-2026.07.30 app-access-log-2026.07.29通配符查询写法含义access-log-2026.07.31只查当天一个索引access-log-*查所有日期的索引access-log-2026.07.*查 2026 年 7 月所有索引索引模板的作用新索引创建时ES 自动匹配模板应用预定义的 mapping 和 settings日志产生 → Filebeat/Logstash 采集 → 索引名带日期后缀access-log-2026.07.31 → ES 匹配 index_patterns: access-log-* → 自动套用 Index Template 的 mapping → 新索引创建完成数据写入查看现有配置// 列出所有匹配的索引GET_cat/indices/app-access-log-*?v// 查看索引模板GET_index_template/*access-log* // 旧版模板ES 7.x 之前 GET _template/*access-log*常见排障场景场景一通过 traceId 追踪完整调用链traceId: your-trace-id一个 traceId 可跨多个索引accessReq、remoteReq、stdout在 Discover 中切换 Index Pattern 即可看到不同维度的日志。场景二查找某个第三方接口的调用记录# remoteReq.log 中模糊匹配 URL url: *app-picture* # accessReq.log 中精准匹配 URIkeyword 类型 uri.keyword: https://app-picture.example.com场景三查找错误日志# 按错误码过滤 response.code: 500 # 按日志级别过滤 level: ERROR # 按关键词模糊搜索 message: *timeout* # 组合查询 level: ERROR and message: *timeout*场景四统计某接口的响应时间分布进入Lens→ 选择 Index PatternX 轴timestampDate Histogram间隔 1 分钟Y 轴response.timePercentileP95过滤uri: /api/v1/login场景五确认某服务的 QPS进入Lens→ 选择 Index PatternY 轴RecordsCountX 轴timestampDate Histogram间隔 1s过滤service.nameisyour-serviceQPS 的定义这里统计的是日志 QPS即每秒产生的日志条数。它通常可以近似反映服务的请求 QPS但两者并不完全相等例如一个请求可能产生多条日志或者某些请求没有日志。要获得最精确的请求 QPS最好在应用的网关或入口层进行监控。学习参考Kibana 官方文档KQL 语法参考Lens 文档Dev Tools Console 文档

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑