一、部署模式说明
Serverless 和 Stack 是 Elasticsearch 9.3.0 的两种核心部署模式,需先明确:
-
Serverless:Elastic 提供的无服务器部署模式,无需管理基础设施,按需付费,自动扩缩容。
-
Stack:自托管部署模式(即传统的 Elastic Stack),需自行管理 Elasticsearch、Kibana 等组件的部署、运维和扩展。
二、日志数据源概述
核心设置:observability:logSources
该 Kibana 高级设置用于定义部署或项目中存储和查询日志数据的索引模式。
-
作用:Kibana 的"日志"应用、日志阈值规则等功能,均基于此设置指定的索引模式来发现、查询和分析日志数据。
-
格式:通常为索引模式字符串(如
logs-*、my-app-logs-*),多个模式用逗号分隔。
三、方法一:通过 Kibana 高级设置配置
详细步骤(ES 9.3.0 适配)
-
打开高级设置页面:
-
方式一:通过左侧导航菜单进入 Management > Kibana > Advanced Settings。
-
方式二:使用 Kibana 顶部的全局搜索栏,输入"Advanced Settings"并直接打开。
-
-
配置日志数据源:
-
在高级设置页面中,搜索
observability:logSources。 -
点击"Edit",输入自定义的索引模式(如
logs-*,my-service-logs-*)。 -
点击"Save changes"保存配置。
-
注意事项(展开分析)
-
避免添加非日志索引:
-
原因:Kibana 的日志功能假设索引包含标准日志字段(如
@timestamp、message、log.level等)。若添加不含这些字段的索引,会导致:-
日志应用无法正常解析和展示数据;
-
查询性能下降(因需扫描无关索引);
-
可视化、告警等功能异常。
-
-
-
影响日志阈值规则:
- 原因:日志阈值规则(Log Threshold Rules)是 Kibana 可观测性的核心功能,用于基于日志数据触发告警。规则的查询范围完全由
observability:logSources决定,因此修改此设置会直接改变规则的监控数据源。
- 原因:日志阈值规则(Log Threshold Rules)是 Kibana 可观测性的核心功能,用于基于日志数据触发告警。规则的查询范围完全由
四、方法二:通过 Saved Objects API 配置
重要限制
-
会覆盖所有高级设置:
-
原因:
observability:logSources是"Advanced Settings"Saved Object 的一部分,而非独立对象。导入该 Saved Object 时,会完全替换目标集群的所有 Kibana 高级设置 (不仅是observability:logSources)。 -
风险:若目标集群已修改其他高级设置(如日期格式、默认索引模式等),导入后会丢失这些修改。
-
建议:操作前先导出目标集群的"Advanced Settings"Saved Object 作为备份。
-
-
版本兼容性限制:
-
原文表述:"向后兼容,但不向前兼容"。
-
详细解释:
-
向后兼容:新版本(如 9.3.0)可导入旧版本(如 9.0、8.x)的"Advanced Settings"Saved Object。
-
不向前兼容 :旧版本(如 8.x)无法导入新版本(如 9.3.0)的"Advanced Settings"Saved Object(因新版本可能包含旧版本不支持的设置项)。
-
-
适配 ES 9.3.0:仅可从 8.x 或 9.x 早期版本导入到 9.3.0,不可从 9.3.0 导入到更低版本。
-
详细步骤(含 ES 9.3.0 API 示例)
前置条件
-
拥有 Kibana 的
manage_saved_objects权限。 -
熟悉 Kibana Saved Objects API(ES 9.3.0 中 API 端点无重大变化)。
操作步骤
-
在源集群配置日志数据源:
- 按"方法一"在源集群的 Kibana 中配置好
observability:logSources。
- 按"方法一"在源集群的 Kibana 中配置好
-
进入源集群的 Saved Objects 管理页面:
- 导航至 Management > Kibana > Saved Objects,或通过全局搜索打开。
-
导出"Advanced Settings"Saved Object:
-
方式一:通过 UI 导出:
-
在 Saved Objects 页面,搜索"Advanced Settings"。
-
选中该对象,点击"Export",选择"Include related objects"(可选,通常无需),导出为 NDJSON 文件。
-
-
方式二:通过 API 导出(ES 9.3.0 示例):
Bashcurl -X POST "http://<kibana-host>:<port>/api/saved_objects/_export" \ -H "kbn-xsrf: true" \ -H "Content-Type: application/json" \ -d '{ "type": ["config"], "includeReferencesDeep": false }' \ -o advanced_settings.ndjson- 说明:
config是"Advanced Settings"Saved Object 的类型;includeReferencesDeep设为false因无需关联其他对象。
- 说明:
-
-
导入到目标集群:
-
方式一:通过 UI 导入:
- 在目标集群的 Saved Objects 页面,点击"Import",选择导出的 NDJSON 文件,勾选"Automatically overwrite conflicts"(需谨慎,会覆盖目标集群的所有高级设置),点击"Import"。
-
方式二:通过 API 导入(ES 9.3.0 示例):
Bashcurl -X POST "http://<target-kibana-host>:<port>/api/saved_objects/_import" \ -H "kbn-xsrf: true" \ -F "file=@advanced_settings.ndjson" \ -F "overwrite=true"- 说明:
overwrite=true表示覆盖目标集群的"Advanced Settings"Saved Object,必须添加此参数(否则会因冲突失败)。
- 说明:
-
五、ES 9.3.0 优化建议
-
优先使用 Kibana UI 配置:
- 除非需批量部署到多个集群,否则建议通过 UI 配置
observability:logSources,避免误覆盖其他高级设置。
- 除非需批量部署到多个集群,否则建议通过 UI 配置
-
使用标准日志索引模式:
- ES 9.3.0 推荐使用 Elastic Common Schema (ECS) 规范的日志索引,索引模式建议为
logs-*-*(如logs-myapp-production-*),可最大化兼容 Kibana 日志功能。
- ES 9.3.0 推荐使用 Elastic Common Schema (ECS) 规范的日志索引,索引模式建议为
-
定期备份高级设置:
- 无论是否使用 API 配置,建议定期导出"Advanced Settings"Saved Object 作为备份,尤其在生产环境中。
-
验证配置生效:
- 配置完成后,进入 Kibana 的 Logs 应用,检查是否能正常发现和查询指定索引的日志数据;同时检查日志阈值规则是否正常运行。