From 38e7da3aed075585061aae7aba2eaad9f2ae1c55 Mon Sep 17 00:00:00 2001 From: ymao1 Date: Thu, 8 Apr 2021 18:18:44 -0400 Subject: [PATCH 1/2] [Alerting] Preconfigured alert history index connector (#94909) * Adding preconfigured alert history index * Adding functions to build alert history document * Adding functions to build alert history document * Moving index template creation to plugin start * Adding unit tests * Adding unit tests * Adding unit tests * Simplifying * Revert "Merge branch 'master' of https://github.com/elastic/kibana into alerting/default-es-index-schema" This reverts commit 957c333aa474e4a65e47a3119e4d60a7f19215fe, reversing changes made to 4b1b78761ea6d26bede52d0785419cfc0ae3d5a0. * Reverting some changes * Reverting some changes * Adding index override * Updating UI with index override * Only allow indexOverride for preconfigured alert history connector * Handling preconfigured connector id clashes * Cleanup * UI unit tests * Fixing default schema shown in UI * Fixing functional tests * Adding functional test * Fixing functional tests * Adding docs and link to docs * Adding config to docker allowlist * Fixing wrong typescript operator * Changing default for config to false * Cleanup * Adding note about index privileges to docs * Fixing i18n * PR fixes * PR fixes * PR fixes * PR fixes - wording * PR fixes * Fixing unit and functional tests * Fixing types check * ES -> Elasticsearch * Moving files * Adding kibana- to beginning of prefix * Namespacing alert data within schema with kibana * Fix i18n * Updating docs * Fixing unit tests * Fixing doc links * Fixing types check * PR fixes Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- docs/settings/alert-action-settings.asciidoc | 6 +- .../user/alerting/action-types/index.asciidoc | 35 +++ .../pre-configured-connectors.asciidoc | 10 +- ...pre-configured-alert-history-connector.png | Bin 0 -> 256173 bytes .../public/doc_links/doc_links_service.ts | 1 + .../resources/base/bin/kibana-docker | 1 + .../common/alert_history_schema.test.ts | 122 +++++++++ .../actions/common/alert_history_schema.ts | 90 +++++++ x-pack/plugins/actions/common/index.ts | 4 +- .../actions/server/actions_client.test.ts | 1 + .../actions/server/actions_config.test.ts | 1 + .../builtin_action_types/es_index.test.ts | 239 ++++++++++++++++++ .../server/builtin_action_types/es_index.ts | 34 ++- x-pack/plugins/actions/server/config.test.ts | 2 + x-pack/plugins/actions/server/config.ts | 1 + x-pack/plugins/actions/server/mocks.ts | 3 +- x-pack/plugins/actions/server/plugin.test.ts | 108 +++++++- x-pack/plugins/actions/server/plugin.ts | 34 ++- .../alert_history_es_index.ts | 26 ++ ...reate_alert_history_index_template.test.ts | 52 ++++ .../create_alert_history_index_template.ts | 106 ++++++++ .../alert_history_es_index/mappings.json | 84 ++++++ x-pack/plugins/actions/server/types.ts | 6 +- .../task_runner/create_execution_handler.ts | 2 + .../server/task_runner/task_runner.test.ts | 2 +- .../transform_action_params.test.ts | 36 +++ .../task_runner/transform_action_params.ts | 12 +- .../es_index/es_index.test.tsx | 61 ++++- .../es_index/es_index.tsx | 28 ++ .../es_index/es_index_params.test.tsx | 127 +++++++++- .../es_index/es_index_params.tsx | 164 ++++++++++-- .../components/builtin_action_types/types.ts | 1 + .../application/lib/action_variables.test.ts | 20 ++ .../application/lib/action_variables.ts | 8 + .../triggers_actions_ui/public/types.ts | 16 +- .../uptime/public/state/api/alert_actions.ts | 1 + .../alerting_api_integration/common/config.ts | 3 + .../spaces_only/config.ts | 1 + .../preconfigured_alert_history_connector.ts | 165 ++++++++++++ .../spaces_only/tests/actions/get_all.ts | 21 ++ .../spaces_only/tests/actions/index.ts | 1 + x-pack/test/functional_with_es_ssl/config.ts | 1 + 42 files changed, 1577 insertions(+), 59 deletions(-) create mode 100644 docs/user/alerting/images/pre-configured-alert-history-connector.png create mode 100644 x-pack/plugins/actions/common/alert_history_schema.test.ts create mode 100644 x-pack/plugins/actions/common/alert_history_schema.ts create mode 100644 x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/alert_history_es_index.ts create mode 100644 x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/create_alert_history_index_template.test.ts create mode 100644 x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/create_alert_history_index_template.ts create mode 100644 x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/mappings.json create mode 100644 x-pack/test/alerting_api_integration/spaces_only/tests/actions/builtin_action_types/preconfigured_alert_history_connector.ts diff --git a/docs/settings/alert-action-settings.asciidoc b/docs/settings/alert-action-settings.asciidoc index 20bbbcf874c05..c748d63484e28 100644 --- a/docs/settings/alert-action-settings.asciidoc +++ b/docs/settings/alert-action-settings.asciidoc @@ -53,8 +53,12 @@ You can configure the following settings in the `kibana.yml` file. + Disabled action types will not appear as an option when creating new connectors, but existing connectors and actions of that type will remain in {kib} and will not function. +| `xpack.actions` +`.preconfiguredAlertHistoryEsIndex` {ess-icon} + | Enables a preconfigured alert history {es} <> connector. Defaults to `false`. + | `xpack.actions.preconfigured` - | Specifies preconfigured action IDs and configs. Defaults to {}. + | Specifies preconfigured connector IDs and configs. Defaults to {}. | `xpack.actions.proxyUrl` {ess-icon} | Specifies the proxy URL to use, if using a proxy for actions. By default, no proxy is used. diff --git a/docs/user/alerting/action-types/index.asciidoc b/docs/user/alerting/action-types/index.asciidoc index 80226e737e9c0..e23dcbf298fd5 100644 --- a/docs/user/alerting/action-types/index.asciidoc +++ b/docs/user/alerting/action-types/index.asciidoc @@ -82,3 +82,38 @@ PUT test } } -------------------------------------------------- + +[float] +[[preconfigured-connector-alert-history]] +=== Alert history {es} index connector + +experimental[] {kib} offers a preconfigured index connector to facilitate indexing active alert data into {es}. + +[WARNING] +================================================== +This functionality is experimental and may be changed or removed completely in a future release. +================================================== + +To use this connector, set the <> configuration to `true`. + +```js + xpack.actions.preconfiguredAlertHistoryEsIndex: true +``` + +When creating a new rule, add an <> and select the `Alert history Elasticsearch index (preconfigured)` connector. + +[role="screenshot"] +image::images/pre-configured-alert-history-connector.png[Select pre-configured alert history connectors] + +Documents are indexed using a preconfigured schema that captures the <> available for the rule. By default, these documents are indexed into the `kibana-alert-history-default` index, but you can specify a different index. Index names must start with `kibana-alert-history-` to take advantage of the preconfigured alert history index template. + +[IMPORTANT] +============================================== +To write documents to the preconfigured index, you must have `all` or `write` privileges to the `kibana-alert-history-*` indices. Refer to <> for more information. +============================================== + +[NOTE] +================================================== +The `kibana-alert-history-*` indices are not configured to use ILM so they must be maintained manually. If the index size grows large, +consider using the {ref}/docs-delete-by-query.html[delete by query] API to clean up older documents in the index. +================================================== \ No newline at end of file diff --git a/docs/user/alerting/action-types/pre-configured-connectors.asciidoc b/docs/user/alerting/action-types/pre-configured-connectors.asciidoc index ee8a28a864824..557404f24288a 100644 --- a/docs/user/alerting/action-types/pre-configured-connectors.asciidoc +++ b/docs/user/alerting/action-types/pre-configured-connectors.asciidoc @@ -51,6 +51,14 @@ two out-of-the box connectors: <> and <>. ============================================== +[float] +[[build-in-preconfigured-connectors]] +==== Built-in preconfigured connectors + +{kib} provides one built-in preconfigured connector: + +* <> + [float] [[managing-pre-configured-connectors]] ==== View preconfigured connectors @@ -63,4 +71,4 @@ image::images/pre-configured-connectors-managing.png[Connectors managing tab wit Clicking a preconfigured connector shows the description, but not the configuration. A message indicates that this is a preconfigured connector. [role="screenshot"] -image::images/pre-configured-connectors-view-screen.png[Pre-configured connector view details] +image::images/pre-configured-connectors-view-screen.png[Pre-configured connector view details] \ No newline at end of file diff --git a/docs/user/alerting/images/pre-configured-alert-history-connector.png b/docs/user/alerting/images/pre-configured-alert-history-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..35f9b19710cda6ccf89314085b477d694dca130a GIT binary patch literal 256173 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

MC-mFoSSFCFe+YsXJCAA_tFlO+ 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¨heQA!IFDBS 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⁢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 VN4qYX`4I4*yo`!;;q7}5{})~JGzI_w literal 0 HcmV?d00001 diff --git a/src/core/public/doc_links/doc_links_service.ts b/src/core/public/doc_links/doc_links_service.ts index b6c9177b794f0..5e2c54853d648 100644 --- a/src/core/public/doc_links/doc_links_service.ts +++ b/src/core/public/doc_links/doc_links_service.ts @@ -210,6 +210,7 @@ export class DocLinksService { indexThreshold: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/rule-type-index-threshold.html`, pagerDutyAction: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/pagerduty-action-type.html`, preconfiguredConnectors: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/pre-configured-connectors.html`, + preconfiguredAlertHistoryConnector: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/index-action-type.html#preconfigured-connector-alert-history`, serviceNowAction: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/servicenow-action-type.html#configuring-servicenow`, setupPrerequisites: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/alerting-getting-started.html#alerting-setup-prerequisites`, slackAction: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/slack-action-type.html#configuring-slack`, diff --git a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker index 504c3147a6f9d..db36c9cf248e7 100755 --- a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker +++ b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker @@ -159,6 +159,7 @@ kibana_vars=( xpack.actions.allowedHosts xpack.actions.enabled xpack.actions.enabledActionTypes + xpack.actions.preconfiguredAlertHistoryEsIndex xpack.actions.preconfigured xpack.actions.proxyHeaders xpack.actions.proxyRejectUnauthorizedCertificates diff --git a/x-pack/plugins/actions/common/alert_history_schema.test.ts b/x-pack/plugins/actions/common/alert_history_schema.test.ts new file mode 100644 index 0000000000000..42a3d98c85fc7 --- /dev/null +++ b/x-pack/plugins/actions/common/alert_history_schema.test.ts @@ -0,0 +1,122 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { buildAlertHistoryDocument } from './alert_history_schema'; + +function getVariables(overrides = {}) { + return { + date: '2021-01-01T00:00:00.000Z', + rule: { + id: 'rule-id', + name: 'rule-name', + type: 'rule-type', + spaceId: 'space-id', + }, + context: { + contextVar1: 'contextValue1', + contextVar2: 'contextValue2', + }, + params: { + ruleParam: 1, + ruleParamString: 'another param', + }, + tags: ['abc', 'def'], + alert: { + id: 'alert-id', + actionGroup: 'action-group-id', + actionGroupName: 'Action Group', + }, + ...overrides, + }; +} + +describe('buildAlertHistoryDocument', () => { + it('handles empty variables', () => { + expect(buildAlertHistoryDocument({})).toBeNull(); + }); + + it('returns null if rule type is not defined', () => { + expect(buildAlertHistoryDocument(getVariables({ rule: { type: undefined } }))).toBeNull(); + }); + + it('returns null if alert variables are not defined', () => { + expect(buildAlertHistoryDocument(getVariables({ alert: undefined }))).toBeNull(); + }); + + it('returns null if rule variables are not defined', () => { + expect(buildAlertHistoryDocument(getVariables({ rule: undefined }))).toBeNull(); + }); + + it('includes @timestamp field if date is null', () => { + const alertHistoryDoc = buildAlertHistoryDocument(getVariables({ date: undefined })); + expect(alertHistoryDoc).not.toBeNull(); + expect(alertHistoryDoc!['@timestamp']).toBeTruthy(); + }); + + it(`doesn't include context if context is empty`, () => { + const alertHistoryDoc = buildAlertHistoryDocument(getVariables({ context: {} })); + expect(alertHistoryDoc).not.toBeNull(); + expect(alertHistoryDoc!.kibana?.alert?.context).toBeFalsy(); + }); + + it(`doesn't include params if params is empty`, () => { + const alertHistoryDoc = buildAlertHistoryDocument(getVariables({ params: {} })); + expect(alertHistoryDoc).not.toBeNull(); + expect(alertHistoryDoc!.rule?.params).toBeFalsy(); + }); + + it(`doesn't include tags if tags is empty array`, () => { + const alertHistoryDoc = buildAlertHistoryDocument(getVariables({ tags: [] })); + expect(alertHistoryDoc).not.toBeNull(); + expect(alertHistoryDoc!.tags).toBeFalsy(); + }); + + it(`included message if context contains message`, () => { + const alertHistoryDoc = buildAlertHistoryDocument( + getVariables({ + context: { contextVar1: 'contextValue1', contextVar2: 'contextValue2', message: 'hello!' }, + }) + ); + expect(alertHistoryDoc).not.toBeNull(); + expect(alertHistoryDoc!.message).toEqual('hello!'); + }); + + it('builds alert history document from variables', () => { + expect(buildAlertHistoryDocument(getVariables())).toEqual({ + '@timestamp': '2021-01-01T00:00:00.000Z', + kibana: { + alert: { + actionGroup: 'action-group-id', + actionGroupName: 'Action Group', + context: { + 'rule-type': { + contextVar1: 'contextValue1', + contextVar2: 'contextValue2', + }, + }, + id: 'alert-id', + }, + }, + event: { + kind: 'alert', + }, + rule: { + id: 'rule-id', + name: 'rule-name', + params: { + 'rule-type': { + ruleParam: 1, + ruleParamString: 'another param', + }, + }, + space: 'space-id', + type: 'rule-type', + }, + tags: ['abc', 'def'], + }); + }); +}); diff --git a/x-pack/plugins/actions/common/alert_history_schema.ts b/x-pack/plugins/actions/common/alert_history_schema.ts new file mode 100644 index 0000000000000..e1c923ab23f44 --- /dev/null +++ b/x-pack/plugins/actions/common/alert_history_schema.ts @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isEmpty } from 'lodash'; + +export const ALERT_HISTORY_PREFIX = 'kibana-alert-history-'; +export const AlertHistoryDefaultIndexName = `${ALERT_HISTORY_PREFIX}default`; +export const AlertHistoryEsIndexConnectorId = 'preconfigured-alert-history-es-index'; + +export const buildAlertHistoryDocument = (variables: Record) => { + const { date, alert: alertVariables, context, params, tags, rule: ruleVariables } = variables as { + date: string; + alert: Record; + context: Record; + params: Record; + rule: Record; + tags: string[]; + }; + + if (!alertVariables || !ruleVariables) { + return null; + } + + const { actionGroup, actionGroupName, id: alertId } = alertVariables as { + actionGroup: string; + actionGroupName: string; + id: string; + }; + + const { id: ruleId, name, spaceId, type } = ruleVariables as { + id: string; + name: string; + spaceId: string; + type: string; + }; + + if (!type) { + // can't build the document without a type + return null; + } + + const ruleType = type.replace(/\./g, '__'); + + const rule = { + ...(ruleId ? { id: ruleId } : {}), + ...(name ? { name } : {}), + ...(!isEmpty(params) ? { params: { [ruleType]: params } } : {}), + ...(spaceId ? { space: spaceId } : {}), + ...(type ? { type } : {}), + }; + const alert = { + ...(alertId ? { id: alertId } : {}), + ...(!isEmpty(context) ? { context: { [ruleType]: context } } : {}), + ...(actionGroup ? { actionGroup } : {}), + ...(actionGroupName ? { actionGroupName } : {}), + }; + + const alertHistoryDoc = { + '@timestamp': date ? date : new Date().toISOString(), + ...(tags && tags.length > 0 ? { tags } : {}), + ...(context?.message ? { message: context.message } : {}), + ...(!isEmpty(rule) ? { rule } : {}), + ...(!isEmpty(alert) ? { kibana: { alert } } : {}), + }; + + return !isEmpty(alertHistoryDoc) ? { ...alertHistoryDoc, event: { kind: 'alert' } } : null; +}; + +export const AlertHistoryDocumentTemplate = Object.freeze( + buildAlertHistoryDocument({ + rule: { + id: '{{rule.id}}', + name: '{{rule.name}}', + type: '{{rule.type}}', + spaceId: '{{rule.spaceId}}', + }, + context: '{{context}}', + params: '{{params}}', + tags: '{{rule.tags}}', + alert: { + id: '{{alert.id}}', + actionGroup: '{{alert.actionGroup}}', + actionGroupName: '{{alert.actionGroupName}}', + }, + }) +); diff --git a/x-pack/plugins/actions/common/index.ts b/x-pack/plugins/actions/common/index.ts index 184ae9c226b8f..336aa2263af0c 100644 --- a/x-pack/plugins/actions/common/index.ts +++ b/x-pack/plugins/actions/common/index.ts @@ -6,7 +6,7 @@ */ export * from './types'; +export * from './alert_history_schema'; +export * from './rewrite_request_case'; export const BASE_ACTION_API_PATH = '/api/actions'; - -export * from './rewrite_request_case'; diff --git a/x-pack/plugins/actions/server/actions_client.test.ts b/x-pack/plugins/actions/server/actions_client.test.ts index 6544a3c426e42..ae7faca1465c7 100644 --- a/x-pack/plugins/actions/server/actions_client.test.ts +++ b/x-pack/plugins/actions/server/actions_client.test.ts @@ -405,6 +405,7 @@ describe('create()', () => { enabled: true, enabledActionTypes: ['some-not-ignored-action-type'], allowedHosts: ['*'], + preconfiguredAlertHistoryEsIndex: false, preconfigured: {}, proxyRejectUnauthorizedCertificates: true, rejectUnauthorized: true, diff --git a/x-pack/plugins/actions/server/actions_config.test.ts b/x-pack/plugins/actions/server/actions_config.test.ts index c81f1f4a4bf2e..1b9de0162f340 100644 --- a/x-pack/plugins/actions/server/actions_config.test.ts +++ b/x-pack/plugins/actions/server/actions_config.test.ts @@ -18,6 +18,7 @@ const defaultActionsConfig: ActionsConfig = { enabled: false, allowedHosts: [], enabledActionTypes: [], + preconfiguredAlertHistoryEsIndex: false, preconfigured: {}, proxyRejectUnauthorizedCertificates: true, rejectUnauthorized: true, diff --git a/x-pack/plugins/actions/server/builtin_action_types/es_index.test.ts b/x-pack/plugins/actions/server/builtin_action_types/es_index.test.ts index 282ff22f770f0..5c0f720e8c5fc 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/es_index.test.ts +++ b/x-pack/plugins/actions/server/builtin_action_types/es_index.test.ts @@ -18,6 +18,7 @@ import { ESIndexActionType, ESIndexActionTypeExecutorOptions, } from './es_index'; +import { AlertHistoryEsIndexConnectorId } from '../../common'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { elasticsearchClientMock } from '../../../../../src/core/server/elasticsearch/client/mocks'; @@ -115,6 +116,7 @@ describe('params validation', () => { test('params validation succeeds when params is valid', () => { const params: Record = { documents: [{ rando: 'thing' }], + indexOverride: null, }; expect(validateParams(actionType, params)).toMatchInlineSnapshot(` Object { @@ -123,6 +125,7 @@ describe('params validation', () => { "rando": "thing", }, ], + "indexOverride": null, } `); }); @@ -159,6 +162,7 @@ describe('execute()', () => { config = { index: 'index-value', refresh: false, executionTimeField: null }; params = { documents: [{ jim: 'bob' }], + indexOverride: null, }; const actionId = 'some-id'; @@ -200,6 +204,7 @@ describe('execute()', () => { config = { index: 'index-value', executionTimeField: 'field_to_use_for_time', refresh: true }; params = { documents: [{ jimbob: 'jr' }], + indexOverride: null, }; executorOptions = { actionId, config, secrets, params, services }; @@ -237,6 +242,7 @@ describe('execute()', () => { config = { index: 'index-value', executionTimeField: null, refresh: false }; params = { documents: [{ jim: 'bob' }], + indexOverride: null, }; executorOptions = { actionId, config, secrets, params, services }; @@ -270,6 +276,7 @@ describe('execute()', () => { config = { index: 'index-value', executionTimeField: null, refresh: false }; params = { documents: [{ a: 1 }, { b: 2 }], + indexOverride: null, }; executorOptions = { actionId, config, secrets, params, services }; @@ -305,12 +312,244 @@ describe('execute()', () => { `); }); + test('renders parameter templates as expected', async () => { + expect(actionType.renderParameterTemplates).toBeTruthy(); + const paramsWithTemplates = { + documents: [{ hello: '{{who}}' }], + indexOverride: null, + }; + const variables = { + who: 'world', + }; + const renderedParams = actionType.renderParameterTemplates!( + paramsWithTemplates, + variables, + 'action-type-id' + ); + expect(renderedParams).toMatchInlineSnapshot(` + Object { + "documents": Array [ + Object { + "hello": "world", + }, + ], + "indexOverride": null, + } + `); + }); + + test('ignores indexOverride for generic es index connector', async () => { + expect(actionType.renderParameterTemplates).toBeTruthy(); + const paramsWithTemplates = { + documents: [{ hello: '{{who}}' }], + indexOverride: 'hello-world', + }; + const variables = { + who: 'world', + }; + const renderedParams = actionType.renderParameterTemplates!( + paramsWithTemplates, + variables, + 'action-type-id' + ); + expect(renderedParams).toMatchInlineSnapshot(` + Object { + "documents": Array [ + Object { + "hello": "world", + }, + ], + "indexOverride": null, + } + `); + }); + + test('renders parameter templates as expected for preconfigured alert history connector', async () => { + expect(actionType.renderParameterTemplates).toBeTruthy(); + const paramsWithTemplates = { + documents: [{ hello: '{{who}}' }], + indexOverride: null, + }; + const variables = { + date: '2021-01-01T00:00:00.000Z', + rule: { + id: 'rule-id', + name: 'rule-name', + type: 'rule-type', + }, + context: { + contextVar1: 'contextValue1', + contextVar2: 'contextValue2', + }, + params: { + ruleParam: 1, + ruleParamString: 'another param', + }, + tags: ['abc', 'xyz'], + alert: { + id: 'alert-id', + actionGroup: 'action-group-id', + actionGroupName: 'Action Group', + }, + state: { + alertStateValue: true, + alertStateAnotherValue: 'yes', + }, + }; + const renderedParams = actionType.renderParameterTemplates!( + paramsWithTemplates, + variables, + AlertHistoryEsIndexConnectorId + ); + expect(renderedParams).toMatchInlineSnapshot(` + Object { + "documents": Array [ + Object { + "@timestamp": "2021-01-01T00:00:00.000Z", + "event": Object { + "kind": "alert", + }, + "kibana": Object { + "alert": Object { + "actionGroup": "action-group-id", + "actionGroupName": "Action Group", + "context": Object { + "rule-type": Object { + "contextVar1": "contextValue1", + "contextVar2": "contextValue2", + }, + }, + "id": "alert-id", + }, + }, + "rule": Object { + "id": "rule-id", + "name": "rule-name", + "params": Object { + "rule-type": Object { + "ruleParam": 1, + "ruleParamString": "another param", + }, + }, + "type": "rule-type", + }, + "tags": Array [ + "abc", + "xyz", + ], + }, + ], + "indexOverride": null, + } + `); + }); + + test('passes through indexOverride for preconfigured alert history connector', async () => { + expect(actionType.renderParameterTemplates).toBeTruthy(); + const paramsWithTemplates = { + documents: [{ hello: '{{who}}' }], + indexOverride: 'hello-world', + }; + const variables = { + date: '2021-01-01T00:00:00.000Z', + rule: { + id: 'rule-id', + name: 'rule-name', + type: 'rule-type', + }, + context: { + contextVar1: 'contextValue1', + contextVar2: 'contextValue2', + }, + params: { + ruleParam: 1, + ruleParamString: 'another param', + }, + tags: ['abc', 'xyz'], + alert: { + id: 'alert-id', + actionGroup: 'action-group-id', + actionGroupName: 'Action Group', + }, + state: { + alertStateValue: true, + alertStateAnotherValue: 'yes', + }, + }; + const renderedParams = actionType.renderParameterTemplates!( + paramsWithTemplates, + variables, + AlertHistoryEsIndexConnectorId + ); + expect(renderedParams).toMatchInlineSnapshot(` + Object { + "documents": Array [ + Object { + "@timestamp": "2021-01-01T00:00:00.000Z", + "event": Object { + "kind": "alert", + }, + "kibana": Object { + "alert": Object { + "actionGroup": "action-group-id", + "actionGroupName": "Action Group", + "context": Object { + "rule-type": Object { + "contextVar1": "contextValue1", + "contextVar2": "contextValue2", + }, + }, + "id": "alert-id", + }, + }, + "rule": Object { + "id": "rule-id", + "name": "rule-name", + "params": Object { + "rule-type": Object { + "ruleParam": 1, + "ruleParamString": "another param", + }, + }, + "type": "rule-type", + }, + "tags": Array [ + "abc", + "xyz", + ], + }, + ], + "indexOverride": "hello-world", + } + `); + }); + + test('throws error for preconfigured alert history index when no variables are available', async () => { + expect(actionType.renderParameterTemplates).toBeTruthy(); + const paramsWithTemplates = { + documents: [{ hello: '{{who}}' }], + indexOverride: null, + }; + const variables = {}; + + expect(() => + actionType.renderParameterTemplates!( + paramsWithTemplates, + variables, + AlertHistoryEsIndexConnectorId + ) + ).toThrowErrorMatchingInlineSnapshot( + `"error creating alert history document for ${AlertHistoryEsIndexConnectorId} connector"` + ); + }); + test('resolves with an error when an error occurs in the indexing operation', async () => { const secrets = {}; // minimal params const config = { index: 'index-value', refresh: false, executionTimeField: null }; const params = { documents: [{ '': 'bob' }], + indexOverride: null, }; const actionId = 'some-id'; diff --git a/x-pack/plugins/actions/server/builtin_action_types/es_index.ts b/x-pack/plugins/actions/server/builtin_action_types/es_index.ts index 997c89b38a340..865f12850d30c 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/es_index.ts +++ b/x-pack/plugins/actions/server/builtin_action_types/es_index.ts @@ -8,9 +8,11 @@ import { curry, find } from 'lodash'; import { i18n } from '@kbn/i18n'; import { schema, TypeOf } from '@kbn/config-schema'; - import { Logger } from '../../../../../src/core/server'; import { ActionType, ActionTypeExecutorOptions, ActionTypeExecutorResult } from '../types'; +import { renderMustacheObject } from '../lib/mustache_renderer'; +import { buildAlertHistoryDocument, AlertHistoryEsIndexConnectorId } from '../../common'; +import { ALERT_HISTORY_PREFIX } from '../../common/alert_history_schema'; export type ESIndexActionType = ActionType; export type ESIndexActionTypeExecutorOptions = ActionTypeExecutorOptions< @@ -38,6 +40,15 @@ export type ActionParamsType = TypeOf; // eventually: https://github.com/elastic/kibana/projects/26#card-24087404 const ParamsSchema = schema.object({ documents: schema.arrayOf(schema.recordOf(schema.string(), schema.any())), + indexOverride: schema.nullable( + schema.string({ + validate: (pattern) => { + if (!pattern.startsWith(ALERT_HISTORY_PREFIX)) { + return `index must start with "${ALERT_HISTORY_PREFIX}"`; + } + }, + }) + ), }); export const ActionTypeId = '.index'; @@ -54,6 +65,7 @@ export function getActionType({ logger }: { logger: Logger }): ESIndexActionType params: ParamsSchema, }, executor: curry(executor)({ logger }), + renderParameterTemplates, }; } @@ -68,7 +80,7 @@ async function executor( const params = execOptions.params; const services = execOptions.services; - const index = config.index; + const index = params.indexOverride || config.index; const bulkBody = []; for (const document of params.documents) { @@ -107,6 +119,24 @@ async function executor( } } +function renderParameterTemplates( + params: ActionParamsType, + variables: Record, + actionId: string +): ActionParamsType { + const { documents, indexOverride } = renderMustacheObject(params, variables); + + if (actionId === AlertHistoryEsIndexConnectorId) { + const alertHistoryDoc = buildAlertHistoryDocument(variables); + if (!alertHistoryDoc) { + throw new Error(`error creating alert history document for ${actionId} connector`); + } + return { documents: [alertHistoryDoc], indexOverride }; + } + + return { documents, indexOverride: null }; +} + function wrapErr( errMessage: string, actionId: string, diff --git a/x-pack/plugins/actions/server/config.test.ts b/x-pack/plugins/actions/server/config.test.ts index 2eecaa19da0c5..ad598bffe04b4 100644 --- a/x-pack/plugins/actions/server/config.test.ts +++ b/x-pack/plugins/actions/server/config.test.ts @@ -31,6 +31,7 @@ describe('config validation', () => { "valueInBytes": 1048576, }, "preconfigured": Object {}, + "preconfiguredAlertHistoryEsIndex": false, "proxyRejectUnauthorizedCertificates": true, "rejectUnauthorized": true, "responseTimeout": "PT1M", @@ -74,6 +75,7 @@ describe('config validation', () => { "secrets": Object {}, }, }, + "preconfiguredAlertHistoryEsIndex": false, "proxyRejectUnauthorizedCertificates": false, "rejectUnauthorized": false, "responseTimeout": "PT1M", diff --git a/x-pack/plugins/actions/server/config.ts b/x-pack/plugins/actions/server/config.ts index 4aa77ded315b8..36948478816c9 100644 --- a/x-pack/plugins/actions/server/config.ts +++ b/x-pack/plugins/actions/server/config.ts @@ -37,6 +37,7 @@ export const configSchema = schema.object({ defaultValue: [AllowedHosts.Any], } ), + preconfiguredAlertHistoryEsIndex: schema.boolean({ defaultValue: false }), preconfigured: schema.recordOf(schema.string(), preconfiguredActionSchema, { defaultValue: {}, validate: validatePreconfigured, diff --git a/x-pack/plugins/actions/server/mocks.ts b/x-pack/plugins/actions/server/mocks.ts index ab29f524c202d..4d32c2e2bf16d 100644 --- a/x-pack/plugins/actions/server/mocks.ts +++ b/x-pack/plugins/actions/server/mocks.ts @@ -40,10 +40,11 @@ const createStartMock = () => { // this is a default renderer that escapes nothing export function renderActionParameterTemplatesDefault( actionTypeId: string, + actionId: string, params: Record, variables: Record ) { - return renderActionParameterTemplates(undefined, actionTypeId, params, variables); + return renderActionParameterTemplates(undefined, actionTypeId, actionId, params, variables); } const createServicesMock = () => { diff --git a/x-pack/plugins/actions/server/plugin.test.ts b/x-pack/plugins/actions/server/plugin.test.ts index 30bbedbedbe9c..3485891a01267 100644 --- a/x-pack/plugins/actions/server/plugin.test.ts +++ b/x-pack/plugins/actions/server/plugin.test.ts @@ -23,6 +23,7 @@ import { ActionsPluginsStart, PluginSetupContract, } from './plugin'; +import { AlertHistoryEsIndexConnectorId } from '../common'; describe('Actions Plugin', () => { describe('setup()', () => { @@ -36,6 +37,7 @@ describe('Actions Plugin', () => { enabled: true, enabledActionTypes: ['*'], allowedHosts: ['*'], + preconfiguredAlertHistoryEsIndex: false, preconfigured: {}, proxyRejectUnauthorizedCertificates: true, rejectUnauthorized: true, @@ -180,6 +182,7 @@ describe('Actions Plugin', () => { }); describe('start()', () => { + let context: PluginInitializerContext; let plugin: ActionsPlugin; let coreSetup: ReturnType; let coreStart: ReturnType; @@ -187,10 +190,11 @@ describe('Actions Plugin', () => { let pluginsStart: jest.Mocked; beforeEach(() => { - const context = coreMock.createPluginInitializerContext({ + context = coreMock.createPluginInitializerContext({ enabled: true, enabledActionTypes: ['*'], allowedHosts: ['*'], + preconfiguredAlertHistoryEsIndex: false, preconfigured: { preconfiguredServerLog: { actionTypeId: '.server-log', @@ -223,15 +227,6 @@ describe('Actions Plugin', () => { }); describe('getActionsClientWithRequest()', () => { - it('should handle preconfigured actions', async () => { - // coreMock.createSetup doesn't support Plugin generics - // eslint-disable-next-line @typescript-eslint/no-explicit-any - await plugin.setup(coreSetup as any, pluginsSetup); - const pluginStart = await plugin.start(coreStart, pluginsStart); - - expect(pluginStart.isActionExecutable('preconfiguredServerLog', '.server-log')).toBe(true); - }); - it('should not throw error when ESO plugin has encryption key', async () => { await plugin.setup(coreSetup, { ...pluginsSetup, @@ -258,6 +253,99 @@ describe('Actions Plugin', () => { }); }); + describe('Preconfigured connectors', () => { + function getConfig(overrides = {}) { + return { + enabled: true, + enabledActionTypes: ['*'], + allowedHosts: ['*'], + preconfiguredAlertHistoryEsIndex: false, + preconfigured: { + preconfiguredServerLog: { + actionTypeId: '.server-log', + name: 'preconfigured-server-log', + config: {}, + secrets: {}, + }, + }, + proxyRejectUnauthorizedCertificates: true, + proxyBypassHosts: undefined, + proxyOnlyHosts: undefined, + rejectUnauthorized: true, + maxResponseContentLength: new ByteSizeValue(1000000), + responseTimeout: moment.duration('60s'), + ...overrides, + }; + } + + function setup(config: ActionsConfig) { + context = coreMock.createPluginInitializerContext(config); + plugin = new ActionsPlugin(context); + coreSetup = coreMock.createSetup(); + coreStart = coreMock.createStart(); + pluginsSetup = { + taskManager: taskManagerMock.createSetup(), + encryptedSavedObjects: encryptedSavedObjectsMock.createSetup(), + licensing: licensingMock.createSetup(), + eventLog: eventLogMock.createSetup(), + usageCollection: usageCollectionPluginMock.createSetupContract(), + features: featuresPluginMock.createSetup(), + }; + pluginsStart = { + licensing: licensingMock.createStart(), + taskManager: taskManagerMock.createStart(), + encryptedSavedObjects: encryptedSavedObjectsMock.createStart(), + }; + } + + it('should handle preconfigured actions', async () => { + setup(getConfig()); + // coreMock.createSetup doesn't support Plugin generics + // eslint-disable-next-line @typescript-eslint/no-explicit-any + await plugin.setup(coreSetup as any, pluginsSetup); + const pluginStart = await plugin.start(coreStart, pluginsStart); + + expect(pluginStart.preconfiguredActions.length).toEqual(1); + expect(pluginStart.isActionExecutable('preconfiguredServerLog', '.server-log')).toBe(true); + }); + + it('should handle preconfiguredAlertHistoryEsIndex = true', async () => { + setup(getConfig({ preconfiguredAlertHistoryEsIndex: true })); + + await plugin.setup(coreSetup, pluginsSetup); + const pluginStart = await plugin.start(coreStart, pluginsStart); + + expect(pluginStart.preconfiguredActions.length).toEqual(2); + expect( + pluginStart.isActionExecutable('preconfigured-alert-history-es-index', '.index') + ).toBe(true); + }); + + it('should not allow preconfigured connector with same ID as AlertHistoryEsIndexConnectorId', async () => { + setup( + getConfig({ + preconfigured: { + [AlertHistoryEsIndexConnectorId]: { + actionTypeId: '.index', + name: 'clashing preconfigured index connector', + config: {}, + secrets: {}, + }, + }, + }) + ); + // coreMock.createSetup doesn't support Plugin generics + // eslint-disable-next-line @typescript-eslint/no-explicit-any + await plugin.setup(coreSetup as any, pluginsSetup); + const pluginStart = await plugin.start(coreStart, pluginsStart); + + expect(pluginStart.preconfiguredActions.length).toEqual(0); + expect(context.logger.get().warn).toHaveBeenCalledWith( + `Preconfigured connectors cannot have the id "${AlertHistoryEsIndexConnectorId}" because this is a reserved id.` + ); + }); + }); + describe('isActionTypeEnabled()', () => { const actionType: ActionType = { id: 'my-action-type', diff --git a/x-pack/plugins/actions/server/plugin.ts b/x-pack/plugins/actions/server/plugin.ts index bfe3b0a09ff2e..3c754d90c4af5 100644 --- a/x-pack/plugins/actions/server/plugin.ts +++ b/x-pack/plugins/actions/server/plugin.ts @@ -68,6 +68,9 @@ import { } from './authorization/get_authorization_mode_by_source'; import { ensureSufficientLicense } from './lib/ensure_sufficient_license'; import { renderMustacheObject } from './lib/mustache_renderer'; +import { getAlertHistoryEsIndex } from './preconfigured_connectors/alert_history_es_index/alert_history_es_index'; +import { createAlertHistoryIndexTemplate } from './preconfigured_connectors/alert_history_es_index/create_alert_history_index_template'; +import { AlertHistoryEsIndexConnectorId } from '../common'; const EVENT_LOG_PROVIDER = 'actions'; export const EVENT_LOG_ACTIONS = { @@ -98,6 +101,7 @@ export interface PluginStartContract { preconfiguredActions: PreConfiguredAction[]; renderActionParameterTemplates( actionTypeId: string, + actionId: string, params: Params, variables: Record ): Params; @@ -178,12 +182,22 @@ export class ActionsPlugin implements Plugin { return this.actionTypeRegistry!.isActionTypeEnabled(id, options); @@ -468,12 +489,13 @@ export class ActionsPlugin implements Plugin( actionTypeRegistry: ActionTypeRegistry | undefined, actionTypeId: string, + actionId: string, params: Params, variables: Record ): Params { const actionType = actionTypeRegistry?.get(actionTypeId); if (actionType?.renderParameterTemplates) { - return actionType.renderParameterTemplates(params, variables) as Params; + return actionType.renderParameterTemplates(params, variables, actionId) as Params; } else { return renderMustacheObject(params, variables); } diff --git a/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/alert_history_es_index.ts b/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/alert_history_es_index.ts new file mode 100644 index 0000000000000..38556591c4ea2 --- /dev/null +++ b/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/alert_history_es_index.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { PreConfiguredAction } from '../../types'; +import { ActionTypeId as EsIndexActionTypeId } from '../../builtin_action_types/es_index'; +import { AlertHistoryEsIndexConnectorId, AlertHistoryDefaultIndexName } from '../../../common'; + +export function getAlertHistoryEsIndex(): Readonly { + return Object.freeze({ + name: i18n.translate('xpack.actions.alertHistoryEsIndexConnector.name', { + defaultMessage: 'Alert history Elasticsearch index', + }), + actionTypeId: EsIndexActionTypeId, + id: AlertHistoryEsIndexConnectorId, + isPreconfigured: true, + config: { + index: AlertHistoryDefaultIndexName, + }, + secrets: {}, + }); +} diff --git a/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/create_alert_history_index_template.test.ts b/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/create_alert_history_index_template.test.ts new file mode 100644 index 0000000000000..a7038d8dc62eb --- /dev/null +++ b/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/create_alert_history_index_template.test.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ElasticsearchClient } from 'src/core/server'; +import { elasticsearchServiceMock, loggingSystemMock } from 'src/core/server/mocks'; +import { DeeplyMockedKeys } from '@kbn/utility-types/jest'; +import { + createAlertHistoryIndexTemplate, + getAlertHistoryIndexTemplate, +} from './create_alert_history_index_template'; + +type MockedLogger = ReturnType; + +describe('createAlertHistoryIndexTemplate', () => { + let logger: MockedLogger; + let clusterClient: DeeplyMockedKeys; + + beforeEach(() => { + logger = loggingSystemMock.createLogger(); + clusterClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + }); + + test(`should create index template if it doesn't exist`, async () => { + // Response type for existsIndexTemplate is still TODO + clusterClient.indices.existsIndexTemplate.mockResolvedValue({ + body: false, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any); + + await createAlertHistoryIndexTemplate({ client: clusterClient, logger }); + expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledWith({ + name: `kibana-alert-history-template`, + body: getAlertHistoryIndexTemplate(), + create: true, + }); + }); + + test(`shouldn't create index template if it already exists`, async () => { + // Response type for existsIndexTemplate is still TODO + clusterClient.indices.existsIndexTemplate.mockResolvedValue({ + body: true, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any); + + await createAlertHistoryIndexTemplate({ client: clusterClient, logger }); + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/create_alert_history_index_template.ts b/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/create_alert_history_index_template.ts new file mode 100644 index 0000000000000..fe9874fb1d671 --- /dev/null +++ b/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/create_alert_history_index_template.ts @@ -0,0 +1,106 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ElasticsearchClient, Logger } from 'src/core/server'; +import { ALERT_HISTORY_PREFIX } from '../../../common'; +import mappings from './mappings.json'; + +export function getAlertHistoryIndexTemplate() { + return { + index_patterns: [`${ALERT_HISTORY_PREFIX}*`], + _meta: { + description: + 'System generated mapping for preconfigured alert history Elasticsearch index connector.', + }, + template: { + settings: { + number_of_shards: 1, + auto_expand_replicas: '0-1', + }, + mappings, + }, + }; +} + +async function doesIndexTemplateExist({ + client, + templateName, +}: { + client: ElasticsearchClient; + templateName: string; +}) { + let result; + try { + result = (await client.indices.existsIndexTemplate({ name: templateName })).body; + } catch (err) { + throw new Error(`error checking existence of index template: ${err.message}`); + } + + return result; +} + +async function createIndexTemplate({ + client, + template, + templateName, +}: { + client: ElasticsearchClient; + template: Record; + templateName: string; +}) { + try { + await client.indices.putIndexTemplate({ + name: templateName, + body: template, + create: true, + }); + } catch (err) { + // The error message doesn't have a type attribute we can look to guarantee it's due + // to the template already existing (only long message) so we'll check ourselves to see + // if the template now exists. This scenario would happen if you startup multiple Kibana + // instances at the same time. + const existsNow = await doesIndexTemplateExist({ client, templateName }); + if (!existsNow) { + throw new Error(`error creating index template: ${err.message}`); + } + } +} + +async function createIndexTemplateIfNotExists({ + client, + template, + templateName, +}: { + client: ElasticsearchClient; + template: Record; + templateName: string; +}) { + const indexTemplateExists = await doesIndexTemplateExist({ client, templateName }); + + if (!indexTemplateExists) { + await createIndexTemplate({ client, template, templateName }); + } +} + +export async function createAlertHistoryIndexTemplate({ + client, + logger, +}: { + client: ElasticsearchClient; + logger: Logger; +}) { + try { + const indexTemplate = getAlertHistoryIndexTemplate(); + await createIndexTemplateIfNotExists({ + client, + templateName: `${ALERT_HISTORY_PREFIX}template`, + template: indexTemplate, + }); + } catch (err) { + logger.error(`Could not initialize alert history index with mappings: ${err.message}.`); + } +} diff --git a/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/mappings.json b/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/mappings.json new file mode 100644 index 0000000000000..56047f30d9489 --- /dev/null +++ b/x-pack/plugins/actions/server/preconfigured_connectors/alert_history_es_index/mappings.json @@ -0,0 +1,84 @@ +{ + "dynamic": "false", + "properties": { + "@timestamp": { + "type": "date" + }, + "kibana": { + "properties": { + "alert": { + "properties": { + "actionGroup": { + "type": "keyword" + }, + "actionGroupName": { + "type": "keyword" + }, + "actionSubgroup": { + "type": "keyword" + }, + "context": { + "type": "object", + "enabled": false + }, + "id": { + "type": "keyword" + } + } + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword", + "meta": { + "isArray": "true" + } + }, + "message": { + "norms": false, + "type": "text" + }, + "event": { + "properties": { + "kind": { + "type": "keyword" + } + } + }, + "rule": { + "properties": { + "author": { + "type": "keyword" + }, + "category": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "license": { + "type": "keyword" + }, + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "params": { + "type": "object", + "enabled": false + }, + "space": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + } + } +} \ No newline at end of file diff --git a/x-pack/plugins/actions/server/types.ts b/x-pack/plugins/actions/server/types.ts index b7a6750a520ea..d6f99a766ed34 100644 --- a/x-pack/plugins/actions/server/types.ts +++ b/x-pack/plugins/actions/server/types.ts @@ -107,7 +107,11 @@ export interface ActionType< config?: ValidatorType; secrets?: ValidatorType; }; - renderParameterTemplates?(params: Params, variables: Record): Params; + renderParameterTemplates?( + params: Params, + variables: Record, + actionId?: string + ): Params; executor: ExecutorType; } diff --git a/x-pack/plugins/alerting/server/task_runner/create_execution_handler.ts b/x-pack/plugins/alerting/server/task_runner/create_execution_handler.ts index 9999ea6a4d3d7..2ecf540485695 100644 --- a/x-pack/plugins/alerting/server/task_runner/create_execution_handler.ts +++ b/x-pack/plugins/alerting/server/task_runner/create_execution_handler.ts @@ -117,6 +117,7 @@ export function createExecutionHandler< params: transformActionParams({ actionsPlugin, alertId, + alertType: alertType.id, actionTypeId: action.actionTypeId, alertName, spaceId, @@ -127,6 +128,7 @@ export function createExecutionHandler< alertActionSubgroup: actionSubgroup, context, actionParams: action.params, + actionId: action.id, state, kibanaBaseUrl, alertParams, diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts index a3a7e9bbd9da5..50d710f6d6b14 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts @@ -153,7 +153,7 @@ describe('Task Runner', () => { actionsClient ); taskRunnerFactoryInitializerParams.actionsPlugin.renderActionParameterTemplates.mockImplementation( - (actionTypeId, params) => params + (actionTypeId, actionId, params) => params ); }); diff --git a/x-pack/plugins/alerting/server/task_runner/transform_action_params.test.ts b/x-pack/plugins/alerting/server/task_runner/transform_action_params.test.ts index 6379192e855d7..e325d597da145 100644 --- a/x-pack/plugins/alerting/server/task_runner/transform_action_params.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/transform_action_params.test.ts @@ -34,6 +34,8 @@ test('skips non string parameters', () => { context: {}, state: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -68,6 +70,8 @@ test('missing parameters get emptied out', () => { context: {}, state: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -95,6 +99,8 @@ test('context parameters are passed to templates', () => { state: {}, context: { foo: 'fooVal' }, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -121,6 +127,8 @@ test('state parameters are passed to templates', () => { state: { bar: 'barVal' }, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -147,6 +155,8 @@ test('alertId is passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -173,6 +183,8 @@ test('alertName is passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -199,6 +211,8 @@ test('tags is passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -225,6 +239,8 @@ test('undefined tags is passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', spaceId: 'spaceId-A', alertInstanceId: '2', @@ -250,6 +266,8 @@ test('empty tags is passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: [], spaceId: 'spaceId-A', @@ -276,6 +294,8 @@ test('spaceId is passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -302,6 +322,8 @@ test('alertInstanceId is passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -328,6 +350,8 @@ test('alertActionGroup is passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -354,6 +378,8 @@ test('alertActionGroupName is passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -380,6 +406,8 @@ test('rule variables are passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -408,6 +436,8 @@ test('rule alert variables are passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -436,6 +466,8 @@ test('date is passed to templates', () => { state: {}, context: {}, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -464,6 +496,8 @@ test('works recursively', () => { state: { value: 'state' }, context: { value: 'context' }, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', @@ -494,6 +528,8 @@ test('works recursively with arrays', () => { state: { value: 'state' }, context: { value: 'context' }, alertId: '1', + alertType: 'rule-type-id', + actionId: 'action-id', alertName: 'alert-name', tags: ['tag-A', 'tag-B'], spaceId: 'spaceId-A', diff --git a/x-pack/plugins/alerting/server/task_runner/transform_action_params.ts b/x-pack/plugins/alerting/server/task_runner/transform_action_params.ts index 348bf01ea874b..3f9fe9e9c59e0 100644 --- a/x-pack/plugins/alerting/server/task_runner/transform_action_params.ts +++ b/x-pack/plugins/alerting/server/task_runner/transform_action_params.ts @@ -16,6 +16,8 @@ import { PluginStartContract as ActionsPluginStartContract } from '../../../acti interface TransformActionParamsOptions { actionsPlugin: ActionsPluginStartContract; alertId: string; + alertType: string; + actionId: string; actionTypeId: string; alertName: string; spaceId: string; @@ -34,6 +36,8 @@ interface TransformActionParamsOptions { export function transformActionParams({ actionsPlugin, alertId, + alertType, + actionId, actionTypeId, alertName, spaceId, @@ -68,6 +72,7 @@ export function transformActionParams({ rule: { id: alertId, name: alertName, + type: alertType, spaceId, tags, }, @@ -78,5 +83,10 @@ export function transformActionParams({ actionSubgroup: alertActionSubgroup, }, }; - return actionsPlugin.renderActionParameterTemplates(actionTypeId, actionParams, variables); + return actionsPlugin.renderActionParameterTemplates( + actionTypeId, + actionId, + actionParams, + variables + ); } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.test.tsx index 00a029a9abb5a..9757653043175 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.test.tsx @@ -82,32 +82,71 @@ describe('index connector validation with minimal config', () => { }); describe('action params validation', () => { - test('action params validation succeeds when action params is valid', () => { - const actionParams = { - documents: [{ test: 1234 }], - }; + test('action params validation succeeds when action params are valid', () => { + expect( + actionTypeModel.validateParams({ + documents: [{ test: 1234 }], + }) + ).toEqual({ + errors: { + documents: [], + indexOverride: [], + }, + }); - expect(actionTypeModel.validateParams(actionParams)).toEqual({ + expect( + actionTypeModel.validateParams({ + documents: [{ test: 1234 }], + indexOverride: 'kibana-alert-history-anything', + }) + ).toEqual({ errors: { documents: [], + indexOverride: [], }, }); + }); - const emptyActionParams = {}; + test('action params validation fails when action params are invalid', () => { + expect(actionTypeModel.validateParams({})).toEqual({ + errors: { + documents: ['Document is required and should be a valid JSON object.'], + indexOverride: [], + }, + }); - expect(actionTypeModel.validateParams(emptyActionParams)).toEqual({ + expect( + actionTypeModel.validateParams({ + documents: [{}], + }) + ).toEqual({ errors: { documents: ['Document is required and should be a valid JSON object.'], + indexOverride: [], }, }); - const invalidDocumentActionParams = { - documents: [{}], - }; + expect( + actionTypeModel.validateParams({ + documents: [{}], + indexOverride: 'kibana-alert-history-', + }) + ).toEqual({ + errors: { + documents: ['Document is required and should be a valid JSON object.'], + indexOverride: ['Alert history index must contain valid suffix.'], + }, + }); - expect(actionTypeModel.validateParams(invalidDocumentActionParams)).toEqual({ + expect( + actionTypeModel.validateParams({ + documents: [{}], + indexOverride: 'this.is-a_string', + }) + ).toEqual({ errors: { documents: ['Document is required and should be a valid JSON object.'], + indexOverride: ['Alert history index must begin with "kibana-alert-history-".'], }, }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.tsx index bc09e5abe1120..f4b8284c8cfa6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.tsx @@ -11,6 +11,7 @@ import { ActionTypeModel, GenericValidationResult, ConnectorValidationResult, + ALERT_HISTORY_PREFIX, } from '../../../../types'; import { EsIndexActionConnector, EsIndexConfig, IndexActionParams } from '../types'; @@ -56,6 +57,7 @@ export function getActionType(): ActionTypeModel => { const errors = { documents: new Array(), + indexOverride: new Array(), }; const validationResult = { errors }; if (!actionParams.documents?.length || Object.keys(actionParams.documents[0]).length === 0) { @@ -68,6 +70,32 @@ export function getActionType(): ActionTypeModel { - test('all params fields is rendered', () => { + test('all params fields are rendered correctly when params are undefined', () => { + const actionParams = { + documents: undefined, + }; + const wrapper = mountWithIntl( + {}} + index={0} + actionConnector={actionConnector} + messageVariables={[ + { + name: 'myVar', + description: 'My variable description', + useWithTripleBracesInTemplates: true, + }, + ]} + /> + ); + expect(wrapper.find('[data-test-subj="documentsJsonEditor"]').first().prop('value')).toBe(``); + expect(wrapper.find('[data-test-subj="documentsAddVariableButton"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="preconfiguredIndexToUse"]').length > 0).toBeFalsy(); + expect(wrapper.find('[data-test-subj="preconfiguredDocumentToIndex"]').length > 0).toBeFalsy(); + }); + + test('all params fields are rendered when document params are defined', () => { const actionParams = { documents: [{ test: 123 }], }; @@ -22,6 +73,7 @@ describe('IndexParamsFields renders', () => { errors={{ index: [] }} editAction={() => {}} index={0} + actionConnector={actionConnector} messageVariables={[ { name: 'myVar', @@ -35,5 +87,76 @@ describe('IndexParamsFields renders', () => { "test": 123 }`); expect(wrapper.find('[data-test-subj="documentsAddVariableButton"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="preconfiguredIndexToUse"]').length > 0).toBeFalsy(); + expect(wrapper.find('[data-test-subj="preconfiguredDocumentToIndex"]').length > 0).toBeFalsy(); + }); + + test('all params fields are rendered correctly for preconfigured alert history connector when params are undefined', () => { + const actionParams = { + documents: undefined, + }; + const wrapper = mountWithIntl( + {}} + index={0} + actionConnector={preconfiguredActionConnector} + messageVariables={[ + { + name: 'myVar', + description: 'My variable description', + useWithTripleBracesInTemplates: true, + }, + ]} + /> + ); + expect(wrapper.find('[data-test-subj="documentsJsonEditor"]').length > 0).toBeFalsy(); + expect(wrapper.find('[data-test-subj="documentsAddVariableButton"]').length > 0).toBeFalsy(); + expect(wrapper.find('[data-test-subj="preconfiguredIndexToUse"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="preconfiguredIndexToUse"]').first().prop('value')).toBe( + 'default' + ); + expect(wrapper.find('[data-test-subj="preconfiguredDocumentToIndex"]').length > 0).toBeTruthy(); + }); + + test('all params fields are rendered correctly for preconfigured alert history connector when params are defined', async () => { + const actionParams = { + documents: undefined, + indexOverride: 'kibana-alert-history-not-the-default', + }; + const wrapper = mountWithIntl( + {}} + index={0} + actionConnector={preconfiguredActionConnector} + messageVariables={[ + { + name: 'myVar', + description: 'My variable description', + useWithTripleBracesInTemplates: true, + }, + ]} + /> + ); + expect(wrapper.find('[data-test-subj="documentsJsonEditor"]').length > 0).toBeFalsy(); + expect(wrapper.find('[data-test-subj="documentsAddVariableButton"]').length > 0).toBeFalsy(); + expect(wrapper.find('[data-test-subj="preconfiguredIndexToUse"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="preconfiguredIndexToUse"]').first().prop('value')).toBe( + 'not-the-default' + ); + expect(wrapper.find('[data-test-subj="preconfiguredDocumentToIndex"]').length > 0).toBeTruthy(); + + wrapper.find('EuiLink[data-test-subj="resetDefaultIndex"]').simulate('click'); + await act(async () => { + await nextTick(); + wrapper.update(); + }); + + expect(wrapper.find('[data-test-subj="preconfiguredIndexToUse"]').first().prop('value')).toBe( + 'default' + ); }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx index c65c76ee6916e..6973cdcc7a088 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx @@ -5,11 +5,25 @@ * 2.0. */ -import React from 'react'; -import { EuiLink } from '@elastic/eui'; +import React, { useEffect, useState } from 'react'; +import { + EuiIcon, + EuiText, + EuiCodeBlock, + EuiFieldText, + EuiFormRow, + EuiLink, + EuiSpacer, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { ActionParamsProps } from '../../../../types'; +import { + ActionParamsProps, + AlertHistoryEsIndexConnectorId, + AlertHistoryDocumentTemplate, + AlertHistoryDefaultIndexName, + ALERT_HISTORY_PREFIX, +} from '../../../../types'; import { IndexActionParams } from '.././types'; import { JsonEditorWithMessageVariables } from '../../json_editor_with_message_variables'; import { useKibana } from '../../../../common/lib/kibana'; @@ -20,38 +34,152 @@ export const IndexParamsFields = ({ editAction, messageVariables, errors, + actionConnector, }: ActionParamsProps) => { const { docLinks } = useKibana().services; - const { documents } = actionParams; + const { documents, indexOverride } = actionParams; + + const defaultAlertHistoryIndexSuffix = AlertHistoryDefaultIndexName.replace( + ALERT_HISTORY_PREFIX, + '' + ); + + const getDocumentToIndex = (doc: Array> | undefined) => + doc && doc.length > 0 ? ((doc[0] as unknown) as string) : undefined; + + const [documentToIndex, setDocumentToIndex] = useState( + getDocumentToIndex(documents) + ); + const [alertHistoryIndexSuffix, setAlertHistoryIndexSuffix] = useState( + indexOverride ? indexOverride.replace(ALERT_HISTORY_PREFIX, '') : defaultAlertHistoryIndexSuffix + ); + const [usePreconfiguredSchema, setUsePreconfiguredSchema] = useState(false); + + useEffect(() => { + setDocumentToIndex(getDocumentToIndex(documents)); + }, [documents]); + + useEffect(() => { + if (actionConnector?.id === AlertHistoryEsIndexConnectorId) { + setUsePreconfiguredSchema(true); + editAction('documents', [JSON.stringify(AlertHistoryDocumentTemplate)], index); + setDocumentToIndex(JSON.stringify(AlertHistoryDocumentTemplate)); + } else { + setUsePreconfiguredSchema(false); + editAction('documents', undefined, index); + setDocumentToIndex(undefined); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [actionConnector?.id]); const onDocumentsChange = (updatedDocuments: string) => { try { const documentsJSON = JSON.parse(updatedDocuments); editAction('documents', [documentsJSON], index); + setDocumentToIndex(updatedDocuments); } catch (e) { // set document as empty to turn on the validation for non empty valid JSON object editAction('documents', [{}], index); + setDocumentToIndex(undefined); } }; - return ( + const documentsFieldLabel = i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.documentsFieldLabel', + { + defaultMessage: 'Document to index', + } + ); + + const resetDefaultIndex = + indexOverride && indexOverride !== AlertHistoryDefaultIndexName ? ( + + { + editAction('indexOverride', AlertHistoryDefaultIndexName, index); + setAlertHistoryIndexSuffix(defaultAlertHistoryIndexSuffix); + }} + > + + + + + ) : ( + <> + ); + + const preconfiguredDocumentSchema = ( + <> + 0} + label={i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.preconfiguredIndex', + { + defaultMessage: 'Elasticsearch index', + } + )} + labelAppend={resetDefaultIndex} + helpText={ + <> + + + + + + } + > + { + editAction('indexOverride', `${ALERT_HISTORY_PREFIX}${e.target.value}`, index); + setAlertHistoryIndexSuffix(e.target.value); + }} + /> + + + + + {JSON.stringify(AlertHistoryDocumentTemplate, null, 2)} + + + + ); + + const jsonDocumentEditor = ( 0 - ? ((documents[0] as unknown) as string) - : undefined + : documentToIndex } - label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.documentsFieldLabel', - { - defaultMessage: 'Document to index', - } - )} + label={documentsFieldLabel} aria-label={i18n.translate( 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.jsonDocAriaLabel', { @@ -69,15 +197,15 @@ export const IndexParamsFields = ({ } onBlur={() => { - if ( - !(documents && documents.length > 0 ? ((documents[0] as unknown) as string) : undefined) - ) { + if (!documentToIndex) { // set document as empty to turn on the validation for non empty valid JSON object onDocumentsChange('{}'); } }} /> ); + + return usePreconfiguredSchema ? preconfiguredDocumentSchema : jsonDocumentEditor; }; // eslint-disable-next-line import/no-default-export diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/types.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/types.ts index 8a1b2bfb4ac22..d94cdde349dc7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/types.ts @@ -42,6 +42,7 @@ export interface PagerDutyActionParams { export interface IndexActionParams { documents: Array>; + indexOverride?: string; } export enum ServerLogLevelOptions { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/action_variables.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/action_variables.test.ts index 435e4c5637ee5..1414242358d58 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/action_variables.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/action_variables.test.ts @@ -32,6 +32,10 @@ describe('transformActionVariables', () => { "description": "The tags of the rule.", "name": "rule.tags", }, + Object { + "description": "The type of rule.", + "name": "rule.type", + }, Object { "description": "The date the rule scheduled the action.", "name": "date", @@ -127,6 +131,10 @@ describe('transformActionVariables', () => { "description": "The tags of the rule.", "name": "rule.tags", }, + Object { + "description": "The type of rule.", + "name": "rule.type", + }, Object { "description": "The date the rule scheduled the action.", "name": "date", @@ -230,6 +238,10 @@ describe('transformActionVariables', () => { "description": "The tags of the rule.", "name": "rule.tags", }, + Object { + "description": "The type of rule.", + "name": "rule.type", + }, Object { "description": "The date the rule scheduled the action.", "name": "date", @@ -336,6 +348,10 @@ describe('transformActionVariables', () => { "description": "The tags of the rule.", "name": "rule.tags", }, + Object { + "description": "The type of rule.", + "name": "rule.type", + }, Object { "description": "The date the rule scheduled the action.", "name": "date", @@ -460,6 +476,10 @@ describe('transformActionVariables', () => { "description": "The tags of the rule.", "name": "rule.tags", }, + Object { + "description": "The type of rule.", + "name": "rule.type", + }, Object { "description": "The date the rule scheduled the action.", "name": "date", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/action_variables.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/action_variables.ts index 29f2b277c97a3..9722cc42ed396 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/action_variables.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/action_variables.ts @@ -26,6 +26,7 @@ export enum AlertProvidedActionVariables { ruleName = 'rule.name', ruleSpaceId = 'rule.spaceId', ruleTags = 'rule.tags', + ruleType = 'rule.type', date = 'date', alertId = 'alert.id', alertActionGroup = 'alert.actionGroup', @@ -83,6 +84,13 @@ function getAlwaysProvidedActionVariables(): ActionVariable[] { }), }); + result.push({ + name: AlertProvidedActionVariables.ruleType, + description: i18n.translate('xpack.triggersActionsUI.actionVariables.ruleTypeLabel', { + defaultMessage: 'The type of rule.', + }), + }); + result.push({ name: AlertProvidedActionVariables.date, description: i18n.translate('xpack.triggersActionsUI.actionVariables.dateLabel', { diff --git a/x-pack/plugins/triggers_actions_ui/public/types.ts b/x-pack/plugins/triggers_actions_ui/public/types.ts index cf2dda203bb2d..1fd031cda6d96 100644 --- a/x-pack/plugins/triggers_actions_ui/public/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/types.ts @@ -10,7 +10,13 @@ import type { DocLinksStart } from 'kibana/public'; import { ComponentType } from 'react'; import { ChartsPluginSetup } from 'src/plugins/charts/public'; import { DataPublicPluginStart } from 'src/plugins/data/public'; -import { ActionType } from '../../actions/common'; +import { + ActionType, + AlertHistoryEsIndexConnectorId, + AlertHistoryDocumentTemplate, + ALERT_HISTORY_PREFIX, + AlertHistoryDefaultIndexName, +} from '../../actions/common'; import { TypeRegistry } from './application/type_registry'; import { ActionGroup, @@ -45,7 +51,13 @@ export { AlertNotifyWhenType, AlertTypeParams, }; -export { ActionType }; +export { + ActionType, + AlertHistoryEsIndexConnectorId, + AlertHistoryDocumentTemplate, + AlertHistoryDefaultIndexName, + ALERT_HISTORY_PREFIX, +}; export type ActionTypeIndex = Record; export type AlertTypeIndex = Map; diff --git a/x-pack/plugins/uptime/public/state/api/alert_actions.ts b/x-pack/plugins/uptime/public/state/api/alert_actions.ts index 17b3354b666c4..592fd56984707 100644 --- a/x-pack/plugins/uptime/public/state/api/alert_actions.ts +++ b/x-pack/plugins/uptime/public/state/api/alert_actions.ts @@ -84,6 +84,7 @@ function getIndexActionParams(): IndexActionParams { observerLocation: '{{state.observerLocation}}', }, ], + indexOverride: null, }; } diff --git a/x-pack/test/alerting_api_integration/common/config.ts b/x-pack/test/alerting_api_integration/common/config.ts index beb639eb46334..6a0ab54087844 100644 --- a/x-pack/test/alerting_api_integration/common/config.ts +++ b/x-pack/test/alerting_api_integration/common/config.ts @@ -20,6 +20,7 @@ interface CreateTestConfigOptions { enableActionsProxy: boolean; rejectUnauthorized?: boolean; publicBaseUrl?: boolean; + preconfiguredAlertHistoryEsIndex?: boolean; } // test.not-enabled is specifically not enabled @@ -47,6 +48,7 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) disabledPlugins = [], ssl = false, rejectUnauthorized = true, + preconfiguredAlertHistoryEsIndex = false, } = options; return async ({ readConfigFile }: FtrConfigProviderContext) => { @@ -119,6 +121,7 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) ...actionsProxyUrl, '--xpack.eventLog.logEntries=true', + `--xpack.actions.preconfiguredAlertHistoryEsIndex=${preconfiguredAlertHistoryEsIndex}`, `--xpack.actions.preconfigured=${JSON.stringify({ 'my-slack1': { actionTypeId: '.slack', diff --git a/x-pack/test/alerting_api_integration/spaces_only/config.ts b/x-pack/test/alerting_api_integration/spaces_only/config.ts index c397a2659557f..49d5f52869b89 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/config.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/config.ts @@ -13,4 +13,5 @@ export default createTestConfig('spaces_only', { license: 'trial', enableActionsProxy: false, rejectUnauthorized: false, + preconfiguredAlertHistoryEsIndex: true, }); diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/builtin_action_types/preconfigured_alert_history_connector.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/builtin_action_types/preconfigured_alert_history_connector.ts new file mode 100644 index 0000000000000..cf8a0f99d4394 --- /dev/null +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/builtin_action_types/preconfigured_alert_history_connector.ts @@ -0,0 +1,165 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; + +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { getTestAlertData, ObjectRemover } from '../../../../common/lib'; +import { AlertHistoryDefaultIndexName } from '../../../../../../plugins/actions/common'; + +const ALERT_HISTORY_OVERRIDE_INDEX = 'kibana-alert-history-not-the-default'; + +// eslint-disable-next-line import/no-default-export +export default function preconfiguredAlertHistoryConnectorTests({ + getService, +}: FtrProviderContext) { + const es = getService('legacyEs'); + const supertest = getService('supertest'); + const retry = getService('retry'); + const esDeleteAllIndices = getService('esDeleteAllIndices'); + + describe('preconfigured alert history connector', () => { + const spaceId = 'default'; + const ruleTypeId = 'test.patternFiring'; + const alertId = 'instance'; + + function getTestData(params = {}) { + return getTestAlertData({ + rule_type_id: ruleTypeId, + schedule: { interval: '1s' }, + params: { + pattern: { [alertId]: new Array(100).fill(true) }, + }, + actions: [ + { + group: 'default', + id: 'preconfigured-alert-history-es-index', + params, + }, + ], + }); + } + + const objectRemover = new ObjectRemover(supertest); + beforeEach(() => { + esDeleteAllIndices(AlertHistoryDefaultIndexName); + esDeleteAllIndices(ALERT_HISTORY_OVERRIDE_INDEX); + }); + after(() => objectRemover.removeAll()); + + it('should index document with preconfigured schema', async () => { + const testRuleData = getTestData({ + documents: [{}], + }); + const response = await supertest + .post(`/api/alerting/rule`) + .set('kbn-xsrf', 'foo') + .send(testRuleData); + expect(response.status).to.eql(200); + objectRemover.add(spaceId, response.body.id, 'rule', 'alerting'); + + // Wait for alert to be active + await waitForStatus(response.body.id, new Set(['active'])); + + await retry.try(async () => { + const result = await es.search({ + index: AlertHistoryDefaultIndexName, + }); + const indexedItems = result.hits.hits; + expect(indexedItems.length).to.eql(1); + + const indexedDoc = indexedItems[0]._source; + + const timestampPattern = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/; + expect(indexedDoc['@timestamp']).to.match(timestampPattern); + expect(indexedDoc.tags).to.eql(testRuleData.tags); + expect(indexedDoc.rule.name).to.eql(testRuleData.name); + expect(indexedDoc.rule.params[ruleTypeId.replace('.', '__')]).to.eql(testRuleData.params); + expect(indexedDoc.rule.space).to.eql(spaceId); + expect(indexedDoc.rule.type).to.eql(ruleTypeId); + expect(indexedDoc.kibana.alert.id).to.eql(alertId); + expect(indexedDoc.kibana.alert.context[ruleTypeId.replace('.', '__')] != null).to.eql(true); + expect(indexedDoc.kibana.alert.actionGroup).to.eql('default'); + expect(indexedDoc.kibana.alert.actionGroupName).to.eql('Default'); + }); + }); + + it('should index document with preconfigured schema when indexOverride is defined', async () => { + const testRuleData = getTestData({ + documents: [{}], + indexOverride: ALERT_HISTORY_OVERRIDE_INDEX, + }); + const response = await supertest + .post(`/api/alerting/rule`) + .set('kbn-xsrf', 'foo') + .send(testRuleData); + expect(response.status).to.eql(200); + objectRemover.add(spaceId, response.body.id, 'rule', 'alerting'); + + // Wait for alert to be active + await waitForStatus(response.body.id, new Set(['active'])); + + await retry.try(async () => { + const result = await es.search({ + index: ALERT_HISTORY_OVERRIDE_INDEX, + }); + const indexedItems = result.hits.hits; + expect(indexedItems.length).to.eql(1); + + const indexedDoc = indexedItems[0]._source; + + const timestampPattern = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/; + expect(indexedDoc['@timestamp']).to.match(timestampPattern); + expect(indexedDoc.tags).to.eql(testRuleData.tags); + expect(indexedDoc.rule.name).to.eql(testRuleData.name); + expect(indexedDoc.rule.params[ruleTypeId.replace('.', '__')]).to.eql(testRuleData.params); + expect(indexedDoc.rule.space).to.eql(spaceId); + expect(indexedDoc.rule.type).to.eql(ruleTypeId); + expect(indexedDoc.kibana.alert.id).to.eql(alertId); + expect(indexedDoc.kibana.alert.context[ruleTypeId.replace('.', '__')] != null).to.eql(true); + expect(indexedDoc.kibana.alert.actionGroup).to.eql('default'); + expect(indexedDoc.kibana.alert.actionGroupName).to.eql('Default'); + }); + }); + }); + + const WaitForStatusIncrement = 500; + + async function waitForStatus( + id: string, + statuses: Set, + waitMillis: number = 10000 + ): Promise> { + if (waitMillis < 0) { + expect().fail(`waiting for alert ${id} statuses ${Array.from(statuses)} timed out`); + } + + const response = await supertest.get(`/api/alerts/alert/${id}`); + expect(response.status).to.eql(200); + + const { executionStatus } = response.body || {}; + const { status } = executionStatus || {}; + + const message = `waitForStatus(${Array.from(statuses)}): got ${JSON.stringify( + executionStatus + )}`; + + if (statuses.has(status)) { + return executionStatus; + } + + // eslint-disable-next-line no-console + console.log(`${message}, retrying`); + + await delay(WaitForStatusIncrement); + return await waitForStatus(id, statuses, waitMillis - WaitForStatusIncrement); + } + + async function delay(millis: number): Promise { + await new Promise((resolve) => setTimeout(resolve, millis)); + } +} diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/get_all.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/get_all.ts index 531df9d4ed19f..08241f2ad8e22 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/get_all.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/get_all.ts @@ -36,6 +36,13 @@ export default function getAllActionTests({ getService }: FtrProviderContext) { objectRemover.add(Spaces.space1.id, createdAction.id, 'action', 'actions'); await supertest.get(`${getUrlPrefix(Spaces.space1.id)}/api/actions/connectors`).expect(200, [ + { + id: 'preconfigured-alert-history-es-index', + name: 'Alert history Elasticsearch index', + connector_type_id: '.index', + is_preconfigured: true, + referenced_by_count: 0, + }, { id: createdAction.id, is_preconfigured: false, @@ -95,6 +102,13 @@ export default function getAllActionTests({ getService }: FtrProviderContext) { objectRemover.add(Spaces.space1.id, createdAction.id, 'action', 'actions'); await supertest.get(`${getUrlPrefix(Spaces.other.id)}/api/actions/connectors`).expect(200, [ + { + id: 'preconfigured-alert-history-es-index', + name: 'Alert history Elasticsearch index', + connector_type_id: '.index', + is_preconfigured: true, + referenced_by_count: 0, + }, { id: 'preconfigured-es-index-action', is_preconfigured: true, @@ -145,6 +159,13 @@ export default function getAllActionTests({ getService }: FtrProviderContext) { objectRemover.add(Spaces.space1.id, createdAction.id, 'action', 'actions'); await supertest.get(`${getUrlPrefix(Spaces.space1.id)}/api/actions`).expect(200, [ + { + id: 'preconfigured-alert-history-es-index', + name: 'Alert history Elasticsearch index', + actionTypeId: '.index', + isPreconfigured: true, + referencedByCount: 0, + }, { id: createdAction.id, isPreconfigured: false, diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/index.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/index.ts index d5056508e5de9..43f442c131626 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/index.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/index.ts @@ -23,6 +23,7 @@ export default function actionsTests({ loadTestFile, getService }: FtrProviderCo loadTestFile(require.resolve('./execute')); loadTestFile(require.resolve('./builtin_action_types/es_index')); loadTestFile(require.resolve('./builtin_action_types/webhook')); + loadTestFile(require.resolve('./builtin_action_types/preconfigured_alert_history_connector')); loadTestFile(require.resolve('./type_not_enabled')); // note that this test will destroy existing spaces diff --git a/x-pack/test/functional_with_es_ssl/config.ts b/x-pack/test/functional_with_es_ssl/config.ts index 5dd1890e240a4..91a349e1bf44a 100644 --- a/x-pack/test/functional_with_es_ssl/config.ts +++ b/x-pack/test/functional_with_es_ssl/config.ts @@ -66,6 +66,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, `--plugin-path=${join(__dirname, 'fixtures', 'plugins', 'alerts')}`, `--xpack.actions.enabledActionTypes=${JSON.stringify(enabledActionTypes)}`, + `--xpack.actions.preconfiguredAlertHistoryEsIndex=false`, `--xpack.actions.preconfigured=${JSON.stringify({ 'my-slack1': { actionTypeId: '.slack', From 01d12cb11296baf59f00472b486be6152873f166 Mon Sep 17 00:00:00 2001 From: Ying Mao Date: Thu, 8 Apr 2021 22:20:28 -0400 Subject: [PATCH 2/2] Fixing docs link --- docs/user/alerting/action-types/index.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user/alerting/action-types/index.asciidoc b/docs/user/alerting/action-types/index.asciidoc index e23dcbf298fd5..53fab8bf2242f 100644 --- a/docs/user/alerting/action-types/index.asciidoc +++ b/docs/user/alerting/action-types/index.asciidoc @@ -109,7 +109,7 @@ Documents are indexed using a preconfigured schema that captures the <> for more information. +To write documents to the preconfigured index, you must have `all` or `write` privileges to the `kibana-alert-history-*` indices. Refer to <> for more information. ============================================== [NOTE]