尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

linux-tutorial 之 Kibana 实战:从 Discover 查询语法到可视化与仪表盘

发布时间:2026/9/17 19:59:28

资讯中心
01
ARTICLE

linux-tutorial 之 Kibana 实战:从 Discover 查询语法到可视化与仪表盘

linux-tutorial 之 Kibana 实战:从 Discover 查询语法到可视化与仪表盘
linux-tutorial 之 Kibana 实战从 Discover 查询语法到可视化与仪表盘【免费下载链接】linux-tutorial:penguin: Linux教程主要内容Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial导读Kibana 是 Elastic 技术栈ELK中负责展示与分析的一环它将 Elasticsearch 中的索引数据渲染为可检索、可聚合、可可视化的报表。本文以 linux-tutorial 仓库中的 Kibana 专题文档为骨架系统讲解 Kibana 的核心使用链路通过 Discover 进行数据探索、掌握完整的查询字符串query string语义、利用 Visualize 创建饼图与柱状图、并通过 Dashboard 整合共享视图。读完本文你将能够独立完成一个日志检索、聚合分析与报表展示的完整闭环。一、Kibana 在 ELK 技术栈中的定位在进入具体操作之前先明确 Kibana 所处的位置。ELK 是 Elastic 公司旗下三款产品 Elasticsearch、Logstash、Kibana 的首字母组合Kibana 负责将 Elasticsearch 的数据分析并渲染为可视化的报表详见 Elastic 技术栈 README。从架构上看数据流通常是日志源 → Logstash / Beats 采集 → Elasticsearch 存储索引 → Kibana 检索与展示。Kibana 本身不存储数据它通过 HTTP 接口连接 Elasticsearch所有检索条件最终都会被翻译为 Elasticsearch 的查询 DSL 下发执行。因此理解 Kibana 的搜索栏语法本质上就是理解 Elasticsearch 的 Query String 查询语法。仓库中 elastic-quickstart.md 给出了 Kibana 最基本的接入步骤下载对应版本的 Kibana 包并解压到本地修改config/kibana.yml设置elasticsearch.url指向 Elasticsearch 实例运行bin/kibanaWindows 下为bin\kibana.bat浏览器访问http://localhost:5601。注意ELK 三个组件建议使用统一的版本号避免因版本不一致导致组件间通讯异常。仓库中 install_kibana.sh 即针对 kibana 6.0.1 / 6.2.4 / 6.3.1 提供了可选安装并为config/kibana.yml写入如下最小可用配置server.port: 5601 server.host: 0.0.0.0 elasticsearch.url: http://127.0.0.1:9200其中server.host设置为0.0.0.0表示允许局域网内其他机器通过 Kibana 页面访问数据elasticsearch.url指向本机 9200 端口的 Elasticsearch 实例。日常启动/停止可以通过仓库中的 boot-elk.sh 完成例如./boot-elk.sh kibana start ./boot-elk.sh kibana stop二、DiscoverKibana 的数据查询入口单击侧面导航栏中的Discover即可进入 Kibana 的数据查询功能页面。在搜索栏中你可以输入 Elasticsearch 查询条件来搜索数据。你可以在Discover页面中浏览查询结果并在Visualize页面中基于已保存的搜索条件创建可视化。2.1 索引模式Index Pattern的作用当前索引模式显示在查询栏下方。索引模式决定了提交查询时搜索哪些索引要搜索一组不同的索引请从下拉菜单中选择不同的模式要新增索引模式请前往Management / Kibana / Index Patterns点击Add New创建。典型的场景是Logstash 或 Beats 将日志写入以日期为后缀的索引如logstash-2026.09.16此时可在索引模式中使用通配符如logstash-*一次性覆盖全部日志索引。实战提示如果打开 Kibana 页面时提示Warning No default index pattern. You must select or create one to continue.或Unable to fetch mapping. Do you have indices matching the pattern?通常意味着 Logstash 尚未成功把日志写入 Elasticsearch或者索引模式与真实索引名不匹配。此时应优先检查 Logstash 与 Elasticsearch 之间的连通性详见 elastic-quickstart.md 的安装 FAQ 部分。2.2 构建查询与选择展示字段你可以使用字段名称和感兴趣的值来构建搜索对于数字字段可以使用比较运算符如大于、小于或等于可以将多个条件用逻辑运算符AND、OR、NOT链接且全部必须使用大写。默认情况下每个匹配的文档都显示所有字段。若要精简展示列将鼠标悬停在可用字段Available fields列表上点击想包含的每个字段旁边的添加按钮即可。例如只添加account_number字段结果显示将变为包含五个账号的简单列表极大提升日志浏览效率。三、查询语义搜索栏的完整语法指南Kibana 的搜索栏遵循 Elasticsearch Query String 查询语义。查询字符串会被解析为一系列术语term和运算符operator一个术语可以是一个单词如quick、brown也可以是用双引号包围的短语如quick brown。下面按类别逐一说明可用的查询语法。3.1 字段名称在搜索条件中会搜索默认字段default_field但也可以在查询语法中显式指定其他字段查询意图查询语法status字段包含关键字activestatus:activetitle字段包含quick或brown省略OR时使用默认运算符title:(quick OR brown)title:(quick brown)author字段精确匹配短语John Smithauthor:John Smithbook.title、book.content、book.date任一字段包含quick或brown\*表示通配符book.\*:(quick brown)title字段包含任意非 null 值_exists_:title3.2 通配符查询字符串提供?和*两个通配符?表示任意单个字符*表示任意零个或多个字符。qu?ck bro*使用通配符时有三个必须注意的坑性能通配符查询会占用大量内存执行性能较差请慎用纯通配符优化纯通配符*会被改写成 exists 查询以提高效率因此field:*会匹配包含空值的文档如{field: }但不会匹配字段丢失或显式置为 null 的文档如{field: null}前导通配符在单词开头使用通配符如*ing查询量特别大因为索引中的全部术语都需要逐一检查。可以通过将allow_leading_wildcard设置为false来禁用前导通配符。3.3 正则表达式可以用/将正则表达式包裹在查询字符串中进行查询例如name:/joh?n(ath[oa]n)/该查询会匹配john、jon、johan、joan等形式的姓名。3.4 模糊查询使用~运算符可以进行模糊查询。例如我们实际想查询quick brown forks但由于拼写错误输入了quikc\~ brwn\~ foks\~依然可以查回想要的结果。其原理是模糊查询使用Damerau-Levenshtein 距离来查找所有匹配最多两次更改的项所谓更改指单个字符的插入、删除或替换或两个相邻字符的换位默认编辑距离为2而编辑距离为1已足以捕捉约 80% 的人类拼写错误可通过数字后缀显式指定quikc\~13.5 近似检索Proximity Search短语查询如john smith要求所有词条按完全相同顺序出现而近似检索允许指定的单词相互分开或顺序不同并可指定短语中单词的最大编辑距离fox quick\~5字段中的文本越接近查询字符串中指定的原始顺序文档就被认为越相关。以上面示例查询对比短语quick fox会比quick brown fox更近似查询条件。3.6 范围查询可以为日期、数字或字符串字段指定范围闭区间用方括号[min TO max]开区间用花括号{min TO max}。常见示例查询意图查询语法2012 年的所有日子date:[2012-01-01 TO 2012-12-31]数字 1 到 5count:[1 TO 5]alpha与omega之间且不含两端的标签tag:{alpha TO omega}10 以上的数字count:[10 TO *]2012 年以前的所有日期date:{* TO 2012-01-01}1 到 5但不包括 5count:[1 TO 5}开区间与闭区间可以组合使用如上表最后一行。单边无界范围也可以直接使用比较运算符age:10 age:10 age:10 age:10还可以用AND运算符求两个查询结果的交集age:(10 AND 20) age:(10 20)3.7 Boosting权重提升使用^运算符让一个术语比其他术语更相关。例如想查找所有关于狐狸的文档但特别关注狐狸本身quick^2 fox默认提升值是1可以是任意正浮点数0 到 1 之间的提升值会降低相关性提升也可以作用于短语或组john smith^2 (foo bar)^43.8 布尔操作默认情况下只要一个词匹配所有词都是可选的。搜索foo bar baz会返回包含foo、bar、baz中任意一个或多个的文档。在查询字符串中可用的布尔控制手段分为两类1与-运算符首选表示该术语必须存在-表示该术语不得存在其余未标注的术语都是可选的。例如quick brown fox -news含义是fox必须存在、news必须不存在、quick和brown可有可无。2AND、OR、NOT也可写作、||、!这些运算符存在优先级NOT优先于ANDAND优先于OR。注意与/-的区别和-仅影响运算符右侧的术语而AND、OR会同时影响左右两侧的术语。3.9 分组多个术语或子句可以用圆括号组合成子查询(quick OR brown) AND fox分组还能配合字段定位或 boosting 使用status:(active OR pending) title:(full text search)^23.10 保留字与转义如果需要在查询中把运算符字符当作普通字符使用必须用反斜杠\转义。例如搜索(1 1) 2需要写成\(1\1\)\2查询字符串的保留字符为 - || ! ( ) { } [ ] ^ ~ * ? : \ /无法正确转义这些特殊字符会导致语法错误从而阻止查询运行。3.11 空查询如果查询字符串为空或仅包含空格则查询会生成一个空的结果集不会返回全量数据。四、Visualize以图形化方式查看数据想用可视化的方式展示数据请单击侧面导航栏中的Visualize。该工具支持以多种方式查看数据如饼图Pie、柱状图Vertical Bar、曲线图、分布图等。要开始创建点击蓝色的Create a visualization按钮或按钮然后从可视化类型列表中选择一种。说明可视化可以基于已保存的搜索构建也可以直接输入新的搜索条件。若输入新搜索需要先选择索引模式来指定要搜索的索引默认搜索匹配所有文档。4.1 创建饼图Pie要指定图表中展示哪些数据需要借助 Elasticsearch 的存储桶聚合bucket aggregation。分组汇总就是把与搜索条件匹配的文档归类到不同分类中也称分组。为每个分类定义一个存储桶的步骤单击Split Slices拆分切片在Aggregation列表中选择Terms——注意这里的 Terms 是 ELK 采集数据时定义好的字段或标签在Field列表中选择level.keyword点击应用更改按钮apply-changes button更新图表。最初一个切片包含整个饼图配置完成后饼图会按所选字段如日志级别level.keyword的取值分布切分为多个扇区。完成后点击页面最上方一栏的Save按钮即可保存该图表。说明这里选择level.keyword而非level是因为 Kibana 6.x 中keyword类型字段才参与分桶聚合。字段类型可以在索引模式的字段列表中确认这是实际排障中非常常见的坑。4.2 创建柱状图Vertical Bar创建柱状图的操作与饼图类似点击蓝色的Create a visualization或按钮选择Vertical Bar选择索引模式。在尚未定义任何 bucket 时你会看到一个大柱表示与默认通配符查询匹配的文档总数指定 Y 轴所代表的字段通常为计数或数值聚合指定 X 轴所代表的字段通常是分类字段点击应用更改按钮更新图表。同样完成后点击页面最上方一栏的Save按钮保存图表。五、Dashboard整合与共享可视化Dashboard用于整合和共享Visualize集合将多个图表聚合到一块大屏中适合运维监控与报表场景。操作步骤如下点击侧面导航栏中的Dashboard点击添加Add显示已保存的可视化列表点击之前保存的Visualize然后点击列表底部的小向上箭头关闭可视化列表将鼠标悬停在可视化对象上会显示允许你编辑、移动、删除和调整可视化对象大小的容器控件。通过拖拽布局你可以把日志级别饼图 请求量柱状图等组合为一张实时监控面板之后每次进入 Dashboard 即可一站式查看关键指标。六、实战串联从日志采集到 Kibana 检索分析要真正把上述语法用起来需要一条完整的数据链路。仓库在 codes/linux/soft/elk 目录下提供了整套配套配置采集端filebeat.yml 中定义了 Filebeat 采集路径、多行日志合并规则并将采集到的日志发送到 Logstash 的 5044 端口output.logstash: hosts: [192.168.28.32:5044]同时它还会把setup.kibana.host指向 Kibana 地址如192.168.28.11:5601用于自动加载仪表盘模板。传输处理端logstash.conf 监听 TCP 9251 端口接收json_lines格式日志解析后写入 Elasticsearchinput { tcp { port 9251 codec json_lines mode server tags [javaapp] } } output { elasticsearch { hosts [localhost:9200] } stdout { codec rubydebug } }展示端数据进入 Elasticsearch 后即可在 Kibana 的 Discover 中执行本文所述的各类查询。例如查看某个应用全部 ERROR 日志level:ERROR查看最近 10 分钟且包含关键字NullPointerException的日志message:NullPointerException配合时间过滤器按日志级别统计分布在 Visualize 中用level.keyword字段做 Terms 聚合生成饼图观察错误数量随时间走势用柱状图或折线图按时间桶聚合。Java 应用侧可选仓库 elastic-quickstart.md 还演示了通过logstash-logback-encoder将 Java 日志直接经 TCP 推送至 Logstash 的做法对应配置见 logback.xml。七、结语Kibana 的日常使用可归纳为三条主线Discover检索→ Visualize可视化→ Dashboard整合。其中检索语法是地基——本文覆盖的字段限定、通配符、正则、模糊查询、近似检索、范围、boosting、布尔组合与分组转义足以应对绝大多数日志排查与分析场景。配合仓库中 install_kibana.sh、boot-elk.sh 等脚本以及 Elastic 技术栈 README 中的配套文档即可搭建起一套可落地的日志中心方案。从源码结构看仓库还提供了 elastic-beats.md、elastic-logstash.md 等姊妹篇文档可以按需深入。【免费下载链接】linux-tutorial:penguin: Linux教程主要内容Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。