No description
Find a file
Garrett Spong 482faae799
[SIEM] Adds Signals Histogram (#53742)
## Summary

Detection Engine Meta Issue: #50405

This PR adds the `Signals Histogram` component for use on the main `Detection Engine` page, `Rule Details` page, and the newly designed `Overview` page.

Out of the box configuration includes an `EuiSelect` for stacking by the following:
* Risk Scores
* Severities
* Event Actions
* Event Categories
* Host Names
* Rule Types
* Rules
* Users
* Destination IPs
* Source IPs

Additional configuration properties are available to configure the component as needed depending on where it will be displayed (e.g. no `Stack By` option on `Overview`, filter to specific `rule_id` on `Rule Details`, etc):

``` ts
interface SignalsHistogramPanelProps {
  defaultStackByOption?: SignalsHistogramOption;
  filters?: esFilters.Filter[];
  from: number;
  query?: Query;
  legendPosition?: 'left' | 'right' | 'bottom' | 'top';
  loadingInitial?: boolean;
  showLinkToSignals?: boolean;
  showTotalSignalsCount?: boolean;
  stackByOptions?: SignalsHistogramOption[];
  title?: string;
  to: number;
  updateDateRange: (min: number, max: number) => void;
}
```
##### Light Theme:
![de_hist_light](https://user-images.githubusercontent.com/2946766/71299977-41685800-234e-11ea-93bd-05a0c4cb6ee1.gif)

##### Dark Theme:
![de_histogram_dark](https://user-images.githubusercontent.com/2946766/71299980-45947580-234e-11ea-9d26-380bae5c4aa6.gif)


##### Overview:

Example props for overview impl:

``` jsx
<SignalsHistogramPanel
  filters={filters}
  from={from}
  loadingInitial={loading}
  query={query}
  showTotalSignalsCount={true}
  showLinkToSignals={true}
  defaultStackByOption={{
    text: 'Signals count by MITRE ATT&CK category',
    value: 'signal.rule.threats',
  }}
  legendPosition={'right'}
  to={to}
  title="Signals count by MITRE ATT&CK category"
  updateDateRange={updateDateRangeCallback}
/>
```
![image](https://user-images.githubusercontent.com/2946766/72030438-2fd7e900-3246-11ea-8404-40905ca5f85c.png)


Note @andrew-goldstein @angorayc @MichaelMarcialis -- looks like the MITRE ATT&CK Tactics are stored as a nested object in `signal.rule.threat`, so we may have to do some finangling to get it to show on the histogram. 

e.g. format:

``` json
{
  "framework": "MITRE ATT&CK",
  "tactic": {
    "id": "TA0010",
    "reference": "https://attack.mitre.org/tactics/TA0010",
    "name": "Exfiltration"
  },
  "techniques": [
    {
      "id": "T1002",
      "name": "Data Compressed",
      "reference": "https://attack.mitre.org/techniques/T1002"
    }
  ]
}
```




### Checklist

Use ~~strikethroughs~~ to remove checklist items you don't feel are applicable to this PR.

- [ ] This was checked for cross-browser compatibility, [including a check against IE11](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility)
- [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/master/packages/kbn-i18n/README.md)
- [ ] [Documentation](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#writing-documentation) was added for features that require explanation or tutorials
  * Will work with @benskelker on any specific documentation
- [ ] [Unit or functional tests](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) were updated or added to match the most common scenarios
- [ ] ~This was checked for [keyboard-only and screenreader accessibility](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility#Accessibility_testing_checklist)~

### For maintainers

- [ ] ~This was checked for breaking API changes and was [labeled appropriately](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#release-notes-process)~
- [ ] ~This includes a feature addition or change that requires a release note and was [labeled appropriately](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#release-notes-process)~
2020-01-09 17:52:57 -07:00
.ci Fix number of executions per agent in flaky test job (#54311) 2020-01-09 09:48:22 -05:00
.github Remove non existing codeowners (#54274) 2020-01-08 18:10:26 +01:00
bin
common/graphql
config Instrument Kibana with APM RUM agent (#44281) 2019-12-18 12:16:15 +01:00
data
docs [DOCS] Updated links to snapshot-restore docs. (#52151) 2020-01-09 16:12:15 -08:00
examples add examples/ to no-restricted-path config (#54252) 2020-01-08 19:20:07 +03:00
licenses
packages Add support for certificates in PKCS#12 (P12) key stores (#53810) 2020-01-09 13:03:16 -05:00
rfcs [RFC][skip-ci] Prevent plugins from blocking Kibana startup (#45796) 2019-12-18 14:52:18 +01:00
scripts Code coverage setup on CI (#49003) 2020-01-08 21:08:48 +01:00
src [TSVB] Add domain fit option to 0 opacity tsvb line charts (#54314) 2020-01-09 14:28:57 -06:00
style_guides Updating accessibility guide and contributing readmes (#52038) 2019-12-04 19:11:16 -06:00
tasks Code coverage setup on CI (#49003) 2020-01-08 21:08:48 +01:00
test Add support for certificates in PKCS#12 (P12) key stores (#53810) 2020-01-09 13:03:16 -05:00
typings Upgrade to EUI@17.1.2 [table typescript types] (#52688) 2019-12-18 11:15:14 -07:00
utilities remove use of experimental fs.promises api (#53346) 2019-12-25 06:27:21 -07:00
vars Code coverage setup on CI (#49003) 2020-01-08 21:08:48 +01:00
webpackShims autofix all violations 2019-12-13 23:17:13 -07:00
x-pack [SIEM] Adds Signals Histogram (#53742) 2020-01-09 17:52:57 -07:00
.backportrc.json
.browserslistrc
.editorconfig
.eslintignore Move @kbn/es-query into data plugin (#51014) 2019-11-26 13:28:04 -07:00
.eslintrc.js Fix eslint rule for vis_type_metric `jsx-a11y/click-events-hav… (#54279) 2020-01-09 17:07:44 +01:00
.gitattributes
.gitignore Instrument Kibana with APM RUM agent (#44281) 2019-12-18 12:16:15 +01:00
.i18nrc.json NP Migration: Sample data (#52753) 2019-12-20 19:06:21 +01:00
.node-version Update Node.js to version 10.18.0 (#52865) 2019-12-18 13:07:14 +01:00
.nvmrc Update Node.js to version 10.18.0 (#52865) 2019-12-18 13:07:14 +01:00
.prettierrc
.sass-lint.yml
.yarnrc
CONTRIBUTING.md Add explanation of path.data to contribution guide (#54235) 2020-01-08 14:53:58 +01:00
FAQ.md
github_checks_reporter.json
Gruntfile.js autofix all violations 2019-12-13 23:17:13 -07:00
Jenkinsfile Add PR comments to pipeline (#51504) 2019-12-03 18:06:30 -05:00
kibana.d.ts
LICENSE.txt
NOTICE.txt Bump year in NOTICE.txt 2019-12-31 21:46:25 -05:00
package.json [TSVB] Add domain fit option to 0 opacity tsvb line charts (#54314) 2020-01-09 14:28:57 -06:00
preinstall_check.js
README.md
renovate.json5 Add support for certificates in PKCS#12 (P12) key stores (#53810) 2020-01-09 13:03:16 -05:00
STYLEGUIDE.md Upgrade to TypeScript 3.7.2 (#47188) 2019-11-15 10:33:29 +01:00
tsconfig.browser.json
tsconfig.json
tsconfig.types.json
TYPESCRIPT.md Update deprecated React.SFC and React.StatelessComponent types (#50852) 2019-11-21 20:53:54 +01:00
yarn.lock [TSVB] Add domain fit option to 0 opacity tsvb line charts (#54314) 2020-01-09 14:28:57 -06: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. 5.1.2 5.1.2 💚 OK
ES patch number is newer. 5.1.2 5.1.5 ⚠️ Logged warning
ES minor number is newer. 5.1.2 5.5.0 ⚠️ Logged warning
ES major number is newer. 5.1.2 6.0.0 🚫 Fatal error
ES patch number is older. 5.1.2 5.1.0 ⚠️ Logged warning
ES minor number is older. 5.1.2 5.0.0 🚫 Fatal error
ES major number is older. 5.1.2 4.0.0 🚫 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.