[Fleet] Allow to enable global logs and metrics dataview creation with config enableManagedLogsAndMetricsDataviews (#205268)

This commit is contained in:
Nicolas Chaulet 2024-12-31 10:02:10 -05:00 committed by GitHub
parent 7865d0951c
commit dd31e406be
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 28 additions and 7 deletions

View file

@ -318,3 +318,6 @@ The features in this section are experimental and may be changed or removed comp
Elastic will make a best effort to fix any issues, but experimental features are not supported to the same level as generally available (GA) features. Elastic will make a best effort to fix any issues, but experimental features are not supported to the same level as generally available (GA) features.
==== ====
`xpack.fleet.enableManagedLogsAndMetricsDataviews`::
Set to `true` (default), to enable the automatic creation of global `logs-*` and `metrics-*` data views.

View file

@ -51,6 +51,7 @@ export interface FleetConfigType {
agentIdVerificationEnabled?: boolean; agentIdVerificationEnabled?: boolean;
eventIngestedEnabled?: boolean; eventIngestedEnabled?: boolean;
enableExperimental?: string[]; enableExperimental?: string[];
enableManagedLogsAndMetricsDataviews?: boolean;
packageVerification?: { packageVerification?: {
gpgKeyPath?: string; gpgKeyPath?: string;
}; };

View file

@ -131,6 +131,7 @@ export const config: PluginConfigDescriptor = {
{ {
isAirGapped: schema.maybe(schema.boolean({ defaultValue: false })), isAirGapped: schema.maybe(schema.boolean({ defaultValue: false })),
enableDeleteUnenrolledAgents: schema.maybe(schema.boolean({ defaultValue: false })), enableDeleteUnenrolledAgents: schema.maybe(schema.boolean({ defaultValue: false })),
enableManagedLogsAndMetricsDataviews: schema.boolean({ defaultValue: true }),
registryUrl: schema.maybe(schema.uri({ scheme: ['http', 'https'] })), registryUrl: schema.maybe(schema.uri({ scheme: ['http', 'https'] })),
registryProxyUrl: schema.maybe(schema.uri({ scheme: ['http', 'https'] })), registryProxyUrl: schema.maybe(schema.uri({ scheme: ['http', 'https'] })),
agents: schema.object({ agents: schema.object({

View file

@ -35,6 +35,7 @@ import { withPackageSpan } from '../../packages/utils';
import { tagKibanaAssets } from './tag_assets'; import { tagKibanaAssets } from './tag_assets';
import { getSpaceAwareSaveobjectsClients } from './saved_objects'; import { getSpaceAwareSaveobjectsClients } from './saved_objects';
import { appContextService } from '../../..';
const MAX_ASSETS_TO_INSTALL_IN_PARALLEL = 1000; const MAX_ASSETS_TO_INSTALL_IN_PARALLEL = 1000;
@ -133,8 +134,10 @@ export async function installKibanaAssets(options: {
return []; return [];
} }
await createDefaultIndexPatterns(savedObjectsImporter); await installManagedIndexPattern({
await makeManagedIndexPatternsGlobal(savedObjectsClient); savedObjectsClient,
savedObjectsImporter,
});
return await installKibanaSavedObjects({ return await installKibanaSavedObjects({
logger, logger,
@ -144,6 +147,19 @@ export async function installKibanaAssets(options: {
}); });
} }
export async function installManagedIndexPattern({
savedObjectsClient,
savedObjectsImporter,
}: {
savedObjectsClient: SavedObjectsClientContract;
savedObjectsImporter: SavedObjectsImporterContract;
}) {
if (appContextService.getConfig()?.enableManagedLogsAndMetricsDataviews === true) {
await createDefaultIndexPatterns(savedObjectsImporter);
await makeManagedIndexPatternsGlobal(savedObjectsClient);
}
}
export async function createDefaultIndexPatterns( export async function createDefaultIndexPatterns(
savedObjectsImporter: SavedObjectsImporterContract savedObjectsImporter: SavedObjectsImporterContract
) { ) {

View file

@ -13,13 +13,11 @@ import { getPathParts } from '../../archive';
import { saveKibanaAssetsRefs } from '../../packages/install'; import { saveKibanaAssetsRefs } from '../../packages/install';
import { makeManagedIndexPatternsGlobal } from '../index_pattern/install';
import type { ArchiveAsset } from './install'; import type { ArchiveAsset } from './install';
import { import {
KibanaSavedObjectTypeMapping, KibanaSavedObjectTypeMapping,
createDefaultIndexPatterns,
createSavedObjectKibanaAsset, createSavedObjectKibanaAsset,
installManagedIndexPattern,
isKibanaAssetType, isKibanaAssetType,
toAssetReference, toAssetReference,
} from './install'; } from './install';
@ -45,8 +43,10 @@ export async function installKibanaAssetsWithStreaming({
const { savedObjectClientWithSpace, savedObjectsImporter } = const { savedObjectClientWithSpace, savedObjectsImporter } =
getSpaceAwareSaveobjectsClients(spaceId); getSpaceAwareSaveobjectsClients(spaceId);
await createDefaultIndexPatterns(savedObjectsImporter); await installManagedIndexPattern({
await makeManagedIndexPatternsGlobal(savedObjectsClient); savedObjectsImporter,
savedObjectsClient,
});
const assetRefs: KibanaAssetReference[] = []; const assetRefs: KibanaAssetReference[] = [];
let batch: ArchiveAsset[] = []; let batch: ArchiveAsset[] = [];