1. 从零开始:为什么你需要一个中文界面的Kibana?

很多刚接触Elastic Stack的朋友,第一次打开Kibana可能会有点懵。满屏的英文菜单和术语,虽然对开发者来说不算大问题,但对于需要频繁使用它进行数据分析的产品经理、运营同学,或者刚入门的新手来说,这无疑增加了一道理解门槛。我自己带团队的时候,就发现把Kibana界面换成中文后,团队协作和数据排查的效率能提升不少。大家不用再纠结某个按钮的准确含义,能更专注于数据本身要表达的故事。

所以,我们今天聊的第一个实战点,就是给你的Kibana“穿上”中文外衣。这不仅仅是改个语言那么简单,它关乎整个团队的使用体验和上手速度。别小看这个配置,它藏在Kibana的一个核心配置文件里,改对了事半功倍,改错了可能连服务都启动不起来。接下来,我就手把手带你找到这个关键开关,并确保一次配置成功。

2. 实战第一步:精准定位并配置Kibana中文界面

2.1 找到那个“神秘”的配置文件:kibana.yml

Kibana的所有行为,几乎都由一个叫 kibana.yml 的配置文件控制。这个文件的位置取决于你的安装方式。如果你是用压缩包解压安装的,它通常在 Kibana安装目录/config 下面。如果你是用Docker运行的,那可能需要通过卷挂载(volume)的方式,在宿主机上修改这个文件,或者启动容器时传入环境变量。

这里我以最常见的本地安装为例。假设你的Kibana安装在 /opt/kibana-8.12.0 目录,那么配置文件的全路径就是 /opt/kibana-8.12.0/config/kibana.yml。我建议在修改前,先用 cp 命令做个备份,这是个好习惯,能避免手滑带来的灾难。

cd /opt/kibana-8.12.0/config
cp kibana.yml kibana.yml.backup

2.2 修改核心参数:i18n.locale

