- Kibana 指南其他版本
- 什么是 Kibana?
- 8.17 版本的新增功能
- Kibana 概念
- 快速入门
- 设置
- 生产注意事项
- Discover
- 仪表板
- Canvas
- 地图
- 报告和共享
- 机器学习
- Graph
- 告警
- 可观测性
- 搜索
- 安全性
- 开发工具
- Fleet
- Osquery
- 堆栈监控
- 堆栈管理
- REST API
- Kibana 插件
- 问题排查
- 辅助功能
- 发行说明
- 升级说明
- Kibana 8.17.0
- Kibana 8.16.1
- Kibana 8.16.0
- Kibana 8.15.5
- Kibana 8.15.4
- Kibana 8.15.3
- Kibana 8.15.2
- Kibana 8.15.1
- Kibana 8.15.0
- Kibana 8.14.3
- Kibana 8.14.2
- Kibana 8.14.1
- Kibana 8.14.0
- Kibana 8.13.4
- Kibana 8.13.3
- Kibana 8.13.2
- Kibana 8.13.1
- Kibana 8.13.0
- Kibana 8.12.2
- Kibana 8.12.1
- Kibana 8.12.0
- Kibana 8.11.4
- Kibana 8.11.3
- Kibana 8.11.2
- Kibana 8.11.1
- Kibana 8.11.0
- Kibana 8.10.4
- Kibana 8.10.3
- Kibana 8.10.2
- Kibana 8.10.1
- Kibana 8.10.0
- Kibana 8.9.2
- Kibana 8.9.1
- Kibana 8.9.0
- Kibana 8.8.2
- Kibana 8.8.1
- Kibana 8.8.0
- Kibana 8.7.1
- Kibana 8.7.0
- Kibana 8.6.1
- Kibana 8.6.0
- Kibana 8.5.2
- Kibana 8.5.1
- Kibana 8.5.0
- Kibana 8.4.3
- Kibana 8.4.2
- Kibana 8.4.1
- Kibana 8.4.0
- Kibana 8.3.3
- Kibana 8.3.2
- Kibana 8.3.1
- Kibana 8.3.0
- Kibana 8.2.3
- Kibana 8.2.2
- Kibana 8.2.1
- Kibana 8.2.0
- Kibana 8.1.3
- Kibana 8.1.2
- Kibana 8.1.1
- Kibana 8.1.0
- Kibana 8.0.0
- Kibana 8.0.0-rc2
- Kibana 8.0.0-rc1
- Kibana 8.0.0-beta1
- Kibana 8.0.0-alpha2
- Kibana 8.0.0-alpha1
- 开发人员指南
配置服务
编辑配置服务
编辑Kibana 为希望支持其插件可调整运行时行为的插件开发者提供了 ConfigService
。插件只能读取自己的配置值,无法直接访问 Kibana Core 或其他插件的配置值。
配置服务仅在服务端可用。
// in Legacy platform const basePath = config.get('server.basePath'); // in Kibana Platform 'basePath' belongs to the http service const basePath = core.http.basePath.get(request);
要访问您的插件配置,您应该
- 在您的插件定义中声明插件特定的
configPath
(如果未指定,则会回退到插件id
)。 - 从插件的主文件导出配置的架构验证。架构是强制性的。如果插件在没有架构声明的情况下读取配置,
ConfigService
将抛出错误。
my_plugin/server/index.ts
import { schema, TypeOf } from '@kbn/config-schema'; export const plugin = … export const config = { schema: schema.object(…), }; export type MyPluginConfigType = TypeOf<typeof config.schema>;
- 读取通过
PluginInitializerContext
公开的配置值
my_plugin/server/plugin.ts
import type { PluginInitializerContext } from '@kbn/core/server'; export class MyPlugin { constructor(initializerContext: PluginInitializerContext) { this.config$ = initializerContext.config.create<MyPluginConfigType>(); // or if config is optional: this.config$ = initializerContext.config.createIfExists<MyPluginConfigType>(); } ... }
如果您的插件也有客户端部分,您还可以使用配置的 exposeToBrowser
允许列表属性将其配置属性公开给客户端。
my_plugin/server/index.ts
import { schema, TypeOf } from '@kbn/config-schema'; import type { PluginConfigDescriptor } from '@kbn/core/server'; const configSchema = schema.object({ secret: schema.string({ defaultValue: 'Only on server' }), uiProp: schema.string({ defaultValue: 'Accessible from client' }), }); type ConfigType = TypeOf<typeof configSchema>; export const config: PluginConfigDescriptor<ConfigType> = { exposeToBrowser: { uiProp: true, }, schema: configSchema, };
仅包含公开属性的配置将通过插件的 initializerContext
在客户端可用。
my_plugin/public/index.ts
interface ClientConfigType { uiProp: string; } export class MyPlugin implements Plugin<PluginSetup, PluginStart> { constructor(private readonly initializerContext: PluginInitializerContext) {} public async setup(core: CoreSetup, deps: {}) { const config = this.initializerContext.config.get<ClientConfigType>(); }
默认情况下,所有插件都被认为是启用的。如果您想禁用您的插件,可以在插件配置中声明 enabled
标志。这是一个特殊的 Kibana 平台键。Kibana 读取其值,如果 enabled: false
,则不会创建插件实例。
export const config = { schema: schema.object({ enabled: schema.boolean({ defaultValue: false }) }), };
处理插件配置弃用
编辑如果您的插件具有已弃用的配置键,您可以使用 deprecations
配置描述符字段来描述它们。弃用是按插件管理的,这意味着您不需要指定整个属性路径,而是使用相对于插件配置根的相对路径。
my_plugin/server/index.ts
import { schema, TypeOf } from '@kbn/config-schema'; import type { PluginConfigDescriptor } from '@kbn/core/server'; const configSchema = schema.object({ newProperty: schema.string({ defaultValue: 'Some string' }), }); type ConfigType = TypeOf<typeof configSchema>; export const config: PluginConfigDescriptor<ConfigType> = { schema: configSchema, deprecations: ({ rename, unused }) => [ rename('oldProperty', 'newProperty'), unused('someUnusedProperty'), ], };
在某些情况下,访问整个配置以进行弃用是必要的。对于这些边缘情况,在声明弃用时也可以访问 renameFromRoot
和 unusedFromRoot
。
my_plugin/server/index.ts
export const config: PluginConfigDescriptor<ConfigType> = { schema: configSchema, deprecations: ({ renameFromRoot, unusedFromRoot }) => [ renameFromRoot('oldplugin.property', 'myplugin.property'), unusedFromRoot('oldplugin.deprecated'), ], };
根据上下文引用验证您的配置
编辑某些功能在不同的模式(dev/prod/dist,甚至无服务器)下运行时需要特殊的配置。为此,核心在验证的上下文中注入以下引用
上下文引用 | 潜在值 | 描述 |
---|---|---|
|
|
Kibana 是否在开发模式下运行? |
|
|
Kibana 是否在生产模式下运行(从二进制文件运行)? |
|
|
Kibana 是否从可分发的构建版本运行(不是从源代码运行)? |
|
|
Kibana 是否在无服务器产品中运行? |
|
|
当前 Kibana 的版本 |
|
|
构建编号 |
|
|
当前运行的分支 |
|
|
构建 SHA(通常指最后一次提交的 SHA) |
|
|
构建的 ISO 8601 日期 |
要在配置验证架构中使用上面列出的任何引用,可以通过 schema.contextRef('{CONTEXT_REFERENCE}')
来访问它们。
export const config = { schema: schema.object({ // Enabled by default in Dev mode enabled: schema.boolean({ defaultValue: schema.contextRef('dev') }), // Setting only allowed in the Serverless offering plansForWorldPeace: schema.conditional( schema.contextRef('serverless'), true, schema.string({ defaultValue: 'Free hugs' }), schema.never() ), }), };
对于无服务器与传统配置,建议使用 offeringBasedSchema
辅助函数
import { schema, offeringBasedSchema } from '@kbn/config-schema' export const config = { schema: schema.object({ // Enabled by default in Dev mode enabled: schema.boolean({ defaultValue: schema.contextRef('dev') }), // Setting only allowed in the Serverless offering plansForWorldPeace: offeringBasedSchema({ serverless: schema.string({ defaultValue: 'Free hugs' }), }), }), };
On this page