Your window into the Elastic Stack
Find a file
Ersin Erdal 25d578d0ad
[BE] [Conditional actions] Add query and timeframe params to RuleAction to filter alerts. (#152360)
Resolves: #152357

With **Conditional Actions** we want to add some params to an action to
filter the alerts it gets.
~~As we are already using the persisting alerts (aka alert-as-data) for
summary actions, decided to use this filter with those actions first,
the same feature will be applied to the non-summary actions with a
follow on issue.~~
As this PR has already been waiting and the development for for-each
type alerts is done, decided to add also that change in this PR. So, any
rule that has `getSummarizedAlerts` can have an action with
alertsFilter.

This PR adds the new `alertsFilter` object to RuleAction and allows the
rule types that pass it to filter alerts for summary actions.

The filter has two groups of params: `query` and `timeframe`

`query` has two fields, `kql` and `dsl`, kql is to be entered by the
user and `dsl` is to be generated and persisted out of `kql` in BE .
We send `dsl` to ES to filter alerts.

`timeframe` also has two fields: `days` and `hours`.
`days` is an array that represents the days of the week by their index
numbers. (e.g. [1,2,3] means MON,TUE,WED)

`hours` is a time range. e.g. `{start:'08:00', end:'17:00'}` means
between 08:00 and 17:00.
As we save Datetime fileds as UTC time, we assume that this time range
is in UTC format. (So we need to tell the users that the hours they
enter are UTC times)

`{timeframe: { days: [1,2,3,4,5], hours: {start:'08:00', end:'17:00'}}`
=> Alert has to be started on : **Every weekday, at between 08:00 and
17:00**

The filter's schema is below:
```
{
  query: null | {
    kql: string;
    dsl?: string;
  };
  timeframe: null | {
    days: Array< 1 | 2 | 3 | 4 | 5 | 6 | 7>;
    hours: {
      start: string;
      end: string;
    };
    timezone: string;
  };
}
```

## To verify:

Add below code to the rule create/update call's payload in UI and create
an alert generating rule with summary action.
Then expect the alerts to be filtered out from the action's output.

Modify
2a1740d035/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.ts (L23)

To be:
```
const rewriteBodyRequest: RewriteResponseCase<RuleCreateBody> = ({
  ruleTypeId,
  actions,
  ...res
}): any => ({
  ...res,
  rule_type_id: ruleTypeId,
  actions: actions.map(({ group, id, params, frequency, alertsFilter }) => ({
    group,
    id,
    params,
    frequency: {
      notify_when: frequency!.notifyWhen,
      throttle: frequency!.throttle,
      summary: frequency!.summary,
    },
    alerts_filter: {
      query: {
        kql: 'kibana.alert.rule.name:<your rule name here>',
      },
      timeframe: {
        days: [1, 2, 4, 5],
        hours: { start: '08:00', end: '17:00' },
        timezone: 'UTC',
      },
    },
  })),
});
```

do the same for:
2a1740d035/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/update.ts (L18)

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
2023-03-30 14:36:46 +02:00
.buildkite Remove Playwright e2e test from Observability (#153934) 2023-03-29 17:01:35 +02:00
.ci Upgrade Node.js to 16.19.1 (#151527) 2023-02-21 10:40:59 -06:00
.github [Observability] Copy Exploratory View into a separate app (#153852) 2023-03-29 10:30:58 +02:00
api_docs [api-docs] 2023-03-30 Daily api_docs build (#154017) 2023-03-30 00:59:49 -04:00
config [Fleet] Configure Fleet for serverless (#152712) 2023-03-07 08:59:53 -05:00
dev_docs [Saved Objects] Update the migrationVersion property to hold a plain string value (#150075) 2023-03-24 13:45:30 +01:00
docs [APM] 8.7.0 Documentation and screenshot updates (#153140) 2023-03-29 10:21:44 -07:00
examples [Dashboard] [Controls] Use uiActions for control hover actions (#153065) 2023-03-21 08:47:40 -06:00
kbn_pm chore(NA): exit early with link for docs when using kbn_pm on windows (#139745) 2023-02-10 15:38:29 +00:00
legacy_rfcs rename @elastic/* packages to @kbn/* (#138957) 2022-08-18 08:54:42 -07:00
licenses Elastic License 2.0 (#90099) 2021-02-03 18:12:39 -08:00
packages Adds support for event loop utilization to the core metrics service (#153717) 2023-03-29 14:35:55 -07:00
plugins [dev/cli] ensure plugins/ and all watch source dirs exist (#78973) 2020-09-30 10:20:44 -07:00
scripts [ci] build next docs in PRs when relevant files change (#149991) 2023-02-09 21:57:10 -07:00
src [Visualizations] Removes the export * from the plugins index files. (#154019) 2023-03-30 14:20:29 +03:00
test [Unified search] Fixes the comma delimeter copy paste on multifields (#153772) 2023-03-29 11:00:15 +03:00
typings Wrap rison-node to improve types (#146649) 2022-12-01 08:33:56 -07:00
vars [ts] ts refs cache was removed, remove capture task 2022-10-28 14:27:18 -05:00
x-pack [BE] [Conditional actions] Add query and timeframe params to RuleAction to filter alerts. (#152360) 2023-03-30 14:36:46 +02:00
.backportrc.json chore(NA): adds 8.7 into backportrc (#150569) 2023-02-08 21:22:43 +00:00
.bazelignore Bazel config maintenance (#135442) 2022-07-05 10:20:26 -05:00
.bazeliskversion chore(NA): upgrade bazelisk into v1.11.0 (#125070) 2022-02-09 20:43:57 +00:00
.bazelrc chore(NA): use new and more performant BuildBuddy servers (#130350) 2022-04-18 02:01:38 +01:00
.bazelrc.common Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
.bazelversion chore(NA): revert bazel upgrade for v5.2.0 (#135096) 2022-06-24 03:57:21 +01:00
.browserslistrc [browserslist] remove unnecessary browsers (#89186) 2021-01-25 16:30:18 -07:00
.editorconfig .editorconfig MDX files should follow the same rules as MD (#96942) 2021-04-13 11:40:42 -04:00
.eslintignore [NOTICE.txt] Fix notices for Gainsight and FullStory (#146004) 2023-01-13 14:49:43 +01:00
.eslintrc.js [Observability] Copy Exploratory View into a separate app (#153852) 2023-03-29 10:30:58 +02:00
.gitattributes
.gitignore [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
.i18nrc.json Migrate drag and drop logic from Lens plugin to its own package (#151836) 2023-03-23 11:09:17 +01:00
.node-version Upgrade Node.js to 16.19.1 (#151527) 2023-02-21 10:40:59 -06:00
.npmrc chore(NA): assure puppeteer_skip_chromium_download is applied across every yarn install situation (#88346) 2021-01-14 18:00:23 +00:00
.nvmrc Upgrade Node.js to 16.19.1 (#151527) 2023-02-21 10:40:59 -06:00
.prettierignore [dev] Replace sass-lint with stylelint (#86177) 2021-01-15 11:52:29 -06:00
.prettierrc
.stylelintignore chore(NA): stop grouping bazel out symlink folders (#96066) 2021-04-01 14:16:14 -05:00
.stylelintrc Bump stylelint to ^14 (#136693) 2022-07-20 10:11:00 -05:00
.telemetryrc.json [Telemetry] Fix telemetry-tools TS parser for packages (#149819) 2023-01-31 04:09:09 +03:00
.yarnrc chore(NA): manage npm dependencies within bazel (#92864) 2021-03-03 12:37:20 -05:00
BUILD.bazel Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT.md (#87439) 2021-02-23 09:01:51 +01:00
CONTRIBUTING.md Update doc slugs to improve analytic tracking, move to appropriate folders (#113630) 2021-10-04 13:36:45 -04:00
FAQ.md Fix small typos in the root md files (#134609) 2022-06-23 09:36:11 -05:00
fleet_packages.json Add field to allow synchronization to prerelease versions in bundled packages (#151627) 2023-02-21 17:25:34 +01:00
github_checks_reporter.json
Jenkinsfile [CI] Disable tracked branch jobs in Jenkins, enable reporting in Buildkite (#112604) 2021-09-21 11:31:15 -04:00
kibana.d.ts fix all violations 2022-04-16 01:37:30 -05:00
LICENSE.txt Elastic License 2.0 (#90099) 2021-02-03 18:12:39 -08:00
nav-kibana-dev.docnav.json [HTTP] Dev doc for HTTP API versioning (#152739) 2023-03-07 08:09:49 -05:00
NOTICE.txt [NOTICE.txt] Fix notices for Gainsight and FullStory (#146004) 2023-01-13 14:49:43 +01:00
package.json [Reporting] bump puppeteer and chromium (#153033) 2023-03-30 12:16:21 +02:00
preinstall_check.js Elastic License 2.0 (#90099) 2021-02-03 18:12:39 -08:00
README.md [README] Update version Compatibility with Elasticsearch (#116040) 2022-01-10 10:31:21 -05:00
renovate.json Upgrade typescript-eslint to 5.54.0 (#152358) 2023-03-23 10:52:41 -05:00
RISK_MATRIX.mdx Add "Risk Matrix" section to the PR template (#100649) 2021-06-02 14:43:47 +02:00
SECURITY.md Add security policy to the Kibana repository (#85407) 2020-12-10 09:26:00 -05:00
STYLEGUIDE.mdx [styleguide] update path to scss theme (#140742) 2022-09-15 10:41:14 -04:00
tsconfig.base.json [Observability] Copy Exploratory View into a separate app (#153852) 2023-03-29 10:30:58 +02:00
tsconfig.browser.json
tsconfig.browser_bazel.json [build_ts_refs] improve caches, allow building a subset of projects (#107981) 2021-08-10 22:12:45 -07:00
tsconfig.json Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
TYPESCRIPT.md Fix small typos in the root md files (#134609) 2022-06-23 09:36:11 -05:00
versions.json chore(NA): update versions after v8.6.3 bump (#151468) 2023-02-17 02:17:54 +00:00
WORKSPACE.bazel Upgrade Node.js to 16.19.1 (#151527) 2023-02-21 10:40:59 -06:00
yarn.lock [Reporting] bump puppeteer and chromium (#153033) 2023-03-30 12:16:21 +02:00

Kibana

Kibana is your window into the Elastic Stack. Specifically, it's a browser-based analytics and search dashboard for Elasticsearch.

Getting Started

If you just want to try Kibana out, check out the Elastic Stack Getting Started Page to give it a whirl.

If you're interested in diving a bit deeper and getting a taste of Kibana's capabilities, head over to the Kibana Getting Started Page.

Using a Kibana Release

If you want to use a Kibana release in production, give it a test run, or just play around:

Building and Running Kibana, and/or Contributing Code

You might want to build Kibana locally to contribute some code, test out the latest features, or try out an open PR:

Documentation

Visit Elastic.co for the full Kibana documentation.

For information about building the documentation, see the README in elastic/docs.

Version Compatibility with Elasticsearch

Ideally, you should be running Elasticsearch and Kibana with matching version numbers. If your Elasticsearch has an older version number or a newer major number than Kibana, then Kibana will fail to run. If Elasticsearch has a newer minor or patch number than Kibana, then the Kibana Server will log a warning.

Note: The version numbers below are only examples, meant to illustrate the relationships between different types of version numbers.

Situation Example Kibana version Example ES version Outcome
Versions are the same. 7.15.1 7.15.1 💚 OK
ES patch number is newer. 7.15.0 7.15.1 ⚠️ Logged warning
ES minor number is newer. 7.14.2 7.15.0 ⚠️ Logged warning
ES major number is newer. 7.15.1 8.0.0 🚫 Fatal error
ES patch number is older. 7.15.1 7.15.0 ⚠️ Logged warning
ES minor number is older. 7.15.1 7.14.2 🚫 Fatal error
ES major number is older. 8.0.0 7.15.1 🚫 Fatal error

Questions? Problems? Suggestions?

  • If you've found a bug or want to request a feature, please create a GitHub Issue. Please check to make sure someone else hasn't already created an issue for the same topic.
  • Need help using Kibana? Ask away on our Kibana Discuss Forum and a fellow community member or Elastic engineer will be glad to help you out.