用你喜欢的文本编辑器(比如 vimnano 或者 VS Code)打开这个 kibana.yml 文件。这个文件里有很多配置项,大部分都被注释掉了(以 # 开头)。我们需要找到关于本地化(国际化)的设置。你可以直接搜索 i18n.locale 这个关键词。

通常,你会看到类似这样的一行:

# i18n.locale: "en"

注意,它前面有个 #,表示这行配置目前是不生效的。我们的任务就是激活它,并把值改成 zh-CN。请确保修改的是没有被注释的、正确的那一行。有时候文件里可能会有多个类似的行,你要找到真正起作用的那一个。最稳妥的做法是,在文件的末尾,自己新增一行:

i18n.locale: "zh-CN"

这里有个我踩过的坑要提醒你:缩进和格式非常重要。YAML文件对格式很敏感。键值对的冒号后面必须有一个空格,就像上面写的那样 "zh-CN"。如果写成 i18n.locale:"zh-CN"(冒号后没空格),Kibana可能无法正确识别,导致启动失败或者配置不生效。

2.3 重启服务并验证效果

保存好配置文件后,需要重启Kibana服务让配置生效。重启的方式也因安装方式而异。

  • 系统服务:如果你是用 systemd 管理的(例如 sudo systemctl restart kibana)。
  • 直接运行:如果你是在前台用 ./bin/kibana 运行的,需要先 Ctrl+C 停止,再重新启动。
  • Docker容器:需要重启容器(docker restart <container_name>)。

重启完成后,打开浏览器访问你的Kibana(通常是 http://localhost:5601)。如果一切顺利,你应该会看到一个完全中文的登录和主界面。菜单栏的“Discover”变成了“发现”,“Dashboard”变成了“仪表板”,“Management”变成了“管理”,整个界面瞬间亲切多了。如果没生效,别急,首先去检查Kibana的日志文件(通常在 安装目录/logs 下),看看启动过程中有没有关于配置文件的报错信息,最常见的问题就是上面提到的YAML格式错误。

3. 打通数据管道:将Elasticsearch索引关联到Kibana

界面汉化只是第一步,让Kibana能“看见”并分析我们ES里的数据,才是核心任务。很多新手会在这里卡住,明明ES里已经有数据了,为什么Kibana里空空如也?这是因为Kibana不会自动发现所有索引,需要你手动或通过模式去创建“索引模式”,这是Kibana理解ES数据的桥梁。

3.1 理解核心概念:什么是“索引模式”?

你可以把“索引模式”想象成Kibana访问ES数据的一个“通行证”或“视图模板”。ES里可能有很多索引,比如 logstash-2024.05-01, logstash-2024.05-02,它们每天生成一个。你不需要为每一个索引都单独创建一次查看权限,那样太麻烦了。你只需要创建一个索引模式,例如 logstash-*,这个星号就是通配符,它能匹配所有以 logstash- 开头的索引。创建了这个模式后,Kibana就知道:“哦,用户想查看所有符合 logstash-* 模式的索引数据”。

所以,关联索引的本质,就是在Kibana中创建正确的索引模式。这个模式告诉Kibana两件事:1. 去哪个ES集群的哪些索引里找数据;2. 这些数据的时间字段是哪个(这对于按时间序列分析数据至关重要)。

3.2 一步步创建你的第一个索引模式

  1. 进入管理界面:在汉化后的Kibana左侧导航栏,点击“管理”(原Management)。在“Kibana”区域,找到并点击“索引模式”。
  2. 创建索引模式:点击“创建索引模式”按钮。
  3. 定义模式名称:在“索引模式名称”输入框中,填入你要匹配的索引名。如果你有日期后缀的索引,强烈建议使用通配符。例如,你的索引叫 app-logs-2024.05,你可以输入 app-logs-* 来匹配所有月份。输入时,Kibana会在下方实时显示当前匹配到的索引列表,这是一个很好的验证方式。
  4. 指定时间字段:这是最关键的一步!点击“下一步”后,系统会要求你选择一个时间字段。如果你的索引数据中包含时间戳字段(比如 @timestampcreate_time),一定要在这里选中它。选择了时间字段后,Kibana才能基于时间做柱状图、做时间序列分析,才能在“发现”页面中按时间筛选数据。如果你的数据没有时间字段,可以选择“我没有时间字段”,但这会大大限制后续的可视化能力。
  5. 完成创建:点击“创建索引模式”。成功后,你就完成了ES索引与Kibana的关联。

注意:有时候你会遇到下拉框里找不到你想要的字段名。这通常是因为ES索引中还没有数据,或者字段类型是“text”而非“date”。Kibana需要从索引中采样数据来识别字段。确保你的索引中至少存在一条包含有效时间戳的数据,并且该字段在ES中的映射类型是 datedate_nanos

4. 探索与洞察:在“发现”页面查看原始数据

创建好索引模式后,数据的大门就打开了。我们第一个要去的地方就是“发现”页面。这里是你的“数据探索实验室”,你可以看到原始的、未经加工的文档数据,并进行初步的查询和筛选。

4.1 熟悉“发现”页面的布局

点击左侧导航栏的“发现”,你会进入这个页面。页面主要分为三块:

  • 左侧字段列表:这里列出了你索引模式匹配到的所有索引中包含的字段。你可以看到每个字段的类型(如文本、数字、日期),以及该字段值的一些示例和分布统计(比如某个状态码 status 出现最多的值是什么)。这是你了解数据结构的绝佳窗口。
  • 中间数据表格:这里以表格形式展示了一条条具体的文档数据。默认会显示最近15分钟的数据(如果你配置了时间字段)。你可以点击每条数据左边的箭头展开,查看该文档完整的JSON结构。
  • 上方查询栏和时间选择器:这是你的“控制台”。你可以在这里输入Kibana查询语言(KQL)或者Lucene查询语法来过滤数据。时间选择器可以让你灵活查看不同时间范围的数据,比如查看过去1小时、今天、本周,或者自定义绝对时间范围。

4.2 执行你的第一次数据查询

假设我们查看的是应用日志,想找出所有错误级别的日志。我们可以在查询栏输入简单的KQL表达式:level: "ERROR"。KQL的语法很直观,就像在说“字段level的值等于ERROR”。输入后按回车或者点击“刷新”,中间表格的数据就会立即过滤,只显示错误日志。

你还可以组合查询条件,比如 level: "ERROR" AND service: "payment",意思是查找支付服务产生的错误日志。通过不断尝试这种交互式查询,你可以快速定位问题,验证你的假设。你还可以点击左侧字段列表中的任意字段,选择“添加筛选器”,Kibana会自动帮你生成查询条件并应用到当前视图,这对于不熟悉语法的同学非常友好。

5. 从数据到图表:构建你的第一个可视化

看到数据只是开始,将数据转化成图表,才能获得更直观的洞察。Kibana的可视化功能非常强大,我们从一个最简单的柱状图开始。

5.1 创建可视化图表

点击左侧导航栏的“可视化”(原Visualize),然后点击“创建新的可视化”。你会看到琳琅满目的图表类型:柱状图、折线图、饼图、指标图、数据表等等。我们选择最常用的“柱状图”(Vertical bar)。

接下来,你需要选择数据源,也就是我们之前创建好的索引模式(例如 app-logs-*)。然后,你就进入了可视化编辑器。

5.2 配置图表指标与桶

这是制作图表的精髓部分,理解了两个核心概念你就掌握了:

  • 指标(Metrics):你想“计算”什么?通常是数值的聚合,比如计数(Count)、求和(Sum)、平均值(Average)。对于日志,我们最常用的就是“计数”,也就是统计某个事件发生了多少次。
  • 桶(Buckets):你想“按什么分组”?也就是横坐标(对于柱状图)或者图例按什么来划分。比如,按时间分组(查看趋势)、按错误级别分组(查看分布)、按服务名称分组(查看哪个服务问题最多)。

我们来创建一个“过去24小时,按小时统计的日志数量”的图表:

  1. 在“指标”区域,保持默认的“计数”。
  2. 在“桶”区域,点击“添加” -> “X轴”。
  3. 在“聚合”中选择“日期直方图”,字段选择你的时间字段(如 @timestamp)。
  4. 在“最小间隔”中,选择“小时”。然后点击右上角的“更新”或“应用更改”。

瞬间,一个漂亮的、展示每小时日志量的趋势柱状图就生成了!你可以看到在哪个时间点出现了日志高峰。你还可以继续添加“拆分系列”桶,比如再按 level 字段拆分,这样你就能在一个图里同时看到“INFO”、“ERROR”、“WARN”级别日志在每个小时的分布对比。

6. 组装仪表板:打造你的数据监控大屏

单个图表的信息是有限的。当你有多个相关的可视化图表时,就可以把它们组装到一个“仪表板”里,形成一个综合的数据监控视图。这对于系统监控、业务报表场景来说,是终极展示形式。

6.1 创建并编排仪表板

点击左侧导航栏的“仪表板”(原Dashboard),点击“创建新的仪表板”。你会看到一个空白的画布。然后点击右上角的“添加”按钮,从列表中选择你之前创建好的所有可视化图表,比如“每小时日志量趋势图”、“错误级别分布饼图”、“Top 10 服务错误排名表”。

图表会被添加到画布上,你可以用鼠标拖动它们来调整位置,也可以拖动图表的边缘来调整大小。Kibana的仪表板是响应式的,你可以自由地排列组合,打造出最适合你屏幕和观看习惯的布局。想象一下,把系统关键指标、错误报警、性能趋势图都放在一个屏幕上,一目了然,是不是很有掌控感?

6.2 实现仪表板的交互与联动

仪表板更强大的地方在于交互性。你可以在仪表板级别设置一个统一的时间筛选器,当你调整时间范围时,仪表板内所有基于时间序列的图表都会同步更新。你还可以利用“筛选器”。例如,在展示全局数据的仪表板中,你点击某个图表中代表“上海地区”的柱状条,Kibana可以自动将筛选条件“region: Shanghai”应用到仪表板内的其他图表上,从而联动查看上海地区的详细数据。这种钻取分析的能力,让静态的报表变成了动态的数据探索工具。

最后,别忘了保存你的仪表板,给它起个清晰的名字,比如“生产环境应用日志监控”。之后,你可以随时从仪表板列表打开它,也可以将其嵌入到其他内部系统,或者设置定时刷新,让它成为你每日晨会的数据参考。走到这一步,你已经完成了从原始数据接入、到探索分析、再到可视化呈现的完整闭环,真正让Elasticsearch里的数据“活”了起来,成为了驱动决策的有力工具。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