From f1bc11e2fa183267e0e01692b908ffdbe5020aab Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Mon, 19 Apr 2021 17:50:17 +0200 Subject: [PATCH 01/56] add FTR test for aborted requests error name (#97086) * add FTR test for aborted requests error name * delete unused file * wait for the request to fire before cancellation --- .../plugins/core_http/kibana.json | 8 ++++ .../plugins/core_http/package.json | 14 ++++++ .../plugins/core_http/public/index.ts | 13 ++++++ .../plugins/core_http/public/plugin.tsx | 46 +++++++++++++++++++ .../plugins/core_http/server/index.ts | 11 +++++ .../plugins/core_http/server/plugin.ts | 30 ++++++++++++ .../plugins/core_http/tsconfig.json | 18 ++++++++ .../plugins/core_provider_plugin/kibana.json | 8 +++- .../test_suites/core_plugins/http.ts | 33 +++++++++++++ .../test_suites/core_plugins/index.ts | 1 + 10 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 test/plugin_functional/plugins/core_http/kibana.json create mode 100644 test/plugin_functional/plugins/core_http/package.json create mode 100644 test/plugin_functional/plugins/core_http/public/index.ts create mode 100644 test/plugin_functional/plugins/core_http/public/plugin.tsx create mode 100644 test/plugin_functional/plugins/core_http/server/index.ts create mode 100644 test/plugin_functional/plugins/core_http/server/plugin.ts create mode 100644 test/plugin_functional/plugins/core_http/tsconfig.json create mode 100644 test/plugin_functional/test_suites/core_plugins/http.ts diff --git a/test/plugin_functional/plugins/core_http/kibana.json b/test/plugin_functional/plugins/core_http/kibana.json new file mode 100644 index 0000000000000..69855f59d64b7 --- /dev/null +++ b/test/plugin_functional/plugins/core_http/kibana.json @@ -0,0 +1,8 @@ +{ + "id": "coreHttp", + "version": "0.0.1", + "kibanaVersion": "kibana", + "configPath": ["core_http"], + "server": true, + "ui": true +} diff --git a/test/plugin_functional/plugins/core_http/package.json b/test/plugin_functional/plugins/core_http/package.json new file mode 100644 index 0000000000000..fd0e80d3c1822 --- /dev/null +++ b/test/plugin_functional/plugins/core_http/package.json @@ -0,0 +1,14 @@ +{ + "name": "core_http", + "version": "1.0.0", + "main": "target/test/plugin_functional/plugins/core_http", + "kibana": { + "version": "kibana", + "templateVersion": "1.0.0" + }, + "license": "SSPL-1.0 OR Elastic License 2.0", + "scripts": { + "kbn": "node ../../../../scripts/kbn.js", + "build": "rm -rf './target' && ../../../../node_modules/.bin/tsc" + } +} \ No newline at end of file diff --git a/test/plugin_functional/plugins/core_http/public/index.ts b/test/plugin_functional/plugins/core_http/public/index.ts new file mode 100644 index 0000000000000..7b353cb1d2905 --- /dev/null +++ b/test/plugin_functional/plugins/core_http/public/index.ts @@ -0,0 +1,13 @@ +/* + * 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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { PluginInitializer } from 'kibana/public'; +import { CoreHttpPlugin, CoreHttpPluginSetup, CoreHttpPluginStart } from './plugin'; + +export const plugin: PluginInitializer = () => + new CoreHttpPlugin(); diff --git a/test/plugin_functional/plugins/core_http/public/plugin.tsx b/test/plugin_functional/plugins/core_http/public/plugin.tsx new file mode 100644 index 0000000000000..64b59847ffd1b --- /dev/null +++ b/test/plugin_functional/plugins/core_http/public/plugin.tsx @@ -0,0 +1,46 @@ +/* + * 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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Plugin, CoreSetup } from 'kibana/public'; + +export class CoreHttpPlugin implements Plugin { + public setup({ http }: CoreSetup, deps: {}) { + const tryRequestCancellation = async () => { + const abortController = new AbortController(); + + const errorNamePromise = http + .get('/api/core_http/never_reply', { signal: abortController.signal }) + .then( + () => { + return undefined; + }, + (e) => { + return e.name; + } + ); + + // simulating 'real' cancellation by awaiting a bit + window.setTimeout(() => { + abortController.abort(); + }, 100); + + return errorNamePromise; + }; + + return { + tryRequestCancellation, + }; + } + + public start() {} + + public stop() {} +} + +export type CoreHttpPluginSetup = ReturnType; +export type CoreHttpPluginStart = ReturnType; diff --git a/test/plugin_functional/plugins/core_http/server/index.ts b/test/plugin_functional/plugins/core_http/server/index.ts new file mode 100644 index 0000000000000..66c2bb9e676f3 --- /dev/null +++ b/test/plugin_functional/plugins/core_http/server/index.ts @@ -0,0 +1,11 @@ +/* + * 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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { CoreHttpPlugin } from './plugin'; + +export const plugin = () => new CoreHttpPlugin(); diff --git a/test/plugin_functional/plugins/core_http/server/plugin.ts b/test/plugin_functional/plugins/core_http/server/plugin.ts new file mode 100644 index 0000000000000..533e3b22b368b --- /dev/null +++ b/test/plugin_functional/plugins/core_http/server/plugin.ts @@ -0,0 +1,30 @@ +/* + * 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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { Plugin, CoreSetup } from 'kibana/server'; + +export class CoreHttpPlugin implements Plugin { + public setup(core: CoreSetup, deps: {}) { + const router = core.http.createRouter(); + router.get( + { + path: '/api/core_http/never_reply', + validate: false, + }, + async (ctx, req, res) => { + // need the endpoint to never reply to test request cancelation on the client side. + await new Promise(() => undefined); + return res.ok(); + } + ); + } + + public start() {} + + public stop() {} +} diff --git a/test/plugin_functional/plugins/core_http/tsconfig.json b/test/plugin_functional/plugins/core_http/tsconfig.json new file mode 100644 index 0000000000000..3d9d8ca9451d4 --- /dev/null +++ b/test/plugin_functional/plugins/core_http/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./target", + "skipLibCheck": true + }, + "include": [ + "index.ts", + "public/**/*.ts", + "public/**/*.tsx", + "server/**/*.ts", + "../../../../typings/**/*", + ], + "exclude": [], + "references": [ + { "path": "../../../../src/core/tsconfig.json" } + ] +} diff --git a/test/plugin_functional/plugins/core_provider_plugin/kibana.json b/test/plugin_functional/plugins/core_provider_plugin/kibana.json index c55f62762e233..b3009b07de0a0 100644 --- a/test/plugin_functional/plugins/core_provider_plugin/kibana.json +++ b/test/plugin_functional/plugins/core_provider_plugin/kibana.json @@ -2,7 +2,13 @@ "id": "coreProviderPlugin", "version": "0.0.1", "kibanaVersion": "kibana", - "optionalPlugins": ["corePluginA", "corePluginB", "licensing", "globalSearchTest"], + "optionalPlugins": [ + "corePluginA", + "corePluginB", + "coreHttp", + "licensing", + "globalSearchTest" + ], "server": false, "ui": true } diff --git a/test/plugin_functional/test_suites/core_plugins/http.ts b/test/plugin_functional/test_suites/core_plugins/http.ts new file mode 100644 index 0000000000000..78682da70e608 --- /dev/null +++ b/test/plugin_functional/test_suites/core_plugins/http.ts @@ -0,0 +1,33 @@ +/* + * 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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import expect from '@kbn/expect'; +import { PluginFunctionalProviderContext } from '../../services'; + +export default function ({ getService, getPageObjects }: PluginFunctionalProviderContext) { + const PageObjects = getPageObjects(['common']); + const browser = getService('browser'); + + const getCancelationErrorName = async () => { + return await browser.executeAsync(async (cb) => { + const errorName = await window._coreProvider.setup.plugins.coreHttp.tryRequestCancellation(); + cb(errorName); + }); + }; + + describe('http requests', () => { + beforeEach(async () => { + await PageObjects.common.navigateToApp('home'); + }); + + it('returns correct name for aborted requests', async () => { + const canceledErrorName = await getCancelationErrorName(); + expect(canceledErrorName).to.eql('AbortError'); + }); + }); +} diff --git a/test/plugin_functional/test_suites/core_plugins/index.ts b/test/plugin_functional/test_suites/core_plugins/index.ts index 3f26b317b81ed..25868ac9a62db 100644 --- a/test/plugin_functional/test_suites/core_plugins/index.ts +++ b/test/plugin_functional/test_suites/core_plugins/index.ts @@ -21,5 +21,6 @@ export default function ({ loadTestFile }: PluginFunctionalProviderContext) { loadTestFile(require.resolve('./rendering')); loadTestFile(require.resolve('./chrome_help_menu_links')); loadTestFile(require.resolve('./history_block')); + loadTestFile(require.resolve('./http')); }); } From 4ab22f933605e33c543cba781585e6afba421749 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Mon, 19 Apr 2021 09:57:50 -0600 Subject: [PATCH 02/56] [Maps] add visibility toggle and fit to bounds buttons to layer quick actions menu. (#97013) * hover actions * clean up * tslint, i18n, and snapshot fixes * update jest snapshot Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../layer_toc/__snapshots__/view.test.js.snap | 2 + .../toc_entry/__snapshots__/view.test.js.snap | 43 ++++++++++-- .../layer_toc/toc_entry/action_labels.ts | 33 +++++++++ .../layer_toc/toc_entry/index.js | 8 +++ .../toc_entry_actions_popover.test.tsx | 16 ++--- .../toc_entry_actions_popover.tsx | 53 ++++---------- .../layer_control/layer_toc/toc_entry/view.js | 70 ++++++++++++++----- .../layer_control/layer_toc/view.test.js | 6 ++ .../translations/translations/ja-JP.json | 3 - .../translations/translations/zh-CN.json | 3 - 10 files changed, 160 insertions(+), 77 deletions(-) create mode 100644 x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/action_labels.ts diff --git a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/__snapshots__/view.test.js.snap b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/__snapshots__/view.test.js.snap index beacaaecbf7f8..fbd83ed145a08 100644 --- a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/__snapshots__/view.test.js.snap +++ b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/__snapshots__/view.test.js.snap @@ -26,6 +26,7 @@ exports[`LayerTOC props isReadOnly 1`] = ` layer={ Object { "getId": [Function], + "supportsFitToBounds": [Function], } } /> @@ -34,6 +35,7 @@ exports[`LayerTOC props isReadOnly 1`] = ` layer={ Object { "getId": [Function], + "supportsFitToBounds": [Function], } } /> diff --git a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/__snapshots__/view.test.js.snap b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/__snapshots__/view.test.js.snap index f711549d87316..b43d740e72907 100644 --- a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/__snapshots__/view.test.js.snap +++ b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/__snapshots__/view.test.js.snap @@ -25,10 +25,17 @@ exports[`TOCEntry is rendered 1`] = ` "showAtZoomLevel": [Function], } } + supportsFitToBounds={false} />
+ @@ -88,10 +94,17 @@ exports[`TOCEntry props Should shade background when not selected layer 1`] = ` "showAtZoomLevel": [Function], } } + supportsFitToBounds={false} />
+ @@ -151,10 +163,17 @@ exports[`TOCEntry props Should shade background when selected layer 1`] = ` "showAtZoomLevel": [Function], } } + supportsFitToBounds={false} />
+ @@ -214,7 +232,18 @@ exports[`TOCEntry props isReadOnly 1`] = ` "showAtZoomLevel": [Function], } } + supportsFitToBounds={false} /> +
+ +
+ diff --git a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/action_labels.ts b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/action_labels.ts new file mode 100644 index 0000000000000..74d4b205bfdf2 --- /dev/null +++ b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/action_labels.ts @@ -0,0 +1,33 @@ +/* + * 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'; + +export function getVisibilityToggleIcon(isVisible: boolean) { + return isVisible ? 'eyeClosed' : 'eye'; +} + +export function getVisibilityToggleLabel(isVisible: boolean) { + return isVisible + ? i18n.translate('xpack.maps.layerTocActions.hideLayerTitle', { + defaultMessage: 'Hide layer', + }) + : i18n.translate('xpack.maps.layerTocActions.showLayerTitle', { + defaultMessage: 'Show layer', + }); +} + +export const EDIT_LAYER_LABEL = i18n.translate( + 'xpack.maps.layerControl.layerTocActions.editButtonLabel', + { + defaultMessage: 'Edit layer', + } +); + +export const FIT_TO_DATA_LABEL = i18n.translate('xpack.maps.layerTocActions.fitToDataTitle', { + defaultMessage: 'Fit to data', +}); diff --git a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/index.js b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/index.js index 85e9c242bf4bf..ee7922a579c34 100644 --- a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/index.js +++ b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/index.js @@ -19,10 +19,12 @@ import { getFlyoutDisplay, } from '../../../../../selectors/ui_selectors'; import { + fitToLayerExtent, setSelectedLayer, updateFlyout, hideTOCDetails, showTOCDetails, + toggleLayerVisible, } from '../../../../../actions'; function mapStateToProps(state = {}, ownProps) { @@ -40,6 +42,9 @@ function mapStateToProps(state = {}, ownProps) { function mapDispatchToProps(dispatch) { return { + fitToBounds: (layerId) => { + dispatch(fitToLayerExtent(layerId)); + }, openLayerPanel: async (layerId) => { await dispatch(setSelectedLayer(layerId)); dispatch(updateFlyout(FLYOUT_STATE.LAYER_PANEL)); @@ -50,6 +55,9 @@ function mapDispatchToProps(dispatch) { showTOCDetails: (layerId) => { dispatch(showTOCDetails(layerId)); }, + toggleVisible: (layerId) => { + dispatch(toggleLayerVisible(layerId)); + }, }; } diff --git a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.test.tsx b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.test.tsx index b1afb72750dab..dd85d6dd1eb6e 100644 --- a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.test.tsx +++ b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.test.tsx @@ -14,8 +14,6 @@ import { AbstractSource, ISource } from '../../../../../../classes/sources/sourc import { TOCEntryActionsPopover } from './toc_entry_actions_popover'; -let supportsFitToBounds: boolean; - class MockSource extends AbstractSource implements ISource {} class LayerMock extends AbstractLayer implements ILayer { @@ -31,10 +29,6 @@ class LayerMock extends AbstractLayer implements ILayer { super({ layerDescriptor, source }); } - async supportsFitToBounds(): Promise { - return supportsFitToBounds; - } - isVisible() { return true; } @@ -51,13 +45,10 @@ const defaultProps = { layer: new LayerMock(), removeLayer: () => {}, toggleVisible: () => {}, + supportsFitToBounds: true, }; describe('TOCEntryActionsPopover', () => { - beforeEach(() => { - supportsFitToBounds = true; - }); - test('is rendered', async () => { const component = shallow(); @@ -81,8 +72,9 @@ describe('TOCEntryActionsPopover', () => { }); test('should disable fit to data when supportsFitToBounds is false', async () => { - supportsFitToBounds = false; - const component = shallow(); + const component = shallow( + + ); // Ensure all promises resolve await new Promise((resolve) => process.nextTick(resolve)); diff --git a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx index 8127bd1e41283..3cd719f0b9447 100644 --- a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx +++ b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx @@ -11,6 +11,12 @@ import { EuiPopover, EuiContextMenu, EuiIcon } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { ILayer } from '../../../../../../classes/layers/layer'; import { TOCEntryButton } from '../toc_entry_button'; +import { + getVisibilityToggleIcon, + getVisibilityToggleLabel, + EDIT_LAYER_LABEL, + FIT_TO_DATA_LABEL, +} from '../action_labels'; export interface Props { cloneLayer: (layerId: string) => void; @@ -22,37 +28,16 @@ export interface Props { isReadOnly: boolean; layer: ILayer; removeLayer: (layerId: string) => void; + supportsFitToBounds: boolean; toggleVisible: (layerId: string) => void; } interface State { isPopoverOpen: boolean; - supportsFitToBounds: boolean; } export class TOCEntryActionsPopover extends Component { - private _isMounted: boolean = false; - - state = { - isPopoverOpen: false, - supportsFitToBounds: false, - }; - - componentDidMount() { - this._isMounted = true; - this._loadSupportsFitToBounds(); - } - - componentWillUnmount() { - this._isMounted = false; - } - - async _loadSupportsFitToBounds() { - const supportsFitToBounds = await this.props.layer.supportsFitToBounds(); - if (this._isMounted) { - this.setState({ supportsFitToBounds }); - } - } + state: State = { isPopoverOpen: false }; _togglePopover = () => { this.setState((prevState) => ({ @@ -85,31 +70,23 @@ export class TOCEntryActionsPopover extends Component { _getActionsPanel() { const actionItems = [ { - name: i18n.translate('xpack.maps.layerTocActions.fitToDataTitle', { - defaultMessage: 'Fit to data', - }), + name: FIT_TO_DATA_LABEL, icon: , 'data-test-subj': 'fitToBoundsButton', - toolTipContent: this.state.supportsFitToBounds + toolTipContent: this.props.supportsFitToBounds ? null : i18n.translate('xpack.maps.layerTocActions.noFitSupportTooltip', { defaultMessage: 'Layer does not support fit to data', }), - disabled: !this.state.supportsFitToBounds, + disabled: !this.props.supportsFitToBounds, onClick: () => { this._closePopover(); this._fitToBounds(); }, }, { - name: this.props.layer.isVisible() - ? i18n.translate('xpack.maps.layerTocActions.hideLayerTitle', { - defaultMessage: 'Hide layer', - }) - : i18n.translate('xpack.maps.layerTocActions.showLayerTitle', { - defaultMessage: 'Show layer', - }), - icon: , + name: getVisibilityToggleLabel(this.props.layer.isVisible()), + icon: , 'data-test-subj': 'layerVisibilityToggleButton', toolTipContent: null, onClick: () => { @@ -122,9 +99,7 @@ export class TOCEntryActionsPopover extends Component { if (!this.props.isReadOnly) { actionItems.push({ disabled: this.props.isEditButtonDisabled, - name: i18n.translate('xpack.maps.layerTocActions.editLayerTitle', { - defaultMessage: 'Edit layer', - }), + name: EDIT_LAYER_LABEL, icon: , 'data-test-subj': 'editLayerButton', toolTipContent: null, diff --git a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/view.js b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/view.js index 9e5a6080c830d..b886dd21030ba 100644 --- a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/view.js +++ b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/view.js @@ -11,6 +11,12 @@ import classNames from 'classnames'; import { EuiIcon, EuiButtonIcon, EuiConfirmModal } from '@elastic/eui'; import { TOCEntryActionsPopover } from './toc_entry_actions_popover'; import { i18n } from '@kbn/i18n'; +import { + getVisibilityToggleIcon, + getVisibilityToggleLabel, + EDIT_LAYER_LABEL, + FIT_TO_DATA_LABEL, +} from './action_labels'; function escapeLayerName(name) { return name ? name.split(' ').join('_') : ''; @@ -21,12 +27,14 @@ export class TOCEntry extends React.Component { displayName: null, hasLegendDetails: false, shouldShowModal: false, + supportsFitToBounds: false, }; componentDidMount() { this._isMounted = true; this._updateDisplayName(); this._loadHasLegendDetails(); + this._loadSupportsFitToBounds(); } componentWillUnmount() { @@ -46,6 +54,13 @@ export class TOCEntry extends React.Component { } }; + async _loadSupportsFitToBounds() { + const supportsFitToBounds = await this.props.layer.supportsFitToBounds(); + if (this._isMounted) { + this.setState({ supportsFitToBounds }); + } + } + async _loadHasLegendDetails() { const hasLegendDetails = (await this.props.layer.hasLegendDetails()) && @@ -83,6 +98,14 @@ export class TOCEntry extends React.Component { this.props.openLayerPanel(this.props.layer.getId()); }; + _fitToBounds = () => { + this.props.fitToBounds(this.props.layer.getId()); + }; + + _toggleVisible = () => { + this.props.toggleVisible(this.props.layer.getId()); + }; + _renderCancelModal() { if (!this.state.shouldShowModal) { return null; @@ -115,28 +138,40 @@ export class TOCEntry extends React.Component { ); } - _renderLayerIcons() { - if (this.props.isReadOnly) { - return null; + _renderQuickActions() { + const quickActions = [ + , + ]; + + if (this.state.supportsFitToBounds) { + quickActions.push( + + ); } - return ( -
+ if (!this.props.isReadOnly) { + quickActions.push( - + ); + quickActions.push( -
- ); + ); + } + + return
{quickActions}
; } _renderDetailsToggle() { @@ -206,9 +243,10 @@ export class TOCEntry extends React.Component { escapedDisplayName={escapeLayerName(this.state.displayName)} editLayer={this._openLayerPanelWithCheck} isEditButtonDisabled={this.props.isEditButtonDisabled} + supportsFitToBounds={this.state.supportsFitToBounds} /> - {this._renderLayerIcons()} + {this._renderQuickActions()}
); } diff --git a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/view.test.js b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/view.test.js index 1a14d854b5449..4a036d8d70c8f 100644 --- a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/view.test.js +++ b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/view.test.js @@ -21,11 +21,17 @@ const mockLayers = [ getId: () => { return '1'; }, + supportsFitToBounds: () => { + return true; + }, }, { getId: () => { return '2'; }, + supportsFitToBounds: () => { + return false; + }, }, ]; diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index ec604eaf255cb..d1d58755d6daa 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -12460,8 +12460,6 @@ "xpack.maps.layerControl.closeLayerTOCButtonAriaLabel": "レイヤーパネルを畳む", "xpack.maps.layerControl.layersTitle": "レイヤー", "xpack.maps.layerControl.openLayerTOCButtonAriaLabel": "レイヤーパネルを拡張", - "xpack.maps.layerControl.tocEntry.editButtonAriaLabel": "レイヤーを編集", - "xpack.maps.layerControl.tocEntry.editButtonTitle": "レイヤーを編集", "xpack.maps.layerControl.tocEntry.grabButtonAriaLabel": "レイヤーの並べ替え", "xpack.maps.layerControl.tocEntry.grabButtonTitle": "レイヤーの並べ替え", "xpack.maps.layerControl.tocEntry.hideDetailsButtonAriaLabel": "レイヤー詳細を非表示", @@ -12519,7 +12517,6 @@ "xpack.maps.layerPanel.whereExpression.helpText": "右のソースを絞り込むには、クエリを使用します。", "xpack.maps.layerPanel.whereExpression.queryBarSubmitButtonLabel": "フィルターを設定", "xpack.maps.layerTocActions.cloneLayerTitle": "レイヤーおクローンを作成", - "xpack.maps.layerTocActions.editLayerTitle": "レイヤーを編集", "xpack.maps.layerTocActions.fitToDataTitle": "データに合わせる", "xpack.maps.layerTocActions.hideLayerTitle": "レイヤーの非表示", "xpack.maps.layerTocActions.layerActionsTitle": "レイヤー操作", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 729e32e11a5ff..30da649ff153c 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -12628,8 +12628,6 @@ "xpack.maps.layerControl.closeLayerTOCButtonAriaLabel": "折叠图层面板", "xpack.maps.layerControl.layersTitle": "图层", "xpack.maps.layerControl.openLayerTOCButtonAriaLabel": "展开图层面板", - "xpack.maps.layerControl.tocEntry.editButtonAriaLabel": "编辑图层", - "xpack.maps.layerControl.tocEntry.editButtonTitle": "编辑图层", "xpack.maps.layerControl.tocEntry.grabButtonAriaLabel": "重新排序图层", "xpack.maps.layerControl.tocEntry.grabButtonTitle": "重新排序图层", "xpack.maps.layerControl.tocEntry.hideDetailsButtonAriaLabel": "隐藏图层详情", @@ -12688,7 +12686,6 @@ "xpack.maps.layerPanel.whereExpression.helpText": "使用查询缩小右源范围。", "xpack.maps.layerPanel.whereExpression.queryBarSubmitButtonLabel": "设置筛选", "xpack.maps.layerTocActions.cloneLayerTitle": "克隆图层", - "xpack.maps.layerTocActions.editLayerTitle": "编辑图层", "xpack.maps.layerTocActions.fitToDataTitle": "适应数据", "xpack.maps.layerTocActions.hideLayerTitle": "隐藏图层", "xpack.maps.layerTocActions.layerActionsTitle": "图层操作", From 5141f598dced11344a6e1a3cca18a46cdf7b672d Mon Sep 17 00:00:00 2001 From: Yuliia Naumenko Date: Mon, 19 Apr 2021 09:04:34 -0700 Subject: [PATCH 03/56] [Alerting] Added proper check to see if TLS is required using security API for apiKeys: `areAPIKeysEnabled` (#97317) * replaced xpack usage calls with the security API areAPIKeysEnabled * fixed typechecks Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/plugins/alerting/server/plugin.ts | 6 +- .../server/routes/_mock_handler_arguments.ts | 9 +- .../alerting/server/routes/health.test.ts | 73 ++++------------ .../plugins/alerting/server/routes/health.ts | 28 +----- .../server/routes/legacy/health.test.ts | 85 +++---------------- .../alerting/server/routes/legacy/health.ts | 28 +----- x-pack/plugins/alerting/server/types.ts | 1 + 7 files changed, 42 insertions(+), 188 deletions(-) diff --git a/x-pack/plugins/alerting/server/plugin.ts b/x-pack/plugins/alerting/server/plugin.ts index 787d3cc548ba1..1155cfa93337d 100644 --- a/x-pack/plugins/alerting/server/plugin.ts +++ b/x-pack/plugins/alerting/server/plugin.ts @@ -364,7 +364,7 @@ export class AlertingPlugin { } private createRouteHandlerContext = ( - core: CoreSetup + core: CoreSetup ): IContextProvider => { const { alertTypeRegistry, alertsClientFactory } = this; return async function alertsRouteHandlerContext(context, request) { @@ -376,6 +376,10 @@ export class AlertingPlugin { listTypes: alertTypeRegistry!.list.bind(alertTypeRegistry!), getFrameworkHealth: async () => await getHealth(savedObjects.createInternalRepository(['alert'])), + areApiKeysEnabled: async () => { + const [, { security }] = await core.getStartServices(); + return security?.authc.apiKeys.areAPIKeysEnabled() ?? false; + }, }; }; }; diff --git a/x-pack/plugins/alerting/server/routes/_mock_handler_arguments.ts b/x-pack/plugins/alerting/server/routes/_mock_handler_arguments.ts index cd1c32a9b2d8f..7bab31fa4c89a 100644 --- a/x-pack/plugins/alerting/server/routes/_mock_handler_arguments.ts +++ b/x-pack/plugins/alerting/server/routes/_mock_handler_arguments.ts @@ -8,26 +8,23 @@ import { KibanaRequest, KibanaResponseFactory } from 'kibana/server'; import { identity } from 'lodash'; import type { MethodKeysOf } from '@kbn/utility-types'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { ScopedClusterClientMock } from '../../../../../src/core/server/elasticsearch/client/mocks'; import { httpServerMock } from '../../../../../src/core/server/mocks'; import { alertsClientMock, AlertsClientMock } from '../alerts_client.mock'; import { AlertsHealth, AlertType } from '../../common'; -import { elasticsearchServiceMock } from '../../../../../src/core/server/mocks'; import type { AlertingRequestHandlerContext } from '../types'; export function mockHandlerArguments( { alertsClient = alertsClientMock.create(), listTypes: listTypesRes = [], - esClient = elasticsearchServiceMock.createScopedClusterClient(), getFrameworkHealth, + areApiKeysEnabled, }: { alertsClient?: AlertsClientMock; listTypes?: AlertType[]; - esClient?: jest.Mocked; getFrameworkHealth?: jest.MockInstance, []> & (() => Promise); + areApiKeysEnabled?: () => Promise; }, req: unknown, res?: Array> @@ -39,13 +36,13 @@ export function mockHandlerArguments( const listTypes = jest.fn(() => listTypesRes); return [ ({ - core: { elasticsearch: { client: esClient } }, alerting: { listTypes, getAlertsClient() { return alertsClient || alertsClientMock.create(); }, getFrameworkHealth, + areApiKeysEnabled: areApiKeysEnabled ? areApiKeysEnabled : () => Promise.resolve(true), }, } as unknown) as AlertingRequestHandlerContext, req as KibanaRequest, diff --git a/x-pack/plugins/alerting/server/routes/health.test.ts b/x-pack/plugins/alerting/server/routes/health.test.ts index be63e0b7054be..40ad2721e816e 100644 --- a/x-pack/plugins/alerting/server/routes/health.test.ts +++ b/x-pack/plugins/alerting/server/routes/health.test.ts @@ -8,15 +8,12 @@ import { healthRoute } from './health'; import { httpServiceMock } from 'src/core/server/mocks'; import { mockHandlerArguments } from './_mock_handler_arguments'; -import { elasticsearchServiceMock } from '../../../../../src/core/server/mocks'; import { verifyApiAccess } from '../lib/license_api_access'; import { licenseStateMock } from '../lib/license_state.mock'; import { encryptedSavedObjectsMock } from '../../../encrypted_saved_objects/server/mocks'; import { alertsClientMock } from '../alerts_client.mock'; import { HealthStatus } from '../types'; import { alertsMock } from '../mocks'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { elasticsearchClientMock } from '../../../../../src/core/server/elasticsearch/client/mocks'; const alertsClient = alertsClientMock.create(); jest.mock('../lib/license_api_access.ts', () => ({ @@ -65,25 +62,11 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchClientMock.createSuccessTransportRequestPromise({}) - ); - - const [context, req, res] = mockHandlerArguments({ esClient, alertsClient }, {}, ['ok']); + const [context, req, res] = mockHandlerArguments({ alertsClient }, {}, ['ok']); await handler(context, req, res); expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - - expect(esClient.asInternalUser.transport.request.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "method": "GET", - "path": "/_xpack/usage", - }, - ] - `); }); it('evaluates whether Encrypted Saved Objects is missing encryption key', async () => { @@ -94,13 +77,8 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchClientMock.createSuccessTransportRequestPromise({}) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, {}, ['ok'] ); @@ -135,13 +113,8 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchClientMock.createSuccessTransportRequestPromise({}) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, {}, ['ok'] ); @@ -176,13 +149,8 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchClientMock.createSuccessTransportRequestPromise({ security: {} }) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, {}, ['ok'] ); @@ -217,13 +185,12 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchClientMock.createSuccessTransportRequestPromise({ security: { enabled: true } }) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { + alertsClient, + getFrameworkHealth: alerting.getFrameworkHealth, + areApiKeysEnabled: () => Promise.resolve(false), + }, {}, ['ok'] ); @@ -258,15 +225,12 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchClientMock.createSuccessTransportRequestPromise({ - security: { enabled: true, ssl: {} }, - }) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { + alertsClient, + getFrameworkHealth: alerting.getFrameworkHealth, + areApiKeysEnabled: () => Promise.resolve(false), + }, {}, ['ok'] ); @@ -301,15 +265,8 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchClientMock.createSuccessTransportRequestPromise({ - security: { enabled: true, ssl: { http: { enabled: true } } }, - }) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, {}, ['ok'] ); diff --git a/x-pack/plugins/alerting/server/routes/health.ts b/x-pack/plugins/alerting/server/routes/health.ts index c2a122a28fa49..96016ccc45472 100644 --- a/x-pack/plugins/alerting/server/routes/health.ts +++ b/x-pack/plugins/alerting/server/routes/health.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { ApiResponse } from '@elastic/elasticsearch'; import { IRouter } from 'kibana/server'; import { ILicenseState } from '../lib'; import { EncryptedSavedObjectsPluginSetup } from '../../../encrypted_saved_objects/server'; @@ -16,17 +15,6 @@ import { AlertingFrameworkHealth, } from '../types'; -interface XPackUsageSecurity { - security?: { - enabled?: boolean; - ssl?: { - http?: { - enabled?: boolean; - }; - }; - }; -} - const rewriteBodyRes: RewriteResponseCase = ({ isSufficientlySecure, hasPermanentEncryptionKey, @@ -56,23 +44,11 @@ export const healthRoute = ( router.handleLegacyErrors( verifyAccessAndContext(licenseState, async function (context, req, res) { try { - const { - body: { - security: { - enabled: isSecurityEnabled = false, - ssl: { http: { enabled: isTLSEnabled = false } = {} } = {}, - } = {}, - }, - }: ApiResponse = await context.core.elasticsearch.client.asInternalUser.transport // Do not augment with such input. // `transport.request` is potentially unsafe when combined with untrusted user input. - .request({ - method: 'GET', - path: '/_xpack/usage', - }); - + const areApiKeysEnabled = await context.alerting.areApiKeysEnabled(); const alertingFrameworkHeath = await context.alerting.getFrameworkHealth(); const frameworkHealth: AlertingFrameworkHealth = { - isSufficientlySecure: !isSecurityEnabled || (isSecurityEnabled && isTLSEnabled), + isSufficientlySecure: areApiKeysEnabled, hasPermanentEncryptionKey: encryptedSavedObjects.canEncrypt, alertingFrameworkHeath, }; diff --git a/x-pack/plugins/alerting/server/routes/legacy/health.test.ts b/x-pack/plugins/alerting/server/routes/legacy/health.test.ts index 74de5f70a32e7..bc60eae34e0ce 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/health.test.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/health.test.ts @@ -8,8 +8,6 @@ import { healthRoute } from './health'; import { httpServiceMock } from 'src/core/server/mocks'; import { mockHandlerArguments } from './../_mock_handler_arguments'; -import { elasticsearchServiceMock } from '../../../../../../src/core/server/mocks'; -import { verifyApiAccess } from '../../lib/license_api_access'; import { licenseStateMock } from '../../lib/license_state.mock'; import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/server/mocks'; import { alertsClientMock } from '../../alerts_client.mock'; @@ -55,35 +53,6 @@ describe('healthRoute', () => { expect(config.path).toMatchInlineSnapshot(`"/api/alerts/_health"`); }); - it('queries the usage api', async () => { - const router = httpServiceMock.createRouter(); - - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - healthRoute(router, licenseState, encryptedSavedObjects); - const [, handler] = router.get.mock.calls[0]; - - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchServiceMock.createSuccessTransportRequestPromise({}) - ); - - const [context, req, res] = mockHandlerArguments({ esClient, alertsClient }, {}, ['ok']); - - await handler(context, req, res); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - - expect(esClient.asInternalUser.transport.request.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "method": "GET", - "path": "/_xpack/usage", - }, - ] - `); - }); - it('evaluates whether Encrypted Saved Objects is missing encryption key', async () => { const router = httpServiceMock.createRouter(); @@ -92,13 +61,8 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchServiceMock.createSuccessTransportRequestPromise({}) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, {}, ['ok'] ); @@ -133,13 +97,8 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchServiceMock.createSuccessTransportRequestPromise({}) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, {}, ['ok'] ); @@ -174,13 +133,8 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchServiceMock.createSuccessTransportRequestPromise({}) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, {}, ['ok'] ); @@ -215,13 +169,12 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchServiceMock.createSuccessTransportRequestPromise({ security: { enabled: true } }) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { + alertsClient, + getFrameworkHealth: alerting.getFrameworkHealth, + areApiKeysEnabled: () => Promise.resolve(false), + }, {}, ['ok'] ); @@ -256,15 +209,12 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchServiceMock.createSuccessTransportRequestPromise({ - security: { enabled: true, ssl: {} }, - }) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { + alertsClient, + getFrameworkHealth: alerting.getFrameworkHealth, + areApiKeysEnabled: () => Promise.resolve(false), + }, {}, ['ok'] ); @@ -299,15 +249,8 @@ describe('healthRoute', () => { healthRoute(router, licenseState, encryptedSavedObjects); const [, handler] = router.get.mock.calls[0]; - const esClient = elasticsearchServiceMock.createScopedClusterClient(); - esClient.asInternalUser.transport.request.mockReturnValue( - elasticsearchServiceMock.createSuccessTransportRequestPromise({ - security: { enabled: true, ssl: { http: { enabled: true } } }, - }) - ); - const [context, req, res] = mockHandlerArguments( - { esClient, alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, + { alertsClient, getFrameworkHealth: alerting.getFrameworkHealth }, {}, ['ok'] ); diff --git a/x-pack/plugins/alerting/server/routes/legacy/health.ts b/x-pack/plugins/alerting/server/routes/legacy/health.ts index b9906a56ce972..206a74c2ea636 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/health.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/health.ts @@ -5,24 +5,12 @@ * 2.0. */ -import { ApiResponse } from '@elastic/elasticsearch'; import type { AlertingRouter } from '../../types'; import { ILicenseState } from '../../lib/license_state'; import { verifyApiAccess } from '../../lib/license_api_access'; import { AlertingFrameworkHealth } from '../../types'; import { EncryptedSavedObjectsPluginSetup } from '../../../../encrypted_saved_objects/server'; -interface XPackUsageSecurity { - security?: { - enabled?: boolean; - ssl?: { - http?: { - enabled?: boolean; - }; - }; - }; -} - export function healthRoute( router: AlertingRouter, licenseState: ILicenseState, @@ -39,23 +27,11 @@ export function healthRoute( return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); } try { - const { - body: { - security: { - enabled: isSecurityEnabled = false, - ssl: { http: { enabled: isTLSEnabled = false } = {} } = {}, - } = {}, - }, - }: ApiResponse = await context.core.elasticsearch.client.asInternalUser.transport // Do not augment with such input. // `transport.request` is potentially unsafe when combined with untrusted user input. - .request({ - method: 'GET', - path: '/_xpack/usage', - }); - const alertingFrameworkHeath = await context.alerting.getFrameworkHealth(); + const areApiKeysEnabled = await context.alerting.areApiKeysEnabled(); const frameworkHealth: AlertingFrameworkHealth = { - isSufficientlySecure: !isSecurityEnabled || (isSecurityEnabled && isTLSEnabled), + isSufficientlySecure: areApiKeysEnabled, hasPermanentEncryptionKey: encryptedSavedObjects.canEncrypt, alertingFrameworkHeath, }; diff --git a/x-pack/plugins/alerting/server/types.ts b/x-pack/plugins/alerting/server/types.ts index 23aed1070a31a..dea5d7ddcc884 100644 --- a/x-pack/plugins/alerting/server/types.ts +++ b/x-pack/plugins/alerting/server/types.ts @@ -46,6 +46,7 @@ export interface AlertingApiRequestHandlerContext { getAlertsClient: () => AlertsClient; listTypes: AlertTypeRegistry['list']; getFrameworkHealth: () => Promise; + areApiKeysEnabled: () => Promise; } /** From 6712bc07279c9582094d31eb22ebf72bdfaba2f7 Mon Sep 17 00:00:00 2001 From: Corey Robertson Date: Mon, 19 Apr 2021 12:35:20 -0400 Subject: [PATCH 04/56] Fix and unskip test suite (#97144) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../migration_7.7.2_xpack_100k.test.ts | 3 +-- src/plugins/dashboard/server/plugin.ts | 20 ++++++------------- x-pack/plugins/monitoring/server/plugin.ts | 2 +- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/core/server/saved_objects/migrationsv2/integration_tests/migration_7.7.2_xpack_100k.test.ts b/src/core/server/saved_objects/migrationsv2/integration_tests/migration_7.7.2_xpack_100k.test.ts index 7f3ee03f1437d..0e51c886f7f30 100644 --- a/src/core/server/saved_objects/migrationsv2/integration_tests/migration_7.7.2_xpack_100k.test.ts +++ b/src/core/server/saved_objects/migrationsv2/integration_tests/migration_7.7.2_xpack_100k.test.ts @@ -26,8 +26,7 @@ async function removeLogFile() { await asyncUnlink(logFilePath).catch(() => void 0); } -// FAILING: https://github.com/elastic/kibana/pull/96788 -describe.skip('migration from 7.7.2-xpack with 100k objects', () => { +describe('migration from 7.7.2-xpack with 100k objects', () => { let esServer: kbnTestServer.TestElasticsearchUtils; let root: Root; let coreStart: InternalCoreStart; diff --git a/src/plugins/dashboard/server/plugin.ts b/src/plugins/dashboard/server/plugin.ts index 3aeaf31c190bd..fbed98a882b0a 100644 --- a/src/plugins/dashboard/server/plugin.ts +++ b/src/plugins/dashboard/server/plugin.ts @@ -18,7 +18,7 @@ import { createDashboardSavedObjectType } from './saved_objects'; import { capabilitiesProvider } from './capabilities_provider'; import { DashboardPluginSetup, DashboardPluginStart } from './types'; -import { EmbeddableSetup, EmbeddableStart } from '../../embeddable/server'; +import { EmbeddableSetup } from '../../embeddable/server'; import { UsageCollectionSetup } from '../../usage_collection/server'; import { registerDashboardUsageCollector } from './usage/register_collector'; import { dashboardPersistableStateServiceFactory } from './embeddable/dashboard_container_embeddable_factory'; @@ -28,19 +28,15 @@ interface SetupDeps { usageCollection: UsageCollectionSetup; } -interface StartDeps { - embeddable: EmbeddableStart; -} - export class DashboardPlugin - implements Plugin { + implements Plugin { private readonly logger: Logger; constructor(initializerContext: PluginInitializerContext) { this.logger = initializerContext.logger.get(); } - public setup(core: CoreSetup, plugins: SetupDeps) { + public setup(core: CoreSetup, plugins: SetupDeps) { this.logger.debug('dashboard: Setup'); core.savedObjects.registerType( @@ -54,13 +50,9 @@ export class DashboardPlugin registerDashboardUsageCollector(plugins.usageCollection, plugins.embeddable); - (async () => { - const [, startPlugins] = await core.getStartServices(); - - plugins.embeddable.registerEmbeddableFactory( - dashboardPersistableStateServiceFactory(startPlugins.embeddable) - ); - })(); + plugins.embeddable.registerEmbeddableFactory( + dashboardPersistableStateServiceFactory(plugins.embeddable) + ); return {}; } diff --git a/x-pack/plugins/monitoring/server/plugin.ts b/x-pack/plugins/monitoring/server/plugin.ts index 87134c765fbf9..6b47b47a21394 100644 --- a/x-pack/plugins/monitoring/server/plugin.ts +++ b/x-pack/plugins/monitoring/server/plugin.ts @@ -230,7 +230,7 @@ export class MonitoringPlugin if (this.cluster) { this.cluster.close(); } - if (this.licenseService) { + if (this.licenseService && this.licenseService.stop) { this.licenseService.stop(); } this.bulkUploader?.stop(); From b7a9b84af89da3b9e93bc78c8d954f50061b1e2c Mon Sep 17 00:00:00 2001 From: Spencer Date: Mon, 19 Apr 2021 09:45:09 -0700 Subject: [PATCH 05/56] Revert "Revert "[ci] skip building ts refs when not necessary (#95739)" (#95746)" (#95750) Co-authored-by: spalger Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .ci/Jenkinsfile_baseline_capture | 1 + src/dev/ci_setup/setup.sh | 4 ---- src/dev/typescript/build_ts_refs_cli.ts | 2 +- test/scripts/checks/type_check.sh | 8 ++++++++ vars/workers.groovy | 1 + 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.ci/Jenkinsfile_baseline_capture b/.ci/Jenkinsfile_baseline_capture index b729f5d9da082..d074da1cb1926 100644 --- a/.ci/Jenkinsfile_baseline_capture +++ b/.ci/Jenkinsfile_baseline_capture @@ -23,6 +23,7 @@ kibanaPipeline(timeoutMinutes: 210) { ) { withGcpServiceAccount.fromVaultSecret('secret/kibana-issues/dev/ci-artifacts-key', 'value') { withEnv([ + 'BUILD_TS_REFS_DISABLE=false', // disabled in root config so we need to override that here 'BUILD_TS_REFS_CACHE_ENABLE=true', 'BUILD_TS_REFS_CACHE_CAPTURE=true', 'DISABLE_BOOTSTRAP_VALIDATION=true', diff --git a/src/dev/ci_setup/setup.sh b/src/dev/ci_setup/setup.sh index dde1cb212c536..62e1b24d6d559 100755 --- a/src/dev/ci_setup/setup.sh +++ b/src/dev/ci_setup/setup.sh @@ -21,10 +21,6 @@ cp "src/dev/ci_setup/.bazelrc-ci" "$HOME/.bazelrc"; echo "# Appended by src/dev/ci_setup/setup.sh" >> "$HOME/.bazelrc" echo "build --remote_header=x-buildbuddy-api-key=$KIBANA_BUILDBUDDY_CI_API_KEY" >> "$HOME/.bazelrc" -if [[ "$BUILD_TS_REFS_CACHE_ENABLE" != "true" ]]; then - export BUILD_TS_REFS_CACHE_ENABLE=false -fi - ### ### install dependencies ### diff --git a/src/dev/typescript/build_ts_refs_cli.ts b/src/dev/typescript/build_ts_refs_cli.ts index 42b278ce6450c..00f298887ee17 100644 --- a/src/dev/typescript/build_ts_refs_cli.ts +++ b/src/dev/typescript/build_ts_refs_cli.ts @@ -21,7 +21,7 @@ const CACHE_WORKING_DIR = Path.resolve(REPO_ROOT, 'data/ts_refs_output_cache'); const TS_ERROR_REF = /\sTS\d{1,6}:\s/; const isTypeFailure = (error: any) => - error.exitCode === 1 && + error.exitCode > 0 && error.stderr === '' && typeof error.stdout === 'string' && TS_ERROR_REF.test(error.stdout); diff --git a/test/scripts/checks/type_check.sh b/test/scripts/checks/type_check.sh index 5e091625de4ed..bbe5748558684 100755 --- a/test/scripts/checks/type_check.sh +++ b/test/scripts/checks/type_check.sh @@ -2,5 +2,13 @@ source src/dev/ci_setup/setup_env.sh +checks-reporter-with-killswitch "Build TS Refs" \ + node scripts/build_ts_refs \ + --ignore-type-failures \ + --clean \ + --no-cache \ + --force \ + --debug + checks-reporter-with-killswitch "Check Types" \ node scripts/type_check diff --git a/vars/workers.groovy b/vars/workers.groovy index 5d3328bc8a3c4..1260f74f1bdf9 100644 --- a/vars/workers.groovy +++ b/vars/workers.groovy @@ -101,6 +101,7 @@ def base(Map params, Closure closure) { "TEST_BROWSER_HEADLESS=1", "GIT_BRANCH=${checkoutInfo.branch}", "TMPDIR=${env.WORKSPACE}/tmp", // For Chrome and anything else that respects it + "BUILD_TS_REFS_DISABLE=true", // no need to build ts refs in bootstrap ]) { withCredentials([ string(credentialsId: 'vault-addr', variable: 'VAULT_ADDR'), From 978f5eca5a481a7a2c69efa94cc4e39c3930de10 Mon Sep 17 00:00:00 2001 From: Joe Portner <5295965+jportner@users.noreply.github.com> Date: Mon, 19 Apr 2021 13:12:45 -0400 Subject: [PATCH 06/56] Add config properties for HTTP security headers (#97158) --- config/kibana.yml | 2 +- ...-core-server.cspconfig.disableembedding.md | 11 +++ .../kibana-plugin-core-server.cspconfig.md | 1 + ...core-server.icspconfig.disableembedding.md | 13 +++ .../kibana-plugin-core-server.icspconfig.md | 1 + ...-server.routeconfigoptionsbody.maxbytes.md | 2 +- ...ugin-core-server.routeconfigoptionsbody.md | 2 +- docs/maps/trouble-shooting.asciidoc | 2 +- docs/setup/settings.asciidoc | 59 ++++++++++- .../core_usage_data_service.mock.ts | 7 ++ .../core_usage_data_service.test.ts | 7 ++ .../core_usage_data_service.ts | 10 ++ src/core/server/core_usage_data/types.ts | 7 ++ src/core/server/csp/config.test.ts | 19 ++++ src/core/server/csp/config.ts | 3 + src/core/server/csp/csp_config.test.ts | 86 ++++++++-------- src/core/server/csp/csp_config.ts | 17 +++- .../__snapshots__/http_config.test.ts.snap | 7 ++ src/core/server/http/http_config.ts | 12 ++- .../lifecycle_handlers.test.ts | 43 ++++---- .../server/http/lifecycle_handlers.test.ts | 11 ++- src/core/server/http/lifecycle_handlers.ts | 6 +- src/core/server/http/router/route.ts | 2 +- .../security_response_headers_config.test.ts | 99 +++++++++++++++++++ .../http/security_response_headers_config.ts | 72 ++++++++++++++ src/core/server/http/test_utils.ts | 1 + src/core/server/server.api.md | 10 ++ .../resources/base/bin/kibana-docker | 7 +- .../collectors/core/core_usage_collector.ts | 32 ++++++ src/plugins/telemetry/schema/oss_plugins.json | 34 +++++++ test/common/config.js | 2 +- 31 files changed, 501 insertions(+), 86 deletions(-) create mode 100644 docs/development/core/server/kibana-plugin-core-server.cspconfig.disableembedding.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.icspconfig.disableembedding.md create mode 100644 src/core/server/csp/config.test.ts create mode 100644 src/core/server/http/security_response_headers_config.test.ts create mode 100644 src/core/server/http/security_response_headers_config.ts diff --git a/config/kibana.yml b/config/kibana.yml index 7c7378fb5d29d..eefb6bb8bacda 100644 --- a/config/kibana.yml +++ b/config/kibana.yml @@ -23,7 +23,7 @@ #server.publicBaseUrl: "" # The maximum payload size in bytes for incoming server requests. -#server.maxPayloadBytes: 1048576 +#server.maxPayload: 1048576 # The Kibana server's name. This is used for display purposes. #server.name: "your-hostname" diff --git a/docs/development/core/server/kibana-plugin-core-server.cspconfig.disableembedding.md b/docs/development/core/server/kibana-plugin-core-server.cspconfig.disableembedding.md new file mode 100644 index 0000000000000..bbd7c42c302d1 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.cspconfig.disableembedding.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CspConfig](./kibana-plugin-core-server.cspconfig.md) > [disableEmbedding](./kibana-plugin-core-server.cspconfig.disableembedding.md) + +## CspConfig.disableEmbedding property + +Signature: + +```typescript +readonly disableEmbedding: boolean; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.cspconfig.md b/docs/development/core/server/kibana-plugin-core-server.cspconfig.md index 6ff807929e6fb..9f4f3211ea2b1 100644 --- a/docs/development/core/server/kibana-plugin-core-server.cspconfig.md +++ b/docs/development/core/server/kibana-plugin-core-server.cspconfig.md @@ -21,6 +21,7 @@ The constructor for this class is marked as internal. Third-party code should no | Property | Modifiers | Type | Description | | --- | --- | --- | --- | | [DEFAULT](./kibana-plugin-core-server.cspconfig.default.md) | static | CspConfig | | +| [disableEmbedding](./kibana-plugin-core-server.cspconfig.disableembedding.md) | | boolean | | | [header](./kibana-plugin-core-server.cspconfig.header.md) | | string | | | [rules](./kibana-plugin-core-server.cspconfig.rules.md) | | string[] | | | [strict](./kibana-plugin-core-server.cspconfig.strict.md) | | boolean | | diff --git a/docs/development/core/server/kibana-plugin-core-server.icspconfig.disableembedding.md b/docs/development/core/server/kibana-plugin-core-server.icspconfig.disableembedding.md new file mode 100644 index 0000000000000..2cfd680459fbc --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.icspconfig.disableembedding.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ICspConfig](./kibana-plugin-core-server.icspconfig.md) > [disableEmbedding](./kibana-plugin-core-server.icspconfig.disableembedding.md) + +## ICspConfig.disableEmbedding property + +Whether or not embedding (using iframes) should be allowed by the CSP. If embedding is disabled \*and\* no custom rules have been defined, a restrictive 'frame-ancestors' rule will be added to the default CSP rules. + +Signature: + +```typescript +readonly disableEmbedding: boolean; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.icspconfig.md b/docs/development/core/server/kibana-plugin-core-server.icspconfig.md index bf04b760a0636..ee49950df076c 100644 --- a/docs/development/core/server/kibana-plugin-core-server.icspconfig.md +++ b/docs/development/core/server/kibana-plugin-core-server.icspconfig.md @@ -16,6 +16,7 @@ export interface ICspConfig | Property | Type | Description | | --- | --- | --- | +| [disableEmbedding](./kibana-plugin-core-server.icspconfig.disableembedding.md) | boolean | Whether or not embedding (using iframes) should be allowed by the CSP. If embedding is disabled \*and\* no custom rules have been defined, a restrictive 'frame-ancestors' rule will be added to the default CSP rules. | | [header](./kibana-plugin-core-server.icspconfig.header.md) | string | The CSP rules in a formatted directives string for use in a Content-Security-Policy header. | | [rules](./kibana-plugin-core-server.icspconfig.rules.md) | string[] | The CSP rules used for Kibana. | | [strict](./kibana-plugin-core-server.icspconfig.strict.md) | boolean | Specify whether browsers that do not support CSP should be able to use Kibana. Use true to block and false to allow. | diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md index 474f7092b1b39..4d2641255adb4 100644 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md +++ b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md @@ -6,7 +6,7 @@ Limits the size of incoming payloads to the specified byte count. Allowing very large payloads may cause the server to run out of memory. -Default value: The one set in the kibana.yml config file under the parameter `server.maxPayloadBytes`. +Default value: The one set in the kibana.yml config file under the parameter `server.maxPayload`. Signature: diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.md index 330935e42026a..d27c67891161a 100644 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.md +++ b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.md @@ -17,7 +17,7 @@ export interface RouteConfigOptionsBody | Property | Type | Description | | --- | --- | --- | | [accepts](./kibana-plugin-core-server.routeconfigoptionsbody.accepts.md) | RouteContentType | RouteContentType[] | string | string[] | A string or an array of strings with the allowed mime types for the endpoint. Use this settings to limit the set of allowed mime types. Note that allowing additional mime types not listed above will not enable them to be parsed, and if parse is true, the request will result in an error response.Default value: allows parsing of the following mime types: \* application/json \* application/\*+json \* application/octet-stream \* application/x-www-form-urlencoded \* multipart/form-data \* text/\* | -| [maxBytes](./kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md) | number | Limits the size of incoming payloads to the specified byte count. Allowing very large payloads may cause the server to run out of memory.Default value: The one set in the kibana.yml config file under the parameter server.maxPayloadBytes. | +| [maxBytes](./kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md) | number | Limits the size of incoming payloads to the specified byte count. Allowing very large payloads may cause the server to run out of memory.Default value: The one set in the kibana.yml config file under the parameter server.maxPayload. | | [output](./kibana-plugin-core-server.routeconfigoptionsbody.output.md) | typeof validBodyOutput[number] | The processed payload format. The value must be one of: \* 'data' - the incoming payload is read fully into memory. If parse is true, the payload is parsed (JSON, form-decoded, multipart) based on the 'Content-Type' header. If parse is false, a raw Buffer is returned. \* 'stream' - the incoming payload is made available via a Stream.Readable interface. If the payload is 'multipart/form-data' and parse is true, field values are presented as text while files are provided as streams. File streams from a 'multipart/form-data' upload will also have a hapi property containing the filename and headers properties. Note that payload streams for multipart payloads are a synthetic interface created on top of the entire multipart content loaded into memory. To avoid loading large multipart payloads into memory, set parse to false and handle the multipart payload in the handler using a streaming parser (e.g. pez).Default value: 'data', unless no validation.body is provided in the route definition. In that case the default is 'stream' to alleviate memory pressure. | | [parse](./kibana-plugin-core-server.routeconfigoptionsbody.parse.md) | boolean | 'gunzip' | Determines if the incoming payload is processed or presented raw. Available values: \* true - if the request 'Content-Type' matches the allowed mime types set by allow (for the whole payload as well as parts), the payload is converted into an object when possible. If the format is unknown, a Bad Request (400) error response is sent. Any known content encoding is decoded. \* false - the raw payload is returned unmodified. \* 'gunzip' - the raw payload is returned unmodified after any known content encoding is decoded.Default value: true, unless no validation.body is provided in the route definition. In that case the default is false to alleviate memory pressure. | diff --git a/docs/maps/trouble-shooting.asciidoc b/docs/maps/trouble-shooting.asciidoc index 11aa636e0d852..0e1ed0b9e1bec 100644 --- a/docs/maps/trouble-shooting.asciidoc +++ b/docs/maps/trouble-shooting.asciidoc @@ -32,7 +32,7 @@ image::maps/images/inspector.png[] ** Ensure your geospatial field is searchable and aggregatable. ** If your geospatial field type does not match your Elasticsearch mapping, click the *Refresh* button to refresh the field list from Elasticsearch. * Index patterns with thousands of fields can exceed the default maximum payload size. -Increase <> for large index patterns. +Increase <> for large index patterns. [float] ==== Features are not displayed diff --git a/docs/setup/settings.asciidoc b/docs/setup/settings.asciidoc index 90e813afad6f4..a7af590136355 100644 --- a/docs/setup/settings.asciidoc +++ b/docs/setup/settings.asciidoc @@ -25,12 +25,12 @@ which may cause a delay before pages start being served. Set to `false` to disable Console. *Default: `true`* | `cpu.cgroup.path.override:` - | deprecated:[7.10.0,"This setting will no longer be supported as of 8.0."] + | deprecated:[7.10.0,"In 8.0 and later, this setting will no longer be supported."] This setting has been renamed to <>. | `cpuacct.cgroup.path.override:` - | deprecated:[7.10.0,"This setting will no longer be supported as of 8.0."] + | deprecated:[7.10.0,"In 8.0 and later, this setting will no longer be supported."] This setting has been renamed to <>. @@ -473,7 +473,7 @@ confident your server can hold this many objects in memory. | The maximum byte size of a saved objects import that the {kib} server will accept. This setting exists to prevent the {kib} server from runnning out of memory when handling a large import payload. Note that this setting overrides the more general -<> for saved object imports only. +<> for saved object imports only. *Default: `26214400`* |[[server-basePath]] `server.basePath:` @@ -504,6 +504,55 @@ deprecation warning at startup. This setting cannot end in a slash (`/`). proxy sitting in front of it. This determines whether HTTP compression may be used for responses, based on the request `Referer` header. This setting may not be used when <> is set to `false`. *Default: `none`* + +a| [[server-securityResponseHeaders-strictTransportSecurity]] +---- +server.securityResponseHeaders: + strictTransportSecurity: +---- +| Controls whether the https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security[`Strict-Transport-Security`] +header is used in all responses to the client from the {kib} server, and specifies what value is used. Allowed values are any text value or +`null`. To disable, set to `null`. *Default:* `null` + +a| [[server-securityResponseHeaders-xContentTypeOptions]] +---- +server.securityResponseHeaders: + xContentTypeOptions: +---- +| Controls whether the https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options[`X-Content-Type-Options`] header is +used in all responses to the client from the {kib} server, and specifies what value is used. Allowed values are `nosniff` or `null`. To +disable, set to `null`. *Default:* `"nosniff"` + +a| [[server-securityResponseHeaders-referrerPolicy]] +---- +server.securityResponseHeaders: + referrerPolicy: +---- +| Controls whether the https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy[`Referrer-Policy`] header is used in all +responses to the client from the {kib} server, and specifies what value is used. Allowed values are `no-referrer`, +`no-referrer-when-downgrade`, `origin`, `origin-when-cross-origin`, `same-origin`, `strict-origin`, `strict-origin-when-cross-origin`, +`unsafe-url`, or `null`. To disable, set to `null`. *Default:* `"no-referrer-when-downgrade"` + +a| [[server-securityResponseHeaders-permissionsPolicy]] +---- +server.securityResponseHeaders: + permissionsPolicy: +---- +| experimental[] Controls whether the https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy[`Permissions-Policy`] header +is used in all responses to the client from the {kib} server, and specifies what value is used. Allowed values are any text value or `null`. +To disable, set to `null`. *Default:* `null` + +a| [[server-securityResponseHeaders-disableEmbedding]] +---- +server.securityResponseHeaders: + disableEmbedding: +---- +| Controls whether the https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy[`Content-Security-Policy`] and +https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options[`X-Frame-Options`] headers are configured to disable embedding +{kib} in other webpages using iframes. When set to `true`, secure headers are used to disable embedding, which adds the `frame-ancestors: +'self'` directive to the `Content-Security-Policy` response header (if you are using the default CSP rules), and adds the `X-Frame-Options: +SAMEORIGIN` response header. *Default:* `false` + | `server.customResponseHeaders:` {ess-icon} | Header names and values to send on all responses to the client from the {kib} server. *Default: `{}`* @@ -517,6 +566,10 @@ back end server. To allow remote users to connect, set the value to the IP addre the <> counter. *Default: `"120000"`* |[[server-maxPayloadBytes]] `server.maxPayloadBytes:` + | deprecated:[7.13.0,"In 8.0 and later, this setting will no longer be supported."] + This setting has been renamed to <>. + +|[[server-maxPayload]] `server.maxPayload:` | The maximum payload size in bytes for incoming server requests. *Default: `1048576`* diff --git a/src/core/server/core_usage_data/core_usage_data_service.mock.ts b/src/core/server/core_usage_data/core_usage_data_service.mock.ts index 8ed627cebec7e..7fb15a921a413 100644 --- a/src/core/server/core_usage_data/core_usage_data_service.mock.ts +++ b/src/core/server/core_usage_data/core_usage_data_service.mock.ts @@ -95,6 +95,13 @@ const createStartContractMock = () => { supportedProtocols: ['TLSv1.1', 'TLSv1.2'], truststoreConfigured: false, }, + securityResponseHeaders: { + strictTransportSecurity: 'NULL', // `null` values are coalesced to `"NULL"` strings + xContentTypeOptions: 'nosniff', + referrerPolicy: 'no-referrer-when-downgrade', + permissionsPolicyConfigured: false, + disableEmbedding: false, + }, xsrf: { disableProtection: false, allowlistConfigured: false, diff --git a/src/core/server/core_usage_data/core_usage_data_service.test.ts b/src/core/server/core_usage_data/core_usage_data_service.test.ts index 1c28eca1f1dec..d1f047c129efe 100644 --- a/src/core/server/core_usage_data/core_usage_data_service.test.ts +++ b/src/core/server/core_usage_data/core_usage_data_service.test.ts @@ -187,6 +187,13 @@ describe('CoreUsageDataService', () => { "ipAllowlistConfigured": false, }, "rewriteBasePath": false, + "securityResponseHeaders": Object { + "disableEmbedding": false, + "permissionsPolicyConfigured": false, + "referrerPolicy": "no-referrer-when-downgrade", + "strictTransportSecurity": "NULL", + "xContentTypeOptions": "nosniff", + }, "socketTimeout": 120000, "ssl": Object { "certificateAuthoritiesConfigured": false, diff --git a/src/core/server/core_usage_data/core_usage_data_service.ts b/src/core/server/core_usage_data/core_usage_data_service.ts index dff68bf1c524f..78ac977c31a7d 100644 --- a/src/core/server/core_usage_data/core_usage_data_service.ts +++ b/src/core/server/core_usage_data/core_usage_data_service.ts @@ -225,6 +225,16 @@ export class CoreUsageDataService implements CoreService { + test(`does not allow "disableEmbedding" to be set to true`, () => { + // This is intentionally not editable in the raw CSP config. + // Users should set `server.securityResponseHeaders.disableEmbedding` to control this config property. + expect(() => config.schema.validate({ disableEmbedding: true })).toThrowError( + '[disableEmbedding.0]: expected value to equal [false]' + ); + }); +}); diff --git a/src/core/server/csp/config.ts b/src/core/server/csp/config.ts index 3fc9faa26179e..a61fa1b03a45c 100644 --- a/src/core/server/csp/config.ts +++ b/src/core/server/csp/config.ts @@ -27,5 +27,8 @@ export const config = { }), strict: schema.boolean({ defaultValue: true }), warnLegacyBrowsers: schema.boolean({ defaultValue: true }), + disableEmbedding: schema.oneOf([schema.literal(false)], { defaultValue: false }), }), }; + +export const FRAME_ANCESTORS_RULE = `frame-ancestors 'self'`; // only used by CspConfig when embedding is disabled diff --git a/src/core/server/csp/csp_config.test.ts b/src/core/server/csp/csp_config.test.ts index ed13d363c4166..1e023c6f08ea8 100644 --- a/src/core/server/csp/csp_config.test.ts +++ b/src/core/server/csp/csp_config.test.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import { CspConfig } from '.'; +import { CspConfig } from './csp_config'; +import { FRAME_ANCESTORS_RULE } from './config'; // CSP rules aren't strictly additive, so any change can potentially expand or // restrict the policy in a way we consider a breaking change. For that reason, @@ -25,6 +26,7 @@ describe('CspConfig', () => { test('DEFAULT', () => { expect(CspConfig.DEFAULT).toMatchInlineSnapshot(` CspConfig { + "disableEmbedding": false, "header": "script-src 'unsafe-eval' 'self'; worker-src blob: 'self'; style-src 'unsafe-inline' 'self'", "rules": Array [ "script-src 'unsafe-eval' 'self'", @@ -38,49 +40,51 @@ describe('CspConfig', () => { }); test('defaults from config', () => { - expect(new CspConfig()).toMatchInlineSnapshot(` - CspConfig { - "header": "script-src 'unsafe-eval' 'self'; worker-src blob: 'self'; style-src 'unsafe-inline' 'self'", - "rules": Array [ - "script-src 'unsafe-eval' 'self'", - "worker-src blob: 'self'", - "style-src 'unsafe-inline' 'self'", - ], - "strict": true, - "warnLegacyBrowsers": true, - } - `); + expect(new CspConfig()).toEqual(CspConfig.DEFAULT); }); - test('creates from partial config', () => { - expect(new CspConfig({ strict: false, warnLegacyBrowsers: false })).toMatchInlineSnapshot(` - CspConfig { - "header": "script-src 'unsafe-eval' 'self'; worker-src blob: 'self'; style-src 'unsafe-inline' 'self'", - "rules": Array [ - "script-src 'unsafe-eval' 'self'", - "worker-src blob: 'self'", - "style-src 'unsafe-inline' 'self'", - ], - "strict": false, - "warnLegacyBrowsers": false, - } - `); - }); + describe('partial config', () => { + test('allows "rules" to be set and changes header', () => { + const rules = ['foo', 'bar']; + const config = new CspConfig({ rules }); + expect(config.rules).toEqual(rules); + expect(config.header).toMatchInlineSnapshot(`"foo; bar"`); + }); - test('computes header from rules', () => { - const cspConfig = new CspConfig({ rules: ['alpha', 'beta', 'gamma'] }); + test('allows "strict" to be set', () => { + const config = new CspConfig({ strict: false }); + expect(config.strict).toEqual(false); + expect(config.strict).not.toEqual(CspConfig.DEFAULT.strict); + }); - expect(cspConfig).toMatchInlineSnapshot(` - CspConfig { - "header": "alpha; beta; gamma", - "rules": Array [ - "alpha", - "beta", - "gamma", - ], - "strict": true, - "warnLegacyBrowsers": true, - } - `); + test('allows "warnLegacyBrowsers" to be set', () => { + const warnLegacyBrowsers = false; + const config = new CspConfig({ warnLegacyBrowsers }); + expect(config.warnLegacyBrowsers).toEqual(warnLegacyBrowsers); + expect(config.warnLegacyBrowsers).not.toEqual(CspConfig.DEFAULT.warnLegacyBrowsers); + }); + + describe('allows "disableEmbedding" to be set', () => { + const disableEmbedding = true; + + test('and changes rules/header if custom rules are not defined', () => { + const config = new CspConfig({ disableEmbedding }); + expect(config.disableEmbedding).toEqual(disableEmbedding); + expect(config.disableEmbedding).not.toEqual(CspConfig.DEFAULT.disableEmbedding); + expect(config.rules).toEqual(expect.arrayContaining([FRAME_ANCESTORS_RULE])); + expect(config.header).toMatchInlineSnapshot( + `"script-src 'unsafe-eval' 'self'; worker-src blob: 'self'; style-src 'unsafe-inline' 'self'; frame-ancestors 'self'"` + ); + }); + + test('and does not change rules/header if custom rules are defined', () => { + const rules = ['foo', 'bar']; + const config = new CspConfig({ disableEmbedding, rules }); + expect(config.disableEmbedding).toEqual(disableEmbedding); + expect(config.disableEmbedding).not.toEqual(CspConfig.DEFAULT.disableEmbedding); + expect(config.rules).toEqual(rules); + expect(config.header).toMatchInlineSnapshot(`"foo; bar"`); + }); + }); }); }); diff --git a/src/core/server/csp/csp_config.ts b/src/core/server/csp/csp_config.ts index dd0e7ef2dbee4..649c81576ef52 100644 --- a/src/core/server/csp/csp_config.ts +++ b/src/core/server/csp/csp_config.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { config } from './config'; +import { config, FRAME_ANCESTORS_RULE } from './config'; const DEFAULT_CONFIG = Object.freeze(config.schema.validate({})); @@ -32,6 +32,12 @@ export interface ICspConfig { */ readonly warnLegacyBrowsers: boolean; + /** + * Whether or not embedding (using iframes) should be allowed by the CSP. If embedding is disabled *and* no custom rules have been + * defined, a restrictive 'frame-ancestors' rule will be added to the default CSP rules. + */ + readonly disableEmbedding: boolean; + /** * The CSP rules in a formatted directives string for use * in a `Content-Security-Policy` header. @@ -49,6 +55,7 @@ export class CspConfig implements ICspConfig { public readonly rules: string[]; public readonly strict: boolean; public readonly warnLegacyBrowsers: boolean; + public readonly disableEmbedding: boolean; public readonly header: string; /** @@ -58,9 +65,13 @@ export class CspConfig implements ICspConfig { constructor(rawCspConfig: Partial> = {}) { const source = { ...DEFAULT_CONFIG, ...rawCspConfig }; - this.rules = source.rules; + this.rules = [...source.rules]; this.strict = source.strict; this.warnLegacyBrowsers = source.warnLegacyBrowsers; - this.header = source.rules.join('; '); + this.disableEmbedding = source.disableEmbedding; + if (!rawCspConfig.rules?.length && source.disableEmbedding) { + this.rules.push(FRAME_ANCESTORS_RULE); + } + this.header = this.rules.join('; '); } } diff --git a/src/core/server/http/__snapshots__/http_config.test.ts.snap b/src/core/server/http/__snapshots__/http_config.test.ts.snap index 4545396c27b5e..589e4e118991a 100644 --- a/src/core/server/http/__snapshots__/http_config.test.ts.snap +++ b/src/core/server/http/__snapshots__/http_config.test.ts.snap @@ -64,6 +64,13 @@ Object { "ipAllowlist": Array [], }, "rewriteBasePath": false, + "securityResponseHeaders": Object { + "disableEmbedding": false, + "permissionsPolicy": null, + "referrerPolicy": "no-referrer-when-downgrade", + "strictTransportSecurity": null, + "xContentTypeOptions": "nosniff", + }, "socketTimeout": 120000, "ssl": Object { "cipherSuites": Array [ diff --git a/src/core/server/http/http_config.ts b/src/core/server/http/http_config.ts index daf7424b8f8bd..c7e53bb600377 100644 --- a/src/core/server/http/http_config.ts +++ b/src/core/server/http/http_config.ts @@ -14,6 +14,10 @@ import url from 'url'; import { ServiceConfigDescriptor } from '../internal_types'; import { CspConfigType, CspConfig, ICspConfig } from '../csp'; import { ExternalUrlConfig, IExternalUrlConfig } from '../external_url'; +import { + securityResponseHeadersSchema, + parseRawSecurityResponseHeadersConfig, +} from './security_response_headers_config'; const validBasePathRegex = /^\/.*[^\/]$/; const uuidRegexp = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i; @@ -53,6 +57,7 @@ const configSchema = schema.object( }, } ), + securityResponseHeaders: securityResponseHeadersSchema, customResponseHeaders: schema.recordOf(schema.string(), schema.any(), { defaultValue: {}, }), @@ -171,6 +176,7 @@ export class HttpConfig implements IHttpConfig { allowCredentials: boolean; allowOrigin: string[]; }; + public securityResponseHeaders: Record; public customResponseHeaders: Record; public maxPayload: ByteSizeValue; public basePath?: string; @@ -195,6 +201,10 @@ export class HttpConfig implements IHttpConfig { this.host = rawHttpConfig.host; this.port = rawHttpConfig.port; this.cors = rawHttpConfig.cors; + const { securityResponseHeaders, disableEmbedding } = parseRawSecurityResponseHeadersConfig( + rawHttpConfig.securityResponseHeaders + ); + this.securityResponseHeaders = securityResponseHeaders; this.customResponseHeaders = Object.entries(rawHttpConfig.customResponseHeaders ?? {}).reduce( (headers, [key, value]) => { return { @@ -213,7 +223,7 @@ export class HttpConfig implements IHttpConfig { this.rewriteBasePath = rawHttpConfig.rewriteBasePath; this.ssl = new SslConfig(rawHttpConfig.ssl || {}); this.compression = rawHttpConfig.compression; - this.csp = new CspConfig(rawCspConfig); + this.csp = new CspConfig({ ...rawCspConfig, disableEmbedding }); this.externalUrl = rawExternalUrlConfig; this.xsrf = rawHttpConfig.xsrf; this.requestId = rawHttpConfig.requestId; diff --git a/src/core/server/http/integration_tests/lifecycle_handlers.test.ts b/src/core/server/http/integration_tests/lifecycle_handlers.test.ts index 2f9d393b632f7..8d4cf31a5c705 100644 --- a/src/core/server/http/integration_tests/lifecycle_handlers.test.ts +++ b/src/core/server/http/integration_tests/lifecycle_handlers.test.ts @@ -53,8 +53,16 @@ describe('core lifecycle handlers', () => { }, compression: { enabled: true }, name: kibanaName, + securityResponseHeaders: { + // reflects default config + strictTransportSecurity: null, + xContentTypeOptions: 'nosniff', + referrerPolicy: 'strict-origin-when-cross-origin', + permissionsPolicy: null, + }, customResponseHeaders: { 'some-header': 'some-value', + 'referrer-policy': 'strict-origin', // overrides a header that is defined by securityResponseHeaders }, xsrf: { disableProtection: false, allowlist: [allowlistedTestPath] }, requestId: { @@ -117,6 +125,13 @@ describe('core lifecycle handlers', () => { const testRoute = '/custom_headers/test/route'; const testErrorRoute = '/custom_headers/test/error_route'; + const expectedHeaders = { + [nameHeader]: kibanaName, + 'x-content-type-options': 'nosniff', + 'referrer-policy': 'strict-origin', + 'some-header': 'some-value', + }; + beforeEach(async () => { router.get({ path: testRoute, validate: false }, (context, req, res) => { return res.ok({ body: 'ok' }); @@ -127,36 +142,16 @@ describe('core lifecycle handlers', () => { await server.start(); }); - it('adds the kbn-name header', async () => { - const result = await supertest(innerServer.listener).get(testRoute).expect(200, 'ok'); - const headers = result.header as Record; - expect(headers).toEqual( - expect.objectContaining({ - [nameHeader]: kibanaName, - }) - ); - }); - - it('adds the kbn-name header in case of error', async () => { - const result = await supertest(innerServer.listener).get(testErrorRoute).expect(400); - const headers = result.header as Record; - expect(headers).toEqual( - expect.objectContaining({ - [nameHeader]: kibanaName, - }) - ); - }); - - it('adds the custom headers', async () => { + it('adds the expected headers in case of success', async () => { const result = await supertest(innerServer.listener).get(testRoute).expect(200, 'ok'); const headers = result.header as Record; - expect(headers).toEqual(expect.objectContaining({ 'some-header': 'some-value' })); + expect(headers).toEqual(expect.objectContaining(expectedHeaders)); }); - it('adds the custom headers in case of error', async () => { + it('adds the expected headers in case of error', async () => { const result = await supertest(innerServer.listener).get(testErrorRoute).expect(400); const headers = result.header as Record; - expect(headers).toEqual(expect.objectContaining({ 'some-header': 'some-value' })); + expect(headers).toEqual(expect.objectContaining(expectedHeaders)); }); }); diff --git a/src/core/server/http/lifecycle_handlers.test.ts b/src/core/server/http/lifecycle_handlers.test.ts index cd8caa7c76ab1..e777cbb1c1ff0 100644 --- a/src/core/server/http/lifecycle_handlers.test.ts +++ b/src/core/server/http/lifecycle_handlers.test.ts @@ -241,12 +241,15 @@ describe('customHeaders pre-response handler', () => { expect(toolkit.next).toHaveBeenCalledWith({ headers: { 'kbn-name': 'my-server-name' } }); }); - it('adds the custom headers defined in the configuration', () => { + it('adds the security headers and custom headers defined in the configuration', () => { const config = createConfig({ name: 'my-server-name', - customResponseHeaders: { + securityResponseHeaders: { headerA: 'value-A', - headerB: 'value-B', + headerB: 'value-B', // will be overridden by the custom response header below + }, + customResponseHeaders: { + headerB: 'x', }, }); const handler = createCustomHeadersPreResponseHandler(config as HttpConfig); @@ -258,7 +261,7 @@ describe('customHeaders pre-response handler', () => { headers: { 'kbn-name': 'my-server-name', headerA: 'value-A', - headerB: 'value-B', + headerB: 'x', }, }); }); diff --git a/src/core/server/http/lifecycle_handlers.ts b/src/core/server/http/lifecycle_handlers.ts index a1fae89b68e11..eed24c8071eaf 100644 --- a/src/core/server/http/lifecycle_handlers.ts +++ b/src/core/server/http/lifecycle_handlers.ts @@ -62,12 +62,12 @@ export const createVersionCheckPostAuthHandler = (kibanaVersion: string): OnPost }; export const createCustomHeadersPreResponseHandler = (config: HttpConfig): OnPreResponseHandler => { - const serverName = config.name; - const customHeaders = config.customResponseHeaders; + const { name: serverName, securityResponseHeaders, customResponseHeaders } = config; return (request, response, toolkit) => { const additionalHeaders = { - ...customHeaders, + ...securityResponseHeaders, + ...customResponseHeaders, [KIBANA_NAME_HEADER]: serverName, }; diff --git a/src/core/server/http/router/route.ts b/src/core/server/http/router/route.ts index 77b40ca5995bb..ea70f1b4f543b 100644 --- a/src/core/server/http/router/route.ts +++ b/src/core/server/http/router/route.ts @@ -70,7 +70,7 @@ export interface RouteConfigOptionsBody { /** * Limits the size of incoming payloads to the specified byte count. Allowing very large payloads may cause the server to run out of memory. * - * Default value: The one set in the kibana.yml config file under the parameter `server.maxPayloadBytes`. + * Default value: The one set in the kibana.yml config file under the parameter `server.maxPayload`. */ maxBytes?: number; diff --git a/src/core/server/http/security_response_headers_config.test.ts b/src/core/server/http/security_response_headers_config.test.ts new file mode 100644 index 0000000000000..b1c8bb23102f5 --- /dev/null +++ b/src/core/server/http/security_response_headers_config.test.ts @@ -0,0 +1,99 @@ +/* + * 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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { + securityResponseHeadersSchema as schema, + parseRawSecurityResponseHeadersConfig as parse, +} from './security_response_headers_config'; + +describe('parseRawSecurityResponseHeadersConfig', () => { + it('returns default values', () => { + const config = schema.validate({}); + const result = parse(config); + expect(result.disableEmbedding).toBe(false); + expect(result.securityResponseHeaders).toMatchInlineSnapshot(` + Object { + "Referrer-Policy": "no-referrer-when-downgrade", + "X-Content-Type-Options": "nosniff", + } + `); + }); + + describe('strictTransportSecurity', () => { + it('a custom value results in the expected Strict-Transport-Security header', () => { + const strictTransportSecurity = 'max-age=31536000; includeSubDomains'; + const config = schema.validate({ strictTransportSecurity }); + const result = parse(config); + expect(result.securityResponseHeaders['Strict-Transport-Security']).toEqual( + strictTransportSecurity + ); + }); + + it('a null value removes the Strict-Transport-Security header', () => { + const config = schema.validate({ strictTransportSecurity: null }); + const result = parse(config); + expect(result.securityResponseHeaders['Strict-Transport-Security']).toBeUndefined(); + }); + }); + + describe('xContentTypeOptions', () => { + it('a custom value results in the expected X-Content-Type-Options header', () => { + const xContentTypeOptions = 'nosniff'; // there is no other valid value to test with + const config = schema.validate({ xContentTypeOptions }); + const result = parse(config); + expect(result.securityResponseHeaders['X-Content-Type-Options']).toEqual(xContentTypeOptions); + }); + + it('a null value removes the X-Content-Type-Options header', () => { + const config = schema.validate({ xContentTypeOptions: null }); + const result = parse(config); + expect(result.securityResponseHeaders['X-Content-Type-Options']).toBeUndefined(); + }); + }); + + describe('referrerPolicy', () => { + it('a custom value results in the expected Referrer-Policy header', () => { + const referrerPolicy = 'strict-origin-when-cross-origin'; + const config = schema.validate({ referrerPolicy }); + const result = parse(config); + expect(result.securityResponseHeaders['Referrer-Policy']).toEqual(referrerPolicy); + }); + + it('a null value removes the Referrer-Policy header', () => { + const config = schema.validate({ referrerPolicy: null }); + const result = parse(config); + expect(result.securityResponseHeaders['Referrer-Policy']).toBeUndefined(); + }); + }); + + describe('permissionsPolicy', () => { + it('a custom value results in the expected Permissions-Policy header', () => { + const permissionsPolicy = 'display-capture=(self)'; + const config = schema.validate({ permissionsPolicy }); + const result = parse(config); + expect(result.securityResponseHeaders['Permissions-Policy']).toEqual(permissionsPolicy); + }); + + it('a null value removes the Permissions-Policy header', () => { + const config = schema.validate({ permissionsPolicy: null }); + const result = parse(config); + expect(result.securityResponseHeaders['Permissions-Policy']).toBeUndefined(); + }); + }); + + describe('disableEmbedding', () => { + it('a true value results in the expected X-Frame-Options header and expected disableEmbedding result value', () => { + const config = schema.validate({ disableEmbedding: true }); + const result = parse(config); + expect(result.securityResponseHeaders['X-Frame-Options']).toMatchInlineSnapshot( + `"SAMEORIGIN"` + ); + expect(result.disableEmbedding).toBe(true); + }); + }); +}); diff --git a/src/core/server/http/security_response_headers_config.ts b/src/core/server/http/security_response_headers_config.ts new file mode 100644 index 0000000000000..917d737d59297 --- /dev/null +++ b/src/core/server/http/security_response_headers_config.ts @@ -0,0 +1,72 @@ +/* + * 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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { schema, TypeOf } from '@kbn/config-schema'; + +export const securityResponseHeadersSchema = schema.object({ + strictTransportSecurity: schema.oneOf([schema.string(), schema.literal(null)], { + // See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security + defaultValue: null, + }), + xContentTypeOptions: schema.oneOf([schema.literal('nosniff'), schema.literal(null)], { + // See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options + defaultValue: 'nosniff', + }), + referrerPolicy: schema.oneOf( + // See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy + [ + schema.literal('no-referrer'), + schema.literal('no-referrer-when-downgrade'), + schema.literal('origin'), + schema.literal('origin-when-cross-origin'), + schema.literal('same-origin'), + schema.literal('strict-origin'), + schema.literal('strict-origin-when-cross-origin'), + schema.literal('unsafe-url'), + schema.literal(null), + ], + { defaultValue: 'no-referrer-when-downgrade' } + ), + permissionsPolicy: schema.oneOf([schema.string(), schema.literal(null)], { + // See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy + // Note: Feature-Policy is superseded by Permissions-Policy; the link above is temporary until MDN releases an updated page + defaultValue: null, + }), + disableEmbedding: schema.boolean({ defaultValue: false }), // is used to control X-Frame-Options and CSP headers +}); + +/** + * Parses raw security header config info, returning an object with the appropriate header keys and values. + * + * @param raw + * @internal + */ +export function parseRawSecurityResponseHeadersConfig( + raw: TypeOf +) { + const securityResponseHeaders: Record = {}; + const { disableEmbedding } = raw; + + if (raw.strictTransportSecurity) { + securityResponseHeaders['Strict-Transport-Security'] = raw.strictTransportSecurity; + } + if (raw.xContentTypeOptions) { + securityResponseHeaders['X-Content-Type-Options'] = raw.xContentTypeOptions; + } + if (raw.referrerPolicy) { + securityResponseHeaders['Referrer-Policy'] = raw.referrerPolicy; + } + if (raw.permissionsPolicy) { + securityResponseHeaders['Permissions-Policy'] = raw.permissionsPolicy; + } + if (disableEmbedding) { + securityResponseHeaders['X-Frame-Options'] = 'SAMEORIGIN'; + } + + return { securityResponseHeaders, disableEmbedding }; +} diff --git a/src/core/server/http/test_utils.ts b/src/core/server/http/test_utils.ts index b9b877e193fbd..c6368a7166bc3 100644 --- a/src/core/server/http/test_utils.ts +++ b/src/core/server/http/test_utils.ts @@ -38,6 +38,7 @@ configService.atPath.mockImplementation((path) => { disableProtection: true, allowlist: [], }, + securityResponseHeaders: {}, customResponseHeaders: {}, requestId: { allowFromAnyIp: true, diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index e8f9dab435754..e5804b3c9fc58 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -442,6 +442,13 @@ export interface CoreConfigUsageData { supportedProtocols: string[]; clientAuthentication: 'none' | 'optional' | 'required'; }; + securityResponseHeaders: { + strictTransportSecurity: string; + xContentTypeOptions: string; + referrerPolicy: string; + permissionsPolicyConfigured: boolean; + disableEmbedding: boolean; + }; }; // (undocumented) logging: { @@ -757,6 +764,8 @@ export class CspConfig implements ICspConfig { // (undocumented) static readonly DEFAULT: CspConfig; // (undocumented) + readonly disableEmbedding: boolean; + // (undocumented) readonly header: string; // (undocumented) readonly rules: string[]; @@ -1113,6 +1122,7 @@ export type IContextProvider Date: Mon, 19 Apr 2021 13:15:18 -0400 Subject: [PATCH 07/56] [Fleet] Fix deprecation of config variable xpack.fleet.agents.kibana (#97480) --- x-pack/plugins/fleet/server/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/plugins/fleet/server/index.ts b/x-pack/plugins/fleet/server/index.ts index c1baa43f4d588..25298d991230d 100644 --- a/x-pack/plugins/fleet/server/index.ts +++ b/x-pack/plugins/fleet/server/index.ts @@ -34,8 +34,7 @@ export const config: PluginConfigDescriptor = { deprecations: ({ renameFromRoot, unused }) => [ renameFromRoot('xpack.ingestManager', 'xpack.fleet'), renameFromRoot('xpack.fleet.fleet', 'xpack.fleet.agents'), - unused('agents.kibana.ca_sha256'), - unused('agents.kibana.host'), + unused('agents.kibana'), unused('agents.maxConcurrentConnections'), unused('agents.agentPolicyRolloutRateLimitIntervalMs'), unused('agents.agentPolicyRolloutRateLimitRequestPerInterval'), From 77fe59d58f971cabc875da81567a580b326b246f Mon Sep 17 00:00:00 2001 From: Vadim Dalecky Date: Mon, 19 Apr 2021 19:26:05 +0200 Subject: [PATCH 08/56] Drilldown cloning (#91959) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: 💡 remove switch statement * feat: 🎸 improve stories * refactor: 💡 remove component * refactor: 💡 simplify component * feat: 🎸 introduce React context for drilldowns flyout * refactor: 💡 rename drilldown manager component * refactor: 💡 rename drilldown manager in example plugin * refactor: 💡 rename folder to "containers" * feat: 🎸 use drilldown context to store UI state * chore: 🤖 fix linter errors * refactor: 💡 move Drilldown Manager into its own folder * feat: 🎸 add drilldown state management * feat: 🎸 add component * chore: 🤖 clean up component props * feat: 🎸 add component * feat: 🎸 connect action factory picker component * chore: 🤖 cleanup * feat: 🎸 start work on * feat: 🎸 add component * test: 💍 add stories * feat: 🎸 add component * refactor: 💡 remove ActionFactory from * feat: 🎸 connect component * feat: 🎸 improve new drilldown connected form * fix: 🐛 correct TypeScript types * feat: 🎸 show trigger intersection in the UI * feat: 🎸 add component * feat: 🎸 show connected component * feat: 🎸 use a single action factory control * fix: 🐛 remove unused props * refactor: 💡 improve create drilldown form * fix: 🐛 correct hello bar close callback * feat: 🎸 connect welcome message state to local storage * fix: 🐛 correct TypeScript errors * fix: 🐛 hide correctly hello bar * feat: 🎸 add drilldown creation logic * feat: 🎸 connect event list state * fix: 🐛 correct story props * fix: 🐛 correct typescript errors * feat: 🎸 navigate to list view when drilldown is created * feat: 🎸 add EUI tabs * feat: 🎸 connect route state to tabs * refactor: 💡 move flyout content into a separate component * refactor: 💡 move manager tabs into a separate component * chore: 🤖 delete unused variables * feat: 🎸 make drilldowns title dynamic * docs: ✏️ update README * feat: 🎸 add component * feat: 🎸 make flyout footer dynamic * refactor: 💡 make action factory state depend on the route * feat: 🎸 create standalone new drilldown form * fix: 🐛 support i18n in new drilldown form * feat: 🎸 add space between action factory picker * refactor: 💡 simplify * feat: 🎸 add back chevron button to drilldown flyout * chore: 🤖 remove unused translations * chore: 🤖 delete unused translation file * feat: 🎸 add and improve title comp * feat: 🎸 improve * refactor: 💡 improve variable name * feat: 🎸 add isValid() to drilldown state * refactor: 💡 move drilldown hello bar into a seprate component * feat: 🎸 show drilldown list on "Manage" tab * refactor: 💡 improve drilldown list component * feat: 🎸 connect drill list comp to delete and edit functional * feat: 🎸 support form disabling when drill creation in progress * feat: 🎸 connect drilldown edit form * feat: 🎸 use /manage route for editing drilldowns * fix: 🐛 render constant action factory in edit mode * refactor: 💡 move drilldown footer submit button in a sep comp * feat: 🎸 connect editing to drilldown edit form * feat: 🎸 disable edit buttons when list has selection * chore: 🤖 remove unused code * feat: 🎸 show error if delete fails * chore: 🤖 remove legacy code * feat: 🎸 improve drilldown table component * fix: 🐛 fix "Trigger" translation * fix: 🐛 import correct drilldown table item * feat: 🎸 handle empty name errors * feat: 🎸 track config error in drilldown state * feat: 🎸 track drilldown state trigger errors * fix: 🐛 pre-select trigger if only one trigger is available * feat: 🎸 add drilldown template interface * feat: 🎸 progress on drilldown cloning list * feat: 🎸 use table view to display drilldown cloning templates * feat: 🎸 generate drilldown templates from embeddable siblings * feat: 🎸 improve drilldown template generation logic * feat: 🎸 improve drilldown template preview * feat: 🎸 improve start from template table view * feat: 🎸 show number of items to be cloned * feat: 🎸 add ID to drilldown templates * feat: 🎸 implement basic cloning functionality * feat: 🎸 add ability to create drilldown from existing one * feat: 🎸 improve cloning behaviour * feat: 🎸 improve icon of templates * feat: 🎸 remove "Start from template" accordion * feat: 🎸 improve cloning table view * feat: 🎸 add "Triggers" column * feat: 🎸 enable drilldown actions in "edit" mode * fix: 🐛 reset drilldown state cache by factory on new creation * refactor: 💡 use in-memory table for drilldown template list * feat: 🎸 add search box to drilldown template in-memory table * feat: 🎸 show back chevron on no steps back, to close flyout * feat: 🎸 show notification when drilldown was just cloned * feat: 🎸 add i18n to cloning notification, and move to sep comp * feat: 🎸 add support for plural and singular in translation * feat: 🎸 make new drilldown names unique with (copy x) at end * feat: 🎸 rename cloning to copying * feat: 🎸 show incompatible trigger warning in template list * refactor: 💡 craete text with icon component * feat: 🎸 show trigger warning in manage view * refactor: 💡 use in drilldown table view * feat: 🎸 add component * feat: 🎸 show tooltip on incompatible icon hover * feat: 🎸 unify tooltips in component * feat: 🎸 enable sorting in drilldown tables * fix: 🐛 correct ui actions x-pack typescript errors * fix: 🐛 correct ui actions example plugin errors * docs: ✏️ update autogenerated docs * chore: 🤖 remove unused translations * test: 💍 remove implementation from todo placeholders * test: 💍 fix dashboard drilldown functional test * chore: 🤖 remove unused constants * test: 💍 fix url drilldown functional test * test: 💍 add drilldown manager state tests * feat: 🎸 dont show back button when no more steps back * feat: 🎸 pre-fill in drilldown name * feat: 🎸 add copy suffix when creating new drilldown * feat: 🎸 close flyout if opened in create mode * feat: 🎸 dont close flyout if user navigated to "manage" tab * feat: 🎸 show smaller notification message on cloning * feat: 🎸 add "(copy X)" text when cloning/copying drilldowns * feat: 🎸 make copy prefixes start from "(copy)" * feat: 🎸 add link to dismiss notification * feat: 🎸 rename "Clone (x)" button to "Copy (x)" * feat: 🎸 rename tempalte table last column copy button * feat: 🎸 use "copied" terminology in notification * feat: 🎸 add "Copy existing drilldown" label to template picker * feat: 🎸 use "auto" layout on drilldown template picker table * test: 💍 add drilldown manager tests * feat: 🎸 swap label for title --- ...ns-embeddable-public.container.children.md | 2 +- ...ctionspresentable.getdisplaynametooltip.md | 2 +- .../public/lib/containers/container.ts | 2 +- src/plugins/embeddable/public/public.api.md | 2 +- src/plugins/ui_actions/public/public.api.md | 2 +- .../ui_actions/public/util/presentable.ts | 2 +- .../drilldowns_with_embeddable_example.tsx | 13 +- .../drilldowns_without_embeddable_example.tsx | 13 +- ...thout_embeddable_single_button_example.tsx | 7 +- .../public/plugin.ts | 8 +- .../drilldowns/actions/drilldown_shared.ts | 48 ++ .../flyout_create_drilldown.tsx | 20 +- .../flyout_edit_drilldown.tsx | 11 +- .../translations/translations/ja-JP.json | 11 - .../translations/translations/zh-CN.json | 11 - .../action_factory_picker.tsx | 52 ++ .../action_factory_picker}/index.ts | 2 +- .../action_wizard/action_wizard.tsx | 36 +- .../components/presentable_picker/i18n.ts | 29 ++ .../presentable_picker}/index.ts | 2 +- .../presentable_picker.stories.tsx | 152 ++++++ .../presentable_picker/presentable_picker.tsx | 57 +++ .../presentable_picker_item.tsx | 63 +++ .../components/presentable_picker/styles.scss | 5 + ...ected_flyout_manage_drilldowns.stories.tsx | 49 -- ...onnected_flyout_manage_drilldowns.test.tsx | 324 ------------ .../connected_flyout_manage_drilldowns.tsx | 245 --------- .../i18n.ts | 28 - .../test_data.ts | 87 ---- .../flyout_drilldown_wizard.stories.tsx | 69 --- .../flyout_drilldown_wizard.tsx | 248 --------- .../flyout_list_manage_drilldowns.stories.tsx | 23 - .../flyout_list_manage_drilldowns.tsx | 56 -- .../form_drilldown_wizard.stories.tsx | 38 -- .../form_drilldown_wizard.test.tsx | 73 --- .../form_drilldown_wizard.tsx | 143 ------ .../components/form_drilldown_wizard/i18n.ts | 36 -- .../components/list_manage_drilldowns/i18n.ts | 40 -- .../list_manage_drilldowns.stories.tsx | 37 -- .../public/drilldowns/components/types.ts | 16 - .../drilldowns/drilldown_manager/README.md | 12 + .../action_factory/action_factory.tsx | 132 +++++ .../components/action_factory}/index.ts | 2 +- .../button_submit/button_submit.tsx | 27 + .../components/button_submit/index.ts | 8 + .../drilldown_form/drilldown_form.stories.tsx | 62 +++ .../drilldown_form/drilldown_form.tsx | 92 ++++ .../components/drilldown_form}/index.tsx | 2 +- .../drilldown_hello_bar.stories.tsx | 0 .../drilldown_hello_bar.tsx | 17 +- .../components/drilldown_hello_bar/i18n.ts | 0 .../components/drilldown_hello_bar/index.tsx | 0 .../drilldown_table.stories.tsx | 86 ++++ .../drilldown_table/drilldown_table.test.tsx} | 20 +- .../drilldown_table/drilldown_table.tsx} | 143 +++--- .../components/drilldown_table/i18n.ts | 65 +++ .../components/drilldown_table/index.tsx | 8 + .../drilldown_template_table.tsx | 137 +++++ .../drilldown_template_table/i18n.ts | 62 +++ .../drilldown_template_table/index.tsx | 8 + .../flyout_frame/flyout_frame.stories.tsx | 0 .../flyout_frame/flyout_frame.test.tsx | 0 .../components/flyout_frame/flyout_frame.tsx | 0 .../components/flyout_frame/i18n.ts | 0 .../components/flyout_frame/index.tsx | 0 .../components/text_with_icon/index.tsx | 8 + .../text_with_icon/text_with_icon.tsx | 60 +++ .../components/trigger_line_item/index.tsx | 8 + .../trigger_line_item/trigger_line_item.tsx | 40 ++ .../components/trigger_picker/index.ts | 9 + .../trigger_picker/trigger_picker.stories.tsx | 102 ++++ .../trigger_picker/trigger_picker.tsx | 90 ++++ .../trigger_picker/trigger_picker_item.tsx | 73 +++ .../drilldown_manager/components/types.ts | 8 + .../action_factory_picker.tsx | 31 ++ .../containers/action_factory_picker/index.ts | 8 + .../action_factory_view.tsx | 33 ++ .../containers/action_factory_view/index.ts | 8 + .../containers/context/context.tsx | 25 + .../containers/context/index.ts | 8 + .../create_drilldown_form.tsx | 63 +++ .../containers/create_drilldown_form/index.ts | 8 + .../drilldown_list/cloning_notification.tsx | 53 ++ .../drilldown_list/drilldown_list.tsx | 47 ++ .../containers/drilldown_list/index.ts | 8 + .../create_public_drilldown_manager.tsx | 31 ++ .../drilldown_manager/drilldown_manager.tsx | 34 ++ .../drilldown_manager_content.tsx | 22 + .../containers/drilldown_manager}/index.ts | 3 +- .../drilldown_manager_footer.tsx | 26 + .../drilldown_manager_footer/index.ts | 8 + .../drilldown_manager_title.tsx | 26 + .../drilldown_manager_title/index.ts | 8 + .../drilldown_state_form.tsx | 51 ++ .../containers/drilldown_state_form/index.ts | 8 + .../edit_drilldown_form.tsx | 75 +++ .../containers/edit_drilldown_form/index.ts | 8 + .../create_drilldown_form.tsx | 45 ++ .../edit_drilldown_form.tsx | 65 +++ .../form_drilldown_wizard.tsx | 29 ++ .../containers/form_drilldown_wizard}/i18n.ts | 14 - .../form_drilldown_wizard/index.ts} | 0 .../containers/hello_bar/hello_bar.tsx | 24 + .../containers/hello_bar/index.ts | 8 + .../drilldown_manager/containers/index.ts | 8 + .../containers/tabs/index.ts | 8 + .../containers/tabs/tabs.tsx | 66 +++ .../containers/template_picker}/i18n.ts | 7 +- .../containers/template_picker/index.ts | 8 + .../template_picker/template_list.tsx | 63 +++ .../template_picker/template_picker.tsx | 20 + .../hooks/use_sync_observable.ts | 39 ++ .../drilldowns/drilldown_manager/index.ts | 9 + .../state/drilldown_manager_state.test.tsx | 319 ++++++++++++ .../state/drilldown_manager_state.ts | 481 ++++++++++++++++++ .../state/drilldown_state.ts | 242 +++++++++ .../state}/i18n.ts | 28 + .../drilldown_manager/state/index.ts | 9 + .../drilldowns/drilldown_manager/types.ts | 162 ++++++ ...le_action_factories_for_current_context.ts | 36 -- .../hooks/use_drilldown_state_manager.tsx | 86 ---- .../drilldowns/hooks/use_welcome_message.ts | 23 - .../public/drilldowns/index.ts | 2 +- .../public/dynamic_actions/action_factory.ts | 24 +- .../dynamic_actions/dynamic_action_manager.ts | 5 + .../ui_actions_enhanced/public/index.ts | 5 +- .../ui_actions_enhanced/public/mocks.ts | 2 +- .../ui_actions_enhanced/public/plugin.ts | 6 +- .../dashboard_to_dashboard_drilldown.ts | 6 +- .../drilldowns/dashboard_to_url_drilldown.ts | 3 +- .../services/dashboard/drilldowns_manage.ts | 22 - 131 files changed, 3930 insertions(+), 1881 deletions(-) create mode 100644 x-pack/plugins/ui_actions_enhanced/public/components/action_factory_picker/action_factory_picker.tsx rename x-pack/plugins/ui_actions_enhanced/public/{drilldowns/components/flyout_drilldown_wizard => components/action_factory_picker}/index.ts (85%) create mode 100644 x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/i18n.ts rename x-pack/plugins/ui_actions_enhanced/public/{drilldowns/components/flyout_list_manage_drilldowns => components/presentable_picker}/index.ts (83%) create mode 100644 x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker.stories.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker_item.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/styles.scss delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.stories.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.test.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/i18n.ts delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/test_data.ts delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/flyout_drilldown_wizard.stories.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/flyout_drilldown_wizard.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/flyout_list_manage_drilldowns.stories.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/flyout_list_manage_drilldowns.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.stories.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.test.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/i18n.ts delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/i18n.ts delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/list_manage_drilldowns.stories.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/types.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/README.md create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/action_factory/action_factory.tsx rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{components/connected_flyout_manage_drilldowns => drilldown_manager/components/action_factory}/index.ts (82%) create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/button_submit/button_submit.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/button_submit/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_form/drilldown_form.stories.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_form/drilldown_form.tsx rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{components/list_manage_drilldowns => drilldown_manager/components/drilldown_form}/index.tsx (85%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{ => drilldown_manager}/components/drilldown_hello_bar/drilldown_hello_bar.stories.tsx (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{ => drilldown_manager}/components/drilldown_hello_bar/drilldown_hello_bar.tsx (84%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{ => drilldown_manager}/components/drilldown_hello_bar/i18n.ts (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{ => drilldown_manager}/components/drilldown_hello_bar/index.tsx (100%) create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/drilldown_table.stories.tsx rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{components/list_manage_drilldowns/list_manage_drilldowns.test.tsx => drilldown_manager/components/drilldown_table/drilldown_table.test.tsx} (74%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{components/list_manage_drilldowns/list_manage_drilldowns.tsx => drilldown_manager/components/drilldown_table/drilldown_table.tsx} (51%) create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/i18n.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/index.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/drilldown_template_table.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/i18n.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/index.tsx rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{ => drilldown_manager}/components/flyout_frame/flyout_frame.stories.tsx (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{ => drilldown_manager}/components/flyout_frame/flyout_frame.test.tsx (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{ => drilldown_manager}/components/flyout_frame/flyout_frame.tsx (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{ => drilldown_manager}/components/flyout_frame/i18n.ts (100%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{ => drilldown_manager}/components/flyout_frame/index.tsx (100%) create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/text_with_icon/index.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/text_with_icon/text_with_icon.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_line_item/index.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_line_item/trigger_line_item.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker.stories.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker_item.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/types.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_picker/action_factory_picker.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_picker/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_view/action_factory_view.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_view/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/context/context.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/context/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/create_drilldown_form/create_drilldown_form.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/create_drilldown_form/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/cloning_notification.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/drilldown_list.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/create_public_drilldown_manager.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/drilldown_manager.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/drilldown_manager_content.tsx rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{components => drilldown_manager/containers/drilldown_manager}/index.ts (74%) create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_footer/drilldown_manager_footer.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_footer/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_title/drilldown_manager_title.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_title/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_state_form/drilldown_state_form.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_state_form/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/edit_drilldown_form/edit_drilldown_form.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/edit_drilldown_form/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/create_drilldown_form.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/edit_drilldown_form.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/form_drilldown_wizard.tsx rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{components/flyout_drilldown_wizard => drilldown_manager/containers/form_drilldown_wizard}/i18n.ts (68%) rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{components/form_drilldown_wizard/index.tsx => drilldown_manager/containers/form_drilldown_wizard/index.ts} (100%) create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/hello_bar/hello_bar.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/hello_bar/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/tabs/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/tabs/tabs.tsx rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{components/flyout_list_manage_drilldowns => drilldown_manager/containers/template_picker}/i18n.ts (57%) create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/template_list.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/template_picker.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/hooks/use_sync_observable.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_manager_state.test.tsx create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_manager_state.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_state.ts rename x-pack/plugins/ui_actions_enhanced/public/drilldowns/{hooks => drilldown_manager/state}/i18n.ts (76%) create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/index.ts create mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/types.ts delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_compatible_action_factories_for_current_context.ts delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_drilldown_state_manager.tsx delete mode 100644 x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_welcome_message.ts diff --git a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.children.md b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.children.md index e8f140219ed9c..a334f37ba3e7d 100644 --- a/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.children.md +++ b/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.container.children.md @@ -7,7 +7,7 @@ Signature: ```typescript -protected readonly children: { +readonly children: { [key: string]: IEmbeddable | ErrorEmbeddable; }; ``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md index 8fc859d5713e6..a35f455f7af25 100644 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionspresentable.getdisplaynametooltip.md @@ -9,7 +9,7 @@ Returns tooltip text which should be displayed when user hovers this object. Sho Signature: ```typescript -getDisplayNameTooltip(context: Context): string; +getDisplayNameTooltip?(context: Context): string; ``` ## Parameters diff --git a/src/plugins/embeddable/public/lib/containers/container.ts b/src/plugins/embeddable/public/lib/containers/container.ts index 24af29d0cee56..fabe3cd32f34b 100644 --- a/src/plugins/embeddable/public/lib/containers/container.ts +++ b/src/plugins/embeddable/public/lib/containers/container.ts @@ -32,7 +32,7 @@ export abstract class Container< extends Embeddable implements IContainer { public readonly isContainer: boolean = true; - protected readonly children: { + public readonly children: { [key: string]: IEmbeddable | ErrorEmbeddable; } = {}; diff --git a/src/plugins/embeddable/public/public.api.md b/src/plugins/embeddable/public/public.api.md index d522a4e5fa8e8..2a577e6167be5 100644 --- a/src/plugins/embeddable/public/public.api.md +++ b/src/plugins/embeddable/public/public.api.md @@ -160,7 +160,7 @@ export abstract class Container = { // (undocumented) addNewEmbeddable = IEmbeddable>(type: string, explicitInput: Partial): Promise; // (undocumented) - protected readonly children: { + readonly children: { [key: string]: IEmbeddable | ErrorEmbeddable; }; // (undocumented) diff --git a/src/plugins/ui_actions/public/public.api.md b/src/plugins/ui_actions/public/public.api.md index 44d911d336b19..f8c473a3e2c0a 100644 --- a/src/plugins/ui_actions/public/public.api.md +++ b/src/plugins/ui_actions/public/public.api.md @@ -138,7 +138,7 @@ export interface UiActionsActionDefinition exte // @public export interface UiActionsPresentable { getDisplayName(context: Context): string; - getDisplayNameTooltip(context: Context): string; + getDisplayNameTooltip?(context: Context): string; getHref?(context: Context): Promise; getIconType(context: Context): string | undefined; readonly grouping?: UiActionsPresentableGrouping; diff --git a/src/plugins/ui_actions/public/util/presentable.ts b/src/plugins/ui_actions/public/util/presentable.ts index 319a271ceb726..9e690b9ef3c08 100644 --- a/src/plugins/ui_actions/public/util/presentable.ts +++ b/src/plugins/ui_actions/public/util/presentable.ts @@ -43,7 +43,7 @@ export interface Presentable { * Returns tooltip text which should be displayed when user hovers this object. * Should return empty string if tooltip should not be displayed. */ - getDisplayNameTooltip(context: Context): string; + getDisplayNameTooltip?(context: Context): string; /** * This method should return a link if this item can be clicked on. The link diff --git a/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_with_embeddable_example/drilldowns_with_embeddable_example.tsx b/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_with_embeddable_example/drilldowns_with_embeddable_example.tsx index e6351ec401d88..792b978c99241 100644 --- a/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_with_embeddable_example/drilldowns_with_embeddable_example.tsx +++ b/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_with_embeddable_example/drilldowns_with_embeddable_example.tsx @@ -46,7 +46,7 @@ export const DrilldownsWithEmbeddableExample: React.FC = () => { ); const [showManager, setShowManager] = React.useState(false); const [openPopup, setOpenPopup] = React.useState(false); - const viewRef = React.useRef<'create' | 'manage'>('create'); + const viewRef = React.useRef<'/create' | '/manage'>('/create'); const panels: EuiContextMenuPanelDescriptor[] = [ { @@ -57,7 +57,7 @@ export const DrilldownsWithEmbeddableExample: React.FC = () => { icon: 'plusInCircle', onClick: () => { setOpenPopup(false); - viewRef.current = 'create'; + viewRef.current = '/create'; setShowManager((x) => !x); }, }, @@ -66,7 +66,7 @@ export const DrilldownsWithEmbeddableExample: React.FC = () => { icon: 'list', onClick: () => { setOpenPopup(false); - viewRef.current = 'manage'; + viewRef.current = '/manage'; setShowManager((x) => !x); }, }, @@ -122,12 +122,13 @@ export const DrilldownsWithEmbeddableExample: React.FC = () => { {showManager && ( setShowManager(false)} aria-labelledby="Drilldown Manager"> - setShowManager(false)} - viewMode={viewRef.current} + setShowManager(false)} /> )} diff --git a/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_without_embeddable_example/drilldowns_without_embeddable_example.tsx b/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_without_embeddable_example/drilldowns_without_embeddable_example.tsx index d46c146b49916..a0e1f38543c29 100644 --- a/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_without_embeddable_example/drilldowns_without_embeddable_example.tsx +++ b/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_without_embeddable_example/drilldowns_without_embeddable_example.tsx @@ -32,7 +32,7 @@ export const DrilldownsWithoutEmbeddableExample: React.FC = () => { const { plugins, managerWithoutEmbeddable } = useUiActions(); const [showManager, setShowManager] = React.useState(false); const [openPopup, setOpenPopup] = React.useState(false); - const viewRef = React.useRef<'create' | 'manage'>('create'); + const viewRef = React.useRef<'/create' | '/manage'>('/create'); const panels: EuiContextMenuPanelDescriptor[] = [ { @@ -43,7 +43,7 @@ export const DrilldownsWithoutEmbeddableExample: React.FC = () => { icon: 'plusInCircle', onClick: () => { setOpenPopup(false); - viewRef.current = 'create'; + viewRef.current = '/create'; setShowManager((x) => !x); }, }, @@ -52,7 +52,7 @@ export const DrilldownsWithoutEmbeddableExample: React.FC = () => { icon: 'list', onClick: () => { setOpenPopup(false); - viewRef.current = 'manage'; + viewRef.current = '/manage'; setShowManager((x) => !x); }, }, @@ -116,11 +116,12 @@ export const DrilldownsWithoutEmbeddableExample: React.FC = () => { {showManager && ( setShowManager(false)} aria-labelledby="Drilldown Manager"> - setShowManager(false)} - viewMode={viewRef.current} + setShowManager(false)} /> )} diff --git a/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_without_embeddable_single_button_example/drilldowns_without_embeddable_single_button_example.tsx b/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_without_embeddable_single_button_example/drilldowns_without_embeddable_single_button_example.tsx index 7c19b091a8948..2d877eea7ce1f 100644 --- a/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_without_embeddable_single_button_example/drilldowns_without_embeddable_single_button_example.tsx +++ b/x-pack/examples/ui_actions_enhanced_examples/public/containers/drilldowns_without_embeddable_single_button_example/drilldowns_without_embeddable_single_button_example.tsx @@ -13,7 +13,6 @@ import { sampleApp2ClickContext, SAMPLE_APP2_CLICK_TRIGGER } from '../../trigger export const DrilldownsWithoutEmbeddableSingleButtonExample: React.FC = () => { const { plugins, managerWithoutEmbeddableSingleButton } = useUiActions(); const [showManager, setShowManager] = React.useState(false); - const viewRef = React.useRef<'create' | 'manage'>('create'); return ( <> @@ -50,11 +49,11 @@ export const DrilldownsWithoutEmbeddableSingleButtonExample: React.FC = () => { {showManager && ( setShowManager(false)} aria-labelledby="Drilldown Manager"> - setShowManager(false)} - viewMode={viewRef.current} + setShowManager(false)} /> )} diff --git a/x-pack/examples/ui_actions_enhanced_examples/public/plugin.ts b/x-pack/examples/ui_actions_enhanced_examples/public/plugin.ts index 7ab3b1feb0672..8496450745190 100644 --- a/x-pack/examples/ui_actions_enhanced_examples/public/plugin.ts +++ b/x-pack/examples/ui_actions_enhanced_examples/public/plugin.ts @@ -86,9 +86,9 @@ export class UiActionsEnhancedExamplesPlugin const { core: coreStart, plugins: pluginsStart, self } = start(); const handle = coreStart.overlays.openFlyout( toMountPoint( - h(pluginsStart.uiActionsEnhanced.FlyoutManageDrilldowns, { + h(pluginsStart.uiActionsEnhanced.DrilldownManager, { onClose: () => handle.close(), - viewMode: 'create', + initialRoute: '/create', dynamicActionManager: self.managerWithoutEmbeddableSingleButton, triggers: [SAMPLE_APP2_CLICK_TRIGGER], placeContext: {}, @@ -111,9 +111,9 @@ export class UiActionsEnhancedExamplesPlugin const { core: coreStart, plugins: pluginsStart, self } = start(); const handle = coreStart.overlays.openFlyout( toMountPoint( - h(pluginsStart.uiActionsEnhanced.FlyoutManageDrilldowns, { + h(pluginsStart.uiActionsEnhanced.DrilldownManager, { onClose: () => handle.close(), - viewMode: 'manage', + initialRoute: '/manage', dynamicActionManager: self.managerWithoutEmbeddableSingleButton, triggers: [SAMPLE_APP2_CLICK_TRIGGER], placeContext: { sampleApp2ClickContext }, diff --git a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/drilldown_shared.ts b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/drilldown_shared.ts index c42bbde22ce31..ce96b3497e9ff 100644 --- a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/drilldown_shared.ts +++ b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/drilldown_shared.ts @@ -9,7 +9,11 @@ import { APPLY_FILTER_TRIGGER } from '../../../../../../../src/plugins/data/publ import { SELECT_RANGE_TRIGGER, VALUE_CLICK_TRIGGER, + IEmbeddable, + Container as EmbeddableContainer, } from '../../../../../../../src/plugins/embeddable/public'; +import { isEnhancedEmbeddable } from '../../../../../embeddable_enhanced/public'; +import { UiActionsEnhancedDrilldownTemplate as DrilldownTemplate } from '../../../../../ui_actions_enhanced/public'; /** * We know that VALUE_CLICK_TRIGGER and SELECT_RANGE_TRIGGER are also triggering APPLY_FILTER_TRIGGER. @@ -31,3 +35,47 @@ export function ensureNestedTriggers(triggers: string[]): string[] { return triggers; } + +const isEmbeddableContainer = (x: unknown): x is EmbeddableContainer => + x instanceof EmbeddableContainer; + +/** + * Given a dashboard panel embeddable, it will find the parent (dashboard + * container embeddable), then iterate through all the dashboard panels and + * generate DrilldownTemplate for each existing drilldown. + */ +export const createDrilldownTemplatesFromSiblings = ( + embeddable: IEmbeddable +): DrilldownTemplate[] => { + const templates: DrilldownTemplate[] = []; + const embeddableId = embeddable.id; + + const container = embeddable.getRoot(); + + if (!container) return templates; + if (!isEmbeddableContainer(container)) return templates; + + const childrenIds = (container as EmbeddableContainer).getChildIds(); + + for (const childId of childrenIds) { + const child = (container as EmbeddableContainer).getChild(childId); + if (child.id === embeddableId) continue; + if (!isEnhancedEmbeddable(child)) continue; + const events = child.enhancements.dynamicActions.state.get().events; + + for (const event of events) { + const template: DrilldownTemplate = { + id: event.eventId, + name: event.action.name, + icon: 'dashboardApp', + description: child.getTitle() || child.id, + config: event.action.config, + factoryId: event.action.factoryId, + triggers: event.triggers, + }; + templates.push(template); + } + } + + return templates; +}; diff --git a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx index 2f91cdc71581c..4c0db8f317e51 100644 --- a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx +++ b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx @@ -9,17 +9,17 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { Action } from '../../../../../../../../src/plugins/ui_actions/public'; import { toMountPoint } from '../../../../../../../../src/plugins/kibana_react/public'; -import { - isEnhancedEmbeddable, - embeddableEnhancedDrilldownGrouping, -} from '../../../../../../embeddable_enhanced/public'; import { CONTEXT_MENU_TRIGGER, EmbeddableContext, } from '../../../../../../../../src/plugins/embeddable/public'; +import { + isEnhancedEmbeddable, + embeddableEnhancedDrilldownGrouping, +} from '../../../../../../embeddable_enhanced/public'; import { StartDependencies } from '../../../../plugin'; import { StartServicesGetter } from '../../../../../../../../src/plugins/kibana_utils/public'; -import { ensureNestedTriggers } from '../drilldown_shared'; +import { ensureNestedTriggers, createDrilldownTemplatesFromSiblings } from '../drilldown_shared'; export const OPEN_FLYOUT_ADD_DRILLDOWN = 'OPEN_FLYOUT_ADD_DRILLDOWN'; @@ -81,14 +81,18 @@ export class FlyoutCreateDrilldownAction implements Action { ); } + const templates = createDrilldownTemplatesFromSiblings(embeddable); + const handle = core.overlays.openFlyout( toMountPoint( - handle.close()} - viewMode={'create'} + handle.close()} /> ), { diff --git a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx index e3a4ef7ac0830..44eb63bbc504b 100644 --- a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx +++ b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx @@ -24,7 +24,7 @@ import { } from '../../../../../../embeddable_enhanced/public'; import { StartDependencies } from '../../../../plugin'; import { StartServicesGetter } from '../../../../../../../../src/plugins/kibana_utils/public'; -import { ensureNestedTriggers } from '../drilldown_shared'; +import { createDrilldownTemplatesFromSiblings, ensureNestedTriggers } from '../drilldown_shared'; export const OPEN_FLYOUT_EDIT_DRILLDOWN = 'OPEN_FLYOUT_EDIT_DRILLDOWN'; @@ -66,14 +66,17 @@ export class FlyoutEditDrilldownAction implements Action { ); } + const templates = createDrilldownTemplatesFromSiblings(embeddable); + const handle = core.overlays.openFlyout( toMountPoint( - handle.close()} - viewMode={'manage'} + handle.close()} /> ), { diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index d1d58755d6daa..74803fda8df5c 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -22527,10 +22527,8 @@ "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.helpText": "ドリルダウンにより、パネルと連携する新しい動作を定義できます。複数のアクションを追加し、デフォルトフィルターを無効化できます。", "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.hideHelpButtonLabel": "非表示", "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.viewDocsLinkLabel": "ドキュメントを表示", - "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.createDrilldownButtonLabel": "ドリルダウンを作成", "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.createDrilldownTitle": "ドリルダウンを作成", "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.deleteDrilldownButtonLabel": "ドリルダウンを削除", - "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.editDrilldownButtonLabel": "保存", "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.editDrilldownTitle": "ドリルダウンを編集", "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.insufficientLicenseLevelError": "不十分なライセンスレベル", "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.invalidDrilldownType": "ドリルダウンタイプ{type}が存在しません", @@ -22545,15 +22543,6 @@ "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsDeletedTitle": "{n}個のドリルダウンが削除されました", "xpack.uiActionsEnhanced.drilldowns.components.FlyoutFrame.BackButtonLabel": "戻る", "xpack.uiActionsEnhanced.drilldowns.components.FlyoutFrame.CloseButtonLabel": "閉じる", - "xpack.uiActionsEnhanced.drilldowns.components.FlyoutListManageDrilldowns.manageDrilldownsTitle": "ドリルダウンを管理", - "xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.drilldownAction": "アクション", - "xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.nameOfDrilldown": "名前", - "xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.untitledDrilldown": "無題のドリルダウン", - "xpack.uiActionsEnhanced.drilldowns.components.FormDrilldownWizard.getMoreActionsLinkLabel": "さらにアクションを表示", - "xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.createDrilldownButtonLabel": "新規作成", - "xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.deleteDrilldownsButtonLabel": "削除 ({count}) ", - "xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.editDrilldownButtonLabel": "編集", - "xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.selectThisDrilldownCheckboxLabel": "このドリルダウンを選択", "xpack.uiActionsEnhanced.drilldowns.urlDrilldownCollectConfig.additionalOptions": "その他のオプション", "xpack.uiActionsEnhanced.drilldowns.urlDrilldownCollectConfig.addVariableButtonTitle": "変数を追加", "xpack.uiActionsEnhanced.drilldowns.urlDrilldownCollectConfig.encodeDescription": "有効な場合、URLはパーセントエンコーディングを使用してエスケープされます", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 30da649ff153c..ef6d8f9707553 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -22885,10 +22885,8 @@ "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.helpText": "向下钻取允许您定义与面板交互的新行为。您可以添加多个操作并覆盖默认筛选。", "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.hideHelpButtonLabel": "隐藏", "xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.viewDocsLinkLabel": "查看文档", - "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.createDrilldownButtonLabel": "创建向下钻取", "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.createDrilldownTitle": "创建向下钻取", "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.deleteDrilldownButtonLabel": "删除向下钻取", - "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.editDrilldownButtonLabel": "保存", "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.editDrilldownTitle": "编辑向下钻取", "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.insufficientLicenseLevelError": "许可证级别不够", "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.invalidDrilldownType": "向下钻取类型 {type} 不存在", @@ -22903,15 +22901,6 @@ "xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsDeletedTitle": "{n} 个向下钻取已删除", "xpack.uiActionsEnhanced.drilldowns.components.FlyoutFrame.BackButtonLabel": "返回", "xpack.uiActionsEnhanced.drilldowns.components.FlyoutFrame.CloseButtonLabel": "关闭", - "xpack.uiActionsEnhanced.drilldowns.components.FlyoutListManageDrilldowns.manageDrilldownsTitle": "管理向下钻取", - "xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.drilldownAction": "操作", - "xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.nameOfDrilldown": "名称", - "xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.untitledDrilldown": "未命名向下钻取", - "xpack.uiActionsEnhanced.drilldowns.components.FormDrilldownWizard.getMoreActionsLinkLabel": "获取更多的操作", - "xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.createDrilldownButtonLabel": "新建", - "xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.deleteDrilldownsButtonLabel": "删除 ({count})", - "xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.editDrilldownButtonLabel": "编辑", - "xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.selectThisDrilldownCheckboxLabel": "选择此向下钻取", "xpack.uiActionsEnhanced.drilldowns.urlDrilldownCollectConfig.additionalOptions": "其他选项", "xpack.uiActionsEnhanced.drilldowns.urlDrilldownCollectConfig.addVariableButtonTitle": "添加变量", "xpack.uiActionsEnhanced.drilldowns.urlDrilldownCollectConfig.encodeDescription": "如果启用,将使用百分比编码转义 URL", diff --git a/x-pack/plugins/ui_actions_enhanced/public/components/action_factory_picker/action_factory_picker.tsx b/x-pack/plugins/ui_actions_enhanced/public/components/action_factory_picker/action_factory_picker.tsx new file mode 100644 index 0000000000000..dcf99d4001797 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/components/action_factory_picker/action_factory_picker.tsx @@ -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 React from 'react'; +import { ActionFactory, BaseActionFactoryContext } from '../../dynamic_actions'; +import { PresentablePicker, Item } from '../presentable_picker'; + +export interface ActionFactoryPickerProps { + actionFactories: ActionFactory[]; + context: unknown; + onSelect: (actionFactory: ActionFactory) => void; +} + +export const ActionFactoryPicker: React.FC = ({ + actionFactories, + context, + onSelect, +}) => { + const items = React.useMemo(() => { + return actionFactories.map((actionFactory) => { + const item: Item = { + id: actionFactory.id, + order: actionFactory.order, + getDisplayName: (ctx: unknown) => + actionFactory.getDisplayName(ctx as BaseActionFactoryContext), + getIconType: (ctx: unknown) => actionFactory.getIconType(ctx as BaseActionFactoryContext), + getDisplayNameTooltip: () => '', + isCompatible: (ctx: unknown) => actionFactory.isCompatible(ctx as BaseActionFactoryContext), + MenuItem: actionFactory.MenuItem, + isBeta: actionFactory.isBeta, + isLicenseCompatible: actionFactory.isCompatibleLicense(), + }; + return item; + }); + }, [actionFactories]); + + const handleSelect = React.useCallback( + (id: string) => { + if (!onSelect) return; + const actionFactory = actionFactories.find((af) => af.id === id); + if (!actionFactory) return; + onSelect(actionFactory); + }, + [onSelect, actionFactories] + ); + + return ; +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/index.ts b/x-pack/plugins/ui_actions_enhanced/public/components/action_factory_picker/index.ts similarity index 85% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/index.ts rename to x-pack/plugins/ui_actions_enhanced/public/components/action_factory_picker/index.ts index 8c6527e90c709..3d7ffed301859 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/index.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/components/action_factory_picker/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export * from './flyout_drilldown_wizard'; +export * from './action_factory_picker'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/components/action_wizard/action_wizard.tsx b/x-pack/plugins/ui_actions_enhanced/public/components/action_wizard/action_wizard.tsx index 1caef68b7e5e8..049adbd09e84e 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/components/action_wizard/action_wizard.tsx +++ b/x-pack/plugins/ui_actions_enhanced/public/components/action_wizard/action_wizard.tsx @@ -99,23 +99,29 @@ export const ActionWizard: React.FC = ({ triggerPickerDocsLink, }) => { // auto pick action factory if there is only 1 available - if ( - !currentActionFactory && - actionFactories.length === 1 && - actionFactories[0].isCompatibleLicense() - ) { - onActionFactoryChange(actionFactories[0]); - } + React.useEffect(() => { + if ( + !currentActionFactory && + actionFactories.length === 1 && + actionFactories[0].isCompatibleLicense() + ) { + onActionFactoryChange(actionFactories[0]); + } + }, [currentActionFactory, actionFactories, actionFactories.length, onActionFactoryChange]); // auto pick selected trigger if none is picked - if (currentActionFactory && !((context.triggers?.length ?? 0) > 0)) { - const actionTriggers = getTriggersForActionFactory(currentActionFactory, triggers); - if (actionTriggers.length > 0) { - onSelectedTriggersChange([actionTriggers[0]]); + React.useEffect(() => { + if (currentActionFactory && !((context.triggers?.length ?? 0) > 0)) { + const actionTriggers = getTriggersForActionFactory(currentActionFactory, triggers); + if (actionTriggers.length > 0) { + onSelectedTriggersChange([actionTriggers[0]]); + } } - } + }, [currentActionFactory, triggers, context.triggers?.length, onSelectedTriggersChange]); + + if (currentActionFactory) { + if (!config) return null; - if (currentActionFactory && config) { const allTriggers = getTriggersForActionFactory(currentActionFactory, triggers); return ( = ({ { - onActionFactoryChange(actionFactory); - }} + onActionFactorySelected={onActionFactoryChange} /> ); }; diff --git a/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/i18n.ts b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/i18n.ts new file mode 100644 index 0000000000000..36ca55901950f --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/i18n.ts @@ -0,0 +1,29 @@ +/* + * 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'; + +export const txtBetaActionFactoryLabel = i18n.translate( + 'xpack.uiActionsEnhanced.components.actionWizard.betaActionLabel', + { + defaultMessage: `Beta`, + } +); + +export const txtBetaActionFactoryTooltip = i18n.translate( + 'xpack.uiActionsEnhanced.components.actionWizard.betaActionTooltip', + { + defaultMessage: `This action is in beta and is subject to change. The design and code is less mature than official GA features and is being provided as-is with no warranties. Beta features are not subject to the support SLA of official GA features. Please help us by reporting any bugs or providing other feedback.`, + } +); + +export const txtInsufficientLicenseLevel = i18n.translate( + 'xpack.uiActionsEnhanced.components.actionWizard.insufficientLicenseLevelTooltip', + { + defaultMessage: 'Insufficient license level', + } +); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/index.ts b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/index.ts similarity index 83% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/index.ts rename to x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/index.ts index cd324619b79b0..0259ac6556e64 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/index.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export * from './flyout_list_manage_drilldowns'; +export * from './presentable_picker'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker.stories.tsx b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker.stories.tsx new file mode 100644 index 0000000000000..521d16ad579c1 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker.stories.tsx @@ -0,0 +1,152 @@ +/* + * 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 React from 'react'; +import { storiesOf } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { PresentablePicker } from './presentable_picker'; + +storiesOf('components/PresentablePicker', module) + .add('One item', () => ( + 'Go to URL', + getIconType: () => 'link', + getDisplayNameTooltip: () => '', + order: 10, + isCompatible: async (context?: object) => true, + }, + ]} + context={{}} + onSelect={action('onSelect')} + /> + )) + .add('Items are sorted', () => ( + 'Item 2', + getIconType: () => 'link', + getDisplayNameTooltip: () => '', + order: 1, + isCompatible: async (context?: object) => true, + }, + { + id: 'item1', + getDisplayName: () => 'Item 1', + getIconType: () => 'link', + getDisplayNameTooltip: () => '', + order: 2, + isCompatible: async (context?: object) => true, + }, + ]} + context={{}} + onSelect={action('onSelect')} + /> + )) + .add('Items are sorted - 2', () => ( + 'Item 1', + getIconType: () => 'link', + getDisplayNameTooltip: () => '', + order: 2, + isCompatible: async (context?: object) => true, + }, + { + id: 'item2', + getDisplayName: () => 'Item 2', + getIconType: () => 'link', + getDisplayNameTooltip: () => '', + order: 1, + isCompatible: async (context?: object) => true, + }, + ]} + context={{}} + onSelect={action('onSelect')} + /> + )) + .add('Two items', () => ( + 'Go to URL', + getIconType: () => 'link', + getDisplayNameTooltip: () => '', + order: 2, + isCompatible: async (context?: object) => true, + }, + { + id: 'DASHBOARD', + getDisplayName: () => 'Go to Dashboard', + getIconType: () => 'dashboardApp', + getDisplayNameTooltip: () => '', + order: 1, + isCompatible: async (context?: object) => true, + }, + ]} + context={{}} + onSelect={action('onSelect')} + /> + )) + .add('Beta badge', () => ( + 'Go to URL', + getIconType: () => 'link', + getDisplayNameTooltip: () => '', + order: 2, + isCompatible: async (context?: object) => true, + isBeta: true, + }, + { + id: 'DASHBOARD', + getDisplayName: () => 'Go to Dashboard', + getIconType: () => 'dashboardApp', + getDisplayNameTooltip: () => '', + order: 1, + isCompatible: async (context?: object) => true, + }, + ]} + context={{}} + onSelect={action('onSelect')} + /> + )) + .add('Incompatible license', () => ( + 'Go to URL', + getIconType: () => 'link', + getDisplayNameTooltip: () => '', + order: 2, + isCompatible: async (context?: object) => true, + isBeta: true, + isLicenseCompatible: false, + }, + { + id: 'DASHBOARD', + getDisplayName: () => 'Go to Dashboard', + getIconType: () => 'dashboardApp', + getDisplayNameTooltip: () => '', + order: 1, + isCompatible: async (context?: object) => true, + }, + ]} + context={{}} + onSelect={action('onSelect')} + /> + )); diff --git a/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker.tsx b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker.tsx new file mode 100644 index 0000000000000..72f9e5aa0bd4a --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker.tsx @@ -0,0 +1,57 @@ +/* + * 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 React from 'react'; +import { EuiFlexGroup } from '@elastic/eui'; +import { PresentablePickerItem, Item } from './presentable_picker_item'; + +export { Item } from './presentable_picker_item'; + +export interface PresentablePickerProps { + items: Item[]; + context: unknown; + onSelect: (itemId: string) => void; +} + +export const TEST_SUBJ_ACTION_FACTORY_ITEM = 'actionFactoryItem'; + +// The below style is applied to fix Firefox rendering bug. +// See: https://github.com/elastic/kibana/pull/61219/#pullrequestreview-402903330 +const firefoxBugFix = { + willChange: 'opacity', +}; + +const sort = (f1: Item, f2: Item): number => f2.order - f1.order; + +export const PresentablePicker: React.FC = ({ + items, + context, + onSelect, +}) => { + /** + * Make sure items with incompatible license are at the end. + */ + const itemsSorted = React.useMemo(() => { + const compatible = items.filter((f) => f.isLicenseCompatible ?? true); + const incompatible = items.filter((f) => !(f.isLicenseCompatible ?? true)); + return [...compatible.sort(sort), ...incompatible.sort(sort)]; + }, [items]); + + if (items.length === 0) { + // This is not user facing, as it would be impossible to get into this state + // just leaving for dev purposes for troubleshooting. + return
No action factories to pick from.
; + } + + return ( + + {itemsSorted.map((item) => ( + + ))} + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker_item.tsx b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker_item.tsx new file mode 100644 index 0000000000000..7d9232dc793ef --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/presentable_picker_item.tsx @@ -0,0 +1,63 @@ +/* + * 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 React from 'react'; +import { EuiFlexItem, EuiIcon, EuiKeyPadMenuItem, EuiToolTip } from '@elastic/eui'; +import { + txtBetaActionFactoryLabel, + txtBetaActionFactoryTooltip, + txtInsufficientLicenseLevel, +} from './i18n'; +import { UiActionsPresentable as Presentable } from '../../../../../../src/plugins/ui_actions/public'; + +import './styles.scss'; + +export interface Item extends Presentable { + isLicenseCompatible?: boolean; + isBeta?: boolean; +} + +export interface PresentablePickerItemProps { + item: Item; + context: unknown; + onSelect: (itemId: string) => void; +} + +export const TEST_SUBJ_PRESENTABLE_ITEM = 'actionFactoryItem'; + +export const PresentablePickerItem: React.FC = ({ + item, + context, + onSelect, +}) => { + const isLicenseCompatible = item.isLicenseCompatible ?? true; + const showTooltip = !isLicenseCompatible; + + let content = ( + onSelect(item.id)} + disabled={!isLicenseCompatible} + betaBadgeLabel={item.isBeta ? txtBetaActionFactoryLabel : undefined} + betaBadgeTooltipContent={item.isBeta ? txtBetaActionFactoryTooltip : undefined} + > + {item.getIconType(context) && } + + ); + + if (showTooltip) { + content = {content}; + } + + return ( + + {content} + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/styles.scss b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/styles.scss new file mode 100644 index 0000000000000..01f05ffd53576 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/components/presentable_picker/styles.scss @@ -0,0 +1,5 @@ +.auaPresentablePicker__item { + .euiKeyPadMenuItem__label { + height: #{$euiSizeXL}; + } +} diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.stories.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.stories.tsx deleted file mode 100644 index 4249e108e5f5b..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.stories.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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 * as React from 'react'; -import { EuiFlyout } from '@elastic/eui'; -import { storiesOf } from '@storybook/react'; -import { StubBrowserStorage } from '@kbn/test/jest'; -import { createFlyoutManageDrilldowns } from './connected_flyout_manage_drilldowns'; -import { mockActionFactories } from '../../../components/action_wizard/test_data'; -import { Storage } from '../../../../../../../src/plugins/kibana_utils/public'; -import { mockDynamicActionManager } from './test_data'; - -const FlyoutManageDrilldowns = createFlyoutManageDrilldowns({ - actionFactories: mockActionFactories, - storage: new Storage(new StubBrowserStorage()), - toastService: { - addError: (...args: any[]) => { - alert(JSON.stringify(args)); - }, - addSuccess: (...args: any[]) => { - alert(JSON.stringify(args)); - }, - } as any, - getTrigger: (triggerId) => ({ - id: triggerId, - }), -}); - -storiesOf('components/FlyoutManageDrilldowns', module) - .add('default (3 triggers)', () => ( - {}}> - - - )) - .add('Only filter is supported', () => ( - {}}> - - - )); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.test.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.test.tsx deleted file mode 100644 index 12e9b86117a11..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.test.tsx +++ /dev/null @@ -1,324 +0,0 @@ -/* - * 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 React from 'react'; -import { fireEvent, render, waitFor, cleanup } from '@testing-library/react'; -import { createFlyoutManageDrilldowns } from './connected_flyout_manage_drilldowns'; -import { - mockGetTriggerInfo, - mockSupportedTriggers, - mockActionFactories, -} from '../../../components/action_wizard/test_data'; -import { StubBrowserStorage } from '@kbn/test/jest'; -import { Storage } from '../../../../../../../src/plugins/kibana_utils/public'; -import { mockDynamicActionManager } from './test_data'; -import { TEST_SUBJ_DRILLDOWN_ITEM } from '../list_manage_drilldowns'; -import { WELCOME_MESSAGE_TEST_SUBJ } from '../drilldown_hello_bar'; -import { coreMock } from '../../../../../../../src/core/public/mocks'; -import { NotificationsStart } from 'kibana/public'; -import { toastDrilldownsCRUDError } from '../../hooks/i18n'; - -jest.mock('@elastic/eui/lib/services/accessibility/html_id_generator', () => ({ - htmlIdGenerator: () => () => `id-${Math.random()}`, -})); - -const storage = new Storage(new StubBrowserStorage()); -const toasts = coreMock.createStart().notifications.toasts; -const FlyoutManageDrilldowns = createFlyoutManageDrilldowns({ - actionFactories: mockActionFactories, - storage: new Storage(new StubBrowserStorage()), - toastService: toasts, - getTrigger: mockGetTriggerInfo, -}); - -beforeEach(() => { - storage.clear(); - mockDynamicActionManager.state.set({ ...mockDynamicActionManager.state.get(), events: [] }); - (toasts as jest.Mocked).addSuccess.mockClear(); - (toasts as jest.Mocked).addError.mockClear(); -}); - -test('Allows to manage drilldowns', async () => { - const screen = render( - - ); - - // wait for initial render. It is async because resolving compatible action factories is async - await waitFor(() => expect(screen.getByText(/Manage Drilldowns/i)).toBeVisible()); - - // no drilldowns in the list - expect(screen.queryAllByTestId(TEST_SUBJ_DRILLDOWN_ITEM)).toHaveLength(0); - - fireEvent.click(screen.getByText(/Create new/i)); - - let [createHeading] = screen.getAllByText(/Create Drilldown/i); - let createButton = screen.getByRole('button', { name: /Create Drilldown/i }); - expect(createHeading).toBeVisible(); - expect(screen.getByLabelText(/Back/i)).toBeVisible(); - - expect(createButton).toBeDisabled(); - - // input drilldown name - const name = 'Test name'; - fireEvent.change(screen.getByLabelText(/name/i), { - target: { value: name }, - }); - - // select URL one - fireEvent.click(screen.getByText(/Go to URL/i)); - - // Input url - const URL = 'https://elastic.co'; - fireEvent.change(screen.getByLabelText(/url/i), { - target: { value: URL }, - }); - - [createHeading] = screen.getAllByText(/Create Drilldown/i); - createButton = screen.getByRole('button', { name: /Create Drilldown/i }); - - expect(createButton).toBeEnabled(); - fireEvent.click(createButton); - - expect(screen.getByText(/Manage Drilldowns/i)).toBeVisible(); - - await waitFor(() => expect(screen.queryAllByTestId(TEST_SUBJ_DRILLDOWN_ITEM)).toHaveLength(1)); - expect(screen.getByText(name)).toBeVisible(); - const editButton = screen.getByText(/edit/i); - fireEvent.click(editButton); - - expect(screen.getByText(/Edit Drilldown/i)).toBeVisible(); - // check that wizard is prefilled with current drilldown values - expect(screen.getByLabelText(/name/i)).toHaveValue(name); - expect(screen.getByLabelText(/url/i)).toHaveValue(URL); - - // input new drilldown name - const newName = 'New drilldown name'; - fireEvent.change(screen.getByLabelText(/name/i), { - target: { value: newName }, - }); - fireEvent.click(screen.getByText(/save/i)); - - expect(screen.getByText(/Manage Drilldowns/i)).toBeVisible(); - await waitFor(() => screen.getByText(newName)); - - // delete drilldown from edit view - fireEvent.click(screen.getByText(/edit/i)); - fireEvent.click(screen.getByText(/delete/i)); - - expect(screen.getByText(/Manage Drilldowns/i)).toBeVisible(); - await waitFor(() => expect(screen.queryAllByTestId(TEST_SUBJ_DRILLDOWN_ITEM)).toHaveLength(0)); -}); - -test('Can delete multiple drilldowns', async () => { - const screen = render( - - ); - // wait for initial render. It is async because resolving compatible action factories is async - await waitFor(() => expect(screen.getByText(/Manage Drilldowns/i)).toBeVisible()); - - const createDrilldown = async () => { - const oldCount = screen.queryAllByTestId(TEST_SUBJ_DRILLDOWN_ITEM).length; - fireEvent.click(screen.getByText(/Create new/i)); - fireEvent.change(screen.getByLabelText(/name/i), { - target: { value: 'test' }, - }); - fireEvent.click(screen.getByText(/Go to URL/i)); - fireEvent.change(screen.getByLabelText(/url/i), { - target: { value: 'https://elastic.co' }, - }); - fireEvent.click(screen.getAllByText(/Create Drilldown/i)[1]); - await waitFor(() => - expect(screen.queryAllByTestId(TEST_SUBJ_DRILLDOWN_ITEM)).toHaveLength(oldCount + 1) - ); - }; - - await createDrilldown(); - await createDrilldown(); - await createDrilldown(); - - const checkboxes = screen.getAllByLabelText(/Select this drilldown/i); - expect(checkboxes).toHaveLength(3); - checkboxes.forEach((checkbox) => fireEvent.click(checkbox)); - expect(screen.queryByText(/Create/i)).not.toBeInTheDocument(); - fireEvent.click(screen.getByText(/Delete \(3\)/i)); - - await waitFor(() => expect(screen.queryAllByTestId(TEST_SUBJ_DRILLDOWN_ITEM)).toHaveLength(0)); -}); - -test('Create only mode', async () => { - const onClose = jest.fn(); - const screen = render( - - ); - // wait for initial render. It is async because resolving compatible action factories is async - await waitFor(() => expect(screen.getAllByText(/Create/i).length).toBeGreaterThan(0)); - fireEvent.change(screen.getByLabelText(/name/i), { - target: { value: 'test' }, - }); - fireEvent.click(screen.getByText(/Go to URL/i)); - fireEvent.change(screen.getByLabelText(/url/i), { - target: { value: 'https://elastic.co' }, - }); - fireEvent.click(screen.getAllByText(/Create Drilldown/i)[1]); - - await waitFor(() => expect(toasts.addSuccess).toBeCalled()); - expect(onClose).toBeCalled(); - expect(await mockDynamicActionManager.state.get().events.length).toBe(1); -}); - -test('After switching between action factories state is restored', async () => { - const screen = render( - - ); - // wait for initial render. It is async because resolving compatible action factories is async - await waitFor(() => expect(screen.getAllByText(/Create/i).length).toBeGreaterThan(0)); - fireEvent.change(screen.getByLabelText(/name/i), { - target: { value: 'test' }, - }); - fireEvent.click(screen.getByText(/Go to URL/i)); - fireEvent.change(screen.getByLabelText(/url/i), { - target: { value: 'https://elastic.co' }, - }); - - // change to dashboard - fireEvent.click(screen.getByText(/change/i)); - fireEvent.click(screen.getByText(/Go to Dashboard/i)); - - // change back to url - fireEvent.click(screen.getByText(/change/i)); - fireEvent.click(screen.getByText(/Go to URL/i)); - - expect(screen.getByLabelText(/url/i)).toHaveValue('https://elastic.co'); - expect(screen.getByLabelText(/name/i)).toHaveValue('test'); - - fireEvent.click(screen.getAllByText(/Create Drilldown/i)[1]); - await waitFor(() => expect(toasts.addSuccess).toBeCalled()); - expect(await (mockDynamicActionManager.state.get().events[0].action.config as any).url).toBe( - 'https://elastic.co' - ); -}); - -test.todo("Error when can't fetch drilldown list"); - -test("Error when can't save drilldown changes", async () => { - const error = new Error('Oops'); - jest.spyOn(mockDynamicActionManager, 'createEvent').mockImplementationOnce(async () => { - throw error; - }); - const screen = render( - - ); - // wait for initial render. It is async because resolving compatible action factories is async - await waitFor(() => expect(screen.getByText(/Manage Drilldowns/i)).toBeVisible()); - fireEvent.click(screen.getByText(/Create new/i)); - fireEvent.change(screen.getByLabelText(/name/i), { - target: { value: 'test' }, - }); - fireEvent.click(screen.getByText(/Go to URL/i)); - fireEvent.change(screen.getByLabelText(/url/i), { - target: { value: 'https://elastic.co' }, - }); - fireEvent.click(screen.getAllByText(/Create Drilldown/i)[1]); - await waitFor(() => - expect(toasts.addError).toBeCalledWith(error, { title: toastDrilldownsCRUDError }) - ); -}); - -test('Should show drilldown welcome message. Should be able to dismiss it', async () => { - let screen = render( - - ); - - // wait for initial render. It is async because resolving compatible action factories is async - await waitFor(() => expect(screen.getByText(/Manage Drilldowns/i)).toBeVisible()); - - expect(screen.getByTestId(WELCOME_MESSAGE_TEST_SUBJ)).toBeVisible(); - fireEvent.click(screen.getByText(/hide/i)); - expect(screen.queryByTestId(WELCOME_MESSAGE_TEST_SUBJ)).toBeNull(); - cleanup(); - - screen = render( - - ); - // wait for initial render. It is async because resolving compatible action factories is async - await waitFor(() => expect(screen.getByText(/Manage Drilldowns/i)).toBeVisible()); - expect(screen.queryByTestId(WELCOME_MESSAGE_TEST_SUBJ)).toBeNull(); -}); - -test('Drilldown type is not shown if no supported trigger', async () => { - const screen = render( - - ); - // wait for initial render. It is async because resolving compatible action factories is async - await waitFor(() => expect(screen.getAllByText(/Create/i).length).toBeGreaterThan(0)); - expect(screen.queryByText(/Go to Dashboard/i)).not.toBeInTheDocument(); // dashboard action is not visible, because APPLY_FILTER_TRIGGER not supported - expect(screen.getByTestId('selectedActionFactory-Url')).toBeInTheDocument(); -}); - -test('Can pick a trigger', async () => { - const screen = render( - - ); - // wait for initial render. It is async because resolving compatible action factories is async - await waitFor(() => expect(screen.getAllByText(/Create/i).length).toBeGreaterThan(0)); - - // input drilldown name - const name = 'Test name'; - fireEvent.change(screen.getByLabelText(/name/i), { - target: { value: name }, - }); - - // select URL one - fireEvent.click(screen.getByText(/Go to URL/i)); - - // Input url - const URL = 'https://elastic.co'; - fireEvent.change(screen.getByLabelText(/url/i), { - target: { value: URL }, - }); - - fireEvent.click(screen.getByTestId('triggerPicker-SELECT_RANGE_TRIGGER').querySelector('input')!); - - const [, createButton] = screen.getAllByText(/Create Drilldown/i); - - expect(createButton).toBeEnabled(); - fireEvent.click(createButton); - await waitFor(() => expect(toasts.addSuccess).toBeCalled()); - expect(mockDynamicActionManager.state.get().events[0].triggers).toEqual(['SELECT_RANGE_TRIGGER']); -}); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.tsx deleted file mode 100644 index 9eed7cd428bdb..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/connected_flyout_manage_drilldowns.tsx +++ /dev/null @@ -1,245 +0,0 @@ -/* - * 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 React, { useState, useMemo } from 'react'; -import { ToastsStart } from 'kibana/public'; -import { intersection } from 'lodash'; -import { DrilldownWizardConfig, FlyoutDrilldownWizard } from '../flyout_drilldown_wizard'; -import { FlyoutListManageDrilldowns } from '../flyout_list_manage_drilldowns'; -import { IStorageWrapper } from '../../../../../../../src/plugins/kibana_utils/public'; -import { Trigger } from '../../../../../../../src/plugins/ui_actions/public'; -import { DrilldownListItem } from '../list_manage_drilldowns'; -import { insufficientLicenseLevel, invalidDrilldownType } from './i18n'; -import { - ActionFactory, - BaseActionConfig, - BaseActionFactoryContext, - DynamicActionManager, - SerializedEvent, -} from '../../../dynamic_actions'; -import { useWelcomeMessage } from '../../hooks/use_welcome_message'; -import { useCompatibleActionFactoriesForCurrentContext } from '../../hooks/use_compatible_action_factories_for_current_context'; -import { useDrilldownsStateManager } from '../../hooks/use_drilldown_state_manager'; -import { ActionFactoryPlaceContext } from '../types'; - -interface ConnectedFlyoutManageDrilldownsProps< - ActionFactoryContext extends BaseActionFactoryContext = BaseActionFactoryContext -> { - dynamicActionManager: DynamicActionManager; - viewMode?: 'create' | 'manage'; - onClose?: () => void; - - /** - * List of possible triggers in current context - */ - triggers: string[]; - - /** - * Extra action factory context passed into action factories CollectConfig, getIconType, getDisplayName and etc... - */ - placeContext?: ActionFactoryPlaceContext; -} - -/** - * Represent current state (route) of FlyoutManageDrilldowns - */ -enum Routes { - Manage = 'manage', - Create = 'create', - Edit = 'edit', -} - -export function createFlyoutManageDrilldowns({ - actionFactories: allActionFactories, - storage, - toastService, - docsLink, - triggerPickerDocsLink, - getTrigger, -}: { - actionFactories: ActionFactory[]; - getTrigger: (triggerId: string) => Trigger; - storage: IStorageWrapper; - toastService: ToastsStart; - docsLink?: string; - triggerPickerDocsLink?: string; -}): React.FC { - const allActionFactoriesById = allActionFactories.reduce((acc, next) => { - acc[next.id] = next; - return acc; - }, {} as Record); - - return (props: ConnectedFlyoutManageDrilldownsProps) => { - const isCreateOnly = props.viewMode === 'create'; - - const factoryContext: BaseActionFactoryContext = useMemo( - () => ({ ...props.placeContext, triggers: props.triggers }), - [props.placeContext, props.triggers] - ); - const actionFactories = useCompatibleActionFactoriesForCurrentContext( - allActionFactories, - factoryContext - ); - - const [route, setRoute] = useState( - () => (isCreateOnly ? Routes.Create : Routes.Manage) // initial state is different depending on `viewMode` - ); - const [currentEditId, setCurrentEditId] = useState(null); - - const [shouldShowWelcomeMessage, onHideWelcomeMessage] = useWelcomeMessage(storage); - - const { - drilldowns, - createDrilldown, - editDrilldown, - deleteDrilldown, - } = useDrilldownsStateManager(props.dynamicActionManager, toastService); - - /** - * isCompatible promise is not yet resolved. - * Skip rendering until it is resolved - */ - if (!actionFactories) return null; - /** - * Drilldowns are not fetched yet or error happened during fetching - * In case of error user is notified with toast - */ - if (!drilldowns) return null; - - /** - * Needed for edit mode to prefill wizard fields with data from current edited drilldown - */ - function resolveInitialDrilldownWizardConfig(): DrilldownWizardConfig | undefined { - if (route !== Routes.Edit) return undefined; - if (!currentEditId) return undefined; - const drilldownToEdit = drilldowns?.find((d) => d.eventId === currentEditId); - if (!drilldownToEdit) return undefined; - - return { - actionFactory: allActionFactoriesById[drilldownToEdit.action.factoryId], - actionConfig: drilldownToEdit.action.config as BaseActionConfig, - name: drilldownToEdit.action.name, - selectedTriggers: (drilldownToEdit.triggers ?? []) as string[], - }; - } - - /** - * Maps drilldown to list item view model - */ - function mapToDrilldownToDrilldownListItem(drilldown: SerializedEvent): DrilldownListItem { - const actionFactory = allActionFactoriesById[drilldown.action.factoryId]; - const drilldownFactoryContext: BaseActionFactoryContext = { - ...props.placeContext, - triggers: drilldown.triggers as string[], - }; - return { - id: drilldown.eventId, - drilldownName: drilldown.action.name, - actionName: - actionFactory?.getDisplayName(drilldownFactoryContext) ?? drilldown.action.factoryId, - icon: actionFactory?.getIconType(drilldownFactoryContext), - error: !actionFactory - ? invalidDrilldownType(drilldown.action.factoryId) // this shouldn't happen for the end user, but useful during development - : !actionFactory.isCompatibleLicense() - ? insufficientLicenseLevel - : undefined, - triggers: drilldown.triggers.map((trigger) => getTrigger(trigger as string)), - }; - } - - switch (route) { - case Routes.Create: - case Routes.Edit: - return ( - setRoute(Routes.Manage)} - onSubmit={({ actionConfig, actionFactory, name, selectedTriggers }) => { - if (route === Routes.Create) { - createDrilldown( - { - name, - config: actionConfig, - factoryId: actionFactory.id, - }, - selectedTriggers - ); - } else { - editDrilldown( - currentEditId!, - { - name, - config: actionConfig, - factoryId: actionFactory.id, - }, - selectedTriggers - ); - } - - if (isCreateOnly) { - if (props.onClose) { - props.onClose(); - } - } else { - setRoute(Routes.Manage); - } - - setCurrentEditId(null); - }} - onDelete={() => { - deleteDrilldown(currentEditId!); - setRoute(Routes.Manage); - setCurrentEditId(null); - }} - actionFactoryPlaceContext={props.placeContext} - initialDrilldownWizardConfig={resolveInitialDrilldownWizardConfig()} - supportedTriggers={props.triggers} - getTrigger={getTrigger} - /> - ); - - case Routes.Manage: - default: - // show trigger column in case if there is more then 1 possible trigger in current context - const showTriggerColumn = - intersection( - props.triggers, - actionFactories - .map((factory) => factory.supportedTriggers()) - .reduce((res, next) => res.concat(next), []) - ).length > 1; - return ( - { - setCurrentEditId(null); - deleteDrilldown(ids); - }} - onEdit={(id) => { - setCurrentEditId(id); - setRoute(Routes.Edit); - }} - onCreate={() => { - setCurrentEditId(null); - setRoute(Routes.Create); - }} - onClose={props.onClose} - showTriggerColumn={showTriggerColumn} - /> - ); - } - }; -} diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/i18n.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/i18n.ts deleted file mode 100644 index e93ff84e709d7..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/i18n.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * 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'; - -export const insufficientLicenseLevel = i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.insufficientLicenseLevelError', - { - defaultMessage: 'Insufficient license level', - description: - 'User created drilldown with higher license type, but then downgraded the license. This error is shown in the list near created drilldown', - } -); - -export const invalidDrilldownType = (type: string) => - i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.invalidDrilldownType', - { - defaultMessage: "Drilldown type {type} doesn't exist", - values: { - type, - }, - } - ); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/test_data.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/test_data.ts deleted file mode 100644 index cb039587b5b08..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/test_data.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* - * 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 uuid from 'uuid'; -import type { PublicMethodsOf } from '@kbn/utility-types'; -import { - UiActionsEnhancedDynamicActionManager as DynamicActionManager, - UiActionsEnhancedDynamicActionManagerState as DynamicActionManagerState, - UiActionsEnhancedSerializedAction, -} from '../../../index'; -import { createStateContainer } from '../../../../../../../src/plugins/kibana_utils/common'; - -class MockDynamicActionManager implements PublicMethodsOf { - public readonly state = createStateContainer({ - isFetchingEvents: false, - fetchCount: 0, - events: [], - }); - - async count() { - return this.state.get().events.length; - } - - async list() { - return this.state.get().events; - } - - async createEvent(action: UiActionsEnhancedSerializedAction, triggers: string[]) { - const event = { - action, - triggers, - eventId: uuid(), - }; - const state = this.state.get(); - this.state.set({ - ...state, - events: [...state.events, event], - }); - } - - async deleteEvents(eventIds: string[]) { - const state = this.state.get(); - let events = state.events; - - eventIds.forEach((id) => { - events = events.filter((e) => e.eventId !== id); - }); - - this.state.set({ - ...state, - events, - }); - } - - async updateEvent( - eventId: string, - action: UiActionsEnhancedSerializedAction, - triggers: string[] - ) { - const state = this.state.get(); - const events = state.events; - const idx = events.findIndex((e) => e.eventId === eventId); - const event = { - eventId, - action, - triggers, - }; - - this.state.set({ - ...state, - events: [...events.slice(0, idx), event, ...events.slice(idx + 1)], - }); - } - - async deleteEvent() { - throw new Error('not implemented'); - } - - async start() {} - async stop() {} -} - -export const mockDynamicActionManager = (new MockDynamicActionManager() as unknown) as DynamicActionManager; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/flyout_drilldown_wizard.stories.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/flyout_drilldown_wizard.stories.tsx deleted file mode 100644 index b339fac85ba61..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/flyout_drilldown_wizard.stories.tsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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 * as React from 'react'; -import { EuiFlyout } from '@elastic/eui'; -import { storiesOf } from '@storybook/react'; -import { FlyoutDrilldownWizard } from './index'; -import { mockActionFactories } from '../../../components/action_wizard/test_data'; -import { Trigger } from '../../../../../../../src/plugins/ui_actions/public'; - -const otherProps = { - supportedTriggers: ['VALUE_CLICK_TRIGGER', 'SELECT_RANGE_TRIGGER', 'FILTER_TRIGGER'] as string[], - onClose: () => {}, - getTrigger: (id: string) => ({ id } as Trigger), -}; - -storiesOf('components/FlyoutDrilldownWizard', module) - .add('default', () => { - return ; - }) - .add('open in flyout - create', () => { - return ( - {}}> - - - ); - }) - .add('open in flyout - edit', () => { - return ( - {}}> - - - ); - }) - .add('open in flyout - edit, just 1 action type', () => { - return ( - {}}> - - - ); - }); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/flyout_drilldown_wizard.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/flyout_drilldown_wizard.tsx deleted file mode 100644 index daa895de9e46b..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/flyout_drilldown_wizard.tsx +++ /dev/null @@ -1,248 +0,0 @@ -/* - * 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 React, { useMemo, useState } from 'react'; -import { EuiButton, EuiSpacer } from '@elastic/eui'; -import { FormDrilldownWizard } from '../form_drilldown_wizard'; -import { FlyoutFrame } from '../flyout_frame'; -import { - txtCreateDrilldownButtonLabel, - txtCreateDrilldownTitle, - txtDeleteDrilldownButtonLabel, - txtEditDrilldownButtonLabel, - txtEditDrilldownTitle, -} from './i18n'; -import { DrilldownHelloBar } from '../drilldown_hello_bar'; -import { - ActionFactory, - BaseActionConfig, - BaseActionFactoryContext, -} from '../../../dynamic_actions'; -import { Trigger } from '../../../../../../../src/plugins/ui_actions/public'; -import { ActionFactoryPlaceContext } from '../types'; - -export interface DrilldownWizardConfig { - name: string; - actionFactory?: ActionFactory; - actionConfig?: ActionConfig; - selectedTriggers?: string[]; -} - -export interface FlyoutDrilldownWizardProps< - CurrentActionConfig extends BaseActionConfig = BaseActionConfig, - ActionFactoryContext extends BaseActionFactoryContext = BaseActionFactoryContext -> { - drilldownActionFactories: ActionFactory[]; - - onSubmit?: (drilldownWizardConfig: Required) => void; - onDelete?: () => void; - onClose?: () => void; - onBack?: () => void; - - mode?: 'create' | 'edit'; - initialDrilldownWizardConfig?: DrilldownWizardConfig; - - showWelcomeMessage?: boolean; - onWelcomeHideClick?: () => void; - - actionFactoryPlaceContext?: ActionFactoryPlaceContext; - - /** - * General overview of drilldowns - */ - docsLink?: string; - - /** - * Link that explains different triggers - */ - triggerPickerDocsLink?: string; - - getTrigger: (triggerId: string) => Trigger; - - /** - * List of possible triggers in current context - */ - supportedTriggers: string[]; -} - -function useWizardConfigState( - actionFactoryContext: BaseActionFactoryContext, - initialDrilldownWizardConfig?: DrilldownWizardConfig -): [ - DrilldownWizardConfig, - { - setName: (name: string) => void; - setActionConfig: (actionConfig: BaseActionConfig) => void; - setActionFactory: (actionFactory?: ActionFactory) => void; - setSelectedTriggers: (triggers?: string[]) => void; - } -] { - const [wizardConfig, setWizardConfig] = useState( - () => - initialDrilldownWizardConfig ?? { - name: '', - } - ); - const [actionConfigCache, setActionConfigCache] = useState>( - initialDrilldownWizardConfig?.actionFactory - ? { - [initialDrilldownWizardConfig.actionFactory - .id]: initialDrilldownWizardConfig.actionConfig!, - } - : {} - ); - - return [ - wizardConfig, - { - setName: (name: string) => { - setWizardConfig({ - ...wizardConfig, - name, - }); - }, - setActionConfig: (actionConfig: BaseActionConfig) => { - setWizardConfig({ - ...wizardConfig, - actionConfig, - }); - }, - setActionFactory: (actionFactory?: ActionFactory) => { - if (actionFactory) { - const actionConfig = (actionConfigCache[actionFactory.id] ?? - actionFactory.createConfig(actionFactoryContext)) as BaseActionConfig; - setWizardConfig({ - ...wizardConfig, - actionFactory, - actionConfig, - selectedTriggers: [], - }); - } else { - if (wizardConfig.actionFactory?.id) { - setActionConfigCache({ - ...actionConfigCache, - [wizardConfig.actionFactory.id]: wizardConfig.actionConfig!, - }); - } - - setWizardConfig({ - ...wizardConfig, - actionFactory: undefined, - actionConfig: undefined, - }); - } - }, - setSelectedTriggers: (selectedTriggers: string[] = []) => { - setWizardConfig({ - ...wizardConfig, - selectedTriggers, - }); - }, - }, - ]; -} - -export function FlyoutDrilldownWizard< - CurrentActionConfig extends BaseActionConfig = BaseActionConfig ->({ - onClose, - onBack, - onSubmit = () => {}, - initialDrilldownWizardConfig, - mode = 'create', - onDelete = () => {}, - showWelcomeMessage = true, - onWelcomeHideClick, - drilldownActionFactories, - actionFactoryPlaceContext, - docsLink, - triggerPickerDocsLink, - getTrigger, - supportedTriggers, -}: FlyoutDrilldownWizardProps) { - const [ - wizardConfig, - { setActionFactory, setActionConfig, setName, setSelectedTriggers }, - ] = useWizardConfigState( - { ...actionFactoryPlaceContext, triggers: supportedTriggers }, - initialDrilldownWizardConfig - ); - - const actionFactoryContext: BaseActionFactoryContext = useMemo( - () => ({ - ...actionFactoryPlaceContext, - triggers: wizardConfig.selectedTriggers ?? [], - }), - [actionFactoryPlaceContext, wizardConfig.selectedTriggers] - ); - - const isActionValid = ( - config: DrilldownWizardConfig - ): config is Required => { - if (!wizardConfig.name) return false; - if (!wizardConfig.actionFactory) return false; - if (!wizardConfig.actionConfig) return false; - if (!wizardConfig.selectedTriggers || wizardConfig.selectedTriggers.length === 0) return false; - - return wizardConfig.actionFactory.isConfigValid( - wizardConfig.actionConfig, - actionFactoryContext - ); - }; - - const footer = ( - { - if (isActionValid(wizardConfig)) { - onSubmit(wizardConfig); - } - }} - fill - isDisabled={!isActionValid(wizardConfig)} - data-test-subj={'drilldownWizardSubmit'} - > - {mode === 'edit' ? txtEditDrilldownButtonLabel : txtCreateDrilldownButtonLabel} - - ); - - return ( - - ) - } - > - - {mode === 'edit' && ( - <> - - - {txtDeleteDrilldownButtonLabel} - - - )} - - ); -} diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/flyout_list_manage_drilldowns.stories.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/flyout_list_manage_drilldowns.stories.tsx deleted file mode 100644 index 9a27dfad431b1..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/flyout_list_manage_drilldowns.stories.tsx +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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 * as React from 'react'; -import { EuiFlyout } from '@elastic/eui'; -import { storiesOf } from '@storybook/react'; -import { FlyoutListManageDrilldowns } from './flyout_list_manage_drilldowns'; - -storiesOf('components/FlyoutListManageDrilldowns', module).add('default', () => ( - {}}> - - -)); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/flyout_list_manage_drilldowns.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/flyout_list_manage_drilldowns.tsx deleted file mode 100644 index af5b687fb56a9..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/flyout_list_manage_drilldowns.tsx +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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 React from 'react'; -import { FlyoutFrame } from '../flyout_frame'; -import { DrilldownListItem, ListManageDrilldowns } from '../list_manage_drilldowns'; -import { txtManageDrilldowns } from './i18n'; -import { DrilldownHelloBar } from '../drilldown_hello_bar'; - -export interface FlyoutListManageDrilldownsProps { - docsLink?: string; - drilldowns: DrilldownListItem[]; - onClose?: () => void; - onCreate?: () => void; - onEdit?: (drilldownId: string) => void; - onDelete?: (drilldownIds: string[]) => void; - showWelcomeMessage?: boolean; - onWelcomeHideClick?: () => void; - showTriggerColumn?: boolean; -} - -export function FlyoutListManageDrilldowns({ - docsLink, - drilldowns, - onClose = () => {}, - onCreate, - onDelete, - onEdit, - showWelcomeMessage = true, - onWelcomeHideClick, - showTriggerColumn, -}: FlyoutListManageDrilldownsProps) { - return ( - - ) - } - > - - - ); -} diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.stories.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.stories.tsx deleted file mode 100644 index e5af260733bb4..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.stories.tsx +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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 * as React from 'react'; -import { storiesOf } from '@storybook/react'; -import { FormDrilldownWizard } from './index'; -import { Trigger } from '../../../../../../../src/plugins/ui_actions/public'; - -const otherProps = { - triggers: ['VALUE_CLICK_TRIGGER', 'SELECT_RANGE_TRIGGER', 'FILTER_TRIGGER'], - getTriggerInfo: (id: string) => ({ id } as Trigger), - onSelectedTriggersChange: () => {}, - actionFactoryContext: { triggers: [] as string[] }, -}; - -const DemoEditName: React.FC = () => { - const [name, setName] = React.useState(''); - - return ( - <> - {' '} -
name: {name}
- - ); -}; - -storiesOf('components/FormDrilldownWizard', module) - .add('default', () => { - return ; - }) - .add('[name=foobar]', () => { - return ; - }) - .add('can edit name', () => ); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.test.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.test.tsx deleted file mode 100644 index 2bcfc42c865c1..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.test.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/* - * 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 React from 'react'; -import { render } from 'react-dom'; -import { FormDrilldownWizard } from './form_drilldown_wizard'; -import { render as renderTestingLibrary, fireEvent } from '@testing-library/react'; -import { txtNameOfDrilldown } from './i18n'; -import { Trigger } from '../../../../../../../src/plugins/ui_actions/public'; - -const otherProps = { - actionFactoryContext: { triggers: [] as string[] }, - triggers: ['VALUE_CLICK_TRIGGER', 'SELECT_RANGE_TRIGGER', 'FILTER_TRIGGER'] as string[], - getTriggerInfo: (id: string) => ({ id } as Trigger), - onSelectedTriggersChange: () => {}, -}; - -describe('', () => { - test('renders without crashing', () => { - const div = document.createElement('div'); - render( {}} {...otherProps} />, div); - }); - - describe('[name=]', () => { - test('if name not provided, uses to empty string', () => { - const div = document.createElement('div'); - - render(, div); - - const input = div.querySelector('[data-test-subj="drilldownNameInput"]') as HTMLInputElement; - - expect(input?.value).toBe(''); - }); - - test('can set initial name input field value', () => { - const div = document.createElement('div'); - - render(, div); - - const input = div.querySelector('[data-test-subj="drilldownNameInput"]') as HTMLInputElement; - - expect(input?.value).toBe('foo'); - - render(, div); - - expect(input?.value).toBe('bar'); - }); - - test('fires onNameChange callback on name change', () => { - const onNameChange = jest.fn(); - const utils = renderTestingLibrary( - - ); - const input = utils.getByLabelText(txtNameOfDrilldown); - - expect(onNameChange).toHaveBeenCalledTimes(0); - - fireEvent.change(input, { target: { value: 'qux' } }); - - expect(onNameChange).toHaveBeenCalledTimes(1); - expect(onNameChange).toHaveBeenCalledWith('qux'); - - fireEvent.change(input, { target: { value: 'quxx' } }); - - expect(onNameChange).toHaveBeenCalledTimes(2); - expect(onNameChange).toHaveBeenCalledWith('quxx'); - }); - }); -}); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.tsx deleted file mode 100644 index 68cf6509d0059..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/form_drilldown_wizard.tsx +++ /dev/null @@ -1,143 +0,0 @@ -/* - * 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 React from 'react'; -import { EuiFieldText, EuiForm, EuiFormRow, EuiLink, EuiSpacer, EuiText } from '@elastic/eui'; -import { EuiCallOut } from '@elastic/eui'; -import { EuiCode } from '@elastic/eui'; -import { txtDrilldownAction, txtNameOfDrilldown, txtUntitledDrilldown } from './i18n'; -import { - ActionFactory, - BaseActionConfig, - BaseActionFactoryContext, -} from '../../../dynamic_actions'; -import { ActionWizard } from '../../../components/action_wizard'; -import { Trigger } from '../../../../../../../src/plugins/ui_actions/public'; -import { txtGetMoreActions } from './i18n'; - -const GET_MORE_ACTIONS_LINK = 'https://www.elastic.co/subscriptions'; - -const noopFn = () => {}; - -export interface FormDrilldownWizardProps< - ActionFactoryContext extends BaseActionFactoryContext = BaseActionFactoryContext -> { - name?: string; - onNameChange?: (name: string) => void; - - currentActionFactory?: ActionFactory; - onActionFactoryChange?: (actionFactory?: ActionFactory) => void; - actionFactoryContext: ActionFactoryContext; - - actionConfig?: BaseActionConfig; - onActionConfigChange?: (config: BaseActionConfig) => void; - - actionFactories?: ActionFactory[]; - - /** - * Trigger selection has changed - * @param triggers - */ - onSelectedTriggersChange: (triggers?: string[]) => void; - - getTriggerInfo: (triggerId: string) => Trigger; - - /** - * List of possible triggers in current context - */ - triggers: string[]; - - triggerPickerDocsLink?: string; -} - -export const FormDrilldownWizard: React.FC = ({ - name = '', - actionConfig, - currentActionFactory, - onNameChange = noopFn, - onActionConfigChange = noopFn, - onActionFactoryChange = noopFn, - actionFactories = [], - actionFactoryContext, - onSelectedTriggersChange, - getTriggerInfo, - triggers, - triggerPickerDocsLink, -}) => { - if (!triggers || !triggers.length) { - // Below callout is not translated, because this message is only for developers. - return ( - -

- No triggers provided in trigger prop. -

-
- ); - } - - const nameFragment = ( - - onNameChange(event.target.value)} - data-test-subj="drilldownNameInput" - /> - - ); - - const hasNotCompatibleLicenseFactory = () => - actionFactories?.some((f) => !f.isCompatibleLicense()); - - const renderGetMoreActionsLink = () => ( - - - {txtGetMoreActions} - - - ); - - const actionWizard = ( - 1 ? txtDrilldownAction : undefined} - fullWidth={true} - labelAppend={ - !currentActionFactory && hasNotCompatibleLicenseFactory() && renderGetMoreActionsLink() - } - > - onActionFactoryChange(actionFactory)} - onConfigChange={(config) => onActionConfigChange(config)} - context={actionFactoryContext} - onSelectedTriggersChange={onSelectedTriggersChange} - getTriggerInfo={getTriggerInfo} - triggers={triggers} - triggerPickerDocsLink={triggerPickerDocsLink} - /> - - ); - - return ( - <> - - {nameFragment} - - {actionWizard} - - - ); -}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/i18n.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/i18n.ts deleted file mode 100644 index 9b817917ba0e2..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/i18n.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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'; - -export const txtNameOfDrilldown = i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.nameOfDrilldown', - { - defaultMessage: 'Name', - } -); - -export const txtUntitledDrilldown = i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.untitledDrilldown', - { - defaultMessage: 'Untitled drilldown', - } -); - -export const txtDrilldownAction = i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.drilldownAction', - { - defaultMessage: 'Action', - } -); - -export const txtGetMoreActions = i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.FormDrilldownWizard.getMoreActionsLinkLabel', - { - defaultMessage: 'Get more actions', - } -); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/i18n.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/i18n.ts deleted file mode 100644 index 5985c3208c684..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/i18n.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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'; - -export const txtCreateDrilldown = i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.createDrilldownButtonLabel', - { - defaultMessage: 'Create new', - } -); - -export const txtEditDrilldown = i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.editDrilldownButtonLabel', - { - defaultMessage: 'Edit', - } -); - -export const txtDeleteDrilldowns = (count: number) => - i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.deleteDrilldownsButtonLabel', - { - defaultMessage: 'Delete ({count})', - values: { - count, - }, - } - ); - -export const txtSelectDrilldown = i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.selectThisDrilldownCheckboxLabel', - { - defaultMessage: 'Select this drilldown', - } -); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/list_manage_drilldowns.stories.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/list_manage_drilldowns.stories.tsx deleted file mode 100644 index ad19ee7797e78..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/list_manage_drilldowns.stories.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 * as React from 'react'; -import { storiesOf } from '@storybook/react'; -import { ListManageDrilldowns } from './list_manage_drilldowns'; - -storiesOf('components/ListManageDrilldowns', module).add('default', () => ( - -)); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/types.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/types.ts deleted file mode 100644 index a6134b4bb45bd..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/types.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * 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 { BaseActionFactoryContext } from '../../dynamic_actions'; - -/** - * Interface used as piece of ActionFactoryContext that is passed in from drilldown wizard component to action factories - * Omitted values are added inside the wizard and then full {@link BaseActionFactoryContext} passed into action factory methods - */ -export type ActionFactoryPlaceContext< - ActionFactoryContext extends BaseActionFactoryContext = BaseActionFactoryContext -> = Omit; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/README.md b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/README.md new file mode 100644 index 0000000000000..7d3916302b29d --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/README.md @@ -0,0 +1,12 @@ +# Drilldown Manager + +Drilldown Manager is the flyout that opens where drilldowns can be managed using +a CRUD UI. (It does not necessarily need to be a flyout, you can also embed it +directly on a page.) + +The main React component that this folder exports is ``, which +should normally be rendered in a flyout. + +A new instance of Drilldown Manager is rendered for every place where drilldowns +are used. For example, for each panel on the dashboard a separate new Drilldown +Manager is rendered in the flyout. diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/action_factory/action_factory.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/action_factory/action_factory.tsx new file mode 100644 index 0000000000000..4391254d0a8aa --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/action_factory/action_factory.tsx @@ -0,0 +1,132 @@ +/* + * 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 { + EuiBetaBadge, + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiFormRow, + EuiIcon, + EuiLink, + EuiText, +} from '@elastic/eui'; +import React from 'react'; +import { i18n } from '@kbn/i18n'; + +const txtDrilldownAction = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownForm.drilldownAction', + { + defaultMessage: 'Action', + } +); + +const txtGetMoreActions = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownForm.getMoreActionsLinkLabel', + { + defaultMessage: 'Get more actions', + } +); + +const txtBetaActionFactoryLabel = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownForm.betaActionLabel', + { + defaultMessage: `Beta`, + } +); + +const txtBetaActionFactoryTooltip = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownForm.betaActionTooltip', + { + defaultMessage: `This action is in beta and is subject to change. The design and code is less mature than official GA features and is being provided as-is with no warranties. Beta features are not subject to the support SLA of official GA features. Please help us by reporting any bugs or providing other feedback.`, + } +); + +const txtChangeButton = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownForm.changeButton', + { + defaultMessage: 'Change', + } +); + +const GET_MORE_ACTIONS_LINK = 'https://www.elastic.co/subscriptions'; + +const moreActions = ( + + + {txtGetMoreActions} + + +); + +export interface ActionFactoryProps { + /** Action factory name. */ + name?: string; + + /** ID of EUI icon. */ + icon?: string; + + /** Whether the current drilldown type is in beta. */ + beta?: boolean; + + /** Whether to show "Get more actions" link to upgrade license. */ + showMoreLink?: boolean; + + /** On drilldown type change click. */ + onChange?: () => void; +} + +export const ActionFactory: React.FC = ({ + name, + icon, + beta, + showMoreLink, + onChange, +}) => { + return ( + +
+ + {!!icon && ( + + + + )} + + +

+ {name}{' '} + {beta && ( + + )} +

+
+
+ {!!onChange && ( + + + {txtChangeButton} + + + )} +
+
+
+ ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/action_factory/index.ts similarity index 82% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/index.ts rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/action_factory/index.ts index a9d957c985287..25aabcf7e6d2f 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/connected_flyout_manage_drilldowns/index.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/action_factory/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export * from './connected_flyout_manage_drilldowns'; +export * from './action_factory'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/button_submit/button_submit.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/button_submit/button_submit.tsx new file mode 100644 index 0000000000000..bf7dfcadd5ef7 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/button_submit/button_submit.tsx @@ -0,0 +1,27 @@ +/* + * 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 * as React from 'react'; +import { EuiButton } from '@elastic/eui'; + +export interface ButtonSubmitProps { + disabled?: boolean; + onClick: () => void; +} + +export const ButtonSubmit: React.FC = ({ disabled, onClick, children }) => { + return ( + + {children} + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/button_submit/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/button_submit/index.ts new file mode 100644 index 0000000000000..770c32648591d --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/button_submit/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './button_submit'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_form/drilldown_form.stories.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_form/drilldown_form.stories.tsx new file mode 100644 index 0000000000000..634436ed40185 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_form/drilldown_form.stories.tsx @@ -0,0 +1,62 @@ +/* + * 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 * as React from 'react'; +import { storiesOf } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { DrilldownForm } from '.'; +import type { TriggerPickerProps } from '../trigger_picker'; + +const triggers: TriggerPickerProps = { + items: [ + { + id: 'RANGE_SELECT_TRIGGER', + title: 'Range selected', + description: 'On chart brush.', + }, + { + id: 'VALUE_CLICK_TRIGGER', + title: 'Value click', + description: 'On point click in chart', + }, + ], + selected: ['RANGE_SELECT_TRIGGER'], + docs: 'http://example.com', + onChange: () => {}, +}; + +storiesOf('components/DrilldownForm', module) + .add('Default', () => { + return ( + + children... + + ); + }) + .add('With license link', () => { + return ( + + children... + + ); + }) + .add('No triggers', () => { + return ( + {}, + }} + onNameChange={action('onNameChange')} + > + children... + + ); + }); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_form/drilldown_form.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_form/drilldown_form.tsx new file mode 100644 index 0000000000000..a4dd8f853b16c --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_form/drilldown_form.tsx @@ -0,0 +1,92 @@ +/* + * 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 React from 'react'; +import { EuiFieldText, EuiForm, EuiFormRow, EuiSpacer, EuiCallOut, EuiCode } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { TriggerPicker, TriggerPickerProps } from '../trigger_picker'; + +const txtNameOfDrilldown = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownForm.nameOfDrilldown', + { + defaultMessage: 'Name', + } +); + +const txtUntitledDrilldown = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownForm.untitledDrilldown', + { + defaultMessage: 'Untitled drilldown', + } +); + +const txtTrigger = i18n.translate('xpack.uiActionsEnhanced.components.DrilldownForm.trigger', { + defaultMessage: 'Trigger', +}); + +export interface FormDrilldownWizardProps { + /** Value of name field. */ + name?: string; + + /** Callback called on name change. */ + onNameChange?: (name: string) => void; + + /** Trigger picker props. */ + triggers?: TriggerPickerProps; + + /** Whether the form elements should be disabled. */ + disabled?: boolean; +} + +export const DrilldownForm: React.FC = ({ + name = '', + onNameChange, + triggers, + disabled, + children, +}) => { + if (!!triggers && !triggers.items.length) { + // Below callout is not translated, because this message is only for developers. + return ( + +

+ No triggers provided in triggers prop. +

+
+ ); + } + + const nameFragment = ( + + onNameChange(event.target.value) : undefined} + data-test-subj="drilldownNameInput" + /> + + ); + + const triggersFragment = !!triggers && triggers.items.length > 1 && ( + + + + ); + + return ( + + + {nameFragment} + + {triggersFragment} + +
{children}
+
+ ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/index.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_form/index.tsx similarity index 85% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/index.tsx rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_form/index.tsx index 242fb44f2e235..e17aca73a6d4d 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/index.tsx +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_form/index.tsx @@ -5,4 +5,4 @@ * 2.0. */ -export * from './list_manage_drilldowns'; +export * from './drilldown_form'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/drilldown_hello_bar/drilldown_hello_bar.stories.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_hello_bar/drilldown_hello_bar.stories.tsx similarity index 100% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/drilldown_hello_bar/drilldown_hello_bar.stories.tsx rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_hello_bar/drilldown_hello_bar.stories.tsx diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/drilldown_hello_bar/drilldown_hello_bar.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_hello_bar/drilldown_hello_bar.tsx similarity index 84% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/drilldown_hello_bar/drilldown_hello_bar.tsx rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_hello_bar/drilldown_hello_bar.tsx index 01aad0ae37f3f..af9c78c9a5484 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/drilldown_hello_bar/drilldown_hello_bar.tsx +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_hello_bar/drilldown_hello_bar.tsx @@ -26,10 +26,7 @@ export interface DrilldownHelloBarProps { export const WELCOME_MESSAGE_TEST_SUBJ = 'drilldownsWelcomeMessage'; -export const DrilldownHelloBar: React.FC = ({ - docsLink, - onHideClick = () => {}, -}) => { +export const DrilldownHelloBar: React.FC = ({ docsLink, onHideClick }) => { return ( @@ -49,11 +46,13 @@ export const DrilldownHelloBar: React.FC = ({ )} - - - {txtHideHelpButtonLabel} - - + {!!onHideClick && ( + + + {txtHideHelpButtonLabel} + + + )} ); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/drilldown_hello_bar/i18n.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_hello_bar/i18n.ts similarity index 100% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/drilldown_hello_bar/i18n.ts rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_hello_bar/i18n.ts diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/drilldown_hello_bar/index.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_hello_bar/index.tsx similarity index 100% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/drilldown_hello_bar/index.tsx rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_hello_bar/index.tsx diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/drilldown_table.stories.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/drilldown_table.stories.tsx new file mode 100644 index 0000000000000..57e2e04807a6a --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/drilldown_table.stories.tsx @@ -0,0 +1,86 @@ +/* + * 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 * as React from 'react'; +import { storiesOf } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { DrilldownTable } from './drilldown_table'; +import { FlyoutFrame } from '../flyout_frame'; + +storiesOf('components/ListManageDrilldowns', module) + .add('Default', () => ( + + )) + .add('Empty list', () => ( + + )) + .add('A single drilldown', () => ( + + )) + .add('Inside a flyout frame', () => ( + + + + )); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/list_manage_drilldowns.test.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/drilldown_table.test.tsx similarity index 74% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/list_manage_drilldowns.test.tsx rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/drilldown_table.test.tsx index d4c497c4a3e4e..ee485f8aee0c0 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/list_manage_drilldowns.test.tsx +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/drilldown_table.test.tsx @@ -7,26 +7,22 @@ import React from 'react'; import { fireEvent, render } from '@testing-library/react'; -import { - DrilldownListItem, - ListManageDrilldowns, - TEST_SUBJ_DRILLDOWN_ITEM, -} from './list_manage_drilldowns'; +import { DrilldownTable, DrilldownTableItem, TEST_SUBJ_DRILLDOWN_ITEM } from './drilldown_table'; -const drilldowns: DrilldownListItem[] = [ +const drilldowns: DrilldownTableItem[] = [ { id: '1', actionName: 'Dashboard', drilldownName: 'Drilldown 1' }, { id: '2', actionName: 'Dashboard', drilldownName: 'Drilldown 2' }, { id: '3', actionName: 'Dashboard', drilldownName: 'Drilldown 3', error: 'an error' }, ]; test('Render list of drilldowns', () => { - const screen = render(); + const screen = render(); expect(screen.getAllByTestId(TEST_SUBJ_DRILLDOWN_ITEM)).toHaveLength(drilldowns.length); }); test('Emit onEdit() when clicking on edit drilldown', () => { const fn = jest.fn(); - const screen = render(); + const screen = render(); const editButtons = screen.getAllByText('Edit'); expect(editButtons).toHaveLength(drilldowns.length); @@ -36,21 +32,21 @@ test('Emit onEdit() when clicking on edit drilldown', () => { test('Emit onCreate() when clicking on create drilldown', () => { const fn = jest.fn(); - const screen = render(); + const screen = render(); fireEvent.click(screen.getByText('Create new')); expect(fn).toBeCalled(); }); test('Delete button is not visible when non is selected', () => { const fn = jest.fn(); - const screen = render(); + const screen = render(); expect(screen.queryByText(/Delete/i)).not.toBeInTheDocument(); expect(screen.queryByText(/Create/i)).toBeInTheDocument(); }); test('Can delete drilldowns', () => { const fn = jest.fn(); - const screen = render(); + const screen = render(); const checkboxes = screen.getAllByLabelText(/Select this drilldown/i); expect(checkboxes).toHaveLength(3); @@ -66,6 +62,6 @@ test('Can delete drilldowns', () => { }); test('Error is displayed', () => { - const screen = render(); + const screen = render(); expect(screen.getByLabelText('an error')).toBeInTheDocument(); }); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/list_manage_drilldowns.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/drilldown_table.tsx similarity index 51% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/list_manage_drilldowns.tsx rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/drilldown_table.tsx index 207c4f5037354..2cf4745cbbec4 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/list_manage_drilldowns/list_manage_drilldowns.tsx +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/drilldown_table.tsx @@ -6,32 +6,36 @@ */ import { - EuiBasicTable, + EuiInMemoryTable, EuiBasicTableColumn, EuiButton, EuiButtonEmpty, - EuiFlexGroup, - EuiFlexItem, EuiIcon, EuiSpacer, - EuiTextColor, EuiToolTip, } from '@elastic/eui'; import React, { useState } from 'react'; +import { TextWithIcon } from '../text_with_icon'; +import { TriggerLineItem } from '../trigger_line_item'; import { txtCreateDrilldown, txtDeleteDrilldowns, txtEditDrilldown, + txtCloneDrilldown, txtSelectDrilldown, + txtName, + txtAction, + txtTrigger, } from './i18n'; -export interface DrilldownListItem { +export interface DrilldownTableItem { id: string; actionName: string; drilldownName: string; icon?: string; error?: string; triggers?: Trigger[]; + triggerIncompatible?: boolean; } interface Trigger { @@ -39,36 +43,34 @@ interface Trigger { description?: string; } -export interface ListManageDrilldownsProps { - drilldowns: DrilldownListItem[]; +export const TEST_SUBJ_DRILLDOWN_ITEM = 'listManageDrilldownsItem'; - onEdit?: (id: string) => void; +export interface DrilldownTableProps { + items: DrilldownTableItem[]; onCreate?: () => void; onDelete?: (ids: string[]) => void; - - showTriggerColumn?: boolean; + onEdit?: (id: string) => void; + onCopy?: (id: string) => void; } -const noop = () => {}; - -export const TEST_SUBJ_DRILLDOWN_ITEM = 'listManageDrilldownsItem'; - -export function ListManageDrilldowns({ - drilldowns, - onEdit = noop, - onCreate = noop, - onDelete = noop, - showTriggerColumn = true, -}: ListManageDrilldownsProps) { +export const DrilldownTable: React.FC = ({ + items: drilldowns, + onCreate, + onDelete, + onEdit, + onCopy, +}) => { const [selectedDrilldowns, setSelectedDrilldowns] = useState([]); - const columns: Array> = [ + const columns: Array> = [ { - name: 'Name', + field: 'drilldownName', + name: txtName, + sortable: true, 'data-test-subj': 'drilldownListItemName', - render: (drilldown: DrilldownListItem) => ( + render: (drilldownName: string, drilldown: DrilldownTableItem) => (
- {drilldown.drilldownName}{' '} + {drilldownName}{' '} {drilldown.error && ( ( - - {drilldown.icon && ( - - - - )} - - {drilldown.actionName} - - + name: txtAction, + render: (drilldown: DrilldownTableItem) => ( + + {drilldown.actionName} + ), }, - showTriggerColumn && { - name: 'Trigger', + { + field: 'triggers', + name: txtTrigger, textOnly: true, - render: (drilldown: DrilldownListItem) => - drilldown.triggers?.map((trigger, idx) => - trigger.description ? ( - - {trigger.title ?? 'unknown'} - - ) : ( - - {trigger.title ?? 'unknown'} - - ) - ), + sortable: (drilldown: DrilldownTableItem) => + drilldown.triggers ? drilldown.triggers[0].title : '', + render: (triggers: unknown, drilldown: DrilldownTableItem) => { + if (!drilldown.triggers) return null; + const trigger = drilldown.triggers[0]; + return ( + + {trigger.title ?? 'unknown'} + + ); + }, }, { align: 'right', - width: '64px', - render: (drilldown: DrilldownListItem) => ( - onEdit(drilldown.id)}> - {txtEditDrilldown} - + render: (drilldown: DrilldownTableItem) => ( + <> + {!!onEdit && ( + onEdit(drilldown.id)} + > + {txtEditDrilldown} + + )} + {!!onCopy && ( + onCopy(drilldown.id)} + > + {txtCloneDrilldown} + + )} + ), }, - ].filter(Boolean) as Array>; + ].filter(Boolean) as Array>; return ( <> - - {selectedDrilldowns.length === 0 ? ( + {!!onCreate && !selectedDrilldowns.length && ( onCreate()}> {txtCreateDrilldown} - ) : ( + )} + {!!onDelete && selectedDrilldowns.length > 0 && ( ); -} +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/i18n.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/i18n.ts new file mode 100644 index 0000000000000..d465167555c31 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/i18n.ts @@ -0,0 +1,65 @@ +/* + * 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'; + +export const txtCreateDrilldown = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTable.createDrilldownButtonLabel', + { + defaultMessage: 'Create new', + } +); + +export const txtEditDrilldown = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTable.editDrilldownButtonLabel', + { + defaultMessage: 'Edit', + } +); + +export const txtCloneDrilldown = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTable.copyDrilldownButtonLabel', + { + defaultMessage: 'Copy', + } +); + +export const txtDeleteDrilldowns = (count: number) => + i18n.translate('xpack.uiActionsEnhanced.components.DrilldownTable.deleteDrilldownsButtonLabel', { + defaultMessage: 'Delete ({count})', + values: { + count, + }, + }); + +export const txtSelectDrilldown = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTable.selectThisDrilldownCheckboxLabel', + { + defaultMessage: 'Select this drilldown', + } +); + +export const txtName = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTable.nameColumnTitle', + { + defaultMessage: 'Name', + } +); + +export const txtAction = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTable.actionColumnTitle', + { + defaultMessage: 'Action', + } +); + +export const txtTrigger = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTable.triggerColumnTitle', + { + defaultMessage: 'Trigger', + } +); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/index.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/index.tsx new file mode 100644 index 0000000000000..1600cd63f4768 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_table/index.tsx @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './drilldown_table'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/drilldown_template_table.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/drilldown_template_table.tsx new file mode 100644 index 0000000000000..85d629dae9a1b --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/drilldown_template_table.tsx @@ -0,0 +1,137 @@ +/* + * 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 React, { useState } from 'react'; +import { + EuiInMemoryTable, + EuiBasicTableColumn, + EuiButtonEmpty, + EuiSpacer, + EuiButton, + EuiText, + EuiSearchBarProps, +} from '@elastic/eui'; +import { + txtNameColumnTitle, + txtSelectableMessage, + txtCopyButtonLabel, + txtSingleItemCopyActionLabel, + txtActionColumnTitle, + txtTriggerColumnTitle, +} from './i18n'; +import { TextWithIcon } from '../text_with_icon'; +import { TriggerLineItem } from '../trigger_line_item'; + +export interface DrilldownTemplateTableItem { + id: string; + name: string; + icon?: string; + description?: string; + actionName?: string; + actionIcon?: string; + trigger?: string; + triggerIncompatible?: boolean; +} + +export interface DrilldownTemplateTableProps { + items: DrilldownTemplateTableItem[]; + onCreate?: (id: string) => void; + onClone?: (ids: string[]) => void; +} + +export const DrilldownTemplateTable: React.FC = ({ + items, + onCreate, + onClone, +}) => { + const [selected, setSelected] = useState([]); + + const columns: Array> = [ + { + field: 'name', + name: txtNameColumnTitle, + sortable: true, + render: (omit, item: DrilldownTemplateTableItem) => ( +
+
{item.name}
+ + {item.description} + +
+ ), + }, + { + name: txtActionColumnTitle, + render: (item: DrilldownTemplateTableItem) => ( + + {item.actionName} + + ), + }, + { + field: 'trigger', + name: txtTriggerColumnTitle, + sortable: true, + render: (omit, item: DrilldownTemplateTableItem) => ( + {item.trigger} + ), + }, + { + align: 'right', + render: (drilldown: DrilldownTemplateTableItem) => + !!onCreate && ( + onCreate(drilldown.id)} + > + {txtSingleItemCopyActionLabel} + + ), + }, + ]; + + const search: EuiSearchBarProps = { + box: { + incremental: true, + }, + defaultQuery: '', + }; + + return ( + <> + { + setSelected(selection.map((drilldown) => drilldown.id)); + }, + selectableMessage: () => txtSelectableMessage, + }} + hasActions={true} + /> + + {!!onClone && !!selected.length && ( + onClone(selected)}> + {txtCopyButtonLabel(selected.length)} + + )} + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/i18n.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/i18n.ts new file mode 100644 index 0000000000000..cfdc5b99f338d --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/i18n.ts @@ -0,0 +1,62 @@ +/* + * 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'; + +export const txtSelectableMessage = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTemplateTable.selectableMessage', + { + defaultMessage: 'Select this template', + } +); + +export const txtNameColumnTitle = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTemplateTable.nameColumnTitle', + { + defaultMessage: 'Name', + description: 'Title of the first column in drilldown template cloning table.', + } +); + +export const txtSourceColumnTitle = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTemplateTable.sourceColumnTitle', + { + defaultMessage: 'Panel', + description: 'Column title which describes from where the drilldown is cloned.', + } +); + +export const txtActionColumnTitle = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTemplateTable.actionColumnTitle', + { + defaultMessage: 'Action', + } +); + +export const txtTriggerColumnTitle = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTemplateTable.triggerColumnTitle', + { + defaultMessage: 'Trigger', + } +); + +export const txtSingleItemCopyActionLabel = i18n.translate( + 'xpack.uiActionsEnhanced.components.DrilldownTemplateTable.singleItemCopyAction', + { + defaultMessage: 'Copy', + description: '"Copy" action button label in drilldown template cloning table last column.', + } +); + +export const txtCopyButtonLabel = (count: number) => + i18n.translate('xpack.uiActionsEnhanced.components.DrilldownTemplateTable.copyButtonLabel', { + defaultMessage: 'Copy ({count})', + description: 'Label of drilldown template table bottom copy button.', + values: { + count, + }, + }); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/index.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/index.tsx new file mode 100644 index 0000000000000..0753e03a44e6f --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/drilldown_template_table/index.tsx @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './drilldown_template_table'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_frame/flyout_frame.stories.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/flyout_frame/flyout_frame.stories.tsx similarity index 100% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_frame/flyout_frame.stories.tsx rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/flyout_frame/flyout_frame.stories.tsx diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_frame/flyout_frame.test.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/flyout_frame/flyout_frame.test.tsx similarity index 100% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_frame/flyout_frame.test.tsx rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/flyout_frame/flyout_frame.test.tsx diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_frame/flyout_frame.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/flyout_frame/flyout_frame.tsx similarity index 100% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_frame/flyout_frame.tsx rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/flyout_frame/flyout_frame.tsx diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_frame/i18n.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/flyout_frame/i18n.ts similarity index 100% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_frame/i18n.ts rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/flyout_frame/i18n.ts diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_frame/index.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/flyout_frame/index.tsx similarity index 100% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_frame/index.tsx rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/flyout_frame/index.tsx diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/text_with_icon/index.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/text_with_icon/index.tsx new file mode 100644 index 0000000000000..bf312643597f0 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/text_with_icon/index.tsx @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './text_with_icon'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/text_with_icon/text_with_icon.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/text_with_icon/text_with_icon.tsx new file mode 100644 index 0000000000000..9b7fe346547b1 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/text_with_icon/text_with_icon.tsx @@ -0,0 +1,60 @@ +/* + * 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 * as React from 'react'; +import { + EuiTextColor, + EuiTextColorProps, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiToolTip, +} from '@elastic/eui'; + +export interface TextWithIconProps { + color?: EuiTextColorProps['color']; + tooltip?: React.ReactNode; + icon?: string; + iconColor?: string; + iconTooltip?: React.ReactNode; +} + +export const TextWithIcon: React.FC = ({ + color, + tooltip, + icon, + iconColor, + iconTooltip, + children, +}) => { + return ( + + {!!icon && ( + + {!!iconTooltip ? ( + + + + ) : ( + + )} + + )} + {!!children && ( + + {tooltip ? ( + + {children} + + ) : ( + {children} + )} + + )} + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_line_item/index.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_line_item/index.tsx new file mode 100644 index 0000000000000..12a55d19d8fa1 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_line_item/index.tsx @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './trigger_line_item'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_line_item/trigger_line_item.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_line_item/trigger_line_item.tsx new file mode 100644 index 0000000000000..c8f4ccdd2fbf3 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_line_item/trigger_line_item.tsx @@ -0,0 +1,40 @@ +/* + * 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 * as React from 'react'; +import { i18n } from '@kbn/i18n'; +import { TextWithIcon } from '../text_with_icon'; + +export const txtIncompatibleTooltip = i18n.translate( + 'xpack.uiActionsEnhanced.components.TriggerLineItem.incompatibleTooltip', + { + defaultMessage: 'This trigger type not supported by this panel', + } +); + +export interface TriggerLineItemProps { + tooltip?: React.ReactNode; + incompatible?: boolean; +} + +export const TriggerLineItem: React.FC = ({ + tooltip, + incompatible, + children, +}) => { + return ( + + {children} + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/index.ts new file mode 100644 index 0000000000000..cdb6fbe54698d --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/index.ts @@ -0,0 +1,9 @@ +/* + * 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. + */ + +export { TriggerPickerItemDescription } from './trigger_picker_item'; +export * from './trigger_picker'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker.stories.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker.stories.tsx new file mode 100644 index 0000000000000..77f3eadcc0bca --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker.stories.tsx @@ -0,0 +1,102 @@ +/* + * 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 * as React from 'react'; +import { storiesOf } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { TriggerPicker } from '.'; + +const Demo: React.FC = () => { + const [triggers, setTriggers] = React.useState(['RANGE_SELECT_TRIGGER']); + + return ( + + ); +}; + +storiesOf('components/TriggerPicker', module) + .add('Default', () => { + return ( + + ); + }) + .add('With docs', () => { + return ( + + ); + }) + .add('Selected trigger', () => { + return ( + + ); + }) + .add('Interactive', () => { + return ; + }); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker.tsx new file mode 100644 index 0000000000000..728b144b4db0e --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker.tsx @@ -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 React from 'react'; +import { EuiText, EuiToolTip, EuiFormFieldset, EuiLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { TriggerPickerItemDescription, TriggerPickerItem } from './trigger_picker_item'; + +const txtTriggerPickerLabel = i18n.translate( + 'xpack.uiActionsEnhanced.components.actionWizard.triggerPickerLabel', + { + defaultMessage: 'Show option on:', + } +); + +const txtTriggerPickerHelpText = i18n.translate( + 'xpack.uiActionsEnhanced.components.actionWizard.triggerPickerHelpText', + { + defaultMessage: "What's this?", + } +); + +const txtTriggerPickerHelpTooltip = i18n.translate( + 'xpack.uiActionsEnhanced.components.actionWizard.triggerPickerHelpTooltip', + { + defaultMessage: 'Determines when the drilldown appears in context menu', + } +); + +export interface TriggerPickerProps { + /** List of available triggers. */ + items: TriggerPickerItemDescription[]; + + /** List of IDs of selected triggers. */ + selected?: string[]; + + /** Link to documentation. */ + docs?: string; + + /** Whether user interactions should be disabled. */ + disabled?: boolean; + + /** Called on trigger selection change. */ + onChange: (selected: string[]) => void; +} + +export const TriggerPicker: React.FC = ({ + items, + selected = [], + docs, + disabled, + onChange, +}) => { + return ( + +
+ {txtTriggerPickerLabel}{' '} + + + {txtTriggerPickerHelpText} + + +
+ + ), + }} + style={{ maxWidth: `80%` }} + > + {items.map((trigger) => ( + onChange([id])} + /> + ))} +
+ ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker_item.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker_item.tsx new file mode 100644 index 0000000000000..70ab08d20f0c1 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/trigger_picker/trigger_picker_item.tsx @@ -0,0 +1,73 @@ +/* + * 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 React from 'react'; +import { EuiSpacer, EuiText, EuiCheckableCard, EuiTextColor, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +const txtUnknown = i18n.translate('xpack.uiActionsEnhanced.components.TriggerPickerItem.unknown', { + defaultMessage: 'Unknown', +}); + +export interface TriggerPickerItemDescription { + id: string; + title?: string; + description?: string; +} + +export interface TriggerPickerItemProps extends TriggerPickerItemDescription { + /** Whether the item is selected. */ + checked?: boolean; + + /** Whether to disable user interaction. */ + disabled?: boolean; + + /** Called when item is selected by user. */ + onSelect: (id: string) => void; +} + +export const TriggerPickerItem: React.FC = ({ + id, + title = txtUnknown, + description, + checked, + disabled, + onSelect, +}) => { + const descriptionFragment = !!description && ( +
+ + {description} + +
+ ); + + const label = ( + <> + + {title} + + {descriptionFragment} + + ); + + return ( + <> + onSelect(id)} + data-test-subj={`triggerPicker-${id}`} + /> + + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/types.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/types.ts new file mode 100644 index 0000000000000..4d6e5354604a1 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/components/types.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export { ActionFactoryPlaceContext } from '../types'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_picker/action_factory_picker.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_picker/action_factory_picker.tsx new file mode 100644 index 0000000000000..db9951f235dfc --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_picker/action_factory_picker.tsx @@ -0,0 +1,31 @@ +/* + * 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 React from 'react'; +import { ActionFactoryPicker as ActionFactoryPickerUi } from '../../../../components/action_factory_picker'; +import { useDrilldownManager } from '../context'; +import { ActionFactoryView } from '../action_factory_view'; + +export const ActionFactoryPicker: React.FC = ({}) => { + const drilldowns = useDrilldownManager(); + const factory = drilldowns.useActionFactory(); + const context = React.useMemo(() => drilldowns.getActionFactoryContext(), [drilldowns]); + + if (!!factory) { + return ; + } + + return ( + { + drilldowns.setActionFactory(actionFactory); + }} + /> + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_picker/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_picker/index.ts new file mode 100644 index 0000000000000..3d7ffed301859 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_picker/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './action_factory_picker'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_view/action_factory_view.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_view/action_factory_view.tsx new file mode 100644 index 0000000000000..0a389d6f1f615 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_view/action_factory_view.tsx @@ -0,0 +1,33 @@ +/* + * 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 React from 'react'; +import { ActionFactory as ActionFactoryUi } from '../../components/action_factory'; +import { ActionFactory, BaseActionFactoryContext } from '../../../../dynamic_actions'; +import { useDrilldownManager } from '../context'; + +export interface ActionFactoryViewProps { + factory: ActionFactory; + context: BaseActionFactoryContext; + constant?: boolean; +} + +export const ActionFactoryView: React.FC = ({ + factory, + context, + constant, +}) => { + const drilldowns = useDrilldownManager(); + const name = React.useMemo(() => factory.getDisplayName(context), [factory, context]); + const icon = React.useMemo(() => factory.getIconType(context), [factory, context]); + const handleChange = React.useMemo(() => { + if (constant) return undefined; + return () => drilldowns.setActionFactory(undefined); + }, [drilldowns, constant]); + + return ; +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_view/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_view/index.ts new file mode 100644 index 0000000000000..d56fb06510fff --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/action_factory_view/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './action_factory_view'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/context/context.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/context/context.tsx new file mode 100644 index 0000000000000..cc0434b86bdcb --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/context/context.tsx @@ -0,0 +1,25 @@ +/* + * 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 * as React from 'react'; +import { DrilldownManagerState, DrilldownManagerStateDeps } from '../../state'; + +const context = React.createContext(null); + +export const useDrilldownManager = () => React.useContext(context)!; + +export type DrilldownManagerProviderProps = DrilldownManagerStateDeps; + +export const DrilldownManagerProvider: React.FC = ({ + children, + ...deps +}) => { + // eslint-disable-next-line react-hooks/exhaustive-deps + const value = React.useMemo(() => new DrilldownManagerState(deps), []); + + return {children}; +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/context/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/context/index.ts new file mode 100644 index 0000000000000..e9a2f3ab7be99 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/context/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './context'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/create_drilldown_form/create_drilldown_form.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/create_drilldown_form/create_drilldown_form.tsx new file mode 100644 index 0000000000000..bd4a4fd3d051b --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/create_drilldown_form/create_drilldown_form.tsx @@ -0,0 +1,63 @@ +/* + * 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 * as React from 'react'; +import { i18n } from '@kbn/i18n'; +import useMountedState from 'react-use/lib/useMountedState'; +import { DrilldownManagerTitle } from '../drilldown_manager_title'; +import { useDrilldownManager } from '../context'; +import { ActionFactoryPicker } from '../action_factory_picker'; +import { DrilldownManagerFooter } from '../drilldown_manager_footer'; +import { DrilldownStateForm } from '../drilldown_state_form'; +import { ButtonSubmit } from '../../components/button_submit'; + +const txtCreateDrilldown = i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.containers.createDrilldownForm.title', + { + defaultMessage: 'Create Drilldown', + description: 'Drilldowns flyout title for new drilldown form.', + } +); + +const txtCreateDrilldownButton = i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.containers.createDrilldownForm.primaryButton', + { + defaultMessage: 'Create drilldown', + description: 'Primary button on new drilldown creation form.', + } +); + +export const CreateDrilldownForm: React.FC = () => { + const isMounted = useMountedState(); + const drilldowns = useDrilldownManager(); + const drilldownState = drilldowns.getDrilldownState()!; + const error = drilldownState.useError(); + const [disabled, setDisabled] = React.useState(false); + + const handleCreate = () => { + setDisabled(true); + drilldowns.createDrilldown().finally(() => { + if (!isMounted()) return; + setDisabled(false); + }); + }; + + return ( + <> + {txtCreateDrilldown} + + {!!drilldownState && } + {!!drilldownState && ( + + + {txtCreateDrilldownButton} + + + )} + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/create_drilldown_form/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/create_drilldown_form/index.ts new file mode 100644 index 0000000000000..0f5fcbca00fe0 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/create_drilldown_form/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './create_drilldown_form'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/cloning_notification.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/cloning_notification.tsx new file mode 100644 index 0000000000000..3c292fcb49ff3 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/cloning_notification.tsx @@ -0,0 +1,53 @@ +/* + * 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 { EuiCallOut, EuiSpacer, EuiLink } from '@elastic/eui'; +import * as React from 'react'; +import { i18n } from '@kbn/i18n'; + +const txtDismiss = i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.containers.drilldownList.copyingNotification.dismiss', + { + defaultMessage: 'Dismiss', + description: 'Dismiss button in cloning notification callout.', + } +); + +const txtBody = (count: number) => + i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.containers.drilldownList.copyingNotification.body', + { + defaultMessage: '{count, number} {count, plural, one {drilldown} other {drilldowns}} copied.', + description: 'Title of notification show when one or more drilldowns were copied.', + values: { + count, + }, + } + ); + +export interface CloningNotificationProps { + count?: number; +} + +export const CloningNotification: React.FC = ({ count = 1 }) => { + const [dismissed, setDismissed] = React.useState(false); + + if (dismissed) return null; + + const title = ( + <> + {txtBody(count)} setDismissed(true)}>{txtDismiss} + + ); + + return ( + <> + + + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/drilldown_list.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/drilldown_list.tsx new file mode 100644 index 0000000000000..41f062ae87327 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/drilldown_list.tsx @@ -0,0 +1,47 @@ +/* + * 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 * as React from 'react'; +import { DrilldownTable } from '../../components/drilldown_table'; +import { useDrilldownManager } from '../context'; +import { CloningNotification } from './cloning_notification'; + +const FIVE_SECONDS = 5e3; + +export const DrilldownList: React.FC = ({}) => { + const drilldowns = useDrilldownManager(); + const events = drilldowns.useEvents(); + const cloningNotificationCount = React.useMemo( + () => + !!drilldowns.lastCloneRecord && drilldowns.lastCloneRecord.time > Date.now() - FIVE_SECONDS + ? drilldowns.lastCloneRecord.templateIds.length + : 0, + // eslint-disable-next-line react-hooks/exhaustive-deps + [] + ); + React.useEffect(() => { + drilldowns.lastCloneRecord = null; + }); + + const notification = !!cloningNotificationCount && ( + + ); + + return ( + <> + {notification} + { + drilldowns.setRoute(['manage', id]); + }} + onCopy={drilldowns.onCreateFromDrilldown} + /> + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/index.ts new file mode 100644 index 0000000000000..40e01173d1cca --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_list/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './drilldown_list'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/create_public_drilldown_manager.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/create_public_drilldown_manager.tsx new file mode 100644 index 0000000000000..6b7d8a7a19360 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/create_public_drilldown_manager.tsx @@ -0,0 +1,31 @@ +/* + * 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 * as React from 'react'; +import { DrilldownManagerDependencies, PublicDrilldownManagerProps } from '../../types'; +import { DrilldownManagerProvider } from '../context'; +import { DrilldownManager } from './drilldown_manager'; + +export type PublicDrilldownManagerComponent = React.FC; + +/** + * This HOC creates a "public" `` component `PublicDrilldownManagerComponent`, + * which can be exported from plugin contract for other plugins to consume. + */ +export const createPublicDrilldownManager = ( + dependencies: DrilldownManagerDependencies +): PublicDrilldownManagerComponent => { + const PublicDrilldownManager: PublicDrilldownManagerComponent = (drilldownManagerProps) => { + return ( + + + + ); + }; + + return PublicDrilldownManager; +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/drilldown_manager.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/drilldown_manager.tsx new file mode 100644 index 0000000000000..a09411a14d83f --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/drilldown_manager.tsx @@ -0,0 +1,34 @@ +/* + * 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 * as React from 'react'; +import { useDrilldownManager } from '../context'; +import { FlyoutFrame } from '../../components/flyout_frame'; +import { DrilldownManagerContent } from './drilldown_manager_content'; +import { RenderDrilldownManagerTitle } from '../drilldown_manager_title'; +import { RenderDrilldownManagerFooter } from '../drilldown_manager_footer'; +import { HelloBar } from '../hello_bar'; + +export const DrilldownManager: React.FC = ({}) => { + const drilldowns = useDrilldownManager(); + const route = drilldowns.useRoute(); + + const handleBack = + route.length < 2 ? undefined : () => drilldowns.setRoute(route.slice(0, route.length - 1)); + + return ( + } + banner={} + footer={} + onClose={drilldowns.close} + onBack={handleBack} + > + + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/drilldown_manager_content.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/drilldown_manager_content.tsx new file mode 100644 index 0000000000000..a0a7d94080ea0 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/drilldown_manager_content.tsx @@ -0,0 +1,22 @@ +/* + * 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 * as React from 'react'; +import { CreateDrilldownForm } from '../create_drilldown_form'; +import { Tabs } from '../tabs'; +import { useDrilldownManager } from '../context'; +import { EditDrilldownForm } from '../edit_drilldown_form'; + +export const DrilldownManagerContent: React.FC = ({}) => { + const drilldowns = useDrilldownManager(); + const route = drilldowns.useRoute(); + + if (route[0] === 'new' && !!route[1]) return ; + if (route[0] === 'manage' && !!route[1]) return ; + + return ; +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/index.ts similarity index 74% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/index.ts rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/index.ts index 8c69e44a90a63..fd2b7adf3e4bc 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/index.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager/index.ts @@ -5,4 +5,5 @@ * 2.0. */ -export { createFlyoutManageDrilldowns } from './connected_flyout_manage_drilldowns'; +export * from './drilldown_manager'; +export * from './create_public_drilldown_manager'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_footer/drilldown_manager_footer.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_footer/drilldown_manager_footer.tsx new file mode 100644 index 0000000000000..5cd5c712a1493 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_footer/drilldown_manager_footer.tsx @@ -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 * as React from 'react'; +import { useDrilldownManager } from '../context'; + +export const DrilldownManagerFooter: React.FC = ({ children }) => { + const drilldowns = useDrilldownManager(); + React.useEffect(() => { + drilldowns.setFooter(children); + return () => { + drilldowns.setFooter(null); + }; + }); + return null; +}; + +export const RenderDrilldownManagerFooter: React.FC = () => { + const drilldowns = useDrilldownManager(); + const footer = drilldowns.useFooter(); + return <>{footer}; +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_footer/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_footer/index.ts new file mode 100644 index 0000000000000..61e6d642515c8 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_footer/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './drilldown_manager_footer'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_title/drilldown_manager_title.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_title/drilldown_manager_title.tsx new file mode 100644 index 0000000000000..63a02f65df939 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_title/drilldown_manager_title.tsx @@ -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 * as React from 'react'; +import { useDrilldownManager } from '../context'; + +export const DrilldownManagerTitle: React.FC = ({ children }) => { + const drilldowns = useDrilldownManager(); + React.useEffect(() => { + drilldowns.setTitle(children); + return () => { + drilldowns.resetTitle(); + }; + }); + return null; +}; + +export const RenderDrilldownManagerTitle: React.FC = () => { + const drilldowns = useDrilldownManager(); + const title = drilldowns.useTitle(); + return <>{title}; +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_title/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_title/index.ts new file mode 100644 index 0000000000000..8e015bd7bca06 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_manager_title/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './drilldown_manager_title'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_state_form/drilldown_state_form.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_state_form/drilldown_state_form.tsx new file mode 100644 index 0000000000000..44b9cf60916fb --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_state_form/drilldown_state_form.tsx @@ -0,0 +1,51 @@ +/* + * 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 React from 'react'; +import { useDrilldownManager } from '../context'; +import { DrilldownForm } from '../../components/drilldown_form'; +import type { DrilldownState } from '../../state'; +import type { TriggerPickerProps } from '../../components/trigger_picker'; + +export interface DrilldownStateFormProps { + state: DrilldownState; + disabled?: boolean; +} + +export const DrilldownStateForm: React.FC = ({ state, disabled }) => { + const drilldowns = useDrilldownManager(); + const name = state.useName(); + const triggers = state.useTriggers(); + const config = state.useConfig(); + const triggerPickerProps: TriggerPickerProps = React.useMemo( + () => ({ + items: state.uiTriggers.map((id) => { + const trigger = drilldowns.deps.getTrigger(id); + return trigger; + }), + selected: triggers, + onChange: state.setTriggers, + }), + [drilldowns, triggers, state] + ); + const context = state.getFactoryContext(); + + return ( + + {} : state.setConfig} + context={context} + /> + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_state_form/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_state_form/index.ts new file mode 100644 index 0000000000000..e06cb66ff99bc --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/drilldown_state_form/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './drilldown_state_form'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/edit_drilldown_form/edit_drilldown_form.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/edit_drilldown_form/edit_drilldown_form.tsx new file mode 100644 index 0000000000000..421547c8210dd --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/edit_drilldown_form/edit_drilldown_form.tsx @@ -0,0 +1,75 @@ +/* + * 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 * as React from 'react'; +import { i18n } from '@kbn/i18n'; +import useMountedState from 'react-use/lib/useMountedState'; +import { DrilldownManagerTitle } from '../drilldown_manager_title'; +import { useDrilldownManager } from '../context'; +import { ActionFactoryView } from '../action_factory_view'; +import { DrilldownManagerFooter } from '../drilldown_manager_footer'; +import { DrilldownStateForm } from '../drilldown_state_form'; +import { ButtonSubmit } from '../../components/button_submit'; + +const txtEditDrilldown = i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.containers.editDrilldownForm.title', + { + defaultMessage: 'Edit Drilldown', + description: 'Drilldowns flyout title for edit drilldown form.', + } +); + +const txtEditDrilldownButton = i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.containers.editDrilldownForm.primaryButton', + { + defaultMessage: 'Save', + description: 'Primary button on new drilldown edit form.', + } +); + +export interface EditDrilldownFormProps { + eventId: string; +} + +export const EditDrilldownForm: React.FC = ({ eventId }) => { + const isMounted = useMountedState(); + const drilldowns = useDrilldownManager(); + const drilldownState = React.useMemo(() => drilldowns.createEventDrilldownState(eventId), [ + drilldowns, + eventId, + ]); + const [disabled, setDisabled] = React.useState(false); + + if (!drilldownState) return null; + + const handleSave = () => { + setDisabled(true); + drilldowns.updateEvent(eventId, drilldownState).finally(() => { + if (!isMounted()) return; + setDisabled(false); + }); + }; + + return ( + <> + {txtEditDrilldown} + + {!!drilldownState && } + {!!drilldownState && ( + + + {txtEditDrilldownButton} + + + )} + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/edit_drilldown_form/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/edit_drilldown_form/index.ts new file mode 100644 index 0000000000000..ec10df49a727d --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/edit_drilldown_form/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './edit_drilldown_form'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/create_drilldown_form.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/create_drilldown_form.tsx new file mode 100644 index 0000000000000..3382a5dd82fbb --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/create_drilldown_form.tsx @@ -0,0 +1,45 @@ +/* + * 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 React from 'react'; +import { useDrilldownManager } from '../context'; +import { DrilldownForm } from '../../components/drilldown_form'; +import { DrilldownState } from '../../state'; +import { TriggerPickerProps } from '../../components/trigger_picker'; + +export interface CreateDrilldownFormProps { + state: DrilldownState; +} + +export const CreateDrilldownForm: React.FC = ({ state }) => { + const drilldowns = useDrilldownManager(); + const name = state.useName(); + const triggers = state.useTriggers(); + const config = state.useConfig(); + const triggerPickerProps: TriggerPickerProps = React.useMemo( + () => ({ + items: state.uiTriggers.map((id) => { + const trigger = drilldowns.deps.getTrigger(id); + return trigger; + }), + selected: triggers, + onChange: state.setTriggers, + }), + [drilldowns, triggers, state] + ); + const context = state.getFactoryContext(); + + return ( + + + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/edit_drilldown_form.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/edit_drilldown_form.tsx new file mode 100644 index 0000000000000..1ee8291b30774 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/edit_drilldown_form.tsx @@ -0,0 +1,65 @@ +/* + * 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 React from 'react'; +import { EuiButton, EuiSpacer } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { useDrilldownManager } from '../context'; +import { DrilldownForm } from '../../components/drilldown_form'; +import { DrilldownState } from '../../state'; +import { TriggerPickerProps } from '../../components/trigger_picker'; + +export const txtDeleteDrilldownButtonLabel = i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.deleteDrilldownButtonLabel', + { + defaultMessage: 'Delete drilldown', + } +); + +export interface EditDrilldownFormProps { + state: DrilldownState; +} + +export const EditDrilldownForm: React.FC = ({ state }) => { + const drilldowns = useDrilldownManager(); + const name = state.useName(); + const triggers = state.useTriggers(); + const config = state.useConfig(); + const triggerPickerProps: TriggerPickerProps = React.useMemo( + () => ({ + items: state.uiTriggers.map((id) => { + const trigger = drilldowns.deps.getTrigger(id); + return trigger; + }), + selected: triggers, + onChange: state.setTriggers, + }), + [drilldowns, triggers, state] + ); + const context = state.getFactoryContext(); + + return ( + <> + + + + + { + alert('DELETE!'); + }} + color={'danger'} + > + {txtDeleteDrilldownButtonLabel} + + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/form_drilldown_wizard.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/form_drilldown_wizard.tsx new file mode 100644 index 0000000000000..ddb08ee407118 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/form_drilldown_wizard.tsx @@ -0,0 +1,29 @@ +/* + * 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 React from 'react'; +import { ActionFactoryPicker } from '../action_factory_picker'; +import { useDrilldownManager } from '../context'; +import { CreateDrilldownForm } from './create_drilldown_form'; + +export const FormDrilldownWizard: React.FC = ({}) => { + const drilldowns = useDrilldownManager(); + const actionFactory = drilldowns.useActionFactory(); + + const drilldownState = drilldowns.getDrilldownState(); + let content: React.ReactNode = null; + + if (!actionFactory) content = null; + if (drilldownState) content = ; + + return ( + <> + + {content} + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/i18n.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/i18n.ts similarity index 68% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/i18n.ts rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/i18n.ts index 36f3ee6cc2393..28ebe53e05f87 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_drilldown_wizard/i18n.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/i18n.ts @@ -21,20 +21,6 @@ export const txtEditDrilldownTitle = i18n.translate( } ); -export const txtCreateDrilldownButtonLabel = i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.createDrilldownButtonLabel', - { - defaultMessage: 'Create drilldown', - } -); - -export const txtEditDrilldownButtonLabel = i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.editDrilldownButtonLabel', - { - defaultMessage: 'Save', - } -); - export const txtDeleteDrilldownButtonLabel = i18n.translate( 'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.deleteDrilldownButtonLabel', { diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/index.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/index.ts similarity index 100% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/form_drilldown_wizard/index.tsx rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/form_drilldown_wizard/index.ts diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/hello_bar/hello_bar.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/hello_bar/hello_bar.tsx new file mode 100644 index 0000000000000..08fbcb4ad2421 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/hello_bar/hello_bar.tsx @@ -0,0 +1,24 @@ +/* + * 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 * as React from 'react'; +import { useDrilldownManager } from '../context'; +import { DrilldownHelloBar } from '../../components/drilldown_hello_bar'; + +export const HelloBar: React.FC = ({}) => { + const drilldowns = useDrilldownManager(); + const hideWelcomeMessage = drilldowns.useWelcomeMessage(); + + if (hideWelcomeMessage) return null; + + return ( + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/hello_bar/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/hello_bar/index.ts new file mode 100644 index 0000000000000..54c7f1a8b131b --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/hello_bar/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './hello_bar'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/index.ts new file mode 100644 index 0000000000000..85ee586367406 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export { createPublicDrilldownManager, PublicDrilldownManagerComponent } from './drilldown_manager'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/tabs/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/tabs/index.ts new file mode 100644 index 0000000000000..dde0170c6f13b --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/tabs/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './tabs'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/tabs/tabs.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/tabs/tabs.tsx new file mode 100644 index 0000000000000..c8514d91a343b --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/tabs/tabs.tsx @@ -0,0 +1,66 @@ +/* + * 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 * as React from 'react'; +import { EuiSpacer, EuiTabbedContent, EuiTabbedContentProps } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { useDrilldownManager } from '../context'; +import { FormDrilldownWizard } from '../form_drilldown_wizard'; +import { DrilldownList } from '../drilldown_list'; +import { TemplatePicker } from '../template_picker'; + +export const txtCreateNew = i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.containers.DrilldownManager.createNew', + { + defaultMessage: 'Create new', + } +); + +export const txtManage = i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.containers.DrilldownManager.manage', + { + defaultMessage: 'Manage', + } +); + +const tabs: EuiTabbedContentProps['tabs'] = [ + { + id: 'create', + name: txtCreateNew, + content: ( + <> + + + + + + ), + }, + { + id: 'manage', + name: txtManage, + content: ( + <> + + + + ), + }, +]; + +export const Tabs: React.FC = ({}) => { + const drilldowns = useDrilldownManager(); + const route = drilldowns.useRoute(); + + return ( + id === route[0])} + onTabClick={({ id }) => drilldowns.setRoute([id])} + /> + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/i18n.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/i18n.ts similarity index 57% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/i18n.ts rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/i18n.ts index b6139d02fe508..e947e246081d5 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/components/flyout_list_manage_drilldowns/i18n.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/i18n.ts @@ -7,9 +7,10 @@ import { i18n } from '@kbn/i18n'; -export const txtManageDrilldowns = i18n.translate( - 'xpack.uiActionsEnhanced.drilldowns.components.FlyoutListManageDrilldowns.manageDrilldownsTitle', +export const txtLabel = i18n.translate( + 'xpack.uiActionsEnhanced.drilldownManager.containers.TemplatePicker.label', { - defaultMessage: 'Manage Drilldowns', + defaultMessage: 'Copy existing drilldown', + description: 'Label above template picker table.', } ); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/index.ts new file mode 100644 index 0000000000000..98b9cf637cf9e --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './template_picker'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/template_list.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/template_list.tsx new file mode 100644 index 0000000000000..85422370e88c2 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/template_list.tsx @@ -0,0 +1,63 @@ +/* + * 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 { EuiTitle, EuiSpacer } from '@elastic/eui'; +import * as React from 'react'; +import { + DrilldownTemplateTable, + DrilldownTemplateTableItem, +} from '../../components/drilldown_template_table'; +import { DrilldownTemplate } from '../../types'; +import { useDrilldownManager } from '../context'; +import { txtLabel } from './i18n'; + +export interface TemplateListProps { + items: DrilldownTemplate[]; +} + +export const TemplateList: React.FC = ({ items }) => { + const drilldowns = useDrilldownManager(); + const tableItems: DrilldownTemplateTableItem[] = React.useMemo< + DrilldownTemplateTableItem[] + >(() => { + return items.map((item) => { + const factory = drilldowns.deps.actionFactories.find(({ id }) => id === item.factoryId); + const trigger = drilldowns.deps.getTrigger(item.triggers[0]); + const tableItem: DrilldownTemplateTableItem = { + id: item.id, + name: item.name, + icon: item.icon, + description: item.description, + triggerIncompatible: !drilldowns.deps.triggers.find((t) => t === trigger.id), + }; + + if (factory) { + const context = drilldowns.getActionFactoryContext(); + tableItem.actionName = factory.getDisplayName(context); + tableItem.actionIcon = factory.getIconType(context); + } + if (trigger) { + tableItem.trigger = trigger.title; + } + return tableItem; + }); + }, [drilldowns, items]); + + return ( + <> + +

{txtLabel}

+
+ + + + ); +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/template_picker.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/template_picker.tsx new file mode 100644 index 0000000000000..d6004e71ec60a --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/containers/template_picker/template_picker.tsx @@ -0,0 +1,20 @@ +/* + * 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 * as React from 'react'; +import { useDrilldownManager } from '../context'; +import { TemplateList } from './template_list'; + +export const TemplatePicker: React.FC = () => { + const drilldowns = useDrilldownManager(); + + const { templates } = drilldowns.deps; + + if (!templates || !templates.length) return null; + + return ; +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/hooks/use_sync_observable.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/hooks/use_sync_observable.ts new file mode 100644 index 0000000000000..d5c7bda0377f9 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/hooks/use_sync_observable.ts @@ -0,0 +1,39 @@ +/* + * 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 { useRef, useMemo } from 'react'; +import { Observable, Subscription } from 'rxjs'; +import useIsomorphicLayoutEffect from 'react-use/lib/useIsomorphicLayoutEffect'; +import useUpdate from 'react-use/lib/useUpdate'; + +export const useSyncObservable = (observable: Observable): T => { + const firstRef = useRef(true); + const valueRef = useRef(); + const update = useUpdate(); + const subscriptionRef = useRef(undefined); + subscriptionRef.current = useMemo(() => { + if (subscriptionRef.current) { + subscriptionRef.current.unsubscribe(); + subscriptionRef.current = undefined; + firstRef.current = true; + } + return observable.subscribe((value) => { + valueRef.current = value; + if (firstRef.current) firstRef.current = false; + update(); + }); + }, [observable, update]); + useIsomorphicLayoutEffect( + () => () => { + if (subscriptionRef.current) { + subscriptionRef.current.unsubscribe(); + } + }, + [] + ); + return valueRef.current!; +}; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/index.ts new file mode 100644 index 0000000000000..b00fcf5f33959 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/index.ts @@ -0,0 +1,9 @@ +/* + * 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. + */ + +export * from './types'; +export * from './containers'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_manager_state.test.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_manager_state.test.tsx new file mode 100644 index 0000000000000..5d0642ec80ced --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_manager_state.test.tsx @@ -0,0 +1,319 @@ +/* + * 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 { ActionFactory, MemoryActionStorage } from '../../../dynamic_actions'; +import { DrilldownManagerState, DrilldownManagerStateDeps } from './drilldown_manager_state'; +import { DynamicActionManager } from '../../../dynamic_actions/dynamic_action_manager'; +import { uiActionsEnhancedPluginMock } from '../../../mocks'; +import { Trigger } from 'src/plugins/ui_actions/public'; +import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; +import { notificationServiceMock } from 'src/core/public/mocks'; +import { DrilldownState } from './drilldown_state'; + +class StorageWrapperMock implements IStorageWrapper { + public _data = new Map(); + + get = (key: string) => { + if (!this._data.has(key)) return null; + return this._data.get(key); + }; + + set = (key: string, value: unknown) => { + this._data.set(key, value); + }; + + remove = (key: string) => { + this._data.delete(key); + }; + + clear = () => {}; +} + +const createDrilldownManagerState = () => { + const factory1 = new ActionFactory( + { + id: 'FACTORY1', + CollectConfig: () => ({ render: () => {} }), + supportedTriggers: () => ['TRIGGER1', 'TRIGGER2'], + isConfigValid: () => true, + createConfig: () => ({}), + create: () => ({ + id: 'FACTOR1_ACTION', + execute: async () => {}, + }), + }, + {} + ); + const factory2 = new ActionFactory( + { + id: 'FACTORY2', + CollectConfig: () => ({ render: () => {} }), + supportedTriggers: () => ['TRIGGER2', 'TRIGGER3'], + isConfigValid: () => true, + createConfig: () => ({}), + create: () => ({ + id: 'FACTOR2_ACTION', + execute: async () => {}, + }), + }, + {} + ); + const factory3 = new ActionFactory( + { + id: 'FACTORY3', + CollectConfig: () => ({ render: () => {} }), + supportedTriggers: () => ['TRIGGER_MISSING'], + isConfigValid: () => true, + createConfig: () => ({}), + create: () => ({ + id: 'FACTOR3_ACTION', + execute: async () => {}, + }), + }, + {} + ); + const trigger1: Trigger = { + id: 'TRIGGER1', + }; + const trigger2: Trigger = { + id: 'TRIGGER2', + }; + const trigger3: Trigger = { + id: 'TRIGGER3', + }; + const uiActions = uiActionsEnhancedPluginMock.createPlugin(); + const uiActionsStart = uiActions.doStart(); + (uiActionsStart as any).attachAction = () => {}; + (uiActionsStart as any).detachAction = () => {}; + (uiActionsStart as any).hasActionFactory = (actionFactoryId: string): boolean => { + switch (actionFactoryId) { + case 'FACTORY1': + case 'FACTORY2': + case 'FACTORY3': + return true; + } + return false; + }; + (uiActionsStart as any).getActionFactory = (actionFactoryId: string): ActionFactory => { + switch (actionFactoryId) { + case 'FACTORY1': + return factory1; + case 'FACTORY2': + return factory2; + case 'FACTORY3': + return factory3; + } + throw new Error('Action factory not found.'); + }; + const dynamicActionManager = new DynamicActionManager({ + storage: new MemoryActionStorage(), + isCompatible: async () => true, + uiActions: uiActionsStart, + }); + const storage = new StorageWrapperMock(); + const toastService = notificationServiceMock.createStartContract().toasts; + const deps: DrilldownManagerStateDeps = { + actionFactories: [factory1, factory2, factory3], + dynamicActionManager, + getTrigger: (triggerId: string): Trigger => { + if (triggerId === trigger1.id) return trigger1; + if (triggerId === trigger2.id) return trigger2; + if (triggerId === trigger3.id) return trigger3; + throw new Error('Trigger not found'); + }, + onClose: () => {}, + storage, + toastService, + triggers: ['TRIGGER2', 'TRIGGER3'], + }; + const state = new DrilldownManagerState(deps); + + return { + state, + deps, + factory1, + factory2, + factory3, + trigger1, + trigger2, + trigger3, + uiActionsStart, + dynamicActionManager, + storage, + }; +}; + +test('can select action factory', () => { + const { state, factory1, factory2 } = createDrilldownManagerState(); + expect(state.actionFactory$.getValue()).toBe(undefined); + state.setActionFactory(factory1); + expect(state.actionFactory$.getValue()!.id).toBe(factory1.id); + state.setActionFactory(factory2); + expect(state.actionFactory$.getValue()!.id).toBe(factory2.id); +}); + +test('can edit drilldown draft once action factory is selected', () => { + const { state, factory1 } = createDrilldownManagerState(); + expect(state.getDrilldownState()).toBe(undefined); + state.setActionFactory(factory1); + expect(state.getDrilldownState()).toBeInstanceOf(DrilldownState); + const drilldownState = state.getDrilldownState()!; + expect(drilldownState.factory).toBe(factory1); + expect(drilldownState.name$.getValue()).toBe(''); + drilldownState.setName('My name'); + expect(drilldownState.name$.getValue()).toBe('My name'); +}); + +test('selects intersection of triggers for a drilldown', () => { + const { state, factory1, factory2 } = createDrilldownManagerState(); + state.setActionFactory(factory1); + expect(state.getDrilldownState()!.uiTriggers).toEqual(['TRIGGER2']); + state.setActionFactory(factory2); + expect(state.getDrilldownState()!.uiTriggers).toEqual(['TRIGGER2', 'TRIGGER3']); +}); + +test('when drilldown has only one possible trigger, that trigger is automatically selected', () => { + const { state, factory1 } = createDrilldownManagerState(); + state.setActionFactory(factory1); + const drilldownState = state.getDrilldownState()!; + expect(drilldownState.uiTriggers).toEqual(['TRIGGER2']); + expect(drilldownState.triggers$.getValue()).toEqual(['TRIGGER2']); +}); + +test('when drilldown has more than one possible trigger, the trigger should be selected', () => { + const { state, factory2 } = createDrilldownManagerState(); + state.setActionFactory(factory2); + const drilldownState = state.getDrilldownState()!; + expect(drilldownState.uiTriggers).toEqual(['TRIGGER2', 'TRIGGER3']); + expect(drilldownState.triggers$.getValue()).toEqual([]); + drilldownState.setTriggers(['TRIGGER3']); + expect(drilldownState.triggers$.getValue()).toEqual(['TRIGGER3']); +}); + +test('can change drilldown config', () => { + const { state, factory2 } = createDrilldownManagerState(); + state.setActionFactory(factory2); + const drilldownState = state.getDrilldownState()!; + expect(drilldownState.config$.getValue()).toEqual({}); + drilldownState.setConfig({ foo: 'bar' }); + expect(drilldownState.config$.getValue()).toEqual({ foo: 'bar' }); +}); + +test('can create a drilldown', async () => { + const { state, factory2 } = createDrilldownManagerState(); + state.setActionFactory(factory2); + const drilldownState = state.getDrilldownState()!; + drilldownState.setName('my drill'); + drilldownState.setTriggers(['TRIGGER3']); + drilldownState.setConfig({ foo: 'bar' }); + expect(state.deps.dynamicActionManager.state.get().events.length).toBe(0); + await state.createDrilldown(); + expect(state.deps.dynamicActionManager.state.get().events.length).toBe(1); + expect(state.deps.dynamicActionManager.state.get().events[0]).toEqual({ + eventId: expect.any(String), + triggers: ['TRIGGER3'], + action: { + factoryId: 'FACTORY2', + name: 'my drill', + config: { foo: 'bar' }, + }, + }); +}); + +test('can delete delete a drilldown', async () => { + const { state, factory2 } = createDrilldownManagerState(); + state.setActionFactory(factory2); + const drilldownState = state.getDrilldownState()!; + drilldownState.setName('my drill'); + drilldownState.setTriggers(['TRIGGER3']); + drilldownState.setConfig({ foo: 'bar' }); + expect(state.deps.dynamicActionManager.state.get().events.length).toBe(0); + await state.createDrilldown(); + expect(state.deps.dynamicActionManager.state.get().events.length).toBe(1); + const eventId = state.deps.dynamicActionManager.state.get().events[0].eventId; + await state.onDelete([eventId]); + expect(state.deps.dynamicActionManager.state.get().events.length).toBe(0); +}); + +test('can delete multiple drilldowns', async () => { + const { state, factory1, factory2 } = createDrilldownManagerState(); + + state.setActionFactory(factory2); + const drilldownState1 = state.getDrilldownState()!; + drilldownState1.setName('my drill 1'); + drilldownState1.setTriggers(['TRIGGER3']); + drilldownState1.setConfig({ foo: 'bar-1' }); + await state.createDrilldown(); + + state.setActionFactory(factory2); + const drilldownState2 = state.getDrilldownState()!; + drilldownState2.setName('my drill 2'); + drilldownState2.setTriggers(['TRIGGER2']); + drilldownState2.setConfig({ foo: 'bar-2' }); + await state.createDrilldown(); + + state.setActionFactory(factory1); + const drilldownState3 = state.getDrilldownState()!; + drilldownState3.setName('my drill 0'); + drilldownState3.setTriggers(['TRIGGER2']); + drilldownState3.setConfig({ foo: 'bar-3' }); + await state.createDrilldown(); + + expect(state.deps.dynamicActionManager.state.get().events.length).toBe(3); + const id1 = state.deps.dynamicActionManager.state.get().events[0].eventId; + const id2 = state.deps.dynamicActionManager.state.get().events[1].eventId; + const id3 = state.deps.dynamicActionManager.state.get().events[2].eventId; + await state.onDelete([id1, id3]); + expect(state.deps.dynamicActionManager.state.get().events.length).toBe(1); + expect(state.deps.dynamicActionManager.state.get().events[0]).toEqual({ + eventId: id2, + triggers: ['TRIGGER2'], + action: { + factoryId: 'FACTORY2', + name: 'my drill 2', + config: { foo: 'bar-2' }, + }, + }); +}); + +test('after switching between action factories state is restored', async () => { + const { state, factory1, factory2 } = createDrilldownManagerState(); + + state.setActionFactory(factory2); + const drilldownState1 = state.getDrilldownState()!; + drilldownState1.setName('my drill 1'); + drilldownState1.setTriggers(['TRIGGER3']); + drilldownState1.setConfig({ foo: 'bar-1' }); + + state.setActionFactory(factory1); + const drilldownState2 = state.getDrilldownState()!; + drilldownState2.setName('my drill 2'); + drilldownState2.setTriggers(['TRIGGER2']); + drilldownState2.setConfig({ foo: 'bar-2' }); + + state.setActionFactory(factory2); + const drilldownState3 = state.getDrilldownState()!; + expect(drilldownState3.name$.getValue()).toBe('my drill 1'); + expect(drilldownState3.triggers$.getValue()).toEqual(['TRIGGER3']); + expect(drilldownState3.config$.getValue()).toEqual({ foo: 'bar-1' }); +}); + +describe('welcome message', () => { + test('should show welcome message by default', async () => { + const { state } = createDrilldownManagerState(); + expect(state.hideWelcomeMessage$.getValue()).toBe(false); + }); + + test('can hide welcome message', async () => { + const { state, storage } = createDrilldownManagerState(); + state.hideWelcomeMessage(); + expect(state.hideWelcomeMessage$.getValue()).toBe(true); + expect(storage.get('drilldowns:hidWelcomeMessage')).toBe(true); + }); +}); + +test.todo('drilldown type is not shown if no supported triggers can be picked'); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_manager_state.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_manager_state.ts new file mode 100644 index 0000000000000..0e374010139f0 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_manager_state.ts @@ -0,0 +1,481 @@ +/* + * 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 useObservable from 'react-use/lib/useObservable'; +import { BehaviorSubject } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { SerializableState } from 'src/plugins/kibana_utils/common'; +import { + PublicDrilldownManagerProps, + DrilldownManagerDependencies, + DrilldownTemplate, +} from '../types'; +import { + ActionFactory, + BaseActionFactoryContext, + SerializedAction, + SerializedEvent, +} from '../../../dynamic_actions'; +import { DrilldownState } from './drilldown_state'; +import { + toastDrilldownCreated, + toastDrilldownsCRUDError, + insufficientLicenseLevel, + invalidDrilldownType, + txtDefaultTitle, + toastDrilldownDeleted, + toastDrilldownsDeleted, + toastDrilldownEdited, +} from './i18n'; +import { DrilldownTableItem } from '../components/drilldown_table'; + +const helloMessageStorageKey = `drilldowns:hidWelcomeMessage`; + +export interface DrilldownManagerStateDeps + extends DrilldownManagerDependencies, + PublicDrilldownManagerProps {} + +/** + * An instance of this class holds all the state necessary for Drilldown + * Manager. It also holds all the necessary controllers to change the state. + * + * `` and other container components access this state using + * the `useDrilldownManager()` React hook: + * + * ```ts + * const state = useDrilldownManager(); + * ``` + */ +export class DrilldownManagerState { + /** + * Title displayed at the top of flyout. + */ + private readonly title$ = new BehaviorSubject(txtDefaultTitle); + + /** + * Footer displayed at the bottom of flyout. + */ + private readonly footer$ = new BehaviorSubject(null); + + /** + * Route inside Drilldown Manager flyout that is displayed to the user. Some + * available routes are: + * + * - `['create']` + * - `['new']` + * - `['new', 'DASHBOARD_TO_DASHBOARD_DRILLDOWN']` + * - `['manage']` + * - `['manage', 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy']` + */ + public readonly route$: BehaviorSubject; + + /** + * Whether a drilldowns welcome message should be displayed to the user at + * the very top of the drilldowns manager flyout. + */ + public readonly hideWelcomeMessage$: BehaviorSubject; + + /** + * Currently selected action factory (drilldown type). + */ + public readonly actionFactory$: BehaviorSubject; + + private readonly mapEventToDrilldownItem = (event: SerializedEvent): DrilldownTableItem => { + const actionFactory = this.deps.actionFactories.find( + (factory) => factory.id === event.action.factoryId + ); + const drilldownFactoryContext: BaseActionFactoryContext = { + ...this.deps.placeContext, + triggers: event.triggers as string[], + }; + const firstTrigger = event.triggers[0]; + return { + id: event.eventId, + drilldownName: event.action.name, + actionName: actionFactory?.getDisplayName(drilldownFactoryContext) ?? event.action.factoryId, + icon: actionFactory?.getIconType(drilldownFactoryContext), + error: !actionFactory + ? invalidDrilldownType(event.action.factoryId) // this shouldn't happen for the end user, but useful during development + : !actionFactory.isCompatibleLicense() + ? insufficientLicenseLevel + : undefined, + triggers: event.triggers.map((trigger) => this.deps.getTrigger(trigger as string)), + triggerIncompatible: !this.deps.triggers.find((t) => t === firstTrigger), + }; + }; + public readonly events$ = new BehaviorSubject( + this.deps.dynamicActionManager.state.get().events.map(this.mapEventToDrilldownItem) + ); + + /** + * State for each drilldown type used for new drilldown creation, so when user + * switched between drilldown types the configuration of the previous + * drilldown is preserved. + */ + public readonly drilldownStateByFactoryId = new Map(); + + /** + * Whether user can unlock more drilldown types if they subscribe to a higher + * license tier. + */ + public readonly canUnlockMoreDrilldowns: boolean; + + /** + * Used to show cloning success notification. + */ + public lastCloneRecord: null | { time: number; templateIds: string[] } = null; + + constructor(public readonly deps: DrilldownManagerStateDeps) { + const hideWelcomeMessage = deps.storage.get(helloMessageStorageKey); + this.hideWelcomeMessage$ = new BehaviorSubject(hideWelcomeMessage ?? false); + this.canUnlockMoreDrilldowns = deps.actionFactories.some( + (factory) => !factory.isCompatibleLicense + ); + + deps.dynamicActionManager.state.state$ + .pipe(map((state) => state.events.map(this.mapEventToDrilldownItem))) + .subscribe(this.events$); + + let { initialRoute = '' } = deps; + if (!initialRoute) initialRoute = 'manage'; + else if (initialRoute[0] === '/') initialRoute = initialRoute.substr(1); + this.route$ = new BehaviorSubject(initialRoute.split('/')); + + this.actionFactory$ = new BehaviorSubject( + this.getActiveActionFactory() + ); + this.route$.pipe(map(() => this.getActiveActionFactory())).subscribe(this.actionFactory$); + } + + /** + * Set flyout main heading text. + * @param title New title. + */ + public setTitle(title: React.ReactNode) { + this.title$.next(title); + } + + /** + * Set the new flyout footer that renders at the very bottom of the Drilldown + * Manager flyout. + * @param footer New title. + */ + public setFooter(footer: React.ReactNode) { + this.footer$.next(footer); + } + + /** + * Set the flyout main heading back to its default state. + */ + public resetTitle() { + this.setTitle(txtDefaultTitle); + } + + /** + * Change the screen of Drilldown Manager. + */ + public setRoute(route: string[]): void { + if (route[0] === 'manage') this.deps.closeAfterCreate = false; + this.route$.next(route); + } + + /** + * Callback called to hide drilldowns welcome message, and remember in local + * storage that user opted to hide this message. + */ + public readonly hideWelcomeMessage = (): void => { + this.hideWelcomeMessage$.next(true); + this.deps.storage.set(helloMessageStorageKey, true); + }; + + /** + * Select a different action factory. + */ + public setActionFactory(actionFactory: undefined | ActionFactory): void { + if (!actionFactory) { + const route = this.route$.getValue(); + if (route[0] === 'new' && route.length > 1) this.setRoute(['new']); + return; + } + + if (!this.drilldownStateByFactoryId.has(actionFactory.id)) { + const oldActionFactory = this.getActiveActionFactory(); + const oldDrilldownState = !!oldActionFactory + ? this.drilldownStateByFactoryId.get(oldActionFactory.id) + : undefined; + const context = this.getActionFactoryContext(); + const drilldownState = new DrilldownState({ + factory: actionFactory, + placeTriggers: this.deps.triggers, + placeContext: this.deps.placeContext || {}, + name: this.pickName( + !!oldDrilldownState + ? oldDrilldownState.name$.getValue() + : actionFactory.getDisplayName(this.getActionFactoryContext()) + ), + triggers: [], + config: actionFactory.createConfig(context), + }); + this.drilldownStateByFactoryId.set(actionFactory.id, drilldownState); + } + + this.route$.next(['new', actionFactory.id]); + } + + public getActiveActionFactory(): undefined | ActionFactory { + const [step1, id] = this.route$.getValue(); + if (step1 !== 'new' || !id) return undefined; + return this.deps.actionFactories.find((factory) => factory.id === id); + } + + /** + * Close the drilldown flyout. + */ + public readonly close = (): void => { + this.deps.onClose(); + }; + + /** + * Get action factory context, which also contains a custom place context + * provided by the user who triggered rendering of the . + */ + public getActionFactoryContext(): BaseActionFactoryContext { + const placeContext = this.deps.placeContext ?? []; + const context: BaseActionFactoryContext = { + ...placeContext, + triggers: [], + }; + + return context; + } + + /** + * Get state object of the drilldown which is currently being created. + */ + public getDrilldownState(): undefined | DrilldownState { + const actionFactory = this.getActiveActionFactory(); + if (!actionFactory) return undefined; + const drilldownState = this.drilldownStateByFactoryId.get(actionFactory.id); + return drilldownState; + } + + /** + * Called when user presses "Create drilldown" button to save the + * currently edited drilldown. + */ + public async createDrilldown(): Promise { + const { dynamicActionManager, toastService } = this.deps; + const drilldownState = this.getDrilldownState(); + + if (!drilldownState) return; + + try { + const event = drilldownState.serialize(); + const triggers = drilldownState.triggers$.getValue(); + + await dynamicActionManager.createEvent(event, triggers); + toastService.addSuccess({ + title: toastDrilldownCreated.title(drilldownState.name$.getValue()), + text: toastDrilldownCreated.text, + }); + this.drilldownStateByFactoryId.delete(drilldownState.factory.id); + if (this.deps.closeAfterCreate) { + this.deps.onClose(); + } else { + this.setRoute(['manage']); + } + } catch (error) { + toastService.addError(error, { + title: toastDrilldownsCRUDError, + }); + throw error; + } + } + + /** + * Deletes a list of drilldowns and shows toast notifications to the user. + * + * @param ids Drilldown IDs. + */ + public readonly onDelete = (ids: string[]) => { + (async () => { + const { dynamicActionManager, toastService } = this.deps; + try { + await dynamicActionManager.deleteEvents(ids); + this.deps.toastService.addSuccess( + ids.length === 1 + ? { + title: toastDrilldownDeleted.title, + text: toastDrilldownDeleted.text, + } + : { + title: toastDrilldownsDeleted.title(ids.length), + text: toastDrilldownsDeleted.text, + } + ); + } catch (error) { + toastService.addError(error, { + title: toastDrilldownsCRUDError, + }); + } + })().catch(console.error); // eslint-disable-line + }; + + /** + * Clone a list of selected templates. + */ + public readonly onClone = async (templateIds: string[]) => { + const { templates } = this.deps; + if (!templates) return; + const templatesToClone: DrilldownTemplate[] = templateIds + .map((templateId) => templates.find(({ id }) => id === templateId)) + .filter(Boolean) as DrilldownTemplate[]; + + for (const template of templatesToClone) { + await this.cloneTemplate(template); + } + + this.lastCloneRecord = { + time: Date.now(), + templateIds, + }; + this.setRoute(['manage']); + }; + + private async cloneTemplate(template: DrilldownTemplate) { + const { dynamicActionManager } = this.deps; + const name = this.pickName(template.name); + const action: SerializedAction = { + factoryId: template.factoryId, + name, + config: (template.config || {}) as SerializableState, + }; + await dynamicActionManager.createEvent(action, template.triggers); + } + + /** + * Checks if drilldown with such a name already exists. + */ + private hasDrilldownWithName(name: string): boolean { + const { events } = this.deps.dynamicActionManager.state.get(); + for (const event of events) if (event.action.name === name) return true; + return false; + } + + /** + * Picks a unique name for the cloned drilldown. Adds "(copy)", "(copy 1)", + * "(copy 2)", etc. if drilldown with such name already exists. + */ + private pickName(name: string): string { + if (this.hasDrilldownWithName(name)) { + const matches = name.match(/(.*) (\(copy[^\)]*\))/); + if (matches) name = matches[1]; + for (let i = 0; i < 100; i++) { + const proposedName = !i ? `${name} (copy)` : `${name} (copy ${i})`; + const exists = this.hasDrilldownWithName(proposedName); + if (!exists) return proposedName; + } + } + return name; + } + + public readonly onCreateFromTemplate = async (templateId: string) => { + const { templates } = this.deps; + if (!templates) return; + const template = templates.find(({ id }) => id === templateId); + if (!template) return; + const actionFactory = this.deps.actionFactories.find(({ id }) => id === template.factoryId); + if (!actionFactory) return; + this.setActionFactory(actionFactory); + const drilldownState = this.getDrilldownState(); + if (drilldownState) { + drilldownState.setName(this.pickName(template.name)); + drilldownState.setTriggers(template.triggers); + drilldownState.setConfig(template.config as SerializableState); + } + }; + + public readonly onCreateFromDrilldown = async (eventId: string) => { + const { dynamicActionManager } = this.deps; + const { events } = dynamicActionManager.state.get(); + const event = events.find((ev) => ev.eventId === eventId); + if (!event) return; + const actionFactory = this.deps.actionFactories.find(({ id }) => id === event.action.factoryId); + if (!actionFactory) return; + this.setActionFactory(actionFactory); + const drilldownState = this.getDrilldownState(); + if (drilldownState) { + drilldownState.setName(this.pickName(event.action.name)); + drilldownState.setTriggers(event.triggers); + drilldownState.setConfig(event.action.config); + } + }; + + /** + * Returns the state object of an existing drilldown for editing purposes. + * + * @param eventId ID of the saved dynamic action event. + */ + public createEventDrilldownState(eventId: string): null | DrilldownState { + const { dynamicActionManager, actionFactories, triggers: placeTriggers } = this.deps; + const { events } = dynamicActionManager.state.get(); + const event = events.find((ev) => ev.eventId === eventId); + if (!event) return null; + const factory = actionFactories.find(({ id }) => id === event.action.factoryId); + if (!factory) return null; + const { action, triggers } = event; + const { name, config } = action; + const state = new DrilldownState({ + factory, + placeContext: this.getActionFactoryContext(), + placeTriggers, + name, + config, + triggers, + }); + return state; + } + + /** + * Save edits to an existing drilldown. + * + * @param eventId ID of the saved dynamic action event. + * @param drilldownState Latest state of the drilldown as edited by the user. + */ + public async updateEvent(eventId: string, drilldownState: DrilldownState): Promise { + const { dynamicActionManager, toastService } = this.deps; + const action = drilldownState.serialize(); + + try { + await dynamicActionManager.updateEvent(eventId, action, drilldownState.triggers$.getValue()); + toastService.addSuccess({ + title: toastDrilldownEdited.title(action.name), + text: toastDrilldownEdited.text, + }); + this.setRoute(['manage']); + } catch (error) { + toastService.addError(error, { + title: toastDrilldownsCRUDError, + }); + throw error; + } + } + + // Below are convenience React hooks for consuming observables in connected + // React components. + + /* eslint-disable react-hooks/rules-of-hooks */ + public readonly useTitle = () => useObservable(this.title$, this.title$.getValue()); + public readonly useFooter = () => useObservable(this.footer$, this.footer$.getValue()); + public readonly useRoute = () => useObservable(this.route$, this.route$.getValue()); + public readonly useWelcomeMessage = () => + useObservable(this.hideWelcomeMessage$, this.hideWelcomeMessage$.getValue()); + public readonly useActionFactory = () => + useObservable(this.actionFactory$, this.actionFactory$.getValue()); + public readonly useEvents = () => useObservable(this.events$, this.events$.getValue()); + /* eslint-enable react-hooks/rules-of-hooks */ +} diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_state.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_state.ts new file mode 100644 index 0000000000000..f80ad30d34bb8 --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/drilldown_state.ts @@ -0,0 +1,242 @@ +/* + * 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 useObservable from 'react-use/lib/useObservable'; +import { Observable, BehaviorSubject, combineLatest } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { + ActionFactory, + BaseActionConfig, + BaseActionFactoryContext, + SerializedAction, +} from '../../../dynamic_actions'; +import { useSyncObservable } from '../hooks/use_sync_observable'; +import { ActionFactoryPlaceContext } from '../types'; + +export interface DrilldownStateDeps { + /** + * Action factory, i.e. drilldown, which we are creating. + */ + factory: ActionFactory; + + /** + * List of all triggers the current place supports. + */ + placeTriggers: string[]; + + /** + * Special opaque context object provided by the place from where the + * Drilldown Manager was opened. + */ + placeContext: ActionFactoryPlaceContext; + + /** + * Initial name of the drilldown instance. + */ + name?: string; + + /** + * Initially selected triggers of the drilldown instance. + */ + triggers?: string[]; + + /** + * Initial config of the drilldown instance. + */ + config?: BaseActionConfig; +} + +/** + * An instance of this class represents UI states of a single drilldown which + * is currently being created or edited. + */ +export class DrilldownState { + /** + * Drilldown type used to configure this drilldown. + */ + public readonly factory: ActionFactory; + + /** + * Opaque action factory context object excluding the `triggers` attribute. + */ + public readonly placeContext: ActionFactoryPlaceContext; + + /** + * User entered name of this drilldown. + */ + public readonly name$: BehaviorSubject; + + /** + * Whether the `name$` is valid or is in an error state. + */ + public readonly nameError$: Observable; + + /** + * List of all triggers the place which opened the Drilldown Manager supports. + */ + public readonly placeTriggers: string[]; + + /** + * List of all triggers from which the user can pick in UI for this specific + * drilldown. This is the selection list we show to the user. It is an + * intersection of all triggers supported by current place with the triggers + * that the action factory supports. + */ + public readonly uiTriggers: string[]; + + /** + * User selected triggers. (Currently in UI we support user picking just one trigger). + */ + public readonly triggers$: BehaviorSubject; + + /** + * Error identifier, in case `triggers$` is in an error state. + */ + public readonly triggersError$: Observable; + + /** + * Current action factory (drilldown) configuration, i.e. drilldown + * configuration object, which will be serialized and persisted in storage. + */ + public readonly config$: BehaviorSubject; + + /** + * Error identifier, in case `config$` is in an error state. + */ + public readonly configError$: Observable; + + /** + * Whether the drilldown state is in an error and should not be saved. I value + * is `undefined`, there is no error. + */ + public readonly error$: Observable; + + constructor({ + factory, + placeTriggers, + placeContext, + name = '', + triggers = [], + config = {}, + }: DrilldownStateDeps) { + this.factory = factory; + this.placeTriggers = placeTriggers; + this.placeContext = placeContext; + this.name$ = new BehaviorSubject(name); + this.triggers$ = new BehaviorSubject(triggers); + this.config$ = new BehaviorSubject(config); + + const triggersFactorySupports = this.factory.supportedTriggers(); + this.uiTriggers = triggersFactorySupports.filter((trigger) => + this.placeTriggers.includes(trigger) + ); + + // Pre-select a trigger if there is only one trigger for user to choose from. + // In case there is only one possible trigger, UI will not display a trigger picker. + if (this.uiTriggers.length === 1) this.triggers$.next([this.uiTriggers[0]]); + + this.nameError$ = this.name$.pipe( + map((currentName) => { + if (!currentName) return 'NAME_EMPTY'; + return undefined; + }) + ); + + this.triggersError$ = this.triggers$.pipe( + map((currentTriggers) => { + if (!currentTriggers.length) return 'NO_TRIGGERS_SELECTED'; + return undefined; + }) + ); + + this.configError$ = this.config$.pipe( + map((conf) => { + if (!this.factory.isConfigValid(conf, this.getFactoryContext())) return 'INVALID_CONFIG'; + return undefined; + }) + ); + + this.error$ = combineLatest([this.nameError$, this.triggersError$, this.configError$]).pipe( + map( + ([nameError, configError, triggersError]) => + nameError || triggersError || configError || undefined + ) + ); + } + + /** + * Change the name of the drilldown. + */ + public readonly setName = (name: string): void => { + this.name$.next(name); + }; + + /** + * Change the list of user selected triggers. + */ + public readonly setTriggers = (triggers: string[]): void => { + this.triggers$.next(triggers); + }; + + /** + * Update the current drilldown configuration. + */ + public readonly setConfig = (config: BaseActionConfig): void => { + this.config$.next(config); + }; + + public getFactoryContext(): BaseActionFactoryContext { + return { + ...this.placeContext, + triggers: this.triggers$.getValue(), + }; + } + + /** + * Serialize the current drilldown draft into a serializable action which + * is persisted to disk. + */ + public serialize(): SerializedAction { + return { + factoryId: this.factory.id, + name: this.name$.getValue(), + config: this.config$.getValue(), + }; + } + + /** + * Returns a list of all triggers from which user can pick in UI, for this + * specific drilldown. + */ + public getAllDrilldownTriggers(): string[] { + const triggersFactorySupports = this.factory.supportedTriggers(); + const uiTriggers = triggersFactorySupports.filter((trigger) => + this.placeTriggers.includes(trigger) + ); + return uiTriggers; + } + + public isValid(): boolean { + if (!this.name$.getValue()) return false; + const config = this.config$.getValue(); + if (!config) return false; + const triggers = this.triggers$.getValue(); + if (triggers.length < 1) return false; + if (!this.factory.isConfigValid(config, this.getFactoryContext())) return false; + return true; + } + + // Below are convenience React hooks for consuming observables in connected + // React components. + + /* eslint-disable react-hooks/rules-of-hooks */ + public readonly useName = () => useObservable(this.name$, this.name$.getValue()); + public readonly useTriggers = () => useObservable(this.triggers$, this.triggers$.getValue()); + public readonly useConfig = () => useObservable(this.config$, this.config$.getValue()); + public readonly useError = () => useSyncObservable(this.error$); + /* eslint-enable react-hooks/rules-of-hooks */ +} diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/i18n.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/i18n.ts similarity index 76% rename from x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/i18n.ts rename to x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/i18n.ts index b95f69e875ebc..c9b49b5ff9346 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/i18n.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/i18n.ts @@ -87,3 +87,31 @@ export const toastDrilldownsCRUDError = i18n.translate( description: 'Title for generic error toast when persisting drilldown updates failed', } ); + +export const insufficientLicenseLevel = i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.insufficientLicenseLevelError', + { + defaultMessage: 'Insufficient license level', + description: + 'User created drilldown with higher license type, but then downgraded the license. This error is shown in the list near created drilldown', + } +); + +export const invalidDrilldownType = (type: string) => + i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.invalidDrilldownType', + { + defaultMessage: "Drilldown type {type} doesn't exist", + values: { + type, + }, + } + ); + +export const txtDefaultTitle = i18n.translate( + 'xpack.uiActionsEnhanced.drilldowns.drilldownManager.state.defaultTitle', + { + defaultMessage: 'Drilldowns', + description: 'Drilldowns flyout title.', + } +); diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/index.ts new file mode 100644 index 0000000000000..42dcc4510622a --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/state/index.ts @@ -0,0 +1,9 @@ +/* + * 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. + */ + +export * from './drilldown_state'; +export * from './drilldown_manager_state'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/types.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/types.ts new file mode 100644 index 0000000000000..1ff6053126e1c --- /dev/null +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/drilldown_manager/types.ts @@ -0,0 +1,162 @@ +/* + * 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 { ToastsStart } from 'kibana/public'; +import { IStorageWrapper } from '../../../../../../src/plugins/kibana_utils/public'; +import { Trigger } from '../../../../../../src/plugins/ui_actions/public'; +import { + ActionFactory, + BaseActionFactoryContext, + DynamicActionManager, +} from '../../dynamic_actions'; + +/** + * Interface used as piece of ActionFactoryContext that is passed in from + * drilldown wizard component to action factories. Omitted values are added + * inside the wizard and then full {@link BaseActionFactoryContext} passed into + * action factory methods + */ +export type ActionFactoryPlaceContext< + ActionFactoryContext extends BaseActionFactoryContext = BaseActionFactoryContext +> = Omit; + +/** + * This are props of the public React component which is + * exposed from this plugin's contract, user can change these props every time + * the public is re-rendered. + */ +export interface PublicDrilldownManagerProps { + /** + * Implementation of reactive storage interface for drilldowns. Dynamic action + * manager is responsible for permanently persisting drilldowns, i.e. + * drilldown name, type, and config. It exposes observables for reactive UI + * updates. + */ + dynamicActionManager: DynamicActionManager; + + /** + * Initial screen which Drilldown Manager should display when it first opens. + * Afterwards the state of the currently visible screen is controlled by the + * Drilldown Manager. + * + * Possible values of the route: + * + * - `/create` --- opens with "Create new" tab selected. + * - `/new` --- opens with the "Create new" tab selected showing new drilldown form. + * - `/manage` --- opens with selected "Manage" tab. + * - `/manage/yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy` --- opens in edit mode where + * drilldown with ID `yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy` is being edited. + */ + initialRoute?: string; + + /** + * Callback called when drilldown flyout should be closed. + */ + onClose: () => void; + + /** + * List of possible triggers in current context + */ + triggers: string[]; + + /** + * Extra action factory context passed into action factories CollectConfig, getIconType, getDisplayName and etc... + */ + placeContext?: ActionFactoryPlaceContext; + + /** + * List of drilldown templates, which will be displayed to user for fast + * drilldown creation flow. + */ + templates?: DrilldownTemplate[]; + + /** + * Whether to close the drilldown flyout after a drilldown was created + */ + closeAfterCreate?: boolean; +} + +/** + * Template for a pre-configured new drilldown, this gives ability to create a + * drilldown from a template instead of user creating a drilldown from scratch. + * This is used in "drilldown cloning" functionality, where drilldowns can be + * cloned from one dashboard panel to another. + */ +export interface DrilldownTemplate { + /** + * Any string that uniquely identifies this item in a list of `DrilldownTemplate[]`. + */ + id: string; + + /** + * EUI icon display next to the description. + */ + icon?: string; + + /** + * A user facing text that provides information about the source of this template. + */ + description: string; + + /** + * Drilldown type, dynamic action factory ID. + */ + factoryId: string; + + /** + * Suggested new name of the cloned drilldown. If a drilldown with such suggested + * name already exists at current place, a suffix like " (copy 1)" will be added. + */ + name: string; + + /** + * Pre-selected triggers. + */ + triggers: string[]; + + /** + * Preliminary configuration of the new drilldown, to be used in the dynamicaction factory. + */ + config: unknown; +} + +/** + * These are static global dependencies of the wired in + * during the setup life-cycle of the plugin. + */ +export interface DrilldownManagerDependencies { + /** + * List of registered UI Actions action factories, i.e. drilldowns. + */ + actionFactories: ActionFactory[]; + + /** + * Trigger getter from UI Actions trigger registry. + */ + getTrigger: (triggerId: string) => Trigger; + + /** + * Implementation of local storage interface for persisting user preferences, + * e.g. user can dismiss the welcome message. + */ + storage: IStorageWrapper; + + /** + * Services for displaying user toast notifications. + */ + toastService: ToastsStart; + + /** + * Link to drilldowns user facing docs on corporate website. + */ + docsLink?: string; + + /** + * Link to trigger picker user facing docs on corporate website. + */ + triggerPickerDocsLink?: string; +} diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_compatible_action_factories_for_current_context.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_compatible_action_factories_for_current_context.ts deleted file mode 100644 index edb598ba179a3..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_compatible_action_factories_for_current_context.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 { useEffect, useState } from 'react'; -import { ActionFactory, BaseActionFactoryContext } from '../../dynamic_actions'; - -export function useCompatibleActionFactoriesForCurrentContext< - Context extends BaseActionFactoryContext = BaseActionFactoryContext ->(actionFactories: ActionFactory[], context: Context) { - const [compatibleActionFactories, setCompatibleActionFactories] = useState(); - useEffect(() => { - let canceled = false; - async function updateCompatibleFactoriesForContext() { - const compatibility = await Promise.all( - actionFactories.map((factory) => factory.isCompatible(context)) - ); - if (canceled) return; - - const compatibleFactories = actionFactories.filter((_, i) => compatibility[i]); - const triggerSupportedFactories = compatibleFactories.filter((factory) => - factory.supportedTriggers().some((trigger) => context.triggers.includes(trigger)) - ); - setCompatibleActionFactories(triggerSupportedFactories); - } - updateCompatibleFactoriesForContext(); - return () => { - canceled = true; - }; - }, [context, actionFactories, context.triggers]); - - return compatibleActionFactories; -} diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_drilldown_state_manager.tsx b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_drilldown_state_manager.tsx deleted file mode 100644 index 6a9dc5fcc34fa..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_drilldown_state_manager.tsx +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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 { useState } from 'react'; -import { ToastsStart } from 'kibana/public'; -import useMountedState from 'react-use/lib/useMountedState'; -import { useContainerState } from '../../../../../../src/plugins/kibana_utils/public'; -import { - toastDrilldownCreated, - toastDrilldownDeleted, - toastDrilldownEdited, - toastDrilldownsCRUDError, - toastDrilldownsDeleted, -} from './i18n'; -import { DynamicActionManager, SerializedAction } from '../../dynamic_actions'; - -export function useDrilldownsStateManager( - actionManager: DynamicActionManager, - toastService: ToastsStart -) { - const { events: drilldowns } = useContainerState(actionManager.state); - const [isLoading, setIsLoading] = useState(false); - const isMounted = useMountedState(); - - async function run(op: () => Promise) { - setIsLoading(true); - try { - await op(); - } catch (e) { - toastService.addError(e, { - title: toastDrilldownsCRUDError, - }); - if (!isMounted) return; - setIsLoading(false); - return; - } - } - - async function createDrilldown(action: SerializedAction, selectedTriggers: string[]) { - await run(async () => { - await actionManager.createEvent(action, selectedTriggers); - toastService.addSuccess({ - title: toastDrilldownCreated.title(action.name), - text: toastDrilldownCreated.text, - }); - }); - } - - async function editDrilldown( - drilldownId: string, - action: SerializedAction, - selectedTriggers: string[] - ) { - await run(async () => { - await actionManager.updateEvent(drilldownId, action, selectedTriggers); - toastService.addSuccess({ - title: toastDrilldownEdited.title(action.name), - text: toastDrilldownEdited.text, - }); - }); - } - - async function deleteDrilldown(drilldownIds: string | string[]) { - await run(async () => { - drilldownIds = Array.isArray(drilldownIds) ? drilldownIds : [drilldownIds]; - await actionManager.deleteEvents(drilldownIds); - toastService.addSuccess( - drilldownIds.length === 1 - ? { - title: toastDrilldownDeleted.title, - text: toastDrilldownDeleted.text, - } - : { - title: toastDrilldownsDeleted.title(drilldownIds.length), - text: toastDrilldownsDeleted.text, - } - ); - }); - } - - return { drilldowns, isLoading, createDrilldown, editDrilldown, deleteDrilldown }; -} diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_welcome_message.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_welcome_message.ts deleted file mode 100644 index 324c3b94aa8c2..0000000000000 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/hooks/use_welcome_message.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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 { useState } from 'react'; -import { IStorageWrapper } from '../../../../../../src/plugins/kibana_utils/public'; - -export function useWelcomeMessage(storage: IStorageWrapper): [boolean, () => void] { - const key = `drilldowns:hidWelcomeMessage`; - const [hideWelcomeMessage, setHideWelcomeMessage] = useState(storage.get(key) ?? false); - - return [ - !hideWelcomeMessage, - () => { - if (hideWelcomeMessage) return; - setHideWelcomeMessage(true); - storage.set(key, true); - }, - ]; -} diff --git a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/index.ts b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/index.ts index b876202068a01..ebaa845409e2a 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/drilldowns/index.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/drilldowns/index.ts @@ -6,4 +6,4 @@ */ export * from './drilldown_definition'; -export * from './components'; +export * from './drilldown_manager'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/action_factory.ts b/x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/action_factory.ts index 0c67fa807ef03..bd5dc5794cb59 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/action_factory.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/action_factory.ts @@ -6,23 +6,23 @@ */ import { uiToReactComponent } from '../../../../../src/plugins/kibana_react/public'; -import { UiActionsPresentable as Presentable } from '../../../../../src/plugins/ui_actions/public'; -import { ActionFactoryDefinition } from './action_factory_definition'; -import { Configurable } from '../../../../../src/plugins/kibana_utils/public'; -import { +import type { UiActionsPresentable as Presentable } from '../../../../../src/plugins/ui_actions/public'; +import type { ActionFactoryDefinition } from './action_factory_definition'; +import type { Configurable } from '../../../../../src/plugins/kibana_utils/public'; +import type { BaseActionConfig, BaseActionFactoryContext, SerializedAction, SerializedEvent, } from './types'; -import { ILicense, LicensingPluginStart } from '../../../licensing/public'; -import { UiActionsActionDefinition as ActionDefinition } from '../../../../../src/plugins/ui_actions/public'; -import { SavedObjectReference } from '../../../../../src/core/types'; -import { PersistableState } from '../../../../../src/plugins/kibana_utils/common'; +import type { ILicense, LicensingPluginStart } from '../../../licensing/public'; +import type { UiActionsActionDefinition as ActionDefinition } from '../../../../../src/plugins/ui_actions/public'; +import type { SavedObjectReference } from '../../../../../src/core/types'; +import type { PersistableState } from '../../../../../src/plugins/kibana_utils/common'; export interface ActionFactoryDeps { - readonly getLicense: () => ILicense; - readonly getFeatureUsageStart: () => LicensingPluginStart['featureUsage']; + readonly getLicense?: () => ILicense; + readonly getFeatureUsageStart?: () => LicensingPluginStart['featureUsage']; } export class ActionFactory< @@ -82,7 +82,7 @@ export class ActionFactory< * compatible with current license? */ public isCompatibleLicense() { - if (!this.minimalLicense) return true; + if (!this.minimalLicense || !this.deps.getLicense) return true; const license = this.deps.getLicense(); return license.isAvailable && license.isActive && license.hasAtLeast(this.minimalLicense); } @@ -110,7 +110,7 @@ export class ActionFactory< } private notifyFeatureUsage(): void { - if (!this.minimalLicense || !this.licenseFeatureName) return; + if (!this.minimalLicense || !this.licenseFeatureName || !this.deps.getFeatureUsageStart) return; this.deps .getFeatureUsageStart() .notifyUsage(this.licenseFeatureName) diff --git a/x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/dynamic_action_manager.ts b/x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/dynamic_action_manager.ts index 6821999ee2c75..fbc3d7229df6f 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/dynamic_action_manager.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/dynamic_actions/dynamic_action_manager.ts @@ -213,6 +213,11 @@ export class DynamicActionManager { * @param triggers List of triggers to which action should react. */ public async createEvent(action: SerializedAction, triggers: string[]) { + if (!triggers.length) { + // This error should never happen, hence it is not translated. + throw new Error('No triggers selected for event.'); + } + const event: SerializedEvent = { eventId: uuidv4(), triggers, diff --git a/x-pack/plugins/ui_actions_enhanced/public/index.ts b/x-pack/plugins/ui_actions_enhanced/public/index.ts index e768f829eff69..b8e4fcbd916e6 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/index.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/index.ts @@ -35,5 +35,8 @@ export { export { DynamicActionsState } from './services/ui_actions_service_enhancements'; -export { DrilldownDefinition as UiActionsEnhancedDrilldownDefinition } from './drilldowns'; +export { + DrilldownDefinition as UiActionsEnhancedDrilldownDefinition, + DrilldownTemplate as UiActionsEnhancedDrilldownTemplate, +} from './drilldowns'; export * from './drilldowns/url_drilldown'; diff --git a/x-pack/plugins/ui_actions_enhanced/public/mocks.ts b/x-pack/plugins/ui_actions_enhanced/public/mocks.ts index 514569a7ae336..33591c9383703 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/mocks.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/mocks.ts @@ -31,7 +31,7 @@ const createStartContract = (): Start => { getActionFactories: jest.fn(), getActionFactory: jest.fn(), hasActionFactory: jest.fn(), - FlyoutManageDrilldowns: jest.fn(), + DrilldownManager: jest.fn(), telemetry: jest.fn(), extract: jest.fn(), inject: jest.fn(), diff --git a/x-pack/plugins/ui_actions_enhanced/public/plugin.ts b/x-pack/plugins/ui_actions_enhanced/public/plugin.ts index bfb9e47beb014..b83f3288b05af 100644 --- a/x-pack/plugins/ui_actions_enhanced/public/plugin.ts +++ b/x-pack/plugins/ui_actions_enhanced/public/plugin.ts @@ -26,7 +26,7 @@ import { CustomTimeRangeBadge } from './custom_time_range_badge'; import { CommonlyUsedRange } from './types'; import { UiActionsServiceEnhancements } from './services'; import { ILicense, LicensingPluginSetup, LicensingPluginStart } from '../../licensing/public'; -import { createFlyoutManageDrilldowns } from './drilldowns'; +import { createPublicDrilldownManager, PublicDrilldownManagerComponent } from './drilldowns'; import { createStartServicesGetter, Storage } from '../../../../src/plugins/kibana_utils/public'; import { dynamicActionEnhancement } from './dynamic_actions/dynamic_action_enhancement'; @@ -57,7 +57,7 @@ export interface StartContract | 'extract' | 'inject' > { - FlyoutManageDrilldowns: ReturnType; + DrilldownManager: PublicDrilldownManagerComponent; } export class AdvancedUiActionsPublicPlugin @@ -118,7 +118,7 @@ export class AdvancedUiActionsPublicPlugin return { ...uiActions, ...this.enhancements!, - FlyoutManageDrilldowns: createFlyoutManageDrilldowns({ + DrilldownManager: createPublicDrilldownManager({ actionFactories: this.enhancements!.getActionFactories(), getTrigger: (triggerId) => uiActions.getTrigger(triggerId), storage: new Storage(window?.localStorage), diff --git a/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_dashboard_drilldown.ts b/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_dashboard_drilldown.ts index 68b057e9487ce..b891d3cce3ba0 100644 --- a/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_dashboard_drilldown.ts +++ b/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_dashboard_drilldown.ts @@ -12,6 +12,7 @@ const DRILLDOWN_TO_PIE_CHART_NAME = 'Go to pie chart dashboard'; const DRILLDOWN_TO_AREA_CHART_NAME = 'Go to area chart dashboard'; export default function ({ getService, getPageObjects }: FtrProviderContext) { + const testSubjects = getService('testSubjects'); const dashboardPanelActions = getService('dashboardPanelActions'); const dashboardDrilldownPanelActions = getService('dashboardDrilldownPanelActions'); const dashboardDrilldownsManage = getService('dashboardDrilldownsManage'); @@ -27,7 +28,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const log = getService('log'); const browser = getService('browser'); const retry = getService('retry'); - const testSubjects = getService('testSubjects'); const filterBar = getService('filterBar'); const security = getService('security'); const spaces = getService('spaces'); @@ -49,18 +49,18 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.gotoDashboardEditMode( dashboardDrilldownsManage.DASHBOARD_WITH_PIE_CHART_NAME ); - // create drilldown await dashboardPanelActions.openContextMenu(); await dashboardDrilldownPanelActions.expectExistsCreateDrilldownAction(); await dashboardDrilldownPanelActions.clickCreateDrilldown(); await dashboardDrilldownsManage.expectsCreateDrilldownFlyoutOpen(); + await testSubjects.click('actionFactoryItem-DASHBOARD_TO_DASHBOARD_DRILLDOWN'); await dashboardDrilldownsManage.fillInDashboardToDashboardDrilldownWizard({ drilldownName: DRILLDOWN_TO_AREA_CHART_NAME, destinationDashboardTitle: dashboardDrilldownsManage.DASHBOARD_WITH_AREA_CHART_NAME, }); await dashboardDrilldownsManage.saveChanges(); - await dashboardDrilldownsManage.expectsCreateDrilldownFlyoutClose(); + await dashboardDrilldownsManage.closeFlyout(); // check that drilldown notification badge is shown expect(await PageObjects.dashboard.getPanelDrilldownCount()).to.be(1); diff --git a/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_url_drilldown.ts b/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_url_drilldown.ts index e0b6c6a5f4803..5ed118c9b753a 100644 --- a/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_url_drilldown.ts +++ b/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_url_drilldown.ts @@ -39,6 +39,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const urlTemplate = `{{kibanaUrl}}/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:'{{date event.from}}',to:'{{date event.to}}'))&_a=(columns:!(_source),filters:{{rison context.panel.filters}},index:'{{context.panel.indexPatternId}}',interval:auto,query:(language:{{context.panel.query.language}},query:'{{context.panel.query.query}}'),sort:!())`; + await testSubjects.click('actionFactoryItem-URL_DRILLDOWN'); await dashboardDrilldownsManage.fillInDashboardToURLDrilldownWizard({ drilldownName: DRILLDOWN_TO_DISCOVER_URL, destinationURLTemplate: urlTemplate, @@ -49,7 +50,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await testSubjects.click('urlDrilldownOpenInNewTab'); await dashboardDrilldownsManage.saveChanges(); - await dashboardDrilldownsManage.expectsCreateDrilldownFlyoutClose(); + await dashboardDrilldownsManage.closeFlyout(); // check that drilldown notification badge is shown expect(await PageObjects.dashboard.getPanelDrilldownCount()).to.be(2); diff --git a/x-pack/test/functional/services/dashboard/drilldowns_manage.ts b/x-pack/test/functional/services/dashboard/drilldowns_manage.ts index 6f4deb2d32986..34212262aedba 100644 --- a/x-pack/test/functional/services/dashboard/drilldowns_manage.ts +++ b/x-pack/test/functional/services/dashboard/drilldowns_manage.ts @@ -10,12 +10,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; const CREATE_DRILLDOWN_FLYOUT_DATA_TEST_SUBJ = 'createDrilldownFlyout'; const MANAGE_DRILLDOWNS_FLYOUT_DATA_TEST_SUBJ = 'editDrilldownFlyout'; -const DASHBOARD_TO_DASHBOARD_ACTION_LIST_ITEM = - 'actionFactoryItem-DASHBOARD_TO_DASHBOARD_DRILLDOWN'; -const DASHBOARD_TO_DASHBOARD_ACTION_WIZARD = - 'selectedActionFactory-DASHBOARD_TO_DASHBOARD_DRILLDOWN'; -const DASHBOARD_TO_URL_ACTION_LIST_ITEM = 'actionFactoryItem-URL_DRILLDOWN'; -const DASHBOARD_TO_URL_ACTION_WIZARD = 'selectedActionFactory-URL_DRILLDOWN'; const DESTINATION_DASHBOARD_SELECT = 'dashboardDrilldownSelectDashboard'; const DRILLDOWN_WIZARD_SUBMIT = 'drilldownWizardSubmit'; @@ -69,7 +63,6 @@ export function DashboardDrilldownsManageProvider({ getService }: FtrProviderCon destinationDashboardTitle: string; }) { await this.fillInDrilldownName(drilldownName); - await this.selectDashboardToDashboardActionIfNeeded(); await this.selectDestinationDashboard(destinationDashboardTitle); } @@ -83,7 +76,6 @@ export function DashboardDrilldownsManageProvider({ getService }: FtrProviderCon trigger: 'VALUE_CLICK_TRIGGER' | 'SELECT_RANGE_TRIGGER'; }) { await this.fillInDrilldownName(drilldownName); - await this.selectDashboardToURLActionIfNeeded(); await this.selectTriggerIfNeeded(trigger); await this.fillInURLTemplate(destinationURLTemplate); } @@ -92,20 +84,6 @@ export function DashboardDrilldownsManageProvider({ getService }: FtrProviderCon await testSubjects.setValue('drilldownNameInput', name); } - async selectDashboardToURLActionIfNeeded() { - if (await testSubjects.exists(DASHBOARD_TO_URL_ACTION_LIST_ITEM)) { - await testSubjects.click(DASHBOARD_TO_URL_ACTION_LIST_ITEM); - } - await testSubjects.existOrFail(DASHBOARD_TO_URL_ACTION_WIZARD); - } - - async selectDashboardToDashboardActionIfNeeded() { - if (await testSubjects.exists(DASHBOARD_TO_DASHBOARD_ACTION_LIST_ITEM)) { - await testSubjects.click(DASHBOARD_TO_DASHBOARD_ACTION_LIST_ITEM); - } - await testSubjects.existOrFail(DASHBOARD_TO_DASHBOARD_ACTION_WIZARD); - } - async selectDestinationDashboard(title: string) { await comboBox.set(DESTINATION_DASHBOARD_SELECT, title); } From 08b5f0db2ff86c9ad55ed28d78cc0657bcada4e5 Mon Sep 17 00:00:00 2001 From: Scotty Bollinger Date: Mon, 19 Apr 2021 12:27:37 -0500 Subject: [PATCH 09/56] [Workplace Search] Fix doc link, remove shadows on panels and fix source id bug (#97482) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix private source docs link * Add a whole bunch of missed shadow/background changes to panels * Add success messages to Role mappings * Fix bug where sourceId still in memory If you were on an org source and then clicked to view your Personal dashboard, the subnav was visible because the source Id was still in the logic file. This resets it on unmount. As a part of this fix, dataLoading was set to true on reset. Because of this, some places that were resettings state, but not fetching new data, were left in a loading state. This commit also removes the redundant `resetSourceState` calls around the components that don’t fetch a fresh copy of the source data --- .../applications/workplace_search/routes.ts | 3 ++- .../components/add_source/add_source_list.tsx | 2 +- .../display_settings/display_settings.tsx | 2 +- .../content_sources/components/overview.tsx | 14 +++++++++++-- .../components/schema/schema.tsx | 2 +- .../components/source_content.test.tsx | 2 -- .../components/source_content.tsx | 15 ++++--------- .../components/source_settings.test.tsx | 2 -- .../components/source_settings.tsx | 3 +-- .../views/content_sources/private_sources.tsx | 4 ++-- .../views/content_sources/source_logic.ts | 3 ++- .../views/content_sources/source_router.tsx | 3 ++- .../views/role_mappings/constants.ts | 21 +++++++++++++++++++ .../role_mappings/role_mappings_logic.ts | 20 ++++++++++++++++-- 14 files changed, 67 insertions(+), 29 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.ts index e08050335671e..59e43b103db40 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.ts @@ -19,9 +19,10 @@ export const LEAVE_FEEDBACK_EMAIL = 'support@elastic.co'; export const LEAVE_FEEDBACK_URL = `mailto:${LEAVE_FEEDBACK_EMAIL}?Subject=Elastic%20Workplace%20Search%20Feedback`; export const DOCS_PREFIX = docLinks.workplaceSearchBase; +export const PERMISSIONS_DOCS_URL = `${DOCS_PREFIX}/workplace-search-permissions.html`; export const DOCUMENT_PERMISSIONS_DOCS_URL = `${DOCS_PREFIX}/workplace-search-sources-document-permissions.html`; export const DOCUMENT_PERMISSIONS_SYNC_DOCS_URL = `${DOCUMENT_PERMISSIONS_DOCS_URL}#sources-permissions-synchronizing`; -export const PRIVATE_SOURCES_DOCS_URL = `${DOCUMENT_PERMISSIONS_DOCS_URL}#sources-permissions-org-private`; +export const PRIVATE_SOURCES_DOCS_URL = `${PERMISSIONS_DOCS_URL}#organizational-sources-private-sources`; export const EXTERNAL_IDENTITIES_DOCS_URL = `${DOCS_PREFIX}/workplace-search-external-identities-api.html`; export const SECURITY_DOCS_URL = `${DOCS_PREFIX}/workplace-search-security.html`; export const SMTP_DOCS_URL = `${DOCS_PREFIX}/workplace-search-smtp-mailer.html`; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source_list.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source_list.tsx index 8819367cacd1f..80d35553bb8bb 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source_list.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source_list.tsx @@ -126,7 +126,7 @@ export const AddSourceList: React.FC = () => { - + = ({ tabId }) => { onTabClick={onSelectedTabChanged} /> ) : ( - + {DISPLAY_SETTINGS_EMPTY_TITLE}} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx index a5a2d8ab73d94..86c911e7e0b00 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx @@ -116,7 +116,12 @@ export const Overview: React.FC = () => { const emptyState = ( <> - + {SOURCES_NO_CONTENT_TITLE}} iconType="documents" @@ -163,7 +168,12 @@ export const Overview: React.FC = () => { const emptyState = ( <> - + {EMPTY_ACTIVITY_TITLE}} iconType="clock" diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema.tsx index f31f7049ebf36..72a3804c4443b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema.tsx @@ -140,7 +140,7 @@ export const Schema: React.FC = () => { ) : ( - + {SCHEMA_EMPTY_SCHEMA_TITLE}} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.test.tsx index 12399d4822a13..8aa644827709a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.test.tsx @@ -34,7 +34,6 @@ import { SourceContent } from './source_content'; describe('SourceContent', () => { const setActivePage = jest.fn(); const searchContentSourceDocuments = jest.fn(); - const resetSourceState = jest.fn(); const setContentFilterValue = jest.fn(); const mockValues = { @@ -51,7 +50,6 @@ describe('SourceContent', () => { setMockActions({ setActivePage, searchContentSourceDocuments, - resetSourceState, setContentFilterValue, }); setMockValues({ ...mockValues }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.tsx index cc086f9c829d9..fbafe54df7493 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.tsx @@ -56,12 +56,9 @@ const MAX_LENGTH = 28; export const SourceContent: React.FC = () => { const [searchTerm, setSearchTerm] = useState(''); - const { - setActivePage, - searchContentSourceDocuments, - resetSourceState, - setContentFilterValue, - } = useActions(SourceLogic); + const { setActivePage, searchContentSourceDocuments, setContentFilterValue } = useActions( + SourceLogic + ); const { contentSource: { id, serviceType, urlField, titleField, urlFieldIsLinkable, isFederatedSource }, @@ -74,10 +71,6 @@ export const SourceContent: React.FC = () => { sectionLoading, } = useValues(SourceLogic); - useEffect(() => { - return resetSourceState; - }, []); - useEffect(() => { searchContentSourceDocuments(id); }, [contentFilterValue, activePage]); @@ -106,7 +99,7 @@ export const SourceContent: React.FC = () => { const isCustomSource = serviceType === CUSTOM_SERVICE_TYPE; const emptyState = ( - + {emptyMessage}} iconType="documents" diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.test.tsx index c6cefba317cce..b2a4488b04107 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.test.tsx @@ -23,7 +23,6 @@ import { SourceSettings } from './source_settings'; describe('SourceSettings', () => { const updateContentSource = jest.fn(); const removeContentSource = jest.fn(); - const resetSourceState = jest.fn(); const getSourceConfigData = jest.fn(); const contentSource = fullContentSources[0]; const buttonLoading = false; @@ -41,7 +40,6 @@ describe('SourceSettings', () => { setMockActions({ updateContentSource, removeContentSource, - resetSourceState, getSourceConfigData, }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.tsx index 7ba53822534cf..4bc623ac9fdf8 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.tsx @@ -52,7 +52,7 @@ import { staticSourceData } from '../source_data'; import { SourceLogic } from '../source_logic'; export const SourceSettings: React.FC = () => { - const { updateContentSource, removeContentSource, resetSourceState } = useActions(SourceLogic); + const { updateContentSource, removeContentSource } = useActions(SourceLogic); const { getSourceConfigData } = useActions(AddSourceLogic); const { @@ -68,7 +68,6 @@ export const SourceSettings: React.FC = () => { useEffect(() => { getSourceConfigData(serviceType); - return resetSourceState; }, []); const { diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/private_sources.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/private_sources.tsx index 114df3cf41e39..128c65eeb95da 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/private_sources.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/private_sources.tsx @@ -81,7 +81,7 @@ export const PrivateSources: React.FC = () => { ); const privateSourcesEmptyState = ( - + {PRIVATE_EMPTY_TITLE}} /> @@ -107,7 +107,7 @@ export const PrivateSources: React.FC = () => { ); const sharedSourcesEmptyState = ( - + >({ ...contentSource, summary, }), + resetSourceState: () => ({} as ContentSourceFullData), }, ], dataLoading: [ true, { onInitializeSource: () => false, - resetSourceState: () => false, + resetSourceState: () => true, }, ], buttonLoading: [ diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx index b844c86abb919..b14ea4ebd7a73 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx @@ -47,12 +47,13 @@ import { SourceLogic } from './source_logic'; export const SourceRouter: React.FC = () => { const { sourceId } = useParams() as { sourceId: string }; - const { initializeSource } = useActions(SourceLogic); + const { initializeSource, resetSourceState } = useActions(SourceLogic); const { contentSource, dataLoading } = useValues(SourceLogic); const { isOrganization } = useValues(AppLogic); useEffect(() => { initializeSource(sourceId); + return resetSourceState; }, []); if (dataLoading) return ; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/constants.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/constants.ts index a44144666d139..b4355ba7aa586 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/constants.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/constants.ts @@ -15,6 +15,27 @@ export const DELETE_ROLE_MAPPING_MESSAGE = i18n.translate( } ); +export const ROLE_MAPPING_DELETED_MESSAGE = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.roleMappingDeletedMessage', + { + defaultMessage: 'Successfully deleted role mapping', + } +); + +export const ROLE_MAPPING_CREATED_MESSAGE = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.roleMappingCreatedMessage', + { + defaultMessage: 'Role mapping successfully created.', + } +); + +export const ROLE_MAPPING_UPDATED_MESSAGE = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.roleMappingUpdatedMessage', + { + defaultMessage: 'Role mapping successfully updated.', + } +); + export const DEFAULT_GROUP_NAME = i18n.translate( 'xpack.enterpriseSearch.workplaceSearch.roleMapping.defaultGroupName', { diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/role_mappings_logic.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/role_mappings_logic.ts index b43bda3bb228e..6e3b74f95f707 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/role_mappings_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/role_mappings_logic.ts @@ -7,7 +7,11 @@ import { kea, MakeLogicType } from 'kea'; -import { clearFlashMessages, flashAPIErrors } from '../../../shared/flash_messages'; +import { + clearFlashMessages, + flashAPIErrors, + setSuccessMessage, +} from '../../../shared/flash_messages'; import { HttpLogic } from '../../../shared/http'; import { KibanaLogic } from '../../../shared/kibana'; import { ANY_AUTH_PROVIDER } from '../../../shared/role_mapping/constants'; @@ -15,7 +19,13 @@ import { AttributeName } from '../../../shared/types'; import { ROLE_MAPPINGS_PATH } from '../../routes'; import { RoleGroup, WSRoleMapping, Role } from '../../types'; -import { DELETE_ROLE_MAPPING_MESSAGE, DEFAULT_GROUP_NAME } from './constants'; +import { + DELETE_ROLE_MAPPING_MESSAGE, + ROLE_MAPPING_DELETED_MESSAGE, + ROLE_MAPPING_CREATED_MESSAGE, + ROLE_MAPPING_UPDATED_MESSAGE, + DEFAULT_GROUP_NAME, +} from './constants'; interface RoleMappingsServerDetails { multipleAuthProvidersConfig: boolean; @@ -265,6 +275,7 @@ export const RoleMappingsLogic = kea Date: Mon, 19 Apr 2021 10:35:22 -0700 Subject: [PATCH 10/56] [App Search] Synonyms set up (#97187) * Add barebones Synonyms view * Update Synonyms route+nav link * Add server API routes - will be used in upcoming PRs, may change Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../components/engine/engine_nav.tsx | 3 +- .../components/engine/engine_router.test.tsx | 8 + .../components/engine/engine_router.tsx | 11 +- .../app_search/components/synonyms/index.ts | 1 + .../components/synonyms/synonyms.test.tsx | 21 ++ .../components/synonyms/synonyms.tsx | 27 +++ .../server/routes/app_search/synonyms.test.ts | 207 ++++++++++++++++++ .../server/routes/app_search/synonyms.ts | 85 +++++++ 8 files changed, 358 insertions(+), 5 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/synonyms.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/synonyms.tsx create mode 100644 x-pack/plugins/enterprise_search/server/routes/app_search/synonyms.test.ts create mode 100644 x-pack/plugins/enterprise_search/server/routes/app_search/synonyms.ts diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx index 2d7e3438d4c02..dfca497807718 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx @@ -211,8 +211,7 @@ export const EngineNav: React.FC = () => { )} {canManageEngineSynonyms && ( {SYNONYMS_TITLE} diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.test.tsx index 27ef42e72764c..d01958942e0a1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.test.tsx @@ -22,6 +22,7 @@ import { CurationsRouter } from '../curations'; import { EngineOverview } from '../engine_overview'; import { RelevanceTuning } from '../relevance_tuning'; import { ResultSettings } from '../result_settings'; +import { Synonyms } from '../synonyms'; import { EngineRouter } from './engine_router'; @@ -100,6 +101,13 @@ describe('EngineRouter', () => { expect(wrapper.find(AnalyticsRouter)).toHaveLength(1); }); + it('renders a synonyms view', () => { + setMockValues({ ...values, myRole: { canManageEngineSynonyms: true } }); + const wrapper = shallow(); + + expect(wrapper.find(Synonyms)).toHaveLength(1); + }); + it('renders a curations view', () => { setMockValues({ ...values, myRole: { canManageEngineCurations: true } }); const wrapper = shallow(); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx index 8c6f248e9ce8e..c246af3611563 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx @@ -27,7 +27,7 @@ import { // ENGINE_CRAWLER_PATH, // META_ENGINE_SOURCE_ENGINES_PATH, ENGINE_RELEVANCE_TUNING_PATH, - // ENGINE_SYNONYMS_PATH, + ENGINE_SYNONYMS_PATH, ENGINE_CURATIONS_PATH, ENGINE_RESULT_SETTINGS_PATH, // ENGINE_SEARCH_UI_PATH, @@ -39,8 +39,8 @@ import { CurationsRouter } from '../curations'; import { DocumentDetail, Documents } from '../documents'; import { EngineOverview } from '../engine_overview'; import { RelevanceTuning } from '../relevance_tuning'; - import { ResultSettings } from '../result_settings'; +import { Synonyms } from '../synonyms'; import { EngineLogic, getEngineBreadcrumbs } from './'; @@ -53,7 +53,7 @@ export const EngineRouter: React.FC = () => { // canViewEngineCrawler, // canViewMetaEngineSourceEngines, canManageEngineRelevanceTuning, - // canManageEngineSynonyms, + canManageEngineSynonyms, canManageEngineCurations, canManageEngineResultSettings, // canManageEngineSearchUi, @@ -107,6 +107,11 @@ export const EngineRouter: React.FC = () => { )} + {canManageEngineSynonyms && ( + + + + )} {canManageEngineResultSettings && ( diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/index.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/index.ts index 5b0fde246ed44..177bc5eade0f6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/index.ts @@ -6,3 +6,4 @@ */ export { SYNONYMS_TITLE } from './constants'; +export { Synonyms } from './synonyms'; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/synonyms.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/synonyms.test.tsx new file mode 100644 index 0000000000000..e093442f77b77 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/synonyms.test.tsx @@ -0,0 +1,21 @@ +/* + * 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 '../../__mocks__/engine_logic.mock'; + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { Synonyms } from './'; + +describe('Synonyms', () => { + it('renders', () => { + shallow(); + // TODO: Check for Synonym cards, Synonym modal + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/synonyms.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/synonyms.tsx new file mode 100644 index 0000000000000..0b18271660911 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/synonyms.tsx @@ -0,0 +1,27 @@ +/* + * 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 React from 'react'; + +import { EuiPageHeader, EuiPageContentBody } from '@elastic/eui'; + +import { FlashMessages } from '../../../shared/flash_messages'; +import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; +import { getEngineBreadcrumbs } from '../engine'; + +import { SYNONYMS_TITLE } from './constants'; + +export const Synonyms: React.FC = () => { + return ( + <> + + + + TODO + + ); +}; diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/synonyms.test.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/synonyms.test.ts new file mode 100644 index 0000000000000..26b44b5ad8889 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/synonyms.test.ts @@ -0,0 +1,207 @@ +/* + * 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 { MockRouter, mockRequestHandler, mockDependencies } from '../../__mocks__'; + +import { registerSynonymsRoutes } from './synonyms'; + +describe('synonyms routes', () => { + describe('GET /api/app_search/engines/{engineName}/synonyms', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'get', + path: '/api/app_search/engines/{engineName}/synonyms', + }); + + registerSynonymsRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request handler', () => { + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/as/engines/:engineName/synonyms/collection', + }); + }); + + describe('validates', () => { + it('with pagination query params', () => { + const request = { + query: { + 'page[current]': 1, + 'page[size]': 10, + }, + }; + mockRouter.shouldValidate(request); + }); + + it('missing query params', () => { + const request = { query: {} }; + mockRouter.shouldThrow(request); + }); + }); + }); + + describe('POST /api/app_search/engines/{engineName}/synonyms', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'post', + path: '/api/app_search/engines/{engineName}/synonyms', + }); + + registerSynonymsRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request handler', () => { + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/as/engines/:engineName/synonyms/collection', + }); + }); + + describe('validates', () => { + it('with synonyms', () => { + const request = { + body: { + synonyms: ['a', 'b', 'c'], + }, + }; + mockRouter.shouldValidate(request); + }); + + it('empty synonyms array', () => { + const request = { + body: { + queries: [], + }, + }; + mockRouter.shouldThrow(request); + }); + + it('only one synonym', () => { + const request = { + body: { + queries: ['a'], + }, + }; + mockRouter.shouldThrow(request); + }); + + it('empty synonym strings', () => { + const request = { + body: { + queries: ['', '', ''], + }, + }; + mockRouter.shouldThrow(request); + }); + + it('missing synonyms', () => { + const request = { body: {} }; + mockRouter.shouldThrow(request); + }); + }); + }); + + describe('PUT /api/app_search/engines/{engineName}/synonyms/{synonymId}', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'put', + path: '/api/app_search/engines/{engineName}/synonyms/{synonymId}', + }); + + registerSynonymsRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request handler', () => { + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/as/engines/:engineName/synonyms/:synonymId', + }); + }); + + describe('validates', () => { + it('with synonyms', () => { + const request = { + body: { + synonyms: ['a', 'b', 'c'], + }, + }; + mockRouter.shouldValidate(request); + }); + + it('empty synonyms array', () => { + const request = { + body: { + queries: [], + }, + }; + mockRouter.shouldThrow(request); + }); + + it('only one synonym', () => { + const request = { + body: { + queries: ['a'], + }, + }; + mockRouter.shouldThrow(request); + }); + + it('empty synonym strings', () => { + const request = { + body: { + queries: ['', '', ''], + }, + }; + mockRouter.shouldThrow(request); + }); + + it('missing synonyms', () => { + const request = { body: {} }; + mockRouter.shouldThrow(request); + }); + }); + }); + + describe('DELETE /api/app_search/engines/{engineName}/synonyms/{synonymId}', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'delete', + path: '/api/app_search/engines/{engineName}/synonyms/{synonymId}', + }); + + registerSynonymsRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request handler', () => { + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/as/engines/:engineName/synonyms/:synonymId', + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/synonyms.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/synonyms.ts new file mode 100644 index 0000000000000..1be58f00c476a --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/synonyms.ts @@ -0,0 +1,85 @@ +/* + * 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 { schema } from '@kbn/config-schema'; + +import { RouteDependencies } from '../../plugin'; + +const synonymsSchema = schema.arrayOf(schema.string({ minLength: 1 }), { minSize: 2 }); + +export function registerSynonymsRoutes({ + router, + enterpriseSearchRequestHandler, +}: RouteDependencies) { + router.get( + { + path: '/api/app_search/engines/{engineName}/synonyms', + validate: { + params: schema.object({ + engineName: schema.string(), + }), + query: schema.object({ + 'page[current]': schema.number(), + 'page[size]': schema.number(), + }), + }, + }, + enterpriseSearchRequestHandler.createRequest({ + path: '/as/engines/:engineName/synonyms/collection', + }) + ); + + router.post( + { + path: '/api/app_search/engines/{engineName}/synonyms', + validate: { + params: schema.object({ + engineName: schema.string(), + }), + body: schema.object({ + synonyms: synonymsSchema, + }), + }, + }, + enterpriseSearchRequestHandler.createRequest({ + path: '/as/engines/:engineName/synonyms/collection', + }) + ); + + router.put( + { + path: '/api/app_search/engines/{engineName}/synonyms/{synonymId}', + validate: { + params: schema.object({ + engineName: schema.string(), + synonymId: schema.string(), + }), + body: schema.object({ + synonyms: synonymsSchema, + }), + }, + }, + enterpriseSearchRequestHandler.createRequest({ + path: '/as/engines/:engineName/synonyms/:synonymId', + }) + ); + + router.delete( + { + path: '/api/app_search/engines/{engineName}/synonyms/{synonymId}', + validate: { + params: schema.object({ + engineName: schema.string(), + synonymId: schema.string(), + }), + }, + }, + enterpriseSearchRequestHandler.createRequest({ + path: '/as/engines/:engineName/synonyms/:synonymId', + }) + ); +} From 64f30a224e52e58e8a806bba9194123ecc109860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Kopyci=C5=84ski?= Date: Mon, 19 Apr 2021 20:10:34 +0200 Subject: [PATCH 11/56] [Asset Management] Add live query history table (#94536) --- package.json | 2 +- x-pack/plugins/osquery/common/constants.ts | 2 + x-pack/plugins/osquery/kibana.json | 2 + .../action_results/action_results_summary.tsx | 239 ++++++++++++ .../action_results/action_results_table.tsx | 196 ---------- .../osquery/public/action_results/helpers.ts | 5 +- .../action_results/use_action_results.ts | 95 +++-- .../osquery/public/actions/actions_table.tsx | 195 +++++----- .../plugins/osquery/public/actions/helpers.ts | 5 +- .../public/actions/use_action_details.ts | 42 +-- .../osquery/public/actions/use_all_actions.ts | 49 +-- .../agent_policies/agents_policy_link.tsx | 55 +++ .../osquery/public/agent_policies/index.tsx | 9 + .../agent_policies/use_agent_policies.ts | 35 ++ .../public/agent_policies/use_agent_policy.ts | 30 ++ .../osquery/public/agents/agents_table.tsx | 34 +- .../plugins/osquery/public/agents/helpers.ts | 5 +- .../public/agents/use_agent_policies.ts | 15 +- .../osquery/public/agents/use_agent_status.ts | 39 ++ .../osquery/public/agents/use_all_agents.ts | 7 +- .../public/agents/use_osquery_policies.ts | 12 +- x-pack/plugins/osquery/public/application.tsx | 5 +- .../osquery/public/common/hooks/index.tsx | 9 + .../public/common/hooks/use_breadcrumbs.tsx | 136 +++++++ .../public/common/hooks/use_discover_link.tsx | 64 ++++ .../common/hooks/use_osquery_integration.tsx | 31 ++ .../public/common/lib/kibana/kibana_react.ts | 8 + .../osquery/public/common/page_paths.ts | 59 +++ .../plugins/osquery/public/components/app.tsx | 42 ++- .../osquery/public/components/beta_badge.tsx | 37 ++ .../components/manage_integration_link.tsx | 74 ++++ .../plugins/osquery/public/editor/index.tsx | 43 ++- .../components/add_new_query_flyout.tsx | 68 ---- .../components/custom_tab_tabs.tsx | 36 -- .../fleet_integration/components/form.tsx | 240 ------------- .../components/input_stream_form.tsx | 69 ---- .../components/input_type.tsx | 64 ---- .../components/navigation.tsx | 92 ----- .../components/pack_selector.tsx | 87 ----- .../components/scheduled_queries_table.tsx | 142 -------- .../fleet_integration/components/schema.ts | 41 --- .../osquery/public/fleet_integration/index.ts | 6 +- ...query_managed_custom_button_extension.tsx} | 16 +- ..._managed_empty_create_policy_extension.tsx | 20 -- ...ry_managed_empty_edit_policy_extension.tsx | 20 -- ...anaged_policy_create_import_extension.tsx} | 8 +- ..._osquery_managed_policy_edit_extension.tsx | 6 +- .../fleet_integration/navigation_buttons.tsx | 105 ++++++ ...squery_managed_custom_button_extension.tsx | 20 ++ .../osquery_managed_custom_extension.tsx | 36 -- ..._managed_empty_create_policy_extension.tsx | 43 --- ...ry_managed_empty_edit_policy_extension.tsx | 23 -- ...squery_managed_policy_create_extension.tsx | 53 --- ...managed_policy_create_import_extension.tsx | 202 +++++++++++ .../agent_results/index.tsx | 5 +- .../form/agents_table_field.tsx | 0 .../public/live_queries/form/index.tsx | 174 +++++++++ .../form/live_query_query_field.tsx | 5 +- .../form/schema.ts | 0 .../osquery/public/live_queries/index.tsx | 22 ++ .../osquery/public/live_query/form/index.tsx | 52 --- .../osquery/public/live_query/index.tsx | 47 --- .../example_params_fields.tsx | 49 --- .../public/osquery_action_type/index.tsx | 73 ---- .../osquery/public/packs/edit/index.tsx | 1 + x-pack/plugins/osquery/public/plugin.ts | 104 +++--- .../osquery/public/queries/edit/tabs.tsx | 12 +- .../public/queries/form/code_editor_field.tsx | 31 +- x-pack/plugins/osquery/public/query_client.ts | 10 + .../plugins/osquery/public/results/helpers.ts | 5 +- .../osquery/public/results/results_table.tsx | 101 +++--- .../osquery/public/results/use_all_results.ts | 58 ++- .../plugins/osquery/public/routes/index.tsx | 36 +- .../live_queries/details/actions_menu.tsx | 68 ++++ .../details/index.tsx | 60 +--- .../{live_query => live_queries}/index.tsx | 6 +- .../public/routes/live_queries/list/index.tsx | 65 ++++ .../new/index.tsx | 52 ++- .../routes/live_query/agent_details/index.tsx | 82 ----- .../public/routes/live_query/list/index.tsx | 63 ---- .../scheduled_query_groups/add/index.tsx | 68 ++++ .../details/actions_menu.tsx | 32 +- .../scheduled_query_groups/details/index.tsx | 128 +++++++ .../scheduled_query_groups/edit/index.tsx | 74 ++++ .../routes/scheduled_query_groups/index.tsx | 39 ++ .../scheduled_query_groups/list/index.tsx | 63 ++++ .../common/osquery_stream_field.tsx | 169 --------- .../public/scheduled_query/edit/form.tsx | 153 -------- .../public/scheduled_query/edit/index.tsx | 48 --- .../public/scheduled_query/edit/schema.ts | 26 -- .../osquery/public/scheduled_query/index.tsx | 38 -- .../public/scheduled_query/new/form.tsx | 105 ------ .../public/scheduled_query/new/index.tsx | 32 -- .../public/scheduled_query/new/schema.ts | 67 ---- .../public/scheduled_query/new/utils.ts | 25 -- .../public/scheduled_query/queries/index.tsx | 185 ---------- .../active_state_switch.tsx | 144 ++++++++ .../form/add_query_flyout.tsx | 124 +++++++ .../form/confirmation_modal.tsx | 82 +++++ .../form/edit_query_flyout.tsx | 136 +++++++ .../scheduled_query_groups/form/index.tsx | 339 ++++++++++++++++++ .../form/pack_uploader.tsx | 142 ++++++++ .../form/policy_id_combobox_field.tsx | 121 +++++++ .../form/queries_field.tsx | 190 ++++++++++ .../public/scheduled_query_groups/index.tsx | 8 + .../scheduled_query_group_queries_table.tsx | 214 +++++++++++ .../scheduled_query_groups_table.tsx | 104 ++++++ .../use_scheduled_query_group.ts | 37 ++ .../use_scheduled_query_groups.ts | 46 +++ .../plugins/osquery/public/shared_imports.ts | 1 + x-pack/plugins/osquery/public/types.ts | 4 +- x-pack/plugins/osquery/server/config.ts | 3 + x-pack/plugins/osquery/server/index.ts | 3 + .../lib/osquery_app_context_services.ts | 2 +- x-pack/plugins/osquery/server/plugin.ts | 55 ++- .../routes/action/create_action_route.ts | 87 +---- x-pack/plugins/osquery/server/routes/index.ts | 16 +- .../find_scheduled_query_route.ts | 4 +- .../plugins/osquery/server/saved_objects.ts | 16 +- .../results/query.action_results.dsl.ts | 37 +- .../factory/results/query.all_results.dsl.ts | 27 +- x-pack/plugins/osquery/server/types.ts | 2 + yarn.lock | 8 +- 123 files changed, 4274 insertions(+), 3089 deletions(-) create mode 100644 x-pack/plugins/osquery/public/action_results/action_results_summary.tsx delete mode 100644 x-pack/plugins/osquery/public/action_results/action_results_table.tsx create mode 100644 x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx create mode 100644 x-pack/plugins/osquery/public/agent_policies/index.tsx create mode 100644 x-pack/plugins/osquery/public/agent_policies/use_agent_policies.ts create mode 100644 x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts create mode 100644 x-pack/plugins/osquery/public/agents/use_agent_status.ts create mode 100644 x-pack/plugins/osquery/public/common/hooks/index.tsx create mode 100644 x-pack/plugins/osquery/public/common/hooks/use_breadcrumbs.tsx create mode 100644 x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx create mode 100644 x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx create mode 100644 x-pack/plugins/osquery/public/common/page_paths.ts create mode 100644 x-pack/plugins/osquery/public/components/beta_badge.tsx create mode 100644 x-pack/plugins/osquery/public/components/manage_integration_link.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/components/add_new_query_flyout.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/components/custom_tab_tabs.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/components/form.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/components/input_stream_form.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/components/input_type.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/components/navigation.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/components/pack_selector.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/components/scheduled_queries_table.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/components/schema.ts rename x-pack/plugins/osquery/public/fleet_integration/{lazy_osquery_managed_custom_extension.tsx => lazy_osquery_managed_custom_button_extension.tsx} (53%) delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_empty_create_policy_extension.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_empty_edit_policy_extension.tsx rename x-pack/plugins/osquery/public/fleet_integration/{lazy_osquery_managed_policy_create_extension.tsx => lazy_osquery_managed_policy_create_import_extension.tsx} (58%) create mode 100644 x-pack/plugins/osquery/public/fleet_integration/navigation_buttons.tsx create mode 100644 x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_extension.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/osquery_managed_empty_create_policy_extension.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/osquery_managed_empty_edit_policy_extension.tsx delete mode 100644 x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_extension.tsx create mode 100644 x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx rename x-pack/plugins/osquery/public/{live_query => live_queries}/agent_results/index.tsx (89%) rename x-pack/plugins/osquery/public/{live_query => live_queries}/form/agents_table_field.tsx (100%) create mode 100644 x-pack/plugins/osquery/public/live_queries/form/index.tsx rename x-pack/plugins/osquery/public/{live_query => live_queries}/form/live_query_query_field.tsx (93%) rename x-pack/plugins/osquery/public/{live_query => live_queries}/form/schema.ts (100%) create mode 100644 x-pack/plugins/osquery/public/live_queries/index.tsx delete mode 100644 x-pack/plugins/osquery/public/live_query/form/index.tsx delete mode 100644 x-pack/plugins/osquery/public/live_query/index.tsx delete mode 100644 x-pack/plugins/osquery/public/osquery_action_type/example_params_fields.tsx delete mode 100644 x-pack/plugins/osquery/public/osquery_action_type/index.tsx create mode 100644 x-pack/plugins/osquery/public/query_client.ts create mode 100644 x-pack/plugins/osquery/public/routes/live_queries/details/actions_menu.tsx rename x-pack/plugins/osquery/public/routes/{live_query => live_queries}/details/index.tsx (75%) rename x-pack/plugins/osquery/public/routes/{live_query => live_queries}/index.tsx (83%) create mode 100644 x-pack/plugins/osquery/public/routes/live_queries/list/index.tsx rename x-pack/plugins/osquery/public/routes/{live_query => live_queries}/new/index.tsx (50%) delete mode 100644 x-pack/plugins/osquery/public/routes/live_query/agent_details/index.tsx delete mode 100644 x-pack/plugins/osquery/public/routes/live_query/list/index.tsx create mode 100644 x-pack/plugins/osquery/public/routes/scheduled_query_groups/add/index.tsx rename x-pack/plugins/osquery/public/routes/{live_query => scheduled_query_groups}/details/actions_menu.tsx (60%) create mode 100644 x-pack/plugins/osquery/public/routes/scheduled_query_groups/details/index.tsx create mode 100644 x-pack/plugins/osquery/public/routes/scheduled_query_groups/edit/index.tsx create mode 100644 x-pack/plugins/osquery/public/routes/scheduled_query_groups/index.tsx create mode 100644 x-pack/plugins/osquery/public/routes/scheduled_query_groups/list/index.tsx delete mode 100644 x-pack/plugins/osquery/public/scheduled_query/common/osquery_stream_field.tsx delete mode 100644 x-pack/plugins/osquery/public/scheduled_query/edit/form.tsx delete mode 100644 x-pack/plugins/osquery/public/scheduled_query/edit/index.tsx delete mode 100644 x-pack/plugins/osquery/public/scheduled_query/edit/schema.ts delete mode 100644 x-pack/plugins/osquery/public/scheduled_query/index.tsx delete mode 100644 x-pack/plugins/osquery/public/scheduled_query/new/form.tsx delete mode 100644 x-pack/plugins/osquery/public/scheduled_query/new/index.tsx delete mode 100644 x-pack/plugins/osquery/public/scheduled_query/new/schema.ts delete mode 100644 x-pack/plugins/osquery/public/scheduled_query/new/utils.ts delete mode 100644 x-pack/plugins/osquery/public/scheduled_query/queries/index.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/active_state_switch.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/form/add_query_flyout.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/form/confirmation_modal.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/form/edit_query_flyout.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/form/index.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/form/pack_uploader.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/form/policy_id_combobox_field.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/index.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_table.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_groups_table.tsx create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group.ts create mode 100644 x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_groups.ts diff --git a/package.json b/package.json index 38eaec444ac5d..4f49ecd7373e2 100644 --- a/package.json +++ b/package.json @@ -348,7 +348,7 @@ "react-moment-proptypes": "^1.7.0", "react-monaco-editor": "^0.41.2", "react-popper-tooltip": "^2.10.1", - "react-query": "^3.12.0", + "react-query": "^3.13.10", "react-resize-detector": "^4.2.0", "react-reverse-portal": "^1.0.4", "react-router-redux": "^4.0.8", diff --git a/x-pack/plugins/osquery/common/constants.ts b/x-pack/plugins/osquery/common/constants.ts index 794ac5004c9f1..5354332fd89f8 100644 --- a/x-pack/plugins/osquery/common/constants.ts +++ b/x-pack/plugins/osquery/common/constants.ts @@ -7,3 +7,5 @@ export const DEFAULT_MAX_TABLE_QUERY_SIZE = 10000; export const DEFAULT_DARK_MODE = 'theme:darkMode'; +export const OSQUERY_INTEGRATION_NAME = 'osquery_manager'; +export const BASE_PATH = '/app/osquery'; diff --git a/x-pack/plugins/osquery/kibana.json b/x-pack/plugins/osquery/kibana.json index fea20d9fb3cb5..17d74b124f45b 100644 --- a/x-pack/plugins/osquery/kibana.json +++ b/x-pack/plugins/osquery/kibana.json @@ -20,6 +20,8 @@ "actions", "data", "dataEnhanced", + "discover", + "features", "fleet", "navigation", "triggersActionsUi" diff --git a/x-pack/plugins/osquery/public/action_results/action_results_summary.tsx b/x-pack/plugins/osquery/public/action_results/action_results_summary.tsx new file mode 100644 index 0000000000000..9542286c860f2 --- /dev/null +++ b/x-pack/plugins/osquery/public/action_results/action_results_summary.tsx @@ -0,0 +1,239 @@ +/* + * 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. + */ + +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { i18n } from '@kbn/i18n'; +import { + EuiLink, + EuiFlexGroup, + EuiFlexItem, + EuiCard, + EuiTextColor, + EuiSpacer, + EuiDescriptionList, + EuiInMemoryTable, + EuiCodeBlock, +} from '@elastic/eui'; +import React, { useCallback, useMemo, useState } from 'react'; + +import { pagePathGetters } from '../../../fleet/public'; +import { useActionResults } from './use_action_results'; +import { useAllResults } from '../results/use_all_results'; +import { Direction } from '../../common/search_strategy'; +import { useKibana } from '../common/lib/kibana'; + +interface ActionResultsSummaryProps { + actionId: string; + agentIds?: string[]; + isLive?: boolean; +} + +const renderErrorMessage = (error: string) => ( + + {error} + +); + +const ActionResultsSummaryComponent: React.FC = ({ + actionId, + agentIds, + isLive, +}) => { + const getUrlForApp = useKibana().services.application.getUrlForApp; + // @ts-expect-error update types + const [pageIndex, setPageIndex] = useState(0); + // @ts-expect-error update types + const [pageSize, setPageSize] = useState(50); + const { + // @ts-expect-error update types + data: { aggregations, edges }, + } = useActionResults({ + actionId, + activePage: pageIndex, + agentIds, + limit: pageSize, + direction: Direction.asc, + sortField: '@timestamp', + isLive, + }); + + const { data: logsResults } = useAllResults({ + actionId, + activePage: pageIndex, + limit: pageSize, + direction: Direction.asc, + sortField: '@timestamp', + isLive, + }); + + const notRespondedCount = useMemo(() => { + if (!agentIds || !aggregations.totalResponded) { + return '-'; + } + + return agentIds.length - aggregations.totalResponded; + }, [aggregations.totalResponded, agentIds]); + + const listItems = useMemo( + () => [ + { + title: i18n.translate( + 'xpack.osquery.liveQueryActionResults.summary.agentsQueriedLabelText', + { + defaultMessage: 'Agents queried', + } + ), + description: agentIds?.length, + }, + { + title: i18n.translate('xpack.osquery.liveQueryActionResults.summary.successfulLabelText', { + defaultMessage: 'Successful', + }), + description: aggregations.successful, + }, + { + title: i18n.translate('xpack.osquery.liveQueryActionResults.summary.pendingLabelText', { + defaultMessage: 'Not yet responded', + }), + description: notRespondedCount, + }, + { + title: i18n.translate('xpack.osquery.liveQueryActionResults.summary.failedLabelText', { + defaultMessage: 'Failed', + }), + description: ( + + {aggregations.failed} + + ), + }, + ], + [agentIds, aggregations.failed, aggregations.successful, notRespondedCount] + ); + + const renderAgentIdColumn = useCallback( + (agentId) => ( + + {agentId} + + ), + [getUrlForApp] + ); + + const renderRowsColumn = useCallback( + (_, item) => { + if (!logsResults) return '-'; + const agentId = item.fields.agent_id[0]; + + return ( + // @ts-expect-error update types + logsResults?.rawResponse?.aggregations?.count_by_agent_id?.buckets?.find( + // @ts-expect-error update types + (bucket) => bucket.key === agentId + )?.doc_count ?? '-' + ); + }, + [logsResults] + ); + + const renderStatusColumn = useCallback((_, item) => { + if (!item.fields.completed_at) { + return i18n.translate('xpack.osquery.liveQueryActionResults.table.pendingStatusText', { + defaultMessage: 'pending', + }); + } + + if (item.fields['error.keyword']) { + return i18n.translate('xpack.osquery.liveQueryActionResults.table.errorStatusText', { + defaultMessage: 'error', + }); + } + + return i18n.translate('xpack.osquery.liveQueryActionResults.table.successStatusText', { + defaultMessage: 'success', + }); + }, []); + + const columns = useMemo( + () => [ + { + field: 'status', + name: i18n.translate('xpack.osquery.liveQueryActionResults.table.statusColumnTitle', { + defaultMessage: 'Status', + }), + render: renderStatusColumn, + }, + { + field: 'fields.agent_id[0]', + name: i18n.translate('xpack.osquery.liveQueryActionResults.table.agentIdColumnTitle', { + defaultMessage: 'Agent Id', + }), + truncateText: true, + render: renderAgentIdColumn, + }, + { + field: 'fields.rows[0]', + name: i18n.translate( + 'xpack.osquery.liveQueryActionResults.table.resultRowsNumberColumnTitle', + { + defaultMessage: 'Number of result rows', + } + ), + render: renderRowsColumn, + }, + { + field: 'fields.error[0]', + name: i18n.translate('xpack.osquery.liveQueryActionResults.table.errorColumnTitle', { + defaultMessage: 'Error', + }), + render: renderErrorMessage, + }, + ], + [renderAgentIdColumn, renderRowsColumn, renderStatusColumn] + ); + + const pagination = useMemo( + () => ({ + initialPageSize: 20, + pageSizeOptions: [10, 20, 50, 100], + }), + [] + ); + + return ( + <> + + + + + + + + + {edges.length ? ( + <> + + + + ) : null} + + ); +}; + +export const ActionResultsSummary = React.memo(ActionResultsSummaryComponent); diff --git a/x-pack/plugins/osquery/public/action_results/action_results_table.tsx b/x-pack/plugins/osquery/public/action_results/action_results_table.tsx deleted file mode 100644 index 660b837da6d93..0000000000000 --- a/x-pack/plugins/osquery/public/action_results/action_results_table.tsx +++ /dev/null @@ -1,196 +0,0 @@ -/* - * 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 { find, map } from 'lodash/fp'; -import { - EuiDataGrid, - EuiDataGridProps, - EuiDataGridColumn, - EuiDataGridSorting, - EuiHealth, - EuiIcon, - EuiLink, -} from '@elastic/eui'; -import React, { createContext, useState, useCallback, useContext, useMemo } from 'react'; - -import { useAllAgents } from './../agents/use_all_agents'; -import { useActionResults } from './use_action_results'; -import { useAllResults } from '../results/use_all_results'; -import { Direction, ResultEdges } from '../../common/search_strategy'; -import { useRouterNavigate } from '../common/lib/kibana'; -import { useOsqueryPolicies } from '../agents/use_osquery_policies'; - -const DataContext = createContext([]); - -interface ActionResultsTableProps { - actionId: string; -} - -const ActionResultsTableComponent: React.FC = ({ actionId }) => { - const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 50 }); - const onChangeItemsPerPage = useCallback( - (pageSize) => - setPagination((currentPagination) => ({ - ...currentPagination, - pageSize, - pageIndex: 0, - })), - [setPagination] - ); - const onChangePage = useCallback( - (pageIndex) => setPagination((currentPagination) => ({ ...currentPagination, pageIndex })), - [setPagination] - ); - - const [columns] = useState([ - { - id: 'status', - displayAsText: 'status', - defaultSortDirection: Direction.asc, - }, - { - id: 'rows_count', - displayAsText: '# rows', - defaultSortDirection: Direction.asc, - }, - { - id: 'agent_status', - displayAsText: 'online', - defaultSortDirection: Direction.asc, - }, - { - id: 'agent', - displayAsText: 'agent', - defaultSortDirection: Direction.asc, - }, - { - id: '@timestamp', - displayAsText: '@timestamp', - defaultSortDirection: Direction.asc, - }, - ]); - - // ** Sorting config - const [sortingColumns, setSortingColumns] = useState([]); - - const { data: actionResultsData } = useActionResults({ - actionId, - activePage: pagination.pageIndex, - limit: pagination.pageSize, - direction: Direction.asc, - sortField: '@timestamp', - }); - - const [visibleColumns, setVisibleColumns] = useState(() => map('id', columns)); // initialize to the full set of columns - - const columnVisibility = useMemo(() => ({ visibleColumns, setVisibleColumns }), [ - visibleColumns, - setVisibleColumns, - ]); - - const osqueryPolicyData = useOsqueryPolicies(); - const { agents } = useAllAgents(osqueryPolicyData); - - const renderCellValue: EuiDataGridProps['renderCellValue'] = useMemo( - () => ({ rowIndex, columnId }) => { - // eslint-disable-next-line react-hooks/rules-of-hooks - const data = useContext(DataContext); - const value = data[rowIndex]; - - if (columnId === 'status') { - // eslint-disable-next-line react-hooks/rules-of-hooks - const linkProps = useRouterNavigate( - `/live_query/${actionId}/results/${value.fields?.agent_id[0]}` - ); - - return ( - <> - - {'View results'} - - ); - } - - if (columnId === 'rows_count') { - // eslint-disable-next-line react-hooks/rules-of-hooks - const { data: allResultsData } = useAllResults({ - actionId, - agentId: value.fields?.agent_id[0], - activePage: pagination.pageIndex, - limit: pagination.pageSize, - direction: Direction.asc, - sortField: '@timestamp', - }); - // @ts-expect-error update types - return allResultsData?.totalCount ?? '-'; - } - - if (columnId === 'agent_status') { - const agentIdValue = value.fields?.agent_id[0]; - const agent = find(['_id', agentIdValue], agents); - const online = agent?.active; - const color = online ? 'success' : 'danger'; - const label = online ? 'Online' : 'Offline'; - return {label}; - } - - if (columnId === 'agent') { - const agentIdValue = value.fields?.agent_id[0]; - const agent = find(['_id', agentIdValue], agents); - const agentName = agent?.local_metadata.host.name; - - // eslint-disable-next-line react-hooks/rules-of-hooks - const linkProps = useRouterNavigate(`/live_query/${actionId}/results/${agentIdValue}`); - return ( - {`(${agent?.local_metadata.os.name}) ${agentName}`} - ); - } - - if (columnId === '@timestamp') { - // @ts-expect-error fields is optional - return value.fields['@timestamp']; - } - - return '-'; - }, - [actionId, agents, pagination.pageIndex, pagination.pageSize] - ); - - const tableSorting: EuiDataGridSorting = useMemo( - () => ({ columns: sortingColumns, onSort: setSortingColumns }), - [sortingColumns] - ); - - const tablePagination = useMemo( - () => ({ - ...pagination, - pageSizeOptions: [10, 50, 100], - onChangeItemsPerPage, - onChangePage, - }), - [onChangeItemsPerPage, onChangePage, pagination] - ); - - return ( - // @ts-expect-error update types - - - - ); -}; - -export const ActionResultsTable = React.memo(ActionResultsTableComponent); diff --git a/x-pack/plugins/osquery/public/action_results/helpers.ts b/x-pack/plugins/osquery/public/action_results/helpers.ts index 802674ee0398c..171530a77299f 100644 --- a/x-pack/plugins/osquery/public/action_results/helpers.ts +++ b/x-pack/plugins/osquery/public/action_results/helpers.ts @@ -16,15 +16,14 @@ export type InspectResponse = Inspect & { response: string[] }; export const generateTablePaginationOptions = ( activePage: number, - limit: number, - isBucketSort?: boolean + limit: number ): PaginationInputPaginated => { const cursorStart = activePage * limit; return { activePage, cursorStart, fakePossibleCount: 4 <= activePage && activePage > 0 ? limit * (activePage + 2) : limit * 5, - querySize: isBucketSort ? limit : limit + cursorStart, + querySize: limit, }; }; diff --git a/x-pack/plugins/osquery/public/action_results/use_action_results.ts b/x-pack/plugins/osquery/public/action_results/use_action_results.ts index 58a877e799703..7cad8ca3fc498 100644 --- a/x-pack/plugins/osquery/public/action_results/use_action_results.ts +++ b/x-pack/plugins/osquery/public/action_results/use_action_results.ts @@ -5,8 +5,7 @@ * 2.0. */ -import deepEqual from 'fast-deep-equal'; -import { useEffect, useState } from 'react'; +import { flatten, reverse, uniqBy } from 'lodash/fp'; import { useQuery } from 'react-query'; import { createFilter } from '../common/helpers'; @@ -20,6 +19,7 @@ import { Direction, } from '../../common/search_strategy'; import { ESTermQuery } from '../../common/typed_json'; +import { queryClient } from '../query_client'; import { generateTablePaginationOptions, getInspectResponse, InspectResponse } from './helpers'; @@ -35,68 +35,91 @@ export interface ResultsArgs { interface UseActionResults { actionId: string; activePage: number; + agentIds?: string[]; direction: Direction; limit: number; sortField: string; filterQuery?: ESTermQuery | string; skip?: boolean; + isLive?: boolean; } export const useActionResults = ({ actionId, activePage, + agentIds, direction, limit, sortField, filterQuery, skip = false, + isLive = false, }: UseActionResults) => { const { data } = useKibana().services; - const [resultsRequest, setHostRequest] = useState(null); - - const response = useQuery( - ['actionResults', { actionId, activePage, direction, limit, sortField }], + return useQuery( + ['actionResults', { actionId }], async () => { - if (!resultsRequest) return Promise.resolve(); - const responseData = await data.search - .search(resultsRequest, { - strategy: 'osquerySearchStrategy', - }) + .search( + { + actionId, + factoryQueryType: OsqueryQueries.actionResults, + filterQuery: createFilter(filterQuery), + pagination: generateTablePaginationOptions(activePage, limit), + sort: { + direction, + field: sortField, + }, + }, + { + strategy: 'osquerySearchStrategy', + } + ) .toPromise(); + const totalResponded = + // @ts-expect-error update types + responseData.rawResponse?.aggregations?.aggs.responses_by_action_id?.doc_count; + const aggsBuckets = + // @ts-expect-error update types + responseData.rawResponse?.aggregations?.aggs.responses_by_action_id?.responses.buckets; + + const cachedData = queryClient.getQueryData(['actionResults', { actionId }]); + + // @ts-expect-error update types + const previousEdges = cachedData?.edges.length + ? // @ts-expect-error update types + cachedData?.edges + : agentIds?.map((agentId) => ({ fields: { agent_id: [agentId] } })) ?? []; + return { ...responseData, - results: responseData.edges, + edges: reverse(uniqBy('fields.agent_id[0]', flatten([responseData.edges, previousEdges]))), + aggregations: { + totalResponded, + // @ts-expect-error update types + successful: aggsBuckets.find((bucket) => bucket.key === 'success')?.doc_count ?? 0, + // @ts-expect-error update types + failed: aggsBuckets.find((bucket) => bucket.key === 'error')?.doc_count ?? 0, + }, inspect: getInspectResponse(responseData, {} as InspectResponse), }; }, { - refetchInterval: 1000, - enabled: !skip && !!resultsRequest, + initialData: { + edges: [], + aggregations: { + totalResponded: 0, + successful: 0, + // @ts-expect-error update types + pending: agentIds?.length ?? 0, + failed: 0, + }, + }, + refetchInterval: isLive ? 1000 : false, + keepPreviousData: true, + enabled: !skip && !!agentIds?.length, } ); - - useEffect(() => { - setHostRequest((prevRequest) => { - const myRequest = { - ...(prevRequest ?? {}), - actionId, - factoryQueryType: OsqueryQueries.actionResults, - filterQuery: createFilter(filterQuery), - pagination: generateTablePaginationOptions(activePage, limit), - sort: { - direction, - field: sortField, - }, - }; - if (!deepEqual(prevRequest, myRequest)) { - return myRequest; - } - return prevRequest; - }); - }, [actionId, activePage, direction, filterQuery, limit, sortField]); - - return response; }; diff --git a/x-pack/plugins/osquery/public/actions/actions_table.tsx b/x-pack/plugins/osquery/public/actions/actions_table.tsx index ca85693849651..5d1b9b723d98b 100644 --- a/x-pack/plugins/osquery/public/actions/actions_table.tsx +++ b/x-pack/plugins/osquery/public/actions/actions_table.tsx @@ -5,128 +5,123 @@ * 2.0. */ -import { isEmpty, isEqual, keys, map } from 'lodash/fp'; -import { - EuiLink, - EuiDataGrid, - EuiDataGridProps, - EuiDataGridColumn, - EuiDataGridSorting, - EuiLoadingContent, -} from '@elastic/eui'; -import React, { createContext, useEffect, useState, useCallback, useContext, useMemo } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiBasicTable, EuiButtonIcon, EuiCodeBlock, formatDate } from '@elastic/eui'; +import React, { useState, useCallback, useMemo } from 'react'; import { useAllActions } from './use_all_actions'; -import { ActionEdges, Direction } from '../../common/search_strategy'; +import { Direction } from '../../common/search_strategy'; import { useRouterNavigate } from '../common/lib/kibana'; -const DataContext = createContext([]); +interface ActionTableResultsButtonProps { + actionId: string; +} -const ActionsTableComponent = () => { - const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 50 }); - const onChangeItemsPerPage = useCallback( - (pageSize) => - setPagination((currentPagination) => ({ - ...currentPagination, - pageSize, - pageIndex: 0, - })), - [setPagination] - ); - const onChangePage = useCallback( - (pageIndex) => setPagination((currentPagination) => ({ ...currentPagination, pageIndex })), - [setPagination] - ); +const ActionTableResultsButton = React.memo(({ actionId }) => { + const navProps = useRouterNavigate(`live_queries/${actionId}`); + + return ; +}); - const [columns, setColumns] = useState([]); +ActionTableResultsButton.displayName = 'ActionTableResultsButton'; - // ** Sorting config - const [sortingColumns, setSortingColumns] = useState([]); +const ActionsTableComponent = () => { + const [pageIndex, setPageIndex] = useState(0); + const [pageSize, setPageSize] = useState(20); - const { isLoading: actionsLoading, data: actionsData } = useAllActions({ - activePage: pagination.pageIndex, - limit: pagination.pageSize, + const { data: actionsData } = useAllActions({ + activePage: pageIndex, + limit: pageSize, direction: Direction.desc, sortField: '@timestamp', }); - // Column visibility - const [visibleColumns, setVisibleColumns] = useState([]); // initialize to the full set of columns - - const columnVisibility = useMemo(() => ({ visibleColumns, setVisibleColumns }), [ - visibleColumns, - setVisibleColumns, - ]); - - const renderCellValue: EuiDataGridProps['renderCellValue'] = useMemo( - () => ({ rowIndex, columnId }) => { - // eslint-disable-next-line react-hooks/rules-of-hooks - const data = useContext(DataContext); - // @ts-expect-error fields is optional - const value = data[rowIndex].fields[columnId]; - - if (columnId === 'action_id') { - // eslint-disable-next-line react-hooks/rules-of-hooks - const linkProps = useRouterNavigate(`/live_query/${value}`); - return {value}; - } - - return !isEmpty(value) ? value : '-'; - }, + const onTableChange = useCallback(({ page = {} }) => { + const { index, size } = page; + + setPageIndex(index); + setPageSize(size); + }, []); + + const renderQueryColumn = useCallback( + (_, item) => ( + + {item._source.data.query} + + ), [] ); - const tableSorting: EuiDataGridSorting = useMemo( - () => ({ columns: sortingColumns, onSort: setSortingColumns }), - [setSortingColumns, sortingColumns] + const renderAgentsColumn = useCallback((_, item) => <>{item.fields.agents?.length ?? 0}, []); + + const renderTimestampColumn = useCallback( + (_, item) => <>{formatDate(item.fields['@timestamp'][0])}, + [] + ); + + const renderActionsColumn = useCallback( + (item) => , + [] ); - const tablePagination = useMemo( + const columns = useMemo( + () => [ + { + field: 'query', + name: i18n.translate('xpack.osquery.liveQueryActions.table.queryColumnTitle', { + defaultMessage: 'Query', + }), + truncateText: true, + render: renderQueryColumn, + }, + { + field: 'agents', + name: i18n.translate('xpack.osquery.liveQueryActions.table.agentsColumnTitle', { + defaultMessage: 'Agents', + }), + width: '100px', + render: renderAgentsColumn, + }, + { + field: 'created_at', + name: i18n.translate('xpack.osquery.liveQueryActions.table.createdAtColumnTitle', { + defaultMessage: 'Created at', + }), + width: '200px', + render: renderTimestampColumn, + }, + { + name: i18n.translate('xpack.osquery.liveQueryActions.table.viewDetailsColumnTitle', { + defaultMessage: 'View details', + }), + actions: [ + { + render: renderActionsColumn, + }, + ], + }, + ], + [renderActionsColumn, renderAgentsColumn, renderQueryColumn, renderTimestampColumn] + ); + + const pagination = useMemo( () => ({ - ...pagination, - pageSizeOptions: [10, 50, 100], - onChangeItemsPerPage, - onChangePage, + pageIndex, + pageSize, + totalItemCount: actionsData?.totalCount ?? 0, + pageSizeOptions: [20, 50, 100], }), - [onChangeItemsPerPage, onChangePage, pagination] + [actionsData?.totalCount, pageIndex, pageSize] ); - useEffect(() => { - // @ts-expect-error update types - const newColumns = keys(actionsData?.actions[0]?.fields) - .sort() - .map((fieldName) => ({ - id: fieldName, - displayAsText: fieldName.split('.')[1], - defaultSortDirection: Direction.asc, - })); - - if (!isEqual(columns, newColumns)) { - setColumns(newColumns); - setVisibleColumns(map('id', newColumns)); - } - // @ts-expect-error update types - }, [columns, actionsData?.actions]); - - if (actionsLoading) { - return ; - } - return ( - // @ts-expect-error update types - // eslint-disable-next-line react-perf/jsx-no-new-array-as-prop - - - + ); }; diff --git a/x-pack/plugins/osquery/public/actions/helpers.ts b/x-pack/plugins/osquery/public/actions/helpers.ts index 802674ee0398c..171530a77299f 100644 --- a/x-pack/plugins/osquery/public/actions/helpers.ts +++ b/x-pack/plugins/osquery/public/actions/helpers.ts @@ -16,15 +16,14 @@ export type InspectResponse = Inspect & { response: string[] }; export const generateTablePaginationOptions = ( activePage: number, - limit: number, - isBucketSort?: boolean + limit: number ): PaginationInputPaginated => { const cursorStart = activePage * limit; return { activePage, cursorStart, fakePossibleCount: 4 <= activePage && activePage > 0 ? limit * (activePage + 2) : limit * 5, - querySize: isBucketSort ? limit : limit + cursorStart, + querySize: limit, }; }; diff --git a/x-pack/plugins/osquery/public/actions/use_action_details.ts b/x-pack/plugins/osquery/public/actions/use_action_details.ts index eb5317f6c40e0..2e5fa79cae992 100644 --- a/x-pack/plugins/osquery/public/actions/use_action_details.ts +++ b/x-pack/plugins/osquery/public/actions/use_action_details.ts @@ -5,8 +5,6 @@ * 2.0. */ -import deepEqual from 'fast-deep-equal'; -import { useEffect, useState } from 'react'; import { useQuery } from 'react-query'; import { createFilter } from '../common/helpers'; @@ -36,17 +34,20 @@ interface UseActionDetails { export const useActionDetails = ({ actionId, filterQuery, skip = false }: UseActionDetails) => { const { data } = useKibana().services; - const [actionDetailsRequest, setHostRequest] = useState(null); - - const response = useQuery( - ['action', { actionId }], + return useQuery( + ['actionDetails', { actionId, filterQuery }], async () => { - if (!actionDetailsRequest) return Promise.resolve(); - const responseData = await data.search - .search(actionDetailsRequest, { - strategy: 'osquerySearchStrategy', - }) + .search( + { + actionId, + factoryQueryType: OsqueryQueries.actionDetails, + filterQuery: createFilter(filterQuery), + }, + { + strategy: 'osquerySearchStrategy', + } + ) .toPromise(); return { @@ -55,24 +56,7 @@ export const useActionDetails = ({ actionId, filterQuery, skip = false }: UseAct }; }, { - enabled: !skip && !!actionDetailsRequest, + enabled: !skip, } ); - - useEffect(() => { - setHostRequest((prevRequest) => { - const myRequest = { - ...(prevRequest ?? {}), - actionId, - factoryQueryType: OsqueryQueries.actionDetails, - filterQuery: createFilter(filterQuery), - }; - if (!deepEqual(prevRequest, myRequest)) { - return myRequest; - } - return prevRequest; - }); - }, [actionId, filterQuery]); - - return response; }; diff --git a/x-pack/plugins/osquery/public/actions/use_all_actions.ts b/x-pack/plugins/osquery/public/actions/use_all_actions.ts index 2b76435efff0a..a58f45b8e99a2 100644 --- a/x-pack/plugins/osquery/public/actions/use_all_actions.ts +++ b/x-pack/plugins/osquery/public/actions/use_all_actions.ts @@ -5,9 +5,7 @@ * 2.0. */ -import { useEffect, useState } from 'react'; import { useQuery } from 'react-query'; -import deepEqual from 'fast-deep-equal'; import { createFilter } from '../common/helpers'; import { useKibana } from '../common/lib/kibana'; @@ -51,17 +49,24 @@ export const useAllActions = ({ }: UseAllActions) => { const { data } = useKibana().services; - const [actionsRequest, setHostRequest] = useState(null); - - const response = useQuery( + return useQuery( ['actions', { activePage, direction, limit, sortField }], async () => { - if (!actionsRequest) return Promise.resolve(); - const responseData = await data.search - .search(actionsRequest, { - strategy: 'osquerySearchStrategy', - }) + .search( + { + factoryQueryType: OsqueryQueries.actions, + filterQuery: createFilter(filterQuery), + pagination: generateTablePaginationOptions(activePage, limit), + sort: { + direction, + field: sortField, + }, + }, + { + strategy: 'osquerySearchStrategy', + } + ) .toPromise(); return { @@ -71,28 +76,8 @@ export const useAllActions = ({ }; }, { - enabled: !skip && !!actionsRequest, + keepPreviousData: true, + enabled: !skip, } ); - - useEffect(() => { - setHostRequest((prevRequest) => { - const myRequest = { - ...(prevRequest ?? {}), - factoryQueryType: OsqueryQueries.actions, - filterQuery: createFilter(filterQuery), - pagination: generateTablePaginationOptions(activePage, limit), - sort: { - direction, - field: sortField, - }, - }; - if (!deepEqual(prevRequest, myRequest)) { - return myRequest; - } - return prevRequest; - }); - }, [activePage, direction, filterQuery, limit, sortField]); - - return response; }; diff --git a/x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx b/x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx new file mode 100644 index 0000000000000..549e70aa1f634 --- /dev/null +++ b/x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx @@ -0,0 +1,55 @@ +/* + * 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 { EuiLink } from '@elastic/eui'; +import React, { useCallback, useMemo } from 'react'; + +import { pagePathGetters } from '../../../fleet/public'; +import { useKibana, isModifiedEvent, isLeftClickEvent } from '../common/lib/kibana'; +import { useAgentPolicy } from './use_agent_policy'; + +interface AgentsPolicyLinkProps { + policyId: string; +} + +const AgentsPolicyLinkComponent: React.FC = ({ policyId }) => { + const { + application: { getUrlForApp, navigateToApp }, + } = useKibana().services; + + const { data } = useAgentPolicy({ policyId }); + + const href = useMemo( + () => + getUrlForApp('fleet', { + path: `#` + pagePathGetters.policy_details({ policyId }), + }), + [getUrlForApp, policyId] + ); + + const handleClick = useCallback( + (event) => { + if (!isModifiedEvent(event) && isLeftClickEvent(event)) { + event.preventDefault(); + + return navigateToApp('fleet', { + path: `#` + pagePathGetters.policy_details({ policyId }), + }); + } + }, + [navigateToApp, policyId] + ); + + return ( + // eslint-disable-next-line @elastic/eui/href-or-on-click + + {data?.name ?? policyId} + + ); +}; + +export const AgentsPolicyLink = React.memo(AgentsPolicyLinkComponent); diff --git a/x-pack/plugins/osquery/public/agent_policies/index.tsx b/x-pack/plugins/osquery/public/agent_policies/index.tsx new file mode 100644 index 0000000000000..c010c8f10f9b6 --- /dev/null +++ b/x-pack/plugins/osquery/public/agent_policies/index.tsx @@ -0,0 +1,9 @@ +/* + * 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. + */ + +export * from './use_agent_policies'; +export * from './use_agent_policy'; diff --git a/x-pack/plugins/osquery/public/agent_policies/use_agent_policies.ts b/x-pack/plugins/osquery/public/agent_policies/use_agent_policies.ts new file mode 100644 index 0000000000000..95323dd23f4d2 --- /dev/null +++ b/x-pack/plugins/osquery/public/agent_policies/use_agent_policies.ts @@ -0,0 +1,35 @@ +/* + * 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 { useQuery } from 'react-query'; + +import { useKibana } from '../common/lib/kibana'; +import { + agentPolicyRouteService, + GetAgentPoliciesResponse, + GetAgentPoliciesResponseItem, +} from '../../../fleet/common'; + +export const useAgentPolicies = () => { + const { http } = useKibana().services; + + return useQuery( + ['agentPolicies'], + () => + http.get(agentPolicyRouteService.getListPath(), { + query: { + perPage: 100, + }, + }), + { + initialData: { items: [], total: 0, page: 1, perPage: 100 }, + placeholderData: [], + keepPreviousData: true, + select: (response) => response.items, + } + ); +}; diff --git a/x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts b/x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts new file mode 100644 index 0000000000000..5fdc317d3f6f1 --- /dev/null +++ b/x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts @@ -0,0 +1,30 @@ +/* + * 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 { useQuery } from 'react-query'; + +import { useKibana } from '../common/lib/kibana'; +import { agentPolicyRouteService } from '../../../fleet/common'; + +interface UseAgentPolicy { + policyId: string; + skip?: boolean; +} + +export const useAgentPolicy = ({ policyId, skip }: UseAgentPolicy) => { + const { http } = useKibana().services; + + return useQuery( + ['agentPolicy', { policyId }], + () => http.get(agentPolicyRouteService.getInfoPath(policyId)), + { + enabled: !skip, + keepPreviousData: true, + select: (response) => response.item, + } + ); +}; diff --git a/x-pack/plugins/osquery/public/agents/agents_table.tsx b/x-pack/plugins/osquery/public/agents/agents_table.tsx index 38132957c341f..88e3bda7bac4b 100644 --- a/x-pack/plugins/osquery/public/agents/agents_table.tsx +++ b/x-pack/plugins/osquery/public/agents/agents_table.tsx @@ -5,8 +5,9 @@ * 2.0. */ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { EuiComboBox, EuiHealth, EuiHighlight } from '@elastic/eui'; +import { find } from 'lodash/fp'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { EuiComboBox, EuiHealth, EuiHighlight, EuiSpacer } from '@elastic/eui'; import { useDebounce } from 'react-use'; import { useAllAgents } from './use_all_agents'; @@ -38,7 +39,7 @@ interface AgentsTableProps { const perPage = 10; const DEBOUNCE_DELAY = 100; // ms -const AgentsTableComponent: React.FC = ({ onChange }) => { +const AgentsTableComponent: React.FC = ({ agentSelection, onChange }) => { // search related const [searchValue, setSearchValue] = useState(''); const [modifyingSearch, setModifyingSearch] = useState(false); @@ -67,13 +68,34 @@ const AgentsTableComponent: React.FC = ({ onChange }) => { const [options, setOptions] = useState([]); const [selectedOptions, setSelectedOptions] = useState([]); const [numAgentsSelected, setNumAgentsSelected] = useState(0); + const defaultValueInitialized = useRef(false); + + useEffect(() => { + if (agentSelection && !defaultValueInitialized.current && options.length) { + if (agentSelection.policiesSelected) { + const policyOptions = find(['label', 'Policy'], options); + + if (policyOptions) { + const defaultOptions = policyOptions.options?.filter((option) => + agentSelection.policiesSelected.includes(option.label) + ); + + if (defaultOptions?.length) { + setSelectedOptions(defaultOptions); + } + defaultValueInitialized.current = true; + } + } + } + }, [agentSelection, options]); useEffect(() => { // update the groups when groups or agents have changed grouper.setTotalAgents(totalNumAgents); grouper.updateGroup(AGENT_GROUP_KEY.Platform, groups.platforms); grouper.updateGroup(AGENT_GROUP_KEY.Policy, groups.policies); - grouper.updateGroup(AGENT_GROUP_KEY.Agent, agents); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + grouper.updateGroup(AGENT_GROUP_KEY.Agent, agents!); const newOptions = grouper.generateOptions(); setOptions(newOptions); }, [groups.platforms, groups.policies, totalNumAgents, groupsLoading, agents, grouper]); @@ -134,8 +156,6 @@ const AgentsTableComponent: React.FC = ({ onChange }) => { return (
- {numAgentsSelected > 0 ? {generateSelectedAgentsMessage(numAgentsSelected)} : ''} -   = ({ onChange }) => { onChange={onSelection} renderOption={renderOption} /> + + {numAgentsSelected > 0 ? {generateSelectedAgentsMessage(numAgentsSelected)} : ''}
); }; diff --git a/x-pack/plugins/osquery/public/agents/helpers.ts b/x-pack/plugins/osquery/public/agents/helpers.ts index 14a8dd64fb4da..948e2a0ea50b0 100644 --- a/x-pack/plugins/osquery/public/agents/helpers.ts +++ b/x-pack/plugins/osquery/public/agents/helpers.ts @@ -159,15 +159,14 @@ export const generateAgentSelection = (selection: GroupOption[]) => { export const generateTablePaginationOptions = ( activePage: number, - limit: number, - isBucketSort?: boolean + limit: number ): PaginationInputPaginated => { const cursorStart = activePage * limit; return { activePage, cursorStart, fakePossibleCount: 4 <= activePage && activePage > 0 ? limit * (activePage + 2) : limit * 5, - querySize: isBucketSort ? limit : limit + cursorStart, + querySize: limit, }; }; diff --git a/x-pack/plugins/osquery/public/agents/use_agent_policies.ts b/x-pack/plugins/osquery/public/agents/use_agent_policies.ts index 3045423ccbe2d..c8b3ef064c038 100644 --- a/x-pack/plugins/osquery/public/agents/use_agent_policies.ts +++ b/x-pack/plugins/osquery/public/agents/use_agent_policies.ts @@ -5,13 +5,10 @@ * 2.0. */ +import { mapKeys } from 'lodash'; import { useQueries, UseQueryResult } from 'react-query'; import { useKibana } from '../common/lib/kibana'; -import { - AgentPolicy, - agentPolicyRouteService, - GetOneAgentPolicyResponse, -} from '../../../fleet/common'; +import { agentPolicyRouteService, GetOneAgentPolicyResponse } from '../../../fleet/common'; export const useAgentPolicies = (policyIds: string[] = []) => { const { http } = useKibana().services; @@ -26,13 +23,7 @@ export const useAgentPolicies = (policyIds: string[] = []) => { const agentPoliciesLoading = agentResponse.some((p) => p.isLoading); const agentPolicies = agentResponse.map((p) => p.data?.item); - const agentPolicyById = agentPolicies.reduce((acc, p) => { - if (!p) { - return acc; - } - acc[p.id] = p; - return acc; - }, {} as { [key: string]: AgentPolicy }); + const agentPolicyById = mapKeys(agentPolicies, 'id'); return { agentPoliciesLoading, agentPolicies, agentPolicyById }; }; diff --git a/x-pack/plugins/osquery/public/agents/use_agent_status.ts b/x-pack/plugins/osquery/public/agents/use_agent_status.ts new file mode 100644 index 0000000000000..c26adb908f6be --- /dev/null +++ b/x-pack/plugins/osquery/public/agents/use_agent_status.ts @@ -0,0 +1,39 @@ +/* + * 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 { useQuery } from 'react-query'; + +import { GetAgentStatusResponse, agentRouteService } from '../../../fleet/common'; +import { useKibana } from '../common/lib/kibana'; + +interface UseAgentStatus { + policyId?: string; + skip?: boolean; +} + +export const useAgentStatus = ({ policyId, skip }: UseAgentStatus) => { + const { http } = useKibana().services; + + return useQuery( + ['agentStatus', policyId], + () => + http.get( + agentRouteService.getStatusPath(), + policyId + ? { + query: { + policyId, + }, + } + : {} + ), + { + enabled: !skip, + select: (response) => response.results, + } + ); +}; diff --git a/x-pack/plugins/osquery/public/agents/use_all_agents.ts b/x-pack/plugins/osquery/public/agents/use_all_agents.ts index bd9b1c32412e6..4086175046c1c 100644 --- a/x-pack/plugins/osquery/public/agents/use_all_agents.ts +++ b/x-pack/plugins/osquery/public/agents/use_all_agents.ts @@ -7,6 +7,7 @@ import { useQuery } from 'react-query'; +import { GetAgentsResponse, agentRouteService } from '../../../fleet/common'; import { useKibana } from '../common/lib/kibana'; interface UseAllAgents { @@ -27,14 +28,14 @@ export const useAllAgents = ( ) => { const { perPage } = opts; const { http } = useKibana().services; - const { isLoading: agentsLoading, data: agentData } = useQuery( + const { isLoading: agentsLoading, data: agentData } = useQuery( ['agents', osqueryPolicies, searchValue, perPage], - async () => { + () => { let kuery = `(${osqueryPolicies.map((p) => `policy_id:${p}`).join(' or ')})`; if (searchValue) { kuery += ` and (local_metadata.host.hostname:/${searchValue}/ or local_metadata.elastic.agent.id:/${searchValue}/)`; } - return await http.get('/api/fleet/agents', { + return http.get(agentRouteService.getListPath(), { query: { kuery, perPage, diff --git a/x-pack/plugins/osquery/public/agents/use_osquery_policies.ts b/x-pack/plugins/osquery/public/agents/use_osquery_policies.ts index f786e9167d2f8..2937c57b50a3d 100644 --- a/x-pack/plugins/osquery/public/agents/use_osquery_policies.ts +++ b/x-pack/plugins/osquery/public/agents/use_osquery_policies.ts @@ -7,20 +7,20 @@ import { useQuery } from 'react-query'; import { useKibana } from '../common/lib/kibana'; -import { PACKAGE_POLICY_SAVED_OBJECT_TYPE } from '../../../fleet/common'; +import { packagePolicyRouteService, PACKAGE_POLICY_SAVED_OBJECT_TYPE } from '../../../fleet/common'; +import { OSQUERY_INTEGRATION_NAME } from '../../common'; export const useOsqueryPolicies = () => { const { http } = useKibana().services; const { isLoading: osqueryPoliciesLoading, data: osqueryPolicies } = useQuery( ['osqueryPolicies'], - async () => { - return await http.get('/api/fleet/package_policies', { + () => + http.get(packagePolicyRouteService.getListPath(), { query: { - kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name:osquery_manager`, + kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name:${OSQUERY_INTEGRATION_NAME}`, }, - }); - }, + }), { select: (data) => data.items.map((p: { policy_id: string }) => p.policy_id) } ); diff --git a/x-pack/plugins/osquery/public/application.tsx b/x-pack/plugins/osquery/public/application.tsx index d72a788b16245..3e959132e21a8 100644 --- a/x-pack/plugins/osquery/public/application.tsx +++ b/x-pack/plugins/osquery/public/application.tsx @@ -13,7 +13,7 @@ import ReactDOM from 'react-dom'; import { Router } from 'react-router-dom'; import { I18nProvider } from '@kbn/i18n/react'; import { ThemeProvider } from 'styled-components'; -import { QueryClient, QueryClientProvider } from 'react-query'; +import { QueryClientProvider } from 'react-query'; import { ReactQueryDevtools } from 'react-query/devtools'; import { useUiSetting$ } from '../../../../src/plugins/kibana_react/public'; @@ -23,8 +23,7 @@ import { AppPluginStartDependencies } from './types'; import { OsqueryApp } from './components/app'; import { DEFAULT_DARK_MODE, PLUGIN_NAME } from '../common'; import { KibanaContextProvider } from './common/lib/kibana'; - -const queryClient = new QueryClient(); +import { queryClient } from './query_client'; const OsqueryAppContext = () => { const [darkMode] = useUiSetting$(DEFAULT_DARK_MODE); diff --git a/x-pack/plugins/osquery/public/common/hooks/index.tsx b/x-pack/plugins/osquery/public/common/hooks/index.tsx new file mode 100644 index 0000000000000..750e09b44d89b --- /dev/null +++ b/x-pack/plugins/osquery/public/common/hooks/index.tsx @@ -0,0 +1,9 @@ +/* + * 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. + */ + +export * from './use_discover_link'; +export * from './use_osquery_integration'; diff --git a/x-pack/plugins/osquery/public/common/hooks/use_breadcrumbs.tsx b/x-pack/plugins/osquery/public/common/hooks/use_breadcrumbs.tsx new file mode 100644 index 0000000000000..660ef87fb57e3 --- /dev/null +++ b/x-pack/plugins/osquery/public/common/hooks/use_breadcrumbs.tsx @@ -0,0 +1,136 @@ +/* + * 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 type { ChromeBreadcrumb } from 'src/core/public'; + +import { BASE_PATH } from '../../../common/constants'; +import type { Page, DynamicPagePathValues } from '../page_paths'; +import { pagePathGetters } from '../page_paths'; + +import { useKibana } from '../lib/kibana'; + +const BASE_BREADCRUMB: ChromeBreadcrumb = { + href: pagePathGetters.overview(), + text: i18n.translate('xpack.osquery.breadcrumbs.appTitle', { + defaultMessage: 'Osquery', + }), +}; + +const breadcrumbGetters: { + [key in Page]?: (values: DynamicPagePathValues) => ChromeBreadcrumb[]; +} = { + base: () => [BASE_BREADCRUMB], + overview: () => [ + BASE_BREADCRUMB, + { + text: i18n.translate('xpack.osquery.breadcrumbs.overviewPageTitle', { + defaultMessage: 'Overview', + }), + }, + ], + live_queries: () => [ + BASE_BREADCRUMB, + { + text: i18n.translate('xpack.osquery.breadcrumbs.liveQueriesPageTitle', { + defaultMessage: 'Live queries', + }), + }, + ], + live_query_new: () => [ + BASE_BREADCRUMB, + { + href: pagePathGetters.live_queries(), + text: i18n.translate('xpack.osquery.breadcrumbs.liveQueriesPageTitle', { + defaultMessage: 'Live queries', + }), + }, + { + text: i18n.translate('xpack.osquery.breadcrumbs.newLiveQueryPageTitle', { + defaultMessage: 'New', + }), + }, + ], + live_query_details: ({ liveQueryId }) => [ + BASE_BREADCRUMB, + { + href: pagePathGetters.live_queries(), + text: i18n.translate('xpack.osquery.breadcrumbs.liveQueriesPageTitle', { + defaultMessage: 'Live queries', + }), + }, + { + text: liveQueryId, + }, + ], + scheduled_query_groups: () => [ + BASE_BREADCRUMB, + { + text: i18n.translate('xpack.osquery.breadcrumbs.scheduledQueryGroupsPageTitle', { + defaultMessage: 'Scheduled query groups', + }), + }, + ], + scheduled_query_group_add: () => [ + BASE_BREADCRUMB, + { + href: pagePathGetters.scheduled_query_groups(), + text: i18n.translate('xpack.osquery.breadcrumbs.scheduledQueryGroupsPageTitle', { + defaultMessage: 'Scheduled query groups', + }), + }, + { + text: i18n.translate('xpack.osquery.breadcrumbs.addScheduledQueryGroupsPageTitle', { + defaultMessage: 'Add', + }), + }, + ], + scheduled_query_group_details: ({ scheduledQueryGroupName }) => [ + BASE_BREADCRUMB, + { + href: pagePathGetters.scheduled_query_groups(), + text: i18n.translate('xpack.osquery.breadcrumbs.scheduledQueryGroupsPageTitle', { + defaultMessage: 'Scheduled query groups', + }), + }, + { + text: scheduledQueryGroupName, + }, + ], + scheduled_query_group_edit: ({ scheduledQueryGroupName, scheduledQueryGroupId }) => [ + BASE_BREADCRUMB, + { + href: pagePathGetters.scheduled_query_groups(), + text: i18n.translate('xpack.osquery.breadcrumbs.scheduledQueryGroupsPageTitle', { + defaultMessage: 'Scheduled query groups', + }), + }, + { + href: pagePathGetters.scheduled_query_group_details({ scheduledQueryGroupId }), + text: scheduledQueryGroupName, + }, + { + text: i18n.translate('xpack.osquery.breadcrumbs.editScheduledQueryGroupsPageTitle', { + defaultMessage: 'Edit', + }), + }, + ], +}; + +export function useBreadcrumbs(page: Page, values: DynamicPagePathValues = {}) { + const { chrome, http } = useKibana().services; + const breadcrumbs: ChromeBreadcrumb[] = + breadcrumbGetters[page]?.(values).map((breadcrumb) => ({ + ...breadcrumb, + href: breadcrumb.href ? http.basePath.prepend(`${BASE_PATH}${breadcrumb.href}`) : undefined, + })) || []; + const docTitle: string[] = [...breadcrumbs] + .reverse() + .map((breadcrumb) => breadcrumb.text as string); + chrome.docTitle.change(docTitle); + chrome.setBreadcrumbs(breadcrumbs); +} diff --git a/x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx b/x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx new file mode 100644 index 0000000000000..dd091d80ce62e --- /dev/null +++ b/x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx @@ -0,0 +1,64 @@ +/* + * 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 { useCallback, useEffect, useState } from 'react'; + +import { FilterStateStore } from '../../../../../../src/plugins/data/common'; +import { useKibana, isModifiedEvent, isLeftClickEvent } from '../lib/kibana'; + +interface UseDiscoverLink { + filters: Array<{ key: string; value: string | number }>; +} + +export const useDiscoverLink = ({ filters }: UseDiscoverLink) => { + const { + application: { navigateToUrl }, + } = useKibana().services; + const urlGenerator = useKibana().services.discover?.urlGenerator; + const [discoverUrl, setDiscoverUrl] = useState(''); + + useEffect(() => { + const getDiscoverUrl = async () => { + if (!urlGenerator?.createUrl) return; + + const newUrl = await urlGenerator.createUrl({ + indexPatternId: 'logs-*', + filters: filters.map((filter) => ({ + meta: { + index: 'logs-*', + alias: null, + negate: false, + disabled: false, + type: 'phrase', + key: filter.key, + params: { query: filter.value }, + }, + query: { match_phrase: { action_id: filter.value } }, + $state: { store: FilterStateStore.APP_STATE }, + })), + }); + setDiscoverUrl(newUrl); + }; + getDiscoverUrl(); + }, [filters, urlGenerator]); + + const onClick = useCallback( + (event: React.MouseEvent) => { + if (!isModifiedEvent(event) && isLeftClickEvent(event) && discoverUrl) { + event.preventDefault(); + + return navigateToUrl(discoverUrl); + } + }, + [discoverUrl, navigateToUrl] + ); + + return { + href: discoverUrl, + onClick, + }; +}; diff --git a/x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx b/x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx new file mode 100644 index 0000000000000..d8bed30b969ad --- /dev/null +++ b/x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx @@ -0,0 +1,31 @@ +/* + * 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 { find } from 'lodash/fp'; +import { useQuery } from 'react-query'; + +import { GetPackagesResponse, epmRouteService } from '../../../../fleet/common'; +import { OSQUERY_INTEGRATION_NAME } from '../../../common'; +import { useKibana } from '../lib/kibana'; + +export const useOsqueryIntegration = () => { + const { http } = useKibana().services; + + return useQuery( + 'integrations', + () => + http.get(epmRouteService.getListPath(), { + query: { + experimental: true, + }, + }), + { + select: ({ response }: GetPackagesResponse) => + find(['name', OSQUERY_INTEGRATION_NAME], response), + } + ); +}; diff --git a/x-pack/plugins/osquery/public/common/lib/kibana/kibana_react.ts b/x-pack/plugins/osquery/public/common/lib/kibana/kibana_react.ts index 63288507b29d4..dc49bfcee6dda 100644 --- a/x-pack/plugins/osquery/public/common/lib/kibana/kibana_react.ts +++ b/x-pack/plugins/osquery/public/common/lib/kibana/kibana_react.ts @@ -5,6 +5,7 @@ * 2.0. */ +import React from 'react'; import { useHistory } from 'react-router-dom'; import { KibanaContextProvider, @@ -24,6 +25,11 @@ export interface WithKibanaProps { const useTypedKibana = () => useKibana(); +const isModifiedEvent = (event: React.MouseEvent) => + !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey); + +const isLeftClickEvent = (event: React.MouseEvent) => event.button === 0; + const useRouterNavigate = ( to: Parameters[1], onClickCallback?: Parameters[2] @@ -35,6 +41,8 @@ const useRouterNavigate = ( export { KibanaContextProvider, useRouterNavigate, + isLeftClickEvent, + isModifiedEvent, useTypedKibana as useKibana, useUiSetting, useUiSetting$, diff --git a/x-pack/plugins/osquery/public/common/page_paths.ts b/x-pack/plugins/osquery/public/common/page_paths.ts new file mode 100644 index 0000000000000..b4c7963fb9a02 --- /dev/null +++ b/x-pack/plugins/osquery/public/common/page_paths.ts @@ -0,0 +1,59 @@ +/* + * 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. + */ + +export type StaticPage = + | 'base' + | 'overview' + | 'live_queries' + | 'live_query_new' + | 'scheduled_query_groups' + | 'scheduled_query_group_add'; + +export type DynamicPage = + | 'live_query_details' + | 'scheduled_query_group_details' + | 'scheduled_query_group_edit'; + +export type Page = StaticPage | DynamicPage; + +export interface DynamicPagePathValues { + [key: string]: string; +} + +export const BASE_PATH = '/app/fleet'; + +// If routing paths are changed here, please also check to see if +// `pagePathGetters()`, below, needs any modifications +export const PAGE_ROUTING_PATHS = { + overview: '/', + live_queries: '/live_queries', + live_query_new: '/live_queries/new', + live_query_details: '/live_queries/:liveQueryId', + scheduled_query_groups: '/scheduled_query_groups', + scheduled_query_group_add: '/scheduled_query_groups/add', + scheduled_query_group_details: '/scheduled_query_groups/:scheduledQueryGroupId', + scheduled_query_group_edit: '/scheduled_query_groups/:scheduledQueryGroupId/edit', +}; + +export const pagePathGetters: { + [key in StaticPage]: () => string; +} & + { + [key in DynamicPage]: (values: DynamicPagePathValues) => string; + } = { + base: () => '/', + overview: () => '/', + live_queries: () => '/live_queries', + live_query_new: () => '/live_queries/new', + live_query_details: ({ liveQueryId }) => `/live_queries/${liveQueryId}`, + scheduled_query_groups: () => '/scheduled_query_groups', + scheduled_query_group_add: () => '/scheduled_query_groups/add', + scheduled_query_group_details: ({ scheduledQueryGroupId }) => + `/scheduled_query_groups/${scheduledQueryGroupId}`, + scheduled_query_group_edit: ({ scheduledQueryGroupId }) => + `/scheduled_query_groups/${scheduledQueryGroupId}/edit`, +}; diff --git a/x-pack/plugins/osquery/public/components/app.tsx b/x-pack/plugins/osquery/public/components/app.tsx index a4a1f51fdd02b..d56aacc99ad53 100644 --- a/x-pack/plugins/osquery/public/components/app.tsx +++ b/x-pack/plugins/osquery/public/components/app.tsx @@ -7,14 +7,15 @@ import React, { useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiFlexGroup, EuiFlexItem, EuiTabs, EuiTab } from '@elastic/eui'; +import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiTabs, EuiTab } from '@elastic/eui'; import { useLocation } from 'react-router-dom'; import { Container, Nav, Wrapper } from './layouts'; import { OsqueryAppRoutes } from '../routes'; import { useRouterNavigate } from '../common/lib/kibana'; +import { ManageIntegrationLink } from './manage_integration_link'; -export const OsqueryAppComponent = () => { +const OsqueryAppComponent = () => { const location = useLocation(); const section = useMemo(() => location.pathname.split('/')[1] ?? 'overview', [location.pathname]); @@ -25,20 +26,49 @@ export const OsqueryAppComponent = () => { - + {/* + */} + + - + + + + + + + + + + + diff --git a/x-pack/plugins/osquery/public/components/beta_badge.tsx b/x-pack/plugins/osquery/public/components/beta_badge.tsx new file mode 100644 index 0000000000000..f63c80168b487 --- /dev/null +++ b/x-pack/plugins/osquery/public/components/beta_badge.tsx @@ -0,0 +1,37 @@ +/* + * 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 { EuiBetaBadge, EuiText } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import styled from 'styled-components'; + +export const BetaBadgeRowWrapper = styled(EuiText)` + display: flex; + align-items: center; +`; + +const Wrapper = styled.div` + padding-left: ${({ theme }) => theme.eui.paddingSizes.s}; +`; + +const betaBadgeLabel = i18n.translate('xpack.osquery.common.tabBetaBadgeLabel', { + defaultMessage: 'Beta', +}); + +const betaBadgeTooltipContent = i18n.translate('xpack.osquery.common.tabBetaBadgeTooltipContent', { + defaultMessage: + 'This feature is under active development. Extra functionality is coming, and some functionality may change.', +}); + +const BetaBadgeComponent = () => ( + + + +); + +export const BetaBadge = React.memo(BetaBadgeComponent); diff --git a/x-pack/plugins/osquery/public/components/manage_integration_link.tsx b/x-pack/plugins/osquery/public/components/manage_integration_link.tsx new file mode 100644 index 0000000000000..db201611baed5 --- /dev/null +++ b/x-pack/plugins/osquery/public/components/manage_integration_link.tsx @@ -0,0 +1,74 @@ +/* + * 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 React, { useCallback, useMemo } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiButtonEmpty, EuiFlexItem } from '@elastic/eui'; + +import { pagePathGetters } from '../../../fleet/public'; + +import { useKibana, isModifiedEvent, isLeftClickEvent } from '../common/lib/kibana'; +import { useOsqueryIntegration } from '../common/hooks'; + +const ManageIntegrationLinkComponent = () => { + const { + application: { + getUrlForApp, + navigateToApp, + capabilities: { + osquery: { save: hasSaveUICapabilities }, + }, + }, + } = useKibana().services; + const { data: osqueryIntegration } = useOsqueryIntegration(); + + const integrationHref = useMemo(() => { + if (osqueryIntegration) { + return getUrlForApp('fleet', { + path: + '#' + + pagePathGetters.integration_details_policies({ + pkgkey: `${osqueryIntegration.name}-${osqueryIntegration.version}`, + }), + }); + } + }, [getUrlForApp, osqueryIntegration]); + + const integrationClick = useCallback( + (event) => { + if (!isModifiedEvent(event) && isLeftClickEvent(event)) { + event.preventDefault(); + if (osqueryIntegration) { + return navigateToApp('fleet', { + path: + '#' + + pagePathGetters.integration_details_policies({ + pkgkey: `${osqueryIntegration.name}-${osqueryIntegration.version}`, + }), + }); + } + } + }, + [navigateToApp, osqueryIntegration] + ); + + return hasSaveUICapabilities && integrationHref ? ( + + { + // eslint-disable-next-line @elastic/eui/href-or-on-click + + + + } + + ) : null; +}; + +export const ManageIntegrationLink = React.memo(ManageIntegrationLinkComponent); diff --git a/x-pack/plugins/osquery/public/editor/index.tsx b/x-pack/plugins/osquery/public/editor/index.tsx index 4cdb027480f98..70da55ca3f007 100644 --- a/x-pack/plugins/osquery/public/editor/index.tsx +++ b/x-pack/plugins/osquery/public/editor/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useCallback } from 'react'; +import React from 'react'; import { EuiCodeEditor } from '@elastic/eui'; import 'brace/theme/tomorrow'; @@ -22,30 +22,27 @@ const EDITOR_PROPS = { interface OsqueryEditorProps { defaultValue: string; + disabled?: boolean; onChange: (newValue: string) => void; } -const OsqueryEditorComponent: React.FC = ({ defaultValue, onChange }) => { - const handleChange = useCallback( - (newValue) => { - onChange(newValue); - }, - [onChange] - ); - - return ( - - ); -}; +const OsqueryEditorComponent: React.FC = ({ + defaultValue, + // disabled, + onChange, +}) => ( + +); export const OsqueryEditor = React.memo(OsqueryEditorComponent); diff --git a/x-pack/plugins/osquery/public/fleet_integration/components/add_new_query_flyout.tsx b/x-pack/plugins/osquery/public/fleet_integration/components/add_new_query_flyout.tsx deleted file mode 100644 index b02b3d288256e..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/components/add_new_query_flyout.tsx +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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. - */ - -/* eslint-disable react/jsx-no-bind */ - -/* eslint-disable react-perf/jsx-no-new-function-as-prop */ - -import { produce } from 'immer'; -import { EuiFlyout, EuiTitle, EuiFlyoutBody, EuiFlyoutHeader, EuiPortal } from '@elastic/eui'; -import React from 'react'; - -import { AddPackQueryForm } from '../../packs/common/add_pack_query'; - -// @ts-expect-error update types -export const AddNewQueryFlyout = ({ data, handleChange, onClose }) => { - // @ts-expect-error update types - const handleSubmit = (payload) => { - // @ts-expect-error update types - const updatedPolicy = produce(data, (draft) => { - draft.inputs[0].streams.push({ - data_stream: { - type: 'logs', - dataset: 'osquery_elastic_managed.osquery', - }, - vars: { - query: { - type: 'text', - value: payload.query.attributes.query, - }, - interval: { - type: 'text', - value: `${payload.interval}`, - }, - id: { - type: 'text', - value: payload.query.id, - }, - }, - enabled: true, - }); - }); - - onClose(); - handleChange({ - isValid: true, - updatedPolicy, - }); - }; - - return ( - - - - -

Attach next query

-
-
- - - -
-
- ); -}; diff --git a/x-pack/plugins/osquery/public/fleet_integration/components/custom_tab_tabs.tsx b/x-pack/plugins/osquery/public/fleet_integration/components/custom_tab_tabs.tsx deleted file mode 100644 index 9d2df5bbb0960..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/components/custom_tab_tabs.tsx +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 React, { useMemo } from 'react'; -import { useLocation } from 'react-router-dom'; -import qs from 'query-string'; - -import { Queries } from '../../queries'; -import { Packs } from '../../packs'; -import { LiveQuery } from '../../live_query'; - -const CustomTabTabsComponent = () => { - const location = useLocation(); - - const selectedTab = useMemo(() => qs.parse(location.search)?.tab, [location.search]); - - if (selectedTab === 'packs') { - return ; - } - - if (selectedTab === 'saved_queries') { - return ; - } - - if (selectedTab === 'live_query') { - return ; - } - - return ; -}; - -export const CustomTabTabs = React.memo(CustomTabTabsComponent); diff --git a/x-pack/plugins/osquery/public/fleet_integration/components/form.tsx b/x-pack/plugins/osquery/public/fleet_integration/components/form.tsx deleted file mode 100644 index bb9bf066a9f92..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/components/form.tsx +++ /dev/null @@ -1,240 +0,0 @@ -/* - * 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. - */ - -/* eslint-disable @typescript-eslint/naming-convention */ - -import produce from 'immer'; -import { find } from 'lodash/fp'; -import { EuiSpacer, EuiText, EuiHorizontalRule, EuiSuperSelect } from '@elastic/eui'; -import React, { useCallback, useMemo } from 'react'; -import deepEqual from 'fast-deep-equal'; -import { useQuery } from 'react-query'; - -import { - // UseField, - useForm, - useFormData, - UseArray, - getUseField, - Field, - ToggleField, - Form, -} from '../../shared_imports'; - -// import { OsqueryStreamField } from '../../scheduled_query/common/osquery_stream_field'; -import { useKibana } from '../../common/lib/kibana'; -import { ScheduledQueryQueriesTable } from './scheduled_queries_table'; -import { schema } from './schema'; - -const CommonUseField = getUseField({ component: Field }); - -const EDIT_SCHEDULED_QUERY_FORM_ID = 'editScheduledQueryForm'; - -interface EditScheduledQueryFormProps { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - data: Array>; - handleSubmit: () => Promise; -} - -const EditScheduledQueryFormComponent: React.FC = ({ - data, - handleSubmit, -}) => { - const { http } = useKibana().services; - - const { - data: { saved_objects: packs } = { - saved_objects: [], - }, - } = useQuery('packs', () => http.get('/internal/osquery/pack')); - - const { form } = useForm({ - id: EDIT_SCHEDULED_QUERY_FORM_ID, - onSubmit: handleSubmit, - schema, - defaultValue: data, - options: { - stripEmptyFields: false, - }, - // @ts-expect-error update types - deserializer: (payload) => { - const deserialized = produce(payload, (draft) => { - // @ts-expect-error update types - draft.streams = draft.inputs[0].streams.map(({ data_stream, enabled, vars }) => ({ - data: { - data_stream, - enabled, - vars, - }, - })); - }); - - return deserialized; - }, - // @ts-expect-error update types - serializer: (payload) => { - const serialized = produce(payload, (draft) => { - // @ts-expect-error update types - if (draft.inputs) { - // @ts-expect-error update types - draft.inputs[0].config = { - pack: { - type: 'id', - value: 'e33f5f30-705e-11eb-9e99-9f6b4d0d9506', - }, - }; - // @ts-expect-error update types - draft.inputs[0].type = 'osquery'; - // @ts-expect-error update types - draft.inputs[0].streams = draft.inputs[0].streams?.map((stream) => stream.data) ?? []; - } - }); - - return serialized; - }, - }); - - const { setFieldValue } = form; - - const handlePackChange = useCallback( - (value) => { - const newPack = find(['id', value], packs); - - setFieldValue( - 'streams', - // @ts-expect-error update types - newPack.queries.map((packQuery, index) => ({ - id: index, - isNew: true, - path: `streams[${index}]`, - data: { - data_stream: { - type: 'logs', - dataset: 'osquery_elastic_managed.osquery', - }, - id: 'osquery-osquery_elastic_managed.osquery-7065c2dc-f835-4d13-9486-6eec515f39bd', - vars: { - query: { - type: 'text', - value: packQuery.query, - }, - interval: { - type: 'text', - value: `${packQuery.interval}`, - }, - id: { - type: 'text', - value: packQuery.id, - }, - }, - enabled: true, - }, - })) - ); - }, - [packs, setFieldValue] - ); - - const [formData] = useFormData({ form, watch: ['streams'] }); - - const scheduledQueries = useMemo(() => { - if (formData.inputs) { - // @ts-expect-error update types - return formData.streams.reduce((acc, stream) => { - if (!stream.data) { - return acc; - } - - return [...acc, stream.data]; - }, []); - } - - return []; - }, [formData]); - - return ( -
- ({ - value: pack.id, - inputDisplay: ( - <> - {pack.name} - -

{pack.description}

-
- - ), - }))} - valueOfSelected={packs[0]?.id} - onChange={handlePackChange} - /> - - - - - - { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - ({ items, form: streamsForm, addItem, removeItem }) => { - return ( - <> - {/* {items.map((item) => { - return ( - removeItem(item.id)} - // readDefaultValueOnForm={true} - defaultValue={ - item.isNew - ? // eslint-disable-next-line react-perf/jsx-no-new-object-as-prop - { - data_stream: { - type: 'logs', - dataset: 'osquery_elastic_managed.osquery', - }, - vars: { - query: { - type: 'text', - value: 'select * from uptime', - }, - interval: { - type: 'text', - value: '120', - }, - id: { - type: 'text', - value: uuid.v4(), - }, - }, - enabled: true, - } - : get(item.path, streamsForm.getFormData()) - } - /> - ); - })} */} - {/* - {'Add query'} - */} - - ); - } - } - - - ); -}; - -export const EditScheduledQueryForm = React.memo( - EditScheduledQueryFormComponent, - (prevProps, nextProps) => deepEqual(prevProps.data, nextProps.data) -); diff --git a/x-pack/plugins/osquery/public/fleet_integration/components/input_stream_form.tsx b/x-pack/plugins/osquery/public/fleet_integration/components/input_stream_form.tsx deleted file mode 100644 index 34508c93e73bd..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/components/input_stream_form.tsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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 React from 'react'; - -import { useForm, Form, getUseField, Field, FIELD_TYPES } from '../../shared_imports'; - -const CommonUseField = getUseField({ component: Field }); - -const FORM_ID = 'inputStreamForm'; - -const schema = { - data_stream: { - dataset: { - type: FIELD_TYPES.TEXT, - }, - type: { - type: FIELD_TYPES.TEXT, - }, - }, - enabled: { - type: FIELD_TYPES.TOGGLE, - label: 'Active', - }, - id: { - type: FIELD_TYPES.TEXT, - }, - vars: { - id: { - type: { - type: FIELD_TYPES.TEXT, - }, - value: { type: FIELD_TYPES.TEXT }, - }, - interval: { - type: { - type: FIELD_TYPES.TEXT, - }, - value: { type: FIELD_TYPES.TEXT }, - }, - query: { - type: { - type: FIELD_TYPES.TEXT, - }, - value: { type: FIELD_TYPES.TEXT }, - }, - }, -}; - -// @ts-expect-error update types -const InputStreamFormComponent = ({ data }) => { - const { form } = useForm({ - id: FORM_ID, - schema, - defaultValue: data, - }); - - return ( -
- - - ); -}; - -export const InputStreamForm = React.memo(InputStreamFormComponent); diff --git a/x-pack/plugins/osquery/public/fleet_integration/components/input_type.tsx b/x-pack/plugins/osquery/public/fleet_integration/components/input_type.tsx deleted file mode 100644 index 4a4e2a799ae42..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/components/input_type.tsx +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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. - */ - -/* eslint-disable react-perf/jsx-no-new-object-as-prop */ - -/* eslint-disable react-perf/jsx-no-new-array-as-prop */ - -import React, { useCallback } from 'react'; -import produce from 'immer'; -import { EuiRadioGroup } from '@elastic/eui'; - -// @ts-expect-error update types -export const ScheduledQueryInputType = ({ data, handleChange }) => { - const radios = [ - { - id: 'pack', - label: 'Pack', - }, - { - id: 'saved_queries', - label: 'Saved queries', - }, - ]; - - const onChange = useCallback( - (optionId: string) => { - // @ts-expect-error update types - const updatedPolicy = produce(data, (draft) => { - if (!draft.inputs[0].config) { - draft.inputs[0].config = { - input_source: { - type: 'text', - value: optionId, - }, - }; - } else { - draft.inputs[0].config.input_source.value = optionId; - } - }); - - handleChange({ - isValid: true, - updatedPolicy, - }); - }, - [data, handleChange] - ); - - return ( - {'Choose input type'}, - }} - /> - ); -}; diff --git a/x-pack/plugins/osquery/public/fleet_integration/components/navigation.tsx b/x-pack/plugins/osquery/public/fleet_integration/components/navigation.tsx deleted file mode 100644 index 5f5d5c0c8b546..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/components/navigation.tsx +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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 { snakeCase } from 'lodash/fp'; -import { EuiIcon, EuiSideNav } from '@elastic/eui'; -import React, { useCallback, useMemo } from 'react'; -import { useHistory, useLocation } from 'react-router-dom'; -import qs from 'query-string'; - -export const Navigation = () => { - const { push } = useHistory(); - const location = useLocation(); - - const selectedItemName = useMemo(() => qs.parse(location.search)?.tab, [location.search]); - - const handleTabClick = useCallback( - (tab) => { - push({ - search: qs.stringify({ tab }), - }); - }, - [push] - ); - - const createItem = useCallback( - (name, data = {}) => ({ - ...data, - id: snakeCase(name), - name, - isSelected: selectedItemName === name, - onClick: () => handleTabClick(snakeCase(name)), - }), - [handleTabClick, selectedItemName] - ); - - const sideNav = useMemo( - () => [ - createItem('Packs', { - forceOpen: true, - items: [ - createItem('List', { - icon: , - }), - createItem('New pack', { - icon: , - }), - ], - }), - createItem('Saved Queries', { - forceOpen: true, - items: [ - createItem('List', { - icon: , - }), - createItem('New query', { - icon: , - }), - ], - }), - // createItem('Scheduled Queries', { - // forceOpen: true, - // items: [ - // createItem('List', { - // icon: , - // }), - // createItem('Schedule new query', { - // icon: , - // }), - // ], - // }), - createItem('Live Query', { - forceOpen: true, - items: [ - createItem('Run', { - icon: , - }), - createItem('History', { - icon: , - }), - ], - }), - ], - [createItem] - ); - - // eslint-disable-next-line react-perf/jsx-no-new-object-as-prop - return ; -}; diff --git a/x-pack/plugins/osquery/public/fleet_integration/components/pack_selector.tsx b/x-pack/plugins/osquery/public/fleet_integration/components/pack_selector.tsx deleted file mode 100644 index 7d3f7debace72..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/components/pack_selector.tsx +++ /dev/null @@ -1,87 +0,0 @@ -/* - * 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. - */ - -/* eslint-disable react/jsx-no-bind */ - -/* eslint-disable react-perf/jsx-no-new-function-as-prop */ - -import { find } from 'lodash/fp'; -import { produce } from 'immer'; -import { EuiText, EuiSuperSelect } from '@elastic/eui'; -import React from 'react'; -import { useQuery } from 'react-query'; - -import { useKibana } from '../../common/lib/kibana'; - -// @ts-expect-error update types -export const ScheduledQueryPackSelector = ({ data, handleChange }) => { - const { http } = useKibana().services; - const { - data: { saved_objects: packs } = { - saved_objects: [], - }, - } = useQuery('packs', () => http.get('/internal/osquery/pack')); - - // @ts-expect-error update types - const handlePackChange = (value) => { - const newPack = find(['id', value], packs); - - // @ts-expect-error update types - const updatedPolicy = produce(data, (draft) => { - draft.inputs[0].config.pack = { - type: 'text', - value: newPack.id, - }; - // @ts-expect-error update types - draft.inputs[0].streams = newPack.queries.map((packQuery) => ({ - data_stream: { - type: 'logs', - dataset: 'osquery_elastic_managed.osquery', - }, - vars: { - query: { - type: 'text', - value: packQuery.query, - }, - interval: { - type: 'text', - value: `${packQuery.interval}`, - }, - id: { - type: 'text', - value: packQuery.id, - }, - }, - enabled: true, - })); - }); - - handleChange({ - isValid: true, - updatedPolicy, - }); - }; - - return ( - ({ - value: pack.id, - inputDisplay: ( - <> - {pack.name} - -

{pack.description}

-
- - ), - }))} - valueOfSelected={data.inputs[0].config} - onChange={handlePackChange} - /> - ); -}; diff --git a/x-pack/plugins/osquery/public/fleet_integration/components/scheduled_queries_table.tsx b/x-pack/plugins/osquery/public/fleet_integration/components/scheduled_queries_table.tsx deleted file mode 100644 index 67a94ec518d60..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/components/scheduled_queries_table.tsx +++ /dev/null @@ -1,142 +0,0 @@ -/* - * 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. - */ - -/* eslint-disable react-perf/jsx-no-new-function-as-prop */ - -/* eslint-disable react/jsx-no-bind */ - -/* eslint-disable react-perf/jsx-no-new-object-as-prop */ - -/* eslint-disable react/display-name */ - -/* eslint-disable react-perf/jsx-no-new-array-as-prop */ - -import React, { useState } from 'react'; -import { - EuiBasicTable, - EuiButtonIcon, - EuiHealth, - EuiDescriptionList, - RIGHT_ALIGNMENT, -} from '@elastic/eui'; - -// @ts-expect-error update types -export const ScheduledQueryQueriesTable = ({ data }) => { - const [pageIndex, setPageIndex] = useState(0); - const [pageSize, setPageSize] = useState(5); - const [sortField, setSortField] = useState('firstName'); - const [sortDirection, setSortDirection] = useState('asc'); - const [itemIdToExpandedRowMap, setItemIdToExpandedRowMap] = useState({}); - - const onTableChange = ({ page = {}, sort = {} }) => { - // @ts-expect-error update types - const { index, size } = page; - // @ts-expect-error update types - const { field, direction } = sort; - - setPageIndex(index); - setPageSize(size); - setSortField(field); - setSortDirection(direction); - }; - - // @ts-expect-error update types - const toggleDetails = (item) => { - const itemIdToExpandedRowMapValues = { ...itemIdToExpandedRowMap }; - // @ts-expect-error update types - if (itemIdToExpandedRowMapValues[item.id]) { - // @ts-expect-error update types - delete itemIdToExpandedRowMapValues[item.id]; - } else { - const { online } = item; - const color = online ? 'success' : 'danger'; - const label = online ? 'Online' : 'Offline'; - const listItems = [ - { - title: 'Online', - description: {label}, - }, - ]; - // @ts-expect-error update types - itemIdToExpandedRowMapValues[item.id] = ; - } - setItemIdToExpandedRowMap(itemIdToExpandedRowMapValues); - }; - - const columns = [ - { - field: 'vars.id.value', - name: 'ID', - }, - { - field: 'vars.interval.value', - name: 'Interval', - }, - { - field: 'enabled', - name: 'Active', - }, - { - name: 'Actions', - actions: [ - { - name: 'Clone', - description: 'Clone this person', - type: 'icon', - icon: 'copy', - onClick: () => '', - }, - ], - }, - { - align: RIGHT_ALIGNMENT, - width: '40px', - isExpander: true, - // @ts-expect-error update types - render: (item) => ( - toggleDetails(item)} - // @ts-expect-error update types - aria-label={itemIdToExpandedRowMap[item.id] ? 'Collapse' : 'Expand'} - // @ts-expect-error update types - iconType={itemIdToExpandedRowMap[item.id] ? 'arrowUp' : 'arrowDown'} - /> - ), - }, - ]; - - const pagination = { - pageIndex, - pageSize, - totalItemCount: data.inputs[0].streams.length, - pageSizeOptions: [3, 5, 8], - }; - - const sorting = { - sort: { - field: sortField, - direction: sortDirection, - }, - }; - - return ( - - ); -}; diff --git a/x-pack/plugins/osquery/public/fleet_integration/components/schema.ts b/x-pack/plugins/osquery/public/fleet_integration/components/schema.ts deleted file mode 100644 index 9a59c443b0a50..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/components/schema.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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 { FIELD_TYPES } from '../../shared_imports'; - -export const schema = { - name: { - type: FIELD_TYPES.TEXT, - label: 'Name', - }, - description: { - type: FIELD_TYPES.TEXT, - label: 'Description', - }, - namespace: { - type: FIELD_TYPES.TEXT, - }, - enabled: { - type: FIELD_TYPES.TOGGLE, - }, - policy_id: { - type: FIELD_TYPES.TEXT, - }, - streams: { - type: FIELD_TYPES.MULTI_SELECT, - vars: { - query: { - type: { - type: FIELD_TYPES.TEXT, - }, - value: { - type: FIELD_TYPES.TEXT, - }, - }, - }, - }, -}; diff --git a/x-pack/plugins/osquery/public/fleet_integration/index.ts b/x-pack/plugins/osquery/public/fleet_integration/index.ts index b36a2698b8337..e27c2712c7d8c 100644 --- a/x-pack/plugins/osquery/public/fleet_integration/index.ts +++ b/x-pack/plugins/osquery/public/fleet_integration/index.ts @@ -5,8 +5,6 @@ * 2.0. */ -export * from './lazy_osquery_managed_empty_create_policy_extension'; -export * from './lazy_osquery_managed_empty_edit_policy_extension'; -export * from './lazy_osquery_managed_policy_create_extension'; +export * from './lazy_osquery_managed_policy_create_import_extension'; export * from './lazy_osquery_managed_policy_edit_extension'; -export * from './lazy_osquery_managed_custom_extension'; +export * from './lazy_osquery_managed_custom_button_extension'; diff --git a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_custom_extension.tsx b/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_custom_button_extension.tsx similarity index 53% rename from x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_custom_extension.tsx rename to x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_custom_button_extension.tsx index 1493182cdbaa6..e547686c0166b 100644 --- a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_custom_extension.tsx +++ b/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_custom_button_extension.tsx @@ -8,9 +8,13 @@ import { lazy } from 'react'; import { PackageCustomExtensionComponent } from '../../../fleet/public'; -export const LazyOsqueryManagedCustomExtension = lazy(async () => { - const { OsqueryManagedCustomExtension } = await import('./osquery_managed_custom_extension'); - return { - default: OsqueryManagedCustomExtension, - }; -}); +export const LazyOsqueryManagedCustomButtonExtension = lazy( + async () => { + const { OsqueryManagedCustomButtonExtension } = await import( + './osquery_managed_custom_button_extension' + ); + return { + default: OsqueryManagedCustomButtonExtension, + }; + } +); diff --git a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_empty_create_policy_extension.tsx b/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_empty_create_policy_extension.tsx deleted file mode 100644 index 21f59c505952b..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_empty_create_policy_extension.tsx +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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 { lazy } from 'react'; -import { PackagePolicyCreateExtensionComponent } from '../../../fleet/public'; - -export const LazyOsqueryManagedEmptyCreatePolicyExtension = lazy( - async () => { - const { OsqueryManagedEmptyCreatePolicyExtension } = await import( - './osquery_managed_empty_create_policy_extension' - ); - return { - default: OsqueryManagedEmptyCreatePolicyExtension, - }; - } -); diff --git a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_empty_edit_policy_extension.tsx b/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_empty_edit_policy_extension.tsx deleted file mode 100644 index 3f9ef42e97104..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_empty_edit_policy_extension.tsx +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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 { lazy } from 'react'; -import { PackagePolicyEditExtensionComponent } from '../../../fleet/public'; - -export const LazyOsqueryManagedEmptyEditPolicyExtension = lazy( - async () => { - const { OsqueryManagedEmptyEditPolicyExtension } = await import( - './osquery_managed_empty_edit_policy_extension' - ); - return { - default: OsqueryManagedEmptyEditPolicyExtension, - }; - } -); diff --git a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_extension.tsx b/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_import_extension.tsx similarity index 58% rename from x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_extension.tsx rename to x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_import_extension.tsx index 8f0726fdbe209..95220e8251707 100644 --- a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_extension.tsx +++ b/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_import_extension.tsx @@ -8,13 +8,13 @@ import { lazy } from 'react'; import { PackagePolicyCreateExtensionComponent } from '../../../fleet/public'; -export const LazyOsqueryManagedPolicyCreateExtension = lazy( +export const LazyOsqueryManagedPolicyCreateImportExtension = lazy( async () => { - const { OsqueryManagedPolicyCreateExtension } = await import( - './osquery_managed_policy_create_extension' + const { OsqueryManagedPolicyCreateImportExtension } = await import( + './osquery_managed_policy_create_import_extension' ); return { - default: OsqueryManagedPolicyCreateExtension, + default: OsqueryManagedPolicyCreateImportExtension, }; } ); diff --git a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx b/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx index 4289bcccdbc56..787a39f3a34b7 100644 --- a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx +++ b/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx @@ -10,11 +10,11 @@ import { PackagePolicyEditExtensionComponent } from '../../../fleet/public'; export const LazyOsqueryManagedPolicyEditExtension = lazy( async () => { - const { OsqueryManagedPolicyCreateExtension } = await import( - './osquery_managed_policy_create_extension' + const { OsqueryManagedPolicyCreateImportExtension } = await import( + './osquery_managed_policy_create_import_extension' ); return { - default: OsqueryManagedPolicyCreateExtension, + default: OsqueryManagedPolicyCreateImportExtension, }; } ); diff --git a/x-pack/plugins/osquery/public/fleet_integration/navigation_buttons.tsx b/x-pack/plugins/osquery/public/fleet_integration/navigation_buttons.tsx new file mode 100644 index 0000000000000..808718c55d199 --- /dev/null +++ b/x-pack/plugins/osquery/public/fleet_integration/navigation_buttons.tsx @@ -0,0 +1,105 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem, EuiCard, EuiIcon } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useCallback, useMemo } from 'react'; + +import { useKibana, isModifiedEvent, isLeftClickEvent } from '../common/lib/kibana'; + +interface NavigationButtonsProps { + isDisabled?: boolean; + integrationPolicyId?: string; + agentPolicyId?: string; +} + +const NavigationButtonsComponent: React.FC = ({ + isDisabled, + integrationPolicyId, + agentPolicyId, +}) => { + const { + application: { getUrlForApp, navigateToApp }, + } = useKibana().services; + + const liveQueryHref = useMemo( + () => + getUrlForApp('osquery', { + path: agentPolicyId + ? `/live_queries/new?agentPolicyId=${agentPolicyId}` + : ' `/live_queries/new', + }), + [agentPolicyId, getUrlForApp] + ); + + const liveQueryClick = useCallback( + (event) => { + if (!isModifiedEvent(event) && isLeftClickEvent(event)) { + event.preventDefault(); + navigateToApp('osquery', { + path: agentPolicyId + ? `/live_queries/new?agentPolicyId=${agentPolicyId}` + : ' `/live_queries/new', + }); + } + }, + [agentPolicyId, navigateToApp] + ); + + const scheduleQueryGroupsHref = getUrlForApp('osquery', { + path: integrationPolicyId + ? `/scheduled_query_groups/${integrationPolicyId}/edit` + : `/scheduled_query_groups`, + }); + + const scheduleQueryGroupsClick = useCallback( + (event) => { + if (!isModifiedEvent(event) && isLeftClickEvent(event)) { + event.preventDefault(); + navigateToApp('osquery', { + path: integrationPolicyId + ? `/scheduled_query_groups/${integrationPolicyId}/edit` + : `/scheduled_query_groups`, + }); + } + }, + [navigateToApp, integrationPolicyId] + ); + + return ( + + + } + title={i18n.translate('xpack.osquery.fleetIntegration.runLiveQueriesButtonText', { + defaultMessage: 'Run live queries', + })} + href={liveQueryHref} + onClick={liveQueryClick} + description={''} + isDisabled={isDisabled} + /> + + + } + title={i18n.translate('xpack.osquery.fleetIntegration.scheduleQueryGroupsButtonText', { + defaultMessage: 'Schedule query groups', + })} + description={''} + isDisabled={isDisabled} + href={scheduleQueryGroupsHref} + onClick={scheduleQueryGroupsClick} + /> + + + ); +}; + +NavigationButtonsComponent.displayName = 'NavigationButtonsComponent'; + +export const NavigationButtons = React.memo(NavigationButtonsComponent); diff --git a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx b/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx new file mode 100644 index 0000000000000..775b5c7a06d21 --- /dev/null +++ b/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx @@ -0,0 +1,20 @@ +/* + * 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 React from 'react'; + +import { PackageCustomExtensionComponentProps } from '../../../fleet/public'; +import { NavigationButtons } from './navigation_buttons'; + +/** + * Exports Osquery-specific package policy instructions + * for use in the Fleet app custom tab + */ +export const OsqueryManagedCustomButtonExtension = React.memo( + () => +); +OsqueryManagedCustomButtonExtension.displayName = 'OsqueryManagedCustomButtonExtension'; diff --git a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_extension.tsx b/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_extension.tsx deleted file mode 100644 index 1295699a270a5..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_extension.tsx +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import React from 'react'; -import { QueryClient, QueryClientProvider } from 'react-query'; - -import { PackageCustomExtensionComponentProps } from '../../../fleet/public'; -import { CustomTabTabs } from './components/custom_tab_tabs'; -import { Navigation } from './components/navigation'; - -const queryClient = new QueryClient(); - -/** - * Exports Osquery-specific package policy instructions - * for use in the Fleet app custom tab - */ -export const OsqueryManagedCustomExtension = React.memo( - () => ( - - - - - - - - - - - ) -); -OsqueryManagedCustomExtension.displayName = 'OsqueryManagedCustomExtension'; diff --git a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_empty_create_policy_extension.tsx b/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_empty_create_policy_extension.tsx deleted file mode 100644 index 828edfc0a29b4..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_empty_create_policy_extension.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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 React, { useEffect } from 'react'; -import { produce } from 'immer'; -import deepEqual from 'fast-deep-equal'; - -import { PackagePolicyCreateExtensionComponentProps } from '../../../fleet/public'; - -/** - * Exports Osquery-specific package policy instructions - * for use in the Fleet app create / edit package policy - */ -const OsqueryManagedEmptyCreatePolicyExtensionComponent: React.FC = ({ - onChange, - newPolicy, -}) => { - useEffect(() => { - const updatedPolicy = produce(newPolicy, (draft) => { - draft.inputs.forEach((input) => (input.streams = [])); - }); - - onChange({ - isValid: true, - updatedPolicy, - }); - }); - - return <>; -}; - -OsqueryManagedEmptyCreatePolicyExtensionComponent.displayName = - 'OsqueryManagedEmptyCreatePolicyExtension'; - -export const OsqueryManagedEmptyCreatePolicyExtension = React.memo( - OsqueryManagedEmptyCreatePolicyExtensionComponent, - // we don't want to update the component if onChange has changed - (prevProps, nextProps) => deepEqual(prevProps.newPolicy, nextProps.newPolicy) -); diff --git a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_empty_edit_policy_extension.tsx b/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_empty_edit_policy_extension.tsx deleted file mode 100644 index c8304ea5f0d1e..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_empty_edit_policy_extension.tsx +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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 React from 'react'; - -import { PackagePolicyEditExtensionComponentProps } from '../../../fleet/public'; - -/** - * Exports Osquery-specific package policy instructions - * for use in the Fleet app edit package policy - */ -const OsqueryManagedEmptyEditPolicyExtensionComponent = () => <>; - -OsqueryManagedEmptyEditPolicyExtensionComponent.displayName = - 'OsqueryManagedEmptyEditPolicyExtension'; - -export const OsqueryManagedEmptyEditPolicyExtension = React.memo( - OsqueryManagedEmptyEditPolicyExtensionComponent -); diff --git a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_extension.tsx b/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_extension.tsx deleted file mode 100644 index 09653b09365ce..0000000000000 --- a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_extension.tsx +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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 { EuiButton } from '@elastic/eui'; -import React, { useCallback, useState } from 'react'; -import { QueryClient, QueryClientProvider } from 'react-query'; - -import { PackagePolicyCreateExtensionComponentProps } from '../../../fleet/public'; -import { ScheduledQueryInputType } from './components/input_type'; -import { ScheduledQueryPackSelector } from './components/pack_selector'; -import { ScheduledQueryQueriesTable } from './components/scheduled_queries_table'; -import { AddNewQueryFlyout } from './components/add_new_query_flyout'; - -const queryClient = new QueryClient(); - -/** - * Exports Osquery-specific package policy instructions - * for use in the Fleet app create / edit package policy - */ -export const OsqueryManagedPolicyCreateExtension = React.memo( - ({ onChange, newPolicy }) => { - const [showAddQueryFlyout, setShowAddQueryFlyout] = useState(false); - - const handleShowFlyout = useCallback(() => setShowAddQueryFlyout(true), []); - const handleHideFlyout = useCallback(() => setShowAddQueryFlyout(false), []); - - return ( - - - {newPolicy.inputs[0].config?.input_source?.value === 'pack' && ( - - )} - {newPolicy.inputs[0].streams.length && ( - // @ts-expect-error update types - - )} - {newPolicy.inputs[0].config?.input_source?.value !== 'pack' && ( - - {'Attach next query'} - - )} - {showAddQueryFlyout && ( - - )} - - ); - } -); -OsqueryManagedPolicyCreateExtension.displayName = 'OsqueryManagedPolicyCreateExtension'; diff --git a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx b/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx new file mode 100644 index 0000000000000..3b99e1d46855f --- /dev/null +++ b/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx @@ -0,0 +1,202 @@ +/* + * 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 { filter } from 'lodash/fp'; +import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiCallOut, EuiLink } from '@elastic/eui'; +import React, { useEffect, useMemo, useState } from 'react'; +import { useHistory } from 'react-router-dom'; +import { produce } from 'immer'; + +import { i18n } from '@kbn/i18n'; +import { + agentRouteService, + agentPolicyRouteService, + PackagePolicy, + AgentPolicy, +} from '../../../fleet/common'; +import { + pagePathGetters, + CreatePackagePolicyRouteState, + PackagePolicyCreateExtensionComponentProps, + PackagePolicyEditExtensionComponentProps, +} from '../../../fleet/public'; +import { ScheduledQueryGroupQueriesTable } from '../scheduled_query_groups/scheduled_query_group_queries_table'; +import { useKibana } from '../common/lib/kibana'; +import { NavigationButtons } from './navigation_buttons'; + +/** + * Exports Osquery-specific package policy instructions + * for use in the Fleet app create / edit package policy + */ + +export const OsqueryManagedPolicyCreateImportExtension = React.memo< + PackagePolicyCreateExtensionComponentProps & { + policy?: PackagePolicyEditExtensionComponentProps['policy']; + } +>(({ onChange, policy, newPolicy }) => { + const [policyAgentsCount, setPolicyAgentsCount] = useState(null); + const [agentPolicy, setAgentPolicy] = useState(null); + const [editMode] = useState(!!policy); + const { + application: { getUrlForApp }, + http, + } = useKibana().services; + const { replace } = useHistory(); + + const agentsLinkHref = useMemo(() => { + if (!policy?.policy_id) return '#'; + + return getUrlForApp('fleet', { + path: + `#` + + pagePathGetters.policy_details({ policyId: policy?.policy_id }) + + '?openEnrollmentFlyout=true', + }); + }, [getUrlForApp, policy?.policy_id]); + + useEffect(() => { + if (editMode && policyAgentsCount === null) { + const fetchAgentsCount = async () => { + try { + const response = await http.fetch(agentRouteService.getStatusPath(), { + query: { + policyId: policy?.policy_id, + }, + }); + if (response.results) { + setPolicyAgentsCount(response.results.total); + } + // eslint-disable-next-line no-empty + } catch (e) {} + }; + + const fetchAgentPolicyDetails = async () => { + if (policy?.policy_id) { + try { + const response = await http.fetch( + agentPolicyRouteService.getInfoPath(policy?.policy_id) + ); + if (response.item) { + setAgentPolicy(response.item); + } + // eslint-disable-next-line no-empty + } catch (e) {} + } + }; + + fetchAgentsCount(); + fetchAgentPolicyDetails(); + } + }, [editMode, http, policy?.policy_id, policyAgentsCount]); + + useEffect(() => { + /* + by default Fleet set up streams with an empty scheduled query, + this code removes that, so the user can schedule queries + in the next step + */ + if (!editMode) { + const updatedPolicy = produce(newPolicy, (draft) => { + draft.inputs[0].streams = []; + return draft; + }); + onChange({ + isValid: true, + updatedPolicy, + }); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + useEffect(() => { + if (!editMode) { + replace({ + state: { + onSaveNavigateTo: (newPackagePolicy) => [ + 'fleet', + { + path: + '#' + + pagePathGetters.integration_policy_edit({ + packagePolicyId: newPackagePolicy.id, + }), + }, + ], + } as CreatePackagePolicyRouteState, + }); + } + }, [editMode, replace]); + + const scheduledQueryGroupTableData = useMemo(() => { + const policyWithoutEmptyQueries = produce(newPolicy, (draft) => { + draft.inputs[0].streams = filter(['compiled_stream.id', null], draft.inputs[0].streams); + return draft; + }); + + return policyWithoutEmptyQueries; + }, [newPolicy]); + + return ( + <> + {!editMode ? ( + <> + + + + + + + + ) : null} + {policyAgentsCount === 0 ? ( + <> + + + +

+ {`Fleet has detected that you have not assigned yet any agent to the `} + { + + {agentPolicy?.name ?? policy?.policy_id} + + } + {`. `} +
+ {`Only agents within the policy with active Osquery Manager integration support the functionality presented below.`} +

+
+
+
+ + + ) : null} + + + + + {editMode && scheduledQueryGroupTableData.inputs[0].streams.length ? ( + + + + + + ) : null} + + ); +}); + +OsqueryManagedPolicyCreateImportExtension.displayName = 'OsqueryManagedPolicyCreateImportExtension'; diff --git a/x-pack/plugins/osquery/public/live_query/agent_results/index.tsx b/x-pack/plugins/osquery/public/live_queries/agent_results/index.tsx similarity index 89% rename from x-pack/plugins/osquery/public/live_query/agent_results/index.tsx rename to x-pack/plugins/osquery/public/live_queries/agent_results/index.tsx index 63dbca98d648f..272e65d9cc0fa 100644 --- a/x-pack/plugins/osquery/public/live_query/agent_results/index.tsx +++ b/x-pack/plugins/osquery/public/live_queries/agent_results/index.tsx @@ -19,10 +19,7 @@ const QueryAgentResultsComponent = () => { return ( <> - { - // @ts-expect-error update types - data?.actionDetails._source?.data?.query - } + {data?.actionDetails._source?.data?.query} diff --git a/x-pack/plugins/osquery/public/live_query/form/agents_table_field.tsx b/x-pack/plugins/osquery/public/live_queries/form/agents_table_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_query/form/agents_table_field.tsx rename to x-pack/plugins/osquery/public/live_queries/form/agents_table_field.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/index.tsx b/x-pack/plugins/osquery/public/live_queries/form/index.tsx new file mode 100644 index 0000000000000..056bbc75f3b76 --- /dev/null +++ b/x-pack/plugins/osquery/public/live_queries/form/index.tsx @@ -0,0 +1,174 @@ +/* + * 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 { EuiButton, EuiSteps, EuiSpacer, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React, { useMemo } from 'react'; +import { useMutation } from 'react-query'; + +import { UseField, Form, FormData, useForm, useFormData } from '../../shared_imports'; +import { AgentsTableField } from './agents_table_field'; +import { LiveQueryQueryField } from './live_query_query_field'; +import { useKibana } from '../../common/lib/kibana'; +import { ResultTabs } from '../../queries/edit/tabs'; + +const FORM_ID = 'liveQueryForm'; + +interface LiveQueryFormProps { + defaultValue?: Partial | undefined; + onSubmit?: (payload: Record) => Promise; + onSuccess?: () => void; +} + +const LiveQueryFormComponent: React.FC = ({ + defaultValue, + // onSubmit, + onSuccess, +}) => { + const { http } = useKibana().services; + + const { + data, + isLoading, + mutateAsync, + isError, + isSuccess, + // error + } = useMutation( + (payload: Record) => + http.post('/internal/osquery/action', { + body: JSON.stringify(payload), + }), + { + onSuccess, + } + ); + + const { form } = useForm({ + id: FORM_ID, + // schema: formSchema, + onSubmit: (payload) => { + return mutateAsync(payload); + }, + options: { + stripEmptyFields: false, + }, + defaultValue: defaultValue ?? { + query: { + id: null, + query: '', + }, + }, + }); + + const { submit } = form; + + const actionId = useMemo(() => data?.actions[0].action_id, [data?.actions]); + const agentIds = useMemo(() => data?.actions[0].agents, [data?.actions]); + const [{ agentSelection, query }] = useFormData({ form, watch: ['agentSelection', 'query'] }); + + const agentSelected = useMemo( + () => + agentSelection && + !!( + agentSelection.allAgentsSelected || + agentSelection.agents?.length || + agentSelection.platformsSelected?.length || + agentSelection.policiesSelected?.length + ), + [agentSelection] + ); + + const queryValueProvided = useMemo(() => !!query?.query?.length, [query]); + + const queryStatus = useMemo(() => { + if (!agentSelected) return 'disabled'; + if (isError) return 'danger'; + if (isLoading) return 'loading'; + if (isSuccess) return 'complete'; + + return 'incomplete'; + }, [agentSelected, isError, isLoading, isSuccess]); + + const resultsStatus = useMemo(() => (queryStatus === 'complete' ? 'incomplete' : 'disabled'), [ + queryStatus, + ]); + + const queryComponentProps = useMemo( + () => ({ + disabled: queryStatus === 'disabled', + }), + [queryStatus] + ); + + const formSteps: EuiContainedStepProps[] = useMemo( + () => [ + { + title: i18n.translate('xpack.osquery.liveQueryForm.steps.agentsStepHeading', { + defaultMessage: 'Select agents', + }), + children: , + status: agentSelected ? 'complete' : 'incomplete', + }, + { + title: i18n.translate('xpack.osquery.liveQueryForm.steps.queryStepHeading', { + defaultMessage: 'Enter query', + }), + children: ( + <> + + + + + + + + + + + ), + status: queryStatus, + }, + { + title: i18n.translate('xpack.osquery.liveQueryForm.steps.resultsStepHeading', { + defaultMessage: 'Check results', + }), + children: actionId ? ( + + ) : null, + status: resultsStatus, + }, + ], + [ + actionId, + agentIds, + agentSelected, + queryComponentProps, + queryStatus, + queryValueProvided, + resultsStatus, + submit, + ] + ); + + return ( +
+ + + ); +}; + +export const LiveQueryForm = React.memo(LiveQueryFormComponent); diff --git a/x-pack/plugins/osquery/public/live_query/form/live_query_query_field.tsx b/x-pack/plugins/osquery/public/live_queries/form/live_query_query_field.tsx similarity index 93% rename from x-pack/plugins/osquery/public/live_query/form/live_query_query_field.tsx rename to x-pack/plugins/osquery/public/live_queries/form/live_query_query_field.tsx index bc3da3ea37209..68207200dc789 100644 --- a/x-pack/plugins/osquery/public/live_query/form/live_query_query_field.tsx +++ b/x-pack/plugins/osquery/public/live_queries/form/live_query_query_field.tsx @@ -15,13 +15,14 @@ import { FieldHook } from '../../shared_imports'; import { OsqueryEditor } from '../../editor'; interface LiveQueryQueryFieldProps { + disabled?: boolean; field: FieldHook<{ id: string | null; query: string; }>; } -const LiveQueryQueryFieldComponent: React.FC = ({ field }) => { +const LiveQueryQueryFieldComponent: React.FC = ({ disabled, field }) => { // const { http } = useKibana().services; // const { data } = useQuery('savedQueryList', () => // http.get('/internal/osquery/saved_query', { @@ -82,7 +83,7 @@ const LiveQueryQueryFieldComponent: React.FC = ({ fiel onChange={handleSavedQueryChange} /> */} - + ); }; diff --git a/x-pack/plugins/osquery/public/live_query/form/schema.ts b/x-pack/plugins/osquery/public/live_queries/form/schema.ts similarity index 100% rename from x-pack/plugins/osquery/public/live_query/form/schema.ts rename to x-pack/plugins/osquery/public/live_queries/form/schema.ts diff --git a/x-pack/plugins/osquery/public/live_queries/index.tsx b/x-pack/plugins/osquery/public/live_queries/index.tsx new file mode 100644 index 0000000000000..3fb36f57ef82f --- /dev/null +++ b/x-pack/plugins/osquery/public/live_queries/index.tsx @@ -0,0 +1,22 @@ +/* + * 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 React from 'react'; + +import { LiveQueryForm } from './form'; +import { FormData } from '../shared_imports'; + +interface LiveQueryProps { + defaultValue?: Partial | undefined; + onSuccess?: () => void; +} + +const LiveQueryComponent: React.FC = ({ defaultValue, onSuccess }) => ( + +); + +export const LiveQuery = React.memo(LiveQueryComponent); diff --git a/x-pack/plugins/osquery/public/live_query/form/index.tsx b/x-pack/plugins/osquery/public/live_query/form/index.tsx deleted file mode 100644 index 7e19bee530ec5..0000000000000 --- a/x-pack/plugins/osquery/public/live_query/form/index.tsx +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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 { EuiButton, EuiSpacer } from '@elastic/eui'; -import React from 'react'; - -import { UseField, Form, useForm } from '../../shared_imports'; -import { AgentsTableField } from './agents_table_field'; -import { LiveQueryQueryField } from './live_query_query_field'; - -const FORM_ID = 'liveQueryForm'; - -interface LiveQueryFormProps { - defaultValue?: unknown; - onSubmit: (payload: Record) => Promise; -} - -const LiveQueryFormComponent: React.FC = ({ defaultValue, onSubmit }) => { - const { form } = useForm({ - id: FORM_ID, - // schema: formSchema, - onSubmit, - options: { - stripEmptyFields: false, - }, - defaultValue: { - // @ts-expect-error update types - query: defaultValue ?? { - id: null, - query: '', - }, - }, - }); - - const { submit } = form; - - return ( -
- - - - - {'Send query'} - - ); -}; - -export const LiveQueryForm = React.memo(LiveQueryFormComponent); diff --git a/x-pack/plugins/osquery/public/live_query/index.tsx b/x-pack/plugins/osquery/public/live_query/index.tsx deleted file mode 100644 index 324f9896cbd96..0000000000000 --- a/x-pack/plugins/osquery/public/live_query/index.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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 { EuiSpacer } from '@elastic/eui'; -import React from 'react'; -import { useMutation } from 'react-query'; -import { useLocation } from 'react-router-dom'; - -import { useKibana } from '../common/lib/kibana'; -import { LiveQueryForm } from './form'; -import { ResultTabs } from '../queries/edit/tabs'; - -const LiveQueryComponent = () => { - const location = useLocation(); - const { http } = useKibana().services; - - const createActionMutation = useMutation((payload: Record) => - http.post('/internal/osquery/action', { - body: JSON.stringify(payload), - }) - ); - - return ( - <> - { - - } - - {createActionMutation.data && ( - <> - - - - )} - - ); -}; - -export const LiveQuery = React.memo(LiveQueryComponent); diff --git a/x-pack/plugins/osquery/public/osquery_action_type/example_params_fields.tsx b/x-pack/plugins/osquery/public/osquery_action_type/example_params_fields.tsx deleted file mode 100644 index 898806ea542a8..0000000000000 --- a/x-pack/plugins/osquery/public/osquery_action_type/example_params_fields.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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. - */ - -/* eslint-disable react-perf/jsx-no-new-function-as-prop, react/jsx-no-bind */ - -import React, { Fragment } from 'react'; -import { EuiTextArea } from '@elastic/eui'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { ActionParamsProps } from '../../../triggers_actions_ui/public/types'; - -interface ExampleActionParams { - message: string; -} - -const ExampleParamsFields: React.FunctionComponent> = ({ - actionParams, - editAction, - index, - errors, -}) => { - // console.error('actionParams', actionParams, index, errors); - const { message } = actionParams; - return ( - - 0 && message !== undefined} - name="message" - value={message || ''} - onChange={(e) => { - editAction('message', e.target.value, index); - }} - onBlur={() => { - if (!message) { - editAction('message', '', index); - } - }} - /> - - ); -}; - -// Export as default in order to support lazy loading -// eslint-disable-next-line import/no-default-export -export { ExampleParamsFields as default }; diff --git a/x-pack/plugins/osquery/public/osquery_action_type/index.tsx b/x-pack/plugins/osquery/public/osquery_action_type/index.tsx deleted file mode 100644 index 2e162b34ab96d..0000000000000 --- a/x-pack/plugins/osquery/public/osquery_action_type/index.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/* - * 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 { lazy } from 'react'; -import { i18n } from '@kbn/i18n'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { ActionTypeModel, ValidationResult } from '../../../triggers_actions_ui/public/types'; - -interface ExampleActionParams { - message: string; -} - -export function getActionType(): ActionTypeModel { - return { - id: '.osquery', - iconClass: 'logoOsquery', - selectMessage: i18n.translate( - 'xpack.osquery.components.builtinActionTypes.exampleAction.selectMessageText', - { - defaultMessage: 'Example Action is used to show how to create new action type UI.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.osquery.components.builtinActionTypes.exampleAction.actionTypeTitle', - { - defaultMessage: 'Example Action', - } - ), - // @ts-expect-error update types - validateConnector: (action): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - someConnectorField: new Array(), - }; - validationResult.errors = errors; - if (!action.config.someConnectorField) { - errors.someConnectorField.push( - i18n.translate( - 'xpack.osquery.components.builtinActionTypes.error.requiredSomeConnectorFieldeText', - { - defaultMessage: 'SomeConnectorField is required.', - } - ) - ); - } - return validationResult; - }, - validateParams: (actionParams: ExampleActionParams): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - message: new Array(), - }; - validationResult.errors = errors; - if (!actionParams.message?.length) { - errors.message.push( - i18n.translate( - 'xpack.osquery.components.builtinActionTypes.error.requiredExampleMessageText', - { - defaultMessage: 'Message is required.', - } - ) - ); - } - return validationResult; - }, - actionConnectorFields: null, - actionParamsFields: lazy(() => import('./example_params_fields')), - }; -} diff --git a/x-pack/plugins/osquery/public/packs/edit/index.tsx b/x-pack/plugins/osquery/public/packs/edit/index.tsx index 478152bb8b4a3..3cbd80c9f4db0 100644 --- a/x-pack/plugins/osquery/public/packs/edit/index.tsx +++ b/x-pack/plugins/osquery/public/packs/edit/index.tsx @@ -26,6 +26,7 @@ const EditPackPageComponent: React.FC = ({ onSuccess, packId queries: [], }, } = useQuery(['pack', { id: packId }], ({ queryKey }) => { + // @ts-expect-error update types return http.get(`/internal/osquery/pack/${queryKey[1].id}`); }); diff --git a/x-pack/plugins/osquery/public/plugin.ts b/x-pack/plugins/osquery/public/plugin.ts index b807e93236df6..c0a097cb3ba28 100644 --- a/x-pack/plugins/osquery/public/plugin.ts +++ b/x-pack/plugins/osquery/public/plugin.ts @@ -14,6 +14,7 @@ import { CoreStart, DEFAULT_APP_CATEGORIES, AppStatus, + AppNavLinkStatus, AppUpdater, } from '../../../../src/core/public'; import { Storage } from '../../../../src/plugins/kibana_utils/public'; @@ -24,28 +25,51 @@ import { StartPlugins, AppPluginStartDependencies, } from './types'; -import { PLUGIN_NAME } from '../common'; +import { OSQUERY_INTEGRATION_NAME, PLUGIN_NAME } from '../common'; +import { epmRouteService, GetPackagesResponse } from '../../fleet/common'; import { - LazyOsqueryManagedEmptyCreatePolicyExtension, - LazyOsqueryManagedEmptyEditPolicyExtension, + LazyOsqueryManagedPolicyCreateImportExtension, + LazyOsqueryManagedPolicyEditExtension, + LazyOsqueryManagedCustomButtonExtension, } from './fleet_integration'; -// import { getActionType } from './osquery_action_type'; - -export function toggleOsqueryPlugin(updater$: Subject, http: CoreStart['http']) { - http.fetch('/api/fleet/epm/packages', { query: { experimental: true } }).then(({ response }) => { - const installed = response.find( - // @ts-expect-error update types - (integration) => - integration?.name === 'osquery_elastic_managed' && integration?.status === 'installed' - ); - updater$.next(() => ({ - status: installed ? AppStatus.accessible : AppStatus.inaccessible, - })); - }); + +export function toggleOsqueryPlugin( + updater$: Subject, + http: CoreStart['http'], + registerExtension?: StartPlugins['fleet']['registerExtension'] +) { + http + .fetch(epmRouteService.getListPath(), { query: { experimental: true } }) + .then(({ response }) => { + const installed = response.find( + (integration) => + integration?.name === OSQUERY_INTEGRATION_NAME && integration?.status === 'installed' + ); + + if (installed && registerExtension) { + registerExtension({ + package: OSQUERY_INTEGRATION_NAME, + view: 'package-detail-custom', + component: LazyOsqueryManagedCustomButtonExtension, + }); + } + + updater$.next(() => ({ + navLinkStatus: installed ? AppNavLinkStatus.visible : AppNavLinkStatus.hidden, + })); + }) + .catch(() => { + updater$.next(() => ({ + status: AppStatus.inaccessible, + navLinkStatus: AppNavLinkStatus.hidden, + })); + }); } export class OsqueryPlugin implements Plugin { - private readonly appUpdater$ = new BehaviorSubject(() => ({})); + private readonly appUpdater$ = new BehaviorSubject(() => ({ + navLinkStatus: AppNavLinkStatus.hidden, + })); private kibanaVersion: string; private storage = new Storage(localStorage); @@ -53,11 +77,14 @@ export class OsqueryPlugin implements Plugin(); + public setup(core: CoreSetup): OsqueryPluginSetup { + const config = this.initializerContext.config.get<{ + enabled: boolean; + actionEnabled: boolean; + scheduledQueries: boolean; + savedQueries: boolean; + packs: boolean; + }>(); if (!config.enabled) { return {}; @@ -71,6 +98,7 @@ export class OsqueryPlugin implements Plugin(); - - if (!config.enabled) { - return {}; - } + const config = this.initializerContext.config.get<{ + enabled: boolean; + actionEnabled: boolean; + scheduledQueries: boolean; + savedQueries: boolean; + packs: boolean; + }>(); if (plugins.fleet) { const { registerExtension } = plugins.fleet; - toggleOsqueryPlugin(this.appUpdater$, core.http); + if (config.enabled) { + toggleOsqueryPlugin(this.appUpdater$, core.http, registerExtension); + } registerExtension({ - package: 'osquery_elastic_managed', + package: OSQUERY_INTEGRATION_NAME, view: 'package-policy-create', - component: LazyOsqueryManagedEmptyCreatePolicyExtension, + component: LazyOsqueryManagedPolicyCreateImportExtension, }); registerExtension({ - package: 'osquery_elastic_managed', + package: OSQUERY_INTEGRATION_NAME, view: 'package-policy-edit', - component: LazyOsqueryManagedEmptyEditPolicyExtension, + component: LazyOsqueryManagedPolicyEditExtension, }); - - // registerExtension({ - // package: 'osquery_elastic_managed', - // view: 'package-detail-custom', - // component: LazyOsqueryManagedCustomExtension, - // }); } else { this.appUpdater$.next(() => ({ status: AppStatus.inaccessible, diff --git a/x-pack/plugins/osquery/public/queries/edit/tabs.tsx b/x-pack/plugins/osquery/public/queries/edit/tabs.tsx index 4aa9d20d11123..1a6b317653c98 100644 --- a/x-pack/plugins/osquery/public/queries/edit/tabs.tsx +++ b/x-pack/plugins/osquery/public/queries/edit/tabs.tsx @@ -9,13 +9,15 @@ import { EuiTabbedContent, EuiSpacer } from '@elastic/eui'; import React, { useMemo } from 'react'; import { ResultsTable } from '../../results/results_table'; -import { ActionResultsTable } from '../../action_results/action_results_table'; +import { ActionResultsSummary } from '../../action_results/action_results_summary'; interface ResultTabsProps { actionId: string; + agentIds?: string[]; + isLive?: boolean; } -const ResultTabsComponent: React.FC = ({ actionId }) => { +const ResultTabsComponent: React.FC = ({ actionId, agentIds, isLive }) => { const tabs = useMemo( () => [ { @@ -24,7 +26,7 @@ const ResultTabsComponent: React.FC = ({ actionId }) => { content: ( <> - + ), }, @@ -34,12 +36,12 @@ const ResultTabsComponent: React.FC = ({ actionId }) => { content: ( <> - + ), }, ], - [actionId] + [actionId, agentIds, isLive] ); return ( diff --git a/x-pack/plugins/osquery/public/queries/form/code_editor_field.tsx b/x-pack/plugins/osquery/public/queries/form/code_editor_field.tsx index 5a564af987562..a56e747355c5b 100644 --- a/x-pack/plugins/osquery/public/queries/form/code_editor_field.tsx +++ b/x-pack/plugins/osquery/public/queries/form/code_editor_field.tsx @@ -5,6 +5,9 @@ * 2.0. */ +import { FormattedMessage } from '@kbn/i18n/react'; +import { isEmpty } from 'lodash/fp'; +import { EuiFormRow, EuiLink, EuiText } from '@elastic/eui'; import React from 'react'; import { OsqueryEditor } from '../../editor'; @@ -14,10 +17,34 @@ interface CodeEditorFieldProps { field: FieldHook; } +const OsquerySchemaLink = React.memo(() => ( + + + + + +)); + +OsquerySchemaLink.displayName = 'OsquerySchemaLink'; + const CodeEditorFieldComponent: React.FC = ({ field }) => { - const { value, setValue } = field; + const { value, label, labelAppend, helpText, setValue } = field; - return ; + return ( + } + helpText={helpText} + // isInvalid={typeof error === 'string'} + // error={error} + fullWidth + > + + + ); }; export const CodeEditorField = React.memo(CodeEditorFieldComponent); diff --git a/x-pack/plugins/osquery/public/query_client.ts b/x-pack/plugins/osquery/public/query_client.ts new file mode 100644 index 0000000000000..7541e80aee935 --- /dev/null +++ b/x-pack/plugins/osquery/public/query_client.ts @@ -0,0 +1,10 @@ +/* + * 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 { QueryClient } from 'react-query'; + +export const queryClient = new QueryClient(); diff --git a/x-pack/plugins/osquery/public/results/helpers.ts b/x-pack/plugins/osquery/public/results/helpers.ts index 802674ee0398c..171530a77299f 100644 --- a/x-pack/plugins/osquery/public/results/helpers.ts +++ b/x-pack/plugins/osquery/public/results/helpers.ts @@ -16,15 +16,14 @@ export type InspectResponse = Inspect & { response: string[] }; export const generateTablePaginationOptions = ( activePage: number, - limit: number, - isBucketSort?: boolean + limit: number ): PaginationInputPaginated => { const cursorStart = activePage * limit; return { activePage, cursorStart, fakePossibleCount: 4 <= activePage && activePage > 0 ? limit * (activePage + 2) : limit * 5, - querySize: isBucketSort ? limit : limit + cursorStart, + querySize: limit, }; }; diff --git a/x-pack/plugins/osquery/public/results/results_table.tsx b/x-pack/plugins/osquery/public/results/results_table.tsx index 7557828c4407c..d82c45d802520 100644 --- a/x-pack/plugins/osquery/public/results/results_table.tsx +++ b/x-pack/plugins/osquery/public/results/results_table.tsx @@ -6,22 +6,40 @@ */ import { isEmpty, isEqual, keys, map } from 'lodash/fp'; -import { EuiDataGrid, EuiDataGridProps, EuiDataGridColumn, EuiLink } from '@elastic/eui'; +import { + EuiDataGrid, + EuiDataGridSorting, + EuiDataGridProps, + EuiDataGridColumn, + EuiLink, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import React, { createContext, useEffect, useState, useCallback, useContext, useMemo } from 'react'; -import { EuiDataGridSorting } from '@elastic/eui'; +import { pagePathGetters } from '../../../fleet/public'; import { useAllResults } from './use_all_results'; import { Direction, ResultEdges } from '../../common/search_strategy'; -import { useRouterNavigate } from '../common/lib/kibana'; +import { useKibana } from '../common/lib/kibana'; const DataContext = createContext([]); interface ResultsTableComponentProps { actionId: string; agentId?: string; + isLive?: boolean; } -const ResultsTableComponent: React.FC = ({ actionId, agentId }) => { +const ResultsTableComponent: React.FC = ({ actionId, isLive }) => { + const { getUrlForApp } = useKibana().services.application; + + const getFleetAppUrl = useCallback( + (agentId) => + getUrlForApp('fleet', { + path: `#` + pagePathGetters.fleet_agent_details({ agentId }), + }), + [getUrlForApp] + ); + const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 50 }); const onChangeItemsPerPage = useCallback( (pageSize) => @@ -39,22 +57,15 @@ const ResultsTableComponent: React.FC = ({ actionId, const [columns, setColumns] = useState([]); - // ** Sorting config const [sortingColumns, setSortingColumns] = useState([]); - const onSort = useCallback( - (newSortingColumns) => { - setSortingColumns(newSortingColumns); - }, - [setSortingColumns] - ); - const { data: allResultsData = [] } = useAllResults({ + const { data: allResultsData } = useAllResults({ actionId, - agentId, activePage: pagination.pageIndex, limit: pagination.pageSize, direction: Direction.asc, sortField: '@timestamp', + isLive, }); const [visibleColumns, setVisibleColumns] = useState([]); @@ -68,24 +79,22 @@ const ResultsTableComponent: React.FC = ({ actionId, // eslint-disable-next-line react-hooks/rules-of-hooks const data = useContext(DataContext); - // @ts-expect-error fields is optional - const value = data[rowIndex].fields[columnId]; + // @ts-expect-error update types + const value = data[rowIndex % pagination.pageSize]?.fields[columnId]; if (columnId === 'agent.name') { - // @ts-expect-error fields is optional - const agentIdValue = data[rowIndex].fields['agent.id']; - // eslint-disable-next-line react-hooks/rules-of-hooks - const linkProps = useRouterNavigate(`/live_query/${actionId}/results/${agentIdValue}`); - return {value}; + // @ts-expect-error update types + const agentIdValue = data[rowIndex % pagination.pageSize]?.fields['agent.id']; + + return {value}; } return !isEmpty(value) ? value : '-'; }, - [actionId] + [getFleetAppUrl, pagination.pageSize] ); - const tableSorting = useMemo(() => ({ columns: sortingColumns, onSort }), [ - onSort, + const tableSorting = useMemo(() => ({ columns: sortingColumns, onSort: setSortingColumns }), [ sortingColumns, ]); @@ -100,34 +109,32 @@ const ResultsTableComponent: React.FC = ({ actionId, ); useEffect(() => { - // @ts-expect-error update types - if (!allResultsData?.results) { + if (!allResultsData?.edges) { return; } - // @ts-expect-error update types - const newColumns = keys(allResultsData?.results[0]?.fields) + + const newColumns = keys(allResultsData?.edges[0]?.fields) .sort() .reduce((acc, fieldName) => { if (fieldName === 'agent.name') { - return [ - ...acc, - { - id: fieldName, - displayAsText: 'agent', - defaultSortDirection: Direction.asc, - }, - ]; + acc.push({ + id: fieldName, + displayAsText: i18n.translate('xpack.osquery.liveQueryResults.table.agentColumnTitle', { + defaultMessage: 'agent', + }), + defaultSortDirection: Direction.asc, + }); + + return acc; } if (fieldName.startsWith('osquery.')) { - return [ - ...acc, - { - id: fieldName, - displayAsText: fieldName.split('.')[1], - defaultSortDirection: Direction.asc, - }, - ]; + acc.push({ + id: fieldName, + displayAsText: fieldName.split('.')[1], + defaultSortDirection: Direction.asc, + }); + return acc; } return acc; @@ -137,22 +144,20 @@ const ResultsTableComponent: React.FC = ({ actionId, setColumns(newColumns); setVisibleColumns(map('id', newColumns)); } - // @ts-expect-error update types - }, [columns, allResultsData?.results]); + }, [columns, allResultsData?.edges]); return ( // @ts-expect-error update types - + ); diff --git a/x-pack/plugins/osquery/public/results/use_all_results.ts b/x-pack/plugins/osquery/public/results/use_all_results.ts index 5727edf1bf4c3..7140f80f510f4 100644 --- a/x-pack/plugins/osquery/public/results/use_all_results.ts +++ b/x-pack/plugins/osquery/public/results/use_all_results.ts @@ -5,8 +5,6 @@ * 2.0. */ -import deepEqual from 'fast-deep-equal'; -import { useEffect, useState } from 'react'; import { useQuery } from 'react-query'; import { createFilter } from '../common/helpers'; @@ -35,71 +33,55 @@ export interface ResultsArgs { interface UseAllResults { actionId: string; activePage: number; - agentId?: string; direction: Direction; limit: number; sortField: string; filterQuery?: ESTermQuery | string; skip?: boolean; + isLive?: boolean; } export const useAllResults = ({ actionId, activePage, - agentId, direction, limit, sortField, filterQuery, skip = false, + isLive = false, }: UseAllResults) => { const { data } = useKibana().services; - const [resultsRequest, setHostRequest] = useState(null); - - const response = useQuery( + return useQuery( ['allActionResults', { actionId, activePage, direction, limit, sortField }], async () => { - if (!resultsRequest) return Promise.resolve(); - const responseData = await data.search - .search(resultsRequest, { - strategy: 'osquerySearchStrategy', - }) + .search( + { + actionId, + factoryQueryType: OsqueryQueries.results, + filterQuery: createFilter(filterQuery), + pagination: generateTablePaginationOptions(activePage, limit), + sort: { + direction, + field: sortField, + }, + }, + { + strategy: 'osquerySearchStrategy', + } + ) .toPromise(); return { ...responseData, - results: responseData.edges, inspect: getInspectResponse(responseData, {} as InspectResponse), }; }, { - refetchInterval: 1000, - enabled: !skip && !!resultsRequest, + refetchInterval: isLive ? 1000 : false, + enabled: !skip, } ); - - useEffect(() => { - setHostRequest((prevRequest) => { - const myRequest = { - ...(prevRequest ?? {}), - actionId, - agentId, - factoryQueryType: OsqueryQueries.results, - filterQuery: createFilter(filterQuery), - pagination: generateTablePaginationOptions(activePage, limit), - sort: { - direction, - field: sortField, - }, - }; - if (!deepEqual(prevRequest, myRequest)) { - return myRequest; - } - return prevRequest; - }); - }, [actionId, activePage, agentId, direction, filterQuery, limit, sortField]); - - return response; }; diff --git a/x-pack/plugins/osquery/public/routes/index.tsx b/x-pack/plugins/osquery/public/routes/index.tsx index 18ba0abec5696..7007feb19d663 100644 --- a/x-pack/plugins/osquery/public/routes/index.tsx +++ b/x-pack/plugins/osquery/public/routes/index.tsx @@ -8,24 +8,24 @@ import React from 'react'; import { Switch, Redirect, Route } from 'react-router-dom'; -import { LiveQueries } from './live_query'; +import { useBreadcrumbs } from '../common/hooks/use_breadcrumbs'; +import { LiveQueries } from './live_queries'; +import { ScheduledQueryGroups } from './scheduled_query_groups'; -const OsqueryAppRoutesComponent = () => ( - - {/* - - - - - - - - */} - - - - - -); +const OsqueryAppRoutesComponent = () => { + useBreadcrumbs('base'); + + return ( + + + + + + + + + + ); +}; export const OsqueryAppRoutes = React.memo(OsqueryAppRoutesComponent); diff --git a/x-pack/plugins/osquery/public/routes/live_queries/details/actions_menu.tsx b/x-pack/plugins/osquery/public/routes/live_queries/details/actions_menu.tsx new file mode 100644 index 0000000000000..5e7c6082fef5a --- /dev/null +++ b/x-pack/plugins/osquery/public/routes/live_queries/details/actions_menu.tsx @@ -0,0 +1,68 @@ +/* + * 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 { FormattedMessage } from '@kbn/i18n/react'; +import { EuiButton, EuiContextMenuPanel, EuiContextMenuItem, EuiPopover } from '@elastic/eui'; +import React, { useCallback, useMemo, useState } from 'react'; + +import { useDiscoverLink } from '../../../common/hooks'; +interface LiveQueryDetailsActionsMenuProps { + actionId: string; +} + +const LiveQueryDetailsActionsMenuComponent: React.FC = ({ + actionId, +}) => { + const discoverLinkProps = useDiscoverLink({ filters: [{ key: 'action_id', value: actionId }] }); + const [isPopoverOpen, setPopover] = useState(false); + + const onButtonClick = useCallback(() => { + setPopover((currentIsPopoverOpen) => !currentIsPopoverOpen); + }, []); + + const closePopover = useCallback(() => { + setPopover(false); + }, []); + + const items = useMemo( + () => [ + + + , + ], + [discoverLinkProps] + ); + + const button = useMemo( + () => ( + + + + ), + [onButtonClick] + ); + + return ( + + + + ); +}; + +export const LiveQueryDetailsActionsMenu = React.memo(LiveQueryDetailsActionsMenuComponent); diff --git a/x-pack/plugins/osquery/public/routes/live_query/details/index.tsx b/x-pack/plugins/osquery/public/routes/live_queries/details/index.tsx similarity index 75% rename from x-pack/plugins/osquery/public/routes/live_query/details/index.tsx rename to x-pack/plugins/osquery/public/routes/live_queries/details/index.tsx index 11665bede97c5..9f759f847f4c8 100644 --- a/x-pack/plugins/osquery/public/routes/live_query/details/index.tsx +++ b/x-pack/plugins/osquery/public/routes/live_queries/details/index.tsx @@ -7,7 +7,7 @@ import { EuiButtonEmpty, - EuiText, + EuiTextColor, EuiFlexGroup, EuiFlexItem, EuiCodeBlock, @@ -28,6 +28,8 @@ import { useActionResults } from '../../../action_results/use_action_results'; import { useActionDetails } from '../../../actions/use_action_details'; import { ResultTabs } from '../../../queries/edit/tabs'; import { LiveQueryDetailsActionsMenu } from './actions_menu'; +import { useBreadcrumbs } from '../../../common/hooks/use_breadcrumbs'; +import { BetaBadge, BetaBadgeRowWrapper } from '../../../components/beta_badge'; const Divider = styled.div` width: 0; @@ -37,7 +39,8 @@ const Divider = styled.div` const LiveQueryDetailsPageComponent = () => { const { actionId } = useParams<{ actionId: string }>(); - const liveQueryListProps = useRouterNavigate('live_query'); + useBreadcrumbs('live_query_details', { liveQueryId: actionId }); + const liveQueryListProps = useRouterNavigate('live_queries'); const { data } = useActionDetails({ actionId }); const { data: actionResultsData } = useActionResults({ @@ -54,30 +57,21 @@ const LiveQueryDetailsPageComponent = () => { - +

-
-
- - -

- -

-
+ +
), @@ -103,10 +97,7 @@ const LiveQueryDetailsPageComponent = () => { /> - { - // @ts-expect-error update types - data?.actionDetails?.fields?.agents?.length ?? '0' - } + {data?.actionDetails?.fields?.agents?.length ?? '0'} @@ -123,17 +114,13 @@ const LiveQueryDetailsPageComponent = () => { /> - { - // @ts-expect-error update types - actionResultsData?.rawResponse?.aggregations?.responses?.buckets.find( - // @ts-expect-error update types - (bucket) => bucket.key === 'error' - )?.doc_count ?? '0' - } + + {actionResultsData?.aggregations.failed} + - + @@ -141,25 +128,16 @@ const LiveQueryDetailsPageComponent = () => { ), - [ - actionId, - // @ts-expect-error update types - actionResultsData?.rawResponse?.aggregations?.responses?.buckets, - // @ts-expect-error update types - data?.actionDetails?.fields?.agents?.length, - ] + [actionId, actionResultsData?.aggregations.failed, data?.actionDetails?.fields?.agents?.length] ); return ( - { - // @ts-expect-error update types - data?.actionDetails._source?.data?.query - } + {data?.actionDetails._source?.data?.query} - + ); }; diff --git a/x-pack/plugins/osquery/public/routes/live_query/index.tsx b/x-pack/plugins/osquery/public/routes/live_queries/index.tsx similarity index 83% rename from x-pack/plugins/osquery/public/routes/live_query/index.tsx rename to x-pack/plugins/osquery/public/routes/live_queries/index.tsx index 738f96087545c..af039e85e9785 100644 --- a/x-pack/plugins/osquery/public/routes/live_query/index.tsx +++ b/x-pack/plugins/osquery/public/routes/live_queries/index.tsx @@ -11,9 +11,10 @@ import { Switch, Route, useRouteMatch } from 'react-router-dom'; import { LiveQueriesPage } from './list'; import { NewLiveQueryPage } from './new'; import { LiveQueryDetailsPage } from './details'; -import { LiveQueryAgentDetailsPage } from './agent_details'; +import { useBreadcrumbs } from '../../common/hooks/use_breadcrumbs'; const LiveQueriesComponent = () => { + useBreadcrumbs('live_queries'); const match = useRouteMatch(); return ( @@ -21,9 +22,6 @@ const LiveQueriesComponent = () => { - - - diff --git a/x-pack/plugins/osquery/public/routes/live_queries/list/index.tsx b/x-pack/plugins/osquery/public/routes/live_queries/list/index.tsx new file mode 100644 index 0000000000000..f5d2863b9e99b --- /dev/null +++ b/x-pack/plugins/osquery/public/routes/live_queries/list/index.tsx @@ -0,0 +1,65 @@ +/* + * 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 { EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React, { useMemo } from 'react'; + +import { useKibana, useRouterNavigate } from '../../../common/lib/kibana'; +import { ActionsTable } from '../../../actions/actions_table'; +import { WithHeaderLayout } from '../../../components/layouts'; +import { useBreadcrumbs } from '../../../common/hooks/use_breadcrumbs'; +import { BetaBadge, BetaBadgeRowWrapper } from '../../../components/beta_badge'; + +const LiveQueriesPageComponent = () => { + const hasSaveUICapabilities = useKibana().services.application.capabilities.osquery.save; + useBreadcrumbs('live_queries'); + const newQueryLinkProps = useRouterNavigate('live_queries/new'); + + const LeftColumn = useMemo( + () => ( + + + +

+ +

+ +
+
+
+ ), + [] + ); + + const RightColumn = useMemo( + () => ( + + + + ), + [newQueryLinkProps] + ); + + return ( + + + + ); +}; + +export const LiveQueriesPage = React.memo(LiveQueriesPageComponent); diff --git a/x-pack/plugins/osquery/public/routes/live_query/new/index.tsx b/x-pack/plugins/osquery/public/routes/live_queries/new/index.tsx similarity index 50% rename from x-pack/plugins/osquery/public/routes/live_query/new/index.tsx rename to x-pack/plugins/osquery/public/routes/live_queries/new/index.tsx index 0aeb46da2a897..78304d4b29196 100644 --- a/x-pack/plugins/osquery/public/routes/live_query/new/index.tsx +++ b/x-pack/plugins/osquery/public/routes/live_queries/new/index.tsx @@ -5,16 +5,39 @@ * 2.0. */ -import { EuiButtonEmpty, EuiText, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import React, { useMemo } from 'react'; +import { useLocation } from 'react-router-dom'; +import qs from 'query-string'; import { WithHeaderLayout } from '../../../components/layouts'; import { useRouterNavigate } from '../../../common/lib/kibana'; -import { LiveQuery } from '../../../live_query'; +import { LiveQuery } from '../../../live_queries'; +import { useBreadcrumbs } from '../../../common/hooks/use_breadcrumbs'; +import { BetaBadge, BetaBadgeRowWrapper } from '../../../components/beta_badge'; const NewLiveQueryPageComponent = () => { - const liveQueryListProps = useRouterNavigate('live_query'); + useBreadcrumbs('live_query_new'); + const location = useLocation(); + const liveQueryListProps = useRouterNavigate('live_queries'); + + const formDefaultValue = useMemo(() => { + const queryParams = qs.parse(location.search); + + if (queryParams?.agentPolicyId) { + return { + agentSelection: { + allAgentsSelected: false, + agents: [], + platformsSelected: [], + policiesSelected: [queryParams?.agentPolicyId], + }, + }; + } + + return undefined; + }, [location.search]); const LeftColumn = useMemo( () => ( @@ -22,30 +45,21 @@ const NewLiveQueryPageComponent = () => { - +

+

-
-
- - -

- -

-
+
), @@ -54,7 +68,7 @@ const NewLiveQueryPageComponent = () => { return ( - + ); }; diff --git a/x-pack/plugins/osquery/public/routes/live_query/agent_details/index.tsx b/x-pack/plugins/osquery/public/routes/live_query/agent_details/index.tsx deleted file mode 100644 index 266847a803c0d..0000000000000 --- a/x-pack/plugins/osquery/public/routes/live_query/agent_details/index.tsx +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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 { - EuiButtonEmpty, - EuiText, - EuiFlexGroup, - EuiFlexItem, - EuiCodeBlock, - EuiSpacer, -} from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; -import React, { useMemo } from 'react'; -import { useParams } from 'react-router-dom'; - -import { useRouterNavigate } from '../../../common/lib/kibana'; -import { WithHeaderLayout } from '../../../components/layouts'; -import { useActionDetails } from '../../../actions/use_action_details'; -import { ResultsTable } from '../../../results/results_table'; - -const LiveQueryAgentDetailsPageComponent = () => { - const { actionId, agentId } = useParams<{ actionId: string; agentId: string }>(); - const { data } = useActionDetails({ actionId }); - const liveQueryListProps = useRouterNavigate(`live_query/${actionId}`); - - const LeftColumn = useMemo( - () => ( - - - - - - - - -

- -

-
-
- - -

- -

-
-
-
- ), - [agentId, liveQueryListProps] - ); - - return ( - - - { - // @ts-expect-error update types - data?.actionDetails._source?.data?.query - } - - - - - ); -}; - -export const LiveQueryAgentDetailsPage = React.memo(LiveQueryAgentDetailsPageComponent); diff --git a/x-pack/plugins/osquery/public/routes/live_query/list/index.tsx b/x-pack/plugins/osquery/public/routes/live_query/list/index.tsx deleted file mode 100644 index ed72fe704294d..0000000000000 --- a/x-pack/plugins/osquery/public/routes/live_query/list/index.tsx +++ /dev/null @@ -1,63 +0,0 @@ -/* - * 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 { EuiButton, EuiText, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; -import React, { useMemo } from 'react'; - -import { useRouterNavigate } from '../../../common/lib/kibana'; -import { ActionsTable } from '../../../actions/actions_table'; -import { WithHeaderLayout } from '../../../components/layouts'; - -const LiveQueriesPageComponent = () => { - const newQueryLinkProps = useRouterNavigate('live_query/new'); - - const LeftColumn = useMemo( - () => ( - - - -

- -

-
-
- - -

- -

-
-
-
- ), - [] - ); - - const RightColumn = useMemo( - () => ( - - {'New live query'} - - ), - [newQueryLinkProps] - ); - - return ( - - - - ); -}; - -export const LiveQueriesPage = React.memo(LiveQueriesPageComponent); diff --git a/x-pack/plugins/osquery/public/routes/scheduled_query_groups/add/index.tsx b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/add/index.tsx new file mode 100644 index 0000000000000..3d5f25a0e3231 --- /dev/null +++ b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/add/index.tsx @@ -0,0 +1,68 @@ +/* + * 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 { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React, { useMemo } from 'react'; + +import { WithHeaderLayout } from '../../../components/layouts'; +import { useRouterNavigate } from '../../../common/lib/kibana'; +import { ScheduledQueryGroupForm } from '../../../scheduled_query_groups/form'; +import { useOsqueryIntegration } from '../../../common/hooks'; +import { useBreadcrumbs } from '../../../common/hooks/use_breadcrumbs'; +import { BetaBadge, BetaBadgeRowWrapper } from '../../../components/beta_badge'; + +const AddScheduledQueryGroupPageComponent = () => { + useBreadcrumbs('scheduled_query_group_add'); + const scheduledQueryListProps = useRouterNavigate('scheduled_query_groups'); + const { data: osqueryIntegration } = useOsqueryIntegration(); + + const packageInfo = useMemo(() => { + if (!osqueryIntegration) return; + + return { + name: osqueryIntegration.name, + title: osqueryIntegration.title, + version: osqueryIntegration.version, + }; + }, [osqueryIntegration]); + + const LeftColumn = useMemo( + () => ( + + + + + + + + +

+ +

+ +
+
+
+ ), + [scheduledQueryListProps] + ); + + return ( + + {packageInfo && } + + ); +}; + +export const AddScheduledQueryGroupPage = React.memo(AddScheduledQueryGroupPageComponent); diff --git a/x-pack/plugins/osquery/public/routes/live_query/details/actions_menu.tsx b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/details/actions_menu.tsx similarity index 60% rename from x-pack/plugins/osquery/public/routes/live_query/details/actions_menu.tsx rename to x-pack/plugins/osquery/public/routes/scheduled_query_groups/details/actions_menu.tsx index 677b917e047b4..ccfb933afdad6 100644 --- a/x-pack/plugins/osquery/public/routes/live_query/details/actions_menu.tsx +++ b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/details/actions_menu.tsx @@ -5,10 +5,11 @@ * 2.0. */ +import { FormattedMessage } from '@kbn/i18n/react'; import { EuiButton, EuiContextMenuPanel, EuiContextMenuItem, EuiPopover } from '@elastic/eui'; import React, { useCallback, useMemo, useState } from 'react'; -import { useKibana } from '../../../common/lib/kibana'; +import { useDiscoverLink } from '../../../common/hooks'; interface LiveQueryDetailsActionsMenuProps { actionId: string; @@ -17,13 +18,9 @@ interface LiveQueryDetailsActionsMenuProps { const LiveQueryDetailsActionsMenuComponent: React.FC = ({ actionId, }) => { - const services = useKibana().services; + const discoverLinkProps = useDiscoverLink({ filters: [{ key: 'action_id', value: actionId }] }); const [isPopoverOpen, setPopover] = useState(false); - const discoverLinkHref = services?.application?.getUrlForApp('discover', { - path: `#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-24h,to:now))&_a=(columns:!(),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logs-*',key:action_id,negate:!f,params:(query:'${actionId}'),type:phrase),query:(match_phrase:(action_id:'${actionId}')))),index:'logs-*',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))`, - }); - const onButtonClick = useCallback(() => { setPopover((currentIsPopoverOpen) => !currentIsPopoverOpen); }, []); @@ -34,17 +31,26 @@ const LiveQueryDetailsActionsMenuComponent: React.FC [ - - Check results in Discover + + , ], - [discoverLinkHref] + [discoverLinkProps] ); - const button = ( - - Actions - + const button = useMemo( + () => ( + + + + ), + [onButtonClick] ); return ( diff --git a/x-pack/plugins/osquery/public/routes/scheduled_query_groups/details/index.tsx b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/details/index.tsx new file mode 100644 index 0000000000000..abd81697fb024 --- /dev/null +++ b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/details/index.tsx @@ -0,0 +1,128 @@ +/* + * 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 { + EuiButtonEmpty, + EuiButton, + EuiFlexGroup, + EuiFlexItem, + EuiDescriptionList, + EuiDescriptionListTitle, + EuiDescriptionListDescription, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React, { useMemo } from 'react'; +import { useParams } from 'react-router-dom'; +import styled from 'styled-components'; + +import { useKibana, useRouterNavigate } from '../../../common/lib/kibana'; +import { WithHeaderLayout } from '../../../components/layouts'; +import { useScheduledQueryGroup } from '../../../scheduled_query_groups/use_scheduled_query_group'; +import { ScheduledQueryGroupQueriesTable } from '../../../scheduled_query_groups/scheduled_query_group_queries_table'; +import { useBreadcrumbs } from '../../../common/hooks/use_breadcrumbs'; +import { AgentsPolicyLink } from '../../../agent_policies/agents_policy_link'; +import { BetaBadge, BetaBadgeRowWrapper } from '../../../components/beta_badge'; + +const Divider = styled.div` + width: 0; + height: 100%; + border-left: ${({ theme }) => theme.eui.euiBorderThin}; +`; + +const ScheduledQueryGroupDetailsPageComponent = () => { + const hasSaveUICapabilities = useKibana().services.application.capabilities.osquery.save; + const { scheduledQueryGroupId } = useParams<{ scheduledQueryGroupId: string }>(); + const scheduledQueryGroupsListProps = useRouterNavigate('scheduled_query_groups'); + const editQueryLinkProps = useRouterNavigate( + `scheduled_query_groups/${scheduledQueryGroupId}/edit` + ); + + const { data } = useScheduledQueryGroup({ scheduledQueryGroupId }); + + useBreadcrumbs('scheduled_query_group_details', { scheduledQueryGroupName: data?.name ?? '' }); + + const LeftColumn = useMemo( + () => ( + + + + + + + + +

+ +

+ +
+
+
+ ), + [data?.name, scheduledQueryGroupsListProps] + ); + + const RightColumn = useMemo( + () => ( + + + {/* eslint-disable-next-line react-perf/jsx-no-new-object-as-prop */} + + + + + + {data?.policy_id ? : null} + + + + {hasSaveUICapabilities ? ( + <> + + + + + + + + + + ) : undefined} + + ), + [data?.policy_id, editQueryLinkProps, hasSaveUICapabilities] + ); + + return ( + + {data && } + + ); +}; + +export const ScheduledQueryGroupDetailsPage = React.memo(ScheduledQueryGroupDetailsPageComponent); diff --git a/x-pack/plugins/osquery/public/routes/scheduled_query_groups/edit/index.tsx b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/edit/index.tsx new file mode 100644 index 0000000000000..0d63dba2fd1e6 --- /dev/null +++ b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/edit/index.tsx @@ -0,0 +1,74 @@ +/* + * 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 { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiLoadingContent } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React, { useMemo } from 'react'; +import { useParams } from 'react-router-dom'; + +import { WithHeaderLayout } from '../../../components/layouts'; +import { useRouterNavigate } from '../../../common/lib/kibana'; +import { ScheduledQueryGroupForm } from '../../../scheduled_query_groups/form'; +import { useScheduledQueryGroup } from '../../../scheduled_query_groups/use_scheduled_query_group'; +import { useBreadcrumbs } from '../../../common/hooks/use_breadcrumbs'; +import { BetaBadge, BetaBadgeRowWrapper } from '../../../components/beta_badge'; + +const EditScheduledQueryGroupPageComponent = () => { + const { scheduledQueryGroupId } = useParams<{ scheduledQueryGroupId: string }>(); + const queryDetailsLinkProps = useRouterNavigate( + `scheduled_query_groups/${scheduledQueryGroupId}` + ); + + const { data } = useScheduledQueryGroup({ scheduledQueryGroupId }); + + useBreadcrumbs('scheduled_query_group_edit', { scheduledQueryGroupName: data?.name ?? '' }); + + const LeftColumn = useMemo( + () => ( + + + + + + + + +

+ +

+ +
+
+
+ ), + [data?.name, queryDetailsLinkProps] + ); + + return ( + + {!data ? ( + + ) : ( + + )} + + ); +}; + +export const EditScheduledQueryGroupPage = React.memo(EditScheduledQueryGroupPageComponent); diff --git a/x-pack/plugins/osquery/public/routes/scheduled_query_groups/index.tsx b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/index.tsx new file mode 100644 index 0000000000000..76ca2bf14d303 --- /dev/null +++ b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/index.tsx @@ -0,0 +1,39 @@ +/* + * 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 React from 'react'; +import { Switch, Route, useRouteMatch } from 'react-router-dom'; + +import { ScheduledQueryGroupsPage } from './list'; +import { AddScheduledQueryGroupPage } from './add'; +import { EditScheduledQueryGroupPage } from './edit'; +import { ScheduledQueryGroupDetailsPage } from './details'; +import { useBreadcrumbs } from '../../common/hooks/use_breadcrumbs'; + +const ScheduledQueryGroupsComponent = () => { + useBreadcrumbs('scheduled_query_groups'); + const match = useRouteMatch(); + + return ( + + + + + + + + + + + + + + + ); +}; + +export const ScheduledQueryGroups = React.memo(ScheduledQueryGroupsComponent); diff --git a/x-pack/plugins/osquery/public/routes/scheduled_query_groups/list/index.tsx b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/list/index.tsx new file mode 100644 index 0000000000000..9c5ebfdb79f9f --- /dev/null +++ b/x-pack/plugins/osquery/public/routes/scheduled_query_groups/list/index.tsx @@ -0,0 +1,63 @@ +/* + * 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 { EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React, { useMemo } from 'react'; + +import { useKibana, useRouterNavigate } from '../../../common/lib/kibana'; +import { WithHeaderLayout } from '../../../components/layouts'; +import { ScheduledQueryGroupsTable } from '../../../scheduled_query_groups/scheduled_query_groups_table'; +import { BetaBadge, BetaBadgeRowWrapper } from '../../../components/beta_badge'; + +const ScheduledQueryGroupsPageComponent = () => { + const hasSaveUICapabilities = useKibana().services.application.capabilities.osquery.save; + const newQueryLinkProps = useRouterNavigate('scheduled_query_groups/add'); + + const LeftColumn = useMemo( + () => ( + + + +

+ +

+ +
+
+
+ ), + [] + ); + + const RightColumn = useMemo( + () => ( + + + + ), + [newQueryLinkProps] + ); + + return ( + + + + ); +}; + +export const ScheduledQueryGroupsPage = React.memo(ScheduledQueryGroupsPageComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query/common/osquery_stream_field.tsx b/x-pack/plugins/osquery/public/scheduled_query/common/osquery_stream_field.tsx deleted file mode 100644 index 6f589f6f64b13..0000000000000 --- a/x-pack/plugins/osquery/public/scheduled_query/common/osquery_stream_field.tsx +++ /dev/null @@ -1,169 +0,0 @@ -/* - * 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 { find } from 'lodash/fp'; -import { - EuiButtonIcon, - EuiFieldText, - EuiForm, - EuiFormRow, - EuiSelect, - EuiSpacer, - EuiSwitch, - EuiHorizontalRule, -} from '@elastic/eui'; -import React, { useCallback, useMemo } from 'react'; -import { useQuery } from 'react-query'; - -import { useKibana } from '../../common/lib/kibana'; - -// @ts-expect-error update types -const OsqueryStreamFieldComponent = ({ field, removeItem }) => { - const { http } = useKibana().services; - const { data: { saved_objects: savedQueries } = {} } = useQuery(['savedQueryList'], () => - http.get('/internal/osquery/saved_query', { - query: { pageIndex: 0, pageSize: 100, sortField: 'updated_at', sortDirection: 'desc' }, - }) - ); - - const { setValue } = field; - - const savedQueriesOptions = useMemo( - () => - // @ts-expect-error update types - (savedQueries ?? []).map((savedQuery) => ({ - text: savedQuery.attributes.name, - value: savedQuery.id, - })), - [savedQueries] - ); - - const handleSavedQueryChange = useCallback( - (event) => { - event.persist(); - const savedQueryId = event.target.value; - const savedQuery = find(['id', savedQueryId], savedQueries); - - if (savedQuery) { - // @ts-expect-error update types - setValue((prev) => ({ - ...prev, - vars: { - ...prev.vars, - id: { - ...prev.vars.id, - value: savedQuery.id, - }, - query: { - ...prev.vars.query, - value: savedQuery.attributes.query, - }, - }, - })); - } - }, - [savedQueries, setValue] - ); - - const handleEnabledChange = useCallback(() => { - // @ts-expect-error update types - setValue((prev) => ({ - ...prev, - enabled: !prev.enabled, - })); - }, [setValue]); - - const handleQueryChange = useCallback( - (event) => { - event.persist(); - // @ts-expect-error update types - setValue((prev) => ({ - ...prev, - vars: { - ...prev.vars, - query: { - ...prev.vars.query, - value: event.target.value, - }, - }, - })); - }, - [setValue] - ); - - const handleIntervalChange = useCallback( - (event) => { - event.persist(); - // @ts-expect-error update types - setValue((prev) => ({ - ...prev, - vars: { - ...prev.vars, - interval: { - ...prev.vars.interval, - value: event.target.value, - }, - }, - })); - }, - [setValue] - ); - - const handleIdChange = useCallback( - (event) => { - event.persist(); - // @ts-expect-error update types - setValue((prev) => ({ - ...prev, - vars: { - ...prev.vars, - id: { - ...prev.vars.id, - value: event.target.value, - }, - }, - })); - }, - [setValue] - ); - - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - ); -}; - -export const OsqueryStreamField = React.memo(OsqueryStreamFieldComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query/edit/form.tsx b/x-pack/plugins/osquery/public/scheduled_query/edit/form.tsx deleted file mode 100644 index 3e0e2b33efdae..0000000000000 --- a/x-pack/plugins/osquery/public/scheduled_query/edit/form.tsx +++ /dev/null @@ -1,153 +0,0 @@ -/* - * 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 produce from 'immer'; -import { get, omit } from 'lodash/fp'; -import { EuiButton, EuiButtonEmpty, EuiSpacer, EuiHorizontalRule } from '@elastic/eui'; -import uuid from 'uuid'; -import React, { useMemo } from 'react'; - -import { - UseField, - useForm, - UseArray, - getUseField, - Field, - ToggleField, - Form, -} from '../../shared_imports'; - -import { OsqueryStreamField } from '../common/osquery_stream_field'; -import { schema } from './schema'; - -const CommonUseField = getUseField({ component: Field }); - -const EDIT_SCHEDULED_QUERY_FORM_ID = 'editScheduledQueryForm'; - -interface EditScheduledQueryFormProps { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - agentPolicies: Array>; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - data: Array>; - handleSubmit: () => Promise; -} - -const EditScheduledQueryFormComponent: React.FC = ({ - agentPolicies, - data, - handleSubmit, -}) => { - const agentPoliciesOptions = useMemo( - () => - agentPolicies.map((policy) => ({ - value: policy.id, - text: policy.name, - })), - [agentPolicies] - ); - - const { form } = useForm({ - schema, - id: EDIT_SCHEDULED_QUERY_FORM_ID, - onSubmit: handleSubmit, - defaultValue: data, - // @ts-expect-error update types - deserializer: (payload) => { - const deserialized = produce(payload, (draft) => { - // @ts-expect-error update types - draft.inputs[0].streams.forEach((stream) => { - delete stream.compiled_stream; - }); - }); - - return deserialized; - }, - // @ts-expect-error update types - serializer: (payload) => - omit(['id', 'revision', 'created_at', 'created_by', 'updated_at', 'updated_by', 'version'], { - ...data, - ...payload, - // @ts-expect-error update types - inputs: [{ type: 'osquery', ...((payload.inputs && payload.inputs[0]) ?? {}) }], - }), - }); - - const { submit } = form; - - const policyIdComponentProps = useMemo( - () => ({ - euiFieldProps: { - disabled: true, - options: agentPoliciesOptions, - }, - }), - [agentPoliciesOptions] - ); - - return ( -
- - - - - - - - - - - {({ items, addItem, removeItem }) => ( - <> - {items.map((item) => ( - removeItem(item.id)} - defaultValue={ - // eslint-disable-next-line react-perf/jsx-no-new-object-as-prop - get(item.path, form.getFormData()) ?? { - data_stream: { - type: 'logs', - dataset: 'osquery_elastic_managed.osquery', - }, - vars: { - query: { - type: 'text', - value: 'select * from uptime', - }, - interval: { - type: 'text', - value: '120', - }, - id: { - type: 'text', - value: uuid.v4(), - }, - }, - enabled: true, - } - } - /> - ))} - - {'Add query'} - - - )} - - - - - Save - - - ); -}; - -export const EditScheduledQueryForm = React.memo(EditScheduledQueryFormComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query/edit/index.tsx b/x-pack/plugins/osquery/public/scheduled_query/edit/index.tsx deleted file mode 100644 index 65dec2e467b35..0000000000000 --- a/x-pack/plugins/osquery/public/scheduled_query/edit/index.tsx +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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 React from 'react'; -import { useParams } from 'react-router-dom'; -import { useMutation, useQuery } from 'react-query'; - -import { useKibana } from '../../common/lib/kibana'; -import { EditScheduledQueryForm } from './form'; - -const EditScheduledQueryPageComponent = () => { - const { http } = useKibana().services; - const { scheduledQueryId } = useParams<{ scheduledQueryId: string }>(); - - const { data } = useQuery(['scheduledQuery', { scheduledQueryId }], () => - http.get(`/internal/osquery/scheduled_query/${scheduledQueryId}`) - ); - - const { data: agentPolicies } = useQuery( - ['agentPolicy'], - () => http.get(`/api/fleet/agent_policies`), - { initialData: { items: [] } } - ); - - const updateScheduledQueryMutation = useMutation((payload) => - http.put(`/api/fleet/package_policies/${scheduledQueryId}`, { body: JSON.stringify(payload) }) - ); - - if (data) { - return ( - - ); - } - - return
Loading
; -}; - -export const EditScheduledQueryPage = React.memo(EditScheduledQueryPageComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query/edit/schema.ts b/x-pack/plugins/osquery/public/scheduled_query/edit/schema.ts deleted file mode 100644 index 75a6d955c62ec..0000000000000 --- a/x-pack/plugins/osquery/public/scheduled_query/edit/schema.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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 { FIELD_TYPES } from '../../shared_imports'; - -export const schema = { - policy_id: { - type: FIELD_TYPES.SELECT, - label: 'Policy', - }, - name: { - type: FIELD_TYPES.TEXT, - label: 'Name', - }, - description: { - type: FIELD_TYPES.TEXT, - label: 'Description', - }, - streams: { - type: FIELD_TYPES.MULTI_SELECT, - }, -}; diff --git a/x-pack/plugins/osquery/public/scheduled_query/index.tsx b/x-pack/plugins/osquery/public/scheduled_query/index.tsx deleted file mode 100644 index 205c87b3a0d50..0000000000000 --- a/x-pack/plugins/osquery/public/scheduled_query/index.tsx +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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 React from 'react'; -import { Switch, Route, useRouteMatch } from 'react-router-dom'; - -import { ScheduledQueriesPage } from './queries'; -import { NewScheduledQueryPage } from './new'; -import { EditScheduledQueryPage } from './edit'; -// import { QueryAgentResults } from './agent_results'; -// import { SavedQueriesPage } from './saved_query'; - -const ScheduledQueriesComponent = () => { - const match = useRouteMatch(); - - return ( - - - - - {/* - - */} - - - - - - - - ); -}; - -export const ScheduledQueries = React.memo(ScheduledQueriesComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query/new/form.tsx b/x-pack/plugins/osquery/public/scheduled_query/new/form.tsx deleted file mode 100644 index 186e74d190c6d..0000000000000 --- a/x-pack/plugins/osquery/public/scheduled_query/new/form.tsx +++ /dev/null @@ -1,105 +0,0 @@ -/* - * 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 { EuiButton, EuiButtonEmpty, EuiSpacer } from '@elastic/eui'; -import deepmerge from 'deepmerge'; -import React, { useCallback } from 'react'; - -import { useForm, UseArray, UseField, getUseField, Field, Form } from '../../shared_imports'; - -import { OsqueryStreamField } from '../common/osquery_stream_field'; -import { defaultValue, schema } from './schema'; -import { combineMerge } from './utils'; - -const CommonUseField = getUseField({ component: Field }); - -const NEW_SCHEDULED_QUERY_FORM_ID = 'newScheduledQueryForm'; - -interface NewScheduledQueryFormProps { - handleSubmit: () => Promise; -} - -const NewScheduledQueryFormComponent: React.FC = ({ handleSubmit }) => { - const { form } = useForm({ - schema, - id: NEW_SCHEDULED_QUERY_FORM_ID, - options: { - stripEmptyFields: false, - }, - onSubmit: handleSubmit, - // @ts-expect-error update types - defaultValue, - serializer: (payload) => - deepmerge(defaultValue, payload, { - arrayMerge: combineMerge, - }), - }); - const { submit } = form; - - const StreamsContent = useCallback( - ({ items, addItem, removeItem }) => ( - <> - { - // @ts-expect-error update types - items.map((item) => ( - removeItem(item.id)} - // eslint-disable-next-line react-perf/jsx-no-new-object-as-prop - defaultValue={{ - data_stream: { - type: 'logs', - dataset: 'osquery_elastic_managed.osquery', - }, - vars: { - query: { - type: 'text', - value: '', - }, - interval: { - type: 'text', - value: '', - }, - id: { - type: 'text', - value: '', - }, - }, - enabled: true, - }} - /> - )) - } - - {'Add query'} - - - ), - [] - ); - - return ( -
- - - - - - {StreamsContent} - - - - {'Save'} - - - ); -}; - -export const NewScheduledQueryForm = React.memo(NewScheduledQueryFormComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query/new/index.tsx b/x-pack/plugins/osquery/public/scheduled_query/new/index.tsx deleted file mode 100644 index bb4ae6f113de2..0000000000000 --- a/x-pack/plugins/osquery/public/scheduled_query/new/index.tsx +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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 React from 'react'; -import { useHistory } from 'react-router-dom'; -import { useMutation } from 'react-query'; - -import { useKibana } from '../../common/lib/kibana'; -import { NewScheduledQueryForm } from './form'; - -const NewScheduledQueryPageComponent = () => { - const { http } = useKibana().services; - const history = useHistory(); - - const createScheduledQueryMutation = useMutation( - (payload) => http.post(`/api/fleet/package_policies`, { body: JSON.stringify(payload) }), - { - onSuccess: (data) => { - history.push(`/scheduled_queries/${data.item.id}`); - }, - } - ); - - // @ts-expect-error update types - return ; -}; - -export const NewScheduledQueryPage = React.memo(NewScheduledQueryPageComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query/new/schema.ts b/x-pack/plugins/osquery/public/scheduled_query/new/schema.ts deleted file mode 100644 index aef33e57f6f30..0000000000000 --- a/x-pack/plugins/osquery/public/scheduled_query/new/schema.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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 { FIELD_TYPES } from '../../shared_imports'; - -export const defaultValue = { - name: '', - description: '', - namespace: 'default', - enabled: true, - policy_id: '1e2bb670-686c-11eb-84b4-81282a213fcf', - output_id: '', - package: { - name: 'osquery_elastic_managed', - title: 'OSquery Elastic Managed', - version: '0.1.2', - }, - inputs: [ - { - type: 'osquery', - enabled: true, - streams: [], - }, - ], -}; - -export const schema = { - name: { - type: FIELD_TYPES.TEXT, - label: 'Name', - }, - description: { - type: FIELD_TYPES.TEXT, - label: 'Description', - }, - namespace: { - type: FIELD_TYPES.TEXT, - }, - enabled: { - type: FIELD_TYPES.TOGGLE, - }, - policy_id: { - type: FIELD_TYPES.TEXT, - }, - inputs: { - enabled: { - type: FIELD_TYPES.TOGGLE, - }, - streams: { - type: FIELD_TYPES.MULTI_SELECT, - vars: { - query: { - type: { - type: FIELD_TYPES.TEXT, - }, - value: { - type: FIELD_TYPES.TEXT, - }, - }, - }, - }, - }, -}; diff --git a/x-pack/plugins/osquery/public/scheduled_query/new/utils.ts b/x-pack/plugins/osquery/public/scheduled_query/new/utils.ts deleted file mode 100644 index 2de5c90f19c0e..0000000000000 --- a/x-pack/plugins/osquery/public/scheduled_query/new/utils.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * 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 deepmerge from 'deepmerge'; - -// @ts-expect-error update types -export const combineMerge = (target, source, options) => { - const destination = target.slice(); - - // @ts-expect-error update types - source.forEach((item, index) => { - if (typeof destination[index] === 'undefined') { - destination[index] = options.cloneUnlessOtherwiseSpecified(item, options); - } else if (options.isMergeableObject(item)) { - destination[index] = deepmerge(target[index], item, options); - } else if (target.indexOf(item) === -1) { - destination.push(item); - } - }); - return destination; -}; diff --git a/x-pack/plugins/osquery/public/scheduled_query/queries/index.tsx b/x-pack/plugins/osquery/public/scheduled_query/queries/index.tsx deleted file mode 100644 index 24a78320e30d2..0000000000000 --- a/x-pack/plugins/osquery/public/scheduled_query/queries/index.tsx +++ /dev/null @@ -1,185 +0,0 @@ -/* - * 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 { - EuiBasicTable, - EuiButton, - EuiButtonIcon, - EuiCodeBlock, - RIGHT_ALIGNMENT, -} from '@elastic/eui'; -import React, { useCallback, useMemo, useState } from 'react'; -import { useQuery } from 'react-query'; -import { useHistory } from 'react-router-dom'; - -import { Direction } from '../../../common/search_strategy'; -import { useKibana, useRouterNavigate } from '../../common/lib/kibana'; - -const ScheduledQueriesPageComponent = () => { - const { push } = useHistory(); - const [pageIndex, setPageIndex] = useState(0); - const [pageSize, setPageSize] = useState(5); - const [sortField, setSortField] = useState('updated_at'); - const [sortDirection, setSortDirection] = useState(Direction.desc); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const [itemIdToExpandedRowMap, setItemIdToExpandedRowMap] = useState>({}); - const { http } = useKibana().services; - const newQueryLinkProps = useRouterNavigate('scheduled_queries/new'); - - const { data = {} } = useQuery( - ['scheduledQueryList', { pageIndex, pageSize, sortField, sortDirection }], - () => - http.get('/internal/osquery/scheduled_query', { - query: { - pageIndex, - pageSize, - sortField, - sortDirection, - }, - }), - { - keepPreviousData: true, - // Refetch the data every 5 seconds - refetchInterval: 5000, - } - ); - const { total = 0, items: savedQueries } = data; - - const toggleDetails = useCallback( - (item) => () => { - const itemIdToExpandedRowMapValues = { ...itemIdToExpandedRowMap }; - if (itemIdToExpandedRowMapValues[item.id]) { - delete itemIdToExpandedRowMapValues[item.id]; - } else { - // @ts-expect-error update types - itemIdToExpandedRowMapValues[item.id] = item.inputs[0].streams.map((stream) => ( - - {`${stream.vars.query.value} every ${stream.vars.interval.value}s`} - - )); - } - setItemIdToExpandedRowMap(itemIdToExpandedRowMapValues); - }, - [itemIdToExpandedRowMap] - ); - - const renderExtendedItemToggle = useCallback( - (item) => ( - - ), - [itemIdToExpandedRowMap, toggleDetails] - ); - - const handleEditClick = useCallback((item) => push(`/scheduled_queries/${item.id}`), [push]); - - const columns = useMemo( - () => [ - { - field: 'name', - name: 'Query name', - sortable: true, - truncateText: true, - }, - { - field: 'enabled', - name: 'Active', - sortable: true, - truncateText: true, - }, - { - field: 'updated_at', - name: 'Last updated at', - sortable: true, - truncateText: true, - }, - { - name: 'Actions', - actions: [ - { - name: 'Edit', - description: 'Edit or run this query', - type: 'icon', - icon: 'documentEdit', - onClick: handleEditClick, - }, - ], - }, - { - align: RIGHT_ALIGNMENT, - width: '40px', - isExpander: true, - render: renderExtendedItemToggle, - }, - ], - [handleEditClick, renderExtendedItemToggle] - ); - - const onTableChange = useCallback(({ page = {}, sort = {} }) => { - setPageIndex(page.index); - setPageSize(page.size); - setSortField(sort.field); - setSortDirection(sort.direction); - }, []); - - const pagination = useMemo( - () => ({ - pageIndex, - pageSize, - totalItemCount: total, - pageSizeOptions: [3, 5, 8], - }), - [total, pageIndex, pageSize] - ); - - const sorting = useMemo( - () => ({ - sort: { - field: sortField, - direction: sortDirection, - }, - }), - [sortDirection, sortField] - ); - - const selection = useMemo( - () => ({ - selectable: () => true, - initialSelected: [], - }), - [] - ); - - return ( -
- - {'New query'} - - - {savedQueries && ( - - )} -
- ); -}; - -export const ScheduledQueriesPage = React.memo(ScheduledQueriesPageComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/active_state_switch.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/active_state_switch.tsx new file mode 100644 index 0000000000000..1e06c1efd2c61 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/active_state_switch.tsx @@ -0,0 +1,144 @@ +/* + * 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 { produce } from 'immer'; +import { EuiSwitch, EuiLoadingSpinner } from '@elastic/eui'; +import React, { useCallback, useState } from 'react'; +import { useMutation, useQueryClient } from 'react-query'; +import styled from 'styled-components'; +import { i18n } from '@kbn/i18n'; + +import { + PackagePolicy, + UpdatePackagePolicy, + packagePolicyRouteService, +} from '../../../fleet/common'; +import { useKibana } from '../common/lib/kibana'; +import { useAgentStatus } from '../agents/use_agent_status'; +import { useAgentPolicy } from '../agent_policies/use_agent_policy'; +import { ConfirmDeployAgentPolicyModal } from './form/confirmation_modal'; + +const StyledEuiLoadingSpinner = styled(EuiLoadingSpinner)` + margin-right: ${({ theme }) => theme.eui.paddingSizes.s}; +`; + +interface ActiveStateSwitchProps { + item: PackagePolicy; +} + +const ActiveStateSwitchComponent: React.FC = ({ item }) => { + const queryClient = useQueryClient(); + const { + http, + notifications: { toasts }, + application: { + capabilities: { + osquery: { save: hasSaveUICapabilities }, + }, + }, + } = useKibana().services; + const [confirmationModal, setConfirmationModal] = useState(false); + + const hideConfirmationModal = useCallback(() => setConfirmationModal(false), []); + + const { data: agentStatus } = useAgentStatus({ policyId: item.policy_id }); + const { data: agentPolicy } = useAgentPolicy({ policyId: item.policy_id }); + + const { isLoading, mutate } = useMutation( + ({ id, ...payload }: UpdatePackagePolicy & { id: string }) => + http.put(packagePolicyRouteService.getUpdatePath(id), { + body: JSON.stringify(payload), + }), + { + onSuccess: (response) => { + queryClient.invalidateQueries('scheduledQueries'); + toasts.addSuccess( + response.item.enabled + ? i18n.translate( + 'xpack.osquery.scheduledQueryGroup.table.activatedSuccessToastMessageText', + { + defaultMessage: 'Successfully activated {scheduledQueryGroupName}', + values: { + scheduledQueryGroupName: response.item.name, + }, + } + ) + : i18n.translate( + 'xpack.osquery.scheduledQueryGroup.table.deactivatedSuccessToastMessageText', + { + defaultMessage: 'Successfully deactivated {scheduledQueryGroupName}', + values: { + scheduledQueryGroupName: response.item.name, + }, + } + ) + ); + }, + } + ); + + const handleToggleActive = useCallback(() => { + const updatedPolicy = produce< + UpdatePackagePolicy & { id: string }, + Omit & + Partial<{ + revision: number; + updated_at: string; + updated_by: string; + created_at: string; + created_by: string; + }> + >(item, (draft) => { + delete draft.revision; + delete draft.updated_at; + delete draft.updated_by; + delete draft.created_at; + delete draft.created_by; + + draft.enabled = !item.enabled; + draft.inputs[0].streams.forEach((stream) => { + delete stream.compiled_stream; + }); + + return draft; + }); + + mutate(updatedPolicy); + hideConfirmationModal(); + }, [hideConfirmationModal, item, mutate]); + + const handleToggleActiveClick = useCallback(() => { + if (agentStatus?.total) { + return setConfirmationModal(true); + } + + handleToggleActive(); + }, [agentStatus?.total, handleToggleActive]); + + return ( + <> + {isLoading && } + + {confirmationModal && agentStatus?.total && ( + + )} + + ); +}; + +export const ActiveStateSwitch = React.memo(ActiveStateSwitchComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/form/add_query_flyout.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/form/add_query_flyout.tsx new file mode 100644 index 0000000000000..b2cfa05e0fc63 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/form/add_query_flyout.tsx @@ -0,0 +1,124 @@ +/* + * 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 { + EuiFlyout, + EuiTitle, + EuiSpacer, + EuiFlyoutBody, + EuiFlyoutHeader, + EuiFlyoutFooter, + EuiPortal, + EuiFlexGroup, + EuiFlexItem, + EuiButtonEmpty, + EuiButton, +} from '@elastic/eui'; +import React from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; + +import { CodeEditorField } from '../../queries/form/code_editor_field'; +import { Form, useForm, FormData, getUseField, Field, FIELD_TYPES } from '../../shared_imports'; + +const FORM_ID = 'addQueryFlyoutForm'; + +const CommonUseField = getUseField({ component: Field }); + +interface AddQueryFlyoutProps { + onSave: (payload: FormData) => Promise; + onClose: () => void; +} + +const AddQueryFlyoutComponent: React.FC = ({ onSave, onClose }) => { + const { form } = useForm({ + id: FORM_ID, + // @ts-expect-error update types + onSubmit: (payload, isValid) => { + if (isValid) { + onSave(payload); + onClose(); + } + }, + schema: { + id: { + type: FIELD_TYPES.TEXT, + label: i18n.translate('xpack.osquery.scheduledQueryGroup.queryFlyoutForm.idFieldLabel', { + defaultMessage: 'ID', + }), + }, + query: { + type: FIELD_TYPES.TEXT, + label: i18n.translate('xpack.osquery.scheduledQueryGroup.queryFlyoutForm.queryFieldLabel', { + defaultMessage: 'Query', + }), + }, + interval: { + type: FIELD_TYPES.NUMBER, + label: i18n.translate( + 'xpack.osquery.scheduledQueryGroup.queryFlyoutForm.intervalFieldLabel', + { + defaultMessage: 'Interval (s)', + } + ), + }, + }, + }); + + const { submit } = form; + + return ( + + + + +

+ +

+
+
+ +
+ + + + + { + // eslint-disable-next-line react-perf/jsx-no-new-object-as-prop + + } + +
+ + + + + + + + + + + + + + +
+
+ ); +}; + +export const AddQueryFlyout = React.memo(AddQueryFlyoutComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/form/confirmation_modal.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/form/confirmation_modal.tsx new file mode 100644 index 0000000000000..e686038430829 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/form/confirmation_modal.tsx @@ -0,0 +1,82 @@ +/* + * 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 React from 'react'; +import { EuiCallOut, EuiConfirmModal, EuiSpacer } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; + +import { AgentPolicy } from '../../../../fleet/common'; + +interface ConfirmDeployAgentPolicyModalProps { + onConfirm: () => void; + onCancel: () => void; + agentCount: number; + agentPolicy: AgentPolicy; +} + +const ConfirmDeployAgentPolicyModalComponent: React.FC = ({ + onConfirm, + onCancel, + agentCount, + agentPolicy, +}) => ( + + } + onCancel={onCancel} + onConfirm={onConfirm} + cancelButtonText={ + + } + confirmButtonText={ + + } + buttonColor="primary" + > + +
+ {agentPolicy.name}, + }} + /> +
+
+ + +
+); + +export const ConfirmDeployAgentPolicyModal = React.memo(ConfirmDeployAgentPolicyModalComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/form/edit_query_flyout.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/form/edit_query_flyout.tsx new file mode 100644 index 0000000000000..41846636eccd4 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/form/edit_query_flyout.tsx @@ -0,0 +1,136 @@ +/* + * 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 { + EuiFlyout, + EuiTitle, + EuiSpacer, + EuiFlyoutBody, + EuiFlyoutHeader, + EuiFlyoutFooter, + EuiPortal, + EuiFlexGroup, + EuiFlexItem, + EuiButtonEmpty, + EuiButton, +} from '@elastic/eui'; +import React from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; + +import { PackagePolicyInputStream } from '../../../../fleet/common'; +import { CodeEditorField } from '../../queries/form/code_editor_field'; +import { Form, useForm, getUseField, Field, FIELD_TYPES } from '../../shared_imports'; + +const FORM_ID = 'editQueryFlyoutForm'; + +const CommonUseField = getUseField({ component: Field }); + +interface EditQueryFlyoutProps { + defaultValue: PackagePolicyInputStream; + onSave: (payload: FormData) => void; + onClose: () => void; +} + +export const EditQueryFlyout: React.FC = ({ + defaultValue, + onSave, + onClose, +}) => { + const { form } = useForm({ + id: FORM_ID, + // @ts-expect-error update types + onSubmit: (payload, isValid) => { + if (isValid) { + // @ts-expect-error update types + onSave(payload); + onClose(); + } + return; + }, + defaultValue, + deserializer: (payload) => ({ + id: payload.vars.id.value, + query: payload.vars.query.value, + interval: payload.vars.interval.value, + }), + schema: { + id: { + type: FIELD_TYPES.TEXT, + label: i18n.translate('xpack.osquery.scheduledQueryGroup.queryFlyoutForm.idFieldLabel', { + defaultMessage: 'ID', + }), + }, + query: { + type: FIELD_TYPES.TEXT, + label: i18n.translate('xpack.osquery.scheduledQueryGroup.queryFlyoutForm.queryFieldLabel', { + defaultMessage: 'Query', + }), + }, + interval: { + type: FIELD_TYPES.NUMBER, + label: i18n.translate( + 'xpack.osquery.scheduledQueryGroup.queryFlyoutForm.intervalFieldLabel', + { + defaultMessage: 'Interval (s)', + } + ), + }, + }, + }); + + const { submit } = form; + + return ( + + + + +

+ +

+
+
+ +
+ + + + + { + // eslint-disable-next-line react-perf/jsx-no-new-object-as-prop + + } + +
+ + + + + + + + + + + + + + +
+
+ ); +}; diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/form/index.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/form/index.tsx new file mode 100644 index 0000000000000..68652e13bed07 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/form/index.tsx @@ -0,0 +1,339 @@ +/* + * 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 { mapKeys } from 'lodash'; +import { merge } from 'lodash/fp'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiButtonEmpty, + EuiButton, + EuiDescribedFormGroup, + EuiSpacer, + EuiAccordion, + EuiBottomBar, + EuiHorizontalRule, +} from '@elastic/eui'; +import React, { useCallback, useMemo, useState } from 'react'; +import { useMutation } from 'react-query'; +import { produce } from 'immer'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; + +import { + AgentPolicy, + PackagePolicy, + PackagePolicyPackage, + packagePolicyRouteService, +} from '../../../../fleet/common'; +import { Form, useForm, useFormData, getUseField, Field, FIELD_TYPES } from '../../shared_imports'; +import { useKibana, useRouterNavigate } from '../../common/lib/kibana'; +import { PolicyIdComboBoxField } from './policy_id_combobox_field'; +import { QueriesField } from './queries_field'; +import { ConfirmDeployAgentPolicyModal } from './confirmation_modal'; +import { useAgentPolicies } from '../../agent_policies'; + +const GhostFormField = () => <>; + +const FORM_ID = 'scheduledQueryForm'; + +const CommonUseField = getUseField({ component: Field }); + +interface ScheduledQueryGroupFormProps { + defaultValue?: PackagePolicy; + packageInfo?: PackagePolicyPackage; + editMode?: boolean; +} + +const ScheduledQueryGroupFormComponent: React.FC = ({ + defaultValue, + packageInfo, + editMode = false, +}) => { + const { + application: { navigateToApp }, + http, + notifications: { toasts }, + } = useKibana().services; + const [showConfirmationModal, setShowConfirmationModal] = useState(false); + const handleHideConfirmationModal = useCallback(() => setShowConfirmationModal(false), []); + + const { data: agentPolicies } = useAgentPolicies(); + const agentPoliciesById = mapKeys(agentPolicies, 'id'); + const agentPolicyOptions = useMemo( + () => + agentPolicies?.map((agentPolicy) => ({ + key: agentPolicy.id, + label: agentPolicy.id, + })) ?? [], + [agentPolicies] + ); + + const cancelButtonProps = useRouterNavigate( + `scheduled_query_groups/${editMode ? defaultValue?.id : ''}` + ); + + const { isLoading, mutateAsync } = useMutation( + (payload: Record) => + editMode && defaultValue?.id + ? http.put(packagePolicyRouteService.getUpdatePath(defaultValue.id), { + body: JSON.stringify(payload), + }) + : http.post(packagePolicyRouteService.getCreatePath(), { + body: JSON.stringify(payload), + }), + { + onSuccess: (data) => { + if (!editMode) { + navigateToApp('osquery', { path: `scheduled_query_groups/${data.item.id}` }); + toasts.addSuccess( + i18n.translate('xpack.osquery.scheduledQueryGroup.form.createSuccessToastMessageText', { + defaultMessage: 'Successfully scheduled {scheduledQueryGroupName}', + values: { + scheduledQueryGroupName: data.item.name, + }, + }) + ); + return; + } + + navigateToApp('osquery', { path: `scheduled_query_groups/${data.item.id}` }); + toasts.addSuccess( + i18n.translate('xpack.osquery.scheduledQueryGroup.form.updateSuccessToastMessageText', { + defaultMessage: 'Successfully updated {scheduledQueryGroupName}', + values: { + scheduledQueryGroupName: data.item.name, + }, + }) + ); + }, + onError: (error) => { + // @ts-expect-error update types + toasts.addError(error, { title: error.body.error, toastMessage: error.body.message }); + }, + } + ); + + const { form } = useForm({ + id: FORM_ID, + schema: { + name: { + type: FIELD_TYPES.TEXT, + label: i18n.translate('xpack.osquery.scheduledQueryGroup.form.nameFieldLabel', { + defaultMessage: 'Name', + }), + }, + description: { + type: FIELD_TYPES.TEXT, + label: i18n.translate('xpack.osquery.scheduledQueryGroup.form.descriptionFieldLabel', { + defaultMessage: 'Description', + }), + }, + namespace: { + type: FIELD_TYPES.COMBO_BOX, + label: i18n.translate('xpack.osquery.scheduledQueryGroup.form.namespaceFieldLabel', { + defaultMessage: 'Namespace', + }), + }, + policy_id: { + type: FIELD_TYPES.COMBO_BOX, + label: i18n.translate('xpack.osquery.scheduledQueryGroup.form.agentPolicyFieldLabel', { + defaultMessage: 'Agent policy', + }), + }, + }, + onSubmit: (payload) => { + const formData = produce(payload, (draft) => { + // @ts-expect-error update types + draft.inputs[0].streams.forEach((stream) => { + delete stream.compiled_stream; + }); + return draft; + }); + return mutateAsync(formData); + }, + options: { + stripEmptyFields: false, + }, + // @ts-expect-error update types + deserializer: (payload) => ({ + ...payload, + policy_id: payload.policy_id.length ? [payload.policy_id] : [], + namespace: [payload.namespace], + }), + serializer: (payload) => ({ + ...payload, + // @ts-expect-error update types + policy_id: payload.policy_id[0], + // @ts-expect-error update types + namespace: payload.namespace[0], + }), + defaultValue: merge( + { + name: '', + description: '', + enabled: true, + policy_id: [], + namespace: 'default', + output_id: '', + package: packageInfo, + inputs: [ + { + type: 'osquery', + enabled: true, + streams: [], + }, + ], + }, + defaultValue ?? {} + ), + }); + + const { submit } = form; + + const policyIdEuiFieldProps = useMemo( + () => ({ isDisabled: !!defaultValue, options: agentPolicyOptions }), + [defaultValue, agentPolicyOptions] + ); + + const [{ policy_id: policyId }] = useFormData({ form, watch: ['policy_id'] }); + + const currentPolicy = useMemo(() => { + if (!policyId) { + return { + agentCount: 0, + agentPolicy: {} as AgentPolicy, + }; + } + + const currentAgentPolicy = agentPoliciesById[policyId[0]]; + return { + agentCount: currentAgentPolicy?.agents ?? 0, + agentPolicy: currentAgentPolicy, + }; + }, [agentPoliciesById, policyId]); + + const handleSaveClick = useCallback(() => { + if (currentPolicy.agentCount) { + setShowConfirmationModal(true); + return; + } + + submit(); + }, [currentPolicy.agentCount, submit]); + + const handleConfirmConfirmationClick = useCallback(() => { + submit(); + setShowConfirmationModal(false); + }, [submit]); + + return ( + <> +
+ + + + } + fullWidth + description={ + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {showConfirmationModal && ( + + )} + + ); +}; + +export const ScheduledQueryGroupForm = React.memo(ScheduledQueryGroupFormComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/form/pack_uploader.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/form/pack_uploader.tsx new file mode 100644 index 0000000000000..f8c6f8ca263e2 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/form/pack_uploader.tsx @@ -0,0 +1,142 @@ +/* + * 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 { mapKeys, kebabCase } from 'lodash'; +import { EuiLink, EuiFormRow, EuiFilePicker, EuiSpacer } from '@elastic/eui'; +import React, { useCallback, useState, useRef } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; + +const SUPPORTED_PACK_EXTENSIONS = ['application/json', 'text/plain']; + +const ExamplePackLink = React.memo(() => ( + + + +)); + +ExamplePackLink.displayName = 'ExamplePackLink'; + +interface OsqueryPackUploaderProps { + onChange: (payload: Record) => void; +} + +const OsqueryPackUploaderComponent: React.FC = ({ onChange }) => { + const packName = useRef(''); + const filePickerRef = useRef(null); + const [isInvalid, setIsInvalid] = useState(null); + // @ts-expect-error update types + let fileReader; + + const handleFileRead = () => { + // @ts-expect-error update types + const content = fileReader.result; + + let parsedContent; + + try { + parsedContent = JSON.parse(content.replaceAll('\\\n', ''), (key, value) => { + if (key === 'query') { + // remove any multiple spaces from the query + return value.replaceAll(/\s(?=\s)/gm, ''); + } + return value; + }); + + setIsInvalid(null); + } catch (error) { + setIsInvalid(error); + // @ts-expect-error update types + filePickerRef.current?.removeFiles(new Event('fake')); + } + + if (!parsedContent?.queries) { + return; + } + + const queriesJSON = mapKeys( + parsedContent?.queries, + (value, key) => `pack_${packName.current}_${key}` + ); + + onChange(queriesJSON); + // @ts-expect-error update types + filePickerRef.current?.removeFiles(new Event('fake')); + }; + + // @ts-expect-error update types + // eslint-disable-next-line react-hooks/exhaustive-deps + const handleFileChosen = (file) => { + fileReader = new FileReader(); + fileReader.onloadend = handleFileRead; + fileReader.readAsText(file); + }; + + const handleInputChange = useCallback( + (inputFiles) => { + if (!inputFiles.length) { + packName.current = ''; + return; + } + + if ( + inputFiles.length && + ((!!inputFiles[0].type.length && !SUPPORTED_PACK_EXTENSIONS.includes(inputFiles[0].type)) || + !inputFiles[0].name.endsWith('.conf')) + ) { + packName.current = ''; + setIsInvalid( + i18n.translate('xpack.osquery.packUploader.unsupportedFileTypeText', { + defaultMessage: + 'File type {fileType} is not supported, please upload {supportedFileTypes} config file', + values: { + fileType: inputFiles[0].type, + supportedFileTypes: SUPPORTED_PACK_EXTENSIONS.join(' or '), + }, + }) + ); + // @ts-expect-error update types + filePickerRef.current?.removeFiles(new Event('fake')); + return; + } + + packName.current = kebabCase(inputFiles[0].name.split('.')[0]); + handleFileChosen(inputFiles[0]); + }, + [handleFileChosen] + ); + + return ( + <> + + } + isInvalid={!!isInvalid} + error={<>{`${isInvalid}`}} + > + + + + ); +}; + +export const OsqueryPackUploader = React.memo(OsqueryPackUploaderComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/form/policy_id_combobox_field.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/form/policy_id_combobox_field.tsx new file mode 100644 index 0000000000000..75bb95b198f54 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/form/policy_id_combobox_field.tsx @@ -0,0 +1,121 @@ +/* + * 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 { FormattedMessage } from '@kbn/i18n/react'; +import { EuiFlexGroup, EuiFlexItem, EuiTextColor, EuiComboBoxOptionOption } from '@elastic/eui'; +import React, { useCallback, useMemo } from 'react'; +import styled from 'styled-components'; + +import { GetAgentPoliciesResponseItem } from '../../../../fleet/common'; +import { ComboBoxField, FieldHook } from '../../shared_imports'; + +// Custom styling for drop down list items due to: +// 1) the max-width and overflow properties is added to prevent long agent policy +// names/descriptions from overflowing the flex items +// 2) max-width is built from the grow property on the flex items because the value +// changes based on if Fleet is enabled/setup or not +const AgentPolicyNameColumn = styled(EuiFlexItem)` + max-width: ${(props) => `${((props.grow as number) / 9) * 100}%`}; + overflow: hidden; +`; +const AgentPolicyDescriptionColumn = styled(EuiFlexItem)` + max-width: ${(props) => `${((props.grow as number) / 9) * 100}%`}; + overflow: hidden; +`; + +type ComboBoxFieldProps = Parameters[0]; + +type PolicyIdComboBoxFieldProps = Pick & { + field: FieldHook; + agentPoliciesById: Record; +}; + +const PolicyIdComboBoxFieldComponent: React.FC = ({ + euiFieldProps, + field, + agentPoliciesById, +}) => { + const { value } = field; + + const renderOption = useCallback( + (option: EuiComboBoxOptionOption) => ( + + + + {(option.key && agentPoliciesById[option.key]?.name) ?? option.label} + + + + + {(option.key && agentPoliciesById[option.key].description) ?? ''} + + + + + + + + + ), + [agentPoliciesById] + ); + + const selectedOptions = useMemo(() => { + if (!value?.length || !value[0].length) return []; + + return value.map((policyId) => ({ + label: agentPoliciesById[policyId]?.name ?? policyId, + })); + }, [agentPoliciesById, value]); + + const helpText = useMemo(() => { + if (!value?.length || !value[0].length || !agentPoliciesById || !agentPoliciesById[value[0]]) + return; + + return ( + + ); + }, [agentPoliciesById, value]); + + const mergedEuiFieldProps = useMemo( + () => ({ + onCreateOption: null, + singleSelection: { asPlainText: true }, + noSuggestions: false, + isClearable: false, + selectedOptions, + renderOption, + ...euiFieldProps, + }), + [euiFieldProps, renderOption, selectedOptions] + ); + + return ( + + ); +}; + +export const PolicyIdComboBoxField = React.memo(PolicyIdComboBoxFieldComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx new file mode 100644 index 0000000000000..2074c38e20fe9 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx @@ -0,0 +1,190 @@ +/* + * 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 { findIndex, forEach, pullAt } from 'lodash'; +import { EuiFlexGroup, EuiFlexItem, EuiButton, EuiSpacer } from '@elastic/eui'; +import { produce } from 'immer'; +import React, { useCallback, useState } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; + +import { PackagePolicyInput, PackagePolicyInputStream } from '../../../../fleet/common'; +import { OSQUERY_INTEGRATION_NAME } from '../../../common'; +import { FieldHook } from '../../shared_imports'; +import { ScheduledQueryGroupQueriesTable } from '../scheduled_query_group_queries_table'; +import { AddQueryFlyout } from './add_query_flyout'; +import { EditQueryFlyout } from './edit_query_flyout'; +import { OsqueryPackUploader } from './pack_uploader'; + +interface QueriesFieldProps { + field: FieldHook; + scheduledQueryGroupId: string; +} + +interface GetNewStreamProps { + id: string; + interval: string; + query: string; + scheduledQueryGroupId?: string; +} + +const getNewStream = ({ id, interval, query, scheduledQueryGroupId }: GetNewStreamProps) => ({ + data_stream: { type: 'logs', dataset: `${OSQUERY_INTEGRATION_NAME}.result` }, + enabled: true, + id: scheduledQueryGroupId + ? `osquery-${OSQUERY_INTEGRATION_NAME}.result-${scheduledQueryGroupId}` + : null, + vars: { + id: { type: 'text', value: id }, + type: 'integer', + interval: { + value: interval, + }, + query: { type: 'text', value: query }, + }, +}); + +const QueriesFieldComponent: React.FC = ({ field, scheduledQueryGroupId }) => { + const [showAddQueryFlyout, setShowAddQueryFlyout] = useState(false); + const [showEditQueryFlyout, setShowEditQueryFlyout] = useState(-1); + + const handleShowAddFlyout = useCallback(() => setShowAddQueryFlyout(true), []); + const handleHideAddFlyout = useCallback(() => setShowAddQueryFlyout(false), []); + const handleHideEditFlyout = useCallback(() => setShowEditQueryFlyout(-1), []); + + const { setValue } = field; + + const handleDeleteClick = useCallback( + (stream: PackagePolicyInputStream) => { + const streamIndex = findIndex(field.value[0].streams, [ + 'vars.id.value', + stream.vars?.id.value, + ]); + + if (streamIndex > -1) { + setValue( + produce((draft) => { + pullAt(draft[0].streams, [streamIndex]); + + return draft; + }) + ); + } + }, + [field.value, setValue] + ); + + const handleEditClick = useCallback( + (stream: PackagePolicyInputStream) => { + const streamIndex = findIndex(field.value[0].streams, [ + 'vars.id.value', + stream.vars?.id.value, + ]); + + setShowEditQueryFlyout(streamIndex); + }, + [field.value] + ); + + const handleEditQuery = useCallback( + (updatedQuery) => { + if (showEditQueryFlyout >= 0) { + setValue( + produce((draft) => { + draft[0].streams[showEditQueryFlyout].vars.id.value = updatedQuery.id; + draft[0].streams[showEditQueryFlyout].vars.interval.value = updatedQuery.interval; + draft[0].streams[showEditQueryFlyout].vars.query.value = updatedQuery.query; + + return draft; + }) + ); + } + + handleHideEditFlyout(); + }, + [handleHideEditFlyout, setValue, showEditQueryFlyout] + ); + + const handleAddQuery = useCallback( + (newQuery) => { + setValue( + produce((draft) => { + draft[0].streams.push( + getNewStream({ + ...newQuery, + scheduledQueryGroupId, + }) + ); + return draft; + }) + ); + handleHideAddFlyout(); + }, + [handleHideAddFlyout, scheduledQueryGroupId, setValue] + ); + + const handlePackUpload = useCallback( + (newQueries) => { + setValue( + produce((draft) => { + forEach(newQueries, (newQuery, newQueryId) => { + draft[0].streams.push( + getNewStream({ + id: newQueryId, + interval: newQuery.interval, + query: newQuery.query, + scheduledQueryGroupId, + }) + ); + }); + + return draft; + }) + ); + }, + [scheduledQueryGroupId, setValue] + ); + + return ( + <> + + + + + + + + + {field.value && field.value[0].streams?.length ? ( + + ) : null} + + {} + {showAddQueryFlyout && ( + // @ts-expect-error update types + + )} + {showEditQueryFlyout != null && showEditQueryFlyout >= 0 && ( + + )} + + ); +}; + +export const QueriesField = React.memo(QueriesFieldComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/index.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/index.tsx new file mode 100644 index 0000000000000..f97127a946558 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/index.tsx @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export * from './scheduled_query_groups_table'; diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_table.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_table.tsx new file mode 100644 index 0000000000000..d501f56b789d7 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_group_queries_table.tsx @@ -0,0 +1,214 @@ +/* + * 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 React, { useCallback, useEffect, useState, useMemo } from 'react'; +import { EuiInMemoryTable, EuiCodeBlock, EuiButtonIcon } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { PackagePolicy, PackagePolicyInputStream } from '../../../fleet/common'; +import { FilterStateStore } from '../../../../../src/plugins/data/common'; +import { useKibana } from '../common/lib/kibana'; + +interface ViewResultsInDiscoverActionProps { + item: PackagePolicyInputStream; +} + +const ViewResultsInDiscoverAction: React.FC = ({ item }) => { + const urlGenerator = useKibana().services.discover?.urlGenerator; + const [discoverUrl, setDiscoverUrl] = useState(''); + + useEffect(() => { + const getDiscoverUrl = async () => { + if (!urlGenerator?.createUrl) return; + + const newUrl = await urlGenerator.createUrl({ + indexPatternId: 'logs-*', + filters: [ + { + meta: { + index: 'logs-*', + alias: null, + negate: false, + disabled: false, + type: 'phrase', + key: 'action_id', + params: { query: item.vars?.id.value }, + }, + query: { match_phrase: { action_id: item.vars?.id.value } }, + $state: { store: FilterStateStore.APP_STATE }, + }, + ], + }); + setDiscoverUrl(newUrl); + }; + getDiscoverUrl(); + }, [item.vars?.id.value, urlGenerator]); + + return ( + + ); +}; + +interface ScheduledQueryGroupQueriesTableProps { + data: Pick; + editMode?: boolean; + onDeleteClick?: (item: PackagePolicyInputStream) => void; + onEditClick?: (item: PackagePolicyInputStream) => void; +} + +const ScheduledQueryGroupQueriesTableComponent: React.FC = ({ + data, + editMode = false, + onDeleteClick, + onEditClick, +}) => { + const renderDeleteAction = useCallback( + (item: PackagePolicyInputStream) => ( + onDeleteClick(item)} + iconType="trash" + aria-label={i18n.translate( + 'xpack.osquery.scheduledQueryGroup.queriesTable.deleteActionAriaLabel', + { + defaultMessage: 'Delete {queryName}', + values: { + queryName: item.vars?.id.value, + }, + } + )} + /> + ), + [onDeleteClick] + ); + + const renderEditAction = useCallback( + (item: PackagePolicyInputStream) => ( + onEditClick(item)} + iconType="pencil" + aria-label={i18n.translate( + 'xpack.osquery.scheduledQueryGroup.queriesTable.editActionAriaLabel', + { + defaultMessage: 'Edit {queryName}', + values: { + queryName: item.vars?.id.value, + }, + } + )} + /> + ), + [onEditClick] + ); + + const renderQueryColumn = useCallback( + (query: string) => ( + + {query} + + ), + [] + ); + + const renderDiscoverResultsAction = useCallback( + (item) => , + [] + ); + + const columns = useMemo( + () => [ + { + field: 'vars.id.value', + name: i18n.translate('xpack.osquery.scheduledQueryGroup.queriesTable.idColumnTitle', { + defaultMessage: 'ID', + }), + width: '20%', + }, + { + field: 'vars.interval.value', + name: i18n.translate('xpack.osquery.scheduledQueryGroup.queriesTable.intervalColumnTitle', { + defaultMessage: 'Interval', + }), + width: '100px', + }, + { + field: 'vars.query.value', + name: i18n.translate('xpack.osquery.scheduledQueryGroup.queriesTable.queryColumnTitle', { + defaultMessage: 'Query', + }), + render: renderQueryColumn, + }, + { + name: editMode + ? i18n.translate('xpack.osquery.scheduledQueryGroup.queriesTable.actionsColumnTitle', { + defaultMessage: 'Actions', + }) + : i18n.translate( + 'xpack.osquery.scheduledQueryGroup.queriesTable.viewResultsColumnTitle', + { + defaultMessage: 'View results', + } + ), + width: '120px', + actions: editMode + ? [ + { + render: renderEditAction, + }, + { + render: renderDeleteAction, + }, + ] + : [ + { + render: renderDiscoverResultsAction, + }, + ], + }, + ], + [editMode, renderDeleteAction, renderDiscoverResultsAction, renderEditAction, renderQueryColumn] + ); + + const sorting = useMemo( + () => ({ + sort: { + field: 'vars.id.value', + direction: 'asc' as const, + }, + }), + [] + ); + + return ( + + items={data.inputs[0].streams} + itemId="vars.id.value" + isExpandable={true} + columns={columns} + sorting={sorting} + /> + ); +}; + +export const ScheduledQueryGroupQueriesTable = React.memo(ScheduledQueryGroupQueriesTableComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_groups_table.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_groups_table.tsx new file mode 100644 index 0000000000000..7b5f91157132e --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/scheduled_query_groups_table.tsx @@ -0,0 +1,104 @@ +/* + * 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 { EuiInMemoryTable, EuiBasicTableColumn, EuiLink } from '@elastic/eui'; +import React, { useCallback, useMemo } from 'react'; + +import { i18n } from '@kbn/i18n'; +import { PackagePolicy } from '../../../fleet/common'; +import { useRouterNavigate } from '../common/lib/kibana'; +import { useScheduledQueryGroups } from './use_scheduled_query_groups'; +import { ActiveStateSwitch } from './active_state_switch'; +import { AgentsPolicyLink } from '../agent_policies/agents_policy_link'; + +const ScheduledQueryNameComponent = ({ id, name }: { id: string; name: string }) => ( + {name} +); + +const ScheduledQueryName = React.memo(ScheduledQueryNameComponent); + +const renderName = (_: unknown, item: PackagePolicy) => ( + +); + +const ScheduledQueryGroupsTableComponent = () => { + const { data } = useScheduledQueryGroups(); + + const renderAgentPolicy = useCallback((policyId) => , []); + + const renderQueries = useCallback( + (streams: PackagePolicy['inputs'][0]['streams']) => <>{streams.length}, + [] + ); + + const renderActive = useCallback((_, item) => , []); + + const columns: Array> = useMemo( + () => [ + { + field: 'name', + name: i18n.translate('xpack.osquery.scheduledQueryGroups.table.nameColumnTitle', { + defaultMessage: 'Name', + }), + sortable: true, + render: renderName, + }, + { + field: 'policy_id', + name: i18n.translate('xpack.osquery.scheduledQueryGroups.table.policyColumnTitle', { + defaultMessage: 'Policy', + }), + truncateText: true, + render: renderAgentPolicy, + }, + { + field: 'inputs[0].streams', + name: i18n.translate( + 'xpack.osquery.scheduledQueryGroups.table.numberOfQueriesColumnTitle', + { + defaultMessage: 'Number of queries', + } + ), + render: renderQueries, + width: '150px', + }, + { + field: 'enabled', + name: i18n.translate('xpack.osquery.scheduledQueryGroups.table.activeColumnTitle', { + defaultMessage: 'Active', + }), + sortable: true, + align: 'right', + width: '80px', + render: renderActive, + }, + ], + [renderActive, renderAgentPolicy, renderQueries] + ); + + const sorting = useMemo( + () => ({ + sort: { + field: 'name', + direction: 'asc' as const, + }, + }), + [] + ); + + return ( + + // eslint-disable-next-line react-perf/jsx-no-new-array-as-prop + items={data?.items ?? []} + columns={columns} + pagination={true} + sorting={sorting} + /> + ); +}; + +export const ScheduledQueryGroupsTable = React.memo(ScheduledQueryGroupsTableComponent); diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group.ts b/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group.ts new file mode 100644 index 0000000000000..e0f892d0302c0 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_group.ts @@ -0,0 +1,37 @@ +/* + * 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 { useQuery } from 'react-query'; + +import { useKibana } from '../common/lib/kibana'; +import { + GetOnePackagePolicyResponse, + PackagePolicy, + packagePolicyRouteService, +} from '../../../fleet/common'; + +interface UseScheduledQueryGroup { + scheduledQueryGroupId: string; + skip?: boolean; +} + +export const useScheduledQueryGroup = ({ + scheduledQueryGroupId, + skip = false, +}: UseScheduledQueryGroup) => { + const { http } = useKibana().services; + + return useQuery( + ['scheduledQueryGroup', { scheduledQueryGroupId }], + () => http.get(packagePolicyRouteService.getInfoPath(scheduledQueryGroupId)), + { + keepPreviousData: true, + enabled: !skip, + select: (response) => response.item, + } + ); +}; diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_groups.ts b/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_groups.ts new file mode 100644 index 0000000000000..3302d8e621eb7 --- /dev/null +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/use_scheduled_query_groups.ts @@ -0,0 +1,46 @@ +/* + * 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 { produce } from 'immer'; +import { useQuery } from 'react-query'; + +import { useKibana } from '../common/lib/kibana'; +import { + ListResult, + PackagePolicy, + packagePolicyRouteService, + PACKAGE_POLICY_SAVED_OBJECT_TYPE, +} from '../../../fleet/common'; +import { OSQUERY_INTEGRATION_NAME } from '../../common'; + +export const useScheduledQueryGroups = () => { + const { http } = useKibana().services; + + return useQuery>( + ['scheduledQueries'], + () => + http.get(packagePolicyRouteService.getListPath(), { + query: { + page: 1, + perPage: 10000, + kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name: ${OSQUERY_INTEGRATION_NAME}`, + }, + }), + { + keepPreviousData: true, + select: produce((draft: ListResult) => { + draft.items = draft.items.filter( + (item) => + !( + item.inputs[0].streams.length === 1 && + !item.inputs[0].streams[0].compiled_stream.query + ) + ); + }), + } + ); +}; diff --git a/x-pack/plugins/osquery/public/shared_imports.ts b/x-pack/plugins/osquery/public/shared_imports.ts index 42e82b25d1b8f..bae73da78f704 100644 --- a/x-pack/plugins/osquery/public/shared_imports.ts +++ b/x-pack/plugins/osquery/public/shared_imports.ts @@ -28,6 +28,7 @@ export { } from '../../../../src/plugins/es_ui_shared/static/forms/hook_form_lib'; export { Field, + ComboBoxField, ToggleField, SelectField, } from '../../../../src/plugins/es_ui_shared/static/forms/components'; diff --git a/x-pack/plugins/osquery/public/types.ts b/x-pack/plugins/osquery/public/types.ts index 02b5fc9c7a5d6..f1dbec045dacc 100644 --- a/x-pack/plugins/osquery/public/types.ts +++ b/x-pack/plugins/osquery/public/types.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { DiscoverStart } from '../../../../src/plugins/discover/public'; import { DataPublicPluginStart } from '../../../../src/plugins/data/public'; import { FleetStart } from '../../fleet/public'; import { CoreStart } from '../../../../src/core/public'; @@ -24,8 +25,9 @@ export interface AppPluginStartDependencies { } export interface StartPlugins { + discover: DiscoverStart; data: DataPublicPluginStart; - fleet?: FleetStart; + fleet: FleetStart; triggersActionsUi: TriggersAndActionsUIPublicPluginStart; } diff --git a/x-pack/plugins/osquery/server/config.ts b/x-pack/plugins/osquery/server/config.ts index 31be256611803..58b9a8bf910c2 100644 --- a/x-pack/plugins/osquery/server/config.ts +++ b/x-pack/plugins/osquery/server/config.ts @@ -9,6 +9,9 @@ import { TypeOf, schema } from '@kbn/config-schema'; export const ConfigSchema = schema.object({ enabled: schema.boolean({ defaultValue: false }), + actionEnabled: schema.boolean({ defaultValue: false }), + savedQueries: schema.boolean({ defaultValue: false }), + packs: schema.boolean({ defaultValue: false }), }); export type ConfigType = TypeOf; diff --git a/x-pack/plugins/osquery/server/index.ts b/x-pack/plugins/osquery/server/index.ts index f19d47cbeffb3..30bc5ed5bd835 100644 --- a/x-pack/plugins/osquery/server/index.ts +++ b/x-pack/plugins/osquery/server/index.ts @@ -13,6 +13,9 @@ export const config = { schema: ConfigSchema, exposeToBrowser: { enabled: true, + actionEnabled: true, + savedQueries: true, + packs: true, }, }; export function plugin(initializerContext: PluginInitializerContext) { diff --git a/x-pack/plugins/osquery/server/lib/osquery_app_context_services.ts b/x-pack/plugins/osquery/server/lib/osquery_app_context_services.ts index ffe2a772ecb7f..5b1f8e780494d 100644 --- a/x-pack/plugins/osquery/server/lib/osquery_app_context_services.ts +++ b/x-pack/plugins/osquery/server/lib/osquery_app_context_services.ts @@ -68,7 +68,7 @@ export class OsqueryAppContextService { */ export interface OsqueryAppContext { logFactory: LoggerFactory; - config(): Promise; + config(): ConfigType; /** * Object readiness is tied to plugin start method diff --git a/x-pack/plugins/osquery/server/plugin.ts b/x-pack/plugins/osquery/server/plugin.ts index ce6e8d51d9b52..2a6e4dc5b1f48 100644 --- a/x-pack/plugins/osquery/server/plugin.ts +++ b/x-pack/plugins/osquery/server/plugin.ts @@ -5,9 +5,9 @@ * 2.0. */ -// import { curry } from 'lodash'; -// import { ActionTypeExecutorResult } from '../../actions/server/types'; +import { i18n } from '@kbn/i18n'; import { + DEFAULT_APP_CATEGORIES, PluginInitializerContext, CoreSetup, CoreStart, @@ -19,7 +19,7 @@ import { createConfig } from './create_config'; import { OsqueryPluginSetup, OsqueryPluginStart, SetupPlugins, StartPlugins } from './types'; import { defineRoutes } from './routes'; import { osquerySearchStrategyProvider } from './search_strategy/osquery'; -// import { initSavedObjects } from './saved_objects'; +import { initSavedObjects } from './saved_objects'; import { OsqueryAppContext, OsqueryAppContextService } from './lib/osquery_app_context_services'; import { ConfigType } from './config'; @@ -46,18 +46,45 @@ export class OsqueryPlugin implements Plugin => Promise.resolve(config), + config: (): ConfigType => config, }; - // initSavedObjects(core.savedObjects); - defineRoutes(router, osqueryContext); + plugins.features.registerKibanaFeature({ + id: 'osquery', + name: i18n.translate('xpack.osquery.featureRegistry.osqueryFeatureName', { + defaultMessage: 'Osquery', + }), + order: 4000, + category: DEFAULT_APP_CATEGORIES.management, + app: ['osquery', 'kibana'], + catalogue: ['osquery'], + // see x-pack/plugins/features/common/feature_kibana_privileges.ts + privileges: { + all: { + app: ['osquery', 'kibana'], + api: ['osquery', 'osquery_write'], + catalogue: ['osquery'], + savedObject: { + all: [], + read: [], + }, + ui: ['show', 'save'], + }, + read: { + app: ['osquery', 'kibana'], + api: ['osquery'], + catalogue: ['osquery'], + savedObject: { + all: [], + read: [], + }, + ui: ['show'], + }, + }, + }); - // plugins.actions.registerType({ - // id: '.osquery', - // name: 'Osquery', - // minimumLicenseRequired: 'gold', - // executor: curry(executor)({}), - // }); + initSavedObjects(core.savedObjects, osqueryContext); + defineRoutes(router, osqueryContext); core.getStartServices().then(([, depsStart]) => { const osquerySearchStrategy = osquerySearchStrategyProvider(depsStart.data); @@ -89,7 +116,3 @@ export class OsqueryPlugin implements Plugin> { -// return { status: 'ok', data: {}, actionId: execOptions.actionId }; -// } diff --git a/x-pack/plugins/osquery/server/routes/action/create_action_route.ts b/x-pack/plugins/osquery/server/routes/action/create_action_route.ts index 7068243cc0fb7..8e741c6a9e3ca 100644 --- a/x-pack/plugins/osquery/server/routes/action/create_action_route.ts +++ b/x-pack/plugins/osquery/server/routes/action/create_action_route.ts @@ -5,13 +5,11 @@ * 2.0. */ -import { find } from 'lodash/fp'; import uuid from 'uuid'; -import { schema } from '@kbn/config-schema'; import moment from 'moment'; +import { schema } from '@kbn/config-schema'; import { IRouter } from '../../../../../../src/core/server'; -import { packSavedObjectType, savedQuerySavedObjectType } from '../../../common/types'; import { OsqueryAppContext } from '../../lib/osquery_app_context_services'; import { parseAgentSelection, AgentSelection } from '../../lib/parse_agent_groups'; @@ -24,86 +22,19 @@ export const createActionRoute = (router: IRouter, osqueryContext: OsqueryAppCon params: schema.object({}, { unknowns: 'allow' }), body: schema.object({}, { unknowns: 'allow' }), }, + options: { + tags: ['access:osquery', 'access:osquery_write'], + }, }, async (context, request, response) => { - const esClient = context.core.elasticsearch.client.asInternalUser; + const esClient = context.core.elasticsearch.client.asCurrentUser; const { agentSelection } = request.body as { agentSelection: AgentSelection }; const selectedAgents = await parseAgentSelection(esClient, osqueryContext, agentSelection); - // @ts-expect-error update validation - if (request.body.pack_id) { - const savedObjectsClient = context.core.savedObjects.client; - const { attributes, references, ...rest } = await savedObjectsClient.get<{ - title: string; - description: string; - queries: Array<{ name: string; interval: string }>; - }>( - packSavedObjectType, - // @ts-expect-error update types - request.body.pack_id - ); - - const pack = { - ...rest, - ...attributes, - queries: - attributes.queries?.map((packQuery) => { - const queryReference = find(['name', packQuery.name], references); - - if (queryReference) { - return { - ...packQuery, - id: queryReference?.id, - }; - } - - return packQuery; - }) ?? [], - }; - - const { saved_objects: queriesSavedObjects } = await savedObjectsClient.bulkGet( - pack.queries.map((packQuery) => ({ - // @ts-expect-error update validation - id: packQuery.id, - type: savedQuerySavedObjectType, - })) - ); - - const actionId = uuid.v4(); - - const actions = queriesSavedObjects.map((query) => ({ - action_id: actionId, - '@timestamp': moment().toISOString(), - expiration: moment().add(2, 'days').toISOString(), - type: 'INPUT_ACTION', - input_type: 'osquery', - agents: selectedAgents, - data: { - id: query.id, - // @ts-expect-error update validation - query: query.attributes.query, - }, - })); - - const query = await esClient.bulk<{}>({ - index: '.fleet-actions', - // @ts-expect-error update validation - body: actions.reduce((acc, action) => { - return [...acc, { create: { _index: '.fleet-actions' } }, action]; - }, []), - }); - - return response.ok({ - body: { - actions, - query, - }, - }); - } const action = { action_id: uuid.v4(), '@timestamp': moment().toISOString(), - expiration: moment().add(2, 'days').toISOString(), + expiration: moment().add(1, 'days').toISOString(), type: 'INPUT_ACTION', input_type: 'osquery', agents: selectedAgents, @@ -114,15 +45,15 @@ export const createActionRoute = (router: IRouter, osqueryContext: OsqueryAppCon query: request.body.query.query, }, }; - const query = await esClient.index<{}, {}>({ + const actionResponse = await esClient.index<{}, {}>({ index: '.fleet-actions', body: action, }); return response.ok({ body: { - response: query, - action, + response: actionResponse, + actions: [action], }, }); } diff --git a/x-pack/plugins/osquery/server/routes/index.ts b/x-pack/plugins/osquery/server/routes/index.ts index 59d4085a77be1..7eee5b94fd84d 100644 --- a/x-pack/plugins/osquery/server/routes/index.ts +++ b/x-pack/plugins/osquery/server/routes/index.ts @@ -6,15 +6,21 @@ */ import { IRouter } from '../../../../../src/core/server'; -import { initSavedQueryRoutes } from './saved_query'; -import { initScheduledQueryRoutes } from './scheduled_query'; import { initActionRoutes } from './action'; import { OsqueryAppContext } from '../lib/osquery_app_context_services'; +import { initSavedQueryRoutes } from './saved_query'; import { initPackRoutes } from './pack'; export const defineRoutes = (router: IRouter, context: OsqueryAppContext) => { + const config = context.config(); + initActionRoutes(router, context); - initPackRoutes(router); - initSavedQueryRoutes(router); - initScheduledQueryRoutes(router, context); + + if (config.packs) { + initPackRoutes(router); + } + + if (config.savedQueries) { + initSavedQueryRoutes(router); + } }; diff --git a/x-pack/plugins/osquery/server/routes/scheduled_query/find_scheduled_query_route.ts b/x-pack/plugins/osquery/server/routes/scheduled_query/find_scheduled_query_route.ts index b9058a2868763..43d5f3fc893f0 100644 --- a/x-pack/plugins/osquery/server/routes/scheduled_query/find_scheduled_query_route.ts +++ b/x-pack/plugins/osquery/server/routes/scheduled_query/find_scheduled_query_route.ts @@ -6,8 +6,10 @@ */ import { schema } from '@kbn/config-schema'; +import { OSQUERY_INTEGRATION_NAME } from '../../../common'; import { IRouter } from '../../../../../../src/core/server'; +import { PACKAGE_POLICY_SAVED_OBJECT_TYPE } from '../../../../fleet/common'; import { OsqueryAppContext } from '../../lib/osquery_app_context_services'; export const findScheduledQueryRoute = (router: IRouter, osqueryContext: OsqueryAppContext) => { @@ -19,7 +21,7 @@ export const findScheduledQueryRoute = (router: IRouter, osqueryContext: Osquery }, }, async (context, request, response) => { - const kuery = 'ingest-package-policies.attributes.package.name: osquery_elastic_managed'; + const kuery = `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.attributes.package.name: ${OSQUERY_INTEGRATION_NAME}`; const packagePolicyService = osqueryContext.service.getPackagePolicyService(); const policies = await packagePolicyService?.list(context.core.savedObjects.client, { kuery, diff --git a/x-pack/plugins/osquery/server/saved_objects.ts b/x-pack/plugins/osquery/server/saved_objects.ts index 15a0f8e2be0da..c6be1098cedb2 100644 --- a/x-pack/plugins/osquery/server/saved_objects.ts +++ b/x-pack/plugins/osquery/server/saved_objects.ts @@ -7,12 +7,24 @@ import { CoreSetup } from '../../../../src/core/server'; +import { OsqueryAppContext } from './lib/osquery_app_context_services'; import { savedQueryType, packType } from './lib/saved_query/saved_object_mappings'; const types = [savedQueryType, packType]; export const savedObjectTypes = types.map((type) => type.name); -export const initSavedObjects = (savedObjects: CoreSetup['savedObjects']) => { - types.forEach((type) => savedObjects.registerType(type)); +export const initSavedObjects = ( + savedObjects: CoreSetup['savedObjects'], + osqueryContext: OsqueryAppContext +) => { + const config = osqueryContext.config(); + + if (config.savedQueries) { + savedObjects.registerType(savedQueryType); + } + + if (config.packs) { + savedObjects.registerType(packType); + } }; diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts b/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts index 75e6201545a8e..e8a8fbd63a84d 100644 --- a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts +++ b/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts @@ -12,8 +12,8 @@ import { createQueryFilterClauses } from '../../../../../../common/utils/build_q export const buildActionResultsQuery = ({ actionId, filterQuery, + // pagination: { activePage, querySize }, sort, - pagination: { activePage, querySize }, }: ActionResultsRequestOptions): ISearchRequestParams => { const filter = [ ...createQueryFilterClauses(filterQuery), @@ -30,18 +30,39 @@ export const buildActionResultsQuery = ({ ignoreUnavailable: true, body: { aggs: { - responses: { - terms: { - script: { - lang: 'painless', - source: "if (doc['error'].size()==0) { return 'success' } else { return 'error' }", + aggs: { + global: {}, + aggs: { + responses_by_action_id: { + filter: { + bool: { + must: [ + { + match: { + action_id: actionId, + }, + }, + ], + }, + }, + aggs: { + responses: { + terms: { + script: { + lang: 'painless', + source: + "if (doc['error.keyword'].size()==0) { return 'success' } else { return 'error' }", + }, + }, + }, + }, }, }, }, }, query: { bool: { filter } }, - from: activePage * querySize, - size: querySize, + // from: activePage * querySize, + size: 10000, // querySize, track_total_hits: true, fields: ['*'], sort: [ diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts b/x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts index 04ba05532cd0d..ac36f4b31e5fc 100644 --- a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts +++ b/x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { OSQUERY_INTEGRATION_NAME } from '../../../../../common'; import { ISearchRequestParams } from '../../../../../../../../src/plugins/data/common'; import { ResultsRequestOptions } from '../../../../../common/search_strategy'; import { createQueryFilterClauses } from '../../../../../common/utils/build_query'; @@ -13,7 +14,7 @@ export const buildResultsQuery = ({ actionId, agentId, filterQuery, - // sort, + sort, pagination: { activePage, querySize }, }: ResultsRequestOptions): ISearchRequestParams => { const filter = [ @@ -36,21 +37,29 @@ export const buildResultsQuery = ({ const dslQuery = { allowNoIndices: true, - index: 'logs-elastic_agent.osquery*', + index: `logs-${OSQUERY_INTEGRATION_NAME}.result*`, ignoreUnavailable: true, body: { + aggs: { + count_by_agent_id: { + terms: { + field: 'agent.id', + size: 10000, + }, + }, + }, query: { bool: { filter } }, from: activePage * querySize, size: querySize, track_total_hits: true, fields: agentId ? ['osquery.*'] : ['agent.*', 'osquery.*'], - // sort: [ - // { - // [sort.field]: { - // order: [sort.direction], - // }, - // }, - // ], + sort: [ + { + [sort.field]: { + order: sort.direction, + }, + }, + ], }, }; diff --git a/x-pack/plugins/osquery/server/types.ts b/x-pack/plugins/osquery/server/types.ts index dd9d45b2c3cc6..1882e52074660 100644 --- a/x-pack/plugins/osquery/server/types.ts +++ b/x-pack/plugins/osquery/server/types.ts @@ -11,6 +11,7 @@ import { PluginStart as DataPluginStart, } from '../../../../src/plugins/data/server'; import { FleetStartContract } from '../../fleet/server'; +import { PluginSetupContract } from '../../features/server'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface OsqueryPluginSetup {} @@ -20,6 +21,7 @@ export interface OsqueryPluginStart {} export interface SetupPlugins { actions: ActionsPlugin['setup']; data: DataPluginSetup; + features: PluginSetupContract; } export interface StartPlugins { diff --git a/yarn.lock b/yarn.lock index c1b0fe1d1be4a..528d7f682ac74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23724,10 +23724,10 @@ react-popper@^2.2.4: react-fast-compare "^3.0.1" warning "^4.0.2" -react-query@^3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.12.0.tgz#a2082a167f3e394e84dfd3cec0f8c7503abf33dc" - integrity sha512-WJYECeZ6xT2oxIlgqXUjLNLWRvJbeelXscVnAFfyUFgO21OYEYHMWPG61V9W57EUUqrXioQsNPsU9XyddfEvXQ== +react-query@^3.13.10: + version "3.13.10" + resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.13.10.tgz#b6a05e22a5debb6e2df79ada588179771cbd7df8" + integrity sha512-wFvKhEDnOVL5bFL+9KPgNsiOOei1Ad+l6l1awCBuoX7xMG+SXXKDOF2uuZFsJe0w6gdthdWN+00021yepTR31g== dependencies: "@babel/runtime" "^7.5.5" broadcast-channel "^3.4.1" From 71e81189841982aaaa2a21861300a641084c2f95 Mon Sep 17 00:00:00 2001 From: Quynh Nguyen <43350163+qn895@users.noreply.github.com> Date: Mon, 19 Apr 2021 13:46:18 -0500 Subject: [PATCH 12/56] [ML] Fix runtime mapping texts to runtime fields, add transform switch modal (#97008) --- .../common/util/runtime_field_utils.test.ts | 6 +- .../configuration_step_form.tsx | 4 +- .../runtime_mappings/runtime_mappings.tsx | 122 +++++++++++------- .../runtime_mappings/switch_modal.tsx | 56 ++++++++ .../util/filter_runtime_mappings.test.ts | 10 +- .../results_service/results_service.js | 2 +- .../models/data_visualizer/data_visualizer.ts | 2 +- .../job_validation/validate_cardinality.ts | 2 +- .../routes/schemas/data_visualizer_schema.ts | 6 +- .../common/api_schemas/field_histograms.ts | 2 +- .../public/app/common/request.test.ts | 2 +- .../advanced_pivot_editor_switch.tsx | 3 - .../advanced_query_editor_switch.tsx | 8 +- ...dvanced_runtime_mappings_editor_switch.tsx | 61 ++++++--- .../switch_modal.tsx | 53 ++++++++ .../advanced_runtime_mappings_settings.tsx | 16 +-- .../apply_transform_config_to_define_state.ts | 2 +- .../filter_agg/components/filter_agg_form.tsx | 2 +- .../use_advanced_runtime_mappings_editor.ts | 5 +- .../step_define/hooks/use_step_define_form.ts | 2 +- .../translations/translations/ja-JP.json | 5 - .../translations/translations/zh-CN.json | 5 - .../classification_creation.ts | 7 +- .../outlier_detection_creation.ts | 11 +- .../regression_creation.ts | 7 +- 25 files changed, 280 insertions(+), 121 deletions(-) create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/switch_modal.tsx create mode 100644 x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor_switch/switch_modal.tsx diff --git a/x-pack/plugins/ml/common/util/runtime_field_utils.test.ts b/x-pack/plugins/ml/common/util/runtime_field_utils.test.ts index 1b5e3e18b14f6..e7f9230666898 100644 --- a/x-pack/plugins/ml/common/util/runtime_field_utils.test.ts +++ b/x-pack/plugins/ml/common/util/runtime_field_utils.test.ts @@ -77,15 +77,15 @@ describe('ML runtime field utils', () => { ).toBe(false); }); - it('allows object with most basic runtime mapping', () => { + it('allows object with most basic runtime field', () => { expect(isRuntimeMappings({ fieldName: { type: 'keyword' } })).toBe(true); }); - it('allows object with multiple most basic runtime mappings', () => { + it('allows object with multiple most basic runtime fields', () => { expect( isRuntimeMappings({ fieldName1: { type: 'keyword' }, fieldName2: { type: 'keyword' } }) ).toBe(true); }); - it('allows object with runtime mappings including scripts', () => { + it('allows object with runtime fields including scripts', () => { expect( isRuntimeMappings({ fieldName1: { type: 'keyword' }, diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx index 810f59d904696..930c32ce7e4da 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx @@ -364,7 +364,7 @@ export const ConfigurationStepForm: FC = ({ } return !option.key?.includes(runtimeMappingKey); }); - // Runtime mappings have been removed + // Runtime fields have been removed if (runtimeMappings === undefined && runtimeMappingsUpdated === true) { setDependentVariableOptions(filteredOptions); } else if (runtimeMappings) { @@ -374,7 +374,7 @@ export const ConfigurationStepForm: FC = ({ } } - // Update includes - remove previous runtime mappings then add supported runtime fields to includes + // Update includes - remove previous runtime fields then add supported runtime fields to includes const updatedIncludes = includes.filter((field) => { const isRemovedRuntimeField = previousRuntimeMapping && previousRuntimeMapping[field]; return !isRemovedRuntimeField; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/runtime_mappings.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/runtime_mappings.tsx index 5b8fc82ef587b..ec85cc97ac6a6 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/runtime_mappings.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/runtime_mappings.tsx @@ -20,19 +20,48 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { XJsonMode } from '@kbn/ace'; -import { RuntimeField } from '../../../../../../../../../../src/plugins/data/common/index_patterns'; import { useMlContext } from '../../../../../contexts/ml'; import { CreateAnalyticsFormProps } from '../../../analytics_management/hooks/use_create_analytics_form'; import { XJson } from '../../../../../../../../../../src/plugins/es_ui_shared/public'; import { getCombinedRuntimeMappings } from '../../../../../components/data_grid/common'; import { isPopulatedObject } from '../../../../../../../common/util/object_utils'; import { RuntimeMappingsEditor } from './runtime_mappings_editor'; +import { isRuntimeMappings } from '../../../../../../../common'; +import { SwitchModal } from './switch_modal'; const advancedEditorsSidebarWidth = '220px'; -const COPY_TO_CLIPBOARD_RUNTIME_MAPPINGS = i18n.translate( +const COPY_RUNTIME_FIELDS_TO_CLIPBOARD_TEXT = i18n.translate( 'xpack.ml.dataframe.analytics.createWizard.indexPreview.copyRuntimeMappingsClipboardTooltip', { - defaultMessage: 'Copy Dev Console statement of the runtime mappings to the clipboard.', + defaultMessage: 'Copy Dev Console statement of the runtime fields to the clipboard.', + } +); + +const APPLY_CHANGES_TEXT = i18n.translate( + 'xpack.ml.dataframe.analytics.createWizard.advancedSourceEditorApplyButtonText', + { + defaultMessage: 'Apply changes', + } +); + +const RUNTIME_FIELDS_EDITOR_HELP_TEXT = i18n.translate( + 'xpack.ml.dataframe.analytics.createWizard.advancedRuntimeFieldsEditorHelpText', + { + defaultMessage: 'The advanced editor allows you to edit the runtime fields of the source.', + } +); + +const EDIT_SWITCH_LABEL_TEXT = i18n.translate( + 'xpack.ml.dataframe.analytics.createWizard.advancedEditorRuntimeFieldsSwitchLabel', + { + defaultMessage: 'Edit runtime fields', + } +); + +const RUNTIME_FIELDS_LABEL_TEXT = i18n.translate( + 'xpack.ml.dataframe.analytics.createWizard.runtimeFieldsLabel', + { + defaultMessage: 'Runtime fields', } ); @@ -45,12 +74,15 @@ interface Props { state: CreateAnalyticsFormProps['state']; } -type RuntimeMappings = Record; - export const RuntimeMappings: FC = ({ actions, state }) => { const [isRuntimeMappingsEditorEnabled, setIsRuntimeMappingsEditorEnabled] = useState( false ); + const [ + isRuntimeMappingsEditorSwitchModalVisible, + setRuntimeMappingsEditorSwitchModalVisible, + ] = useState(false); + const [ isRuntimeMappingsEditorApplyButtonEnabled, setIsRuntimeMappingsEditorApplyButtonEnabled, @@ -59,7 +91,6 @@ export const RuntimeMappings: FC = ({ actions, state }) => { advancedEditorRuntimeMappingsLastApplied, setAdvancedEditorRuntimeMappingsLastApplied, ] = useState(); - const [advancedEditorRuntimeMappings, setAdvancedEditorRuntimeMappings] = useState(); const { setFormState } = actions; const { jobType, previousRuntimeMapping, runtimeMappings } = state.form; @@ -90,22 +121,22 @@ export const RuntimeMappings: FC = ({ actions, state }) => { runtimeMappingsUpdated: true, previousRuntimeMapping: previous, }); - setAdvancedEditorRuntimeMappings(prettySourceConfig); + setAdvancedRuntimeMappingsConfig(prettySourceConfig); setAdvancedEditorRuntimeMappingsLastApplied(prettySourceConfig); setIsRuntimeMappingsEditorApplyButtonEnabled(false); }; - // If switching to KQL after updating via editor - reset search const toggleEditorHandler = (reset = false) => { if (reset === true) { - setFormState({ runtimeMappingsUpdated: false }); - } - if (isRuntimeMappingsEditorEnabled === false) { - setAdvancedEditorRuntimeMappingsLastApplied(advancedEditorRuntimeMappings); + setFormState({ + runtimeMappingsUpdated: false, + }); + + setAdvancedRuntimeMappingsConfig(advancedEditorRuntimeMappingsLastApplied ?? ''); } setIsRuntimeMappingsEditorEnabled(!isRuntimeMappingsEditorEnabled); - setIsRuntimeMappingsEditorApplyButtonEnabled(false); + setIsRuntimeMappingsEditorApplyButtonEnabled(isRuntimeMappings(runtimeMappings)); }; useEffect(function getInitialRuntimeMappings() { @@ -114,8 +145,11 @@ export const RuntimeMappings: FC = ({ actions, state }) => { runtimeMappings ); + const prettySourceConfig = JSON.stringify(combinedRuntimeMappings, null, 2); + if (combinedRuntimeMappings) { - setAdvancedRuntimeMappingsConfig(JSON.stringify(combinedRuntimeMappings, null, 2)); + setAdvancedRuntimeMappingsConfig(prettySourceConfig); + setAdvancedEditorRuntimeMappingsLastApplied(prettySourceConfig); setFormState({ runtimeMappings: combinedRuntimeMappings, }); @@ -125,12 +159,7 @@ export const RuntimeMappings: FC = ({ actions, state }) => { return ( <> - + {isPopulatedObject(runtimeMappings) ? ( @@ -139,8 +168,8 @@ export const RuntimeMappings: FC = ({ actions, state }) => { ) : ( )} @@ -170,27 +199,41 @@ export const RuntimeMappings: FC = ({ actions, state }) => { toggleEditorHandler()} + onChange={() => { + if ( + isRuntimeMappingsEditorEnabled && + advancedRuntimeMappingsConfig !== advancedEditorRuntimeMappingsLastApplied + ) { + setRuntimeMappingsEditorSwitchModalVisible(true); + return; + } + + toggleEditorHandler(); + }} data-test-subj="mlDataFrameAnalyticsRuntimeMappingsEditorSwitch" /> + {isRuntimeMappingsEditorSwitchModalVisible && ( + setRuntimeMappingsEditorSwitchModalVisible(false)} + onConfirm={() => { + setRuntimeMappingsEditorSwitchModalVisible(false); + toggleEditorHandler(true); + }} + /> + )} {(copy: () => void) => ( )} @@ -201,15 +244,7 @@ export const RuntimeMappings: FC = ({ actions, state }) => { {isRuntimeMappingsEditorEnabled && ( - - {i18n.translate( - 'xpack.ml.dataframe.analytics.createWizard.advancedRuntimeMappingsEditorHelpText', - { - defaultMessage: - 'The advanced editor allows you to edit the runtime mappings of the source.', - } - )} - + {RUNTIME_FIELDS_EDITOR_HELP_TEXT} = ({ actions, state }) => { disabled={!isRuntimeMappingsEditorApplyButtonEnabled} data-test-subj="mlDataFrameAnalyticsRuntimeMappingsApplyButton" > - {i18n.translate( - 'xpack.ml.dataframe.analytics.createWizard.advancedSourceEditorApplyButtonText', - { - defaultMessage: 'Apply changes', - } - )} + {APPLY_CHANGES_TEXT} )} diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/switch_modal.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/switch_modal.tsx new file mode 100644 index 0000000000000..21a1c18dbea13 --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/switch_modal.tsx @@ -0,0 +1,56 @@ +/* + * 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 React, { FC } from 'react'; +import { EuiConfirmModal } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +interface Props { + onCancel: () => void; + onConfirm: () => void; +} + +const modalTitle = i18n.translate( + 'xpack.ml.dataframe.analytics.createWizard.runtimeEditorSwitchModalTitle', + { + defaultMessage: 'Edits will be lost', + } +); + +const cancelButtonText = i18n.translate( + 'xpack.ml.dataframe.analytics.createWizard.runtimeEditorSwitchModalCancelButtonText', + { + defaultMessage: 'Cancel', + } +); + +const applyChangesText = i18n.translate( + 'xpack.ml.dataframe.analytics.createWizard.runtimeEditorSwitchModalConfirmButtonText', + { + defaultMessage: 'Close editor', + } +); +const modalMessage = i18n.translate( + 'xpack.ml.dataframe.analytics.createWizard.runtimeEditorSwitchModalBodyText', + { + defaultMessage: `The changes in the editor haven't been applied yet. By closing the editor you will lose your edits.`, + } +); + +export const SwitchModal: FC = ({ onCancel, onConfirm }) => ( + +

{modalMessage}

+
+); diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/filter_runtime_mappings.test.ts b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/filter_runtime_mappings.test.ts index c67a93c5e0626..670447826dcdd 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/filter_runtime_mappings.test.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/filter_runtime_mappings.test.ts @@ -102,7 +102,7 @@ describe('filter_runtime_mappings', () => { datafeed = getDatafeed(); }); - test('returns no runtime mappings, no mappings in aggs', () => { + test('returns no runtime fields, no mappings in aggs', () => { const resp = filterRuntimeMappings(job, datafeed); expect(Object.keys(resp.runtime_mappings).length).toEqual(0); @@ -111,7 +111,7 @@ describe('filter_runtime_mappings', () => { expect(resp.discarded_mappings.airline_lower).not.toEqual(undefined); }); - test('returns no runtime mappings, no runtime mappings in datafeed', () => { + test('returns no runtime fields, no runtime fields in datafeed', () => { datafeed.runtime_mappings = undefined; const resp = filterRuntimeMappings(job, datafeed); expect(Object.keys(resp.runtime_mappings).length).toEqual(0); @@ -131,7 +131,7 @@ describe('filter_runtime_mappings', () => { expect(resp.discarded_mappings.airline_lower).not.toEqual(undefined); }); - test('return no runtime mappings, no mappings in aggs', () => { + test('return no runtime fields, no mappings in aggs', () => { datafeed.aggregations = getAggs(); datafeed.aggregations!.buckets!.aggregations!.responsetime!.avg!.field! = 'responsetime'; @@ -154,7 +154,7 @@ describe('filter_runtime_mappings', () => { expect(resp.discarded_mappings.airline_lower).not.toEqual(undefined); }); - test('return two runtime mappings, no mappings in aggs', () => { + test('return two runtime fields, no mappings in aggs', () => { // set the detector field to be a runtime mapping job.analysis_config.detectors[0].field_name = 'responsetime_big'; // set the detector by field to be a runtime mapping @@ -167,7 +167,7 @@ describe('filter_runtime_mappings', () => { expect(Object.keys(resp.discarded_mappings).length).toEqual(0); }); - test('return two runtime mappings, no mappings in aggs, categorization job', () => { + test('return two runtime fields, no mappings in aggs, categorization job', () => { job.analysis_config.detectors[0].function = 'count'; // set the detector field to be a runtime mapping job.analysis_config.detectors[0].field_name = undefined; diff --git a/x-pack/plugins/ml/public/application/services/results_service/results_service.js b/x-pack/plugins/ml/public/application/services/results_service/results_service.js index c258d07cab484..71be7bcd2b7eb 100644 --- a/x-pack/plugins/ml/public/application/services/results_service/results_service.js +++ b/x-pack/plugins/ml/public/application/services/results_service/results_service.js @@ -970,7 +970,7 @@ export function resultsServiceProvider(mlApiServices) { }, }, }, - // Runtime mappings only needed to support when query includes a runtime field + // Runtime fields only needed to support when query includes a runtime field // even though the default timeField can be a search time runtime field // because currently Kibana doesn't support that ...(isPopulatedObject(runtimeMappings) && query diff --git a/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts b/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts index 64ee18c688046..e7c723ba16aba 100644 --- a/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts +++ b/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts @@ -627,7 +627,7 @@ export class DataVisualizer { // filter aggregation with exists query. const aggs: Aggs = datafeedAggregations !== undefined ? { ...datafeedAggregations } : {}; - // Combine runtime mappings from the index pattern as well as the datafeed + // Combine runtime fields from the index pattern as well as the datafeed const combinedRuntimeMappings: RuntimeMappings = { ...(isPopulatedObject(runtimeMappings) ? runtimeMappings : {}), ...(isPopulatedObject(datafeedConfig) && isPopulatedObject(datafeedConfig.runtime_mappings) diff --git a/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.ts b/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.ts index 18dc6d3dc73c6..403d6738a4ce6 100644 --- a/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.ts +++ b/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.ts @@ -166,7 +166,7 @@ const validateFactory = (client: IScopedClusterClient, job: CombinedJob): Valida } } else { // only report uniqueFieldName as not aggregatable if it's not part - // of a valid categorization configuration and if it's not a scripted field or runtime mapping. + // of a valid categorization configuration and if it's not a scripted field or runtime field. if ( !isValidCategorizationConfig(job, uniqueFieldName) && !isScriptField(job, uniqueFieldName) && diff --git a/x-pack/plugins/ml/server/routes/schemas/data_visualizer_schema.ts b/x-pack/plugins/ml/server/routes/schemas/data_visualizer_schema.ts index 0d7e55d29b1c5..50b48aad9cee4 100644 --- a/x-pack/plugins/ml/server/routes/schemas/data_visualizer_schema.ts +++ b/x-pack/plugins/ml/server/routes/schemas/data_visualizer_schema.ts @@ -20,7 +20,7 @@ export const dataVisualizerFieldHistogramsSchema = schema.object({ fields: schema.arrayOf(schema.any()), /** Number of documents to be collected in the sample processed on each shard, or -1 for no sampling. */ samplerShardSize: schema.number(), - /** Optional search time runtime mappings */ + /** Optional search time runtime fields */ runtimeMappings: runtimeMappingsSchema, }); @@ -40,7 +40,7 @@ export const dataVisualizerFieldStatsSchema = schema.object({ interval: schema.maybe(schema.number()), /** Maximum number of examples to return for text type fields. */ maxExamples: schema.number(), - /** Optional search time runtime mappings */ + /** Optional search time runtime fields */ runtimeMappings: runtimeMappingsSchema, }); @@ -59,6 +59,6 @@ export const dataVisualizerOverallStatsSchema = schema.object({ earliest: schema.maybe(schema.number()), /** Latest timestamp for search, as epoch ms (optional). */ latest: schema.maybe(schema.number()), - /** Optional search time runtime mappings */ + /** Optional search time runtime fields */ runtimeMappings: runtimeMappingsSchema, }); diff --git a/x-pack/plugins/transform/common/api_schemas/field_histograms.ts b/x-pack/plugins/transform/common/api_schemas/field_histograms.ts index 9f6f4c15d803a..5a808ab9788b1 100644 --- a/x-pack/plugins/transform/common/api_schemas/field_histograms.ts +++ b/x-pack/plugins/transform/common/api_schemas/field_histograms.ts @@ -16,7 +16,7 @@ export const fieldHistogramsRequestSchema = schema.object({ query: schema.any(), /** The fields to return histogram data. */ fields: schema.arrayOf(schema.any()), - /** Optional runtime mappings */ + /** Optional runtime fields */ runtimeMappings: runtimeMappingsSchema, /** Number of documents to be collected in the sample processed on each shard, or -1 for no sampling. */ samplerShardSize: schema.number(), diff --git a/x-pack/plugins/transform/public/app/common/request.test.ts b/x-pack/plugins/transform/public/app/common/request.test.ts index f25fedb7aaba3..6a64c6af6428f 100644 --- a/x-pack/plugins/transform/public/app/common/request.test.ts +++ b/x-pack/plugins/transform/public/app/common/request.test.ts @@ -266,7 +266,7 @@ describe('Transform: Common', () => { }); }); - test('getCreateTransformRequestBody() with runtime mappings', () => { + test('getCreateTransformRequestBody() with runtime fields', () => { const runtimeMappings = { rt_bytes_bigger: { type: 'double', diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor_switch/advanced_pivot_editor_switch.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor_switch/advanced_pivot_editor_switch.tsx index 3883be6a8bfa8..900af603266b8 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor_switch/advanced_pivot_editor_switch.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_pivot_editor_switch/advanced_pivot_editor_switch.tsx @@ -26,9 +26,6 @@ export const AdvancedPivotEditorSwitch: FC = ({ isAdvancedPivotEditorApplyButtonEnabled, }, }, - pivotConfig: { - actions: { setAggList, setGroupByList }, - }, }) => { return ( diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_query_editor_switch/advanced_query_editor_switch.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_query_editor_switch/advanced_query_editor_switch.tsx index aedd4a2450f54..43c6684a5a2bc 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_query_editor_switch/advanced_query_editor_switch.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_query_editor_switch/advanced_query_editor_switch.tsx @@ -27,6 +27,8 @@ export const AdvancedQueryEditorSwitch: FC = ({ isAdvancedSourceEditorEnabled, isAdvancedSourceEditorSwitchModalVisible, sourceConfigUpdated, + advancedEditorSourceConfigLastApplied, + advancedEditorSourceConfig, }, }, searchBar: { @@ -53,7 +55,11 @@ export const AdvancedQueryEditorSwitch: FC = ({ )} checked={isAdvancedSourceEditorEnabled} onChange={() => { - if (isAdvancedSourceEditorEnabled && sourceConfigUpdated) { + if ( + isAdvancedSourceEditorEnabled && + (sourceConfigUpdated || + advancedEditorSourceConfig !== advancedEditorSourceConfigLastApplied) + ) { setAdvancedSourceEditorSwitchModalVisible(true); return; } diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor_switch/advanced_runtime_mappings_editor_switch.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor_switch/advanced_runtime_mappings_editor_switch.tsx index be297c10a8f88..2ee8bc9995df6 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor_switch/advanced_runtime_mappings_editor_switch.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor_switch/advanced_runtime_mappings_editor_switch.tsx @@ -8,35 +8,58 @@ import React, { FC } from 'react'; import { EuiSwitch } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { StepDefineFormHook } from '../step_define'; +import { SwitchModal } from './switch_modal'; +import { useAdvancedRuntimeMappingsEditor } from '../step_define/hooks/use_advanced_runtime_mappings_editor'; -export const AdvancedRuntimeMappingsEditorSwitch: FC< - StepDefineFormHook['runtimeMappingsEditor'] -> = (props) => { +type Props = ReturnType; +export const AdvancedRuntimeMappingsEditorSwitch: FC = (props) => { const { - actions: { setRuntimeMappingsUpdated, toggleRuntimeMappingsEditor }, - state: { isRuntimeMappingsEditorEnabled }, + actions: { toggleRuntimeMappingsEditor, setRuntimeMappingsEditorSwitchModalVisible }, + state: { + isRuntimeMappingsEditorEnabled, + isRuntimeMappingsEditorSwitchModalVisible, + advancedEditorRuntimeMappingsLastApplied, + advancedRuntimeMappingsConfig, + }, } = props; // If switching to KQL after updating via editor - reset search const toggleEditorHandler = (reset = false) => { - if (reset === true) { - setRuntimeMappingsUpdated(false); - } toggleRuntimeMappingsEditor(reset); }; return ( - + { + if ( + isRuntimeMappingsEditorEnabled && + advancedRuntimeMappingsConfig !== advancedEditorRuntimeMappingsLastApplied + ) { + setRuntimeMappingsEditorSwitchModalVisible(true); + return; + } + + toggleEditorHandler(); + }} + data-test-subj="transformAdvancedRuntimeMappingsEditorSwitch" + /> + {isRuntimeMappingsEditorSwitchModalVisible && ( + setRuntimeMappingsEditorSwitchModalVisible(false)} + onConfirm={() => { + setRuntimeMappingsEditorSwitchModalVisible(false); + toggleEditorHandler(true); + }} + /> )} - checked={isRuntimeMappingsEditorEnabled} - onChange={() => toggleEditorHandler()} - data-test-subj="transformAdvancedRuntimeMappingsEditorSwitch" - /> + ); }; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor_switch/switch_modal.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor_switch/switch_modal.tsx new file mode 100644 index 0000000000000..ff08ab37bb3e6 --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_editor_switch/switch_modal.tsx @@ -0,0 +1,53 @@ +/* + * 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 React, { FC } from 'react'; +import { EuiConfirmModal } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +interface Props { + onCancel: () => void; + onConfirm: () => void; +} + +const modalTitle = i18n.translate('xpack.transform.stepDefineForm.runtimeEditorSwitchModalTitle', { + defaultMessage: 'Edits will be lost', +}); + +const cancelButtonText = i18n.translate( + 'xpack.transform.stepDefineForm.runtimeEditorSwitchModalCancelButtonText', + { + defaultMessage: 'Cancel', + } +); + +const applyChangesText = i18n.translate( + 'xpack.transform.stepDefineForm.runtimeEditorSwitchModalConfirmButtonText', + { + defaultMessage: 'Close editor', + } +); +const modalMessage = i18n.translate( + 'xpack.transform.stepDefineForm.runtimeEditorSwitchModalBodyText', + { + defaultMessage: `The changes in the advanced editor haven't been applied yet. By closing the editor you will lose your edits.`, + } +); + +export const SwitchModal: FC = ({ onCancel, onConfirm }) => ( + +

{modalMessage}

+
+); diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_settings/advanced_runtime_mappings_settings.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_settings/advanced_runtime_mappings_settings.tsx index 7965db99b335b..29e341fdaeaea 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_settings/advanced_runtime_mappings_settings.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/advanced_runtime_mappings_settings/advanced_runtime_mappings_settings.tsx @@ -29,9 +29,9 @@ import { isPivotAggConfigWithUiSupport } from '../../../../common/pivot_group_by const advancedEditorsSidebarWidth = '220px'; const COPY_TO_CLIPBOARD_RUNTIME_MAPPINGS = i18n.translate( - 'xpack.transform.indexPreview.copyRuntimeMappingsClipboardTooltip', + 'xpack.transform.indexPreview.copyRuntimeFieldsClipboardTooltip', { - defaultMessage: 'Copy Dev Console statement of the runtime mappings to the clipboard.', + defaultMessage: 'Copy Dev Console statement of the runtime fields to the clipboard.', } ); @@ -87,15 +87,15 @@ export const AdvancedRuntimeMappingsSettings: FC = (props) = {runtimeMappings !== undefined && Object.keys(runtimeMappings).length > 0 ? ( = (props) = ) : ( )} @@ -145,10 +145,10 @@ export const AdvancedRuntimeMappingsSettings: FC = (props) = {i18n.translate( - 'xpack.transform.stepDefineForm.advancedRuntimeMappingsEditorHelpText', + 'xpack.transform.stepDefineForm.advancedRuntimeFieldsEditorHelpText', { defaultMessage: - 'The advanced editor allows you to edit the runtime mappings of the transform configuration.', + 'The advanced editor allows you to edit the runtime fields of the transform configuration.', } )} diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/apply_transform_config_to_define_state.ts b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/apply_transform_config_to_define_state.ts index 6298874a20366..497f37036725c 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/apply_transform_config_to_define_state.ts +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/apply_transform_config_to_define_state.ts @@ -37,7 +37,7 @@ export function applyTransformConfigToDefineState( transformConfig?: TransformBaseConfig, indexPattern?: StepDefineFormProps['searchItems']['indexPattern'] ): StepDefineExposedState { - // apply runtime mappings from both the index pattern and inline configurations + // apply runtime fields from both the index pattern and inline configurations state.runtimeMappings = getCombinedRuntimeMappings( indexPattern, transformConfig?.source?.runtime_mappings diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx index 9b349541a78a3..e3e767a81b01d 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx @@ -39,7 +39,7 @@ export function getSupportedFilterAggs( ]; } - throw new Error(`The field ${fieldName} does not exist in the index or runtime mappings`); + throw new Error(`The field ${fieldName} does not exist in the index or runtime fields`); } /** diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_advanced_runtime_mappings_editor.ts b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_advanced_runtime_mappings_editor.ts index 2ad7c4344a101..dd58456e15adb 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_advanced_runtime_mappings_editor.ts +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_advanced_runtime_mappings_editor.ts @@ -62,11 +62,8 @@ export const useAdvancedRuntimeMappingsEditor = (defaults: StepDefineExposedStat const toggleRuntimeMappingsEditor = (reset = false) => { if (reset === true) { setRuntimeMappingsUpdated(false); + setAdvancedRuntimeMappingsConfig(advancedEditorRuntimeMappingsLastApplied); } - if (isRuntimeMappingsEditorEnabled === false) { - setAdvancedEditorRuntimeMappingsLastApplied(advancedRuntimeMappingsConfig); - } - setRuntimeMappingsEditorEnabled(!isRuntimeMappingsEditorEnabled); setRuntimeMappingsEditorApplyButtonEnabled(false); }; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_step_define_form.ts b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_step_define_form.ts index 0ceea070df1b6..b56df5e395c88 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_step_define_form.ts +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/hooks/use_step_define_form.ts @@ -51,7 +51,7 @@ export const useStepDefineForm = ({ overrides, onChange, searchItems }: StepDefi // source config hook const advancedSourceEditor = useAdvancedSourceEditor(defaults, previewRequest); - // runtime mappings config hook + // runtime fields config hook const runtimeMappingsEditor = useAdvancedRuntimeMappingsEditor(defaults); useEffect(() => { diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 74803fda8df5c..73dcecfe28d2d 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -21758,7 +21758,6 @@ "xpack.transform.groupByLabelForm.editIntervalAriaLabel": "間隔を編集", "xpack.transform.home.breadcrumbTitle": "変換", "xpack.transform.indexPreview.copyClipboardTooltip": "インデックスプレビューの開発コンソールステートメントをクリップボードにコピーします。", - "xpack.transform.indexPreview.copyRuntimeMappingsClipboardTooltip": "ランタイムマッピングの開発コンソールステートメントをクリップボードにコピーします。", "xpack.transform.latestPreview.latestPreviewIncompleteConfigCalloutBody": "1 つ以上の一意キーと並べ替えフィールドを選択してください。", "xpack.transform.licenseCheckErrorMessage": "ライセンス確認失敗", "xpack.transform.list.emptyPromptButtonText": "初めての変換を作成してみましょう。", @@ -21818,14 +21817,12 @@ "xpack.transform.stepDefineForm.advancedEditorHelpText": "詳細エディターでは、変換のピボット構成を編集できます。", "xpack.transform.stepDefineForm.advancedEditorHelpTextLink": "使用可能なオプションの詳細を確認してください。", "xpack.transform.stepDefineForm.advancedEditorLabel": "ピボット構成オブジェクト", - "xpack.transform.stepDefineForm.advancedEditorRuntimeMappingsSwitchLabel": "ランタイムマッピングの編集", "xpack.transform.stepDefineForm.advancedEditorSourceConfigSwitchLabel": "JSONクエリを編集", "xpack.transform.stepDefineForm.advancedEditorSwitchLabel": "JSON構成を編集", "xpack.transform.stepDefineForm.advancedEditorSwitchModalBodyText": "詳細エディターの変更は適用されませんでした。詳細エディターを無効にすると、編集内容が失われます。", "xpack.transform.stepDefineForm.advancedEditorSwitchModalCancelButtonText": "キャンセル", "xpack.transform.stepDefineForm.advancedEditorSwitchModalConfirmButtonText": "詳細エディターを無効にする", "xpack.transform.stepDefineForm.advancedEditorSwitchModalTitle": "適用されていない変更", - "xpack.transform.stepDefineForm.advancedRuntimeMappingsEditorHelpText": "高度なエディターでは、変換構成のランタイムマッピングを編集できます。", "xpack.transform.stepDefineForm.advancedSourceEditorApplyButtonText": "変更を適用", "xpack.transform.stepDefineForm.advancedSourceEditorAriaLabel": "クエリの詳細エディター", "xpack.transform.stepDefineForm.advancedSourceEditorHelpText": "高度なエディターでは、変換構成のソースクエリ句を編集できます。", @@ -21851,8 +21848,6 @@ "xpack.transform.stepDefineForm.pivotLabel": "ピボット", "xpack.transform.stepDefineForm.queryPlaceholderKql": "例:{example}", "xpack.transform.stepDefineForm.queryPlaceholderLucene": "例:{example}", - "xpack.transform.stepDefineForm.runtimeMappingsLabel": "ランタイムマッピング", - "xpack.transform.stepDefineForm.runtimeMappingsListLabel": "{runtimeFields}", "xpack.transform.stepDefineForm.savedSearchLabel": "保存検索", "xpack.transform.stepDefineForm.sortFieldOptionsEmptyError": "並べ替えの条件にする日付フィールドがありません。別のフィールド型を使用するには、構成をクリップボードにコピーして、コンソールで変換を作成し続けます。", "xpack.transform.stepDefineForm.sortHelpText": "最新のドキュメントを特定するために使用する日付フィールドを選択してます。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index ef6d8f9707553..e7640c220a6c0 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -22106,7 +22106,6 @@ "xpack.transform.groupByLabelForm.editIntervalAriaLabel": "编辑时间间隔", "xpack.transform.home.breadcrumbTitle": "转换", "xpack.transform.indexPreview.copyClipboardTooltip": "将索引预览的开发控制台语句复制到剪贴板。", - "xpack.transform.indexPreview.copyRuntimeMappingsClipboardTooltip": "将运行时映射的开发控制台语句复制到剪贴板。", "xpack.transform.latestPreview.latestPreviewIncompleteConfigCalloutBody": "请选择至少一个唯一键和排序字段。", "xpack.transform.licenseCheckErrorMessage": "许可证检查失败", "xpack.transform.list.emptyPromptButtonText": "创建您的首个转换", @@ -22167,14 +22166,12 @@ "xpack.transform.stepDefineForm.advancedEditorHelpText": "高级编辑器允许您编辑数据帧转换的数据透视表配置。", "xpack.transform.stepDefineForm.advancedEditorHelpTextLink": "详细了解可用选项。", "xpack.transform.stepDefineForm.advancedEditorLabel": "数据透视表配置对象", - "xpack.transform.stepDefineForm.advancedEditorRuntimeMappingsSwitchLabel": "编辑运行时映射", "xpack.transform.stepDefineForm.advancedEditorSourceConfigSwitchLabel": "编辑 JSON 查询", "xpack.transform.stepDefineForm.advancedEditorSwitchLabel": "编辑 JSON 配置", "xpack.transform.stepDefineForm.advancedEditorSwitchModalBodyText": "高级编辑器中的更改尚未应用。禁用高级编辑器将会使您的编辑丢失。", "xpack.transform.stepDefineForm.advancedEditorSwitchModalCancelButtonText": "取消", "xpack.transform.stepDefineForm.advancedEditorSwitchModalConfirmButtonText": "禁用高级编辑器", "xpack.transform.stepDefineForm.advancedEditorSwitchModalTitle": "未应用的更改", - "xpack.transform.stepDefineForm.advancedRuntimeMappingsEditorHelpText": "高级编辑器允许您编辑转换配置的运行时映射。", "xpack.transform.stepDefineForm.advancedSourceEditorApplyButtonText": "应用更改", "xpack.transform.stepDefineForm.advancedSourceEditorAriaLabel": "高级查询编辑器", "xpack.transform.stepDefineForm.advancedSourceEditorHelpText": "高级编辑器允许您编辑转换配置的源查询子句。", @@ -22200,8 +22197,6 @@ "xpack.transform.stepDefineForm.pivotLabel": "数据透视表", "xpack.transform.stepDefineForm.queryPlaceholderKql": "例如,{example}", "xpack.transform.stepDefineForm.queryPlaceholderLucene": "例如,{example}", - "xpack.transform.stepDefineForm.runtimeMappingsLabel": "运行时映射", - "xpack.transform.stepDefineForm.runtimeMappingsListLabel": "{runtimeFields}", "xpack.transform.stepDefineForm.savedSearchLabel": "已保存搜索", "xpack.transform.stepDefineForm.sortFieldOptionsEmptyError": "没有日期字段可用于排序。要使用其他字段类型,请将配置复制到剪贴板,然后继续在控制台中创建转换。", "xpack.transform.stepDefineForm.sortHelpText": "选择要用于标识最新文档的日期字段。", diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts b/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts index 5e6a08751c932..80d64ffa15d49 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts +++ b/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts @@ -62,6 +62,7 @@ export default function ({ getService }: FtrProviderContext) { { color: '#D3DAE6', percentage: 8 }, { color: '#F5F7FA', percentage: 15 }, ], + runtimeFieldsEditorContent: ['{', ' "uppercase_y": {', ' "type": "keyword",'], row: { type: 'classification', status: 'stopped', @@ -113,9 +114,9 @@ export default function ({ getService }: FtrProviderContext) { JSON.stringify(testData.runtimeFields) ); await ml.dataFrameAnalyticsCreation.applyRuntimeMappings(); - await ml.dataFrameAnalyticsCreation.assertRuntimeMappingsEditorContent([ - '{"uppercase_y":{"type":"keyword","script":"emit(params._source.y.toUpperCase())"}}', - ]); + await ml.dataFrameAnalyticsCreation.assertRuntimeMappingsEditorContent( + testData.expected.runtimeFieldsEditorContent + ); await ml.testExecution.logTestStep('inputs the dependent variable'); await ml.dataFrameAnalyticsCreation.assertDependentVariableInputExists(); diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts b/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts index e73a477d21b1b..3866642383b22 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts +++ b/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts @@ -72,6 +72,11 @@ export default function ({ getService }: FtrProviderContext) { // anti-aliasing { color: '#F5F7FA', percentage: 30 }, ], + runtimeFieldsEditorContent: [ + '{', + ' "lowercase_central_air": {', + ' "type": "keyword",', + ], row: { type: 'outlier_detection', status: 'stopped', @@ -124,9 +129,9 @@ export default function ({ getService }: FtrProviderContext) { JSON.stringify(testData.runtimeFields) ); await ml.dataFrameAnalyticsCreation.applyRuntimeMappings(); - await ml.dataFrameAnalyticsCreation.assertRuntimeMappingsEditorContent([ - '{"lowercase_central_air":{"type":"keyword","script":"emit(params._source.CentralAir.toLowerCase())"}}', - ]); + await ml.dataFrameAnalyticsCreation.assertRuntimeMappingsEditorContent( + testData.expected.runtimeFieldsEditorContent + ); await ml.testExecution.logTestStep('does not display the dependent variable input'); await ml.dataFrameAnalyticsCreation.assertDependentVariableInputMissing(); diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts b/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts index 540fbc10fa0fc..a65d8986595cc 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts +++ b/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts @@ -55,6 +55,7 @@ export default function ({ getService }: FtrProviderContext) { { color: '#F5F7FA', percentage: 10 }, { color: '#D3DAE6', percentage: 3 }, ], + runtimeFieldsEditorContent: ['{', ' "uppercase_stab": {', ' "type": "keyword",'], row: { type: 'regression', status: 'stopped', @@ -107,9 +108,9 @@ export default function ({ getService }: FtrProviderContext) { JSON.stringify(testData.runtimeFields) ); await ml.dataFrameAnalyticsCreation.applyRuntimeMappings(); - await ml.dataFrameAnalyticsCreation.assertRuntimeMappingsEditorContent([ - '{"uppercase_stab":{"type":"keyword","script":"emit(params._source.stabf.toUpperCase())"}}', - ]); + await ml.dataFrameAnalyticsCreation.assertRuntimeMappingsEditorContent( + testData.expected.runtimeFieldsEditorContent + ); await ml.testExecution.logTestStep('inputs the dependent variable'); await ml.dataFrameAnalyticsCreation.assertDependentVariableInputExists(); From 38ac8e5cc82613fea6dd3c0b57e6fce3bab9fbbc Mon Sep 17 00:00:00 2001 From: Josh Dover <1813008+joshdover@users.noreply.github.com> Date: Mon, 19 Apr 2021 20:52:29 +0200 Subject: [PATCH 13/56] Add search deep links for APM, Metrics, Logs, and Dev Tools (#96135) * Add searchDeepLinks for APM * Add searchDeepLinks for Metrics and Logs * Add searchDeepLinks for Dev Tools Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- src/plugins/dev_tools/public/dev_tool.ts | 6 +- src/plugins/dev_tools/public/plugin.ts | 16 ++++- .../app/Main/route_config/index.tsx | 3 + x-pack/plugins/apm/public/plugin.ts | 27 +++++++++ .../infra/public/pages/logs/page_content.tsx | 1 + .../infra/public/pages/metrics/index.tsx | 1 + x-pack/plugins/infra/public/plugin.ts | 59 +++++++++++++++++++ 7 files changed, 110 insertions(+), 3 deletions(-) diff --git a/src/plugins/dev_tools/public/dev_tool.ts b/src/plugins/dev_tools/public/dev_tool.ts index 197e93f20a539..8adfd4c76482d 100644 --- a/src/plugins/dev_tools/public/dev_tool.ts +++ b/src/plugins/dev_tools/public/dev_tool.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import { ReactNode } from 'react'; import { AppMount } from 'src/core/public'; /** @@ -26,8 +27,9 @@ export class DevToolApp { /** * The human readable name of the dev tool. Should be internationalized. * This will be used as a label in the tab above the actual tool. + * May also be a ReactNode. */ - public readonly title: string; + public readonly title: ReactNode; public readonly mount: AppMount; /** @@ -55,7 +57,7 @@ export class DevToolApp { constructor( id: string, - title: string, + title: ReactNode, mount: AppMount, enableRouting: boolean, order: number, diff --git a/src/plugins/dev_tools/public/plugin.ts b/src/plugins/dev_tools/public/plugin.ts index 6cf3c57d19ac8..e9f5d206de918 100644 --- a/src/plugins/dev_tools/public/plugin.ts +++ b/src/plugins/dev_tools/public/plugin.ts @@ -7,7 +7,7 @@ */ import { BehaviorSubject } from 'rxjs'; -import { Plugin, CoreSetup, AppMountParameters } from 'src/core/public'; +import { Plugin, CoreSetup, AppMountParameters, AppSearchDeepLink } from 'src/core/public'; import { AppUpdater } from 'kibana/public'; import { i18n } from '@kbn/i18n'; import { sortBy } from 'lodash'; @@ -84,6 +84,20 @@ export class DevToolsPlugin implements Plugin { public start() { if (this.getSortedDevTools().length === 0) { this.appStateUpdater.next(() => ({ navLinkStatus: AppNavLinkStatus.hidden })); + } else { + this.appStateUpdater.next(() => { + const deepLinks: AppSearchDeepLink[] = [...this.devTools.values()] + .filter( + // Some tools do not use a string title, so we filter those out + (tool) => !tool.enableRouting && !tool.isDisabled() && typeof tool.title === 'string' + ) + .map((tool) => ({ + id: tool.id, + title: tool.title as string, + path: `#/${tool.id}`, + })); + return { meta: { searchDeepLinks: deepLinks } }; + }); } } diff --git a/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx b/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx index 0ed9c5c919ddb..9410fd00411e3 100644 --- a/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx @@ -173,6 +173,7 @@ export const routes: APMRouteDefinition[] = [ render: renderAsRedirectTo('/services'), breadcrumb: 'APM', }, + // !! Need to be kept in sync with the searchDeepLinks in x-pack/plugins/apm/public/plugin.ts { exact: true, path: '/services', @@ -181,6 +182,7 @@ export const routes: APMRouteDefinition[] = [ defaultMessage: 'Services', }), }, + // !! Need to be kept in sync with the searchDeepLinks in x-pack/plugins/apm/public/plugin.ts { exact: true, path: '/traces', @@ -326,6 +328,7 @@ export const routes: APMRouteDefinition[] = [ component: TraceLink, breadcrumb: null, }, + // !! Need to be kept in sync with the searchDeepLinks in x-pack/plugins/apm/public/plugin.ts { exact: true, path: '/service-map', diff --git a/x-pack/plugins/apm/public/plugin.ts b/x-pack/plugins/apm/public/plugin.ts index 143076e56c831..6ba9689535084 100644 --- a/x-pack/plugins/apm/public/plugin.ts +++ b/x-pack/plugins/apm/public/plugin.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { i18n } from '@kbn/i18n'; import type { ConfigSchema } from '.'; import { AppMountParameters, @@ -143,6 +144,32 @@ export class ApmPlugin implements Plugin { appRoute: '/app/apm', icon: 'plugins/apm/public/icon.svg', category: DEFAULT_APP_CATEGORIES.observability, + meta: { + // !! Need to be kept in sync with the routes in x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx + searchDeepLinks: [ + { + id: 'services', + title: i18n.translate('xpack.apm.breadcrumb.servicesTitle', { + defaultMessage: 'Services', + }), + path: '/services', + }, + { + id: 'traces', + title: i18n.translate('xpack.apm.breadcrumb.tracesTitle', { + defaultMessage: 'Traces', + }), + path: '/traces', + }, + { + id: 'service-map', + title: i18n.translate('xpack.apm.breadcrumb.serviceMapTitle', { + defaultMessage: 'Service Map', + }), + path: '/service-map', + }, + ], + }, async mount(params: AppMountParameters) { // Load application bundle and Get start services diff --git a/x-pack/plugins/infra/public/pages/logs/page_content.tsx b/x-pack/plugins/infra/public/pages/logs/page_content.tsx index 648915ad4075c..d43fe198c5077 100644 --- a/x-pack/plugins/infra/public/pages/logs/page_content.tsx +++ b/x-pack/plugins/infra/public/pages/logs/page_content.tsx @@ -40,6 +40,7 @@ export const LogsPageContent: React.FunctionComponent = () => { initialize(); }); + // !! Need to be kept in sync with the searchDeepLinks in x-pack/plugins/infra/public/plugin.ts const streamTab = { app: 'logs', title: streamTabTitle, diff --git a/x-pack/plugins/infra/public/pages/metrics/index.tsx b/x-pack/plugins/infra/public/pages/metrics/index.tsx index 51cc4ca098483..b43d7640f6390 100644 --- a/x-pack/plugins/infra/public/pages/metrics/index.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/index.tsx @@ -120,6 +120,7 @@ export const InfrastructurePage = ({ match }: RouteComponentProps) => { > + {/** !! Need to be kept in sync with the searchDeepLinks in x-pack/plugins/infra/public/plugin.ts */} { // mount callback should not use setup dependencies, get start dependencies instead @@ -82,6 +115,32 @@ export class Plugin implements InfraClientPluginClass { order: 8200, appRoute: '/app/metrics', category: DEFAULT_APP_CATEGORIES.observability, + meta: { + // !! Need to be kept in sync with the routes in x-pack/plugins/infra/public/pages/metrics/index.tsx + searchDeepLinks: [ + { + id: 'inventory', + title: i18n.translate('xpack.infra.homePage.inventoryTabTitle', { + defaultMessage: 'Inventory', + }), + path: '/inventory', + }, + { + id: 'metrics-explorer', + title: i18n.translate('xpack.infra.homePage.metricsExplorerTabTitle', { + defaultMessage: 'Metrics Explorer', + }), + path: '/explorer', + }, + { + id: 'settings', + title: i18n.translate('xpack.infra.homePage.settingsTabTitle', { + defaultMessage: 'Settings', + }), + path: '/settings', + }, + ], + }, mount: async (params: AppMountParameters) => { // mount callback should not use setup dependencies, get start dependencies instead const [coreStart, pluginsStart] = await core.getStartServices(); From bff02924b413bd987de51c41d1f393d91d03b36c Mon Sep 17 00:00:00 2001 From: Oliver Gupte Date: Mon, 19 Apr 2021 15:52:53 -0400 Subject: [PATCH 14/56] [APM] Displays a column for service name in the logs tab in trace overview (#97451) * [APM] Displays a column for service name in the logs tab in trace overview (#94812) * Adds i18n --- .../WaterfallWithSummmary/TransactionTabs.tsx | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/WaterfallWithSummmary/TransactionTabs.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/WaterfallWithSummmary/TransactionTabs.tsx index 5d6e46bb2ffd2..7f8ffb62d9e72 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/WaterfallWithSummmary/TransactionTabs.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/WaterfallWithSummmary/TransactionTabs.tsx @@ -137,6 +137,19 @@ function LogsTabContent({ transaction }: { transaction: Transaction }) { endTimestamp={endTimestamp + framePaddingMs} query={`trace.id:"${transaction.trace.id}" OR "${transaction.trace.id}"`} height={640} + columns={[ + { type: 'timestamp' }, + { + type: 'field', + field: 'service.name', + header: i18n.translate( + 'xpack.apm.propertiesTable.tabs.logs.serviceName', + { defaultMessage: 'Service Name' } + ), + width: 200, + }, + { type: 'message' }, + ]} /> ); } From 7a11fac6f0c602a42dcf7c219b7aed65259baf88 Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Mon, 19 Apr 2021 22:01:43 +0200 Subject: [PATCH 15/56] [Embeddable] Remove panel desaturation (#97473) * remove chart saturation styles * add z-index to embPanel label --- .../embeddable/public/lib/panel/_embeddable_panel.scss | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/plugins/embeddable/public/lib/panel/_embeddable_panel.scss b/src/plugins/embeddable/public/lib/panel/_embeddable_panel.scss index d21911f10f82e..f7ee1f3c741c4 100644 --- a/src/plugins/embeddable/public/lib/panel/_embeddable_panel.scss +++ b/src/plugins/embeddable/public/lib/panel/_embeddable_panel.scss @@ -162,12 +162,5 @@ .embPanel__label { position: absolute; padding-left: $euiSizeS; -} - -.embPanel__content[data-error], -.embPanel__content[data-loading] { - pointer-events: none; - filter: grayscale(100%); - /* stylelint-disable-next-line color-named */ - filter: gray; + z-index: $euiZLevel1; } From 7927923f0e104d0954e445de252f2a078876f4b7 Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Mon, 19 Apr 2021 13:02:33 -0700 Subject: [PATCH 16/56] Use doc links service for Canvas (#97059) --- ...-plugin-core-public.doclinksstart.links.md | 3 +++ ...kibana-plugin-core-public.doclinksstart.md | 2 +- ...ublic.navigatetoappoptions.openinnewtab.md | 13 ++++++++++++ .../public/doc_links/doc_links_service.ts | 7 +++++++ src/core/public/public.api.md | 3 +++ x-pack/plugins/canvas/public/application.tsx | 5 +++-- .../canvas/public/lib/documentation_links.ts | 21 ------------------- 7 files changed, 30 insertions(+), 24 deletions(-) create mode 100644 docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.openinnewtab.md delete mode 100644 x-pack/plugins/canvas/public/lib/documentation_links.ts diff --git a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.links.md b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.links.md index 535bd8f11236d..3a383ee72b86a 100644 --- a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.links.md +++ b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.links.md @@ -8,6 +8,9 @@ ```typescript readonly links: { + readonly canvas: { + readonly guide: string; + }; readonly dashboard: { readonly guide: string; readonly drilldowns: string; diff --git a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md index b8d0d2288993e..c5bf4babd9da9 100644 --- a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md +++ b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md @@ -17,5 +17,5 @@ export interface DocLinksStart | --- | --- | --- | | [DOC\_LINK\_VERSION](./kibana-plugin-core-public.doclinksstart.doc_link_version.md) | string | | | [ELASTIC\_WEBSITE\_URL](./kibana-plugin-core-public.doclinksstart.elastic_website_url.md) | string | | -| [links](./kibana-plugin-core-public.doclinksstart.links.md) | {
readonly dashboard: {
readonly guide: string;
readonly drilldowns: string;
readonly drilldownsTriggerPicker: string;
readonly urlDrilldownTemplateSyntax: string;
readonly urlDrilldownVariables: string;
};
readonly discover: Record<string, string>;
readonly filebeat: {
readonly base: string;
readonly installation: string;
readonly configuration: string;
readonly elasticsearchOutput: string;
readonly elasticsearchModule: string;
readonly startup: string;
readonly exportedFields: string;
};
readonly auditbeat: {
readonly base: string;
};
readonly metricbeat: {
readonly base: string;
readonly configure: string;
readonly httpEndpoint: string;
readonly install: string;
readonly start: string;
};
readonly enterpriseSearch: {
readonly base: string;
readonly appSearchBase: string;
readonly workplaceSearchBase: string;
};
readonly heartbeat: {
readonly base: string;
};
readonly logstash: {
readonly base: string;
};
readonly functionbeat: {
readonly base: string;
};
readonly winlogbeat: {
readonly base: string;
};
readonly aggs: {
readonly composite: string;
readonly composite_missing_bucket: string;
readonly date_histogram: string;
readonly date_range: string;
readonly date_format_pattern: string;
readonly filter: string;
readonly filters: string;
readonly geohash_grid: string;
readonly histogram: string;
readonly ip_range: string;
readonly range: string;
readonly significant_terms: string;
readonly terms: string;
readonly avg: string;
readonly avg_bucket: string;
readonly max_bucket: string;
readonly min_bucket: string;
readonly sum_bucket: string;
readonly cardinality: string;
readonly count: string;
readonly cumulative_sum: string;
readonly derivative: string;
readonly geo_bounds: string;
readonly geo_centroid: string;
readonly max: string;
readonly median: string;
readonly min: string;
readonly moving_avg: string;
readonly percentile_ranks: string;
readonly serial_diff: string;
readonly std_dev: string;
readonly sum: string;
readonly top_hits: string;
};
readonly runtimeFields: {
readonly overview: string;
readonly mapping: string;
};
readonly scriptedFields: {
readonly scriptFields: string;
readonly scriptAggs: string;
readonly painless: string;
readonly painlessApi: string;
readonly painlessLangSpec: string;
readonly painlessSyntax: string;
readonly painlessWalkthrough: string;
readonly luceneExpressions: string;
};
readonly indexPatterns: {
readonly introduction: string;
readonly fieldFormattersNumber: string;
readonly fieldFormattersString: string;
};
readonly addData: string;
readonly kibana: string;
readonly upgradeAssistant: string;
readonly elasticsearch: Record<string, string>;
readonly siem: {
readonly guide: string;
readonly gettingStarted: string;
};
readonly query: {
readonly eql: string;
readonly kueryQuerySyntax: string;
readonly luceneQuerySyntax: string;
readonly percolate: string;
readonly queryDsl: string;
};
readonly date: {
readonly dateMath: string;
readonly dateMathIndexNames: string;
};
readonly management: Record<string, string>;
readonly ml: Record<string, string>;
readonly transforms: Record<string, string>;
readonly visualize: Record<string, string>;
readonly apis: Readonly<{
bulkIndexAlias: string;
createIndex: string;
createSnapshotLifecyclePolicy: string;
createRoleMapping: string;
createRoleMappingTemplates: string;
createApiKey: string;
createPipeline: string;
createTransformRequest: string;
cronExpressions: string;
executeWatchActionModes: string;
indexExists: string;
openIndex: string;
putComponentTemplate: string;
painlessExecute: string;
painlessExecuteAPIContexts: string;
putComponentTemplateMetadata: string;
putSnapshotLifecyclePolicy: string;
putIndexTemplateV1: string;
putWatch: string;
simulatePipeline: string;
updateTransform: string;
}>;
readonly observability: Record<string, string>;
readonly alerting: Record<string, string>;
readonly maps: Record<string, string>;
readonly monitoring: Record<string, string>;
readonly security: Readonly<{
apiKeyServiceSettings: string;
clusterPrivileges: string;
elasticsearchSettings: string;
elasticsearchEnableSecurity: string;
indicesPrivileges: string;
kibanaTLS: string;
kibanaPrivileges: string;
mappingRoles: string;
mappingRolesFieldRules: string;
runAsPrivilege: string;
}>;
readonly watcher: Record<string, string>;
readonly ccs: Record<string, string>;
readonly plugins: Record<string, string>;
readonly snapshotRestore: Record<string, string>;
readonly ingest: Record<string, string>;
} | | +| [links](./kibana-plugin-core-public.doclinksstart.links.md) | {
readonly canvas: {
readonly guide: string;
};
readonly dashboard: {
readonly guide: string;
readonly drilldowns: string;
readonly drilldownsTriggerPicker: string;
readonly urlDrilldownTemplateSyntax: string;
readonly urlDrilldownVariables: string;
};
readonly discover: Record<string, string>;
readonly filebeat: {
readonly base: string;
readonly installation: string;
readonly configuration: string;
readonly elasticsearchOutput: string;
readonly elasticsearchModule: string;
readonly startup: string;
readonly exportedFields: string;
};
readonly auditbeat: {
readonly base: string;
};
readonly metricbeat: {
readonly base: string;
readonly configure: string;
readonly httpEndpoint: string;
readonly install: string;
readonly start: string;
};
readonly enterpriseSearch: {
readonly base: string;
readonly appSearchBase: string;
readonly workplaceSearchBase: string;
};
readonly heartbeat: {
readonly base: string;
};
readonly logstash: {
readonly base: string;
};
readonly functionbeat: {
readonly base: string;
};
readonly winlogbeat: {
readonly base: string;
};
readonly aggs: {
readonly composite: string;
readonly composite_missing_bucket: string;
readonly date_histogram: string;
readonly date_range: string;
readonly date_format_pattern: string;
readonly filter: string;
readonly filters: string;
readonly geohash_grid: string;
readonly histogram: string;
readonly ip_range: string;
readonly range: string;
readonly significant_terms: string;
readonly terms: string;
readonly avg: string;
readonly avg_bucket: string;
readonly max_bucket: string;
readonly min_bucket: string;
readonly sum_bucket: string;
readonly cardinality: string;
readonly count: string;
readonly cumulative_sum: string;
readonly derivative: string;
readonly geo_bounds: string;
readonly geo_centroid: string;
readonly max: string;
readonly median: string;
readonly min: string;
readonly moving_avg: string;
readonly percentile_ranks: string;
readonly serial_diff: string;
readonly std_dev: string;
readonly sum: string;
readonly top_hits: string;
};
readonly runtimeFields: {
readonly overview: string;
readonly mapping: string;
};
readonly scriptedFields: {
readonly scriptFields: string;
readonly scriptAggs: string;
readonly painless: string;
readonly painlessApi: string;
readonly painlessLangSpec: string;
readonly painlessSyntax: string;
readonly painlessWalkthrough: string;
readonly luceneExpressions: string;
};
readonly indexPatterns: {
readonly introduction: string;
readonly fieldFormattersNumber: string;
readonly fieldFormattersString: string;
};
readonly addData: string;
readonly kibana: string;
readonly upgradeAssistant: string;
readonly elasticsearch: Record<string, string>;
readonly siem: {
readonly guide: string;
readonly gettingStarted: string;
};
readonly query: {
readonly eql: string;
readonly kueryQuerySyntax: string;
readonly luceneQuerySyntax: string;
readonly percolate: string;
readonly queryDsl: string;
};
readonly date: {
readonly dateMath: string;
readonly dateMathIndexNames: string;
};
readonly management: Record<string, string>;
readonly ml: Record<string, string>;
readonly transforms: Record<string, string>;
readonly visualize: Record<string, string>;
readonly apis: Readonly<{
bulkIndexAlias: string;
createIndex: string;
createSnapshotLifecyclePolicy: string;
createRoleMapping: string;
createRoleMappingTemplates: string;
createApiKey: string;
createPipeline: string;
createTransformRequest: string;
cronExpressions: string;
executeWatchActionModes: string;
indexExists: string;
openIndex: string;
putComponentTemplate: string;
painlessExecute: string;
painlessExecuteAPIContexts: string;
putComponentTemplateMetadata: string;
putSnapshotLifecyclePolicy: string;
putIndexTemplateV1: string;
putWatch: string;
simulatePipeline: string;
updateTransform: string;
}>;
readonly observability: Record<string, string>;
readonly alerting: Record<string, string>;
readonly maps: Record<string, string>;
readonly monitoring: Record<string, string>;
readonly security: Readonly<{
apiKeyServiceSettings: string;
clusterPrivileges: string;
elasticsearchSettings: string;
elasticsearchEnableSecurity: string;
indicesPrivileges: string;
kibanaTLS: string;
kibanaPrivileges: string;
mappingRoles: string;
mappingRolesFieldRules: string;
runAsPrivilege: string;
}>;
readonly watcher: Record<string, string>;
readonly ccs: Record<string, string>;
readonly plugins: Record<string, string>;
readonly snapshotRestore: Record<string, string>;
readonly ingest: Record<string, string>;
} | | diff --git a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.openinnewtab.md b/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.openinnewtab.md new file mode 100644 index 0000000000000..4609fa68b3824 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.openinnewtab.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavigateToAppOptions](./kibana-plugin-core-public.navigatetoappoptions.md) > [openInNewTab](./kibana-plugin-core-public.navigatetoappoptions.openinnewtab.md) + +## NavigateToAppOptions.openInNewTab property + +if true, will open the app in new tab, will share session information via window.open if base + +Signature: + +```typescript +openInNewTab?: boolean; +``` diff --git a/src/core/public/doc_links/doc_links_service.ts b/src/core/public/doc_links/doc_links_service.ts index 4220d3e490f63..1696db23d2278 100644 --- a/src/core/public/doc_links/doc_links_service.ts +++ b/src/core/public/doc_links/doc_links_service.ts @@ -21,12 +21,16 @@ export class DocLinksService { const DOC_LINK_VERSION = injectedMetadata.getKibanaBranch(); const ELASTIC_WEBSITE_URL = 'https://www.elastic.co/'; const ELASTICSEARCH_DOCS = `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/reference/${DOC_LINK_VERSION}/`; + const KIBANA_DOCS = `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/`; const PLUGIN_DOCS = `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/plugins/${DOC_LINK_VERSION}/`; return deepFreeze({ DOC_LINK_VERSION, ELASTIC_WEBSITE_URL, links: { + canvas: { + guide: `${KIBANA_DOCS}canvas.html`, + }, dashboard: { guide: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/dashboard.html`, drilldowns: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/drilldowns.html`, @@ -397,6 +401,9 @@ export interface DocLinksStart { readonly DOC_LINK_VERSION: string; readonly ELASTIC_WEBSITE_URL: string; readonly links: { + readonly canvas: { + readonly guide: string; + }; readonly dashboard: { readonly guide: string; readonly drilldowns: string; diff --git a/src/core/public/public.api.md b/src/core/public/public.api.md index 18133ebec3353..b3ded52a98171 100644 --- a/src/core/public/public.api.md +++ b/src/core/public/public.api.md @@ -490,6 +490,9 @@ export interface DocLinksStart { readonly ELASTIC_WEBSITE_URL: string; // (undocumented) readonly links: { + readonly canvas: { + readonly guide: string; + }; readonly dashboard: { readonly guide: string; readonly drilldowns: string; diff --git a/x-pack/plugins/canvas/public/application.tsx b/x-pack/plugins/canvas/public/application.tsx index f910aff9a83fe..154beb6faa7b0 100644 --- a/x-pack/plugins/canvas/public/application.tsx +++ b/x-pack/plugins/canvas/public/application.tsx @@ -24,7 +24,6 @@ import { KibanaContextProvider } from '../../../../src/plugins/kibana_react/publ import { registerLanguage } from './lib/monaco_language_def'; import { SetupRegistries } from './plugin_api'; import { initRegistries, populateRegistries, destroyRegistries } from './registries'; -import { getDocumentationLinks } from './lib/documentation_links'; import { HelpMenu } from './components/help_menu/help_menu'; import { createStore } from './store'; @@ -127,6 +126,8 @@ export const initializeCanvas = async ( } ); + // Setup documentation links + const { docLinks } = coreStart; // Set help extensions coreStart.chrome.setHelpExtension({ appName: i18n.translate('xpack.canvas.helpMenu.appName', { @@ -135,7 +136,7 @@ export const initializeCanvas = async ( links: [ { linkType: 'documentation', - href: getDocumentationLinks().canvas, + href: docLinks.links.canvas.guide, }, ], content: (domNode) => { diff --git a/x-pack/plugins/canvas/public/lib/documentation_links.ts b/x-pack/plugins/canvas/public/lib/documentation_links.ts deleted file mode 100644 index e76ab6d1db54b..0000000000000 --- a/x-pack/plugins/canvas/public/lib/documentation_links.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * 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 { platformService } from '../services'; - -export const getDocumentationLinks = () => ({ - canvas: `${platformService - .getService() - .getElasticWebsiteUrl()}guide/en/kibana/${platformService - .getService() - .getDocLinkVersion()}/canvas.html`, - numeral: `${platformService - .getService() - .getElasticWebsiteUrl()}guide/en/kibana/${platformService - .getService() - .getDocLinkVersion()}/guide/numeral.html`, -}); From a90afbf1ec9792655d56f151899948325ba2bd46 Mon Sep 17 00:00:00 2001 From: Marshall Main <55718608+marshallmain@users.noreply.github.com> Date: Mon, 19 Apr 2021 16:10:59 -0400 Subject: [PATCH 17/56] [Security Solution][Detections] Add API integration tests for threshold and EQL rules (#97336) * Add API integration tests for threshold rules and more tests for EQL rules * Add API more tests for exceptions and value list exceptions * Fix unit test and add EQL api test checking multiple signal generation Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../detection_engine/get_query_filter.test.ts | 2 +- .../detection_engine/get_query_filter.ts | 12 +- .../tests/create_exceptions.ts | 232 +++++++- .../tests/generating_signals.ts | 545 +++++++++++++++++- .../detection_engine_api_integration/utils.ts | 28 +- 5 files changed, 763 insertions(+), 56 deletions(-) diff --git a/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.test.ts b/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.test.ts index 3c04e2b0da9c3..63a38ad7d71c1 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.test.ts @@ -1161,8 +1161,8 @@ describe('get_filter', () => { expect(request).toEqual({ method: 'POST', path: `/testindex1,testindex2/_eql/search?allow_no_indices=true`, - event_category_field: 'event.other_category', body: { + event_category_field: 'event.other_category', size: 100, query: 'process where true', filter: { diff --git a/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts b/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts index 70fe2b6187aa6..e562d186bc424 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts @@ -65,7 +65,6 @@ interface EqlSearchRequest { method: string; path: string; body: object; - event_category_field?: string; } export const buildEqlSearchRequest = ( @@ -109,7 +108,7 @@ export const buildEqlSearchRequest = ( }, }); } - const baseRequest = { + return { method: 'POST', path: `/${indexString}/_eql/search?allow_no_indices=true`, body: { @@ -120,14 +119,7 @@ export const buildEqlSearchRequest = ( filter: requestFilter, }, }, + event_category_field: eventCategoryOverride, }, }; - if (eventCategoryOverride) { - return { - ...baseRequest, - event_category_field: eventCategoryOverride, - }; - } else { - return baseRequest; - } }; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_exceptions.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_exceptions.ts index e8beef3e58a43..18f9858726723 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_exceptions.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_exceptions.ts @@ -8,9 +8,20 @@ /* eslint-disable @typescript-eslint/naming-convention */ import expect from '@kbn/expect'; -import { CreateRulesSchema } from '../../../../plugins/security_solution/common/detection_engine/schemas/request'; +import { + CreateRulesSchema, + EqlCreateSchema, + QueryCreateSchema, + ThreatMatchCreateSchema, + ThresholdCreateSchema, +} from '../../../../plugins/security_solution/common/detection_engine/schemas/request'; import { getCreateExceptionListItemMinimalSchemaMock } from '../../../../plugins/lists/common/schemas/request/create_exception_list_item_schema.mock'; -import { deleteAllExceptions } from '../../../lists_api_integration/utils'; +import { + createListsIndex, + deleteAllExceptions, + deleteListsIndex, + importFile, +} from '../../../lists_api_integration/utils'; import { RulesSchema } from '../../../../plugins/security_solution/common/detection_engine/schemas/response'; import { getCreateExceptionListMinimalSchemaMock } from '../../../../plugins/lists/common/schemas/request/create_exception_list_schema.mock'; import { CreateExceptionListItemSchema } from '../../../../plugins/lists/common'; @@ -39,6 +50,9 @@ import { getSignalsByIds, findImmutableRuleById, getPrePackagedRulesStatus, + getRuleForSignalTesting, + getOpenSignals, + createRuleWithExceptionEntries, } from '../../utils'; import { ROLES } from '../../../../plugins/security_solution/common/test'; import { createUserAndRole, deleteUserAndRole } from '../roles_users_utils'; @@ -576,49 +590,211 @@ export default ({ getService }: FtrProviderContext) => { }); it('should be able to execute against an exception list that does include valid entries and get back 0 signals', async () => { - const { id, list_id, namespace_type, type } = await createExceptionList( - supertest, - getCreateExceptionListMinimalSchemaMock() - ); - - const exceptionListItem: CreateExceptionListItemSchema = { - ...getCreateExceptionListItemMinimalSchemaMock(), - entries: [ + const rule: QueryCreateSchema = { + name: 'Simple Rule Query', + description: 'Simple Rule Query', + enabled: true, + risk_score: 1, + rule_id: 'rule-1', + severity: 'high', + index: ['auditbeat-*'], + type: 'query', + from: '1900-01-01T00:00:00.000Z', + query: 'host.name: "suricata-sensor-amsterdam"', + }; + const createdRule = await createRuleWithExceptionEntries(supertest, rule, [ + [ { - field: 'host.name', // This matches the query below which will exclude everything + field: 'host.name', // This matches the query above which will exclude everything operator: 'included', type: 'match', value: 'suricata-sensor-amsterdam', }, ], + ]); + const signalsOpen = await getOpenSignals(supertest, es, createdRule); + expect(signalsOpen.hits.hits.length).equal(0); + }); + + it('generates no signals when an exception is added for an EQL rule', async () => { + const rule: EqlCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: 'eql-rule', + type: 'eql', + language: 'eql', + query: 'configuration where agent.id=="a1d7b39c-f898-4dbe-a761-efb61939302d"', }; - await createExceptionListItem(supertest, exceptionListItem); + const createdRule = await createRuleWithExceptionEntries(supertest, rule, [ + [ + { + field: 'host.id', + operator: 'included', + type: 'match', + value: '8cc95778cce5407c809480e8e32ad76b', + }, + ], + ]); + const signalsOpen = await getOpenSignals(supertest, es, createdRule); + expect(signalsOpen.hits.hits.length).equal(0); + }); - const ruleWithException: CreateRulesSchema = { - name: 'Simple Rule Query', - description: 'Simple Rule Query', - enabled: true, - risk_score: 1, - rule_id: 'rule-1', + it('generates no signals when an exception is added for a threshold rule', async () => { + const rule: ThresholdCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: 'threshold-rule', + type: 'threshold', + language: 'kuery', + query: '*:*', + threshold: { + field: 'host.id', + value: 700, + }, + }; + const createdRule = await createRuleWithExceptionEntries(supertest, rule, [ + [ + { + field: 'host.id', + operator: 'included', + type: 'match', + value: '8cc95778cce5407c809480e8e32ad76b', + }, + ], + ]); + const signalsOpen = await getOpenSignals(supertest, es, createdRule); + expect(signalsOpen.hits.hits.length).equal(0); + }); + + it('generates no signals when an exception is added for a threat match rule', async () => { + const rule: ThreatMatchCreateSchema = { + description: 'Detecting root and admin users', + name: 'Query with a rule id', severity: 'high', index: ['auditbeat-*'], - type: 'query', + type: 'threat_match', + risk_score: 55, + language: 'kuery', + rule_id: 'rule-1', from: '1900-01-01T00:00:00.000Z', - query: 'host.name: "suricata-sensor-amsterdam"', - exceptions_list: [ + query: '*:*', + threat_query: 'source.ip: "188.166.120.93"', // narrow things down with a query to a specific source ip + threat_index: ['auditbeat-*'], // We use auditbeat as both the matching index and the threat list for simplicity + threat_mapping: [ + // We match host.name against host.name { - id, - list_id, - namespace_type, - type, + entries: [ + { + field: 'host.name', + value: 'host.name', + type: 'mapping', + }, + ], }, ], + threat_filters: [], }; - const rule = await createRule(supertest, ruleWithException); - await waitForRuleSuccessOrStatus(supertest, rule.id); - const signalsOpen = await getSignalsByIds(supertest, [rule.id]); + + const createdRule = await createRuleWithExceptionEntries(supertest, rule, [ + [ + { + field: 'source.ip', + operator: 'included', + type: 'match', + value: '188.166.120.93', + }, + ], + ]); + const signalsOpen = await getOpenSignals(supertest, es, createdRule); expect(signalsOpen.hits.hits.length).equal(0); }); + describe('rules with value list exceptions', () => { + beforeEach(async () => { + await createListsIndex(supertest); + }); + + afterEach(async () => { + await deleteListsIndex(supertest); + }); + + it('generates no signals when a value list exception is added for a query rule', async () => { + const valueListId = 'value-list-id'; + await importFile(supertest, 'keyword', ['suricata-sensor-amsterdam'], valueListId); + const rule: QueryCreateSchema = { + name: 'Simple Rule Query', + description: 'Simple Rule Query', + enabled: true, + risk_score: 1, + rule_id: 'rule-1', + severity: 'high', + index: ['auditbeat-*'], + type: 'query', + from: '1900-01-01T00:00:00.000Z', + query: 'host.name: "suricata-sensor-amsterdam"', + }; + const createdRule = await createRuleWithExceptionEntries(supertest, rule, [ + [ + { + field: 'host.name', + operator: 'included', + type: 'list', + list: { + id: valueListId, + type: 'keyword', + }, + }, + ], + ]); + const signalsOpen = await getOpenSignals(supertest, es, createdRule); + expect(signalsOpen.hits.hits.length).equal(0); + }); + + it('generates no signals when a value list exception is added for a threat match rule', async () => { + const valueListId = 'value-list-id'; + await importFile(supertest, 'keyword', ['zeek-sensor-amsterdam'], valueListId); + const rule: ThreatMatchCreateSchema = { + description: 'Detecting root and admin users', + name: 'Query with a rule id', + severity: 'high', + index: ['auditbeat-*'], + type: 'threat_match', + risk_score: 55, + language: 'kuery', + rule_id: 'rule-1', + from: '1900-01-01T00:00:00.000Z', + query: '*:*', + threat_query: 'source.ip: "188.166.120.93"', // narrow things down with a query to a specific source ip + threat_index: ['auditbeat-*'], // We use auditbeat as both the matching index and the threat list for simplicity + threat_mapping: [ + // We match host.name against host.name + { + entries: [ + { + field: 'host.name', + value: 'host.name', + type: 'mapping', + }, + ], + }, + ], + threat_filters: [], + }; + + const createdRule = await createRuleWithExceptionEntries(supertest, rule, [ + [ + { + field: 'host.name', + operator: 'included', + type: 'list', + list: { + id: valueListId, + type: 'keyword', + }, + }, + ], + ]); + const signalsOpen = await getOpenSignals(supertest, es, createdRule); + expect(signalsOpen.hits.hits.length).equal(0); + }); + }); }); }); }); diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/generating_signals.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/generating_signals.ts index 08fb9222e1789..6f437f7bcc8e5 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/generating_signals.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/generating_signals.ts @@ -6,11 +6,12 @@ */ import expect from '@kbn/expect'; -import { orderBy } from 'lodash'; +import { orderBy, get } from 'lodash'; import { EqlCreateSchema, QueryCreateSchema, + ThresholdCreateSchema, } from '../../../../plugins/security_solution/common/detection_engine/schemas/request'; import { DEFAULT_SIGNALS_INDEX } from '../../../../plugins/security_solution/common/constants'; import { FtrProviderContext } from '../../common/ftr_provider_context'; @@ -216,19 +217,286 @@ export default ({ getService }: FtrProviderContext) => { }); describe('EQL Rules', () => { - it('generates signals from EQL sequences in the expected form', async () => { + it('generates a correctly formatted signal from EQL non-sequence queries', async () => { const rule: EqlCreateSchema = { ...getRuleForSignalTesting(['auditbeat-*']), rule_id: 'eql-rule', type: 'eql', language: 'eql', - query: 'sequence by host.name [any where true] [any where true]', + query: 'configuration where agent.id=="a1d7b39c-f898-4dbe-a761-efb61939302d"', + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + await waitForSignalsToBePresent(supertest, 1, [id]); + const signals = await getSignalsByRuleIds(supertest, ['eql-rule']); + expect(signals.hits.hits.length).eql(1); + const fullSignal = signals.hits.hits[0]._source; + + expect(fullSignal).eql({ + '@timestamp': fullSignal['@timestamp'], + agent: { + ephemeral_id: '0010d67a-14f7-41da-be30-489fea735967', + hostname: 'suricata-zeek-sensor-toronto', + id: 'a1d7b39c-f898-4dbe-a761-efb61939302d', + type: 'auditbeat', + version: '8.0.0', + }, + auditd: { + data: { + audit_enabled: '1', + old: '1', + }, + message_type: 'config_change', + result: 'success', + sequence: 1496, + session: 'unset', + summary: { + actor: { + primary: 'unset', + }, + object: { + primary: '1', + type: 'audit-config', + }, + }, + }, + cloud: { + instance: { + id: '133555295', + }, + provider: 'digitalocean', + region: 'tor1', + }, + ecs: { + version: '1.0.0-beta2', + }, + event: { + action: 'changed-audit-configuration', + category: 'configuration', + module: 'auditd', + kind: 'signal', + }, + host: { + architecture: 'x86_64', + containerized: false, + hostname: 'suricata-zeek-sensor-toronto', + id: '8cc95778cce5407c809480e8e32ad76b', + name: 'suricata-zeek-sensor-toronto', + os: { + codename: 'bionic', + family: 'debian', + kernel: '4.15.0-45-generic', + name: 'Ubuntu', + platform: 'ubuntu', + version: '18.04.2 LTS (Bionic Beaver)', + }, + }, + service: { + type: 'auditd', + }, + user: { + audit: { + id: 'unset', + }, + }, + signal: { + rule: fullSignal.signal.rule, + original_time: fullSignal.signal.original_time, + status: 'open', + depth: 1, + ancestors: [ + { + depth: 0, + id: '9xbRBmkBR346wHgngz2D', + index: 'auditbeat-8.0.0-2019.02.19-000001', + type: 'event', + }, + ], + original_event: { + action: 'changed-audit-configuration', + category: 'configuration', + module: 'auditd', + }, + parent: { + depth: 0, + id: '9xbRBmkBR346wHgngz2D', + index: 'auditbeat-8.0.0-2019.02.19-000001', + type: 'event', + }, + parents: [ + { + depth: 0, + id: '9xbRBmkBR346wHgngz2D', + index: 'auditbeat-8.0.0-2019.02.19-000001', + type: 'event', + }, + ], + _meta: { + version: SIGNALS_TEMPLATE_VERSION, + }, + }, + }); + }); + + it('generates up to max_signals for non-sequence EQL queries', async () => { + const rule: EqlCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: 'eql-rule', + type: 'eql', + language: 'eql', + query: 'any where true', + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + await waitForSignalsToBePresent(supertest, 100, [id]); + const signals = await getSignalsByIds(supertest, [id], 1000); + const filteredSignals = signals.hits.hits.filter( + (signal) => signal._source.signal.depth === 1 + ); + expect(filteredSignals.length).eql(100); + }); + + it('uses the provided event_category_override', async () => { + const rule: EqlCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: 'eql-rule', + type: 'eql', + language: 'eql', + query: 'config_change where agent.id=="a1d7b39c-f898-4dbe-a761-efb61939302d"', + event_category_override: 'auditd.message_type', }; const { id } = await createRule(supertest, rule); await waitForRuleSuccessOrStatus(supertest, id); await waitForSignalsToBePresent(supertest, 1, [id]); const signals = await getSignalsByRuleIds(supertest, ['eql-rule']); - const signal = signals.hits.hits[0]._source.signal; + expect(signals.hits.hits.length).eql(1); + const fullSignal = signals.hits.hits[0]._source; + + expect(fullSignal).eql({ + '@timestamp': fullSignal['@timestamp'], + agent: { + ephemeral_id: '0010d67a-14f7-41da-be30-489fea735967', + hostname: 'suricata-zeek-sensor-toronto', + id: 'a1d7b39c-f898-4dbe-a761-efb61939302d', + type: 'auditbeat', + version: '8.0.0', + }, + auditd: { + data: { + audit_enabled: '1', + old: '1', + }, + message_type: 'config_change', + result: 'success', + sequence: 1496, + session: 'unset', + summary: { + actor: { + primary: 'unset', + }, + object: { + primary: '1', + type: 'audit-config', + }, + }, + }, + cloud: { + instance: { + id: '133555295', + }, + provider: 'digitalocean', + region: 'tor1', + }, + ecs: { + version: '1.0.0-beta2', + }, + event: { + action: 'changed-audit-configuration', + category: 'configuration', + module: 'auditd', + kind: 'signal', + }, + host: { + architecture: 'x86_64', + containerized: false, + hostname: 'suricata-zeek-sensor-toronto', + id: '8cc95778cce5407c809480e8e32ad76b', + name: 'suricata-zeek-sensor-toronto', + os: { + codename: 'bionic', + family: 'debian', + kernel: '4.15.0-45-generic', + name: 'Ubuntu', + platform: 'ubuntu', + version: '18.04.2 LTS (Bionic Beaver)', + }, + }, + service: { + type: 'auditd', + }, + user: { + audit: { + id: 'unset', + }, + }, + signal: { + rule: fullSignal.signal.rule, + original_time: fullSignal.signal.original_time, + status: 'open', + depth: 1, + ancestors: [ + { + depth: 0, + id: '9xbRBmkBR346wHgngz2D', + index: 'auditbeat-8.0.0-2019.02.19-000001', + type: 'event', + }, + ], + original_event: { + action: 'changed-audit-configuration', + category: 'configuration', + module: 'auditd', + }, + parent: { + depth: 0, + id: '9xbRBmkBR346wHgngz2D', + index: 'auditbeat-8.0.0-2019.02.19-000001', + type: 'event', + }, + parents: [ + { + depth: 0, + id: '9xbRBmkBR346wHgngz2D', + index: 'auditbeat-8.0.0-2019.02.19-000001', + type: 'event', + }, + ], + _meta: { + version: SIGNALS_TEMPLATE_VERSION, + }, + }, + }); + }); + + it('generates building block signals from EQL sequences in the expected form', async () => { + const rule: EqlCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: 'eql-rule', + type: 'eql', + language: 'eql', + query: 'sequence by host.name [anomoly where true] [any where true]', + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + await waitForSignalsToBePresent(supertest, 3, [id]); + const signals = await getSignalsByRuleIds(supertest, ['eql-rule']); + const buildingBlock = signals.hits.hits.find( + (signal) => + signal._source.signal.depth === 1 && + get(signal._source, 'signal.original_event.category') === 'anomoly' + ); + expect(buildingBlock).not.eql(undefined); + const signal = buildingBlock!._source.signal; expect(signal).eql({ rule: signal.rule, @@ -239,26 +507,26 @@ export default ({ getService }: FtrProviderContext) => { ancestors: [ { depth: 0, - id: 'gCF0B2kBR346wHgnb7m0', + id: 'VhXOBmkBR346wHgnLP8T', index: 'auditbeat-8.0.0-2019.02.19-000001', type: 'event', }, ], original_event: { - action: 'error', - category: 'user-login', + action: 'changed-promiscuous-mode-on-device', + category: 'anomoly', module: 'auditd', }, parent: { depth: 0, - id: 'gCF0B2kBR346wHgnb7m0', + id: 'VhXOBmkBR346wHgnLP8T', index: 'auditbeat-8.0.0-2019.02.19-000001', type: 'event', }, parents: [ { depth: 0, - id: 'gCF0B2kBR346wHgnb7m0', + id: 'VhXOBmkBR346wHgnLP8T', index: 'auditbeat-8.0.0-2019.02.19-000001', type: 'event', }, @@ -269,24 +537,23 @@ export default ({ getService }: FtrProviderContext) => { }); }); - it('generates building block signals from EQL sequences in the expected form', async () => { + it('generates shell signals from EQL sequences in the expected form', async () => { const rule: EqlCreateSchema = { ...getRuleForSignalTesting(['auditbeat-*']), rule_id: 'eql-rule', type: 'eql', language: 'eql', - query: 'sequence by host.name [any where true] [any where true]', + query: 'sequence by host.name [anomoly where true] [any where true]', }; const { id } = await createRule(supertest, rule); await waitForRuleSuccessOrStatus(supertest, id); - await waitForSignalsToBePresent(supertest, 10, [id]); + await waitForSignalsToBePresent(supertest, 3, [id]); const signalsOpen = await getSignalsByRuleIds(supertest, ['eql-rule']); const sequenceSignal = signalsOpen.hits.hits.find( (signal) => signal._source.signal.depth === 2 ); const signal = sequenceSignal!._source.signal; const eventIds = signal.parents.map((event) => event.id); - expect(signal).eql({ status: 'open', depth: 2, @@ -295,7 +562,7 @@ export default ({ getService }: FtrProviderContext) => { ancestors: [ { depth: 0, - id: 'gCF0B2kBR346wHgnb7m0', + id: 'VhXOBmkBR346wHgnLP8T', index: 'auditbeat-8.0.0-2019.02.19-000001', type: 'event', }, @@ -308,7 +575,7 @@ export default ({ getService }: FtrProviderContext) => { }, { depth: 0, - id: 'CCF0B2kBR346wHgngLtX', + id: '4hbXBmkBR346wHgn6fdp', index: 'auditbeat-8.0.0-2019.02.19-000001', type: 'event', }, @@ -341,6 +608,254 @@ export default ({ getService }: FtrProviderContext) => { }, }); }); + + it('generates up to max_signals with an EQL rule', async () => { + const rule: EqlCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: 'eql-rule', + type: 'eql', + language: 'eql', + query: 'sequence by host.name [any where true] [any where true]', + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + // For EQL rules, max_signals is the maximum number of detected sequences: each sequence has a building block + // alert for each event in the sequence, so max_signals=100 results in 200 building blocks in addition to + // 100 regular alerts + await waitForSignalsToBePresent(supertest, 300, [id]); + const signalsOpen = await getSignalsByIds(supertest, [id], 1000); + expect(signalsOpen.hits.hits.length).eql(300); + const shellSignals = signalsOpen.hits.hits.filter( + (signal) => signal._source.signal.depth === 2 + ); + const buildingBlocks = signalsOpen.hits.hits.filter( + (signal) => signal._source.signal.depth === 1 + ); + expect(shellSignals.length).eql(100); + expect(buildingBlocks.length).eql(200); + }); + }); + + describe('Threshold Rules', () => { + it('generates 1 signal from Threshold rules when threshold is met', async () => { + const ruleId = 'threshold-rule'; + const rule: ThresholdCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: ruleId, + type: 'threshold', + language: 'kuery', + query: '*:*', + threshold: { + field: 'host.id', + value: 700, + }, + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + await waitForSignalsToBePresent(supertest, 1, [id]); + const signalsOpen = await getSignalsByRuleIds(supertest, [ruleId]); + expect(signalsOpen.hits.hits.length).eql(1); + const signal = signalsOpen.hits.hits[0]; + expect(signal._source.signal.threshold_result).eql({ + terms: [ + { + field: 'host.id', + value: '8cc95778cce5407c809480e8e32ad76b', + }, + ], + count: 788, + from: '1900-01-01T00:00:00.000Z', + }); + }); + + it('generates 2 signals from Threshold rules when threshold is met', async () => { + const ruleId = 'threshold-rule'; + const rule: ThresholdCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: ruleId, + type: 'threshold', + language: 'kuery', + query: '*:*', + threshold: { + field: 'host.id', + value: 100, + }, + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + await waitForSignalsToBePresent(supertest, 2, [id]); + const signalsOpen = await getSignalsByRuleIds(supertest, [ruleId]); + expect(signalsOpen.hits.hits.length).eql(2); + }); + + it('applies the provided query before bucketing ', async () => { + const ruleId = 'threshold-rule'; + const rule: ThresholdCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: ruleId, + type: 'threshold', + language: 'kuery', + query: 'host.id:"2ab45fc1c41e4c84bbd02202a7e5761f"', + threshold: { + field: 'process.name', + value: 21, + }, + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + await waitForSignalsToBePresent(supertest, 1, [id]); + const signalsOpen = await getSignalsByRuleIds(supertest, [ruleId]); + expect(signalsOpen.hits.hits.length).eql(1); + }); + + it('generates no signals from Threshold rules when threshold is met and cardinality is not met', async () => { + const ruleId = 'threshold-rule'; + const rule: ThresholdCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: ruleId, + type: 'threshold', + language: 'kuery', + query: '*:*', + threshold: { + field: 'host.id', + value: 100, + cardinality: [ + { + field: 'destination.ip', + value: 100, + }, + ], + }, + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + const signalsOpen = await getSignalsByRuleIds(supertest, [ruleId]); + expect(signalsOpen.hits.hits.length).eql(0); + }); + + it('generates no signals from Threshold rules when cardinality is met and threshold is not met', async () => { + const ruleId = 'threshold-rule'; + const rule: ThresholdCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: ruleId, + type: 'threshold', + language: 'kuery', + query: '*:*', + threshold: { + field: 'host.id', + value: 1000, + cardinality: [ + { + field: 'destination.ip', + value: 5, + }, + ], + }, + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + const signalsOpen = await getSignalsByRuleIds(supertest, [ruleId]); + expect(signalsOpen.hits.hits.length).eql(0); + }); + + it('generates signals from Threshold rules when threshold and cardinality are both met', async () => { + const ruleId = 'threshold-rule'; + const rule: ThresholdCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: ruleId, + type: 'threshold', + language: 'kuery', + query: '*:*', + threshold: { + field: 'host.id', + value: 100, + cardinality: [ + { + field: 'destination.ip', + value: 5, + }, + ], + }, + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + const signalsOpen = await getSignalsByRuleIds(supertest, [ruleId]); + expect(signalsOpen.hits.hits.length).eql(1); + const signal = signalsOpen.hits.hits[0]; + expect(signal._source.signal.threshold_result).eql({ + terms: [ + { + field: 'host.id', + value: '8cc95778cce5407c809480e8e32ad76b', + }, + ], + cardinality: [ + { + field: 'destination.ip', + value: 7, + }, + ], + count: 788, + from: '1900-01-01T00:00:00.000Z', + }); + }); + + it('should not generate signals if only one field meets the threshold requirement', async () => { + const ruleId = 'threshold-rule'; + const rule: ThresholdCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: ruleId, + type: 'threshold', + language: 'kuery', + query: '*:*', + threshold: { + field: ['host.id', 'process.name'], + value: 22, + }, + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + const signalsOpen = await getSignalsByRuleIds(supertest, [ruleId]); + expect(signalsOpen.hits.hits.length).eql(0); + }); + + it('generates signals from Threshold rules when bucketing by multiple fields', async () => { + const ruleId = 'threshold-rule'; + const rule: ThresholdCreateSchema = { + ...getRuleForSignalTesting(['auditbeat-*']), + rule_id: ruleId, + type: 'threshold', + language: 'kuery', + query: '*:*', + threshold: { + field: ['host.id', 'process.name', 'event.module'], + value: 21, + }, + }; + const { id } = await createRule(supertest, rule); + await waitForRuleSuccessOrStatus(supertest, id); + const signalsOpen = await getSignalsByRuleIds(supertest, [ruleId]); + expect(signalsOpen.hits.hits.length).eql(1); + const signal = signalsOpen.hits.hits[0]; + expect(signal._source.signal.threshold_result).eql({ + terms: [ + { + field: 'event.module', + value: 'system', + }, + { + field: 'host.id', + value: '2ab45fc1c41e4c84bbd02202a7e5761f', + }, + { + field: 'process.name', + value: 'sshd', + }, + ], + count: 21, + from: '1900-01-01T00:00:00.000Z', + }); + }); }); }); diff --git a/x-pack/test/detection_engine_api_integration/utils.ts b/x-pack/test/detection_engine_api_integration/utils.ts index d821b57faf225..55011ec055190 100644 --- a/x-pack/test/detection_engine_api_integration/utils.ts +++ b/x-pack/test/detection_engine_api_integration/utils.ts @@ -778,6 +778,17 @@ export const countDownES = async ( ); }; +/** + * Refresh an index, making changes available to search. + * Useful for tests where we want to ensure that a rule does NOT create alerts, e.g. testing exceptions. + * @param es The ElasticSearch handle + */ +export const refreshIndex = async (es: KibanaClient, index?: string) => { + await es.indices.refresh({ + index, + }); +}; + /** * Does a plain countdown and checks against a boolean to determine if to wait and try again. * This is useful for over the wire things that can cause issues such as conflict or timeouts @@ -1107,7 +1118,7 @@ export const installPrePackagedRules = async ( */ export const createRuleWithExceptionEntries = async ( supertest: SuperTest, - rule: QueryCreateSchema, + rule: CreateRulesSchema, entries: NonEmptyEntriesArray[] ): Promise => { // eslint-disable-next-line @typescript-eslint/naming-convention @@ -1141,7 +1152,7 @@ export const createRuleWithExceptionEntries = async ( // the rule to sometimes not filter correctly the first time with an exception list // or other timing issues. Then afterwards wait for the rule to have succeeded before // returning. - const ruleWithException: QueryCreateSchema = { + const ruleWithException: CreateRulesSchema = { ...rule, enabled: false, exceptions_list: [ @@ -1202,3 +1213,16 @@ export const deleteMigrations = async ({ ) ); }; + +export const getOpenSignals = async ( + supertest: SuperTest, + es: KibanaClient, + rule: FullResponseSchema +) => { + await waitForRuleSuccessOrStatus(supertest, rule.id); + // Critically important that we wait for rule success AND refresh the write index in that order before we + // assert that no signals were created. Otherwise, signals could be written but not available to query yet + // when we search, causing tests that check that signals are NOT created to pass when they should fail. + await refreshIndex(es, rule.output_index); + return getSignalsByIds(supertest, [rule.id]); +}; From c67cda194f3bf225cf80b42acf679b22ea587d82 Mon Sep 17 00:00:00 2001 From: Nathan L Smith Date: Mon, 19 Apr 2021 15:12:05 -0500 Subject: [PATCH 18/56] Flyout and alerts table improvements (#96976) * Extend the TopAlert interface to include all the properties of the alert as well as the computed properties we add. Use these in the table and flyout. * Create a severity badge and use it in the table and flyout ![image](https://user-images.githubusercontent.com/9912/114796499-bc7d2b00-9d56-11eb-89fa-17c0240819ee.png) * Fix the query language toggle in the search bar ![image](https://user-images.githubusercontent.com/9912/114796507-c69f2980-9d56-11eb-8cfc-8432e4a71e77.png) # Table * Update status badges to match design ![image](https://user-images.githubusercontent.com/9912/114796518-ce5ece00-9d56-11eb-80a7-b8c8aa63d6b5.png) * Remove checkbox column * Make flyout open when clicking the reason * Change alert details link to a view in app link ![image](https://user-images.githubusercontent.com/9912/114796530-d74f9f80-9d56-11eb-951c-91e544c6e1d5.png) # Flyout * Add action button to flyout * Replace table on flyout with description list * Remove unused tabs on flyout * Add rule type to flyout heading * Add expected and actual value to the flyout ![image](https://user-images.githubusercontent.com/9912/114796550-e59dbb80-9d56-11eb-9825-25da979c3b22.png) Fixes #96907. --- .../public/pages/alerts/alerts.stories.tsx | 13 +- .../public/pages/alerts/alerts_flyout.tsx | 120 ----------------- .../alerts_flyout/alerts_flyout.stories.tsx | 86 ++++++++++++ .../pages/alerts/alerts_flyout/index.tsx | 126 ++++++++++++++++++ .../public/pages/alerts/alerts_search_bar.tsx | 6 +- .../public/pages/alerts/alerts_table.tsx | 100 ++++++++------ .../public/pages/alerts/example_data.ts | 11 +- .../public/pages/alerts/index.tsx | 15 ++- .../pages/alerts/severity_badge.stories.tsx | 21 +++ .../public/pages/alerts/severity_badge.tsx | 30 +++++ .../rules/observability_rule_registry_mock.ts | 2 +- 11 files changed, 339 insertions(+), 191 deletions(-) delete mode 100644 x-pack/plugins/observability/public/pages/alerts/alerts_flyout.tsx create mode 100644 x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx create mode 100644 x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx create mode 100644 x-pack/plugins/observability/public/pages/alerts/severity_badge.stories.tsx create mode 100644 x-pack/plugins/observability/public/pages/alerts/severity_badge.tsx diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx index 33eec65c40dce..6940f6aaad692 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx @@ -16,18 +16,12 @@ import { PluginContext, PluginContextValue } from '../../context/plugin_context' import { createObservabilityRuleRegistryMock } from '../../rules/observability_rule_registry_mock'; import { createCallObservabilityApi } from '../../services/call_observability_api'; import type { ObservabilityAPIReturnType } from '../../services/call_observability_api/types'; -import { AlertsFlyout } from './alerts_flyout'; -import { TopAlert } from './alerts_table'; -import { apmAlertResponseExample, dynamicIndexPattern, flyoutItemExample } from './example_data'; +import { apmAlertResponseExample, dynamicIndexPattern } from './example_data'; interface PageArgs { items: ObservabilityAPIReturnType<'GET /api/observability/rules/alerts/top'>; } -interface FlyoutArgs { - alert: TopAlert; -} - export default { title: 'app/Alerts', component: AlertsPage, @@ -95,8 +89,3 @@ export function EmptyState(_args: PageArgs) { return ; } EmptyState.args = { items: [] } as PageArgs; - -export function Flyout({ alert }: FlyoutArgs) { - return {}} />; -} -Flyout.args = { alert: flyoutItemExample } as FlyoutArgs; diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout.tsx deleted file mode 100644 index 4b383283c4d4b..0000000000000 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout.tsx +++ /dev/null @@ -1,120 +0,0 @@ -/* - * 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 { - EuiFlyout, - EuiFlyoutHeader, - EuiFlyoutProps, - EuiInMemoryTable, - EuiSpacer, - EuiTabbedContent, - EuiTitle, -} from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import React from 'react'; -import { asDuration } from '../../../common/utils/formatters'; -import { TopAlert } from './alerts_table'; - -type AlertsFlyoutProps = { alert: TopAlert } & EuiFlyoutProps; - -export function AlertsFlyout(props: AlertsFlyoutProps) { - const { onClose, alert } = props; - - const overviewListItems = [ - { - title: 'Status', - description: alert.active ? 'Active' : 'Recovered', - }, - { - title: 'Severity', - description: alert.severityLevel || '-', // TODO: badge and "(changed 2 min ago)" - }, - // { - // title: 'Affected entity', - // description: affectedEntity || '-', // TODO: link to entity - // }, - { - title: 'Triggered', - description: alert.start, // TODO: format date - }, - { - title: 'Duration', - description: asDuration(alert.duration, { extended: true }) || '-', // TODO: format duration - }, - // { - // title: 'Expected value', - // description: expectedValue || '-', - // }, - // { - // title: 'Actual value', - // description: actualValue || '-', - // }, - { - title: 'Rule type', - description: alert.ruleCategory || '-', - }, - ]; - - const tabs = [ - { - id: 'overview', - name: i18n.translate('xpack.observability.alerts.flyoutOverviewTabTitle', { - defaultMessage: 'Overview', - }), - content: ( - <> - - - {/* - -

Severity log

-
- ( - <> - {item.severity} {item.message} - - ), - }, - ]} - items={severityLog ?? []} - /> */} - - ), - }, - { - id: 'metadata', - name: i18n.translate('xpack.observability.alerts.flyoutMetadataTabTitle', { - defaultMessage: 'Metadata', - }), - disabled: true, - content: <>, - }, - ]; - - return ( - - - -

{alert.ruleName}

-
- -
-
- ); -} diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx new file mode 100644 index 0000000000000..96d3c1fc9c390 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx @@ -0,0 +1,86 @@ +/* + * 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 React, { ComponentType } from 'react'; +import { KibanaContextProvider } from '../../../../../../../src/plugins/kibana_react/public'; +import { PluginContext, PluginContextValue } from '../../../context/plugin_context'; +import { TopAlert } from '../'; +import { AlertsFlyout } from './'; + +interface Args { + alert: TopAlert; +} + +export default { + title: 'app/Alerts/AlertsFlyout', + component: AlertsFlyout, + decorators: [ + (Story: ComponentType) => { + return ( + {} }, + uiSettings: { + get: (setting: string) => { + if (setting === 'dateFormat') { + return 'MMM D, YYYY @ HH:mm:ss.SSS'; + } + }, + }, + }} + > + {' '} + '' } }, + }, + } as unknown) as PluginContextValue + } + > + + + + // + ); + }, + ], +}; + +export function Example({ alert }: Args) { + return {}} />; +} +Example.args = { + alert: { + link: '/app/apm/services/opbeans-java?rangeFrom=now-15m&rangeTo=now', + reason: 'Error count for opbeans-java was above the threshold', + active: true, + start: 1618235449493, + + 'rule.id': 'apm.error_rate', + 'service.environment': 'production', + 'service.name': 'opbeans-java', + 'rule.name': 'Error count threshold | opbeans-java (smith test)', + 'kibana.rac.alert.duration.us': 61787000, + 'kibana.observability.evaluation.threshold': 0, + 'kibana.rac.alert.status': 'open', + tags: ['apm', 'service.name:opbeans-java'], + 'kibana.rac.alert.uuid': 'c50fbc70-0d77-462d-ac0a-f2bd0b8512e4', + 'rule.uuid': '474920d0-93e9-11eb-ac86-0b455460de81', + 'event.action': 'active', + '@timestamp': '2021-04-14T21:43:42.966Z', + 'kibana.rac.alert.id': 'apm.error_rate_opbeans-java_production', + 'processor.event': 'error', + 'kibana.rac.alert.start': '2021-04-14T21:42:41.179Z', + 'kibana.rac.producer': 'apm', + 'event.kind': 'state', + 'rule.category': 'Error count threshold', + 'kibana.observability.evaluation.value': 1, + }, +} as Args; diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx new file mode 100644 index 0000000000000..892274b2fb8b0 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx @@ -0,0 +1,126 @@ +/* + * 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 { + EuiButton, + EuiDescriptionList, + EuiFlexGroup, + EuiFlexItem, + EuiFlyout, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiFlyoutProps, + EuiSpacer, + EuiTabbedContent, + EuiText, + EuiTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import moment from 'moment-timezone'; +import React from 'react'; +import { useUiSetting } from '../../../../../../../src/plugins/kibana_react/public'; +import { asDuration } from '../../../../common/utils/formatters'; +import { usePluginContext } from '../../../hooks/use_plugin_context'; +import { TopAlert } from '../'; +import { SeverityBadge } from '../severity_badge'; + +type AlertsFlyoutProps = { alert: TopAlert } & EuiFlyoutProps; + +export function AlertsFlyout({ onClose, alert }: AlertsFlyoutProps) { + const dateFormat = useUiSetting('dateFormat'); + const { core } = usePluginContext(); + const { prepend } = core.http.basePath; + + const overviewListItems = [ + { + title: i18n.translate('xpack.observability.alertsFlyout.statusLabel', { + defaultMessage: 'Status', + }), + description: alert.active ? 'Active' : 'Recovered', + }, + { + title: i18n.translate('xpack.observability.alertsFlyout.severityLabel', { + defaultMessage: 'Severity', + }), + description: , + }, + { + title: i18n.translate('xpack.observability.alertsFlyout.triggeredLabel', { + defaultMessage: 'Triggered', + }), + description: ( + {moment(alert.start).format(dateFormat)} + ), + }, + { + title: i18n.translate('xpack.observability.alertsFlyout.durationLabel', { + defaultMessage: 'Duration', + }), + description: asDuration(alert['kibana.rac.alert.duration.us'], { extended: true }), + }, + { + title: i18n.translate('xpack.observability.alertsFlyout.expectedValueLabel', { + defaultMessage: 'Expected value', + }), + description: alert['kibana.observability.evaluation.threshold'] ?? '-', + }, + { + title: i18n.translate('xpack.observability.alertsFlyout.actualValueLabel', { + defaultMessage: 'Actual value', + }), + description: alert['kibana.observability.evaluation.value'] ?? '-', + }, + { + title: i18n.translate('xpack.observability.alertsFlyout.ruleTypeLabel', { + defaultMessage: 'Rule type', + }), + description: alert['rule.category'] ?? '-', + }, + ]; + + const tabs = [ + { + id: 'overview', + name: i18n.translate('xpack.observability.alerts.flyoutOverviewTabTitle', { + defaultMessage: 'Overview', + }), + content: ( + <> + + + + ), + }, + ]; + + return ( + + + +

{alert['rule.name']}

+
+ + {alert.reason} +
+ + + + {alert.link && ( + + + + + View in app + + + + + )} +
+ ); +} diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx index 97595b456d503..c0a08fa7faac7 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_search_bar.tsx @@ -6,7 +6,7 @@ */ import { i18n } from '@kbn/i18n'; -import React, { useMemo } from 'react'; +import React, { useMemo, useState } from 'react'; import { SearchBar, TimeHistory } from '../../../../../../src/plugins/data/public'; import { Storage } from '../../../../../../src/plugins/kibana_utils/public'; import { useFetcher } from '../../hooks/use_fetcher'; @@ -29,6 +29,7 @@ export function AlertsSearchBar({ const timeHistory = useMemo(() => { return new TimeHistory(new Storage(localStorage)); }, []); + const [queryLanguage, setQueryLanguage] = useState<'lucene' | 'kuery'>('kuery'); const { data: dynamicIndexPattern } = useFetcher(({ signal }) => { return callObservabilityApi({ @@ -43,7 +44,7 @@ export function AlertsSearchBar({ placeholder={i18n.translate('xpack.observability.alerts.searchBarPlaceholder', { defaultMessage: '"domain": "ecommerce" AND ("service.name": "ProductCatalogService" …)', })} - query={{ query: query ?? '', language: 'kuery' }} + query={{ query: query ?? '', language: queryLanguage }} timeHistory={timeHistory} dateRangeFrom={rangeFrom} dateRangeTo={rangeTo} @@ -55,6 +56,7 @@ export function AlertsSearchBar({ dateRange, query: typeof nextQuery?.query === 'string' ? nextQuery.query : '', }); + setQueryLanguage((nextQuery?.language || 'kuery') as 'kuery' | 'lucene'); }} /> ); diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx index 0985597cc4b69..b0ff156fde377 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx @@ -6,31 +6,22 @@ */ import { + CustomItemAction, EuiBasicTable, EuiBasicTableColumn, EuiBasicTableProps, - DefaultItemAction, - EuiTableSelectionType, + EuiButton, + EuiIconTip, EuiLink, - EuiBadge, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; import { asDuration } from '../../../common/utils/formatters'; import { TimestampTooltip } from '../../components/shared/timestamp_tooltip'; import { usePluginContext } from '../../hooks/use_plugin_context'; +import type { TopAlert } from './'; import { AlertsFlyout } from './alerts_flyout'; - -export interface TopAlert { - start: number; - duration: number; - reason: string; - link?: string; - severityLevel?: string; - active: boolean; - ruleName: string; - ruleCategory: string; -} +import { SeverityBadge } from './severity_badge'; type AlertsTableProps = Omit< EuiBasicTableProps, @@ -43,13 +34,18 @@ export function AlertsTable(props: AlertsTableProps) { const { core } = usePluginContext(); const { prepend } = core.http.basePath; - const actions: Array> = [ + const actions: Array> = [ { - name: 'Alert details', - description: 'Alert details', - onClick: (item) => { - setFlyoutAlert(item); - }, + render: (alert) => + alert.link ? ( + + {i18n.translate('xpack.observability.alertsTable.viewInAppButtonLabel', { + defaultMessage: 'View in app', + })} + + ) : ( + <> + ), isPrimary: true, }, ]; @@ -57,54 +53,76 @@ export function AlertsTable(props: AlertsTableProps) { const columns: Array> = [ { field: 'active', - name: 'Status', - width: '112px', - render: (_, { active }) => { - const style = { - width: '96px', - textAlign: 'center' as const, - }; + name: i18n.translate('xpack.observability.alertsTable.statusColumnDescription', { + defaultMessage: 'Status', + }), + align: 'center', + render: (_, alert) => { + const { active } = alert; return active ? ( - - {i18n.translate('xpack.observability.alertsTable.status.active', { + + color="danger" + type="alert" + /> ) : ( - - {i18n.translate('xpack.observability.alertsTable.status.recovered', { + + type="check" + /> ); }, }, { field: 'start', - name: 'Triggered', + name: i18n.translate('xpack.observability.alertsTable.triggeredColumnDescription', { + defaultMessage: 'Triggered', + }), render: (_, item) => { return ; }, }, { field: 'duration', - name: 'Duration', - render: (_, { duration, active }) => { - return active ? null : asDuration(duration, { extended: true }); + name: i18n.translate('xpack.observability.alertsTable.durationColumnDescription', { + defaultMessage: 'Duration', + }), + render: (_, alert) => { + const { active } = alert; + return active + ? null + : asDuration(alert['kibana.rac.alert.duration.us'], { extended: true }); + }, + }, + { + field: 'severity', + name: i18n.translate('xpack.observability.alertsTable.severityColumnDescription', { + defaultMessage: 'Severity', + }), + render: (_, alert) => { + return ; }, }, { field: 'reason', - name: 'Reason', + name: i18n.translate('xpack.observability.alertsTable.reasonColumnDescription', { + defaultMessage: 'Reason', + }), dataType: 'string', render: (_, item) => { - return item.link ? {item.reason} : item.reason; + return setFlyoutAlert(item)}>{item.reason}; }, }, { actions, - name: 'Actions', + name: i18n.translate('xpack.observability.alertsTable.actionsColumnDescription', { + defaultMessage: 'Actions', + }), }, ]; @@ -113,8 +131,6 @@ export function AlertsTable(props: AlertsTableProps) { {flyoutAlert && } {...props} - isSelectable={true} - selection={{} as EuiTableSelectionType} columns={columns} tableLayout="auto" pagination={{ pageIndex: 0, pageSize: 0, totalItemCount: 0 }} diff --git a/x-pack/plugins/observability/public/pages/alerts/example_data.ts b/x-pack/plugins/observability/public/pages/alerts/example_data.ts index 860c8d059f00d..dba6f1e9aaa2f 100644 --- a/x-pack/plugins/observability/public/pages/alerts/example_data.ts +++ b/x-pack/plugins/observability/public/pages/alerts/example_data.ts @@ -12,6 +12,7 @@ export const apmAlertResponseExample = [ 'rule.name': 'Error count threshold | opbeans-java (smith test)', 'kibana.rac.alert.duration.us': 180057000, 'kibana.rac.alert.status': 'open', + 'kibana.rac.alert.severity.level': 'warning', tags: ['apm', 'service.name:opbeans-java'], 'kibana.rac.alert.uuid': '0175ec0a-a3b1-4d41-b557-e21c2d024352', 'rule.uuid': '474920d0-93e9-11eb-ac86-0b455460de81', @@ -47,16 +48,6 @@ export const apmAlertResponseExample = [ }, ]; -export const flyoutItemExample = { - link: '/app/apm/services/opbeans-java?rangeFrom=now-15m&rangeTo=now', - reason: 'Error count for opbeans-java was above the threshold', - active: true, - start: 1618235449493, - duration: 180057000, - ruleCategory: 'Error count threshold', - ruleName: 'Error count threshold | opbeans-java (smith test)', -}; - export const dynamicIndexPattern = { fields: [ { diff --git a/x-pack/plugins/observability/public/pages/alerts/index.tsx b/x-pack/plugins/observability/public/pages/alerts/index.tsx index aa5fb2c32ea11..76e5d62369029 100644 --- a/x-pack/plugins/observability/public/pages/alerts/index.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/index.tsx @@ -18,6 +18,7 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { useHistory } from 'react-router-dom'; import { format, parse } from 'url'; +import type { ObservabilityAPIReturnType } from '../../services/call_observability_api/types'; import { ExperimentalBadge } from '../../components/shared/experimental_badge'; import { useFetcher } from '../../hooks/use_fetcher'; import { usePluginContext } from '../../hooks/use_plugin_context'; @@ -28,6 +29,15 @@ import { asDuration, asPercent } from '../../../common/utils/formatters'; import { AlertsSearchBar } from './alerts_search_bar'; import { AlertsTable } from './alerts_table'; +export type TopAlertResponse = ObservabilityAPIReturnType<'GET /api/observability/rules/alerts/top'>[number]; + +export interface TopAlert extends TopAlertResponse { + start: number; + reason: string; + link?: string; + active: boolean; +} + interface AlertsPageProps { routeParams: RouteParams<'/alerts'>; } @@ -75,6 +85,7 @@ export function AlertsPage({ routeParams }: AlertsPageProps) { const parsedLink = formatted.link ? parse(formatted.link, true) : undefined; return { + ...alert, ...formatted, link: parsedLink ? format({ @@ -87,11 +98,7 @@ export function AlertsPage({ routeParams }: AlertsPageProps) { }) : undefined, active: alert['event.action'] !== 'close', - severityLevel: alert['kibana.rac.alert.severity.level'], start: new Date(alert['kibana.rac.alert.start']).getTime(), - duration: alert['kibana.rac.alert.duration.us'], - ruleCategory: alert['rule.category'], - ruleName: alert['rule.name'], }; }); }); diff --git a/x-pack/plugins/observability/public/pages/alerts/severity_badge.stories.tsx b/x-pack/plugins/observability/public/pages/alerts/severity_badge.stories.tsx new file mode 100644 index 0000000000000..3f7357fe607e6 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/alerts/severity_badge.stories.tsx @@ -0,0 +1,21 @@ +/* + * 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 React, { ComponentProps } from 'react'; +import { SeverityBadge } from './severity_badge'; + +type Args = ComponentProps; + +export default { + title: 'app/Alerts/SeverityBadge', + component: SeverityBadge, +}; + +export function Example({ severityLevel }: Args) { + return ; +} +Example.args = { severityLevel: 'critical' } as Args; diff --git a/x-pack/plugins/observability/public/pages/alerts/severity_badge.tsx b/x-pack/plugins/observability/public/pages/alerts/severity_badge.tsx new file mode 100644 index 0000000000000..931b9396f912a --- /dev/null +++ b/x-pack/plugins/observability/public/pages/alerts/severity_badge.tsx @@ -0,0 +1,30 @@ +/* + * 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 { EuiBadge } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; + +export interface SeverityBadgeProps { + severityLevel?: string; +} + +const colorMap: { [key: string]: string } = { + critical: 'danger', + warning: 'warning', +}; + +export function SeverityBadge({ severityLevel }: SeverityBadgeProps) { + return ( + + {severityLevel ?? + i18n.translate('xpack.observability.severityBadge.unknownDescription', { + defaultMessage: 'unknown', + })} + + ); +} diff --git a/x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts b/x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts index 939e3a3608f8b..389b581b5fb60 100644 --- a/x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts +++ b/x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts @@ -9,7 +9,7 @@ import { ObservabilityRuleRegistry } from '../plugin'; const createRuleRegistryMock = () => ({ registerType: () => {}, - getTypeByRuleId: () => {}, + getTypeByRuleId: () => ({ format: () => ({ link: '/test/example' }) }), create: () => createRuleRegistryMock(), }); From c3decc011064071cc76e04c6160509addb614b97 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Mon, 19 Apr 2021 16:35:32 -0400 Subject: [PATCH 19/56] [Fleet] Fleet Server migration modal (#97413) --- .../fleet/common/types/models/settings.ts | 1 + .../applications/fleet/hooks/use_link.ts | 4 +- .../components/fleet_server_upgrade_modal.tsx | 167 ++++++++++++++++++ .../fleet/sections/agents/index.tsx | 28 ++- .../fleet/public/assets/announcement.jpg | Bin 0 -> 10645 bytes .../fleet/server/saved_objects/index.ts | 1 + .../fleet_server/saved_object_migrations.ts | 12 ++ .../fleet/server/types/rest_spec/settings.ts | 1 + 8 files changed, 211 insertions(+), 3 deletions(-) create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/fleet_server_upgrade_modal.tsx create mode 100644 x-pack/plugins/fleet/public/assets/announcement.jpg diff --git a/x-pack/plugins/fleet/common/types/models/settings.ts b/x-pack/plugins/fleet/common/types/models/settings.ts index 2d7e90a3424d7..15d7492868797 100644 --- a/x-pack/plugins/fleet/common/types/models/settings.ts +++ b/x-pack/plugins/fleet/common/types/models/settings.ts @@ -9,6 +9,7 @@ import type { SavedObjectAttributes } from 'src/core/public'; export interface BaseSettings { has_seen_add_data_notice?: boolean; + has_seen_fleet_migration_notice?: boolean; fleet_server_hosts: string[]; } diff --git a/x-pack/plugins/fleet/public/applications/fleet/hooks/use_link.ts b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_link.ts index 440cd693d7af2..5c31f6fc4158e 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/hooks/use_link.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_link.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { BASE_PATH, pagePathGetters } from '../constants'; +import { BASE_PATH, pagePathGetters, PLUGIN_ID } from '../constants'; import type { StaticPage, DynamicPage, DynamicPagePathValues } from '../constants'; import { useStartServices } from './'; @@ -18,6 +18,8 @@ export const useLink = () => { const core = useStartServices(); return { getPath, + getAssetsPath: (path: string) => + core.http.basePath.prepend(`/plugins/${PLUGIN_ID}/assets/${path}`), getHref: (page: StaticPage | DynamicPage, values?: DynamicPagePathValues) => { const path = getPath(page, values); return core.http.basePath.prepend(`${BASE_PATH}#${path}`); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/fleet_server_upgrade_modal.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/fleet_server_upgrade_modal.tsx new file mode 100644 index 0000000000000..4d6ac864ee8b5 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/fleet_server_upgrade_modal.tsx @@ -0,0 +1,167 @@ +/* + * 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 React, { useCallback, useState } from 'react'; +import { + EuiButton, + EuiCheckbox, + EuiFlexGroup, + EuiFlexItem, + EuiImage, + EuiLink, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, + EuiSpacer, + EuiText, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; + +import { sendPutSettings, useLink, useStartServices } from '../../../hooks'; + +interface Props { + onClose: () => void; +} + +export const FleetServerUpgradeModal: React.FunctionComponent = ({ onClose }) => { + const { getAssetsPath } = useLink(); + const { notifications, cloud } = useStartServices(); + + const isCloud = !!cloud?.cloudId; + + const [checked, setChecked] = useState(false); + const onChange = useCallback(async () => { + try { + setChecked(!checked); + await sendPutSettings({ + has_seen_fleet_migration_notice: !checked, + }); + } catch (error) { + notifications.toasts.addError(error, { + title: i18n.translate('xpack.fleet.fleetServerUpgradeModal.failedUpdateTitle', { + defaultMessage: `Error saving settings`, + }), + }); + } + }, [checked, setChecked, notifications]); + + return ( + + + + + + + + + + + {isCloud ? ( + + + + ), + link: ( + + + + ), + }} + /> + ) : ( + + + + ), + link: ( + + + + ), + }} + /> + )} + + + + + + + ), + }} + /> + + + + + + + + + + + + + + + + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/index.tsx index b8c9ead6773f5..56eb4072c3847 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/index.tsx @@ -5,13 +5,19 @@ * 2.0. */ -import React, { useEffect } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; import { HashRouter as Router, Route, Switch, Redirect } from 'react-router-dom'; import { PAGE_ROUTING_PATHS } from '../../constants'; import { Loading, Error } from '../../components'; -import { useConfig, useFleetStatus, useBreadcrumbs, useCapabilities } from '../../hooks'; +import { + useConfig, + useFleetStatus, + useBreadcrumbs, + useCapabilities, + useGetSettings, +} from '../../hooks'; import { WithoutHeaderLayout } from '../../layouts'; import { AgentListPage } from './agent_list_page'; @@ -20,6 +26,7 @@ import { AgentDetailsPage } from './agent_details_page'; import { NoAccessPage } from './error_pages/no_access'; import { EnrollmentTokenListPage } from './enrollment_token_list_page'; import { ListLayout } from './components/list_layout'; +import { FleetServerUpgradeModal } from './components/fleet_server_upgrade_modal'; const REFRESH_INTERVAL_MS = 30000; @@ -31,6 +38,20 @@ export const FleetApp: React.FunctionComponent = () => { const fleetStatus = useFleetStatus(); + const settings = useGetSettings(); + + const [fleetServerModalVisible, setFleetServerModalVisible] = useState(false); + const onCloseFleetServerModal = useCallback(() => { + setFleetServerModalVisible(false); + }, [setFleetServerModalVisible]); + + useEffect(() => { + // if it's undefined do not show the modal + if (settings.data && settings.data?.item.has_seen_fleet_migration_notice === false) { + setFleetServerModalVisible(true); + } + }, [settings.data]); + useEffect(() => { if ( !agents.enabled || @@ -99,6 +120,9 @@ export const FleetApp: React.FunctionComponent = () => { + {fleetServerModalVisible && ( + + )} {hasOnlyFleetServerMissingRequirement ? ( ) : ( diff --git a/x-pack/plugins/fleet/public/assets/announcement.jpg b/x-pack/plugins/fleet/public/assets/announcement.jpg new file mode 100644 index 0000000000000000000000000000000000000000..65191f1da6c539f92a66800a64fc76cc970a8068 GIT binary patch literal 10645 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 literal 0 HcmV?d00001 diff --git a/x-pack/plugins/fleet/server/saved_objects/index.ts b/x-pack/plugins/fleet/server/saved_objects/index.ts index 27725bfc637ee..f55de4b691999 100644 --- a/x-pack/plugins/fleet/server/saved_objects/index.ts +++ b/x-pack/plugins/fleet/server/saved_objects/index.ts @@ -61,6 +61,7 @@ const getSavedObjectTypes = ( properties: { fleet_server_hosts: { type: 'keyword' }, has_seen_add_data_notice: { type: 'boolean', index: false }, + has_seen_fleet_migration_notice: { type: 'boolean', index: false }, }, }, migrations: { diff --git a/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts b/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts index 7ccee39aa815c..e9a73783e32fc 100644 --- a/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts +++ b/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts @@ -25,6 +25,7 @@ import { listEnrollmentApiKeys, getEnrollmentAPIKey } from '../api_keys/enrollme import { appContextService } from '../app_context'; import { agentPolicyService } from '../agent_policy'; import { invalidateAPIKeys } from '../api_keys'; +import { settingsService } from '..'; export async function runFleetServerMigration() { await Promise.all([migrateEnrollmentApiKeys(), migrateAgentPolicies(), migrateAgents()]); @@ -54,6 +55,9 @@ async function migrateAgents() { const soClient = getInternalUserSOClient(); const logger = appContextService.getLogger(); let hasMore = true; + + let hasAgents = false; + while (hasMore) { const res = await soClient.find({ type: AGENT_SAVED_OBJECT_TYPE, @@ -64,6 +68,7 @@ async function migrateAgents() { if (res.total === 0) { hasMore = false; } + hasAgents = true; for (const so of res.saved_objects) { try { const { @@ -115,6 +120,13 @@ async function migrateAgents() { } } } + + // Update settings to show migration modal + if (hasAgents) { + await settingsService.saveSettings(soClient, { + has_seen_fleet_migration_notice: false, + }); + } } async function migrateEnrollmentApiKeys() { diff --git a/x-pack/plugins/fleet/server/types/rest_spec/settings.ts b/x-pack/plugins/fleet/server/types/rest_spec/settings.ts index 551cc37551da2..fbadac2353b02 100644 --- a/x-pack/plugins/fleet/server/types/rest_spec/settings.ts +++ b/x-pack/plugins/fleet/server/types/rest_spec/settings.ts @@ -23,6 +23,7 @@ export const PutSettingsRequestSchema = { }) ), has_seen_add_data_notice: schema.maybe(schema.boolean()), + has_seen_fleet_migration_notice: schema.maybe(schema.boolean()), additional_yaml_config: schema.maybe(schema.string()), // Deprecated not used kibana_urls: schema.maybe( From b5effc20a49871d92a99ef0ab132d0fe9c8d0be6 Mon Sep 17 00:00:00 2001 From: Bhavya RM Date: Mon, 19 Apr 2021 16:59:51 -0400 Subject: [PATCH 20/56] unskipping login and spaces a11y tests (#97190) --- x-pack/test/accessibility/apps/login_page.ts | 3 +-- x-pack/test/accessibility/apps/spaces.ts | 11 ++++------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/x-pack/test/accessibility/apps/login_page.ts b/x-pack/test/accessibility/apps/login_page.ts index f46a684194810..02d817612671c 100644 --- a/x-pack/test/accessibility/apps/login_page.ts +++ b/x-pack/test/accessibility/apps/login_page.ts @@ -14,8 +14,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const PageObjects = getPageObjects(['common', 'security']); - // FLAKY: https://github.com/elastic/kibana/issues/96372 - describe.skip('Security', () => { + describe('Security', () => { describe('Login Page', () => { before(async () => { await esArchiver.load('empty_kibana'); diff --git a/x-pack/test/accessibility/apps/spaces.ts b/x-pack/test/accessibility/apps/spaces.ts index a2f0e835c0b3e..a08ae474497e5 100644 --- a/x-pack/test/accessibility/apps/spaces.ts +++ b/x-pack/test/accessibility/apps/spaces.ts @@ -18,17 +18,14 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const toasts = getService('toasts'); - // flaky - // https://github.com/elastic/kibana/issues/77933 - // https://github.com/elastic/kibana/issues/96625 - describe.skip('Kibana spaces page meets a11y validations', () => { + describe('Kibana spaces page meets a11y validations', () => { before(async () => { await esArchiver.load('empty_kibana'); await PageObjects.common.navigateToApp('home'); }); - it.skip('a11y test for manage spaces menu from top nav on Kibana home', async () => { - await PageObjects.spaceSelector.openSpacesNav(); + it('a11y test for manage spaces menu from top nav on Kibana home', async () => { + await testSubjects.click('space-avatar-default'); await retry.waitFor( 'Manage spaces option visible', async () => await testSubjects.exists('manageSpaces') @@ -36,7 +33,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await a11y.testAppSnapshot(); }); - it.skip('a11y test for manage spaces page', async () => { + it('a11y test for manage spaces page', async () => { await PageObjects.spaceSelector.clickManageSpaces(); await PageObjects.header.waitUntilLoadingHasFinished(); await toasts.dismissAllToasts(); From a254f0f810f87df14000f786513fe20dad76d6f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ece=20=C3=96zalp?= Date: Mon, 19 Apr 2021 17:03:56 -0400 Subject: [PATCH 21/56] [CTI] Adds Threat Intel Tab to Alert Summary Flyout (#97185) --- .../security_solution/common/cti/constants.ts | 14 +- .../event_details/alert_summary_view.tsx | 10 +- .../empty_threat_details_view.test.tsx | 52 ++++ .../empty_threat_details_view.tsx | 50 ++++ .../event_details/event_details.test.tsx | 33 +-- .../event_details/event_details.tsx | 250 +++++++++--------- .../components/event_details/helpers.tsx | 2 +- .../components/event_details/summary_view.tsx | 45 +++- .../threat_details_view.test.tsx | 86 +++++- .../event_details/threat_details_view.tsx | 111 +++++--- .../threat_summary_view.test.tsx | 5 +- .../event_details/threat_summary_view.tsx | 83 +++--- .../components/event_details/translations.ts | 27 +- .../event_details/expandable_event.tsx | 16 +- 14 files changed, 503 insertions(+), 281 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/common/components/event_details/empty_threat_details_view.test.tsx create mode 100644 x-pack/plugins/security_solution/public/common/components/event_details/empty_threat_details_view.tsx diff --git a/x-pack/plugins/security_solution/common/cti/constants.ts b/x-pack/plugins/security_solution/common/cti/constants.ts index cdd4a564f3d73..3423f17e3f683 100644 --- a/x-pack/plugins/security_solution/common/cti/constants.ts +++ b/x-pack/plugins/security_solution/common/cti/constants.ts @@ -19,10 +19,14 @@ export const INDICATOR_MATCHED_TYPE = `${INDICATOR_DESTINATION_PATH}.${MATCHED_T export const EVENT_DATASET = 'event.dataset'; export const EVENT_REFERENCE = 'event.reference'; export const PROVIDER = 'provider'; +export const FIRSTSEEN = 'first_seen'; export const INDICATOR_DATASET = `${INDICATOR_DESTINATION_PATH}.${EVENT_DATASET}`; -export const INDICATOR_REFERENCE = `${INDICATOR_DESTINATION_PATH}.${EVENT_REFERENCE}`; +export const INDICATOR_EVENT_URL = `${INDICATOR_DESTINATION_PATH}.event.url`; +export const INDICATOR_FIRSTSEEN = `${INDICATOR_DESTINATION_PATH}.${FIRSTSEEN}`; +export const INDICATOR_LASTSEEN = `${INDICATOR_DESTINATION_PATH}.last_seen`; export const INDICATOR_PROVIDER = `${INDICATOR_DESTINATION_PATH}.${PROVIDER}`; +export const INDICATOR_REFERENCE = `${INDICATOR_DESTINATION_PATH}.${EVENT_REFERENCE}`; export const CTI_ROW_RENDERER_FIELDS = [ INDICATOR_MATCHED_ATOMIC, @@ -32,3 +36,11 @@ export const CTI_ROW_RENDERER_FIELDS = [ INDICATOR_REFERENCE, INDICATOR_PROVIDER, ]; + +export const SORTED_THREAT_SUMMARY_FIELDS = [ + INDICATOR_MATCHED_FIELD, + INDICATOR_MATCHED_TYPE, + INDICATOR_PROVIDER, + INDICATOR_FIRSTSEEN, + INDICATOR_LASTSEEN, +]; diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.tsx index 091049b967f02..5578264152c39 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/alert_summary_view.tsx @@ -10,10 +10,13 @@ import { EuiDescriptionList, EuiDescriptionListDescription, EuiDescriptionListTitle, + EuiSpacer, } from '@elastic/eui'; import { get, getOr } from 'lodash/fp'; import React, { useMemo } from 'react'; import styled from 'styled-components'; + +import * as i18n from './translations'; import { FormattedFieldValue } from '../../../timelines/components/timeline/body/renderers/formatted_field'; import { TimelineEventsDetailsItem } from '../../../../common/search_strategy'; import { BrowserFields } from '../../../../common/search_strategy/index_fields'; @@ -33,7 +36,6 @@ import { DESTINATION_IP_FIELD_NAME, SOURCE_IP_FIELD_NAME } from '../../../networ import { SummaryView } from './summary_view'; import { AlertSummaryRow, getSummaryColumns, SummaryRow } from './helpers'; import { useRuleAsync } from '../../../detections/containers/detection_engine/rules/use_rule_async'; -import * as i18n from './translations'; import { LineClamp } from '../line_clamp'; const StyledEuiDescriptionList = styled(EuiDescriptionList)` @@ -166,7 +168,8 @@ const AlertSummaryViewComponent: React.FC<{ data: TimelineEventsDetailsItem[]; eventId: string; timelineId: string; -}> = ({ browserFields, data, eventId, timelineId }) => { + title?: string; +}> = ({ browserFields, data, eventId, timelineId, title }) => { const summaryRows = useMemo(() => getSummaryRows({ browserFields, data, eventId, timelineId }), [ browserFields, data, @@ -184,7 +187,8 @@ const AlertSummaryViewComponent: React.FC<{ return ( <> - + + {maybeRule?.note && ( {i18n.INVESTIGATION_GUIDE} diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/empty_threat_details_view.test.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/empty_threat_details_view.test.tsx new file mode 100644 index 0000000000000..b3e70fd17c0e1 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/event_details/empty_threat_details_view.test.tsx @@ -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 React from 'react'; +import { ThemeProvider } from 'styled-components'; + +import { useMountAppended } from '../../utils/use_mount_appended'; +import { getMockTheme } from '../../lib/kibana/kibana_react.mock'; +import { EmptyThreatDetailsView } from './empty_threat_details_view'; + +jest.mock('../../lib/kibana'); + +describe('EmptyThreatDetailsView', () => { + const mount = useMountAppended(); + const mockTheme = getMockTheme({ + eui: { + euiBreakpoints: { + l: '1200px', + }, + paddingSizes: { + m: '8px', + xl: '32px', + }, + }, + }); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + test('renders correct items', () => { + const wrapper = mount( + + + + ); + expect(wrapper.find('[data-test-subj="empty-threat-details-view"]').exists()).toEqual(true); + }); + + test('renders link to docs', () => { + const wrapper = mount( + + + + ); + expect(wrapper.find('a').exists()).toEqual(true); + }); +}); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/empty_threat_details_view.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/empty_threat_details_view.tsx new file mode 100644 index 0000000000000..c78df92dceb3c --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/event_details/empty_threat_details_view.tsx @@ -0,0 +1,50 @@ +/* + * 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 { EuiLink, EuiSpacer, EuiTitle } from '@elastic/eui'; +import React from 'react'; +import styled from 'styled-components'; +import * as i18n from './translations'; +import { useKibana } from '../../lib/kibana'; + +const EmptyThreatDetailsViewContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; +`; + +const Span = styled.span` + color: ${({ theme }) => theme.eui.euiColorDarkShade}; + line-height: 1.8em; + text-align: center; + padding: ${({ theme }) => `${theme.eui.paddingSizes.m} ${theme.eui.paddingSizes.xl}`}; +`; + +const EmptyThreatDetailsViewComponent: React.FC<{}> = () => { + const threatIntelDocsUrl = `${ + useKibana().services.docLinks.links.filebeat.base + }/filebeat-module-threatintel.html`; + + return ( + + + +

{i18n.NO_ENRICHMENT_FOUND}

+
+ + {i18n.IF_CTI_NOT_ENABLED} + + {i18n.CHECK_DOCS} + + +
+ ); +}; + +EmptyThreatDetailsViewComponent.displayName = 'EmptyThreatDetailsView'; + +export const EmptyThreatDetailsView = React.memo(EmptyThreatDetailsViewComponent); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/event_details.test.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/event_details.test.tsx index e799df0fdd10d..0c7515fe75d86 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/event_details.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/event_details.test.tsx @@ -13,7 +13,7 @@ import '../../mock/match_media'; import '../../mock/react_beautiful_dnd'; import { mockDetailItemData, mockDetailItemDataId, TestProviders } from '../../mock'; -import { EventDetails, EventsViewType, EventView, ThreatView } from './event_details'; +import { EventDetails, EventsViewType } from './event_details'; import { mockBrowserFields } from '../../containers/source/mock'; import { useMountAppended } from '../../utils/use_mount_appended'; import { mockAlertDetailsData } from './__mocks__'; @@ -32,8 +32,7 @@ describe('EventDetails', () => { onThreatViewSelected: jest.fn(), timelineTabType: TimelineTabs.query, timelineId: 'test', - eventView: EventsViewType.summaryView as EventView, - threatView: EventsViewType.threatSummaryView as ThreatView, + eventView: EventsViewType.summaryView, }; const alertsProps = { @@ -78,13 +77,14 @@ describe('EventDetails', () => { }); describe('alerts tabs', () => { - ['Summary', 'Table', 'JSON View'].forEach((tab) => { + ['Summary', 'Threat Intel', 'Table', 'JSON View'].forEach((tab) => { test(`it renders the ${tab} tab`, () => { + const expectedCopy = tab === 'Threat Intel' ? `${tab} (1)` : tab; expect( alertsWrapper .find('[data-test-subj="eventDetails"]') .find('[role="tablist"]') - .containsMatchingElement({tab}) + .containsMatchingElement({expectedCopy}) ).toBeTruthy(); }); }); @@ -99,27 +99,4 @@ describe('EventDetails', () => { ).toEqual('Summary'); }); }); - - describe('threat tabs', () => { - ['Threat Summary', 'Threat Details'].forEach((tab) => { - test(`it renders the ${tab} tab`, () => { - expect( - alertsWrapper - .find('[data-test-subj="threatDetails"]') - .find('[role="tablist"]') - .containsMatchingElement({tab}) - ).toBeTruthy(); - }); - }); - - test('the Summary tab is selected by default', () => { - expect( - alertsWrapper - .find('[data-test-subj="threatDetails"]') - .find('.euiTab-isSelected') - .first() - .text() - ).toEqual('Threat Summary'); - }); - }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx index 0e4cf7f4ae2fe..91ebec72d3845 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx @@ -6,31 +6,37 @@ */ import { EuiTabbedContent, EuiTabbedContentTab, EuiSpacer } from '@elastic/eui'; -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import styled from 'styled-components'; -import { BrowserFields } from '../../containers/source'; -import { TimelineEventsDetailsItem } from '../../../../common/search_strategy/timeline'; import { EventFieldsBrowser } from './event_fields_browser'; import { JsonView } from './json_view'; -import * as i18n from './translations'; -import { AlertSummaryView } from './alert_summary_view'; import { ThreatSummaryView } from './threat_summary_view'; import { ThreatDetailsView } from './threat_details_view'; +import * as i18n from './translations'; +import { AlertSummaryView } from './alert_summary_view'; +import { BrowserFields } from '../../containers/source'; +import { TimelineEventsDetailsItem } from '../../../../common/search_strategy/timeline'; import { TimelineTabs } from '../../../../common/types/timeline'; import { INDICATOR_DESTINATION_PATH } from '../../../../common/constants'; +import { getDataFromSourceHits } from '../../../../common/utils/field_formatters'; + +interface EventViewTab { + id: EventViewId; + name: string; + content: JSX.Element; +} -export type EventView = +export type EventViewId = | EventsViewType.tableView | EventsViewType.jsonView - | EventsViewType.summaryView; -export type ThreatView = EventsViewType.threatSummaryView | EventsViewType.threatDetailsView; + | EventsViewType.summaryView + | EventsViewType.threatIntelView; export enum EventsViewType { tableView = 'table-view', jsonView = 'json-view', summaryView = 'summary-view', - threatSummaryView = 'threat-summary-view', - threatDetailsView = 'threat-details-view', + threatIntelView = 'threat-intel-view', } interface Props { @@ -38,10 +44,6 @@ interface Props { data: TimelineEventsDetailsItem[]; id: string; isAlert: boolean; - eventView: EventView; - threatView: ThreatView; - onEventViewSelected: (selected: EventView) => void; - onThreatViewSelected: (selected: ThreatView) => void; timelineTabType: TimelineTabs | 'flyout'; timelineId: string; } @@ -56,7 +58,8 @@ const StyledEuiTabbedContent = styled(EuiTabbedContent)` display: flex; flex: 1; flex-direction: column; - overflow: scroll; + overflow: hidden; + overflow-y: auto; ::-webkit-scrollbar { -webkit-appearance: none; width: 7px; @@ -77,132 +80,125 @@ const TabContentWrapper = styled.div` const EventDetailsComponent: React.FC = ({ browserFields, data, - eventView, id, isAlert, - onEventViewSelected, - onThreatViewSelected, - threatView, timelineId, timelineTabType, }) => { - const handleEventTabClick = useCallback((e) => onEventViewSelected(e.id), [onEventViewSelected]); - const handleThreatTabClick = useCallback((e) => onThreatViewSelected(e.id), [ - onThreatViewSelected, - ]); - - const alerts = useMemo( - () => [ - { - id: EventsViewType.summaryView, - name: i18n.SUMMARY, - content: ( - <> - - - - ), - }, - ], - [data, id, browserFields, timelineId] - ); - const tabs: EuiTabbedContentTab[] = useMemo( - () => [ - ...(isAlert ? alerts : []), - { - id: EventsViewType.tableView, - name: i18n.TABLE, - content: ( - <> - - - - ), - }, - { - id: EventsViewType.jsonView, - 'data-test-subj': 'jsonViewTab', - name: i18n.JSON_VIEW, - content: ( - <> - - - - - - ), - }, - ], - [alerts, browserFields, data, id, isAlert, timelineId, timelineTabType] + const [selectedTabId, setSelectedTabId] = useState(EventsViewType.summaryView); + const handleTabClick = useCallback( + (tab: EuiTabbedContentTab) => setSelectedTabId(tab.id as EventViewId), + [setSelectedTabId] ); - const selectedEventTab = useMemo(() => tabs.find((t) => t.id === eventView) ?? tabs[0], [ - tabs, - eventView, - ]); + const threatData = useMemo(() => { + if (isAlert && data) { + const threatIndicator = data.find( + ({ field, originalValue }) => field === INDICATOR_DESTINATION_PATH && originalValue + ); + if (!threatIndicator) return []; + const { originalValue } = threatIndicator; + const values = Array.isArray(originalValue) ? originalValue : [originalValue]; + return values.map((value) => getDataFromSourceHits(JSON.parse(value))); + } + return []; + }, [data, isAlert]); + + const threatCount = useMemo(() => threatData.length, [threatData.length]); + + const summaryTab = useMemo( + () => + isAlert + ? { + id: EventsViewType.summaryView, + name: i18n.SUMMARY, + content: ( + <> + + {threatCount > 0 && } + + ), + } + : undefined, + [browserFields, data, id, isAlert, timelineId, threatCount] + ); - const isThreatPresent: boolean = useMemo( + const threatIntelTab = useMemo( () => - selectedEventTab.id === tabs[0].id && - isAlert && - data.some((item) => item.field === INDICATOR_DESTINATION_PATH), - [tabs, selectedEventTab, isAlert, data] + isAlert + ? { + id: EventsViewType.threatIntelView, + name: `${i18n.THREAT_INTEL} (${threatCount})`, + content: , + } + : undefined, + [isAlert, threatCount, threatData] ); - const threatTabs: EuiTabbedContentTab[] = useMemo(() => { - return isAlert && isThreatPresent - ? [ - { - id: EventsViewType.threatSummaryView, - name: i18n.THREAT_SUMMARY, - content: , - }, - { - id: EventsViewType.threatDetailsView, - name: i18n.THREAT_DETAILS, - content: , - }, - ] - : []; - }, [data, id, isAlert, timelineId, isThreatPresent]); - - const selectedThreatTab = useMemo( - () => threatTabs.find((t) => t.id === threatView) ?? threatTabs[0], - [threatTabs, threatView] + const tableTab = useMemo( + () => ({ + id: EventsViewType.tableView, + name: i18n.TABLE, + content: ( + <> + + + + ), + }), + [browserFields, data, id, timelineId, timelineTabType] ); + const jsonTab = useMemo( + () => ({ + id: EventsViewType.jsonView, + 'data-test-subj': 'jsonViewTab', + name: i18n.JSON_VIEW, + content: ( + <> + + + + + + ), + }), + [data] + ); + + const tabs = useMemo(() => { + return [summaryTab, threatIntelTab, tableTab, jsonTab].filter( + (tab: EventViewTab | undefined): tab is EventViewTab => !!tab + ); + }, [summaryTab, threatIntelTab, tableTab, jsonTab]); + + const selectedTab = useMemo(() => tabs.find((tab) => tab.id === selectedTabId), [ + tabs, + selectedTabId, + ]); + return ( - <> - - {isThreatPresent && ( - - )} - + ); }; diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/helpers.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/helpers.tsx index 67e67584849cc..1642dcef29227 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/helpers.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/helpers.tsx @@ -225,7 +225,7 @@ export const getSummaryColumns = ( field: 'title', truncateText: false, render: getTitle, - width: '120px', + width: '160px', name: '', }, { diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/summary_view.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/summary_view.tsx index 3b2c55e9a6b67..1dda40ae4b19d 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/summary_view.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/summary_view.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { EuiInMemoryTable, EuiBasicTableColumn } from '@elastic/eui'; +import { EuiInMemoryTable, EuiBasicTableColumn, EuiTitle, EuiHorizontalRule } from '@elastic/eui'; import React from 'react'; import styled from 'styled-components'; @@ -27,18 +27,47 @@ const StyledEuiInMemoryTable = styled(EuiInMemoryTable as any)` } `; +const StyledEuiTitle = styled(EuiTitle)` + color: ${({ theme }) => theme.eui.euiColorDarkShade}; + text-transform: lowercase; + padding-top: ${({ theme }) => theme.eui.paddingSizes.s}; + h2 { + min-width: 120px; + } + hr { + max-width: 75%; + } +`; + +const FlexDiv = styled.div` + display: flex; + align-items: center; + justify-content: flex-start; +`; + export const SummaryViewComponent: React.FC<{ + title?: string; summaryColumns: Array>; summaryRows: SummaryRow[]; dataTestSubj?: string; -}> = ({ summaryColumns, summaryRows, dataTestSubj = 'summary-view' }) => { +}> = ({ summaryColumns, summaryRows, dataTestSubj = 'summary-view', title }) => { return ( - + <> + {title && ( + + +

{title}

+ +
+
+ )} + + ); }; diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/threat_details_view.test.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/threat_details_view.test.tsx index 81bffe9b66638..4b2f56a205042 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/threat_details_view.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/threat_details_view.test.tsx @@ -8,8 +8,6 @@ import React from 'react'; import { ThreatDetailsView } from './threat_details_view'; -import { mockAlertDetailsData } from './__mocks__'; -import { TimelineEventsDetailsItem } from '../../../../common/search_strategy'; import { TestProviders } from '../../mock'; import { useMountAppended } from '../../utils/use_mount_appended'; @@ -20,11 +18,56 @@ jest.mock('../../../detections/containers/detection_engine/rules/use_rule_async' }; }); -const props = { - data: mockAlertDetailsData as TimelineEventsDetailsItem[], - eventId: '5d1d53da502f56aacc14c3cb5c669363d102b31f99822e5d369d4804ed370a31', - timelineId: 'detections-page', -}; +const mostRecentDate = '2021-04-25T18:17:00.000Z'; + +const threatData = [ + [ + { + category: 'matched', + field: 'matched.field', + isObjectArray: false, + originalValue: ['test_field_2'], + values: ['test_field_2'], + }, + { + category: 'first_seen', + field: 'first_seen', + isObjectArray: false, + originalValue: ['2019-04-25T18:17:00.000Z'], + values: ['2019-04-25T18:17:00.000Z'], + }, + { + category: 'event', + field: 'event.reference', + isObjectArray: false, + originalValue: ['https://test.com/'], + values: ['https://test.com/'], + }, + { + category: 'event', + field: 'event.url', + isObjectArray: false, + originalValue: ['https://test2.com/'], + values: ['https://test2.com/'], + }, + ], + [ + { + category: 'first_seen', + field: 'first_seen', + isObjectArray: false, + originalValue: [mostRecentDate], + values: [mostRecentDate], + }, + { + category: 'matched', + field: 'matched.field', + isObjectArray: false, + originalValue: ['test_field'], + values: ['test_field'], + }, + ], +]; describe('ThreatDetailsView', () => { const mount = useMountAppended(); @@ -36,9 +79,36 @@ describe('ThreatDetailsView', () => { test('render correct items', () => { const wrapper = mount( - + ); expect(wrapper.find('[data-test-subj="threat-details-view-0"]').exists()).toEqual(true); }); + + test('renders empty view if there are no items', () => { + const wrapper = mount( + + + + ); + expect(wrapper.find('[data-test-subj="empty-threat-details-view"]').exists()).toEqual(true); + }); + + test('renders link for event.url and event.reference', () => { + const wrapper = mount( + + + + ); + expect(wrapper.find('a').length).toEqual(2); + }); + + test('orders items by first_seen', () => { + const wrapper = mount( + + + + ); + expect(wrapper.find('.euiToolTipAnchor span').at(0).text()).toEqual(mostRecentDate); + }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/threat_details_view.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/threat_details_view.tsx index 0889986237442..0f577200b7b47 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/threat_details_view.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/threat_details_view.tsx @@ -10,51 +10,50 @@ import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, + EuiSpacer, EuiToolTip, + EuiLink, } from '@elastic/eui'; -import React, { useMemo } from 'react'; +import React from 'react'; -import { TimelineEventsDetailsItem } from '../../../../common/search_strategy'; +import { isEmpty } from 'fp-ts/Array'; import { SummaryView } from './summary_view'; import { getSummaryColumns, SummaryRow, ThreatDetailsRow } from './helpers'; -import { getDataFromSourceHits } from '../../../../common/utils/field_formatters'; +import { TimelineEventsDetailsItem } from '../../../../common/search_strategy'; import { INDICATOR_DESTINATION_PATH } from '../../../../common/constants'; +import { + FIRSTSEEN, + INDICATOR_EVENT_URL, + INDICATOR_REFERENCE, +} from '../../../../common/cti/constants'; +import { EmptyThreatDetailsView } from './empty_threat_details_view'; const ThreatDetailsDescription: React.FC = ({ fieldName, value, -}) => ( - - - {fieldName} - -
- } - > +}) => { + const tooltipChild = [INDICATOR_EVENT_URL, INDICATOR_REFERENCE].some( + (field) => field === fieldName + ) ? ( + + {value} + + ) : ( {value} -
-); - -const getSummaryRowsArray = ({ - data, -}: { - data: TimelineEventsDetailsItem[]; -}): ThreatDetailsRow[][] => { - if (!data) return [[]]; - const threatInfo = data.find( - ({ field, originalValue }) => field === INDICATOR_DESTINATION_PATH && originalValue ); - if (!threatInfo) return [[]]; - const { originalValue } = threatInfo; - const values = Array.isArray(originalValue) ? originalValue : [originalValue]; - return values.map((value) => - getDataFromSourceHits(JSON.parse(value)).map((threatInfoItem) => ({ - title: threatInfoItem.field.replace(`${INDICATOR_DESTINATION_PATH}.`, ''), - description: { fieldName: threatInfoItem.field, value: threatInfoItem.originalValue }, - })) + return ( + + + {fieldName} + + + } + > + {tooltipChild} + ); }; @@ -62,17 +61,51 @@ const summaryColumns: Array> = getSummaryColumns ThreatDetailsDescription ); +const getISOStringFromThreatDataItem = (threatDataItem: TimelineEventsDetailsItem[]) => { + const firstSeen = threatDataItem.find( + (item: TimelineEventsDetailsItem) => item.field === FIRSTSEEN + ); + if (firstSeen) { + const { originalValue } = firstSeen; + const firstSeenValue = Array.isArray(originalValue) ? originalValue[0] : originalValue; + if (!Number.isNaN(Date.parse(firstSeenValue))) { + return firstSeenValue; + } + } + return new Date(-1).toString(); +}; + +const getThreatDetailsRowsArray = (threatData: TimelineEventsDetailsItem[][]) => + threatData + .sort( + (a, b) => + Date.parse(getISOStringFromThreatDataItem(b)) - + Date.parse(getISOStringFromThreatDataItem(a)) + ) + .map((items) => + items.map(({ field, originalValue }) => ({ + title: field, + description: { + fieldName: `${INDICATOR_DESTINATION_PATH}.${field}`, + value: Array.isArray(originalValue) ? originalValue[0] : originalValue, + }, + })) + ); + const ThreatDetailsViewComponent: React.FC<{ - data: TimelineEventsDetailsItem[]; -}> = ({ data }) => { - const summaryRowsArray = useMemo(() => getSummaryRowsArray({ data }), [data]); - return ( + threatData: TimelineEventsDetailsItem[][]; +}> = ({ threatData }) => { + const threatDetailsRowsArray = getThreatDetailsRowsArray(threatData); + return isEmpty(threatDetailsRowsArray) || isEmpty(threatDetailsRowsArray[0]) ? ( + + ) : ( <> - {summaryRowsArray.map((summaryRows, index, arr) => { + {threatDetailsRowsArray.map((summaryRows, index, arr) => { const key = summaryRows.find((threat) => threat.title === 'matched.id')?.description .value[0]; return ( -
+
+ {index === 0 && } { return { diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/threat_summary_view.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/threat_summary_view.tsx index 96ae2071c449b..67b09e8e59699 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/threat_summary_view.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/threat_summary_view.tsx @@ -5,16 +5,39 @@ * 2.0. */ -import { EuiBasicTableColumn } from '@elastic/eui'; -import React, { useMemo } from 'react'; +import { EuiBasicTableColumn, EuiSpacer } from '@elastic/eui'; +import React from 'react'; -import { TimelineEventsDetailsItem } from '../../../../common/search_strategy'; -import { FormattedFieldValue } from '../../../timelines/components/timeline/body/renderers/formatted_field'; -import { BrowserFields } from '../../../../common/search_strategy/index_fields'; +import * as i18n from './translations'; import { SummaryView } from './summary_view'; import { getSummaryColumns, SummaryRow, ThreatSummaryRow } from './helpers'; +import { FormattedFieldValue } from '../../../timelines/components/timeline/body/renderers/formatted_field'; +import { TimelineEventsDetailsItem } from '../../../../common/search_strategy/timeline'; +import { SORTED_THREAT_SUMMARY_FIELDS } from '../../../../common/cti/constants'; import { INDICATOR_DESTINATION_PATH } from '../../../../common/constants'; +const getThreatSummaryRows = ( + data: TimelineEventsDetailsItem[], + timelineId: string, + eventId: string +) => + SORTED_THREAT_SUMMARY_FIELDS.map((threatSummaryField) => { + const item = data.find(({ field }) => field === threatSummaryField); + if (item) { + const { field, originalValue } = item; + return { + title: field.replace(`${INDICATOR_DESTINATION_PATH}.`, ''), + description: { + values: Array.isArray(originalValue) ? originalValue : [originalValue], + contextId: timelineId, + eventId, + fieldName: field, + }, + }; + } + return null; + }).filter((item: ThreatSummaryRow | null): item is ThreatSummaryRow => !!item); + const getDescription = ({ contextId, eventId, @@ -34,56 +57,22 @@ const getDescription = ({ ); -const getSummaryRows = ({ - data, - timelineId: contextId, - eventId, -}: { - data: TimelineEventsDetailsItem[]; - browserFields?: BrowserFields; - timelineId: string; - eventId: string; -}) => { - if (!data) return []; - return data.reduce((acc, { field, originalValue }) => { - if (field.startsWith(`${INDICATOR_DESTINATION_PATH}.`) && originalValue) { - return [ - ...acc, - { - title: field.replace(`${INDICATOR_DESTINATION_PATH}.`, ''), - description: { - values: Array.isArray(originalValue) ? originalValue : [originalValue], - contextId, - eventId, - fieldName: field, - }, - }, - ]; - } - return acc; - }, []); -}; - const summaryColumns: Array> = getSummaryColumns(getDescription); const ThreatSummaryViewComponent: React.FC<{ data: TimelineEventsDetailsItem[]; - eventId: string; timelineId: string; -}> = ({ data, eventId, timelineId }) => { - const summaryRows = useMemo(() => getSummaryRows({ data, eventId, timelineId }), [ - data, - eventId, - timelineId, - ]); - - return ( + eventId: string; +}> = ({ data, timelineId, eventId }) => ( + <> + - ); -}; + +); export const ThreatSummaryView = React.memo(ThreatSummaryViewComponent); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/translations.ts b/x-pack/plugins/security_solution/public/common/components/event_details/translations.ts index 73a2e0d57307c..1ff88d9c2018b 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/translations.ts +++ b/x-pack/plugins/security_solution/public/common/components/event_details/translations.ts @@ -11,12 +11,35 @@ export const SUMMARY = i18n.translate('xpack.securitySolution.alertDetails.summa defaultMessage: 'Summary', }); +export const ALERT_SUMMARY = i18n.translate('xpack.securitySolution.alertDetails.alertSummary', { + defaultMessage: 'Alert Summary', +}); + +export const THREAT_INTEL = i18n.translate('xpack.securitySolution.alertDetails.threatIntel', { + defaultMessage: 'Threat Intel', +}); + export const THREAT_SUMMARY = i18n.translate('xpack.securitySolution.alertDetails.threatSummary', { defaultMessage: 'Threat Summary', }); -export const THREAT_DETAILS = i18n.translate('xpack.securitySolution.alertDetails.threatDetails', { - defaultMessage: 'Threat Details', +export const NO_ENRICHMENT_FOUND = i18n.translate( + 'xpack.securitySolution.alertDetails.noEnrichmentFound', + { + defaultMessage: 'No Threat Intel Enrichment Found', + } +); + +export const IF_CTI_NOT_ENABLED = i18n.translate( + 'xpack.securitySolution.alertDetails.ifCtiNotEnabled', + { + defaultMessage: + "If you haven't enabled any threat intelligence sources and want to learn more about this capability, ", + } +); + +export const CHECK_DOCS = i18n.translate('xpack.securitySolution.alertDetails.checkDocs', { + defaultMessage: 'please check out our documentation.', }); export const INVESTIGATION_GUIDE = i18n.translate( diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx index 86175c0e06ad2..d1d5bffc6bd0a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx @@ -18,17 +18,12 @@ import { EuiFlexGroup, EuiFlexItem, } from '@elastic/eui'; -import React, { useMemo, useState } from 'react'; +import React, { useMemo } from 'react'; import styled from 'styled-components'; import { TimelineTabs } from '../../../../../common/types/timeline'; import { BrowserFields } from '../../../../common/containers/source'; -import { - EventDetails, - EventsViewType, - EventView, - ThreatView, -} from '../../../../common/components/event_details/event_details'; +import { EventDetails } from '../../../../common/components/event_details/event_details'; import { TimelineEventsDetailsItem } from '../../../../../common/search_strategy/timeline'; import { LineClamp } from '../../../../common/components/line_clamp'; import * as i18n from './translations'; @@ -88,9 +83,6 @@ ExpandableEventTitle.displayName = 'ExpandableEventTitle'; export const ExpandableEvent = React.memo( ({ browserFields, event, timelineId, timelineTabType, isAlert, loading, detailsData }) => { - const [eventView, setEventView] = useState(EventsViewType.summaryView); - const [threatView, setThreatView] = useState(EventsViewType.threatSummaryView); - const message = useMemo(() => { if (detailsData) { const messageField = find({ category: 'base', field: 'message' }, detailsData) as @@ -133,12 +125,8 @@ export const ExpandableEvent = React.memo( data={detailsData!} id={event.eventId!} isAlert={isAlert} - onThreatViewSelected={setThreatView} - onEventViewSelected={setEventView} - threatView={threatView} timelineId={timelineId} timelineTabType={timelineTabType} - eventView={eventView} /> From f0070be7d6e5344eee1cff2c4e882ad6df34e6f8 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 19 Apr 2021 22:09:43 +0100 Subject: [PATCH 22/56] docs(NA): add requirements for windows development into the getting started developer guide (#97264) * docs(NA): add requirements for windows development into the getting started developer docs * chore(NA): change docs id for the new introduced section Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- docs/developer/getting-started/index.asciidoc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/developer/getting-started/index.asciidoc b/docs/developer/getting-started/index.asciidoc index d5fe7ebf47038..bc191fa828b58 100644 --- a/docs/developer/getting-started/index.asciidoc +++ b/docs/developer/getting-started/index.asciidoc @@ -3,6 +3,18 @@ Get started building your own plugins, or contributing directly to the {kib} repo. +[discrete] +[[developing-on-windows]] +=== Developing on Windows + +In order to support Windows development we currently require you to use one of the following: + +- https://git-scm.com/download/win[Git bash] (other bash emulators like https://cmder.net/[Cmder] could work but we did not test them) +- https://docs.microsoft.com/en-us/windows/wsl/about[WSL] + +Before running the steps listed below, please make sure you have installed Git bash or WSL and that +you are running the mentioned commands through one of them. + [discrete] [[get-kibana-code]] === Get the code From 8db333147c8dcac9f81daef0d138a04ab49f29b3 Mon Sep 17 00:00:00 2001 From: John Schulz Date: Mon, 19 Apr 2021 17:38:14 -0400 Subject: [PATCH 23/56] Don't show 'Upgrade available' for agents in hosted policies (#97517) ## Summary Close item 3 on https://github.com/elastic/kibana/issues/91906. Don't show icon & "upgrade available" for agents in hosted agent policies ### Local testing I'll try to come back and post the exact commands if anyone wants them, but my rough flow was 1. start ES in 7.13 2. checkout kibana 7.x branch and start 3. create agents in kibana 4. stop kibana & ES 5. start ES in 8.0.0-SNAPSHOT 6. switch to kibana `master` branch & start 7. Navigate to http://localhost:5601/app/fleet#/fleet/agents and observe agents with upgrade available 8. assign agent(s) to a hosted agent policy 9. Observe behavior shown in two screenshots ### Don't show "upgrade available" for hosted agents in list Screen Shot 2021-04-19 at 3 08 12 PM ### Don't show agent in list when "Upgrade available" filter is selected Screen Shot 2021-04-19 at 3 08 40 PM closes https://github.com/elastic/kibana/issues/91906 --- .../fleet/sections/agents/agent_list_page/index.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.tsx index b3c0cf93c88ef..88249f7f5d5ce 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.tsx @@ -407,7 +407,7 @@ export const AgentListPage: React.FunctionComponent<{}> = () => { {safeMetadata(version)} - {isAgentUpgradeable(agent, kibanaVersion) ? ( + {isAgentSelectable(agent) && isAgentUpgradeable(agent, kibanaVersion) ? ( @@ -593,7 +593,15 @@ export const AgentListPage: React.FunctionComponent<{}> = () => { emptyPrompt ) } - items={totalAgents ? agents : []} + items={ + totalAgents + ? showUpgradeable + ? agents.filter( + (agent) => isAgentSelectable(agent) && isAgentUpgradeable(agent, kibanaVersion) + ) + : agents + : [] + } itemId="id" columns={columns} pagination={{ From 6885ad1fc01a188030ca0568fb7393c8a00a9dd0 Mon Sep 17 00:00:00 2001 From: Jen Huang Date: Mon, 19 Apr 2021 14:47:05 -0700 Subject: [PATCH 24/56] Pass force unenrollment option as new `revoke` param (#97516) --- x-pack/plugins/fleet/common/types/rest_spec/agent.ts | 2 ++ .../sections/agents/components/agent_unenroll_modal/index.tsx | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/fleet/common/types/rest_spec/agent.ts b/x-pack/plugins/fleet/common/types/rest_spec/agent.ts index 4616e92925b3a..47f9112d4ab59 100644 --- a/x-pack/plugins/fleet/common/types/rest_spec/agent.ts +++ b/x-pack/plugins/fleet/common/types/rest_spec/agent.ts @@ -108,6 +108,7 @@ export interface PostAgentUnenrollRequest { }; body: { force?: boolean; + revoke?: boolean; }; } @@ -118,6 +119,7 @@ export interface PostBulkAgentUnenrollRequest { body: { agents: string[] | string; force?: boolean; + revoke?: boolean; }; } diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_unenroll_modal/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_unenroll_modal/index.tsx index 696acb49abef3..5507fd6395c6f 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_unenroll_modal/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_unenroll_modal/index.tsx @@ -40,11 +40,11 @@ export const AgentUnenrollAgentModal: React.FunctionComponent = ({ setIsSubmitting(true); const { error } = isSingleAgent ? await sendPostAgentUnenroll((agents[0] as Agent).id, { - force: forceUnenroll, + revoke: forceUnenroll, }) : await sendPostBulkAgentUnenroll({ agents: Array.isArray(agents) ? agents.map((agent) => agent.id) : agents, - force: forceUnenroll, + revoke: forceUnenroll, }); if (error) { throw error; From 41d55ef2e0af2e3ef4e50d75b4ce844b46b5a4ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Marcondes?= <55978943+cauemarcondes@users.noreply.github.com> Date: Mon, 19 Apr 2021 17:50:10 -0400 Subject: [PATCH 25/56] [APM] Comparisons: Change the legend dot color to the line instead of the area viz color (#97481) * changing legend color * fixing unit test --- .../app/service_overview/service_overview_throughput_chart.tsx | 2 +- .../shared/charts/transaction_error_rate_chart/index.tsx | 2 +- .../plugins/apm/public/selectors/latency_chart_selector.test.ts | 2 +- x-pack/plugins/apm/public/selectors/latency_chart_selectors.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx index 4f6f41f862e19..ac364a21bae46 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx @@ -98,7 +98,7 @@ export function ServiceOverviewThroughputChart({ { data: data.previousPeriod, type: 'area', - color: theme.eui.euiColorLightestShade, + color: theme.eui.euiColorMediumShade, title: i18n.translate( 'xpack.apm.serviceOverview.throughtputChart.previousPeriodLabel', { defaultMessage: 'Previous period' } diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx index fd9435db57bfd..c585ed1f401de 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx @@ -121,7 +121,7 @@ export function TransactionErrorRateChart({ { data: data.previousPeriod.transactionErrorRate, type: 'area', - color: theme.eui.euiColorLightestShade, + color: theme.eui.euiColorMediumShade, title: i18n.translate( 'xpack.apm.errorRate.chart.errorRate.previousPeriodLabel', { defaultMessage: 'Previous period' } diff --git a/x-pack/plugins/apm/public/selectors/latency_chart_selector.test.ts b/x-pack/plugins/apm/public/selectors/latency_chart_selector.test.ts index 252ced2be5e0e..808beb72f2e7a 100644 --- a/x-pack/plugins/apm/public/selectors/latency_chart_selector.test.ts +++ b/x-pack/plugins/apm/public/selectors/latency_chart_selector.test.ts @@ -18,7 +18,7 @@ const theme = { euiColorVis5: 'red', euiColorVis7: 'black', euiColorVis9: 'yellow', - euiColorLightestShade: 'green', + euiColorMediumShade: 'green', }, } as EuiTheme; diff --git a/x-pack/plugins/apm/public/selectors/latency_chart_selectors.ts b/x-pack/plugins/apm/public/selectors/latency_chart_selectors.ts index 2ee4a717106eb..a84a4abfe5810 100644 --- a/x-pack/plugins/apm/public/selectors/latency_chart_selectors.ts +++ b/x-pack/plugins/apm/public/selectors/latency_chart_selectors.ts @@ -65,7 +65,7 @@ function getPreviousPeriodTimeseries({ return { data: previousPeriod.latencyTimeseries ?? [], type: 'area', - color: theme.eui.euiColorLightestShade, + color: theme.eui.euiColorMediumShade, title: i18n.translate( 'xpack.apm.serviceOverview.latencyChartTitle.previousPeriodLabel', { defaultMessage: 'Previous period' } From 83824ab13a24da809e152a15ac4269d78f09a37f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Marcondes?= <55978943+cauemarcondes@users.noreply.github.com> Date: Mon, 19 Apr 2021 17:50:48 -0400 Subject: [PATCH 26/56] [APM] Stop fetching previous period data when comparison is disabled (#97469) * stopping fetching previous period data when comparison is disabled * addressing PR comments * refactoring comparison and primary API names --- .../service_overview.test.tsx | 6 +- .../get_column.tsx | 14 ++-- .../service_overview_errors_table/index.tsx | 30 ++++---- ...ice_overview_instances_chart_and_table.tsx | 73 ++++++++++--------- .../get_columns.tsx | 30 ++++---- .../index.tsx | 28 +++---- .../service_overview_throughput_chart.tsx | 1 + .../get_columns.tsx | 29 ++++---- .../index.tsx | 23 +++--- .../custom_tooltip.stories.tsx | 4 +- .../custom_tooltip.tsx | 6 +- .../index.tsx | 4 +- .../transaction_error_rate_chart/index.tsx | 1 + .../get_time_range_comparison.test.ts | 18 +++++ .../get_time_range_comparison.ts | 4 +- .../shared/time_comparison/index.tsx | 10 ++- .../use_transaction_latency_chart_fetcher.ts | 2 + ...ervice_error_group_detailed_statistics.ts} | 8 +- ...et_service_error_group_main_statistics.ts} | 4 +- ...n_statistics.ts => detailed_statistics.ts} | 51 ++++++------- ...imary_statistics.ts => main_statistics.ts} | 8 +- ..._transaction_group_detailed_statistics.ts} | 10 +-- x-pack/plugins/apm/server/routes/services.ts | 39 +++++----- .../plugins/apm/server/routes/transactions.ts | 18 ++--- .../test/apm_api_integration/tests/index.ts | 24 +++--- ...nap => instances_detailed_statistics.snap} | 4 +- ...cs.ts => instances_detailed_statistics.ts} | 12 +-- ...istics.ts => instances_main_statistics.ts} | 14 ++-- ... => error_groups_detailed_statistics.snap} | 4 +- ...ts => error_groups_detailed_statistics.ts} | 26 +++---- ...ics.ts => error_groups_main_statistics.ts} | 22 +++--- ...nsactions_groups_detailed_statistics.snap} | 20 ++--- ...ransactions_groups_detailed_statistics.ts} | 24 +++--- ...=> transactions_groups_main_statistics.ts} | 12 +-- 34 files changed, 310 insertions(+), 273 deletions(-) rename x-pack/plugins/apm/server/lib/services/get_service_error_groups/{get_service_error_group_comparison_statistics.ts => get_service_error_group_detailed_statistics.ts} (94%) rename x-pack/plugins/apm/server/lib/services/get_service_error_groups/{get_service_error_group_primary_statistics.ts => get_service_error_group_main_statistics.ts} (95%) rename x-pack/plugins/apm/server/lib/services/get_service_instances/{comparison_statistics.ts => detailed_statistics.ts} (80%) rename x-pack/plugins/apm/server/lib/services/get_service_instances/{primary_statistics.ts => main_statistics.ts} (87%) rename x-pack/plugins/apm/server/lib/services/{get_service_transaction_group_comparison_statistics.ts => get_service_transaction_group_detailed_statistics.ts} (95%) rename x-pack/test/apm_api_integration/tests/service_overview/__snapshots__/{instances_comparison_statistics.snap => instances_detailed_statistics.snap} (99%) rename x-pack/test/apm_api_integration/tests/service_overview/{instances_comparison_statistics.ts => instances_detailed_statistics.ts} (95%) rename x-pack/test/apm_api_integration/tests/service_overview/{instances_primary_statistics.ts => instances_main_statistics.ts} (94%) rename x-pack/test/apm_api_integration/tests/services/__snapshots__/{error_groups_comparison_statistics.snap => error_groups_detailed_statistics.snap} (91%) rename x-pack/test/apm_api_integration/tests/services/{error_groups_comparison_statistics.ts => error_groups_detailed_statistics.ts} (90%) rename x-pack/test/apm_api_integration/tests/services/{error_groups_primary_statistics.ts => error_groups_main_statistics.ts} (84%) rename x-pack/test/apm_api_integration/tests/transactions/__snapshots__/{transactions_groups_comparison_statistics.snap => transactions_groups_detailed_statistics.snap} (88%) rename x-pack/test/apm_api_integration/tests/transactions/{transactions_groups_comparison_statistics.ts => transactions_groups_detailed_statistics.ts} (93%) rename x-pack/test/apm_api_integration/tests/transactions/{transactions_groups_primary_statistics.ts => transactions_groups_main_statistics.ts} (94%) diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx index c6ed4e640693f..d95d0c8503fc4 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx @@ -85,16 +85,16 @@ describe('ServiceOverview', () => { /* eslint-disable @typescript-eslint/naming-convention */ const calls = { - 'GET /api/apm/services/{serviceName}/error_groups/primary_statistics': { + 'GET /api/apm/services/{serviceName}/error_groups/main_statistics': { error_groups: [] as any[], }, - 'GET /api/apm/services/{serviceName}/transactions/groups/primary_statistics': { + 'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics': { transactionGroups: [] as any[], totalTransactionGroups: 0, isAggregationAccurate: true, }, 'GET /api/apm/services/{serviceName}/dependencies': [], - 'GET /api/apm/services/{serviceName}/service_overview_instances/primary_statistics': [], + 'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics': [], }; /* eslint-enable @typescript-eslint/naming-convention */ diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/get_column.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/get_column.tsx index fd1120808db9e..4ad83f7d87426 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/get_column.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/get_column.tsx @@ -16,18 +16,18 @@ import { TimestampTooltip } from '../../../shared/TimestampTooltip'; import { TruncateWithTooltip } from '../../../shared/truncate_with_tooltip'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; -type ErrorGroupPrimaryStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/primary_statistics'>; -type ErrorGroupComparisonStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/comparison_statistics'>; +type ErrorGroupMainStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/main_statistics'>; +type ErrorGroupDetailedStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/detailed_statistics'>; export function getColumns({ serviceName, - errorGroupComparisonStatistics, + errorGroupDetailedStatistics, comparisonEnabled, }: { serviceName: string; - errorGroupComparisonStatistics: ErrorGroupComparisonStatistics; + errorGroupDetailedStatistics: ErrorGroupDetailedStatistics; comparisonEnabled?: boolean; -}): Array> { +}): Array> { return [ { field: 'name', @@ -74,10 +74,10 @@ export function getColumns({ width: px(unit * 12), render: (_, { occurrences, group_id: errorGroupId }) => { const currentPeriodTimeseries = - errorGroupComparisonStatistics?.currentPeriod?.[errorGroupId] + errorGroupDetailedStatistics?.currentPeriod?.[errorGroupId] ?.timeseries; const previousPeriodTimeseries = - errorGroupComparisonStatistics?.previousPeriod?.[errorGroupId] + errorGroupDetailedStatistics?.previousPeriod?.[errorGroupId] ?.timeseries; return ( diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx index d36bee8d6be73..7c222f85133e3 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx @@ -28,8 +28,8 @@ import { getColumns } from './get_column'; interface Props { serviceName: string; } -type ErrorGroupPrimaryStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/primary_statistics'>; -type ErrorGroupComparisonStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/comparison_statistics'>; +type ErrorGroupMainStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/main_statistics'>; +type ErrorGroupDetailedStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/detailed_statistics'>; type SortDirection = 'asc' | 'desc'; type SortField = 'name' | 'last_seen' | 'occurrences'; @@ -40,8 +40,8 @@ const DEFAULT_SORT = { field: 'occurrences' as const, }; -const INITIAL_STATE_PRIMARY_STATISTICS: { - items: ErrorGroupPrimaryStatistics['error_groups']; +const INITIAL_STATE_MAIN_STATISTICS: { + items: ErrorGroupMainStatistics['error_groups']; totalItems: number; requestId?: string; } = { @@ -50,7 +50,7 @@ const INITIAL_STATE_PRIMARY_STATISTICS: { requestId: undefined, }; -const INITIAL_STATE_COMPARISON_STATISTICS: ErrorGroupComparisonStatistics = { +const INITIAL_STATE_DETAILED_STATISTICS: ErrorGroupDetailedStatistics = { currentPeriod: {}, previousPeriod: {}, }; @@ -82,19 +82,20 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) { start, end, comparisonType, + comparisonEnabled, }); const { pageIndex, sort } = tableOptions; const { direction, field } = sort; - const { data = INITIAL_STATE_PRIMARY_STATISTICS, status } = useFetcher( + const { data = INITIAL_STATE_MAIN_STATISTICS, status } = useFetcher( (callApmApi) => { if (!start || !end || !transactionType) { return; } return callApmApi({ endpoint: - 'GET /api/apm/services/{serviceName}/error_groups/primary_statistics', + 'GET /api/apm/services/{serviceName}/error_groups/main_statistics', params: { path: { serviceName }, query: { @@ -113,13 +114,13 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) { ).slice(pageIndex * PAGE_SIZE, (pageIndex + 1) * PAGE_SIZE); return { + // Everytime the main statistics is refetched, updates the requestId making the comparison API to be refetched. requestId: uuid(), items: currentPageErrorGroups, totalItems: response.error_groups.length, }; }); }, - // comparisonType is listed as dependency even thought it is not used. This is needed to trigger the comparison api when it is changed. // eslint-disable-next-line react-hooks/exhaustive-deps [ environment, @@ -131,21 +132,24 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) { pageIndex, direction, field, + // not used, but needed to trigger an update when comparisonType is changed either manually by user or when time range is changed comparisonType, + // not used, but needed to trigger an update when comparison feature is disabled/enabled by user + comparisonEnabled, ] ); const { requestId, items, totalItems } = data; const { - data: errorGroupComparisonStatistics = INITIAL_STATE_COMPARISON_STATISTICS, - status: errorGroupComparisonStatisticsStatus, + data: errorGroupDetailedStatistics = INITIAL_STATE_DETAILED_STATISTICS, + status: errorGroupDetailedStatisticsStatus, } = useFetcher( (callApmApi) => { if (requestId && items.length && start && end && transactionType) { return callApmApi({ endpoint: - 'GET /api/apm/services/{serviceName}/error_groups/comparison_statistics', + 'GET /api/apm/services/{serviceName}/error_groups/detailed_statistics', params: { path: { serviceName }, query: { @@ -173,7 +177,7 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) { const columns = getColumns({ serviceName, - errorGroupComparisonStatistics, + errorGroupDetailedStatistics, comparisonEnabled, }); @@ -218,7 +222,7 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) { }} loading={ status === FETCH_STATUS.LOADING || - errorGroupComparisonStatisticsStatus === FETCH_STATUS.LOADING + errorGroupDetailedStatisticsStatus === FETCH_STATUS.LOADING } onChange={(newTableOptions: { page?: { diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_chart_and_table.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_chart_and_table.tsx index 55eb2e3ddab73..8305b5a0dde3b 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_chart_and_table.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_chart_and_table.tsx @@ -25,7 +25,7 @@ interface ServiceOverviewInstancesChartAndTableProps { serviceName: string; } -export interface PrimaryStatsServiceInstanceItem { +export interface MainStatsServiceInstanceItem { serviceNodeName: string; errorRate: number; throughput: number; @@ -34,15 +34,15 @@ export interface PrimaryStatsServiceInstanceItem { memoryUsage: number; } -const INITIAL_STATE_PRIMARY_STATS = { - primaryStatsItems: [] as PrimaryStatsServiceInstanceItem[], - primaryStatsRequestId: undefined, - primaryStatsItemCount: 0, +const INITIAL_STATE_MAIN_STATS = { + mainStatsItems: [] as MainStatsServiceInstanceItem[], + mainStatsRequestId: undefined, + mainStatsItemCount: 0, }; -type ApiResponseComparisonStats = APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/comparison_statistics'>; +type ApiResponseDetailedStats = APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/detailed_statistics'>; -const INITIAL_STATE_COMPARISON_STATISTICS: ApiResponseComparisonStats = { +const INITIAL_STATE_DETAILED_STATISTICS: ApiResponseDetailedStats = { currentPeriod: {}, previousPeriod: {}, }; @@ -83,6 +83,7 @@ export function ServiceOverviewInstancesChartAndTable({ start, end, comparisonType, + comparisonEnabled, }, } = useUrlParams(); @@ -90,11 +91,12 @@ export function ServiceOverviewInstancesChartAndTable({ start, end, comparisonType, + comparisonEnabled, }); const { - data: primaryStatsData = INITIAL_STATE_PRIMARY_STATS, - status: primaryStatsStatus, + data: mainStatsData = INITIAL_STATE_MAIN_STATS, + status: mainStatsStatus, } = useFetcher( (callApmApi) => { if (!start || !end || !transactionType || !latencyAggregationType) { @@ -103,7 +105,7 @@ export function ServiceOverviewInstancesChartAndTable({ return callApmApi({ endpoint: - 'GET /api/apm/services/{serviceName}/service_overview_instances/primary_statistics', + 'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics', params: { path: { serviceName, @@ -118,7 +120,7 @@ export function ServiceOverviewInstancesChartAndTable({ }, }, }).then((response) => { - const primaryStatsItems = orderBy( + const mainStatsItems = orderBy( // need top-level sortable fields for the managed table response.serviceInstances.map((item) => ({ ...item, @@ -133,13 +135,13 @@ export function ServiceOverviewInstancesChartAndTable({ ).slice(pageIndex * PAGE_SIZE, (pageIndex + 1) * PAGE_SIZE); return { - primaryStatsRequestId: uuid(), - primaryStatsItems, - primaryStatsItemCount: response.serviceInstances.length, + // Everytime the main statistics is refetched, updates the requestId making the detailed API to be refetched. + mainStatsRequestId: uuid(), + mainStatsItems, + mainStatsItemCount: response.serviceInstances.length, }; }); }, - // comparisonType is listed as dependency even thought it is not used. This is needed to trigger the comparison api when it is changed. // eslint-disable-next-line react-hooks/exhaustive-deps [ environment, @@ -152,19 +154,22 @@ export function ServiceOverviewInstancesChartAndTable({ pageIndex, field, direction, + // not used, but needed to trigger an update when comparisonType is changed either manually by user or when time range is changed comparisonType, + // not used, but needed to trigger an update when comparison feature is disabled/enabled by user + comparisonEnabled, ] ); const { - primaryStatsItems, - primaryStatsRequestId, - primaryStatsItemCount, - } = primaryStatsData; + mainStatsItems, + mainStatsRequestId, + mainStatsItemCount, + } = mainStatsData; const { - data: comparisonStatsData = INITIAL_STATE_COMPARISON_STATISTICS, - status: comparisonStatisticsStatus, + data: detailedStatsData = INITIAL_STATE_DETAILED_STATISTICS, + status: detailedStatsStatus, } = useFetcher( (callApmApi) => { if ( @@ -172,14 +177,14 @@ export function ServiceOverviewInstancesChartAndTable({ !end || !transactionType || !latencyAggregationType || - !primaryStatsItemCount + !mainStatsItemCount ) { return; } return callApmApi({ endpoint: - 'GET /api/apm/services/{serviceName}/service_overview_instances/comparison_statistics', + 'GET /api/apm/services/{serviceName}/service_overview_instances/detailed_statistics', params: { path: { serviceName, @@ -193,7 +198,7 @@ export function ServiceOverviewInstancesChartAndTable({ numBuckets: 20, transactionType, serviceNodeIds: JSON.stringify( - primaryStatsItems.map((item) => item.serviceNodeName) + mainStatsItems.map((item) => item.serviceNodeName) ), comparisonStart, comparisonEnd, @@ -201,9 +206,9 @@ export function ServiceOverviewInstancesChartAndTable({ }, }); }, - // only fetches comparison statistics when requestId is invalidated by primary statistics api call + // only fetches detailed statistics when requestId is invalidated by main statistics api call // eslint-disable-next-line react-hooks/exhaustive-deps - [primaryStatsRequestId], + [mainStatsRequestId], { preservePreviousData: false } ); @@ -212,22 +217,22 @@ export function ServiceOverviewInstancesChartAndTable({ { setTableOptions({ diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/get_columns.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/get_columns.tsx index d61593f52b2ed..f52c2b083330f 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/get_columns.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/get_columns.tsx @@ -26,23 +26,23 @@ import { MetricOverviewLink } from '../../../shared/Links/apm/MetricOverviewLink import { ServiceNodeMetricOverviewLink } from '../../../shared/Links/apm/ServiceNodeMetricOverviewLink'; import { TruncateWithTooltip } from '../../../shared/truncate_with_tooltip'; import { getLatencyColumnLabel } from '../get_latency_column_label'; -import { PrimaryStatsServiceInstanceItem } from '../service_overview_instances_chart_and_table'; +import { MainStatsServiceInstanceItem } from '../service_overview_instances_chart_and_table'; -type ServiceInstanceComparisonStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/comparison_statistics'>; +type ServiceInstanceDetailedStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/detailed_statistics'>; export function getColumns({ serviceName, agentName, latencyAggregationType, - comparisonStatsData, + detailedStatsData, comparisonEnabled, }: { serviceName: string; agentName?: string; latencyAggregationType?: LatencyAggregationType; - comparisonStatsData?: ServiceInstanceComparisonStatistics; + detailedStatsData?: ServiceInstanceDetailedStatistics; comparisonEnabled?: boolean; -}): Array> { +}): Array> { return [ { field: 'serviceNodeName', @@ -87,9 +87,9 @@ export function getColumns({ width: px(unit * 10), render: (_, { serviceNodeName, latency }) => { const currentPeriodTimestamp = - comparisonStatsData?.currentPeriod?.[serviceNodeName]?.latency; + detailedStatsData?.currentPeriod?.[serviceNodeName]?.latency; const previousPeriodTimestamp = - comparisonStatsData?.previousPeriod?.[serviceNodeName]?.latency; + detailedStatsData?.previousPeriod?.[serviceNodeName]?.latency; return ( { const currentPeriodTimestamp = - comparisonStatsData?.currentPeriod?.[serviceNodeName]?.throughput; + detailedStatsData?.currentPeriod?.[serviceNodeName]?.throughput; const previousPeriodTimestamp = - comparisonStatsData?.previousPeriod?.[serviceNodeName]?.throughput; + detailedStatsData?.previousPeriod?.[serviceNodeName]?.throughput; return ( { const currentPeriodTimestamp = - comparisonStatsData?.currentPeriod?.[serviceNodeName]?.errorRate; + detailedStatsData?.currentPeriod?.[serviceNodeName]?.errorRate; const previousPeriodTimestamp = - comparisonStatsData?.previousPeriod?.[serviceNodeName]?.errorRate; + detailedStatsData?.previousPeriod?.[serviceNodeName]?.errorRate; return ( { const currentPeriodTimestamp = - comparisonStatsData?.currentPeriod?.[serviceNodeName]?.cpuUsage; + detailedStatsData?.currentPeriod?.[serviceNodeName]?.cpuUsage; const previousPeriodTimestamp = - comparisonStatsData?.previousPeriod?.[serviceNodeName]?.cpuUsage; + detailedStatsData?.previousPeriod?.[serviceNodeName]?.cpuUsage; return ( { const currentPeriodTimestamp = - comparisonStatsData?.currentPeriod?.[serviceNodeName]?.memoryUsage; + detailedStatsData?.currentPeriod?.[serviceNodeName]?.memoryUsage; const previousPeriodTimestamp = - comparisonStatsData?.previousPeriod?.[serviceNodeName]?.memoryUsage; + detailedStatsData?.previousPeriod?.[serviceNodeName]?.memoryUsage; return ( ; +type ServiceInstanceDetailedStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/detailed_statistics'>; export interface TableOptions { pageIndex: number; @@ -38,26 +38,26 @@ export interface TableOptions { } interface Props { - primaryStatsItems: PrimaryStatsServiceInstanceItem[]; + mainStatsItems: MainStatsServiceInstanceItem[]; serviceName: string; - primaryStatsStatus: FETCH_STATUS; - primaryStatsItemCount: number; + mainStatsStatus: FETCH_STATUS; + mainStatsItemCount: number; tableOptions: TableOptions; onChangeTableOptions: (newTableOptions: { page?: { index: number }; sort?: { field: string; direction: SortDirection }; }) => void; - comparisonStatsData?: ServiceInstanceComparisonStatistics; + detailedStatsData?: ServiceInstanceDetailedStatistics; isLoading: boolean; } export function ServiceOverviewInstancesTable({ - primaryStatsItems = [], - primaryStatsItemCount, + mainStatsItems = [], + mainStatsItemCount, serviceName, - primaryStatsStatus: status, + mainStatsStatus: status, tableOptions, onChangeTableOptions, - comparisonStatsData: comparisonStatsData, + detailedStatsData: detailedStatsData, isLoading, }: Props) { const { agentName } = useApmServiceContext(); @@ -72,14 +72,14 @@ export function ServiceOverviewInstancesTable({ agentName, serviceName, latencyAggregationType, - comparisonStatsData, + detailedStatsData, comparisonEnabled, }); const pagination = { pageIndex, pageSize: PAGE_SIZE, - totalItemCount: primaryStatsItemCount, + totalItemCount: mainStatsItemCount, hidePerPageOptions: true, }; @@ -97,11 +97,11 @@ export function ServiceOverviewInstancesTable({ ; +type TransactionGroupMainStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics'>; type ServiceTransactionGroupItem = ValuesType< - TransactionGroupPrimaryStatistics['transactionGroups'] + TransactionGroupMainStatistics['transactionGroups'] >; -type TransactionGroupComparisonStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/comparison_statistics'>; +type TransactionGroupDetailedStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/detailed_statistics'>; export function getColumns({ serviceName, latencyAggregationType, - transactionGroupComparisonStatistics, + transactionGroupDetailedStatistics, comparisonEnabled, }: { serviceName: string; latencyAggregationType?: LatencyAggregationType; - transactionGroupComparisonStatistics?: TransactionGroupComparisonStatistics; + transactionGroupDetailedStatistics?: TransactionGroupDetailedStatistics; comparisonEnabled?: boolean; }): Array> { return [ @@ -74,9 +74,9 @@ export function getColumns({ width: px(unit * 10), render: (_, { latency, name }) => { const currentTimeseries = - transactionGroupComparisonStatistics?.currentPeriod?.[name]?.latency; + transactionGroupDetailedStatistics?.currentPeriod?.[name]?.latency; const previousTimeseries = - transactionGroupComparisonStatistics?.previousPeriod?.[name]?.latency; + transactionGroupDetailedStatistics?.previousPeriod?.[name]?.latency; return ( { const currentTimeseries = - transactionGroupComparisonStatistics?.currentPeriod?.[name] - ?.throughput; + transactionGroupDetailedStatistics?.currentPeriod?.[name]?.throughput; const previousTimeseries = - transactionGroupComparisonStatistics?.previousPeriod?.[name] + transactionGroupDetailedStatistics?.previousPeriod?.[name] ?.throughput; return ( { const currentTimeseries = - transactionGroupComparisonStatistics?.currentPeriod?.[name] - ?.errorRate; + transactionGroupDetailedStatistics?.currentPeriod?.[name]?.errorRate; const previousTimeseries = - transactionGroupComparisonStatistics?.previousPeriod?.[name] - ?.errorRate; + transactionGroupDetailedStatistics?.previousPeriod?.[name]?.errorRate; return ( { const currentImpact = - transactionGroupComparisonStatistics?.currentPeriod?.[name]?.impact ?? + transactionGroupDetailedStatistics?.currentPeriod?.[name]?.impact ?? 0; const previousImpact = - transactionGroupComparisonStatistics?.previousPeriod?.[name]?.impact; + transactionGroupDetailedStatistics?.previousPeriod?.[name]?.impact; return ( diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx index 121b96b0361b2..0a4a735c117d2 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx @@ -29,7 +29,7 @@ interface Props { serviceName: string; } -type ApiResponse = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/primary_statistics'>; +type ApiResponse = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics'>; const INITIAL_STATE = { transactionGroups: [] as ApiResponse['transactionGroups'], isAggregationAccurate: true, @@ -77,6 +77,7 @@ export function ServiceOverviewTransactionsTable({ serviceName }: Props) { start, end, comparisonType, + comparisonEnabled, }); const { data = INITIAL_STATE, status } = useFetcher( @@ -86,7 +87,7 @@ export function ServiceOverviewTransactionsTable({ serviceName }: Props) { } return callApmApi({ endpoint: - 'GET /api/apm/services/{serviceName}/transactions/groups/primary_statistics', + 'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics', params: { path: { serviceName }, query: { @@ -107,14 +108,13 @@ export function ServiceOverviewTransactionsTable({ serviceName }: Props) { return { ...response, - // Everytime the primary statistics is refetched, updates the requestId making the comparison API to be refetched. + // Everytime the main statistics is refetched, updates the requestId making the detailed API to be refetched. requestId: uuid(), transactionGroupsTotalItems: response.transactionGroups.length, transactionGroups: currentPageTransactionGroups, }; }); }, - // comparisonType is listed as dependency even thought it is not used. This is needed to trigger the comparison api when it is changed. // eslint-disable-next-line react-hooks/exhaustive-deps [ environment, @@ -127,15 +127,18 @@ export function ServiceOverviewTransactionsTable({ serviceName }: Props) { pageIndex, direction, field, + // not used, but needed to trigger an update when comparisonType is changed either manually by user or when time range is changed comparisonType, + // not used, but needed to trigger an update when comparison feature is disabled/enabled by user + comparisonEnabled, ] ); const { transactionGroups, requestId, transactionGroupsTotalItems } = data; const { - data: transactionGroupComparisonStatistics, - status: transactionGroupComparisonStatisticsStatus, + data: transactionGroupDetailedStatistics, + status: transactionGroupDetailedStatisticsStatus, } = useFetcher( (callApmApi) => { if ( @@ -147,7 +150,7 @@ export function ServiceOverviewTransactionsTable({ serviceName }: Props) { ) { return callApmApi({ endpoint: - 'GET /api/apm/services/{serviceName}/transactions/groups/comparison_statistics', + 'GET /api/apm/services/{serviceName}/transactions/groups/detailed_statistics', params: { path: { serviceName }, query: { @@ -168,7 +171,7 @@ export function ServiceOverviewTransactionsTable({ serviceName }: Props) { }); } }, - // only fetches comparison statistics when requestId is invalidated by primary statistics api call + // only fetches detailed statistics when requestId is invalidated by main statistics api call // eslint-disable-next-line react-hooks/exhaustive-deps [requestId], { preservePreviousData: false } @@ -177,13 +180,13 @@ export function ServiceOverviewTransactionsTable({ serviceName }: Props) { const columns = getColumns({ serviceName, latencyAggregationType, - transactionGroupComparisonStatistics, + transactionGroupDetailedStatistics, comparisonEnabled, }); const isLoading = status === FETCH_STATUS.LOADING || - transactionGroupComparisonStatisticsStatus === FETCH_STATUS.LOADING; + transactionGroupDetailedStatisticsStatus === FETCH_STATUS.LOADING; const pagination = { pageIndex, diff --git a/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.stories.tsx b/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.stories.tsx index 0e24c8e51c543..0eb5b0e84ff39 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.stories.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.stories.tsx @@ -9,13 +9,13 @@ import { TooltipInfo } from '@elastic/charts'; import React, { ComponentType } from 'react'; import { EuiThemeProvider } from '../../../../../../../../src/plugins/kibana_react/common'; import { getDurationFormatter } from '../../../../../common/utils/formatters'; -import { PrimaryStatsServiceInstanceItem } from '../../../app/service_overview/service_overview_instances_chart_and_table'; +import { MainStatsServiceInstanceItem } from '../../../app/service_overview/service_overview_instances_chart_and_table'; import { CustomTooltip } from './custom_tooltip'; function getLatencyFormatter(props: TooltipInfo) { const maxLatency = Math.max( ...props.values.map((value) => { - const datum = (value.datum as unknown) as PrimaryStatsServiceInstanceItem; + const datum = (value.datum as unknown) as MainStatsServiceInstanceItem; return datum.latency ?? 0; }) ); diff --git a/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.tsx b/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.tsx index 2280fa91a659c..027f764317e46 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.tsx @@ -15,7 +15,7 @@ import { TimeFormatter, } from '../../../../../common/utils/formatters'; import { useTheme } from '../../../../hooks/use_theme'; -import { PrimaryStatsServiceInstanceItem } from '../../../app/service_overview/service_overview_instances_chart_and_table'; +import { MainStatsServiceInstanceItem } from '../../../app/service_overview/service_overview_instances_chart_and_table'; const latencyLabel = i18n.translate( 'xpack.apm.instancesLatencyDistributionChartTooltipLatencyLabel', @@ -48,7 +48,7 @@ function SingleInstanceCustomTooltip({ }) { const value = values[0]; const { color } = value; - const datum = (value.datum as unknown) as PrimaryStatsServiceInstanceItem; + const datum = (value.datum as unknown) as MainStatsServiceInstanceItem; const { latency, serviceNodeName, throughput } = datum; return ( @@ -119,7 +119,7 @@ function MultipleInstanceCustomTooltip({
{values.map((value) => { const { color } = value; - const datum = (value.datum as unknown) as PrimaryStatsServiceInstanceItem; + const datum = (value.datum as unknown) as MainStatsServiceInstanceItem; const { latency, serviceNodeName, throughput } = datum; return (
diff --git a/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/index.tsx index 57ecbd4ca0b78..394d5b5410d41 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/index.tsx @@ -30,7 +30,7 @@ import { } from '../../../../../common/utils/formatters'; import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; import { useTheme } from '../../../../hooks/use_theme'; -import { PrimaryStatsServiceInstanceItem } from '../../../app/service_overview/service_overview_instances_chart_and_table'; +import { MainStatsServiceInstanceItem } from '../../../app/service_overview/service_overview_instances_chart_and_table'; import * as urlHelpers from '../../Links/url_helpers'; import { ChartContainer } from '../chart_container'; import { getResponseTimeTickFormatter } from '../transaction_charts/helper'; @@ -38,7 +38,7 @@ import { CustomTooltip } from './custom_tooltip'; export interface InstancesLatencyDistributionChartProps { height: number; - items?: PrimaryStatsServiceInstanceItem[]; + items?: MainStatsServiceInstanceItem[]; status: FETCH_STATUS; } diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx index c585ed1f401de..ec4b39aa871bb 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx @@ -68,6 +68,7 @@ export function TransactionErrorRateChart({ start, end, comparisonType, + comparisonEnabled, }); const { data = INITIAL_STATE, status } = useFetcher( diff --git a/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.test.ts b/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.test.ts index 7234e94881ce7..77ae49bff7d84 100644 --- a/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.test.ts +++ b/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.test.ts @@ -11,12 +11,23 @@ import { describe('getTimeRangeComparison', () => { describe('return empty object', () => { + it('when comparison is disabled', () => { + const end = '2021-01-28T15:00:00.000Z'; + const result = getTimeRangeComparison({ + start: undefined, + end, + comparisonType: TimeRangeComparisonType.DayBefore, + comparisonEnabled: false, + }); + expect(result).toEqual({}); + }); it('when start is not defined', () => { const end = '2021-01-28T15:00:00.000Z'; const result = getTimeRangeComparison({ start: undefined, end, comparisonType: TimeRangeComparisonType.DayBefore, + comparisonEnabled: true, }); expect(result).toEqual({}); }); @@ -27,6 +38,7 @@ describe('getTimeRangeComparison', () => { start, end: undefined, comparisonType: TimeRangeComparisonType.DayBefore, + comparisonEnabled: true, }); expect(result).toEqual({}); }); @@ -39,6 +51,7 @@ describe('getTimeRangeComparison', () => { const end = '2021-01-28T15:00:00.000Z'; const result = getTimeRangeComparison({ comparisonType: TimeRangeComparisonType.DayBefore, + comparisonEnabled: true, start, end, }); @@ -52,6 +65,7 @@ describe('getTimeRangeComparison', () => { const end = '2021-01-28T15:00:00.000Z'; const result = getTimeRangeComparison({ comparisonType: TimeRangeComparisonType.WeekBefore, + comparisonEnabled: true, start, end, }); @@ -67,6 +81,7 @@ describe('getTimeRangeComparison', () => { start, end, comparisonType: TimeRangeComparisonType.PeriodBefore, + comparisonEnabled: true, }); expect(result).toEqual({ comparisonStart: '2021-02-09T14:24:02.174Z', @@ -83,6 +98,7 @@ describe('getTimeRangeComparison', () => { const end = '2021-01-28T15:00:00.000Z'; const result = getTimeRangeComparison({ comparisonType: TimeRangeComparisonType.WeekBefore, + comparisonEnabled: true, start, end, }); @@ -98,6 +114,7 @@ describe('getTimeRangeComparison', () => { const end = '2021-01-18T15:00:00.000Z'; const result = getTimeRangeComparison({ comparisonType: TimeRangeComparisonType.PeriodBefore, + comparisonEnabled: true, start, end, }); @@ -110,6 +127,7 @@ describe('getTimeRangeComparison', () => { const end = '2021-01-31T15:00:00.000Z'; const result = getTimeRangeComparison({ comparisonType: TimeRangeComparisonType.PeriodBefore, + comparisonEnabled: true, start, end, }); diff --git a/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.ts b/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.ts index e436f65e85ad9..025e8c2a9935d 100644 --- a/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.ts +++ b/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.ts @@ -39,15 +39,17 @@ const oneDayInMilliseconds = moment.duration(1, 'day').asMilliseconds(); const oneWeekInMilliseconds = moment.duration(1, 'week').asMilliseconds(); export function getTimeRangeComparison({ + comparisonEnabled, comparisonType, start, end, }: { + comparisonEnabled?: boolean; comparisonType?: TimeRangeComparisonType; start?: string; end?: string; }) { - if (!comparisonType || !start || !end) { + if (!comparisonEnabled || !comparisonType || !start || !end) { return {}; } diff --git a/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx b/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx index 84a2dad278a9b..98fbd4f399d98 100644 --- a/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx @@ -63,10 +63,12 @@ function getSelectOptions({ start, end, rangeTo, + comparisonEnabled, }: { start?: string; end?: string; rangeTo?: string; + comparisonEnabled?: boolean; }) { const momentStart = moment(start); const momentEnd = moment(end); @@ -112,6 +114,7 @@ function getSelectOptions({ comparisonType: TimeRangeComparisonType.PeriodBefore, start, end, + comparisonEnabled, }); const dateFormat = getDateFormat({ @@ -140,7 +143,12 @@ export function TimeComparison() { urlParams: { start, end, comparisonEnabled, comparisonType, rangeTo }, } = useUrlParams(); - const selectOptions = getSelectOptions({ start, end, rangeTo }); + const selectOptions = getSelectOptions({ + start, + end, + rangeTo, + comparisonEnabled, + }); // Sets default values if (comparisonEnabled === undefined || comparisonType === undefined) { diff --git a/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts b/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts index 16a82b1d4972b..0f1592ca2679f 100644 --- a/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts +++ b/x-pack/plugins/apm/public/hooks/use_transaction_latency_chart_fetcher.ts @@ -27,6 +27,7 @@ export function useTransactionLatencyChartsFetcher() { transactionName, latencyAggregationType, comparisonType, + comparisonEnabled, }, } = useUrlParams(); @@ -34,6 +35,7 @@ export function useTransactionLatencyChartsFetcher() { start, end, comparisonType, + comparisonEnabled, }); const { data, error, status } = useFetcher( diff --git a/x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_comparison_statistics.ts b/x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_detailed_statistics.ts similarity index 94% rename from x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_comparison_statistics.ts rename to x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_detailed_statistics.ts index b559f55bbe78e..dd41269f0bad6 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_comparison_statistics.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_detailed_statistics.ts @@ -22,7 +22,7 @@ import { withApmSpan } from '../../../utils/with_apm_span'; import { getBucketSize } from '../../helpers/get_bucket_size'; import { Setup, SetupTimeRange } from '../../helpers/setup_request'; -export async function getServiceErrorGroupComparisonStatistics({ +export async function getServiceErrorGroupDetailedStatistics({ kuery, serviceName, setup, @@ -44,7 +44,7 @@ export async function getServiceErrorGroupComparisonStatistics({ end: number; }): Promise> { return withApmSpan( - 'get_service_error_group_comparison_statistics', + 'get_service_error_group_detailed_statistics', async () => { const { apmEventClient } = setup; @@ -147,7 +147,7 @@ export async function getServiceErrorGroupPeriods({ groupIds, }; - const currentPeriodPromise = getServiceErrorGroupComparisonStatistics({ + const currentPeriodPromise = getServiceErrorGroupDetailedStatistics({ ...commonProps, start, end, @@ -155,7 +155,7 @@ export async function getServiceErrorGroupPeriods({ const previousPeriodPromise = comparisonStart && comparisonEnd - ? getServiceErrorGroupComparisonStatistics({ + ? getServiceErrorGroupDetailedStatistics({ ...commonProps, start: comparisonStart, end: comparisonEnd, diff --git a/x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_primary_statistics.ts b/x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_main_statistics.ts similarity index 95% rename from x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_primary_statistics.ts rename to x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_main_statistics.ts index 13a6069876369..361c92244aee0 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_primary_statistics.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_error_groups/get_service_error_group_main_statistics.ts @@ -23,7 +23,7 @@ import { withApmSpan } from '../../../utils/with_apm_span'; import { getErrorName } from '../../helpers/get_error_name'; import { Setup, SetupTimeRange } from '../../helpers/setup_request'; -export function getServiceErrorGroupPrimaryStatistics({ +export function getServiceErrorGroupMainStatistics({ kuery, serviceName, setup, @@ -36,7 +36,7 @@ export function getServiceErrorGroupPrimaryStatistics({ transactionType: string; environment?: string; }) { - return withApmSpan('get_service_error_group_primary_statistics', async () => { + return withApmSpan('get_service_error_group_main_statistics', async () => { const { apmEventClient, start, end } = setup; const response = await apmEventClient.search({ diff --git a/x-pack/plugins/apm/server/lib/services/get_service_instances/comparison_statistics.ts b/x-pack/plugins/apm/server/lib/services/get_service_instances/detailed_statistics.ts similarity index 80% rename from x-pack/plugins/apm/server/lib/services/get_service_instances/comparison_statistics.ts rename to x-pack/plugins/apm/server/lib/services/get_service_instances/detailed_statistics.ts index 6fca42723b9cc..85414100a1563 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_instances/comparison_statistics.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_instances/detailed_statistics.ts @@ -15,7 +15,7 @@ import { Setup, SetupTimeRange } from '../../helpers/setup_request'; import { getServiceInstancesSystemMetricStatistics } from './get_service_instances_system_metric_statistics'; import { getServiceInstancesTransactionStatistics } from './get_service_instances_transaction_statistics'; -interface ServiceInstanceComparisonStatisticsParams { +interface ServiceInstanceDetailedStatisticsParams { environment?: string; kuery?: string; latencyAggregationType: LatencyAggregationType; @@ -29,8 +29,8 @@ interface ServiceInstanceComparisonStatisticsParams { serviceNodeIds: string[]; } -async function getServiceInstancesComparisonStatistics( - params: ServiceInstanceComparisonStatisticsParams +async function getServiceInstancesDetailedStatistics( + params: ServiceInstanceDetailedStatisticsParams ): Promise< Array<{ serviceNodeName: string; @@ -41,31 +41,28 @@ async function getServiceInstancesComparisonStatistics( memoryUsage?: Coordinate[]; }> > { - return withApmSpan( - 'get_service_instances_comparison_statistics', - async () => { - const [transactionStats, systemMetricStats = []] = await Promise.all([ - getServiceInstancesTransactionStatistics({ - ...params, - isComparisonSearch: true, - }), - getServiceInstancesSystemMetricStatistics({ - ...params, - isComparisonSearch: true, - }), - ]); + return withApmSpan('get_service_instances_detailed_statistics', async () => { + const [transactionStats, systemMetricStats = []] = await Promise.all([ + getServiceInstancesTransactionStatistics({ + ...params, + isComparisonSearch: true, + }), + getServiceInstancesSystemMetricStatistics({ + ...params, + isComparisonSearch: true, + }), + ]); - const stats = joinByKey( - [...transactionStats, ...systemMetricStats], - 'serviceNodeName' - ); + const stats = joinByKey( + [...transactionStats, ...systemMetricStats], + 'serviceNodeName' + ); - return stats; - } - ); + return stats; + }); } -export async function getServiceInstancesComparisonStatisticsPeriods({ +export async function getServiceInstancesDetailedStatisticsPeriods({ environment, kuery, latencyAggregationType, @@ -91,7 +88,7 @@ export async function getServiceInstancesComparisonStatisticsPeriods({ comparisonEnd?: number; }) { return withApmSpan( - 'get_service_instances_comparison_statistics_periods', + 'get_service_instances_detailed_statistics_periods', async () => { const { start, end } = setup; @@ -107,7 +104,7 @@ export async function getServiceInstancesComparisonStatisticsPeriods({ serviceNodeIds, }; - const currentPeriodPromise = getServiceInstancesComparisonStatistics({ + const currentPeriodPromise = getServiceInstancesDetailedStatistics({ ...commonParams, start, end, @@ -115,7 +112,7 @@ export async function getServiceInstancesComparisonStatisticsPeriods({ const previousPeriodPromise = comparisonStart && comparisonEnd - ? getServiceInstancesComparisonStatistics({ + ? getServiceInstancesDetailedStatistics({ ...commonParams, start: comparisonStart, end: comparisonEnd, diff --git a/x-pack/plugins/apm/server/lib/services/get_service_instances/primary_statistics.ts b/x-pack/plugins/apm/server/lib/services/get_service_instances/main_statistics.ts similarity index 87% rename from x-pack/plugins/apm/server/lib/services/get_service_instances/primary_statistics.ts rename to x-pack/plugins/apm/server/lib/services/get_service_instances/main_statistics.ts index 3cd98558eff02..8bfa67f8c6247 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_instances/primary_statistics.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_instances/main_statistics.ts @@ -12,7 +12,7 @@ import { Setup, SetupTimeRange } from '../../helpers/setup_request'; import { getServiceInstancesSystemMetricStatistics } from './get_service_instances_system_metric_statistics'; import { getServiceInstancesTransactionStatistics } from './get_service_instances_transaction_statistics'; -interface ServiceInstancePrimaryStatisticsParams { +interface ServiceInstanceMainStatisticsParams { environment?: string; kuery?: string; latencyAggregationType: LatencyAggregationType; @@ -25,8 +25,8 @@ interface ServiceInstancePrimaryStatisticsParams { end: number; } -export async function getServiceInstancesPrimaryStatistics( - params: Omit +export async function getServiceInstancesMainStatistics( + params: Omit ): Promise< Array<{ serviceNodeName: string; @@ -37,7 +37,7 @@ export async function getServiceInstancesPrimaryStatistics( memoryUsage?: number | null; }> > { - return withApmSpan('get_service_instances_primary_statistics', async () => { + return withApmSpan('get_service_instances_main_statistics', async () => { const paramsForSubQueries = { ...params, size: 50, diff --git a/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_comparison_statistics.ts b/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_detailed_statistics.ts similarity index 95% rename from x-pack/plugins/apm/server/lib/services/get_service_transaction_group_comparison_statistics.ts rename to x-pack/plugins/apm/server/lib/services/get_service_transaction_group_detailed_statistics.ts index 54e882d1dd6da..314d6c7bd1458 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_comparison_statistics.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_detailed_statistics.ts @@ -35,7 +35,7 @@ import { import { Setup, SetupTimeRange } from '../helpers/setup_request'; import { calculateTransactionErrorPercentage } from '../helpers/transaction_error_rate'; -export async function getServiceTransactionGroupComparisonStatistics({ +export async function getServiceTransactionGroupDetailedStatistics({ environment, kuery, serviceName, @@ -69,7 +69,7 @@ export async function getServiceTransactionGroupComparisonStatistics({ }> > { return withApmSpan( - 'get_service_transaction_group_comparison_statistics', + 'get_service_transaction_group_detailed_statistics', async () => { const { apmEventClient } = setup; const { intervalString } = getBucketSize({ start, end, numBuckets }); @@ -185,7 +185,7 @@ export async function getServiceTransactionGroupComparisonStatistics({ ); } -export async function getServiceTransactionGroupComparisonStatisticsPeriods({ +export async function getServiceTransactionGroupDetailedStatisticsPeriods({ serviceName, transactionNames, setup, @@ -224,7 +224,7 @@ export async function getServiceTransactionGroupComparisonStatisticsPeriods({ kuery, }; - const currentPeriodPromise = getServiceTransactionGroupComparisonStatistics({ + const currentPeriodPromise = getServiceTransactionGroupDetailedStatistics({ ...commonProps, start, end, @@ -232,7 +232,7 @@ export async function getServiceTransactionGroupComparisonStatisticsPeriods({ const previousPeriodPromise = comparisonStart && comparisonEnd - ? getServiceTransactionGroupComparisonStatistics({ + ? getServiceTransactionGroupDetailedStatistics({ ...commonProps, start: comparisonStart, end: comparisonEnd, diff --git a/x-pack/plugins/apm/server/routes/services.ts b/x-pack/plugins/apm/server/routes/services.ts index 3ac76d4a5b4c2..07f951c4c1c86 100644 --- a/x-pack/plugins/apm/server/routes/services.ts +++ b/x-pack/plugins/apm/server/routes/services.ts @@ -17,10 +17,10 @@ import { getServiceAnnotations } from '../lib/services/annotations'; import { getServices } from '../lib/services/get_services'; import { getServiceAgentName } from '../lib/services/get_service_agent_name'; import { getServiceDependencies } from '../lib/services/get_service_dependencies'; -import { getServiceErrorGroupPeriods } from '../lib/services/get_service_error_groups/get_service_error_group_comparison_statistics'; -import { getServiceErrorGroupPrimaryStatistics } from '../lib/services/get_service_error_groups/get_service_error_group_primary_statistics'; -import { getServiceInstancesComparisonStatisticsPeriods } from '../lib/services/get_service_instances/comparison_statistics'; -import { getServiceInstancesPrimaryStatistics } from '../lib/services/get_service_instances/primary_statistics'; +import { getServiceErrorGroupPeriods } from '../lib/services/get_service_error_groups/get_service_error_group_detailed_statistics'; +import { getServiceErrorGroupMainStatistics } from '../lib/services/get_service_error_groups/get_service_error_group_main_statistics'; +import { getServiceInstancesDetailedStatisticsPeriods } from '../lib/services/get_service_instances/detailed_statistics'; +import { getServiceInstancesMainStatistics } from '../lib/services/get_service_instances/main_statistics'; import { getServiceMetadataDetails } from '../lib/services/get_service_metadata_details'; import { getServiceMetadataIcons } from '../lib/services/get_service_metadata_icons'; import { getServiceNodeMetadata } from '../lib/services/get_service_node_metadata'; @@ -292,9 +292,8 @@ const serviceAnnotationsCreateRoute = createApmServerRoute({ }, }); -const serviceErrorGroupsPrimaryStatisticsRoute = createApmServerRoute({ - endpoint: - 'GET /api/apm/services/{serviceName}/error_groups/primary_statistics', +const serviceErrorGroupsMainStatisticsRoute = createApmServerRoute({ + endpoint: 'GET /api/apm/services/{serviceName}/error_groups/main_statistics', params: t.type({ path: t.type({ serviceName: t.string, @@ -317,7 +316,7 @@ const serviceErrorGroupsPrimaryStatisticsRoute = createApmServerRoute({ path: { serviceName }, query: { kuery, transactionType, environment }, } = params; - return getServiceErrorGroupPrimaryStatistics({ + return getServiceErrorGroupMainStatistics({ kuery, serviceName, setup, @@ -327,9 +326,9 @@ const serviceErrorGroupsPrimaryStatisticsRoute = createApmServerRoute({ }, }); -const serviceErrorGroupsComparisonStatisticsRoute = createApmServerRoute({ +const serviceErrorGroupsDetailedStatisticsRoute = createApmServerRoute({ endpoint: - 'GET /api/apm/services/{serviceName}/error_groups/comparison_statistics', + 'GET /api/apm/services/{serviceName}/error_groups/detailed_statistics', params: t.type({ path: t.type({ serviceName: t.string, @@ -444,9 +443,9 @@ const serviceThroughputRoute = createApmServerRoute({ }, }); -const serviceInstancesPrimaryStatisticsRoute = createApmServerRoute({ +const serviceInstancesMainStatisticsRoute = createApmServerRoute({ endpoint: - 'GET /api/apm/services/{serviceName}/service_overview_instances/primary_statistics', + 'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics', params: t.type({ path: t.type({ serviceName: t.string, @@ -479,7 +478,7 @@ const serviceInstancesPrimaryStatisticsRoute = createApmServerRoute({ const { start, end } = setup; - const serviceInstances = await getServiceInstancesPrimaryStatistics({ + const serviceInstances = await getServiceInstancesMainStatistics({ environment, kuery, latencyAggregationType, @@ -495,9 +494,9 @@ const serviceInstancesPrimaryStatisticsRoute = createApmServerRoute({ }, }); -const serviceInstancesComparisonStatisticsRoute = createApmServerRoute({ +const serviceInstancesDetailedStatisticsRoute = createApmServerRoute({ endpoint: - 'GET /api/apm/services/{serviceName}/service_overview_instances/comparison_statistics', + 'GET /api/apm/services/{serviceName}/service_overview_instances/detailed_statistics', params: t.type({ path: t.type({ serviceName: t.string, @@ -535,7 +534,7 @@ const serviceInstancesComparisonStatisticsRoute = createApmServerRoute({ setup ); - return getServiceInstancesComparisonStatisticsPeriods({ + return getServiceInstancesDetailedStatisticsPeriods({ environment, kuery, latencyAggregationType, @@ -671,11 +670,11 @@ export const serviceRouteRepository = createApmServerRouteRepository() .add(serviceNodeMetadataRoute) .add(serviceAnnotationsRoute) .add(serviceAnnotationsCreateRoute) - .add(serviceErrorGroupsPrimaryStatisticsRoute) - .add(serviceErrorGroupsComparisonStatisticsRoute) + .add(serviceErrorGroupsMainStatisticsRoute) + .add(serviceErrorGroupsDetailedStatisticsRoute) .add(serviceThroughputRoute) - .add(serviceInstancesPrimaryStatisticsRoute) - .add(serviceInstancesComparisonStatisticsRoute) + .add(serviceInstancesMainStatisticsRoute) + .add(serviceInstancesDetailedStatisticsRoute) .add(serviceDependenciesRoute) .add(serviceProfilingTimelineRoute) .add(serviceProfilingStatisticsRoute); diff --git a/x-pack/plugins/apm/server/routes/transactions.ts b/x-pack/plugins/apm/server/routes/transactions.ts index b323801430dba..bcc554e552fc3 100644 --- a/x-pack/plugins/apm/server/routes/transactions.ts +++ b/x-pack/plugins/apm/server/routes/transactions.ts @@ -15,7 +15,7 @@ import { import { getSearchAggregatedTransactions } from '../lib/helpers/aggregated_transactions'; import { setupRequest } from '../lib/helpers/setup_request'; import { getServiceTransactionGroups } from '../lib/services/get_service_transaction_groups'; -import { getServiceTransactionGroupComparisonStatisticsPeriods } from '../lib/services/get_service_transaction_group_comparison_statistics'; +import { getServiceTransactionGroupDetailedStatisticsPeriods } from '../lib/services/get_service_transaction_group_detailed_statistics'; import { getTransactionBreakdown } from '../lib/transactions/breakdown'; import { getTransactionDistribution } from '../lib/transactions/distribution'; import { getAnomalySeries } from '../lib/transactions/get_anomaly_data'; @@ -34,7 +34,7 @@ import { /** * Returns a list of transactions grouped by name - * //TODO: delete this once we moved away from the old table in the transaction overview page. It should be replaced by /transactions/groups/primary_statistics/ + * //TODO: delete this once we moved away from the old table in the transaction overview page. It should be replaced by /transactions/groups/main_statistics/ */ const transactionGroupsRoute = createApmServerRoute({ endpoint: 'GET /api/apm/services/{serviceName}/transactions/groups', @@ -74,9 +74,9 @@ const transactionGroupsRoute = createApmServerRoute({ }, }); -const transactionGroupsPrimaryStatisticsRoute = createApmServerRoute({ +const transactionGroupsMainStatisticsRoute = createApmServerRoute({ endpoint: - 'GET /api/apm/services/{serviceName}/transactions/groups/primary_statistics', + 'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics', params: t.type({ path: t.type({ serviceName: t.string }), query: t.intersection([ @@ -117,9 +117,9 @@ const transactionGroupsPrimaryStatisticsRoute = createApmServerRoute({ }, }); -const transactionGroupsComparisonStatisticsRoute = createApmServerRoute({ +const transactionGroupsDetailedStatisticsRoute = createApmServerRoute({ endpoint: - 'GET /api/apm/services/{serviceName}/transactions/groups/comparison_statistics', + 'GET /api/apm/services/{serviceName}/transactions/groups/detailed_statistics', params: t.type({ path: t.type({ serviceName: t.string }), query: t.intersection([ @@ -161,7 +161,7 @@ const transactionGroupsComparisonStatisticsRoute = createApmServerRoute({ }, } = params; - return await getServiceTransactionGroupComparisonStatisticsPeriods({ + return await getServiceTransactionGroupDetailedStatisticsPeriods({ environment, kuery, setup, @@ -431,8 +431,8 @@ const transactionChartsErrorRateRoute = createApmServerRoute({ export const transactionRouteRepository = createApmServerRouteRepository() .add(transactionGroupsRoute) - .add(transactionGroupsPrimaryStatisticsRoute) - .add(transactionGroupsComparisonStatisticsRoute) + .add(transactionGroupsMainStatisticsRoute) + .add(transactionGroupsDetailedStatisticsRoute) .add(transactionLatencyChartsRoute) .add(transactionThroughputChartsRoute) .add(transactionChartsDistributionRoute) diff --git a/x-pack/test/apm_api_integration/tests/index.ts b/x-pack/test/apm_api_integration/tests/index.ts index 53ec61b8d9b61..df1ed1db5900a 100644 --- a/x-pack/test/apm_api_integration/tests/index.ts +++ b/x-pack/test/apm_api_integration/tests/index.ts @@ -65,12 +65,12 @@ export default function apmApiIntegrationTests(providerContext: FtrProviderConte loadTestFile(require.resolve('./service_overview/dependencies')); }); - describe('service_overview/instances_primary_statistics', function () { - loadTestFile(require.resolve('./service_overview/instances_primary_statistics')); + describe('service_overview/instances_main_statistics', function () { + loadTestFile(require.resolve('./service_overview/instances_main_statistics')); }); - describe('service_overview/instances_comparison_statistics', function () { - loadTestFile(require.resolve('./service_overview/instances_comparison_statistics')); + describe('service_overview/instances_detailed_statistics', function () { + loadTestFile(require.resolve('./service_overview/instances_detailed_statistics')); }); // Services @@ -102,12 +102,12 @@ export default function apmApiIntegrationTests(providerContext: FtrProviderConte loadTestFile(require.resolve('./services/transaction_types')); }); - describe('services/error_groups_primary_statistics', function () { - loadTestFile(require.resolve('./services/error_groups_primary_statistics')); + describe('services/error_groups_main_statistics', function () { + loadTestFile(require.resolve('./services/error_groups_main_statistics')); }); - describe('services/error_groups_comparison_statistics', function () { - loadTestFile(require.resolve('./services/error_groups_comparison_statistics')); + describe('services/error_groups_detailed_statistics', function () { + loadTestFile(require.resolve('./services/error_groups_detailed_statistics')); }); // Settinges @@ -165,12 +165,12 @@ export default function apmApiIntegrationTests(providerContext: FtrProviderConte loadTestFile(require.resolve('./transactions/top_transaction_groups')); }); - describe('transactions/transactions_groups_primary_statistics', function () { - loadTestFile(require.resolve('./transactions/transactions_groups_primary_statistics')); + describe('transactions/transactions_groups_main_statistics', function () { + loadTestFile(require.resolve('./transactions/transactions_groups_main_statistics')); }); - describe('transactions/transactions_groups_comparison_statistics', function () { - loadTestFile(require.resolve('./transactions/transactions_groups_comparison_statistics')); + describe('transactions/transactions_groups_detailed_statistics', function () { + loadTestFile(require.resolve('./transactions/transactions_groups_detailed_statistics')); }); // feature control diff --git a/x-pack/test/apm_api_integration/tests/service_overview/__snapshots__/instances_comparison_statistics.snap b/x-pack/test/apm_api_integration/tests/service_overview/__snapshots__/instances_detailed_statistics.snap similarity index 99% rename from x-pack/test/apm_api_integration/tests/service_overview/__snapshots__/instances_comparison_statistics.snap rename to x-pack/test/apm_api_integration/tests/service_overview/__snapshots__/instances_detailed_statistics.snap index 7b7f6fd85b71e..99208e6cb466b 100644 --- a/x-pack/test/apm_api_integration/tests/service_overview/__snapshots__/instances_comparison_statistics.snap +++ b/x-pack/test/apm_api_integration/tests/service_overview/__snapshots__/instances_detailed_statistics.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`APM API tests basic apm_8.0.0 Service overview instances comparison statistics when data is loaded fetching data with comparison returns the right data for current and previous periods 5`] = ` +exports[`APM API tests basic apm_8.0.0 Service overview instances detailed statistics when data is loaded fetching data with comparison returns the right data for current and previous periods 5`] = ` Object { "currentPeriod": Object { "02950c4c5fbb0fda1cc98c47bf4024b473a8a17629db6530d95dcee68bd54c6c": Object { @@ -675,7 +675,7 @@ Object { } `; -exports[`APM API tests basic apm_8.0.0 Service overview instances comparison statistics when data is loaded fetching data without comparison returns the right data 3`] = ` +exports[`APM API tests basic apm_8.0.0 Service overview instances detailed statistics when data is loaded fetching data without comparison returns the right data 3`] = ` Object { "currentPeriod": Object { "02950c4c5fbb0fda1cc98c47bf4024b473a8a17629db6530d95dcee68bd54c6c": Object { diff --git a/x-pack/test/apm_api_integration/tests/service_overview/instances_comparison_statistics.ts b/x-pack/test/apm_api_integration/tests/service_overview/instances_detailed_statistics.ts similarity index 95% rename from x-pack/test/apm_api_integration/tests/service_overview/instances_comparison_statistics.ts rename to x-pack/test/apm_api_integration/tests/service_overview/instances_detailed_statistics.ts index 64d7e258c1fad..b5cfd722c41dd 100644 --- a/x-pack/test/apm_api_integration/tests/service_overview/instances_comparison_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/service_overview/instances_detailed_statistics.ts @@ -24,18 +24,18 @@ export default function ApiTest({ getService }: FtrProviderContext) { interface Response { status: number; - body: APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/comparison_statistics'>; + body: APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/detailed_statistics'>; } registry.when( - 'Service overview instances comparison statistics when data is not loaded', + 'Service overview instances detailed statistics when data is not loaded', { config: 'basic', archives: [] }, () => { describe('when data is not loaded', () => { it('handles the empty state', async () => { const response: Response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/service_overview_instances/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/service_overview_instances/detailed_statistics`, query: { latencyAggregationType: 'avg', start, @@ -55,7 +55,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { ); registry.when( - 'Service overview instances comparison statistics when data is loaded', + 'Service overview instances detailed statistics when data is loaded', { config: 'basic', archives: [archiveName] }, () => { describe('fetching data without comparison', () => { @@ -64,7 +64,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { beforeEach(async () => { response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/service_overview_instances/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/service_overview_instances/detailed_statistics`, query: { latencyAggregationType: 'avg', start, @@ -111,7 +111,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { beforeEach(async () => { response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/service_overview_instances/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/service_overview_instances/detailed_statistics`, query: { latencyAggregationType: 'avg', numBuckets: 20, diff --git a/x-pack/test/apm_api_integration/tests/service_overview/instances_primary_statistics.ts b/x-pack/test/apm_api_integration/tests/service_overview/instances_main_statistics.ts similarity index 94% rename from x-pack/test/apm_api_integration/tests/service_overview/instances_primary_statistics.ts rename to x-pack/test/apm_api_integration/tests/service_overview/instances_main_statistics.ts index baa95eb56a126..8e085fab98ebf 100644 --- a/x-pack/test/apm_api_integration/tests/service_overview/instances_primary_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/service_overview/instances_main_statistics.ts @@ -22,13 +22,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { const { start, end } = archives[archiveName]; registry.when( - 'Service overview instances primary statistics when data is not loaded', + 'Service overview instances main statistics when data is not loaded', { config: 'basic', archives: [] }, () => { describe('when data is not loaded', () => { it('handles the empty state', async () => { const response = await apmApiSupertest({ - endpoint: `GET /api/apm/services/{serviceName}/service_overview_instances/primary_statistics`, + endpoint: `GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics`, params: { path: { serviceName: 'opbeans-java' }, query: { @@ -48,17 +48,17 @@ export default function ApiTest({ getService }: FtrProviderContext) { ); registry.when( - 'Service overview instances primary statistics when data is loaded', + 'Service overview instances main statistics when data is loaded', { config: 'basic', archives: [archiveName] }, () => { describe('fetching java data', () => { let response: { - body: APIReturnType<`GET /api/apm/services/{serviceName}/service_overview_instances/primary_statistics`>; + body: APIReturnType<`GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics`>; }; beforeEach(async () => { response = await apmApiSupertest({ - endpoint: `GET /api/apm/services/{serviceName}/service_overview_instances/primary_statistics`, + endpoint: `GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics`, params: { path: { serviceName: 'opbeans-java' }, query: { @@ -122,12 +122,12 @@ export default function ApiTest({ getService }: FtrProviderContext) { describe('fetching non-java data', () => { let response: { - body: APIReturnType<`GET /api/apm/services/{serviceName}/service_overview_instances/primary_statistics`>; + body: APIReturnType<`GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics`>; }; beforeEach(async () => { response = await apmApiSupertest({ - endpoint: `GET /api/apm/services/{serviceName}/service_overview_instances/primary_statistics`, + endpoint: `GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics`, params: { path: { serviceName: 'opbeans-ruby' }, query: { diff --git a/x-pack/test/apm_api_integration/tests/services/__snapshots__/error_groups_comparison_statistics.snap b/x-pack/test/apm_api_integration/tests/services/__snapshots__/error_groups_detailed_statistics.snap similarity index 91% rename from x-pack/test/apm_api_integration/tests/services/__snapshots__/error_groups_comparison_statistics.snap rename to x-pack/test/apm_api_integration/tests/services/__snapshots__/error_groups_detailed_statistics.snap index 31bc29a2476ca..36529a41e080f 100644 --- a/x-pack/test/apm_api_integration/tests/services/__snapshots__/error_groups_comparison_statistics.snap +++ b/x-pack/test/apm_api_integration/tests/services/__snapshots__/error_groups_detailed_statistics.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`APM API tests basic apm_8.0.0 Error groups comparison statistics when data is loaded returns the correct data 1`] = ` +exports[`APM API tests basic apm_8.0.0 Error groups detailed statistics when data is loaded returns the correct data 1`] = ` Object { "groupId": "051f95eabf120ebe2f8b0399fe3e54c5", "timeseries": Array [ @@ -132,7 +132,7 @@ Object { } `; -exports[`APM API tests basic apm_8.0.0 Error groups comparison statistics when data is loaded with previous data returns the correct data returns correct timeseries 1`] = ` +exports[`APM API tests basic apm_8.0.0 Error groups detailed statistics when data is loaded with previous data returns the correct data returns correct timeseries 1`] = ` Object { "groupId": "051f95eabf120ebe2f8b0399fe3e54c5", "timeseries": Array [ diff --git a/x-pack/test/apm_api_integration/tests/services/error_groups_comparison_statistics.ts b/x-pack/test/apm_api_integration/tests/services/error_groups_detailed_statistics.ts similarity index 90% rename from x-pack/test/apm_api_integration/tests/services/error_groups_comparison_statistics.ts rename to x-pack/test/apm_api_integration/tests/services/error_groups_detailed_statistics.ts index 821d0515aa808..fdbc98af03bf2 100644 --- a/x-pack/test/apm_api_integration/tests/services/error_groups_comparison_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/services/error_groups_detailed_statistics.ts @@ -13,7 +13,7 @@ import { FtrProviderContext } from '../../common/ftr_provider_context'; import { registry } from '../../common/registry'; import { APIReturnType } from '../../../../plugins/apm/public/services/rest/createCallApmApi'; -type ErrorGroupsComparisonStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/comparison_statistics'>; +type ErrorGroupsDetailedStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/detailed_statistics'>; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); @@ -30,13 +30,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { ]; registry.when( - 'Error groups comparison statistics when data is not loaded', + 'Error groups detailed statistics when data is not loaded', { config: 'basic', archives: [] }, () => { it('handles empty state', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/error_groups/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/error_groups/detailed_statistics`, query: { start, end, @@ -54,13 +54,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { ); registry.when( - 'Error groups comparison statistics when data is loaded', + 'Error groups detailed statistics when data is loaded', { config: 'basic', archives: [archiveName] }, () => { it('returns the correct data', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/error_groups/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/error_groups/detailed_statistics`, query: { start, end, @@ -73,7 +73,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(response.status).to.be(200); - const errorGroupsComparisonStatistics = response.body as ErrorGroupsComparisonStatistics; + const errorGroupsComparisonStatistics = response.body as ErrorGroupsDetailedStatistics; expect(Object.keys(errorGroupsComparisonStatistics.currentPeriod).sort()).to.eql( groupIds.sort() ); @@ -93,7 +93,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns an empty state when requested groupIds are not available in the given time range', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/error_groups/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/error_groups/detailed_statistics`, query: { start, end, @@ -111,18 +111,18 @@ export default function ApiTest({ getService }: FtrProviderContext) { ); registry.when( - 'Error groups comparison statistics when data is loaded with previous data', + 'Error groups detailed statistics when data is loaded with previous data', { config: 'basic', archives: [archiveName] }, () => { describe('returns the correct data', async () => { let response: { status: number; - body: ErrorGroupsComparisonStatistics; + body: ErrorGroupsDetailedStatistics; }; before(async () => { response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/error_groups/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/error_groups/detailed_statistics`, query: { numBuckets: 20, transactionType: 'request', @@ -139,7 +139,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); it('returns correct timeseries', () => { - const errorGroupsComparisonStatistics = response.body as ErrorGroupsComparisonStatistics; + const errorGroupsComparisonStatistics = response.body as ErrorGroupsDetailedStatistics; const errorgroupsComparisonStatistics = errorGroupsComparisonStatistics.currentPeriod[groupIds[0]]; expect( @@ -149,7 +149,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); it('matches x-axis on current period and previous period', () => { - const errorGroupsComparisonStatistics = response.body as ErrorGroupsComparisonStatistics; + const errorGroupsComparisonStatistics = response.body as ErrorGroupsDetailedStatistics; const currentPeriodItems = Object.values(errorGroupsComparisonStatistics.currentPeriod); const previousPeriodItems = Object.values(errorGroupsComparisonStatistics.previousPeriod); @@ -166,7 +166,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns an empty state when requested groupIds are not available in the given time range', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/error_groups/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/error_groups/detailed_statistics`, query: { numBuckets: 20, transactionType: 'request', diff --git a/x-pack/test/apm_api_integration/tests/services/error_groups_primary_statistics.ts b/x-pack/test/apm_api_integration/tests/services/error_groups_main_statistics.ts similarity index 84% rename from x-pack/test/apm_api_integration/tests/services/error_groups_primary_statistics.ts rename to x-pack/test/apm_api_integration/tests/services/error_groups_main_statistics.ts index 61a44619ea905..c95ba52e6052e 100644 --- a/x-pack/test/apm_api_integration/tests/services/error_groups_primary_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/services/error_groups_main_statistics.ts @@ -12,7 +12,7 @@ import { FtrProviderContext } from '../../common/ftr_provider_context'; import { registry } from '../../common/registry'; import { APIReturnType } from '../../../../plugins/apm/public/services/rest/createCallApmApi'; -type ErrorGroupsPrimaryStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/primary_statistics'>; +type ErrorGroupsMainStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/main_statistics'>; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); @@ -22,13 +22,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { const { start, end } = metadata; registry.when( - 'Error groups primary statistics when data is not loaded', + 'Error groups main statistics when data is not loaded', { config: 'basic', archives: [] }, () => { it('handles empty state', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/error_groups/primary_statistics`, + pathname: `/api/apm/services/opbeans-java/error_groups/main_statistics`, query: { start, end, @@ -47,13 +47,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { ); registry.when( - 'Error groups primary statistics when data is loaded', + 'Error groups main statistics when data is loaded', { config: 'basic', archives: [archiveName] }, () => { it('returns the correct data', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/error_groups/primary_statistics`, + pathname: `/api/apm/services/opbeans-java/error_groups/main_statistics`, query: { start, end, @@ -65,12 +65,12 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(response.status).to.be(200); - const errorGroupPrimaryStatistics = response.body as ErrorGroupsPrimaryStatistics; + const errorGroupMainStatistics = response.body as ErrorGroupsMainStatistics; - expect(errorGroupPrimaryStatistics.is_aggregation_accurate).to.eql(true); - expect(errorGroupPrimaryStatistics.error_groups.length).to.be.greaterThan(0); + expect(errorGroupMainStatistics.is_aggregation_accurate).to.eql(true); + expect(errorGroupMainStatistics.error_groups.length).to.be.greaterThan(0); - expectSnapshot(errorGroupPrimaryStatistics.error_groups.map(({ name }) => name)) + expectSnapshot(errorGroupMainStatistics.error_groups.map(({ name }) => name)) .toMatchInline(` Array [ "Could not write JSON: Null return value from advice does not match primitive return type for: public abstract double co.elastic.apm.opbeans.repositories.Numbers.getRevenue(); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Null return value from advice does not match primitive return type for: public abstract double co.elastic.apm.opbeans.repositories.Numbers.getRevenue() (through reference chain: co.elastic.apm.opbeans.repositories.Stats[\\"numbers\\"]->com.sun.proxy.$Proxy132[\\"revenue\\"])", @@ -81,7 +81,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { ] `); - const occurences = errorGroupPrimaryStatistics.error_groups.map( + const occurences = errorGroupMainStatistics.error_groups.map( ({ occurrences }) => occurrences ); @@ -97,7 +97,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { ] `); - const firstItem = errorGroupPrimaryStatistics.error_groups[0]; + const firstItem = errorGroupMainStatistics.error_groups[0]; expectSnapshot(firstItem).toMatchInline(` Object { diff --git a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_comparison_statistics.snap b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap similarity index 88% rename from x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_comparison_statistics.snap rename to x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap index bc641ad1a9890..64336a4c65451 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_comparison_statistics.snap +++ b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`APM API tests basic apm_8.0.0 Transaction groups comparison statistics when data is loaded returns data with previous period returns correct error rate data 1`] = ` +exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics when data is loaded returns data with previous period returns correct error rate data 1`] = ` Array [ Object { "x": 1607436720000, @@ -69,7 +69,7 @@ Array [ ] `; -exports[`APM API tests basic apm_8.0.0 Transaction groups comparison statistics when data is loaded returns data with previous period returns correct error rate data 2`] = ` +exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics when data is loaded returns data with previous period returns correct error rate data 2`] = ` Array [ Object { "x": 1607436720000, @@ -138,7 +138,7 @@ Array [ ] `; -exports[`APM API tests basic apm_8.0.0 Transaction groups comparison statistics when data is loaded returns data with previous period returns correct latency data 1`] = ` +exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics when data is loaded returns data with previous period returns correct latency data 1`] = ` Array [ Object { "x": 1607436720000, @@ -207,7 +207,7 @@ Array [ ] `; -exports[`APM API tests basic apm_8.0.0 Transaction groups comparison statistics when data is loaded returns data with previous period returns correct latency data 2`] = ` +exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics when data is loaded returns data with previous period returns correct latency data 2`] = ` Array [ Object { "x": 1607436720000, @@ -276,7 +276,7 @@ Array [ ] `; -exports[`APM API tests basic apm_8.0.0 Transaction groups comparison statistics when data is loaded returns data with previous period returns correct throughput data 1`] = ` +exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics when data is loaded returns data with previous period returns correct throughput data 1`] = ` Array [ Object { "x": 1607436720000, @@ -345,7 +345,7 @@ Array [ ] `; -exports[`APM API tests basic apm_8.0.0 Transaction groups comparison statistics when data is loaded returns data with previous period returns correct throughput data 2`] = ` +exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics when data is loaded returns data with previous period returns correct throughput data 2`] = ` Array [ Object { "x": 1607436720000, @@ -414,7 +414,7 @@ Array [ ] `; -exports[`APM API tests basic apm_8.0.0 Transaction groups comparison statistics when data is loaded returns the correct data 1`] = ` +exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics when data is loaded returns the correct data 1`] = ` Array [ Object { "x": 1607435820000, @@ -543,7 +543,7 @@ Array [ ] `; -exports[`APM API tests basic apm_8.0.0 Transaction groups comparison statistics when data is loaded returns the correct data 2`] = ` +exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics when data is loaded returns the correct data 2`] = ` Array [ Object { "x": 1607435820000, @@ -672,7 +672,7 @@ Array [ ] `; -exports[`APM API tests basic apm_8.0.0 Transaction groups comparison statistics when data is loaded returns the correct data 3`] = ` +exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics when data is loaded returns the correct data 3`] = ` Array [ Object { "x": 1607435820000, @@ -801,7 +801,7 @@ Array [ ] `; -exports[`APM API tests basic apm_8.0.0 Transaction groups comparison statistics when data is loaded returns the correct data for latency aggregation 99th percentile 1`] = ` +exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics when data is loaded returns the correct data for latency aggregation 99th percentile 1`] = ` Array [ Object { "x": 1607435820000, diff --git a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_comparison_statistics.ts b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_detailed_statistics.ts similarity index 93% rename from x-pack/test/apm_api_integration/tests/transactions/transactions_groups_comparison_statistics.ts rename to x-pack/test/apm_api_integration/tests/transactions/transactions_groups_detailed_statistics.ts index 72fb0e832412d..303b8f715e957 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_comparison_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_detailed_statistics.ts @@ -15,7 +15,7 @@ import { FtrProviderContext } from '../../common/ftr_provider_context'; import { registry } from '../../common/registry'; import { removeEmptyCoordinates, roundNumber } from '../../utils'; -type TransactionsGroupsComparisonStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/comparison_statistics'>; +type TransactionsGroupsDetailedStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/detailed_statistics'>; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); @@ -25,13 +25,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { const transactionNames = ['DispatcherServlet#doGet', 'APIRestController#customers']; registry.when( - 'Transaction groups comparison statistics when data is not loaded', + 'Transaction groups detailed statistics when data is not loaded', { config: 'basic', archives: [] }, () => { it('handles the empty state', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/transactions/groups/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/transactions/groups/detailed_statistics`, query: { start, end, @@ -50,13 +50,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { ); registry.when( - 'Transaction groups comparison statistics when data is loaded', + 'Transaction groups detailed statistics when data is loaded', { config: 'basic', archives: [archiveName] }, () => { it('returns the correct data', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/transactions/groups/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/transactions/groups/detailed_statistics`, query: { start, end, @@ -73,7 +73,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const { currentPeriod, previousPeriod, - } = response.body as TransactionsGroupsComparisonStatistics; + } = response.body as TransactionsGroupsDetailedStatistics; expect(Object.keys(currentPeriod).sort()).to.be.eql(transactionNames.sort()); @@ -110,7 +110,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns the correct data for latency aggregation 99th percentile', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/transactions/groups/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/transactions/groups/detailed_statistics`, query: { start, end, @@ -127,7 +127,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const { currentPeriod, previousPeriod, - } = response.body as TransactionsGroupsComparisonStatistics; + } = response.body as TransactionsGroupsDetailedStatistics; expect(Object.keys(currentPeriod).sort()).to.be.eql(transactionNames.sort()); @@ -158,7 +158,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns empty when transaction name is not found', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/transactions/groups/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/transactions/groups/detailed_statistics`, query: { start, end, @@ -175,12 +175,12 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); describe('returns data with previous period', async () => { - let currentPeriod: TransactionsGroupsComparisonStatistics['currentPeriod']; - let previousPeriod: TransactionsGroupsComparisonStatistics['previousPeriod']; + let currentPeriod: TransactionsGroupsDetailedStatistics['currentPeriod']; + let previousPeriod: TransactionsGroupsDetailedStatistics['previousPeriod']; before(async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/transactions/groups/comparison_statistics`, + pathname: `/api/apm/services/opbeans-java/transactions/groups/detailed_statistics`, query: { numBuckets: 20, transactionType: 'request', diff --git a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_primary_statistics.ts b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_main_statistics.ts similarity index 94% rename from x-pack/test/apm_api_integration/tests/transactions/transactions_groups_primary_statistics.ts rename to x-pack/test/apm_api_integration/tests/transactions/transactions_groups_main_statistics.ts index b6fd4054a351c..a2da077864b99 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_primary_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_main_statistics.ts @@ -13,7 +13,7 @@ import { FtrProviderContext } from '../../common/ftr_provider_context'; import archives from '../../common/fixtures/es_archiver/archives_metadata'; import { registry } from '../../common/registry'; -type TransactionsGroupsPrimaryStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/primary_statistics'>; +type TransactionsGroupsPrimaryStatistics = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics'>; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); @@ -22,13 +22,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { const { start, end } = archives[archiveName]; registry.when( - 'Transaction groups primary statistics when data is not loaded', + 'Transaction groups main statistics when data is not loaded', { config: 'basic', archives: [] }, () => { it('handles the empty state', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/transactions/groups/primary_statistics`, + pathname: `/api/apm/services/opbeans-java/transactions/groups/main_statistics`, query: { start, end, @@ -47,13 +47,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { ); registry.when( - 'Transaction groups primary statistics when data is loaded', + 'Transaction groups main statistics when data is loaded', { config: 'basic', archives: [archiveName] }, () => { it('returns the correct data', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/transactions/groups/primary_statistics`, + pathname: `/api/apm/services/opbeans-java/transactions/groups/main_statistics`, query: { start, end, @@ -125,7 +125,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns the correct data for latency aggregation 99th percentile', async () => { const response = await supertest.get( url.format({ - pathname: `/api/apm/services/opbeans-java/transactions/groups/primary_statistics`, + pathname: `/api/apm/services/opbeans-java/transactions/groups/main_statistics`, query: { start, end, From 89dd4b6eecf6e4eb415666a758ba423c010d02f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20St=C3=BCrmer?= Date: Tue, 20 Apr 2021 00:04:25 +0200 Subject: [PATCH 27/56] [Logs UI] Support Kibana index patterns in the Logs UI settings UI (#94849) This enhances the Logs UI settings screen to support both the legacy configuration style with index name patterns as well as the new style based on Kibana index patterns. --- .../log_sources/log_source_configuration.ts | 7 +- x-pack/plugins/infra/common/utility_types.ts | 2 + .../hooks/use_kibana_index_patterns.mock.tsx | 95 +++++++ .../public/hooks/use_kibana_index_patterns.ts | 45 ++++ .../settings/fields_configuration_panel.tsx | 49 ++-- .../pages/logs/settings/form_elements.tsx | 243 +++++++++++++++++ .../pages/logs/settings/form_field_props.tsx | 37 +++ .../index_names_configuration_panel.tsx | 127 +++++++++ .../index_pattern_configuration_panel.tsx | 121 +++++++++ .../logs/settings/index_pattern_selector.tsx | 73 +++++ .../indices_configuration_form_state.ts | 191 +++++++------- .../indices_configuration_panel.stories.tsx | 168 ++++++++++++ .../settings/indices_configuration_panel.tsx | 140 +++++----- .../log_columns_configuration_form_state.tsx | 158 +---------- .../log_columns_configuration_panel.tsx | 209 +++++++++------ .../name_configuration_form_state.tsx | 19 ++ .../settings/name_configuration_panel.tsx | 69 +++++ .../source_configuration_form_errors.tsx | 101 +++++++ .../source_configuration_form_state.tsx | 132 ++++------ .../source_configuration_settings.tsx | 249 ++++++++---------- .../pages/logs/settings/validation_errors.ts | 116 ++++++++ .../settings/fields_configuration_panel.tsx | 3 +- .../indices_configuration_form_state.ts | 3 +- .../settings/indices_configuration_panel.tsx | 3 +- .../metrics/settings}/input_fields.tsx | 0 .../settings/ml_configuration_panel.tsx | 18 +- .../settings}/name_configuration_panel.tsx | 1 - .../source_configuration_settings.tsx | 15 +- .../public/utils/source_configuration.ts | 12 + .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 31 files changed, 1743 insertions(+), 665 deletions(-) create mode 100644 x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.mock.tsx create mode 100644 x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.ts create mode 100644 x-pack/plugins/infra/public/pages/logs/settings/form_elements.tsx create mode 100644 x-pack/plugins/infra/public/pages/logs/settings/form_field_props.tsx create mode 100644 x-pack/plugins/infra/public/pages/logs/settings/index_names_configuration_panel.tsx create mode 100644 x-pack/plugins/infra/public/pages/logs/settings/index_pattern_configuration_panel.tsx create mode 100644 x-pack/plugins/infra/public/pages/logs/settings/index_pattern_selector.tsx create mode 100644 x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_panel.stories.tsx create mode 100644 x-pack/plugins/infra/public/pages/logs/settings/name_configuration_form_state.tsx create mode 100644 x-pack/plugins/infra/public/pages/logs/settings/name_configuration_panel.tsx create mode 100644 x-pack/plugins/infra/public/pages/logs/settings/source_configuration_form_errors.tsx create mode 100644 x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts rename x-pack/plugins/infra/public/{components/source_configuration => pages/metrics/settings}/input_fields.tsx (100%) rename x-pack/plugins/infra/public/{components/source_configuration => pages/metrics/settings}/name_configuration_panel.tsx (99%) diff --git a/x-pack/plugins/infra/common/log_sources/log_source_configuration.ts b/x-pack/plugins/infra/common/log_sources/log_source_configuration.ts index 83bc8743900eb..ab98ad75b8433 100644 --- a/x-pack/plugins/infra/common/log_sources/log_source_configuration.ts +++ b/x-pack/plugins/infra/common/log_sources/log_source_configuration.ts @@ -53,18 +53,21 @@ export const logSourceColumnConfigurationRT = rt.union([ export type LogSourceColumnConfiguration = rt.TypeOf; // Kibana index pattern -const logIndexPatternReferenceRT = rt.type({ +export const logIndexPatternReferenceRT = rt.type({ type: rt.literal('index_pattern'), indexPatternId: rt.string, }); +export type LogIndexPatternReference = rt.TypeOf; // Legacy support -const logIndexNameReferenceRT = rt.type({ +export const logIndexNameReferenceRT = rt.type({ type: rt.literal('index_name'), indexName: rt.string, }); +export type LogIndexNameReference = rt.TypeOf; export const logIndexReferenceRT = rt.union([logIndexPatternReferenceRT, logIndexNameReferenceRT]); +export type LogIndexReference = rt.TypeOf; export const logSourceConfigurationPropertiesRT = rt.strict({ name: rt.string, diff --git a/x-pack/plugins/infra/common/utility_types.ts b/x-pack/plugins/infra/common/utility_types.ts index a785b4d13e557..1f26309973f0d 100644 --- a/x-pack/plugins/infra/common/utility_types.ts +++ b/x-pack/plugins/infra/common/utility_types.ts @@ -45,5 +45,7 @@ interface DeepPartialArray extends Array> {} type DeepPartialObject = { [P in keyof T]+?: DeepPartial }; +export type ObjectValues = Array; + export type ObjectEntry = [keyof T, T[keyof T]]; export type ObjectEntries = Array>; diff --git a/x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.mock.tsx b/x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.mock.tsx new file mode 100644 index 0000000000000..dbf032415cb99 --- /dev/null +++ b/x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.mock.tsx @@ -0,0 +1,95 @@ +/* + * 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 React, { useMemo } from 'react'; +import { from, of } from 'rxjs'; +import { delay } from 'rxjs/operators'; +import { CoreStart } from '../../../../../src/core/public'; +import { FieldSpec } from '../../../../../src/plugins/data/common'; +import { + IIndexPattern, + IndexPattern, + IndexPatternField, + IndexPatternsContract, +} from '../../../../../src/plugins/data/public'; +import { KibanaContextProvider } from '../../../../../src/plugins/kibana_react/public'; +import { Pick2 } from '../../common/utility_types'; + +type MockIndexPattern = Pick< + IndexPattern, + 'id' | 'title' | 'type' | 'getTimeField' | 'isTimeBased' | 'getFieldByName' +>; +export type MockIndexPatternSpec = Pick< + IIndexPattern, + 'id' | 'title' | 'type' | 'timeFieldName' +> & { + fields: FieldSpec[]; +}; + +export const MockIndexPatternsKibanaContextProvider: React.FC<{ + asyncDelay: number; + mockIndexPatterns: MockIndexPatternSpec[]; +}> = ({ asyncDelay, children, mockIndexPatterns }) => { + const indexPatterns = useMemo( + () => + createIndexPatternsMock( + asyncDelay, + mockIndexPatterns.map(({ id, title, type = undefined, fields, timeFieldName }) => { + const indexPatternFields = fields.map((fieldSpec) => new IndexPatternField(fieldSpec)); + + return { + id, + title, + type, + getTimeField: () => indexPatternFields.find(({ name }) => name === timeFieldName), + isTimeBased: () => timeFieldName != null, + getFieldByName: (fieldName) => + indexPatternFields.find(({ name }) => name === fieldName), + }; + }) + ), + [asyncDelay, mockIndexPatterns] + ); + + const core = useMemo>( + () => ({ + application: { + getUrlForApp: () => '', + }, + }), + [] + ); + + return ( + + {children} + + ); +}; + +const createIndexPatternsMock = ( + asyncDelay: number, + indexPatterns: MockIndexPattern[] +): { + getIdsWithTitle: IndexPatternsContract['getIdsWithTitle']; + get: (...args: Parameters) => Promise; +} => { + return { + async getIdsWithTitle(_refresh?: boolean) { + const indexPatterns$ = of( + indexPatterns.map(({ id = 'unknown_id', title }) => ({ id, title })) + ); + return await indexPatterns$.pipe(delay(asyncDelay)).toPromise(); + }, + async get(indexPatternId: string) { + const indexPatterns$ = from( + indexPatterns.filter((indexPattern) => indexPattern.id === indexPatternId) + ); + return await indexPatterns$.pipe(delay(asyncDelay)).toPromise(); + }, + }; +}; diff --git a/x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.ts b/x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.ts new file mode 100644 index 0000000000000..a53cbcc170433 --- /dev/null +++ b/x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.ts @@ -0,0 +1,45 @@ +/* + * 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 { useState } from 'react'; +import { useTrackedPromise } from '../utils/use_tracked_promise'; +import { useKibanaContextForPlugin } from './use_kibana'; + +export const useKibanaIndexPatternService = () => { + const { + services: { + data: { indexPatterns }, + }, + } = useKibanaContextForPlugin(); + + return indexPatterns; +}; + +interface IndexPatternDescriptor { + id: string; + title: string; +} + +export const useKibanaIndexPatternTitles = () => { + const indexPatterns = useKibanaIndexPatternService(); + + const [indexPatternTitles, setIndexPatternTitles] = useState([]); + + const [indexPatternTitlesRequest, fetchIndexPatternTitles] = useTrackedPromise( + { + createPromise: () => indexPatterns.getIdsWithTitle(true), + onResolve: setIndexPatternTitles, + }, + [indexPatterns] + ); + + return { + fetchIndexPatternTitles, + indexPatternTitles, + latestIndexPatternTitlesRequest: indexPatternTitlesRequest, + }; +}; diff --git a/x-pack/plugins/infra/public/pages/logs/settings/fields_configuration_panel.tsx b/x-pack/plugins/infra/public/pages/logs/settings/fields_configuration_panel.tsx index 236817ce3890f..3f8922b1871c9 100644 --- a/x-pack/plugins/infra/public/pages/logs/settings/fields_configuration_panel.tsx +++ b/x-pack/plugins/infra/public/pages/logs/settings/fields_configuration_panel.tsx @@ -10,7 +10,6 @@ import { EuiCode, EuiDescribedFormGroup, EuiFieldText, - EuiForm, EuiFormRow, EuiLink, EuiSpacer, @@ -18,27 +17,29 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import React from 'react'; -import { InputFieldProps } from '../../../components/source_configuration/input_fields'; +import React, { useMemo } from 'react'; +import { FormElement } from './form_elements'; +import { getFormRowProps, getStringInputFieldProps } from './form_field_props'; +import { FormValidationError } from './validation_errors'; interface FieldsConfigurationPanelProps { isLoading: boolean; - readOnly: boolean; - tiebreakerFieldProps: InputFieldProps; - timestampFieldProps: InputFieldProps; + isReadOnly: boolean; + tiebreakerFieldFormElement: FormElement; + timestampFieldFormElement: FormElement; } export const FieldsConfigurationPanel = ({ isLoading, - readOnly, - tiebreakerFieldProps, - timestampFieldProps, + isReadOnly, + tiebreakerFieldFormElement, + timestampFieldFormElement, }: FieldsConfigurationPanelProps) => { - const isTimestampValueDefault = timestampFieldProps.value === '@timestamp'; - const isTiebreakerValueDefault = tiebreakerFieldProps.value === '_doc'; + const isTimestampValueDefault = timestampFieldFormElement.value === '@timestamp'; + const isTiebreakerValueDefault = tiebreakerFieldFormElement.value === '_doc'; return ( - + <>

} - isInvalid={timestampFieldProps.isInvalid} label={ } + {...useMemo(() => getFormRowProps(timestampFieldFormElement), [ + timestampFieldFormElement, + ])} > getStringInputFieldProps(timestampFieldFormElement), [ + timestampFieldFormElement, + ])} /> @@ -146,7 +150,6 @@ export const FieldsConfigurationPanel = ({ } > } - isInvalid={tiebreakerFieldProps.isInvalid} label={ } + {...useMemo(() => getFormRowProps(tiebreakerFieldFormElement), [ + tiebreakerFieldFormElement, + ])} > getStringInputFieldProps(tiebreakerFieldFormElement), [ + tiebreakerFieldFormElement, + ])} /> - + ); }; diff --git a/x-pack/plugins/infra/public/pages/logs/settings/form_elements.tsx b/x-pack/plugins/infra/public/pages/logs/settings/form_elements.tsx new file mode 100644 index 0000000000000..751d9762b937a --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/settings/form_elements.tsx @@ -0,0 +1,243 @@ +/* + * 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 equal from 'fast-deep-equal'; +import { useCallback, useMemo, useState } from 'react'; +import { useAsync } from 'react-use'; +import { ObjectEntries } from '../../../../common/utility_types'; +import { ChildFormValidationError, GenericValidationError } from './validation_errors'; + +const unsetValue = Symbol('unset form value'); + +type ValueUpdater = (updater: (previousValue: Value) => Value) => void; + +export interface FormElement { + initialValue: Value; + isDirty: boolean; + resetValue: () => void; + updateValue: ValueUpdater; + validity: FormElementValidity; + value: Value; +} + +type FormElementMap = { + [formElementName in keyof FormValues]: FormElement; +}; + +export interface CompositeFormElement + extends FormElement { + childFormElements: FormElementMap; +} + +export type FormElementValidity = + | { validity: 'valid' } + | { validity: 'invalid'; reasons: InvalidReason[] } + | { validity: 'pending' }; + +export const useFormElement = ({ + initialValue, + validate, +}: { + initialValue: Value; + validate?: (value: Value) => Promise; +}): FormElement => { + const [changedValue, setChangedValue] = useState(unsetValue); + + const value = changedValue !== unsetValue ? changedValue : initialValue; + + const updateValue = useCallback>( + (updater) => + setChangedValue((previousValue) => + previousValue === unsetValue ? updater(initialValue) : updater(previousValue) + ), + [initialValue] + ); + + const resetValue = useCallback(() => setChangedValue(unsetValue), []); + + const isDirty = useMemo(() => !equal(value, initialValue), [value, initialValue]); + + const validity = useValidity(value, validate); + + return useMemo( + () => ({ + initialValue, + isDirty, + resetValue, + updateValue, + validity, + value, + }), + [initialValue, isDirty, resetValue, updateValue, validity, value] + ); +}; + +export const useCompositeFormElement = ({ + childFormElements, + validate, +}: { + childFormElements: FormElementMap; + validate?: (values: FormValues) => Promise; +}): CompositeFormElement => { + const childFormElementEntries = useMemo( + () => Object.entries(childFormElements) as ObjectEntries, + // eslint-disable-next-line react-hooks/exhaustive-deps + Object.entries(childFormElements).flat() + ); + + const value = useMemo( + () => + childFormElementEntries.reduce( + (accumulatedFormValues, [formElementName, formElement]) => ({ + ...accumulatedFormValues, + [formElementName]: formElement.value, + }), + {} as FormValues + ), + [childFormElementEntries] + ); + + const updateValue = useCallback( + (updater: (previousValues: FormValues) => FormValues) => { + const newValues = updater(value); + + childFormElementEntries.forEach(([formElementName, formElement]) => + formElement.updateValue(() => newValues[formElementName]) + ); + }, + [childFormElementEntries, value] + ); + + const isDirty = useMemo( + () => childFormElementEntries.some(([, formElement]) => formElement.isDirty), + [childFormElementEntries] + ); + + const formValidity = useValidity(value, validate); + const childFormElementsValidity = useMemo< + FormElementValidity + >(() => { + if ( + childFormElementEntries.some(([, formElement]) => formElement.validity.validity === 'invalid') + ) { + return { + validity: 'invalid', + reasons: [{ type: 'child' }], + }; + } else if ( + childFormElementEntries.some(([, formElement]) => formElement.validity.validity === 'pending') + ) { + return { + validity: 'pending', + }; + } else { + return { + validity: 'valid', + }; + } + }, [childFormElementEntries]); + + const validity = useMemo(() => getCombinedValidity(formValidity, childFormElementsValidity), [ + formValidity, + childFormElementsValidity, + ]); + + const resetValue = useCallback(() => { + childFormElementEntries.forEach(([, formElement]) => formElement.resetValue()); + }, [childFormElementEntries]); + + const initialValue = useMemo( + () => + childFormElementEntries.reduce( + (accumulatedFormValues, [formElementName, formElement]) => ({ + ...accumulatedFormValues, + [formElementName]: formElement.initialValue, + }), + {} as FormValues + ), + [childFormElementEntries] + ); + + return useMemo( + () => ({ + childFormElements, + initialValue, + isDirty, + resetValue, + updateValue, + validity, + value, + }), + [childFormElements, initialValue, isDirty, resetValue, updateValue, validity, value] + ); +}; + +const useValidity = ( + value: Value, + validate?: (value: Value) => Promise +) => { + const validationState = useAsync(() => validate?.(value) ?? Promise.resolve([]), [ + validate, + value, + ]); + + const validity = useMemo>(() => { + if (validationState.loading) { + return { validity: 'pending' as const }; + } else if (validationState.error != null) { + return { + validity: 'invalid' as const, + reasons: [ + { + type: 'generic' as const, + message: `${validationState.error}`, + }, + ], + }; + } else if (validationState.value && validationState.value.length > 0) { + return { + validity: 'invalid' as const, + reasons: validationState.value, + }; + } else { + return { + validity: 'valid' as const, + }; + } + }, [validationState.error, validationState.loading, validationState.value]); + + return validity; +}; + +export const getCombinedValidity = ( + first: FormElementValidity, + second: FormElementValidity +): FormElementValidity => { + if (first.validity === 'invalid' || second.validity === 'invalid') { + return { + validity: 'invalid', + reasons: [ + ...(first.validity === 'invalid' ? first.reasons : []), + ...(second.validity === 'invalid' ? second.reasons : []), + ], + }; + } else if (first.validity === 'pending' || second.validity === 'pending') { + return { + validity: 'pending', + }; + } else { + return { + validity: 'valid', + }; + } +}; + +export const isFormElementForType = ( + isValue: (value: any) => value is Value +) => ( + formElement: FormElement +): formElement is FormElement => isValue(formElement.value); diff --git a/x-pack/plugins/infra/public/pages/logs/settings/form_field_props.tsx b/x-pack/plugins/infra/public/pages/logs/settings/form_field_props.tsx new file mode 100644 index 0000000000000..4a3927157b136 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/settings/form_field_props.tsx @@ -0,0 +1,37 @@ +/* + * 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 React from 'react'; +import { FormElement } from './form_elements'; +import { LogSourceConfigurationFormError } from './source_configuration_form_errors'; +import { FormValidationError } from './validation_errors'; + +export const getFormRowProps = (formElement: FormElement) => ({ + error: + formElement.validity.validity === 'invalid' + ? formElement.validity.reasons.map((error) => ( + + )) + : [], + isInvalid: formElement.validity.validity === 'invalid', +}); + +export const getInputFieldProps = ( + decodeInputValue: (value: string) => Value, + encodeInputValue: (value: Value) => string +) => (formElement: FormElement) => ({ + isInvalid: formElement.validity.validity === 'invalid', + onChange: (evt: React.ChangeEvent) => { + const newValue = evt.currentTarget.value; + formElement.updateValue(() => decodeInputValue(newValue)); + }, + value: encodeInputValue(formElement.value), +}); + +export const getStringInputFieldProps = getInputFieldProps( + (value) => `${value}`, + (value) => value +); diff --git a/x-pack/plugins/infra/public/pages/logs/settings/index_names_configuration_panel.tsx b/x-pack/plugins/infra/public/pages/logs/settings/index_names_configuration_panel.tsx new file mode 100644 index 0000000000000..2d2909f42bae6 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/settings/index_names_configuration_panel.tsx @@ -0,0 +1,127 @@ +/* + * 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 { + EuiButton, + EuiCallOut, + EuiCode, + EuiDescribedFormGroup, + EuiFieldText, + EuiFormRow, + EuiSpacer, + EuiTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React from 'react'; +import { useTrackPageview } from '../../../../../observability/public'; +import { LogIndexNameReference } from '../../../../common/log_sources'; +import { FormElement } from './form_elements'; +import { getFormRowProps, getInputFieldProps } from './form_field_props'; +import { FormValidationError } from './validation_errors'; + +export const IndexNamesConfigurationPanel: React.FC<{ + isLoading: boolean; + isReadOnly: boolean; + indexNamesFormElement: FormElement; + onSwitchToIndexPatternReference: () => void; +}> = ({ isLoading, isReadOnly, indexNamesFormElement, onSwitchToIndexPatternReference }) => { + useTrackPageview({ app: 'infra_logs', path: 'log_source_configuration_index_name' }); + useTrackPageview({ + app: 'infra_logs', + path: 'log_source_configuration_index_name', + delay: 15000, + }); + + return ( + <> + +

+ +

+
+ + + + + + + + + + +

+ } + description={ + + } + > + logs-*,filebeat-*, + }} + /> + } + label={ + + } + {...getFormRowProps(indexNamesFormElement)} + > + + + + + ); +}; + +const getIndexNamesInputFieldProps = getInputFieldProps( + (value) => ({ + type: 'index_name', + indexName: value, + }), + ({ indexName }) => indexName +); + +const deprecationCalloutTitle = i18n.translate( + 'xpack.infra.logSourceConfiguration.indexNameReferenceDeprecationTitle', + { + defaultMessage: 'Deprecated configuration option', + } +); diff --git a/x-pack/plugins/infra/public/pages/logs/settings/index_pattern_configuration_panel.tsx b/x-pack/plugins/infra/public/pages/logs/settings/index_pattern_configuration_panel.tsx new file mode 100644 index 0000000000000..a16f15505bc30 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/settings/index_pattern_configuration_panel.tsx @@ -0,0 +1,121 @@ +/* + * 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 { EuiDescribedFormGroup, EuiFormRow, EuiLink, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React, { useCallback, useMemo } from 'react'; +import { useTrackPageview } from '../../../../../observability/public'; +import { LogIndexPatternReference } from '../../../../common/log_sources'; +import { useLinkProps } from '../../../hooks/use_link_props'; +import { FormElement } from './form_elements'; +import { getFormRowProps } from './form_field_props'; +import { IndexPatternSelector } from './index_pattern_selector'; +import { FormValidationError } from './validation_errors'; + +export const IndexPatternConfigurationPanel: React.FC<{ + isLoading: boolean; + isReadOnly: boolean; + indexPatternFormElement: FormElement; +}> = ({ isLoading, isReadOnly, indexPatternFormElement }) => { + useTrackPageview({ app: 'infra_logs', path: 'log_source_configuration_index_pattern' }); + useTrackPageview({ + app: 'infra_logs', + path: 'log_source_configuration_index_pattern', + delay: 15000, + }); + + const changeIndexPatternId = useCallback( + (indexPatternId: string | undefined) => { + if (indexPatternId != null) { + indexPatternFormElement.updateValue(() => ({ + type: 'index_pattern', + indexPatternId, + })); + } else { + indexPatternFormElement.updateValue(() => undefined); + } + }, + [indexPatternFormElement] + ); + + return ( + <> + +

+ +

+
+ + + + + + + } + description={ + + } + > + + } + {...useMemo(() => (isLoading ? {} : getFormRowProps(indexPatternFormElement)), [ + isLoading, + indexPatternFormElement, + ])} + > + + + + + ); +}; + +const IndexPatternInlineHelpMessage = React.memo(() => { + const indexPatternManagementLinkProps = useLinkProps({ + app: 'management', + pathname: '/kibana/indexPatterns', + }); + + return ( + + + + ), + }} + /> + ); +}); diff --git a/x-pack/plugins/infra/public/pages/logs/settings/index_pattern_selector.tsx b/x-pack/plugins/infra/public/pages/logs/settings/index_pattern_selector.tsx new file mode 100644 index 0000000000000..9e110db53a27f --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/settings/index_pattern_selector.tsx @@ -0,0 +1,73 @@ +/* + * 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 { EuiComboBox, EuiComboBoxOptionOption } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useCallback, useEffect, useMemo } from 'react'; +import { useKibanaIndexPatternTitles } from '../../../hooks/use_kibana_index_patterns'; + +type IndexPatternOption = EuiComboBoxOptionOption; + +export const IndexPatternSelector: React.FC<{ + indexPatternId: string | undefined; + isLoading: boolean; + isReadOnly: boolean; + onChangeIndexPatternId: (indexPatternId: string | undefined) => void; +}> = ({ indexPatternId, isLoading, isReadOnly, onChangeIndexPatternId }) => { + const { + indexPatternTitles: availableIndexPatterns, + latestIndexPatternTitlesRequest, + fetchIndexPatternTitles, + } = useKibanaIndexPatternTitles(); + + useEffect(() => { + fetchIndexPatternTitles(); + }, [fetchIndexPatternTitles]); + + const availableOptions = useMemo( + () => + availableIndexPatterns.map(({ id, title }) => ({ + key: id, + label: title, + value: id, + })), + [availableIndexPatterns] + ); + + const selectedOptions = useMemo( + () => availableOptions.filter(({ key }) => key === indexPatternId), + [availableOptions, indexPatternId] + ); + + const changeSelectedIndexPatterns = useCallback( + ([newlySelectedOption]: IndexPatternOption[]) => { + if (typeof newlySelectedOption?.key === 'string') { + return onChangeIndexPatternId(newlySelectedOption.key); + } + + return onChangeIndexPatternId(undefined); + }, + [onChangeIndexPatternId] + ); + + return ( + + isLoading={isLoading || latestIndexPatternTitlesRequest.state === 'pending'} + isDisabled={isReadOnly} + options={availableOptions} + placeholder={indexPatternSelectorPlaceholder} + selectedOptions={selectedOptions} + singleSelection={true} + onChange={changeSelectedIndexPatterns} + /> + ); +}; + +const indexPatternSelectorPlaceholder = i18n.translate( + 'xpack.infra.logSourceConfiguration.indexPatternSelectorPlaceholder', + { defaultMessage: 'Choose an index pattern' } +); diff --git a/x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_form_state.ts b/x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_form_state.ts index b7656e6499006..49d14e04ca328 100644 --- a/x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_form_state.ts +++ b/x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_form_state.ts @@ -5,120 +5,107 @@ * 2.0. */ -import { ReactNode, useCallback, useMemo, useState } from 'react'; +import { useMemo } from 'react'; +import { useUiTracker } from '../../../../../observability/public'; import { - createInputFieldProps, - validateInputFieldNotEmpty, -} from '../../../components/source_configuration/input_fields'; + LogIndexNameReference, + logIndexNameReferenceRT, + LogIndexPatternReference, +} from '../../../../common/log_sources'; +import { useKibanaIndexPatternService } from '../../../hooks/use_kibana_index_patterns'; +import { useCompositeFormElement, useFormElement } from './form_elements'; +import { + FormValidationError, + validateIndexPattern, + validateStringNotEmpty, +} from './validation_errors'; -interface FormState { - name: string; - description: string; - logAlias: string; - tiebreakerField: string; - timestampField: string; -} +export type LogIndicesFormState = LogIndexNameReference | LogIndexPatternReference | undefined; -type FormStateChanges = Partial; +export const useLogIndicesFormElement = (initialValue: LogIndicesFormState) => { + const indexPatternService = useKibanaIndexPatternService(); -export const useLogIndicesConfigurationFormState = ({ - initialFormState = defaultFormState, -}: { - initialFormState?: FormState; -}) => { - const [formStateChanges, setFormStateChanges] = useState({}); + const trackIndexPatternValidationError = useUiTracker({ app: 'infra_logs' }); - const resetForm = useCallback(() => setFormStateChanges({}), []); + const logIndicesFormElement = useFormElement({ + initialValue, + validate: useMemo( + () => async (logIndices) => { + if (logIndices == null) { + return validateStringNotEmpty('log index pattern', ''); + } else if (logIndexNameReferenceRT.is(logIndices)) { + return validateStringNotEmpty('log indices', logIndices.indexName); + } else { + const emptyStringErrors = validateStringNotEmpty( + 'log index pattern', + logIndices.indexPatternId + ); - const formState = useMemo( - () => ({ - ...initialFormState, - ...formStateChanges, - }), - [initialFormState, formStateChanges] - ); + if (emptyStringErrors.length > 0) { + return emptyStringErrors; + } - const nameFieldProps = useMemo( - () => - createInputFieldProps({ - errors: validateInputFieldNotEmpty(formState.name), - name: 'name', - onChange: (name) => setFormStateChanges((changes) => ({ ...changes, name })), - value: formState.name, - }), - [formState.name] - ); - const logAliasFieldProps = useMemo( - () => - createInputFieldProps({ - errors: validateInputFieldNotEmpty(formState.logAlias), - name: 'logAlias', - onChange: (logAlias) => setFormStateChanges((changes) => ({ ...changes, logAlias })), - value: formState.logAlias, - }), - [formState.logAlias] - ); - const tiebreakerFieldFieldProps = useMemo( - () => - createInputFieldProps({ - errors: validateInputFieldNotEmpty(formState.tiebreakerField), - name: `tiebreakerField`, - onChange: (tiebreakerField) => - setFormStateChanges((changes) => ({ ...changes, tiebreakerField })), - value: formState.tiebreakerField, - }), - [formState.tiebreakerField] - ); - const timestampFieldFieldProps = useMemo( - () => - createInputFieldProps({ - errors: validateInputFieldNotEmpty(formState.timestampField), - name: `timestampField`, - onChange: (timestampField) => - setFormStateChanges((changes) => ({ ...changes, timestampField })), - value: formState.timestampField, - }), - [formState.timestampField] - ); + const indexPatternErrors = validateIndexPattern( + await indexPatternService.get(logIndices.indexPatternId) + ); - const fieldProps = useMemo( - () => ({ - name: nameFieldProps, - logAlias: logAliasFieldProps, - tiebreakerField: tiebreakerFieldFieldProps, - timestampField: timestampFieldFieldProps, - }), - [nameFieldProps, logAliasFieldProps, tiebreakerFieldFieldProps, timestampFieldFieldProps] - ); + if (indexPatternErrors.length > 0) { + trackIndexPatternValidationError({ + metric: 'configuration_index_pattern_validation_failed', + }); + } else { + trackIndexPatternValidationError({ + metric: 'configuration_index_pattern_validation_succeeded', + }); + } - const errors = useMemo( - () => - Object.values(fieldProps).reduce( - (accumulatedErrors, { error }) => [...accumulatedErrors, ...error], - [] - ), - [fieldProps] - ); + return indexPatternErrors; + } + }, + [indexPatternService, trackIndexPatternValidationError] + ), + }); + + return logIndicesFormElement; +}; - const isFormValid = useMemo(() => errors.length <= 0, [errors]); +export interface FieldsFormState { + tiebreakerField: string; + timestampField: string; +} - const isFormDirty = useMemo(() => Object.keys(formStateChanges).length > 0, [formStateChanges]); +export const useFieldsFormElement = (initialValues: FieldsFormState) => { + const tiebreakerFieldFormElement = useFormElement({ + initialValue: initialValues.tiebreakerField, + validate: useMemo( + () => async (tiebreakerField) => validateStringNotEmpty('tiebreaker', tiebreakerField), + [] + ), + }); + + const timestampFieldFormElement = useFormElement({ + initialValue: initialValues.timestampField, + validate: useMemo( + () => async (timestampField) => validateStringNotEmpty('timestamp', timestampField), + [] + ), + }); + + const fieldsFormElement = useCompositeFormElement( + useMemo( + () => ({ + childFormElements: { + tiebreaker: tiebreakerFieldFormElement, + timestamp: timestampFieldFormElement, + }, + }), + [tiebreakerFieldFormElement, timestampFieldFormElement] + ) + ); return { - errors, - fieldProps, - formState, - formStateChanges, - isFormDirty, - isFormValid, - resetForm, + fieldsFormElement, + tiebreakerFieldFormElement, + timestampFieldFormElement, }; }; - -const defaultFormState: FormState = { - name: '', - description: '', - logAlias: '', - tiebreakerField: '', - timestampField: '', -}; diff --git a/x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_panel.stories.tsx b/x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_panel.stories.tsx new file mode 100644 index 0000000000000..8cc9f5b4357ef --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_panel.stories.tsx @@ -0,0 +1,168 @@ +/* + * 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 { EuiCodeBlock, EuiPage, EuiPageBody, EuiPageContent, PropsOf } from '@elastic/eui'; +import { I18nProvider } from '@kbn/i18n/react'; +import { Meta, Story } from '@storybook/react/types-6-0'; +import React from 'react'; +import { KBN_FIELD_TYPES } from '../../../../../../../src/plugins/data/public'; +import { EuiThemeProvider } from '../../../../../../../src/plugins/kibana_react/common'; +import { + MockIndexPatternsKibanaContextProvider, + MockIndexPatternSpec, +} from '../../../hooks/use_kibana_index_patterns.mock'; +import { + FieldsFormState, + LogIndicesFormState, + useFieldsFormElement, + useLogIndicesFormElement, +} from './indices_configuration_form_state'; +import { IndicesConfigurationPanel } from './indices_configuration_panel'; + +export default { + title: 'infra/logsSettings/indicesConfiguration', + decorators: [ + (WrappedStory, { args }) => { + return ( + + + + + + + + + + + + + + ); + }, + ], + argTypes: { + logIndices: { + control: { + type: 'object', + }, + }, + availableIndexPatterns: { + control: { + type: 'object', + }, + }, + }, +} as Meta; + +type IndicesConfigurationPanelProps = PropsOf; + +type IndicesConfigurationPanelStoryArgs = Pick< + IndicesConfigurationPanelProps, + 'isLoading' | 'isReadOnly' +> & { + availableIndexPatterns: MockIndexPatternSpec[]; + logIndices: LogIndicesFormState; + fields: FieldsFormState; +}; + +const IndicesConfigurationPanelTemplate: Story = ({ + isLoading, + isReadOnly, + logIndices, + fields, +}) => { + const logIndicesFormElement = useLogIndicesFormElement(logIndices); + const { tiebreakerFieldFormElement, timestampFieldFormElement } = useFieldsFormElement(fields); + + return ( + <> + + + // field states{'\n'} + {JSON.stringify( + { + logIndices: { + value: logIndicesFormElement.value, + validity: logIndicesFormElement.validity, + }, + tiebreakerField: { + value: tiebreakerFieldFormElement.value, + validity: tiebreakerFieldFormElement.validity, + }, + timestampField: { + value: timestampFieldFormElement.value, + validity: timestampFieldFormElement.validity, + }, + }, + null, + 2 + )} + + + ); +}; + +const defaultArgs: IndicesConfigurationPanelStoryArgs = { + isLoading: false, + isReadOnly: false, + logIndices: { + type: 'index_name' as const, + indexName: 'logs-*', + }, + fields: { + tiebreakerField: '_doc', + timestampField: '@timestamp', + }, + availableIndexPatterns: [ + { + id: 'INDEX_PATTERN_A', + title: 'pattern-a-*', + timeFieldName: '@timestamp', + fields: [ + { + name: '@timestamp', + type: KBN_FIELD_TYPES.DATE, + searchable: true, + aggregatable: true, + }, + { + name: 'message', + type: KBN_FIELD_TYPES.STRING, + searchable: true, + aggregatable: true, + }, + ], + }, + { + id: 'INDEX_PATTERN_B', + title: 'pattern-b-*', + fields: [], + }, + ], +}; + +export const IndexNameWithDefaultFields = IndicesConfigurationPanelTemplate.bind({}); + +IndexNameWithDefaultFields.args = { + ...defaultArgs, +}; + +export const IndexPattern = IndicesConfigurationPanelTemplate.bind({}); + +IndexPattern.args = { + ...defaultArgs, + logIndices: undefined, +}; diff --git a/x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_panel.tsx b/x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_panel.tsx index e6f03e76255a2..6f762afd79244 100644 --- a/x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_panel.tsx +++ b/x-pack/plugins/infra/public/pages/logs/settings/indices_configuration_panel.tsx @@ -5,85 +5,77 @@ * 2.0. */ +import React, { useCallback } from 'react'; +import { useUiTracker } from '../../../../../observability/public'; import { - EuiCode, - EuiDescribedFormGroup, - EuiFieldText, - EuiForm, - EuiFormRow, - EuiSpacer, - EuiTitle, -} from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; -import React from 'react'; -import { InputFieldProps } from '../../../components/source_configuration/input_fields'; + logIndexNameReferenceRT, + LogIndexPatternReference, + logIndexPatternReferenceRT, + LogIndexReference, +} from '../../../../common/log_sources'; +import { FieldsConfigurationPanel } from './fields_configuration_panel'; +import { FormElement, isFormElementForType } from './form_elements'; +import { IndexNamesConfigurationPanel } from './index_names_configuration_panel'; +import { IndexPatternConfigurationPanel } from './index_pattern_configuration_panel'; +import { FormValidationError } from './validation_errors'; -interface IndicesConfigurationPanelProps { +export const IndicesConfigurationPanel = React.memo<{ isLoading: boolean; - readOnly: boolean; - logAliasFieldProps: InputFieldProps; -} + isReadOnly: boolean; + indicesFormElement: FormElement; + tiebreakerFieldFormElement: FormElement; + timestampFieldFormElement: FormElement; +}>( + ({ + isLoading, + isReadOnly, + indicesFormElement, + tiebreakerFieldFormElement, + timestampFieldFormElement, + }) => { + const trackSwitchToIndexPatternReference = useUiTracker({ app: 'infra_logs' }); -export const IndicesConfigurationPanel = ({ - isLoading, - readOnly, - logAliasFieldProps, -}: IndicesConfigurationPanelProps) => ( - - -

- -

-
- - - - - } - description={ - { + indicesFormElement.updateValue(() => undefined); + trackSwitchToIndexPatternReference({ + metric: 'configuration_switch_to_index_pattern_reference', + }); + }, [indicesFormElement, trackSwitchToIndexPatternReference]); + + if (isIndexPatternFormElement(indicesFormElement)) { + return ( + - } - > - logs-*,filebeat-*, - }} + ); + } else if (isIndexNamesFormElement(indicesFormElement)) { + return ( + <> + - } - isInvalid={logAliasFieldProps.isInvalid} - label={ - - } - > - - - -
+ + ); + } else { + return null; + } + } +); + +const isIndexPatternFormElement = isFormElementForType( + (value): value is LogIndexPatternReference | undefined => + value == null || logIndexPatternReferenceRT.is(value) ); + +const isIndexNamesFormElement = isFormElementForType(logIndexNameReferenceRT.is); diff --git a/x-pack/plugins/infra/public/pages/logs/settings/log_columns_configuration_form_state.tsx b/x-pack/plugins/infra/public/pages/logs/settings/log_columns_configuration_form_state.tsx index 011fbf8a9d9a6..80eb44de9da9d 100644 --- a/x-pack/plugins/infra/public/pages/logs/settings/log_columns_configuration_form_state.tsx +++ b/x-pack/plugins/infra/public/pages/logs/settings/log_columns_configuration_form_state.tsx @@ -5,150 +5,16 @@ * 2.0. */ -import { FormattedMessage } from '@kbn/i18n/react'; -import React, { useCallback, useMemo, useState } from 'react'; -import { - FieldLogColumnConfiguration, - isMessageLogColumnConfiguration, - isTimestampLogColumnConfiguration, - LogColumnConfiguration, - MessageLogColumnConfiguration, - TimestampLogColumnConfiguration, -} from '../../../utils/source_configuration'; - -export interface TimestampLogColumnConfigurationProps { - logColumnConfiguration: TimestampLogColumnConfiguration['timestampColumn']; - remove: () => void; - type: 'timestamp'; -} - -export interface MessageLogColumnConfigurationProps { - logColumnConfiguration: MessageLogColumnConfiguration['messageColumn']; - remove: () => void; - type: 'message'; -} - -export interface FieldLogColumnConfigurationProps { - logColumnConfiguration: FieldLogColumnConfiguration['fieldColumn']; - remove: () => void; - type: 'field'; -} - -export type LogColumnConfigurationProps = - | TimestampLogColumnConfigurationProps - | MessageLogColumnConfigurationProps - | FieldLogColumnConfigurationProps; - -interface FormState { - logColumns: LogColumnConfiguration[]; -} - -type FormStateChanges = Partial; - -export const useLogColumnsConfigurationFormState = ({ - initialFormState = defaultFormState, -}: { - initialFormState?: FormState; -}) => { - const [formStateChanges, setFormStateChanges] = useState({}); - - const resetForm = useCallback(() => setFormStateChanges({}), []); - - const formState = useMemo( - () => ({ - ...initialFormState, - ...formStateChanges, - }), - [initialFormState, formStateChanges] - ); - - const logColumnConfigurationProps = useMemo( - () => - formState.logColumns.map( - (logColumn): LogColumnConfigurationProps => { - const remove = () => - setFormStateChanges((changes) => ({ - ...changes, - logColumns: formState.logColumns.filter((item) => item !== logColumn), - })); - - if (isTimestampLogColumnConfiguration(logColumn)) { - return { - logColumnConfiguration: logColumn.timestampColumn, - remove, - type: 'timestamp', - }; - } else if (isMessageLogColumnConfiguration(logColumn)) { - return { - logColumnConfiguration: logColumn.messageColumn, - remove, - type: 'message', - }; - } else { - return { - logColumnConfiguration: logColumn.fieldColumn, - remove, - type: 'field', - }; - } - } - ), - [formState.logColumns] - ); - - const addLogColumn = useCallback( - (logColumnConfiguration: LogColumnConfiguration) => - setFormStateChanges((changes) => ({ - ...changes, - logColumns: [...formState.logColumns, logColumnConfiguration], - })), - [formState.logColumns] - ); - - const moveLogColumn = useCallback( - (sourceIndex, destinationIndex) => { - if (destinationIndex >= 0 && sourceIndex <= formState.logColumns.length - 1) { - const newLogColumns = [...formState.logColumns]; - newLogColumns.splice(destinationIndex, 0, newLogColumns.splice(sourceIndex, 1)[0]); - setFormStateChanges((changes) => ({ - ...changes, - logColumns: newLogColumns, - })); - } - }, - [formState.logColumns] - ); - - const errors = useMemo( - () => - logColumnConfigurationProps.length <= 0 - ? [ - , - ] - : [], - [logColumnConfigurationProps] - ); - - const isFormValid = useMemo(() => (errors.length <= 0 ? true : false), [errors]); - - const isFormDirty = useMemo(() => Object.keys(formStateChanges).length > 0, [formStateChanges]); - - return { - addLogColumn, - moveLogColumn, - errors, - logColumnConfigurationProps, - formState, - formStateChanges, - isFormDirty, - isFormValid, - resetForm, - }; -}; - -const defaultFormState: FormState = { - logColumns: [], +import { useMemo } from 'react'; +import { LogColumnConfiguration } from '../../../utils/source_configuration'; +import { useFormElement } from './form_elements'; +import { FormValidationError, validateColumnListNotEmpty } from './validation_errors'; + +export const useLogColumnsFormElement = (initialValue: LogColumnConfiguration[]) => { + const logColumnsFormElement = useFormElement({ + initialValue, + validate: useMemo(() => async (logColumns) => validateColumnListNotEmpty(logColumns), []), + }); + + return logColumnsFormElement; }; diff --git a/x-pack/plugins/infra/public/pages/logs/settings/log_columns_configuration_panel.tsx b/x-pack/plugins/infra/public/pages/logs/settings/log_columns_configuration_panel.tsx index fb17f8bee3464..70db7837b8ae5 100644 --- a/x-pack/plugins/infra/public/pages/logs/settings/log_columns_configuration_panel.tsx +++ b/x-pack/plugins/infra/public/pages/logs/settings/log_columns_configuration_panel.tsx @@ -13,7 +13,6 @@ import { EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem, - EuiForm, EuiIcon, EuiPanel, EuiSpacer, @@ -24,28 +23,54 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import React, { useCallback } from 'react'; import { DragHandleProps, DropResult } from '../../../../../observability/public'; -import { LogColumnConfiguration } from '../../../utils/source_configuration'; -import { AddLogColumnButtonAndPopover } from './add_log_column_popover'; import { - FieldLogColumnConfigurationProps, - LogColumnConfigurationProps, -} from './log_columns_configuration_form_state'; + FieldLogColumnConfiguration, + getLogColumnConfigurationId, + isMessageLogColumnConfiguration, + isTimestampLogColumnConfiguration, + LogColumnConfiguration, + MessageLogColumnConfiguration, + TimestampLogColumnConfiguration, +} from '../../../utils/source_configuration'; +import { AddLogColumnButtonAndPopover } from './add_log_column_popover'; +import { FormElement } from './form_elements'; +import { LogSourceConfigurationFormError } from './source_configuration_form_errors'; +import { FormValidationError } from './validation_errors'; -interface LogColumnsConfigurationPanelProps { +export const LogColumnsConfigurationPanel = React.memo<{ availableFields: string[]; isLoading: boolean; - logColumnConfiguration: LogColumnConfigurationProps[]; - addLogColumn: (logColumn: LogColumnConfiguration) => void; - moveLogColumn: (sourceIndex: number, destinationIndex: number) => void; -} + logColumnsFormElement: FormElement; +}>(({ availableFields, isLoading, logColumnsFormElement }) => { + const addLogColumn = useCallback( + (logColumnConfiguration: LogColumnConfiguration) => + logColumnsFormElement.updateValue((logColumns) => [...logColumns, logColumnConfiguration]), + [logColumnsFormElement] + ); + + const removeLogColumn = useCallback( + (logColumn: LogColumnConfiguration) => + logColumnsFormElement.updateValue((logColumns) => + logColumns.filter((item) => item !== logColumn) + ), + [logColumnsFormElement] + ); + + const moveLogColumn = useCallback( + (sourceIndex, destinationIndex) => { + logColumnsFormElement.updateValue((logColumns) => { + if (destinationIndex >= 0 && sourceIndex <= logColumnsFormElement.value.length - 1) { + const newLogColumns = [...logColumnsFormElement.value]; + newLogColumns.splice(destinationIndex, 0, newLogColumns.splice(sourceIndex, 1)[0]); + return newLogColumns; + } else { + return logColumns; + } + }); + }, + [logColumnsFormElement] + ); -export const LogColumnsConfigurationPanel: React.FunctionComponent = ({ - addLogColumn, - moveLogColumn, - availableFields, - isLoading, - logColumnConfiguration, -}) => { const onDragEnd = useCallback( ({ source, destination }: DropResult) => destination && moveLogColumn(source.index, destination.index), @@ -53,7 +78,7 @@ export const LogColumnsConfigurationPanel: React.FunctionComponent + <> @@ -73,63 +98,89 @@ export const LogColumnsConfigurationPanel: React.FunctionComponent - {logColumnConfiguration.length > 0 ? ( + {logColumnsFormElement.value.length > 0 ? ( - <> - {/* Fragment here necessary for typechecking */} - {logColumnConfiguration.map((column, index) => ( + {logColumnsFormElement.value.map((logColumnConfiguration, index) => { + const columnId = getLogColumnConfigurationId(logColumnConfiguration); + return ( {(provided) => ( )} - ))} - + ); + })} ) : ( )} -
+ {logColumnsFormElement.validity.validity === 'invalid' + ? logColumnsFormElement.validity.reasons.map((error) => ( + + + + )) + : null} + + ); +}); + +const LogColumnConfigurationPanel: React.FunctionComponent<{ + logColumnConfiguration: LogColumnConfiguration; + dragHandleProps: DragHandleProps; + onRemove: (logColumnConfiguration: LogColumnConfiguration) => void; +}> = ({ logColumnConfiguration, dragHandleProps, onRemove }) => { + const removeColumn = useCallback(() => onRemove(logColumnConfiguration), [ + logColumnConfiguration, + onRemove, + ]); + + return ( + <> + + {isTimestampLogColumnConfiguration(logColumnConfiguration) ? ( + + ) : isMessageLogColumnConfiguration(logColumnConfiguration) ? ( + + ) : ( + + )} + ); }; -interface LogColumnConfigurationPanelProps { - logColumnConfigurationProps: LogColumnConfigurationProps; +interface LogColumnConfigurationPanelProps { + logColumnConfiguration: LogColumnConfigurationType; dragHandleProps: DragHandleProps; + onRemove: () => void; } -const LogColumnConfigurationPanel: React.FunctionComponent = ( - props -) => ( - <> - - {props.logColumnConfigurationProps.type === 'timestamp' ? ( - - ) : props.logColumnConfigurationProps.type === 'message' ? ( - - ) : ( - - )} - -); - -const TimestampLogColumnConfigurationPanel: React.FunctionComponent = ({ - logColumnConfigurationProps, - dragHandleProps, -}) => ( +const TimestampLogColumnConfigurationPanel: React.FunctionComponent< + LogColumnConfigurationPanelProps +> = ({ dragHandleProps, onRemove }) => ( } - removeColumn={logColumnConfigurationProps.remove} + onRemove={onRemove} dragHandleProps={dragHandleProps} /> ); -const MessageLogColumnConfigurationPanel: React.FunctionComponent = ({ - logColumnConfigurationProps, - dragHandleProps, -}) => ( +const MessageLogColumnConfigurationPanel: React.FunctionComponent< + LogColumnConfigurationPanelProps +> = ({ dragHandleProps, onRemove }) => ( } - removeColumn={logColumnConfigurationProps.remove} + onRemove={onRemove} dragHandleProps={dragHandleProps} /> ); -const FieldLogColumnConfigurationPanel: React.FunctionComponent<{ - logColumnConfigurationProps: FieldLogColumnConfigurationProps; - dragHandleProps: DragHandleProps; -}> = ({ - logColumnConfigurationProps: { - logColumnConfiguration: { field }, - remove, - }, +const FieldLogColumnConfigurationPanel: React.FunctionComponent< + LogColumnConfigurationPanelProps +> = ({ dragHandleProps, + logColumnConfiguration: { + fieldColumn: { field }, + }, + onRemove, }) => { - const fieldLogColumnTitle = i18n.translate( - 'xpack.infra.sourceConfiguration.fieldLogColumnTitle', - { - defaultMessage: 'Field', - } - ); return ( - +
@@ -195,7 +242,7 @@ const FieldLogColumnConfigurationPanel: React.FunctionComponent<{ @@ -207,11 +254,13 @@ const FieldLogColumnConfigurationPanel: React.FunctionComponent<{ const ExplainedLogColumnConfigurationPanel: React.FunctionComponent<{ fieldName: React.ReactNode; helpText: React.ReactNode; - removeColumn: () => void; + onRemove: () => void; dragHandleProps: DragHandleProps; -}> = ({ fieldName, helpText, removeColumn, dragHandleProps }) => ( +}> = ({ fieldName, helpText, onRemove, dragHandleProps }) => ( @@ -226,7 +275,7 @@ const ExplainedLogColumnConfigurationPanel: React.FunctionComponent<{ - + @@ -277,3 +326,7 @@ const LogColumnConfigurationEmptyPrompt: React.FunctionComponent = () => ( } /> ); + +const fieldLogColumnTitle = i18n.translate('xpack.infra.sourceConfiguration.fieldLogColumnTitle', { + defaultMessage: 'Field', +}); diff --git a/x-pack/plugins/infra/public/pages/logs/settings/name_configuration_form_state.tsx b/x-pack/plugins/infra/public/pages/logs/settings/name_configuration_form_state.tsx new file mode 100644 index 0000000000000..f97ece074c4a3 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/settings/name_configuration_form_state.tsx @@ -0,0 +1,19 @@ +/* + * 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 { useMemo } from 'react'; +import { useFormElement } from './form_elements'; +import { FormValidationError, validateStringNotEmpty } from './validation_errors'; + +export const useNameFormElement = (initialValue: string) => { + const nameFormElement = useFormElement({ + initialValue, + validate: useMemo(() => async (name) => validateStringNotEmpty('name', name), []), + }); + + return nameFormElement; +}; diff --git a/x-pack/plugins/infra/public/pages/logs/settings/name_configuration_panel.tsx b/x-pack/plugins/infra/public/pages/logs/settings/name_configuration_panel.tsx new file mode 100644 index 0000000000000..54158b654fee3 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/settings/name_configuration_panel.tsx @@ -0,0 +1,69 @@ +/* + * 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 { + EuiDescribedFormGroup, + EuiFieldText, + EuiForm, + EuiFormRow, + EuiSpacer, + EuiTitle, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React, { useMemo } from 'react'; +import { FormElement } from './form_elements'; +import { getFormRowProps, getStringInputFieldProps } from './form_field_props'; +import { FormValidationError } from './validation_errors'; + +export const NameConfigurationPanel = React.memo<{ + isLoading: boolean; + isReadOnly: boolean; + nameFormElement: FormElement; +}>(({ isLoading, isReadOnly, nameFormElement }) => ( + + +

+ +

+
+ + + + + } + description={ + + } + > + + } + {...useMemo(() => getFormRowProps(nameFormElement), [nameFormElement])} + > + getStringInputFieldProps(nameFormElement), [nameFormElement])} + /> + + +
+)); diff --git a/x-pack/plugins/infra/public/pages/logs/settings/source_configuration_form_errors.tsx b/x-pack/plugins/infra/public/pages/logs/settings/source_configuration_form_errors.tsx new file mode 100644 index 0000000000000..af36a9dc0090b --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/settings/source_configuration_form_errors.tsx @@ -0,0 +1,101 @@ +/* + * 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 { EuiCallOut, EuiCode } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React from 'react'; +import { FormValidationError } from './validation_errors'; + +export const LogSourceConfigurationFormErrors: React.FC<{ errors: FormValidationError[] }> = ({ + errors, +}) => ( + +
    + {errors.map((error, errorIndex) => ( +
  • + +
  • + ))} +
+
+); + +export const LogSourceConfigurationFormError: React.FC<{ error: FormValidationError }> = ({ + error, +}) => { + if (error.type === 'generic') { + return <>{error.message}; + } else if (error.type === 'empty_field') { + return ( + + ); + } else if (error.type === 'empty_column_list') { + return ( + + ); + } else if (error.type === 'child') { + return ( + + ); + } else if (error.type === 'missing_timestamp_field') { + return ( + + ); + } else if (error.type === 'missing_message_field') { + return ( + message, + }} + /> + ); + } else if (error.type === 'invalid_message_field_type') { + return ( + message, + }} + /> + ); + } else if (error.type === 'rollup_index_pattern') { + return ( + + ); + } else { + return null; + } +}; + +const logSourceConfigurationFormErrorsCalloutTitle = i18n.translate( + 'xpack.infra.logSourceConfiguration.logSourceConfigurationFormErrorsCalloutTitle', + { + defaultMessage: 'Inconsistent source configuration', + } +); diff --git a/x-pack/plugins/infra/public/pages/logs/settings/source_configuration_form_state.tsx b/x-pack/plugins/infra/public/pages/logs/settings/source_configuration_form_state.tsx index 95c55b556ab86..67e790a98f518 100644 --- a/x-pack/plugins/infra/public/pages/logs/settings/source_configuration_form_state.tsx +++ b/x-pack/plugins/infra/public/pages/logs/settings/source_configuration_form_state.tsx @@ -5,103 +5,69 @@ * 2.0. */ -import { useCallback, useMemo } from 'react'; -import { ResolvedLogSourceConfiguration } from '../../../../common/log_sources'; -import { useLogIndicesConfigurationFormState } from './indices_configuration_form_state'; -import { useLogColumnsConfigurationFormState } from './log_columns_configuration_form_state'; +import { useMemo } from 'react'; +import { LogSourceConfigurationProperties } from '../../../containers/logs/log_source'; +import { useCompositeFormElement } from './form_elements'; +import { useFieldsFormElement, useLogIndicesFormElement } from './indices_configuration_form_state'; +import { useLogColumnsFormElement } from './log_columns_configuration_form_state'; +import { useNameFormElement } from './name_configuration_form_state'; export const useLogSourceConfigurationFormState = ( - configuration?: ResolvedLogSourceConfiguration + configuration?: LogSourceConfigurationProperties ) => { - const indicesConfigurationFormState = useLogIndicesConfigurationFormState({ - initialFormState: useMemo( - () => - configuration - ? { - name: configuration.name, - description: configuration.description, - logAlias: configuration.indices, - tiebreakerField: configuration.tiebreakerField, - timestampField: configuration.timestampField, - } - : undefined, - [configuration] - ), - }); + const nameFormElement = useNameFormElement(configuration?.name ?? ''); - const logColumnsConfigurationFormState = useLogColumnsConfigurationFormState({ - initialFormState: useMemo( + const logIndicesFormElement = useLogIndicesFormElement( + useMemo( () => - configuration - ? { - logColumns: configuration.columns, - } - : undefined, + configuration?.logIndices ?? { + type: 'index_name', + indexName: '', + }, [configuration] - ), - }); - - const errors = useMemo( - () => [...indicesConfigurationFormState.errors, ...logColumnsConfigurationFormState.errors], - [indicesConfigurationFormState.errors, logColumnsConfigurationFormState.errors] + ) ); - const resetForm = useCallback(() => { - indicesConfigurationFormState.resetForm(); - logColumnsConfigurationFormState.resetForm(); - }, [indicesConfigurationFormState, logColumnsConfigurationFormState]); - - const isFormDirty = useMemo( - () => indicesConfigurationFormState.isFormDirty || logColumnsConfigurationFormState.isFormDirty, - [indicesConfigurationFormState.isFormDirty, logColumnsConfigurationFormState.isFormDirty] - ); - - const isFormValid = useMemo( - () => indicesConfigurationFormState.isFormValid && logColumnsConfigurationFormState.isFormValid, - [indicesConfigurationFormState.isFormValid, logColumnsConfigurationFormState.isFormValid] + const { + fieldsFormElement, + tiebreakerFieldFormElement, + timestampFieldFormElement, + } = useFieldsFormElement( + useMemo( + () => ({ + tiebreakerField: configuration?.fields?.tiebreaker ?? '_doc', + timestampField: configuration?.fields?.timestamp ?? '@timestamp', + }), + [configuration] + ) ); - const formState = useMemo( - () => ({ - name: indicesConfigurationFormState.formState.name, - description: indicesConfigurationFormState.formState.description, - logAlias: indicesConfigurationFormState.formState.logAlias, - fields: { - tiebreaker: indicesConfigurationFormState.formState.tiebreakerField, - timestamp: indicesConfigurationFormState.formState.timestampField, - }, - logColumns: logColumnsConfigurationFormState.formState.logColumns, - }), - [indicesConfigurationFormState.formState, logColumnsConfigurationFormState.formState] + const logColumnsFormElement = useLogColumnsFormElement( + useMemo(() => configuration?.logColumns ?? [], [configuration]) ); - const formStateChanges = useMemo( - () => ({ - name: indicesConfigurationFormState.formStateChanges.name, - description: indicesConfigurationFormState.formStateChanges.description, - logAlias: indicesConfigurationFormState.formStateChanges.logAlias, - fields: { - tiebreaker: indicesConfigurationFormState.formStateChanges.tiebreakerField, - timestamp: indicesConfigurationFormState.formStateChanges.timestampField, - }, - logColumns: logColumnsConfigurationFormState.formStateChanges.logColumns, - }), - [ - indicesConfigurationFormState.formStateChanges, - logColumnsConfigurationFormState.formStateChanges, - ] + const sourceConfigurationFormElement = useCompositeFormElement( + useMemo( + () => ({ + childFormElements: { + name: nameFormElement, + logIndices: logIndicesFormElement, + fields: fieldsFormElement, + logColumns: logColumnsFormElement, + }, + validate: async () => [], + }), + [nameFormElement, logIndicesFormElement, fieldsFormElement, logColumnsFormElement] + ) ); return { - addLogColumn: logColumnsConfigurationFormState.addLogColumn, - moveLogColumn: logColumnsConfigurationFormState.moveLogColumn, - errors, - formState, - formStateChanges, - isFormDirty, - isFormValid, - indicesConfigurationProps: indicesConfigurationFormState.fieldProps, - logColumnConfigurationProps: logColumnsConfigurationFormState.logColumnConfigurationProps, - resetForm, + formState: sourceConfigurationFormElement.value, + logIndicesFormElement, + logColumnsFormElement, + nameFormElement, + sourceConfigurationFormElement, + tiebreakerFieldFormElement, + timestampFieldFormElement, }; }; diff --git a/x-pack/plugins/infra/public/pages/logs/settings/source_configuration_settings.tsx b/x-pack/plugins/infra/public/pages/logs/settings/source_configuration_settings.tsx index 2eaf4f61409a8..9ab7d38e6c838 100644 --- a/x-pack/plugins/infra/public/pages/logs/settings/source_configuration_settings.tsx +++ b/x-pack/plugins/infra/public/pages/logs/settings/source_configuration_settings.tsx @@ -7,33 +7,40 @@ import { EuiButton, - EuiCallOut, EuiErrorBoundary, EuiFlexGroup, EuiFlexItem, - EuiPanel, - EuiSpacer, EuiPage, EuiPageBody, + EuiPageContentBody, + EuiPanel, + EuiSpacer, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import React, { useCallback, useMemo } from 'react'; import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; -import { FieldsConfigurationPanel } from './fields_configuration_panel'; +import { useTrackPageview } from '../../../../../observability/public'; +import { SourceLoadingPage } from '../../../components/source_loading_page'; +import { useLogSourceContext } from '../../../containers/logs/log_source'; +import { Prompt } from '../../../utils/navigation_warning_prompt'; import { IndicesConfigurationPanel } from './indices_configuration_panel'; -import { NameConfigurationPanel } from '../../../components/source_configuration/name_configuration_panel'; import { LogColumnsConfigurationPanel } from './log_columns_configuration_panel'; +import { NameConfigurationPanel } from './name_configuration_panel'; +import { LogSourceConfigurationFormErrors } from './source_configuration_form_errors'; import { useLogSourceConfigurationFormState } from './source_configuration_form_state'; -import { useLogSourceContext } from '../../../containers/logs/log_source'; -import { SourceLoadingPage } from '../../../components/source_loading_page'; -import { Prompt } from '../../../utils/navigation_warning_prompt'; -import { LogSourceConfigurationPropertiesPatch } from '../../../../common/http_api/log_sources'; export const LogsSettingsPage = () => { const uiCapabilities = useKibana().services.application?.capabilities; const shouldAllowEdit = uiCapabilities?.logs?.configureSource === true; + useTrackPageview({ app: 'infra_logs', path: 'log_source_configuration' }); + useTrackPageview({ + app: 'infra_logs', + path: 'log_source_configuration', + delay: 15000, + }); + const { sourceConfiguration: source, isLoading, @@ -48,35 +55,19 @@ export const LogsSettingsPage = () => { ); const { - addLogColumn, - moveLogColumn, - indicesConfigurationProps, - logColumnConfigurationProps, - errors, - resetForm, - isFormDirty, - isFormValid, - formStateChanges, - } = useLogSourceConfigurationFormState(resolvedSourceConfiguration); + sourceConfigurationFormElement, + formState, + logIndicesFormElement, + logColumnsFormElement, + nameFormElement, + tiebreakerFieldFormElement, + timestampFieldFormElement, + } = useLogSourceConfigurationFormState(source?.configuration); const persistUpdates = useCallback(async () => { - // NOTE / TODO: This is just a temporary workaround until this work is merged with the corresponding UI branch. - // Otherwise we would be duplicating work changing the logAlias etc references twice. - const patchedProperties: LogSourceConfigurationPropertiesPatch & { logAlias?: string } = { - ...formStateChanges, - ...(formStateChanges.logAlias - ? { - logIndices: { - type: 'index_name', - indexName: formStateChanges.logAlias, - }, - } - : {}), - }; - delete patchedProperties.logAlias; - await updateSourceConfiguration(patchedProperties); - resetForm(); - }, [updateSourceConfiguration, resetForm, formStateChanges]); + await updateSourceConfiguration(formState); + sourceConfigurationFormElement.resetValue(); + }, [updateSourceConfiguration, sourceConfigurationFormElement, formState]); const isWriteable = useMemo(() => shouldAllowEdit && source && source.origin !== 'internal', [ shouldAllowEdit, @@ -92,110 +83,100 @@ export const LogsSettingsPage = () => { return ( - - - - - - - - - - - - - + + + - - - - - - {errors.length > 0 ? ( - <> - -
    - {errors.map((error, errorIndex) => ( -
  • {error}
  • - ))} -
-
- - - ) : null} - - - {isWriteable && ( - - {isLoading ? ( - - - - Loading - - - - ) : ( - <> + + + + + + + + + + + + + {sourceConfigurationFormElement.validity.validity === 'invalid' ? ( + <> + + + + ) : null} + + {isWriteable && ( + + {isLoading ? ( - { - resetForm(); - }} - > - - - - - - + + Loading - - )} - - )} - + ) : ( + <> + + + { + sourceConfigurationFormElement.resetValue(); + }} + > + + + + + + + + + + + )} + + )} + +
diff --git a/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts b/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts new file mode 100644 index 0000000000000..b6e5a387590ed --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts @@ -0,0 +1,116 @@ +/* + * 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 { IndexPattern, KBN_FIELD_TYPES } from '../../../../../../../src/plugins/data/public'; + +export interface GenericValidationError { + type: 'generic'; + message: string; +} + +export interface ChildFormValidationError { + type: 'child'; +} + +export interface EmptyFieldValidationError { + type: 'empty_field'; + fieldName: string; +} + +export interface EmptyColumnListValidationError { + type: 'empty_column_list'; +} + +export interface MissingTimestampFieldValidationError { + type: 'missing_timestamp_field'; + indexPatternTitle: string; +} + +export interface MissingMessageFieldValidationError { + type: 'missing_message_field'; + indexPatternTitle: string; +} + +export interface InvalidMessageFieldTypeValidationError { + type: 'invalid_message_field_type'; + indexPatternTitle: string; +} + +export interface RollupIndexPatternValidationError { + type: 'rollup_index_pattern'; + indexPatternTitle: string; +} + +export type FormValidationError = + | GenericValidationError + | ChildFormValidationError + | EmptyFieldValidationError + | EmptyColumnListValidationError + | MissingTimestampFieldValidationError + | MissingMessageFieldValidationError + | InvalidMessageFieldTypeValidationError + | RollupIndexPatternValidationError; + +export const validateStringNotEmpty = (fieldName: string, value: string): FormValidationError[] => + value === '' ? [{ type: 'empty_field', fieldName }] : []; + +export const validateColumnListNotEmpty = (columns: unknown[]): FormValidationError[] => + columns.length <= 0 ? [{ type: 'empty_column_list' }] : []; + +export const validateIndexPattern = (indexPattern: IndexPattern): FormValidationError[] => { + return [ + ...validateIndexPatternIsTimeBased(indexPattern), + ...validateIndexPatternHasStringMessageField(indexPattern), + ...validateIndexPatternIsntRollup(indexPattern), + ]; +}; + +export const validateIndexPatternIsTimeBased = ( + indexPattern: IndexPattern +): FormValidationError[] => + indexPattern.isTimeBased() + ? [] + : [ + { + type: 'missing_timestamp_field' as const, + indexPatternTitle: indexPattern.title, + }, + ]; + +export const validateIndexPatternHasStringMessageField = ( + indexPattern: IndexPattern +): FormValidationError[] => { + const messageField = indexPattern.getFieldByName('message'); + + if (messageField == null) { + return [ + { + type: 'missing_message_field' as const, + indexPatternTitle: indexPattern.title, + }, + ]; + } else if (messageField.type !== KBN_FIELD_TYPES.STRING) { + return [ + { + type: 'invalid_message_field_type' as const, + indexPatternTitle: indexPattern.title, + }, + ]; + } else { + return []; + } +}; + +export const validateIndexPatternIsntRollup = (indexPattern: IndexPattern): FormValidationError[] => + indexPattern.type != null + ? [ + { + type: 'rollup_index_pattern' as const, + indexPatternTitle: indexPattern.title, + }, + ] + : []; diff --git a/x-pack/plugins/infra/public/pages/metrics/settings/fields_configuration_panel.tsx b/x-pack/plugins/infra/public/pages/metrics/settings/fields_configuration_panel.tsx index 7026f372ec7ff..1c6c627c08d0b 100644 --- a/x-pack/plugins/infra/public/pages/metrics/settings/fields_configuration_panel.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/settings/fields_configuration_panel.tsx @@ -19,8 +19,7 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import React from 'react'; - -import { InputFieldProps } from '../../../components/source_configuration/input_fields'; +import { InputFieldProps } from './input_fields'; interface FieldsConfigurationPanelProps { containerFieldProps: InputFieldProps; diff --git a/x-pack/plugins/infra/public/pages/metrics/settings/indices_configuration_form_state.ts b/x-pack/plugins/infra/public/pages/metrics/settings/indices_configuration_form_state.ts index ad26c1b13b0e1..ced87112e6e9a 100644 --- a/x-pack/plugins/infra/public/pages/metrics/settings/indices_configuration_form_state.ts +++ b/x-pack/plugins/infra/public/pages/metrics/settings/indices_configuration_form_state.ts @@ -6,12 +6,11 @@ */ import { ReactNode, useCallback, useMemo, useState } from 'react'; - import { createInputFieldProps, createInputRangeFieldProps, validateInputFieldNotEmpty, -} from '../../../components/source_configuration/input_fields'; +} from './input_fields'; interface FormState { name: string; diff --git a/x-pack/plugins/infra/public/pages/metrics/settings/indices_configuration_panel.tsx b/x-pack/plugins/infra/public/pages/metrics/settings/indices_configuration_panel.tsx index c64ab2b0e9df5..c1e0d2ffefa80 100644 --- a/x-pack/plugins/infra/public/pages/metrics/settings/indices_configuration_panel.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/settings/indices_configuration_panel.tsx @@ -16,9 +16,8 @@ import { } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import React from 'react'; - import { METRICS_INDEX_PATTERN } from '../../../../common/constants'; -import { InputFieldProps } from '../../../components/source_configuration/input_fields'; +import { InputFieldProps } from './input_fields'; interface IndicesConfigurationPanelProps { isLoading: boolean; diff --git a/x-pack/plugins/infra/public/components/source_configuration/input_fields.tsx b/x-pack/plugins/infra/public/pages/metrics/settings/input_fields.tsx similarity index 100% rename from x-pack/plugins/infra/public/components/source_configuration/input_fields.tsx rename to x-pack/plugins/infra/public/pages/metrics/settings/input_fields.tsx diff --git a/x-pack/plugins/infra/public/pages/metrics/settings/ml_configuration_panel.tsx b/x-pack/plugins/infra/public/pages/metrics/settings/ml_configuration_panel.tsx index abf25dde0ea99..630820156e0e5 100644 --- a/x-pack/plugins/infra/public/pages/metrics/settings/ml_configuration_panel.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/settings/ml_configuration_panel.tsx @@ -5,15 +5,17 @@ * 2.0. */ -import { EuiTitle } from '@elastic/eui'; -import { EuiSpacer } from '@elastic/eui'; -import { EuiFormRow } from '@elastic/eui'; -import { EuiRange } from '@elastic/eui'; -import { EuiDescribedFormGroup } from '@elastic/eui'; -import { EuiForm } from '@elastic/eui'; +import { + EuiDescribedFormGroup, + EuiForm, + EuiFormRow, + EuiRange, + EuiSpacer, + EuiTitle, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; import React from 'react'; -import { FormattedMessage } from 'react-intl'; -import { InputRangeFieldProps } from '../../../components/source_configuration/input_fields'; +import { InputRangeFieldProps } from './input_fields'; interface MLConfigurationPanelProps { isLoading: boolean; diff --git a/x-pack/plugins/infra/public/components/source_configuration/name_configuration_panel.tsx b/x-pack/plugins/infra/public/pages/metrics/settings/name_configuration_panel.tsx similarity index 99% rename from x-pack/plugins/infra/public/components/source_configuration/name_configuration_panel.tsx rename to x-pack/plugins/infra/public/pages/metrics/settings/name_configuration_panel.tsx index 2fa4ff100fe54..bb36d12ff3767 100644 --- a/x-pack/plugins/infra/public/components/source_configuration/name_configuration_panel.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/settings/name_configuration_panel.tsx @@ -15,7 +15,6 @@ import { } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import React from 'react'; - import { InputFieldProps } from './input_fields'; interface NameConfigurationPanelProps { diff --git a/x-pack/plugins/infra/public/pages/metrics/settings/source_configuration_settings.tsx b/x-pack/plugins/infra/public/pages/metrics/settings/source_configuration_settings.tsx index 71fa4e7600503..0579194464f4e 100644 --- a/x-pack/plugins/infra/public/pages/metrics/settings/source_configuration_settings.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/settings/source_configuration_settings.tsx @@ -10,24 +10,23 @@ import { EuiCallOut, EuiFlexGroup, EuiFlexItem, - EuiPanel, - EuiSpacer, EuiPage, EuiPageBody, + EuiPanel, + EuiSpacer, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import React, { useCallback, useContext, useMemo } from 'react'; - +import { SourceLoadingPage } from '../../../components/source_loading_page'; import { Source } from '../../../containers/metrics_source'; +import { useInfraMLCapabilitiesContext } from '../../../containers/ml/infra_ml_capabilities'; +import { Prompt } from '../../../utils/navigation_warning_prompt'; import { FieldsConfigurationPanel } from './fields_configuration_panel'; import { IndicesConfigurationPanel } from './indices_configuration_panel'; -import { NameConfigurationPanel } from '../../../components/source_configuration/name_configuration_panel'; -import { useSourceConfigurationFormState } from './source_configuration_form_state'; -import { SourceLoadingPage } from '../../../components/source_loading_page'; -import { Prompt } from '../../../utils/navigation_warning_prompt'; import { MLConfigurationPanel } from './ml_configuration_panel'; -import { useInfraMLCapabilitiesContext } from '../../../containers/ml/infra_ml_capabilities'; +import { NameConfigurationPanel } from './name_configuration_panel'; +import { useSourceConfigurationFormState } from './source_configuration_form_state'; interface SourceConfigurationSettingsProps { shouldAllowEdit: boolean; diff --git a/x-pack/plugins/infra/public/utils/source_configuration.ts b/x-pack/plugins/infra/public/utils/source_configuration.ts index a3e1741c7590b..ac8a331e86952 100644 --- a/x-pack/plugins/infra/public/utils/source_configuration.ts +++ b/x-pack/plugins/infra/public/utils/source_configuration.ts @@ -31,3 +31,15 @@ export const isTimestampLogColumnConfiguration = ( logColumnConfiguration: LogColumnConfiguration ): logColumnConfiguration is TimestampLogColumnConfiguration => logColumnConfiguration != null && 'timestampColumn' in logColumnConfiguration; + +export const getLogColumnConfigurationId = ( + logColumnConfiguration: LogColumnConfiguration +): string => { + if (isTimestampLogColumnConfiguration(logColumnConfiguration)) { + return logColumnConfiguration.timestampColumn.id; + } else if (isMessageLogColumnConfiguration(logColumnConfiguration)) { + return logColumnConfiguration.messageColumn.id; + } else { + return logColumnConfiguration.fieldColumn.id; + } +}; diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 73dcecfe28d2d..496452f68aa34 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -11094,7 +11094,6 @@ "xpack.infra.sourceConfiguration.hostNameFieldDescription": "ホストの識別に使用されるフィールドです", "xpack.infra.sourceConfiguration.hostNameFieldLabel": "ホスト名", "xpack.infra.sourceConfiguration.indicesSectionTitle": "インデックス", - "xpack.infra.sourceConfiguration.logColumnListEmptyErrorMessage": "ログ列リストは未入力のままにできません。", "xpack.infra.sourceConfiguration.logColumnsSectionTitle": "ログ列", "xpack.infra.sourceConfiguration.logIndicesDescription": "ログデータを含む一致するインデックスのインデックスパターンです", "xpack.infra.sourceConfiguration.logIndicesLabel": "ログインデックス", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index e7640c220a6c0..d2fe57c6b5add 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -11248,7 +11248,6 @@ "xpack.infra.sourceConfiguration.hostNameFieldDescription": "用于标识主机的字段", "xpack.infra.sourceConfiguration.hostNameFieldLabel": "主机名", "xpack.infra.sourceConfiguration.indicesSectionTitle": "索引", - "xpack.infra.sourceConfiguration.logColumnListEmptyErrorMessage": "日志列列表不得为空。", "xpack.infra.sourceConfiguration.logColumnsSectionTitle": "日志列", "xpack.infra.sourceConfiguration.logIndicesDescription": "用于匹配包含日志数据的索引的索引模式", "xpack.infra.sourceConfiguration.logIndicesLabel": "日志索引", From 563e4e68a039ade3d56aebcaf9367674338b7cc2 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Mon, 19 Apr 2021 18:17:04 -0400 Subject: [PATCH 28/56] [Console] Update definition for _search autocomplete (#97303) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../server/lib/spec_definitions/js/search.ts | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/src/plugins/console/server/lib/spec_definitions/js/search.ts b/src/plugins/console/server/lib/spec_definitions/js/search.ts index 686737b96ac83..5a3b37e2e4135 100644 --- a/src/plugins/console/server/lib/spec_definitions/js/search.ts +++ b/src/plugins/console/server/lib/spec_definitions/js/search.ts @@ -16,7 +16,7 @@ export const search = (specService: SpecDefinitionsService) => { // populated by a global rule }, profile: { - __one_of: ['true', 'false'], + __one_of: [true, false], }, aggs: { __template: { @@ -118,6 +118,26 @@ export const search = (specService: SpecDefinitionsService) => { }, }, docvalue_fields: ['{field}'], + fields: { + __one_of: [ + [ + { + __one_of: [ + '{field}', + '*', + { + field: '{field}', + include_unmapped: { + __one_of: ['true', 'false'], + }, + format: '', + }, + ], + }, + ], + '*', + ], + }, collapse: { __template: { field: 'FIELD', @@ -144,6 +164,19 @@ export const search = (specService: SpecDefinitionsService) => { __scope_link: 'GLOBAL.script', }, }, + runtime_mappings: { + __template: { + FIELD: { + type: '', + script: { + // populated by a global rule + }, + }, + }, + '*': { + __scope_link: 'GLOBAL.script', + }, + }, partial_fields: { __template: { NAME: { @@ -160,8 +193,11 @@ export const search = (specService: SpecDefinitionsService) => { }, _source: { __one_of: [ - '{field}', ['{field}'], + '*', + '{field}', + true, + false, { includes: { __one_of: ['{field}', ['{field}']], From 9bc66ed34316075dd1a4e72b8b4e20c3439a98b2 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Mon, 19 Apr 2021 18:17:57 -0400 Subject: [PATCH 29/56] [Lens] Faster field existence failures by adding timeouts (#97188) * [Lens] Faster field existence failures by adding timeouts * Increase shard timeout and add timeout-specific warning * Fix types * Fix import * Hide field info when in error state, but not timeout Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../datapanel.test.tsx | 25 +++++++ .../indexpattern_datasource/datapanel.tsx | 15 ++-- .../indexpattern_datasource/field_list.tsx | 3 + .../fields_accordion.tsx | 59 +++++++++++----- .../indexpattern_datasource/loader.test.ts | 52 ++++++++++++++ .../public/indexpattern_datasource/loader.ts | 6 +- .../public/indexpattern_datasource/types.ts | 1 + .../lens/server/routes/existing_fields.ts | 70 ++++++++++++------- 8 files changed, 181 insertions(+), 50 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx index e6a38ce2bb713..6c5116436dddb 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx @@ -9,6 +9,7 @@ import React, { ChangeEvent, ReactElement } from 'react'; import { createMockedDragDropContext } from './mocks'; import { dataPluginMock } from '../../../../../src/plugins/data/public/mocks'; import { InnerIndexPatternDataPanel, IndexPatternDataPanel, MemoizedDataPanel } from './datapanel'; +import { FieldList } from './field_list'; import { FieldItem } from './field_item'; import { NoFieldsCallout } from './no_fields_callout'; import { act } from 'react-dom/test-utils'; @@ -713,6 +714,30 @@ describe('IndexPattern Data Panel', () => { expect(wrapper.find(NoFieldsCallout).length).toEqual(2); }); + it('should not allow field details when error', () => { + const wrapper = mountWithIntl( + + ); + + expect(wrapper.find(FieldList).prop('fieldGroups')).toEqual( + expect.objectContaining({ + AvailableFields: expect.objectContaining({ hideDetails: true }), + }) + ); + }); + + it('should allow field details when timeout', () => { + const wrapper = mountWithIntl( + + ); + + expect(wrapper.find(FieldList).prop('fieldGroups')).toEqual( + expect.objectContaining({ + AvailableFields: expect.objectContaining({ hideDetails: false }), + }) + ); + }); + it('should filter down by name', () => { const wrapper = mountWithIntl(); act(() => { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx index 1b7c8d64de36e..9fd389d4e65d3 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx @@ -230,6 +230,7 @@ export function IndexPatternDataPanel({ onUpdateIndexPattern={onUpdateIndexPattern} existingFields={state.existingFields} existenceFetchFailed={state.existenceFetchFailed} + existenceFetchTimeout={state.existenceFetchTimeout} dropOntoWorkspace={dropOntoWorkspace} hasSuggestionForField={hasSuggestionForField} /> @@ -271,6 +272,7 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ indexPatternRefs, indexPatterns, existenceFetchFailed, + existenceFetchTimeout, query, dateRange, filters, @@ -297,6 +299,7 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ charts: ChartsPluginSetup; indexPatternFieldEditor: IndexPatternFieldEditorStart; existenceFetchFailed?: boolean; + existenceFetchTimeout?: boolean; }) { const [localState, setLocalState] = useState({ nameFilter: '', @@ -314,7 +317,8 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ (type) => type in fieldTypeNames ); - const fieldInfoUnavailable = existenceFetchFailed || currentIndexPattern.hasRestrictions; + const fieldInfoUnavailable = + existenceFetchFailed || existenceFetchTimeout || currentIndexPattern.hasRestrictions; const editPermission = indexPatternFieldEditor.userPermissions.editIndexPattern(); @@ -389,7 +393,8 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ }), isAffectedByGlobalFilter: !!filters.length, isAffectedByTimeFilter: true, - hideDetails: fieldInfoUnavailable, + // Show details on timeout but not failure + hideDetails: fieldInfoUnavailable && !existenceFetchTimeout, defaultNoFieldsMessage: i18n.translate('xpack.lens.indexPatterns.noAvailableDataLabel', { defaultMessage: `There are no available fields that contain data.`, }), @@ -438,11 +443,12 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ return fieldGroupDefinitions; }, [ allFields, - existingFields, - currentIndexPattern, hasSyncedExistingFields, fieldInfoUnavailable, filters.length, + existenceFetchTimeout, + currentIndexPattern, + existingFields, ]); const fieldGroups: FieldGroups = useMemo(() => { @@ -794,6 +800,7 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ filter={filter} currentIndexPatternId={currentIndexPatternId} existenceFetchFailed={existenceFetchFailed} + existenceFetchTimeout={existenceFetchTimeout} existFieldsInIndex={!!allFields.length} dropOntoWorkspace={dropOntoWorkspace} hasSuggestionForField={hasSuggestionForField} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx index ceeb1f5b1caf3..ee0011ad0390c 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx @@ -45,6 +45,7 @@ export const FieldList = React.memo(function FieldList({ exists, fieldGroups, existenceFetchFailed, + existenceFetchTimeout, fieldProps, hasSyncedExistingFields, filter, @@ -60,6 +61,7 @@ export const FieldList = React.memo(function FieldList({ fieldProps: FieldItemSharedProps; hasSyncedExistingFields: boolean; existenceFetchFailed?: boolean; + existenceFetchTimeout?: boolean; filter: { nameFilter: string; typeFilter: string[]; @@ -194,6 +196,7 @@ export const FieldList = React.memo(function FieldList({ ); }} showExistenceFetchError={existenceFetchFailed} + showExistenceFetchTimeout={existenceFetchTimeout} renderCallout={ boolean; showExistenceFetchError?: boolean; + showExistenceFetchTimeout?: boolean; hideDetails?: boolean; groupIndex: number; dropOntoWorkspace: DatasourceDataPanelProps['dropOntoWorkspace']; @@ -73,6 +74,7 @@ export const FieldsAccordion = memo(function InnerFieldsAccordion({ exists, hideDetails, showExistenceFetchError, + showExistenceFetchTimeout, groupIndex, dropOntoWorkspace, hasSuggestionForField, @@ -133,25 +135,44 @@ export const FieldsAccordion = memo(function InnerFieldsAccordion({ }, [label, helpTooltip]); const extraAction = useMemo(() => { - return showExistenceFetchError ? ( - - ) : hasLoaded ? ( - - {fieldsCount} - - ) : ( - - ); - }, [showExistenceFetchError, hasLoaded, isFiltered, fieldsCount]); + if (showExistenceFetchError) { + return ( + + ); + } + if (showExistenceFetchTimeout) { + return ( + + ); + } + if (hasLoaded) { + return ( + + {fieldsCount} + + ); + } + + return ; + }, [showExistenceFetchError, showExistenceFetchTimeout, hasLoaded, isFiltered, fieldsCount]); return ( { foo: 'bar', isFirstExistenceFetch: false, existenceFetchFailed: false, + existenceFetchTimeout: false, existingFields: { '1': { ip1_field_1: true, ip1_field_2: true }, '2': { ip2_field_1: true, ip2_field_2: true }, @@ -957,6 +959,56 @@ describe('loader', () => { }) as IndexPatternPrivateState; expect(newState.existenceFetchFailed).toEqual(true); + expect(newState.existenceFetchTimeout).toEqual(false); + expect(newState.existingFields['1']).toEqual({ + field1: true, + field2: true, + }); + }); + + it('should set all fields to available and existence error flag if the request times out', async () => { + const setState = jest.fn(); + const fetchJson = (jest.fn((path: string) => { + return new Promise((resolve, reject) => { + reject( + new HttpFetchError( + 'timeout', + 'name', + ({} as unknown) as Request, + ({ status: 408 } as unknown) as Response + ) + ); + }); + }) as unknown) as HttpHandler; + + const args = { + dateRange: { fromDate: '1900-01-01', toDate: '2000-01-01' }, + fetchJson, + indexPatterns: [ + { + id: '1', + title: '1', + hasRestrictions: false, + fields: [{ name: 'field1' }, { name: 'field2' }] as IndexPatternField[], + }, + ], + setState, + dslQuery, + showNoDataPopover: jest.fn(), + currentIndexPatternTitle: 'abc', + isFirstExistenceFetch: false, + }; + + await syncExistingFields(args); + + const [fn] = setState.mock.calls[0]; + const newState = fn({ + foo: 'bar', + existingFields: {}, + }) as IndexPatternPrivateState; + + expect(newState.existenceFetchFailed).toEqual(false); + expect(newState.existenceFetchTimeout).toEqual(true); expect(newState.existingFields['1']).toEqual({ field1: true, field2: true, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/loader.ts b/x-pack/plugins/lens/public/indexpattern_datasource/loader.ts index ec7ef6a37a27a..0eb661e92bb1d 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/loader.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/loader.ts @@ -445,16 +445,18 @@ export async function syncExistingFields({ ...state, isFirstExistenceFetch: false, existenceFetchFailed: false, + existenceFetchTimeout: false, existingFields: emptinessInfo.reduce((acc, info) => { acc[info.indexPatternTitle] = booleanMap(info.existingFieldNames); return acc; }, state.existingFields), })); } catch (e) { - // show all fields as available if fetch failed + // show all fields as available if fetch failed or timed out setState((state) => ({ ...state, - existenceFetchFailed: true, + existenceFetchFailed: e.res?.status !== 408, + existenceFetchTimeout: e.res?.status === 408, existingFields: indexPatterns.reduce((acc, pattern) => { acc[pattern.title] = booleanMap(pattern.fields.map((field) => field.name)); return acc; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/types.ts b/x-pack/plugins/lens/public/indexpattern_datasource/types.ts index 18f653c588ee8..98dc767c44c7d 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/types.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/types.ts @@ -87,6 +87,7 @@ export interface IndexPatternPrivateState { existingFields: Record>; isFirstExistenceFetch: boolean; existenceFetchFailed?: boolean; + existenceFetchTimeout?: boolean; } export interface IndexPatternRef { diff --git a/x-pack/plugins/lens/server/routes/existing_fields.ts b/x-pack/plugins/lens/server/routes/existing_fields.ts index 2e6d612835231..d775113d83ff7 100644 --- a/x-pack/plugins/lens/server/routes/existing_fields.ts +++ b/x-pack/plugins/lens/server/routes/existing_fields.ts @@ -68,8 +68,15 @@ export async function existingFieldsRoute(setup: CoreSetup, }), }); } catch (e) { + if (e instanceof errors.TimeoutError) { + logger.info(`Field existence check timed out on ${req.params.indexPatternId}`); + // 408 is Request Timeout + return res.customError({ statusCode: 408, body: e.message }); + } logger.info( - `Field existence check failed: ${isBoomError(e) ? e.output.payload.message : e.message}` + `Field existence check failed on ${req.params.indexPatternId}: ${ + isBoomError(e) ? e.output.payload.message : e.message + }` ); if (e instanceof errors.ResponseError && e.statusCode === 404) { return res.notFound({ body: e.message }); @@ -182,31 +189,44 @@ async function fetchIndexPatternStats({ const scriptedFields = fields.filter((f) => f.isScript); const runtimeFields = fields.filter((f) => f.runtimeField); - const { body: result } = await client.search({ - index, - body: { - size: SAMPLE_SIZE, - query, - sort: timeFieldName && fromDate && toDate ? [{ [timeFieldName]: 'desc' }] : [], - fields: ['*'], - _source: false, - runtime_mappings: runtimeFields.reduce((acc, field) => { - if (!field.runtimeField) return acc; - // @ts-expect-error @elastic/elasticsearch StoredScript.language is required - acc[field.name] = field.runtimeField; - return acc; - }, {} as Record), - script_fields: scriptedFields.reduce((acc, field) => { - acc[field.name] = { - script: { - lang: field.lang!, - source: field.script!, - }, - }; - return acc; - }, {} as Record), + const { body: result } = await client.search( + { + index, + body: { + size: SAMPLE_SIZE, + query, + // Sorted queries are usually able to skip entire shards that don't match + sort: timeFieldName && fromDate && toDate ? [{ [timeFieldName]: 'desc' }] : [], + fields: ['*'], + _source: false, + runtime_mappings: runtimeFields.reduce((acc, field) => { + if (!field.runtimeField) return acc; + // @ts-expect-error @elastic/elasticsearch StoredScript.language is required + acc[field.name] = field.runtimeField; + return acc; + }, {} as Record), + script_fields: scriptedFields.reduce((acc, field) => { + acc[field.name] = { + script: { + lang: field.lang!, + source: field.script!, + }, + }; + return acc; + }, {} as Record), + // Small improvement because there is overhead in counting + track_total_hits: false, + // Per-shard timeout, must be lower than overall. Shards return partial results on timeout + timeout: '4500ms', + }, }, - }); + { + // Global request timeout. Will cancel the request if exceeded. Overrides the elasticsearch.requestTimeout + requestTimeout: '5000ms', + // Fails fast instead of retrying- default is to retry + maxRetries: 0, + } + ); return result.hits.hits; } From 9cf66a78e9a7cfd4de042665826f0e81ce5ad7e1 Mon Sep 17 00:00:00 2001 From: Yuliia Naumenko Date: Mon, 19 Apr 2021 15:54:54 -0700 Subject: [PATCH 30/56] [Docs][Alerting] Changed overall alerting documentation structure (#95004) * [Docs][Alerting] Changed overall alerting documentation structure * fixed image link * moved alerting and connectors under the graph in the menu list * moved management docs to alerting and connectors * fixed image link * fixed connector menu position * fixed mappings * fixed mappings * fixed links * fixed levels * move manage connectors before action types * adjust connectors management * adjust connectors management * split domain specific and stack rules * fixed rule types links * added connectors ui images * fixed image links * fixed image links * fixed image links * test * fixed image links * fixed broken links * fixed broken links * fixed email links * fixed email links * fixed email links * fixed links * added images to connectors docs * Update docs/user/alerting/rule-management.asciidoc Co-authored-by: gchaps <33642766+gchaps@users.noreply.github.com> * Update docs/user/alerting/stack-rules.asciidoc Co-authored-by: gchaps <33642766+gchaps@users.noreply.github.com> * fixed due to comments * fixed due to comments * fixed create connector * moved connectors to stack management section * removed bazel files * fixed managing-alerts-and-actions links * Revert "fixed managing-alerts-and-actions links" This reverts commit 0ed228b09053f9dda084d83aa8ed4174b3c2cd88. * fixed code owners Co-authored-by: gchaps <33642766+gchaps@users.noreply.github.com> Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .github/CODEOWNERS | 2 +- docs/management/action-types.asciidoc | 117 ++++++++++++++++++ .../alerting/connector-management.asciidoc | 40 ------ .../rules-and-connectors-intro.asciidoc | 29 ----- .../connectors}/action-types/email.asciidoc | 24 +++- .../connectors}/action-types/index.asciidoc | 14 +++ .../connectors}/action-types/jira.asciidoc | 15 +++ .../action-types/pagerduty.asciidoc | 20 ++- .../action-types/resilient.asciidoc | 15 +++ .../action-types/server-log.asciidoc | 14 +++ .../action-types/servicenow.asciidoc | 15 +++ .../connectors}/action-types/slack.asciidoc | 15 +++ .../connectors}/action-types/teams.asciidoc | 15 +++ .../connectors}/action-types/webhook.asciidoc | 14 +++ .../images/connector-action-count.png | Bin .../images/connector-delete.png | Bin .../images/connector-filter-by-search.png | Bin .../images/connector-filter-by-type.png | Bin .../images/connector-listing.png | Bin .../images/connector-select-type.png | Bin 0 -> 327833 bytes .../connectors/images/email-connector.png | Bin 0 -> 188529 bytes .../connectors/images/email-params-test.png | Bin 0 -> 173053 bytes .../connectors/images/index-connector.png | Bin 0 -> 157290 bytes .../connectors/images/index-params-test.png | Bin 0 -> 157008 bytes .../connectors/images/jira-connector.png | Bin 0 -> 158772 bytes .../connectors/images/jira-params-test.png | Bin 0 -> 186073 bytes .../connectors/images/pagerduty-connector.png | Bin 0 -> 136276 bytes .../images/pagerduty-integration.png | Bin .../images/pagerduty-params-test.png | Bin 0 -> 188743 bytes .../pre-configured-connectors-managing.png | Bin .../pre-configured-connectors-view-screen.png | Bin .../connectors/images/resilient-connector.png | Bin 0 -> 152361 bytes .../images/resilient-params-test.png | Bin 0 -> 184380 bytes .../connectors/images/serverlog-connector.png | Bin 0 -> 68666 bytes .../images/serverlog-params-test.png | Bin 0 -> 120530 bytes .../images/servicenow-connector.png | Bin 0 -> 158511 bytes .../images/servicenow-params-test.png | Bin 0 -> 184611 bytes .../images/servicenow-sir-connector.png | Bin 0 -> 159898 bytes .../images/servicenow-sir-params-test.png | Bin 0 -> 190659 bytes .../images/slack-add-webhook-integration.png | Bin .../connectors/images/slack-connector.png | Bin 0 -> 123918 bytes .../images/slack-copy-webhook-url.png | Bin .../connectors/images/slack-params-test.png | Bin 0 -> 109474 bytes .../images/teams-add-webhook-integration.png | Bin .../connectors/images/teams-connector.png | Bin 0 -> 148549 bytes .../images/teams-copy-webhook-url.png | Bin .../connectors/images/teams-params-test.png | Bin 0 -> 144338 bytes .../connectors/images/webhook-connector.png | Bin 0 -> 193110 bytes .../connectors/images/webhook-params-test.png | Bin 0 -> 143209 bytes docs/management/connectors/index.asciidoc | 11 ++ .../pre-configured-connectors.asciidoc | 1 - .../images/rules-and-connectors-ui.png | Bin docs/user/alerting/action-types.asciidoc | 75 ----------- .../alerting-getting-started.asciidoc | 4 +- .../alerting/domain-specific-rules.asciidoc | 20 +++ .../alerting/images/bulk-mute-disable.png | Bin .../alerting/images/follower_indices.png | Bin .../images/individual-mute-disable.png | Bin .../images/rule-details-alert-muting.png | Bin .../images/rule-details-alerts-active.png | Bin .../images/rule-details-alerts-inactive.png | Bin .../images/rule-details-disabling.png | Bin .../alerting/images/rule-details-muting.png | Bin .../images/rules-and-connectors-ui.png | Bin 0 -> 281417 bytes .../images/rules-filter-by-action-type.png | Bin .../images/rules-filter-by-search.png | Bin .../alerting/images/rules-filter-by-type.png | Bin docs/user/alerting/index.asciidoc | 6 +- .../alerting/rule-details.asciidoc | 2 +- .../alerting/rule-management.asciidoc | 21 ++-- ...le-types.asciidoc => stack-rules.asciidoc} | 21 +--- docs/user/index.asciidoc | 4 +- docs/user/management.asciidoc | 20 ++- docs/user/monitoring/kibana-alerts.asciidoc | 2 +- .../public/doc_links/doc_links_service.ts | 4 +- .../public/application/home.test.tsx | 2 +- 76 files changed, 338 insertions(+), 204 deletions(-) create mode 100644 docs/management/action-types.asciidoc delete mode 100644 docs/management/alerting/connector-management.asciidoc delete mode 100644 docs/management/alerting/rules-and-connectors-intro.asciidoc rename docs/{user/alerting => management/connectors}/action-types/email.asciidoc (93%) rename docs/{user/alerting => management/connectors}/action-types/index.asciidoc (92%) rename docs/{user/alerting => management/connectors}/action-types/jira.asciidoc (86%) rename docs/{user/alerting => management/connectors}/action-types/pagerduty.asciidoc (93%) rename docs/{user/alerting => management/connectors}/action-types/resilient.asciidoc (85%) rename docs/{user/alerting => management/connectors}/action-types/server-log.asciidoc (72%) rename docs/{user/alerting => management/connectors}/action-types/servicenow.asciidoc (86%) rename docs/{user/alerting => management/connectors}/action-types/slack.asciidoc (86%) rename docs/{user/alerting => management/connectors}/action-types/teams.asciidoc (88%) rename docs/{user/alerting => management/connectors}/action-types/webhook.asciidoc (88%) rename docs/management/{alerting => connectors}/images/connector-action-count.png (100%) rename docs/management/{alerting => connectors}/images/connector-delete.png (100%) rename docs/management/{alerting => connectors}/images/connector-filter-by-search.png (100%) rename docs/management/{alerting => connectors}/images/connector-filter-by-type.png (100%) rename docs/management/{alerting => connectors}/images/connector-listing.png (100%) create mode 100644 docs/management/connectors/images/connector-select-type.png create mode 100644 docs/management/connectors/images/email-connector.png create mode 100644 docs/management/connectors/images/email-params-test.png create mode 100644 docs/management/connectors/images/index-connector.png create mode 100644 docs/management/connectors/images/index-params-test.png create mode 100644 docs/management/connectors/images/jira-connector.png create mode 100644 docs/management/connectors/images/jira-params-test.png create mode 100644 docs/management/connectors/images/pagerduty-connector.png rename docs/{user/alerting => management/connectors}/images/pagerduty-integration.png (100%) create mode 100644 docs/management/connectors/images/pagerduty-params-test.png rename docs/{user/alerting => management/connectors}/images/pre-configured-connectors-managing.png (100%) rename docs/{user/alerting => management/connectors}/images/pre-configured-connectors-view-screen.png (100%) create mode 100644 docs/management/connectors/images/resilient-connector.png create mode 100644 docs/management/connectors/images/resilient-params-test.png create mode 100644 docs/management/connectors/images/serverlog-connector.png create mode 100644 docs/management/connectors/images/serverlog-params-test.png create mode 100644 docs/management/connectors/images/servicenow-connector.png create mode 100644 docs/management/connectors/images/servicenow-params-test.png create mode 100644 docs/management/connectors/images/servicenow-sir-connector.png create mode 100644 docs/management/connectors/images/servicenow-sir-params-test.png rename docs/{user/alerting => management/connectors}/images/slack-add-webhook-integration.png (100%) create mode 100644 docs/management/connectors/images/slack-connector.png rename docs/{user/alerting => management/connectors}/images/slack-copy-webhook-url.png (100%) create mode 100644 docs/management/connectors/images/slack-params-test.png rename docs/{user/alerting => management/connectors}/images/teams-add-webhook-integration.png (100%) create mode 100644 docs/management/connectors/images/teams-connector.png rename docs/{user/alerting => management/connectors}/images/teams-copy-webhook-url.png (100%) create mode 100644 docs/management/connectors/images/teams-params-test.png create mode 100644 docs/management/connectors/images/webhook-connector.png create mode 100644 docs/management/connectors/images/webhook-params-test.png create mode 100644 docs/management/connectors/index.asciidoc rename docs/{user/alerting/action-types => management/connectors}/pre-configured-connectors.asciidoc (99%) rename docs/management/{alerting => }/images/rules-and-connectors-ui.png (100%) delete mode 100644 docs/user/alerting/action-types.asciidoc create mode 100644 docs/user/alerting/domain-specific-rules.asciidoc rename docs/{management => user}/alerting/images/bulk-mute-disable.png (100%) rename docs/{management => user}/alerting/images/follower_indices.png (100%) rename docs/{management => user}/alerting/images/individual-mute-disable.png (100%) rename docs/{management => user}/alerting/images/rule-details-alert-muting.png (100%) rename docs/{management => user}/alerting/images/rule-details-alerts-active.png (100%) rename docs/{management => user}/alerting/images/rule-details-alerts-inactive.png (100%) rename docs/{management => user}/alerting/images/rule-details-disabling.png (100%) rename docs/{management => user}/alerting/images/rule-details-muting.png (100%) create mode 100644 docs/user/alerting/images/rules-and-connectors-ui.png rename docs/{management => user}/alerting/images/rules-filter-by-action-type.png (100%) rename docs/{management => user}/alerting/images/rules-filter-by-search.png (100%) rename docs/{management => user}/alerting/images/rules-filter-by-type.png (100%) rename docs/{management => user}/alerting/rule-details.asciidoc (99%) rename docs/{management => user}/alerting/rule-management.asciidoc (74%) rename docs/user/alerting/{rule-types.asciidoc => stack-rules.asciidoc} (58%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0692e94e8b028..cae64a24ec2cd 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -272,7 +272,7 @@ /x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/ @elastic/kibana-alerting-services /x-pack/test/functional_with_es_ssl/fixtures/plugins/alerts/ @elastic/kibana-alerting-services /docs/user/alerting/ @elastic/kibana-alerting-services -/docs/management/alerting/ @elastic/kibana-alerting-services +/docs/management/connectors/ @elastic/kibana-alerting-services #CC# /x-pack/plugins/stack_alerts @elastic/kibana-alerting-services # Enterprise Search diff --git a/docs/management/action-types.asciidoc b/docs/management/action-types.asciidoc new file mode 100644 index 0000000000000..4d6dcb631792e --- /dev/null +++ b/docs/management/action-types.asciidoc @@ -0,0 +1,117 @@ +[role="xpack"] +[[action-types]] +== Connectors + +Connectors provide a central place to store connection information for services and integrations with third party systems. Actions are instantiations of a connector that are linked to rules and run as background tasks on the {kib} server when rule conditions are met. {kib} provides the following types of connectors: + +[cols="2"] +|=== + +a| <> + +| Send email from your server. + +a| <> + +| Create an incident in IBM Resilient. + +a| <> + +| Index data into Elasticsearch. + +a| <> + +| Create an incident in Jira. + +a| <> + +| Send a message to a Microsoft Teams channel. + +a| <> + +| Send an event in PagerDuty. + +a| <> + +| Add a message to a Kibana log. + +a| <> + +| Create an incident in ServiceNow. + +a| <> + +| Send a message to a Slack channel or user. + +a| <> + +| Send a request to a web service. +|=== + +[NOTE] +============================================== +Some connector types are paid commercial features, while others are free. +For a comparison of the Elastic subscription levels, +see https://www.elastic.co/subscriptions[the subscription page]. +============================================== + +[float] +[[connector-management]] +=== Managing Connectors + +Rules use *Connectors* to route actions to different destinations like log files, ticketing systems, and messaging tools. While each {kib} app can offer their own types of rules, they typically share connectors. The *Connectors* tab offers a central place to view and manage all the connectors in the current space. + +For more information on connectors and the types of actions available see <>. + +[role="screenshot"] +image::images/connector-listing.png[Example connector listing in the Rules and Connectors UI] + +[float] +=== Required permissions + +Access to connectors is granted based on your privileges to alerting-enabled features. See <> for more information. + +[float] +[[connectors-list]] +=== Connector list + +The *Connectors* tab lists all connectors in the current space. The *search bar* can be used to find specific connectors by name and/or type. + +[role="screenshot"] +image::images/connector-filter-by-search.png[Filtering the connector list using the search bar] + + +The *type* dropdown also lets you filter to a subset of connector types. + +[role="screenshot"] +image::images/connector-filter-by-type.png[Filtering the connector list by types of connectors] + +You can delete individual connectors using the trash icon. Connectors can also be deleted in bulk by multi-selecting them and clicking the *Delete* button to the left of the search box. + +[role="screenshot"] +image::images/connector-delete.png[Deleting connectors individually or in bulk] + +[NOTE] +============================================================================ +You can delete a connector even if there are still actions referencing it. +When this happens the action will fail to execute, and appear as errors in the {kib} logs. +============================================================================ + +[float] +[[creating-new-connector]] +=== Creating a new connector + +New connectors can be created by clicking the *Create connector* button, which will guide you to select the type of connector and configure its properties. Refer to <> for the types of connectors available and how to configure them. Once you create a connector it will be made available to you anytime you set up an action in the current space. + +[role="screenshot"] +image::images/connector-select-type.png[Connector select type] + +[float] +[[create-connectors]] +=== Preconfigured connectors + +For out-of-the-box and standardized connectors, you can <> +before {kib} starts. + + +include::connectors/index.asciidoc[] diff --git a/docs/management/alerting/connector-management.asciidoc b/docs/management/alerting/connector-management.asciidoc deleted file mode 100644 index dd3b5209ed4a0..0000000000000 --- a/docs/management/alerting/connector-management.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -[role="xpack"] -[[connector-management]] -=== Managing Connectors - -Rules use *Connectors* to route actions to different destinations like log files, ticketing systems, and messaging tools. While each {kib} app can offer their own types of rules, they typically share connectors. The *Connectors* tab offers a central place to view and manage all the connectors in the current space. - -For more information on connectors and the types of actions available see <>. - -[role="screenshot"] -image::images/connector-listing.png[Example connector listing in the Rules and Connectors UI] - - -[float] -==== Connector list - -The *Connectors* tab lists all connectors in the current space. The *search bar* can be used to find specific connectors by name and/or type. - -[role="screenshot"] -image::images/connector-filter-by-search.png[Filtering the connector list using the search bar] - - -The *type* dropdown also lets you filter to a subset of connector types. - -[role="screenshot"] -image::images/connector-filter-by-type.png[Filtering the connector list by types of connectors] - -You can delete individual connectors using the trash icon. Connectors can also be deleted in bulk by multi-selecting them and clicking the *Delete* button to the left of the search box. - -[role="screenshot"] -image::images/connector-delete.png[Deleting connectors individually or in bulk] - -[NOTE] -============================================================================ -You can delete a connector even if there are still actions referencing it. -When this happens the action will fail to execute, and appear as errors in the {kib} logs. -============================================================================ - -==== Creating a new connector - -New connectors can be created by clicking the *Create connector* button, which will guide you to select the type of connector and configure its properties. Refer to <> for the types of connectors available and how to configure them. Once you create a connector it will be made available to you anytime you set up an action in the current space. diff --git a/docs/management/alerting/rules-and-connectors-intro.asciidoc b/docs/management/alerting/rules-and-connectors-intro.asciidoc deleted file mode 100644 index 6e23ca95e2266..0000000000000 --- a/docs/management/alerting/rules-and-connectors-intro.asciidoc +++ /dev/null @@ -1,29 +0,0 @@ -[role="xpack"] -[[managing-alerts-and-actions]] -== Rules and Connectors - - -The *Rules and Connectors* UI lets you <> in a space, and provides tools to <> so that rules can trigger actions like notification, indexing, and ticketing. - -To manage rules and connectors, open the main menu, then click *Stack Management > Alerts and Insights > Rules and Connectors*. - -[role="screenshot"] -image:management/alerting/images/rules-and-connectors-ui.png[Example rule listing in the Rules and Connectors UI] - -[NOTE] -============================================================================ -Similar to dashboards, rules and connectors reside in a <>. -The *Rules and Connectors* UI only shows rules and connectors for the current space. -============================================================================ - -[NOTE] -============================================================================ -{es} also offers alerting capabilities through Watcher, which -can be managed through the <>. See -<> for more information. -============================================================================ - -[float] -=== Required permissions - -Access to rules and connectors is granted based on your privileges to alerting-enabled features. See <> for more information. diff --git a/docs/user/alerting/action-types/email.asciidoc b/docs/management/connectors/action-types/email.asciidoc similarity index 93% rename from docs/user/alerting/action-types/email.asciidoc rename to docs/management/connectors/action-types/email.asciidoc index 58f1300d0c287..1c2f9212b4887 100644 --- a/docs/user/alerting/action-types/email.asciidoc +++ b/docs/management/connectors/action-types/email.asciidoc @@ -25,7 +25,7 @@ Username:: Username for login type authentication. Password:: Password for login type authentication. [float] -[[Preconfigured-email-configuration]] +[[preconfigured-email-configuration]] ==== Preconfigured connector type [source,text] @@ -57,6 +57,19 @@ Secrets defines sensitive information for the connector type. `user`:: A string that corresponds to *Username*. Required if `hasAuth` is set to `true`. `password`:: A string that corresponds to *Password*. Should be stored in the <>. Required if `hasAuth` is set to `true`. +[float] +[[define-email-ui]] +==== Define connector in Stack Management + +Define email connector properties. + +[role="screenshot"] +image::management/connectors/images/email-connector.png[Email connector] + +Test email action parameters. + +[role="screenshot"] +image::management/connectors/images/email-params-test.png[Email params test] [float] [[email-action-configuration]] @@ -68,6 +81,7 @@ To, CC, BCC:: Each item is a list of addresses. Addresses can be specified in Subject:: The subject line of the email. Message:: The message text of the email. Markdown format is supported. +[float] [[configuring-email]] ==== Configuring email accounts for well-known services @@ -84,7 +98,7 @@ For other email servers, you can check the list of well-known services that Node [float] [[gmail]] -===== Sending email from Gmail +==== Sending email from Gmail Use the following email connector configuration to send email from the https://mail.google.com[Gmail] SMTP service: @@ -112,7 +126,7 @@ for more information. [float] [[outlook]] -===== Sending email from Outlook.com +==== Sending email from Outlook.com Use the following email connector configuration to send email from the https://www.outlook.com/[Outlook.com] SMTP service: @@ -137,7 +151,7 @@ NOTE: You must use a unique App Password if two-step verification is enabled. [float] [[amazon-ses]] -===== Sending email from Amazon SES (Simple Email Service) +==== Sending email from Amazon SES (Simple Email Service) Use the following email connector configuration to send email from the http://aws.amazon.com/ses[Amazon Simple Email Service] (SES) SMTP service: @@ -164,7 +178,7 @@ NOTE: You must use your Amazon SES SMTP credentials to send email through [float] [[exchange]] -===== Sending email from Microsoft Exchange +==== Sending email from Microsoft Exchange Use the following email connector configuration to send email from Microsoft Exchange: diff --git a/docs/user/alerting/action-types/index.asciidoc b/docs/management/connectors/action-types/index.asciidoc similarity index 92% rename from docs/user/alerting/action-types/index.asciidoc rename to docs/management/connectors/action-types/index.asciidoc index e23dcbf298fd5..d3bd3d431748c 100644 --- a/docs/user/alerting/action-types/index.asciidoc +++ b/docs/management/connectors/action-types/index.asciidoc @@ -39,6 +39,20 @@ Config defines information for the connector type. `refresh`:: A boolean that corresponds to *Refresh*. Defaults to `false`. `executionTimeField`:: A string that corresponds to *Execution time field*. +[float] +[[define-index-ui]] +==== Define connector in Stack Management + +Define Index connector properties. + +[role="screenshot"] +image::management/connectors/images/index-connector.png[Index connector] + +Test Index action parameters. + +[role="screenshot"] +image::management/connectors/images/index-params-test.png[Index params test] + [float] [[index-action-configuration]] ==== Action configuration diff --git a/docs/user/alerting/action-types/jira.asciidoc b/docs/management/connectors/action-types/jira.asciidoc similarity index 86% rename from docs/user/alerting/action-types/jira.asciidoc rename to docs/management/connectors/action-types/jira.asciidoc index 7b4dc69bb639a..a5e629887d5c6 100644 --- a/docs/user/alerting/action-types/jira.asciidoc +++ b/docs/management/connectors/action-types/jira.asciidoc @@ -46,6 +46,20 @@ Secrets defines sensitive information for the connector type. `email`:: A string that corresponds to *Email*. `apiToken`:: A string that corresponds to *API Token*. Should be stored in the <>. +[float] +[[define-jira-ui]] +==== Define connector in Stack Management + +Define Jira connector properties. + +[role="screenshot"] +image::management/connectors/images/jira-connector.png[Jira connector] + +Test Jira action parameters. + +[role="screenshot"] +image::management/connectors/images/jira-params-test.png[Jira params test] + [float] [[jira-action-configuration]] ==== Action configuration @@ -60,6 +74,7 @@ Description:: The details about the incident. Parent:: The ID or key of the parent issue. Only for `Subtask` issue types. Additional comments:: Additional information for the client, such as how to troubleshoot the issue. +[float] [[configuring-jira]] ==== Configure Jira diff --git a/docs/user/alerting/action-types/pagerduty.asciidoc b/docs/management/connectors/action-types/pagerduty.asciidoc similarity index 93% rename from docs/user/alerting/action-types/pagerduty.asciidoc rename to docs/management/connectors/action-types/pagerduty.asciidoc index c32e6c8a6635f..25cba05010548 100644 --- a/docs/user/alerting/action-types/pagerduty.asciidoc +++ b/docs/management/connectors/action-types/pagerduty.asciidoc @@ -40,6 +40,20 @@ Secrets defines sensitive information for the connector type. `routingKey`:: A string that corresponds to *Integration Key*. +[float] +[[define-pagerduty-ui]] +==== Define connector in Stack Management + +Define PagerDuty connector properties. + +[role="screenshot"] +image::management/connectors/images/pagerduty-connector.png[PagerDuty connector] + +Test PagerDuty action parameters. + +[role="screenshot"] +image::management/connectors/images/pagerduty-params-test.png[PagerDuty params test] + [float] [[pagerduty-action-configuration]] ==== Action configuration @@ -70,14 +84,14 @@ By integrating PagerDuty with rules, you can: [float] [[pagerduty-support]] -===== Support +==== Support If you need help with this integration, get in touch with the {kib} team by visiting https://support.elastic.co[support.elastic.co] or by using the *Ask Elastic* option in the {kib} Help menu. You can also select the {kib} category at https://discuss.elastic.co/[discuss.elastic.co]. [float] [[pagerduty-integration-walkthrough]] -===== Integration with PagerDuty walkthrough +==== Integration with PagerDuty walkthrough [[pagerduty-in-pagerduty]] *In PagerDuty* @@ -101,7 +115,7 @@ and select *Elastic Alerts* from the *Integration Type* menu. You will be redirected to the *Integrations* tab for your service. An Integration Key is generated on this screen. + [role="screenshot"] -image::user/alerting/images/pagerduty-integration.png[PagerDuty Integrations tab] +image::images/pagerduty-integration.png[PagerDuty Integrations tab] . Save this key, as you will use it when you configure the integration with Elastic in the next section. diff --git a/docs/user/alerting/action-types/resilient.asciidoc b/docs/management/connectors/action-types/resilient.asciidoc similarity index 85% rename from docs/user/alerting/action-types/resilient.asciidoc rename to docs/management/connectors/action-types/resilient.asciidoc index 862af0e526337..454ae145bbc57 100644 --- a/docs/user/alerting/action-types/resilient.asciidoc +++ b/docs/management/connectors/action-types/resilient.asciidoc @@ -46,6 +46,20 @@ Secrets defines sensitive information for the connector type. `apiKeyId`:: A string that corresponds to *API key ID*. `apiKeySecret`:: A string that corresponds to *API Key secret*. Should be stored in the <>. +[float] +[[define-resilient-ui]] +==== Define connector in Stack Management + +Define IBM Resilient connector properties. + +[role="screenshot"] +image::management/connectors/images/resilient-connector.png[IBM Resilient connector] + +Test IBM Resilient action parameters. + +[role="screenshot"] +image::management/connectors/images/resilient-params-test.png[IBM Resilient params test] + [float] [[resilient-action-configuration]] ==== Action configuration @@ -58,6 +72,7 @@ Name:: A name for the issue, used for searching the contents of the knowledge ba Description:: The details about the incident. Additional comments:: Additional information for the client, such as how to troubleshoot the issue. +[float] [[configuring-resilient]] ==== Configure IBM Resilient diff --git a/docs/user/alerting/action-types/server-log.asciidoc b/docs/management/connectors/action-types/server-log.asciidoc similarity index 72% rename from docs/user/alerting/action-types/server-log.asciidoc rename to docs/management/connectors/action-types/server-log.asciidoc index e497ed3a4467a..0810724d39ead 100644 --- a/docs/user/alerting/action-types/server-log.asciidoc +++ b/docs/management/connectors/action-types/server-log.asciidoc @@ -26,6 +26,20 @@ Name:: The name of the connector. The name is used to identify a connector actionTypeId: .server-log -- +[float] +[[define-serverlog-ui]] +==== Define connector in Stack Management + +Define Server log connector properties. + +[role="screenshot"] +image::management/connectors/images/serverlog-connector.png[Server log connector] + +Test Server log action parameters. + +[role="screenshot"] +image::management/connectors/images/serverlog-params-test.png[Server log params test] + [float] [[server-log-action-configuration]] ==== Action configuration diff --git a/docs/user/alerting/action-types/servicenow.asciidoc b/docs/management/connectors/action-types/servicenow.asciidoc similarity index 86% rename from docs/user/alerting/action-types/servicenow.asciidoc rename to docs/management/connectors/action-types/servicenow.asciidoc index 35d50f1bfeb72..24892c62e804b 100644 --- a/docs/user/alerting/action-types/servicenow.asciidoc +++ b/docs/management/connectors/action-types/servicenow.asciidoc @@ -43,6 +43,20 @@ Secrets defines sensitive information for the connector type. `username`:: A string that corresponds to *Username*. `password`:: A string that corresponds to *Password*. Should be stored in the <>. +[float] +[[define-servicenow-ui]] +==== Define connector in Stack Management + +Define ServiceNow connector properties. + +[role="screenshot"] +image::management/connectors/images/servicenow-connector.png[ServiceNow connector] + +Test ServiceNow action parameters. + +[role="screenshot"] +image::management/connectors/images/servicenow-params-test.png[ServiceNow params test] + [float] [[servicenow-action-configuration]] ==== Action configuration @@ -56,6 +70,7 @@ Short description:: A short description for the incident, used for searching Description:: The details about the incident. Additional comments:: Additional information for the client, such as how to troubleshoot the issue. +[float] [[configuring-servicenow]] ==== Configure ServiceNow diff --git a/docs/user/alerting/action-types/slack.asciidoc b/docs/management/connectors/action-types/slack.asciidoc similarity index 86% rename from docs/user/alerting/action-types/slack.asciidoc rename to docs/management/connectors/action-types/slack.asciidoc index 3ef369e2a4e4a..da0bf321f9ade 100644 --- a/docs/user/alerting/action-types/slack.asciidoc +++ b/docs/management/connectors/action-types/slack.asciidoc @@ -33,6 +33,20 @@ Secrets defines sensitive information for the connector type. `webhookUrl`:: A string that corresponds to *Webhook URL*. +[float] +[[define-slack-ui]] +==== Define connector in Stack Management + +Define Slack connector properties. + +[role="screenshot"] +image::management/connectors/images/slack-connector.png[Slack connector] + +Test Slack action parameters. + +[role="screenshot"] +image::management/connectors/images/slack-params-test.png[Slack params test] + [float] [[slack-action-configuration]] ==== Action configuration @@ -41,6 +55,7 @@ Slack actions have the following properties. Message:: The message text, converted to the `text` field in the Webhook JSON payload. Currently only the text field is supported. Markdown, images, and other advanced formatting are not yet supported. +[float] [[configuring-slack]] ==== Configure a Slack account diff --git a/docs/user/alerting/action-types/teams.asciidoc b/docs/management/connectors/action-types/teams.asciidoc similarity index 88% rename from docs/user/alerting/action-types/teams.asciidoc rename to docs/management/connectors/action-types/teams.asciidoc index 1a0e52141ee9c..ba723a6f33c86 100644 --- a/docs/user/alerting/action-types/teams.asciidoc +++ b/docs/management/connectors/action-types/teams.asciidoc @@ -33,6 +33,20 @@ Secrets defines sensitive information for the connector type. `webhookUrl`:: A string that corresponds to *Webhook URL*. +[float] +[[define-teams-ui]] +==== Define connector in Stack Management + +Define Teams connector properties. + +[role="screenshot"] +image::management/connectors/images/teams-connector.png[Teams connector] + +Test Teams action parameters. + +[role="screenshot"] +image::management/connectors/images/teams-params-test.png[Teams params test] + [float] [[teams-action-configuration]] ==== Action configuration @@ -41,6 +55,7 @@ Microsoft Teams actions have the following properties. Message:: The message text, converted to the `text` field in the Webhook JSON payload. Currently only the text field is supported. Markdown, images, and other advanced formatting are not yet supported. +[float] [[configuring-teams]] ==== Configure a Microsoft Teams account diff --git a/docs/user/alerting/action-types/webhook.asciidoc b/docs/management/connectors/action-types/webhook.asciidoc similarity index 88% rename from docs/user/alerting/action-types/webhook.asciidoc rename to docs/management/connectors/action-types/webhook.asciidoc index 01ddfee288fc8..a2024b9457a1c 100644 --- a/docs/user/alerting/action-types/webhook.asciidoc +++ b/docs/management/connectors/action-types/webhook.asciidoc @@ -52,6 +52,20 @@ Secrets defines sensitive information for the connector type. `user`:: A string that corresponds to *User*. Required if `hasAuth` is set to `true`. `password`:: A string that corresponds to *Password*. Should be stored in the <>. Required if `hasAuth` is set to `true`. +[float] +[[define-webhook-ui]] +==== Define connector in Stack Management + +Define Webhook connector properties. + +[role="screenshot"] +image::management/connectors/images/webhook-connector.png[Webhook connector] + +Test Webhook action parameters. + +[role="screenshot"] +image::management/connectors/images/webhook-params-test.png[Webhook params test] + [float] [[webhook-action-configuration]] ==== Action configuration diff --git a/docs/management/alerting/images/connector-action-count.png b/docs/management/connectors/images/connector-action-count.png similarity index 100% rename from docs/management/alerting/images/connector-action-count.png rename to docs/management/connectors/images/connector-action-count.png diff --git a/docs/management/alerting/images/connector-delete.png b/docs/management/connectors/images/connector-delete.png similarity index 100% rename from docs/management/alerting/images/connector-delete.png rename to docs/management/connectors/images/connector-delete.png diff --git a/docs/management/alerting/images/connector-filter-by-search.png b/docs/management/connectors/images/connector-filter-by-search.png similarity index 100% rename from docs/management/alerting/images/connector-filter-by-search.png rename to docs/management/connectors/images/connector-filter-by-search.png diff --git a/docs/management/alerting/images/connector-filter-by-type.png b/docs/management/connectors/images/connector-filter-by-type.png similarity index 100% rename from docs/management/alerting/images/connector-filter-by-type.png rename to docs/management/connectors/images/connector-filter-by-type.png diff --git a/docs/management/alerting/images/connector-listing.png b/docs/management/connectors/images/connector-listing.png similarity index 100% rename from docs/management/alerting/images/connector-listing.png rename to docs/management/connectors/images/connector-listing.png diff --git a/docs/management/connectors/images/connector-select-type.png b/docs/management/connectors/images/connector-select-type.png new file mode 100644 index 0000000000000000000000000000000000000000..ef5825b14931126ca39048e7b75921fd775b36ae GIT binary patch literal 327833 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%0AMMt_#)C*f1oECAtXIFsz@CoF2~ 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∓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

9#riY@B55@P*2z5 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%0DV!+5Ru8+&=B z2x_<#-H6x8YQstFTT8@XP+#TwdD!iQ(%GDqN-w#edp3~E(@L+ZqY_VoR=8f)$!-W} z)Cl1@W>px%fN3sizDK;N<=;9Al$TWG3bu5B1F}UFXGVTmUroZpr%3argJuH8*bBl< z;o=-2*NRLwLVdn({kU4WR?N>koPnJvcj=D`4i-i268U_ABo!drfP$V;djY4G*1b07sF}JPw@yla6Tb~TiM9)&E8)MHRaC6$O zs<3r-`B$R*!EI;|ZN}K~-P-k&;a9Auqg$AM$XvZl%znRrb;*s%YP1zlS&I+Iey`g& zK#~ykEIJsYHvWnI*q*&yua+>25hYdXhk(0hsg~+|ylcA(nSC5Z`I$VPfsF?=+N|$+ zwdxbSPWA{%g-3|OIlo_Up9}oQs=1$S9pQh!_pF55$6pg+JZr^#*gWGCJY0l5?LcTi za&nI;9kSoUdf*7?z0p@Yj78DI{ONs&&G+wpl>6$uax>1t-|i*75ruoiGvzZQ!IECe z*t0OR(3*XRs}l}1Jn zq!^s^SnE*jV8}I1?Sn#D&Z!rkSs88^X&yEz8n<85J?b?sLk7-a`7dcNhQw52#t

3M$@{usd$i#&OmKDdjnf;y;^&aUA}20gRg&F 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

+`T!qfRkMFLyTo=(c*rSq%mg;( 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 Ke%?L37yk!#6pX9@ literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/email-params-test.png b/docs/management/connectors/images/email-params-test.png new file mode 100644 index 0000000000000000000000000000000000000000..3745bcd3235e9319517f6190dc2bcabddab1ae0a GIT binary patch literal 173053 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

}Z z=gQF-5sKpi%SG4wU4N9z((@+9oH~M({>lo8IsH!BzHx@J)-o;)W}GL38k>YVAi>~$ zLVd#cXtw7@Ku48!Ro{iA!ilqm!6|;lepE^xxnAc4r>fR(@1*B!=9#zSVe$-_hUu0G66OMFj{QPxRl4U}b z$)#;M0(C09Z0ekFN#Ogah~WtY6_O9-s&<}>-I z)xoCOUchqy`#3JuuW}W`GwO#hB;@&q6bA=iD>anH3w~8~TvLrW6~~Zeo~yZs-*90$ z;7nH7B-(5{LN9wHm)t0W?iUm5ja`f$wMrwOUbu{g`%H`OjFmiA&0buacHv=&upoa| z1njVy=qI0s1if}F|5OO{UEUH8;SR*!rz zN$8!uUFp@QvLI(+$5~nT#LH=Z;t0o|vIa()t>nPHiP~;xTHAZ^=1k5_+gjO z$FI$Ba&qr?tPNkO?y`zMnyi8Z*Mx-HKWJ9ERrgbAF4iAn_hsQYUU9$I?~6jG9^gp( zEJ$jF*sOT-+0V3871Gl!3QPFB_#ULIW%3}}KQbD-V$2HIdO7h0mK~IExJDeoE$6ADHxSPWfo-n53PN2yD}dmur=F ztZ?j25(%+{`Jkj(r0$cQv5$eNGVfpw{c!@c^7ZO3H|_)1z5PuSB~m3l5rBW^`7?_( znNLX0Ho8h_Yh>VSd_%*WYDqm^pg}mS_*&l$cqh*xW}ulWKprS&+7Rr+<1Jo=a~?7f zi%+vF|HW=n^Ni4@>0~PofdDwr_y-OG3?(7SZPVH(rd>I1AYxBxE4r(QO>cH8ayhUl zy~t&j74@0E`-M6($J(%QDc~G3@76DTmJf`!k+}W&3Dmyc=K)-r2lkN}M*fb1O`)9M zf=yoBS0!4R^PI3#qHfRbmQYh3}d&|=^>14Mna-973a+W1T*dvAn{_;DqB}dpPX_A(A9++pcQ3p%v=*iZ%9%-2p zevVzP(!Byzu6BwIZL4yQXAmiAj+C7pPCDO$U)+ z%<%SoW1iIE)lQ*vCa5r0I)fbf^x;GY;?Db>+G9HMy(^L`^Xa-(UPO)Hpj}Iz*m!T( zwvb81;{xWUh91O4Rp@#QQH;!S?h$PWSG#Abl?XND$t1O&`GGSU~dFaG}Xk#m7 z?VZqec6XQqVXd1ZrA0z&!YhnCuz&l;_Fg8fgSVm~wnOKYj^vN+vijOiYWu4~zOsS^ zwrBoYJa6O?S=!U-I*b{U^Z4X!Q;11`+oN|cJDI9jjLrcEJonoH8_Jtn85F#@v&RSD zeUv_#@<}>2{0H`Hc;j}zpRZeo;5jG_W#NaPVlI#S*!Fe8Pjy77Rq2W%o5 z0@L(r9?y;W4=nm^)V)V|JGb=hX4*n_R=Q633JqVRmc z`S<_?LAPx3W$DID2Fqz?VFk}!*E^M4A*Rsg08&uQWRX&ih;`UztEKDKLieN_QM>;E z-oSxnviURf-XagMfZ^MHxamcz#nZyAc86X47IJ-s>^r1f+w&Tl)g-SDrKle{0?~Ip zcb`gy-Cn<4=@wO=5v}}g*W4O5A%$^AKIv5A&xI>^SEBhww!iDNwnzj+Wg_gU+%kSz3^Cdn^D_p~g_i;}-XdC1&1B@ap(1PVJ&!pS6t z7zzk!Nwe{$j=COg(_a{@7fs2@16f9%{Z<~9ms&=3RomMk<4aHljuo$`W|b425*iqh z>;hc22{9}rh;KH@dSR~%N&iR80ZK6`$I__@VdT#m4jLF^!=*~3RY_Qm z{qlTu@KXs)OIDRSW6qmCZpM55*y76*F9rlB3(mHl!*Fm|aQBO-V^H5HTrPc*7xR;e z`7^8mkFcbeCr2EoaV^1k`pKg5tDT@*tV7hBtE?r%o^1`hap8<`Jhe| zYOh3cOP~EC&u1SyM0&BqN4hA9%w$&EyDL?*zt*}0&t1~Gjm{#lYw270m)A9?7#HLZ z5X{b!;E#iJM4S8!RMNHXkl*433f|6*+xb+eDI9Oz;7fy&b1`|*lH@pw4nya^eo$H`8wX8QhOxo)m%PAlDW?RLgqjyx{BboWmzbt|y_-{od{f{^4QykSV%dP@_R_g&dlfJ`L0ldDdoN_#jBJ``c(C=gcmj-0aF1kbvkeIZzK}+k+k5IJ8%3W!@$tj&`$bmhl@^u1)?-3 zHd1dCOL}yyw3Ovx3I$ezp#d^!s{WncQk@7s#M=T@@E--A+PvX#Hb;YvX8xoki)O1;mtcsU zLGDc9f{p@+)Okf0Xe$rop4uoBfWGZq)P5Kz z%I~9j8gpl3bRY0yWzd`fDy^D%n@J?OE@_jXm#JoQ@ztoOi|Z(al3Ic>-njEIMa1Pp z0Hr%oiH^TYZlUgMr0DFDgx9xwJna+!MaEf4kUTXp-5Q{0$rhV&UIX(%&g4)?;`i|X zwdxmJy@3zFn>JsctE}V$7QatIp@cpg-YWcpoJ`P|a{P%yP5Rx@X63*%myY|2W|gWW zxjz>s9j!CB*l9jLcJ{UV1@Ou07nkUvzDGO027p)x%rZUC88Zwn!(u7VA{mp)tpRFq zc1fR64xLFk41v{OQsnd3+Bm#!hE@m#_F+iC83&f!?MWZ_Kw58GIg~&7(C>{?T%=W2 zp6k(mkHQdwQp~2Bg_oGw{(!FuKC(SG~j`#^L{&6d*d-gX!|2!@wo5YtjS5=rTNf zBg?^JTv95+kMs8M4RtzzS1m( z|4>b~At_ndg7h`AG=|<+ioXK|XE4X<68}s7LlE`IC7?-{^qx8}D}72TvwQYWGzNC( z3hSY9sg*E@7lyNPK2p%Q{k*zq0OE$_r$Dxyq6$kV4+-EpuY=Vd(+mqa0(n}0*&~VM zo55P;MQjiA&Yi_zt>_zWiD#bO4SA}XqDt}(<>Bl!r=qSi{Uui*>GwcZ?}dt`fF@`T zU;S4|4KyL1_E7k~!V2;qE86IL%5)Z52{;k)g;OH=w{5#Cipbr$xsp6N%jn$1HD+@csZb~n822}XLVJV)2 z^OnIF;&{hyqcpLqu(nz7Tckr{P3=p8WNt-HtckAI^!wV9A=?2oPcJSiU&#xZT{3vd zWbxb8l-JO25jXx&XZ4of&))fOHib5#95=uyp21Ixl)CS)v@7o0jt4Ko(aYHVz51;_ zjQneE1zF4~*#8_VkeZzTH$c`>6;uo|`b7@2}x=$CZ?Q*x}iI8sKD{f~X_ z)C3aby4eCQh0?zc%O&bB+~uTs4UC*kek0;bGCNcO%?aj*e5>FV-ZO?G@v)zoW9rM-GY^HL1u% zFp2Je`ek*N-+RXKKgkRHXz(He{SDwvrpmWEPhLa8)d%SEUGd(L`>+>({6O*VAF%mv zn_gN#rJ_YaL#)^zb!_A!wn7&P`+j^?JEK11E7_MzQ0ol|dj1oqYQKEVVOA`kI{Aan zd*O3d-2tQgyMvv_o{Md7Oy)D7Y>GSO9l_?&ga=NVy$uo_@*D*3MZ59OSp*K_j=f~N zlJ6${&uOP}`SfQcY=Y-A6LRXzr#nh_bhc^0hc7_0q!-s0fnTzHB{O6hAON{v!tV6S=r#^8M%xV}gCf zJzdW7|+EA0Jq18YyiIAf#y1d!>4PQ(K%%c}J2VKY38;MZ{ z3fs8J0Zwm0p)0ojt*-C$Rw`^lW(yT_k$a50pMn3nt?Qew+HJnvCt{wmOW5b8i%{J5 z^xT`b+}KB&U8R;9^$fuK6v>ry$UVeP$F=ga@FK&g#0jIjAFlsjgL8(SrR zxIO=iT0n;#R^t9oHx}5}t2B3;YnAm^?9x&o=cw*b6uCWj=M&ly) z%S_dH zWG2j~qRlR~pu%?f;%ii@yI3Q?-rQFqjSm?EyFHD*F-or`j3)~{Ui+*id;;mzi-Jo}goF9ke#mtwmGV+T|2p&#TcY%%9AaAc5QQh#sFRk=Z0-Azo2( z^rNRHr$>j#D*HCZA=mYGK76YeUAr!j$g)zs>d%0YG^*^4P6!4Qsf#wqedxdxWC7M7 zHQ@t|ki|&_W1#OLT<-n+oSvN~yRnujUi!K|%aX6wyBmtpBd0Z`*Ebpb(mV3H!-qlw z7za_}WAFB?45iv*iqZNCoPMn@xf))ixCEV2 zUUoSRSlwa`Z*Fp)EE#fNe1giFWaj#-?wffFcvED#9SHQD!HE{s&}?2u8$Us^gvoo+ zcYi_5Rr>|q+fAGK5GtHV9Q0W!4++drEH?98KoMIILCI#QqPmjtQXRvn)rKbxE^U&Q z1lkqS%=M&`ImnH!yvNZG?;1C!h?RiZ{!dJP^0Bn=Bsah+vdr6-SXZFZvp&{Ruox&N zoq@NNgz9ySjZ-P-sF;H3*xo|rc@(@|72SPrp@yB+LK46|Etm+@ht-sW1tJfzOb`=+ zm`On(9e+%tmLlmLhn778>lmP!o=RMyO1W$E)3rmZRZ*4_=?pB*1>_TTQ_2ArcQo|K zX20d_$L!GOR&D72Vrk?SH_MTiIIlPtp@#R>A#A_RzFJ>1QT4!8RA z>&UFVuPzq~8{G5jp0( zu6Q@Ek9rQaPTw^_>h*MYd#d){uWrb*&lLwd8 zFFo(pgbEsZ9BAwkRtAcx;dUrrIl@cw=XDX%nf*i)7G7Pyt%rkM39w)C z(2(XB|9kT{D%cer=hSzLNn)17q;3L1nOD8 z#-#O0=anG|KD@Z+s{xK{77nGOEyK=aP|6H$B3N^$NIl84;Ar<81b8N6#{m{gI)QibVsI z=%ponsb%Wc_c+fdABVJwezHqdEjk;D6Y_HFfey3ZBdX5qV>|1J44C!;s{5i7wJAvn zsP>Co4kf~%vh9^m)GqL0FI4I}S*YIZQY?15Z)jgXxy7kf#I_m?N;gkAOUb9-m{B@8 zm4y2sk{SL z4?)Gc)f}Wy$CV501!1_AJqJ$j2cw%|*N`j|Hf~)fVOVC^0CUW_24&ON*Qy%QZStp_pD3TB5BFM+sJpM`Ck}l? zz;+-;m>8O$t6E#r@p5j2eJofXT5vLSpAYidR*{wZ#)FuEn(QbHQaliwb7>#Q%DSe3 z2BovpO|K-m*kf?Axze)}&U@AZfm_g0d#5`Nt2SQ3jR*ltU*Z&=_~r*0kHe;WVgq66 z&r^nWG&o^khDH8Kz64%Lqzmjj3VG{Q=!So|*DRQ;n|L4oiH!%}NSzR-<{N;&+$!j>A_s4f$o&Alcbc~tWrLi}?uzV=o?Ki#a-6=+#!uVZ2ul>>pMIqbj z-kGqNnOw{+j(YJ&{=JVkLOSd^-R*t1IwbYlUd(5uAf-o>!Ypm0H3C4cWv3@+{in0DuqmcjR!dJwoms%F~OBwIb z1!{uV88pfiA}F2?`bWLhDYt?|9LLWRR8To0mt>f zyeO@V8Lz9aw8BLP)!kD!)?*eZspzZ*4?gQT^-mYVaL`?x%#55s z5Qjqrp96AoJ3)m=H~^BE|L*8(1@Ap&$B2?k+;qBzKYBnbf=slOl#e+WBnETXxAT-W z*7?A_V({-3<_9-s69A;*T8IV?yDscsM!c)Hq&i@wOfV-Vo@goI>5#2;$!i!q4oz5> zRI$k}hQqymW8pRAK2l&WFdmqIAC$Wrxg$JYQ@`@iqcFkt{Z`99x*@y5hlD$+xVVJN z)3Ei%vo-6zw>h#=#?klkluEgaV)n!R{dJ7te7T`(u8&H`zI-J{TB_H(z&8U{ORHa9 z8iJ2~52-`$b0xyOmpsCSMkiCGuHef-M>bZaCBGaGQDC7PHSIXS7VZprbmWbCFJ3W} zG1<{U?b+e5#ZpuBVlJlbGPALcc~RehU)(;Z?$*kdmq2n`hkkQ!itv+ZiIo}qYPaKX z|94bdEcj$OsKNaH>+b$6zdv#TkDCGab1q?@lnmW@=MOG)f65yu>be4qBd2538oF=0 z4D;yr9O5V>Yi5*eVVrA0Z-F}#cwUXVton^t*f`L65U?u~XIvA{=si)X%m5^)(~d85 zX};+5^FO-_H@YjNQZ?NNyHsJjDa>HTv5qEK%ivNE>T)WJj97WxQ~cV!RKG8HY8sS$ z7f=y0J{WLAGjKQ*DH~sxF-qxMSH_RuglBn9KNu=bX@Uh5&9HwB+Csym5X<*^XT4Xe zcM4(Km}Ioh3uXUfTgPQbv%vXI3xQNj^z8D$MmQ46ErT9Dii;e7tEi*jsL$5Og?NfI z0F(=|hl!TfpZ9#{bqAI|q@?gf8(DmI{nYIy17@XeoucG=sOCG}XTf6`{f?3*Y69s# ziy2HmoweX&{by1xlk>NZg9fYLI<5#e5BrTQ-Uipp!^vv<^G)k+XZeaCQ1IRF4)NjZ zZsKY}`MT?`(l07JTdPMT(^W1b9rnCOj8_YHV(JuqR)4MFbs5L93p)f~NyacTuwS{r zi5M>3c&t*cVBd%)Px1lB>s2^0tKpg#@004SKKe$p+#B)c(Z^h{VNy2&0}9VJX_;@G zxZ@Nyv8Uzd{8F^;wL~yAx90^1L25{|Y6@a+l4nXaE0mVwYP0`yuwAbN5i!;6^C9$> z9@Rq+YtC+U4w2QSm*tKe<5hp<)aCJ4<@~>!^>2P0C=bY|Yw$-o8^MEqO#vd{G#`qA zbR3uvbSN6%Gx=8B*95S~xRNn2 zH2e++H7Bmku|r{J8r7WA!v-!Q+ng@}GH*7yGWy1fuS?1I06`nE`qUO$ zkt$~Hc4M2(F)(w^KlU9Pr0^t&pEe<($8;`>eH{DM$j!(I#arPTp)0L9h;(VYxFwx^ zR!h{VmYR?~XDDYQpM`}jZntAvHJTM>`%6^k5%x*Nd?sz_@J102LFeFNM+n$H2SlYpN8$@~eQn>@T%>dFG}qt^w|II>?fCkKmG&4w zGvoi^w`?mMgX#eqG@N4hmjN=74A6)FpZX)986X>Of$TV!5^jMUL$fowqolYmT)A1B zhnooX!^IXP?*w)fG_GJ0N!-!3jJF;*hB8-0(QKhl*w~r}XwHi;b?K z>v*}IsA(UApE0(QNSlS&$*v;#2@I<3>d1wT*K>~Rjr3sn*!8l-oJwr9Gg%tGWnb5W z7pZ7t~Rkhin3;Z+Z3 zqxl@I1Kz%-YmB{X;|-ehUtcGc-Wbcc*v488;{8R&|WMeuxg)286mK z`w)WG9zP0roLoN3@HMC6{;%Y#&5Za-!Bn`%mica4KVcOCW#{(6L%r6gz{V*W-Om;Q zesnwwS}BczPEVO))dRAUy+ORWsIyVhK&I(rQsU$q?dOPv*|#MC={rp}1br(V`24A| zQ%`KAVWJc8Nn4})U9rm>6}0PeMuf%C+8Te#mO9oU#81UKp~CjJrzl}11_RXVwV-2v zZrN|yo-D0&lKJk{KeCGc7w?nO2KEW0w81|a+x15*_mVj&Y36&SCEBiN@%^Z+wSOS9$YRquDCYNG7*IQJ5?#cY6v$k zxLtM@WbqQ9L9SoqE+(>45xHMsR+|94v9M%XJ%sU6^YK2f8yttY!_=sxJQ z5201tSwxFqv=G0uV4obg5|-g->t)=qVTd_LP1(|_WM=Zf(P1=BuYvx&1cRAuxXzQfL9@0ii0EO2drok|{S+wULcz$j>Cb0?H|*hAE4~)0BlUl<_ugSmZr{2nh!hKgg(6531(gyMq&IN^B2rYO zLqtSCnn(BdQI zb>R(nJ|B?nklJ%h@M9mLKUWXVuwqFagK#m}`!vTV__0T8(>qWhUxw~PL&B|6j${oq z{682tx8n7Spkg!@4YWD7dMbF>wdnoZ$|_Qd^H*UK#M2wf-bU9GWEjqR9aMCmOn=tj zm&wJ+i5U1gFqjC>N7E)c8hDOt4VMQN^sMfVZIFk%anYgW*(0TcP9$f6zIg^2!mFc? z7`xa}Znj1M49LD;h1=tVkvldsQY(WmIhfb&i5@uTX`5Cg&iqb(yvqEE`CN&*aG`9B z*QVCMt+Jfs2XZV99>cqHTX5yXG6BtCx&38P)NtM_=Nvf@R|j%jA*n zuWG3fLJ+;Wr$5?$EcfhRm_+2AsOn}_e8eKVP&fM#r-w5AZvAR@P2toI+PM;pr4I*^ z$u?BEpg7yvt;|{X52=u*=#9<}V@;n(Z0X_T?y&##3IH(}mq87>@(kldz2XUlZv2c; z*-|Dp;PoxrTAhNSW}N@(M09~M0Q@TM@2SJZM<3K$w_j~RW@5VV1a$q&%-{}7+=Ge- z407QtYMU<0(sA<#xB}ufOS3EKB?yV2*AX53AU(fR*4wNrc7eF6PAo-z@^Un_L}n78 z-4Ne{lV6`5h{_OemKhm@4LKCdxV=nvC>a-DJ3n;#x`iDUE}ofB{AdyJwK)^#?4i)J*3z>E8gj)Ns>L+5 z@HUoCQcGP0GvksW#P**XQHH5b_{)IuMy zXtV5md)>m*+zX`VCb7>$(N3xBkC9G|p0wMZg)64U31}Le zT0$89Xd{DKIyGsON`cZvN0cIbPnFWwOw^o8yYq8;8RCiI;MX=J=W9T;O-e=%`yb;7 zP;~s919dS;xS4<+!x^X#$J9II+1{NX$JdanT#WyW5hf@X%#Iq&O$k2em%&M$L0r2s zh%TI~LHV19%1JrcFR!Q6Om4#pb|xL)+FYo~42n>0bC*01Vu&>Y-*Ocr;&b9o{aHla zr1873k9B9%AG%--1oj?2qxa}x4!&e^1`1tkR+Y+PVwe!URtfaY<76t5&@8jXdL2-d zeC7qJ*m5U>@$!*=P)F8#%UANutM$Wrf!P?T{93Ih1IGbjnDdUG-~BopXz3n{ju!lp zw?VCRK*p_}dh$K|I#d<1$t*ohAm+(bKvfx)FwR&O1ZQ3!!E9|fl3r%&qaABr-;S#a z{tnw(ipJtWc*fB0=>cjPFv?;t5Ab{@AVQ-vHT&N4da&fZT3#PGAK`91A-Df{ikbQ92YD~3GD%#e` zu!1^UcY^eG2i@6$h+<91{D9hj9Lvu&x2@kEGXw#&O@ed-=uJAG`xdj+L1U~+@Bc*Y z?c<+fM5s%_?;<#t7b7~^sTptc+p}~32o<%dfaTbbIhQ-5fT4=5yq`>=P%`;MPXs+7 z2E}aPiNr236q7rcVxURN>i*S19!h^U$6AxEHZP!7fZ0Qabq0R%H9LpkyaJaao1Zzw>by%>{^B2Q^__a4L@?w^btm zmaq4jkUn)!JJR+%3i$W7j4db9Lf(mJfD|CA@4Nd2ig=aoyI80%3%u*Mg$lAQwI*O^ zo$YkcV6MGOiteJpR-@7+IBBQV#P*YEXwg0in8RPMcqLFMO;_1by#qaUG0;hPS9qOl zH_=ZH5D*A#^q}sefN?Xj-EMr~Z8h%PmOXY)o7cW@@=u33>|yqEs%&@Ho@Ov+!z+ zn~dK*_s1da{W>K#N(bOmdOC-w*}0#ze-@yl(@(i_XutM&soS{!fhReN_inBzI8|I~ zh^v!|c5=1MBQ`9o*40Uf;v^QL9U|R(eMULXx=ehZ89JDKtNuwwM#cqf%kb^gbY}VK zJ>9ODgwv;_(q-1*MaDMYK25uw+1udm-MJ^XSpU}ekw!K zf3bJxVLGOIS#tDw)^z~MP%Z4GW;}Hl1De2rfB{es5N8o23tK|ow=+4dbO)UU;73JU zavuZys6QZr)Hz$S1SuVWhMm-SFSC>J;&5z>2hg2ix)R~XO=Z?F_3>x=&ldOx(Fk>= zho=t$JTXrd;{jn|X8{{jE-8?n9GYhc(7c?_CmkaxlpYr>nOFksG8%f_4&#r<$nnh} z4wen_)ADZa7ZAHH&hKf?U+g-y?a|~t#XaD8m?e+TfF0PMUp6TSp<67s1x?L#6lBtV zuKYlUvhgB#<(HZs8#@`lWluLb#X;P?dN6Amz4(zFjd=Sv@YsMd2fe?ous+!(g}~rk zEdwuV#&3XOCxKDC@HfMb>>ED>Z@eewfZHza7mti^E)hS96iW*g(%U0<${m0d#=U5- zQ?nmzaSHR|YfA{11_H40*MEU`YJ zErthJ%#P$LlO1%&2in|X|KvA<2?d(uP8%K=V=4PfM=7iecOAi5Z z>7h?AAaben+!W;}K*Qex%fF1=KThs&ri0xz+<1|zM-eXw_|*%0{onls^=puQ-EGcc ztIVPRBX7CIz*6uk7DoU-GvM|)gl;nYHGj3h;-#0%--wTE#D(TeRr^C#M=s!UfSB{lYwM=aFa~8k@`49@slZ$Ld4QHerb2Mf{kHUfTg~lZz;8?c*Yf-i zwRAe}7x9LTmOsutC}-dQMLAmuoO`8+W>C()$R8)C2!cqU_5z&A|BEpmF!71ehc5qG z!hhMiC!pDn^`r#zf&fojXzYhKN&@xl@?X@mpI+oPCSU=SOsG;QjE1 zjlToD-vQnaM2B+6?*Q-rf&lNg+b0vUayS0Y>%pD)JFnlm761R2*B3kk(roW7lhAdq zO|rfpIC!J(Rny@>vRVGl-PE`0C!X*l<2cRHp`piFklOCSHFrTW{LL{o6$|pt4$*KR zW+y^?`AVMHs_*=a`UZhuK6>BX}&`FMlOYe-2Ea= zLlM9{RXpkav8K^XTBOlL{p*AR{hR%Bhr@pLXmMV?DkZXmx%xMaHrDZ4VuIT0NOL}{a(*MbuYyf;f3&c}O ziZt~VibI$M2>RQeA&dWMpLlA)B`E9Y4Mdy@D$K5Eu!>)_KMDFj z_d_IZ%RLU(aKj#~(`90m{YN&)lGtKmweJn>6F|!2(=i z=Y0`+&d2@kFGlvJoKARtz2eo)*96y;(y8&KgqHe6^@J(&=)kq7M6tTf%l+lN2WK~$ z@Tw?=Pe>XR7g2t8<1?NL#c+la#Xtc6!@XfW3;jPqo;3}{5RRv5`D`V0M?_%Pkz>fF zuPYC5?M_SWcG(sqguOPjR@ejT5%^&bS+>dG?&7oSt#65irdBJ{ICMdFI%s0JUJ-_2M`*Z4M}k961R z6+E6oNtpqFASph2&w@`MPs>0Z2P?1ss9#3aC~L}4WnmV9+Si<3f!t+J`6 z@P`c?oChlTi3f5!&|A-QOM%0QG;BEd%-5GdSY5LwynmHFJz9wgM21NzFof9n%7ceo zv-7R1!0*$OyZJTNUWOGg0>wl?&9Kr^CCk>>is;qS!AT>4W*-vhA>+EzOE0qa!WG{fd z;>}yu`UX&6z3{J!R=CE)|H||Jib!X-VdQ6^WxVgBXHM<<-Mf9YrRDpB)uE;u|)jUkDY@vAlCICxy7Goe^ z1VGp`yT}5_bd0RQJ2a^1t|n_vYszPfG8Pqu@AMa=iWkr|vdb-Z=X$UiHNV$?=pq2; z7QY5B*v5;m6VN^Mk}fzij!v_@j>Gs%ua?I~*cy zzQxuQLPz%r8{KPv@>dJpUKN0IJc+vq>>(Ja*(#6yO1(D}oF3^U8+_GPHEOy02)W*D za4x8LA?Nr5SNydWa2eS5Mdi#8C$RHVhyL@O2hgM3OUStauH%zmiWPH!?RCC{?R~rj zeohxkk?VYiY*hu?H&CVof!~v=UzxrSSmm)GQ})qY0P{R~`@hwyAgiDG-?DnpKz595 z?GzA3MIbHBMIB%tH-Xylsb7e=1IC0P@FS;9y!gQz16}RW5i4>y6fi|r=)iPum03<5 zATRI^%t#rmGR)I1CK}Y{k^zrGjci;2h-TNJ{`s-@Lx83R^t^Ta$;+Mt#|a6Jn-?u> z)3j(=vs94u@ z^(!d4&4D_|ul2?u4SKZmbnGjr+}0Quoj|T$0ygA2FilYQ-YOFQLh&9HbXmYEmyP8* z+Jh(~_AQMPpBcIG2(Y&Ym%+NcO%4ZTaiCYPy}yW@Y%x?PgY?it$2(evTJuQ`FN_x5-U>YDuNB>CTvV{ zn?~3rr1?U*4yp^w!Uc<0SM@#KQ{VVDL_JV1AatZwP#UfPe>OwTwxE!C1KeoS(e*Ah zODhUM?{n#O!9a%P;HEVUlZ%QCxW+HU8l72YWn0>IBdh$wo_wbd=HxHK7jDDz?qhnJOD^&T3rEs^8Z_t{(^TmFrMjg+{a3ojZi; ztAj)8TtRxKh~t-|O>%rz310=mhy3 z3`#aTBzqm-_>hH_9ocTS=1wx=Ux6okk|UHtmPQTMgZe~>hMR)4T&U!RU%_(kD7zc| zmt~byp(F5amzVEm=kHUUDLY4g8LqEFOX@P)mJsM_i2_5WihMnC1jN5#~gvXkA9;<@MMs81Umy>f}7(x zdTr@B{_%o?_lK{&<*g+x>*_T;UK)puS%ztpz>^-5ErTKN=ox!Yic)*gIJD$B z7|QPJvRo?n^2-Q@wq*O?2D|`YS2@Ub@ii@dB&SS9{vY0McnNXwF7lZhQ?v zKa8Svi8Lzsz^B9$q(bh4=@_l9DpK^jd~C_|JX+?~>0>uf-%yFlLx0HHNP12)T3vXG z{GYKN0DJb;ylA6oe9n*8A#`SjXRgk(^vmUhqnexDMW-$1@0W7QXw!E4Zg4pEE0e5j zR+|!3tB1ZmH-Gt3@5xJD!;{Q#@2tEAw>u=d7^emgM-mkSv+FXBYxDZ07|Eb~eujT_JzDpRv7z-8}iU%ID zm*(mj?KIax@v6Hbm`V#7+?82f#^{Ldf7~8c& zyB3#f9Vmf-$GQh-jmq5K$S6{>Q^gkOT*$Z2_1O%*#1;i$584$(uc1Ri7Z|#&8ZCHU zFezSeAWh3mvyxUO;o=wC>p&)R=5a%$&)F&Op>nq*ii$ojzKoxw-a#${-@z+>?@on6 zQjHeID+P6g)}Xp!t}6* z659lA`lrPmbIGuDi4^;UYZPV==-a}wG1BR?o|X+UhY`|Ci;`nqwCEt1CQO#kj_?J6 zKNxt#Tf2qG>k$aFO_9EE`VC*|2g$UQ{^bjT#=CxY2X9c+DmQ_q{suBki!h(JnI|~q zP(RFH6^YBeD2S?B)pxEaV10RHX+AZ3pg;Lm6(*c*uU!;<6cKf<6uwwbO+(q z<%o!-Vf;i1D;)adPU@A*KJ>|F{BEfW_OTO2D!c3?5T-0CAoNsk(BxwW*WEM#$Y5L@hM0CmliS)Diz+;_mCJ6z-?yT`! z(N$FsnNJnf8Fo$Q z@J?es!{bHHAbHDJ$J@3!O*D>RtVNC6zD@gDy)%iKPV1eNBzCVdyqvO0{najk%#s7C zWoGpr(s^@lTsbleCqC)ldadR-q=jG(B#rTh^enY&qW+Md{Y+(8v?9sV;SSVj2HOWi z!;qXy3$onJ?w5$J>$c6dFNE^i(+00Acft|uZE$m@6=$IISq)^Rjbq#g)Rw@^TGA?d zIYi5wkdS*_chFCju=-`SX}_wtIHqOUEYMeBxz`5cA>DRv`+Z0yAaaz7?pjIN*u5UT z5ION^F)ghXn1n17ZQNaqEJxS)xd+o{Rfs^0dBPGE%te^}m~_mo+tpmKWHu%(sQi#( z0pW?jU|=9;?_wvr+mYGU%qq*}4IT3ZS-X{$NL>1n%mM;(Zjg(M2|;Lizu;^)eomD% zZ<(bYPTAbWU%x{wTXQ6lM#UVy;X710H~nB=Fu2AF1BwD?u zc^XQZcDRwPAu*l>C=0aPd;C9tWMXxs^ha+lTr64Gz(%es>cQ=mVsc2*YpkM{E@&7A zA=ywc@z}7-OB{KK3upF_RpM5|q*3om0{dVY|F`t7cb36bFjPH)$+Y3tTj#y^wCu_V zJ1yt;MREIrnQ!`@uQNQW^ETf1-_pQ{uYq``OzM3<2x-aj-SDO*7O$OIt6M{w z+lSd~5{=7ZGt!FZt5)liaWC>?XECaS$)n6Dq=G_9m;jFSnH?&tjG4oTPM!#G>GYjr z`@?G4W3?QyvKq7iPQTt^MJw0R(p;^$l1s)OYp8J8XY{hGRTz;-9Ci~xb5iAJWsUQ( zqsNnp@w35;ObSN!r9QID?Sl_Dx~!*i3S1HFx{g};-FI!KauzbCXT{`PTd(Oo-UC}z zuLG+8x#mEZ=ao7rrlK)@TMA>q+){ zz;PlGrZ<;a?vi{7iSDHR5=@*}c*ur*zPGn$GShl$vHVgCmZIXImh65byM??Ye7P1b z6EUYex>8UB-i_fQg_5VJg53P0cJmdtm4eJ(@%4>byl!ZziFztA1Th@PvGJTY>`CQ5 zl4G7hfw6VFCn3~{eyysxMSrilHi_}+ZF{zA_o@?h1U+ez>%^x!$%Eq z(>=vCn9$oMG42`9+1Qply^yQeva;t>QhAZI=*y=TfYi$b_ogCj%hvnAq-= z$xyw7#c7W{E0Y)S3DF(oU-HG;S3B_u?eJ}($BM<>*scY0{SjSo0YwF^?_HN?&}YuX1w>s>C5MLw&0kxLluVo| zZAX!aZ&znk<=X~}CMDX8++rnHVnipSJ53#ys_z0r>s@Pbs|rInTY+gZJLEFbTSc`P zE>W?JuP!0A@cD?CrP1uk==r7eJZ~GqOw}N0dpPZ3lsDh)glRpa6UAg)w%I9gqxqeO zz}>hd1JqQI8Pm%5)>bBgw8emR^_eW+nGVZiuW2Wjt<)uEN)|G}{DXWyuC{g2CxA`v`dxW2x@JW7Py`qF3$-s77H52 zX4FNTYjpZ((HF>NzV>@cBe}Vmzc5l%md4}Lib3Ev=4_oZhKVb^uUWEVZAN9qoY#ll z+FS(CVF+)Wx0eI_mAJaZZE|&8>#K#MXktr zRWU!dkml#VWW{kJrI^T>x`R$m(so-y67UkbOl%1+1>Sm5aP`xq3LinO4|UG1M+e=| z)pHYapIyz)eBpa-95)De8XHLr6NOQMgaS585Y*_*(GxYuE)6GZ(Qv zc?1N(V61s^oU6(dsSw7@87-cK;K6l`R3jCf>6G<`n1Q8j8PiI@XPvHVVPT`3M!&|-%Eu_@Pv};qRppXNoBUJ)tp?Z zf;+f>2v22gp!CnNuUIMbx>I648XIMpw?0t(jiSOAxvAqleJ@k2v_X~2M^Ldon1ffei&(&*ZX1CXLCVXH<{A^6#jj_$M>$%q{F+d zMaFnZr5NKS!3hkI0K{(Rbg`O3x1Wf1rih_S^A0u2K^Jplli9xHQF&H=!a~!xTi@@1 z89VEdV_3M?wam=x`xRfwwMrA`WujAj9BujU-5E1et$LL94j5~ z&01HS=M*-=`ze>m6)X4Vx})=v|W*!nF2)X*`6;~DnSl`=Ix{T-Ri+%3f_)A zuN%h28)D!tLj3Yu+{mH7tqrUEA{mTA6 z_UtJX6^h+0ArifZXniMTp0&ZpYDd#VHA4X8a6LnKC*#P`roW(dfGYfecv!`^0*7*d zoya6JqgYCVlZ)!!E}-ATO<^_s)WO-9*Lqq(=QT?uy3%Y5Rpxgm;-*oW7K6ELDc9)z z!Tb^hNVb_X84ea|;QYo^S3X%Jvea>>zIFhSrTHy%Wl19@+Tr-xd$NBsMvV)VOjnvS}RQU?Hye3VbOtfBRlM3W*#-; z$j2p1iheL#@DaUur?=*)i_JJo3oslD@LT+ndilkRt(sJH50>I?HN-IKnYg%k4}N|y zFyl32JrP;^4}``(SfpDv+!jjaf;BqvkZtB&qz z*u`m#z%9%@hWE5_^|*DTR}@5!yXw1r4aMLw2W56~zZ=AFG-=hWA&TFOCwk+HagQ1B z3*{9=WUm8BauQ?7GNaB8eS{F}P+i8gb|>2?JvZNz zNeAp%QBl#2`dqBtdgNRn$2zgyD^o7obTU1^ml=1dmxyYtdUzvCnI)u}*+`Jt;Aa02 zBB<(xLn>X4+0Ql|o4XT%sp^hOzZ(x5^jCVbx%I2rH~?R!J7QiC-Hv&v!$m zj$1|zH4qI)C&l=t6Z81lHKlbe7W$5XeZ@nQWoxLrf=N3uXsbWmgKW7OK zF)4F1dC$=Q0+Y#pl@Hdw%<4c~zjk^sHzN-djXl_~))|lmOtyZqKamp)#=>S4;~!7w z;n!Fimsp~hua_-P)S3@eJzlEMU4kNW!qAt5k=q!yW~UZG|LOcL@tRN$b}+He{Yur! zqt!vAX8pdC#`|(9lnm9667Ls|W%uND{lT`=YU%x{drwWzr@pNmUjTC-G(%mm9t*~i zGIpIg?Ph4VnI+qVzqA0Vu4*x%GNwc~d`|6KozNSRb}(gMzX5`Nj=4eJK~>cw2JSM} zx}U3AHiei0`dYZ0?BrV+lK(1I&StgeF}fPevW&HBi;(EPV?On1az?ImLZaD|&)VeR z&r`QRw?aI>$iNP|ab8bcnEjKDIQREC$xD$Awyf&Mml!&UFAgi}yENaQL&GwyI?NGZLm($nYR z^c{LObWIjph18T2nkmL_0=;IG<60u=5rA;A%HF3hm9c_M4{PjXQsT9;B3_y-q51j% zk}!mZ^7O|q^-NDT*FCBgE_nHEPE3m(ba+M$mlnyq0->2*yCCd{Hku|S-lbDRf9JV%(;zRGSJ>%DTiJu5D*_aeCim`8z@S=Zp$c#{2StdlO_;(pN3DqQK^xRGkt+vbcQhUP5)VfdgTa9d^Q z`s|+Ic8ZE!ByTZa&zT1gNV}FQnS7Ty1ghnYU|kGyOK=t+aG&bk{f_ZHtgzZ|rUCoV zA)wdHU7@P5{C+ECmXqjuRwl5yk{rWG@>nix-?WplsF#a4fBN3+L~3SD@=BM&<~(-6 zt6RMZIDaXb-o>Qc1rw_MiWg`R)4AAzF5H^^k(I84^ER)sFY`+*79>|?XzQ7@qp%A> zp_4&oZEyhlfr-^oYjSO_9O_^H+o<;mS>uDbFu~z z(~RiNk+HWXo!j!goiwjMKLYA$lIFLj+-F_pzS#_aKf)@A@z``s7$i_h1V5|^;}DG0 zDGtqf&#!}^o zM(VHLe*03_`1G>+=0(qyo?fOsf*%!gP8}-7Zs1s;*q`$}R8qQaz%0iG$E^;qEQi6o zeMxUka`SYRU0YBzsOboH^QrdJ8W<#&W4w40vr!8VUs>Zi2mwm{*5mGI{-qtwH;Oxw zuTk`ep%hLw!zQDBnjKv`J+Ku$lj+5pG0`P_$@yAQK6fXqlhF6VksDxK$--(ioGa8E=6Um}eAH%Pnoquw zuzYFD6Jkq;$h1Xgjx_`?sIFHN4+OzX_ecik9L==$8&^%z3{mBL%_a(uJ{%;Jr!Sb_ z{Yi~yBGG(ttm(o0SJ0%ZY#7ux2jZH=!%6Uwu*0H!5perLebxH~c*A9{!Ll7`hJK>`2`YfS%R`|Svm^-^h8K0RB0Y#Tlhmp>2ZLMJX(Uc< z^Oak+y4TuoKbPVKWH0H6lb7)Vel%e5fo;iZ2=3zr!u&y-v%jw1E*#^&_f({3pkkB{D8_ZI!Q*PS`?izYG)eH^F>c?jJTv1v;?=HB>{01H=C(z8YNEZzQIof58N>Bh6JOJ2+i*LhBOH2eR5gNvJ9Mev zy|Qq9c>lts?i1wSM2ELg?A{&VKqY{1_MTI2Xrtaw9%uE$FQ`Zjez2Y^ZJE(99T6*# zPf!hc0y-FuyLLG@_Z5lg{XF#YPiUl433`*FNrwy1_l2|3snIB1k(KJX5OmTZYwcF$ zKuuTSV=qpxlUtn?BREX1lc6=*o)Dls5LBFT#6ka7d2>zUY4T4RYzwV9fN#c^_WE}y zzp$b7Klb$F+DLS;ewKpqvilLA^2#}ax+rbc^?qt}4ZoYd{IYlL5anUq8}iF1a(8DG z4I`K^Jt8*Deaj{BFx~j=_1y^>?Y1o;s-c?Yv6=`A-6M#(?~-fHX!DxX?A@Vbq@=k) z6*N=`V{phezQn4KM51lvCI7&TR*ca8%q1D!K1^pqPwB5A(UB4#^sMkT%>m8g`Nxu@ zoz{-HgRsc^A1B^X--rx}2$c($rrklC$T<08+ZDT&t4GlR$&PO4g-HOn&?u#EmQU^V z*AQn`w8|;z-((r!%9rEN>t3=&KGHLqWNx z-M;==oxXol@ZzH(ze9U(KwaIOnt%qd^9CSM9S2kew_mlES%NN;*uq>NU8pzt#DCg5 z4VlyiM~6Ug(d|s(Z>DBBV3^Xrnhn-P>v<~4;ZC{!khif%F! z2&;Zg`wA#7N`N>cec5>*`S;K{4t?WjtQ$u7ZTHzpU>_+$SfiEtYbISE+4v!{n3=wu zo&;H&_3J;?D0}Y?Rt{u)dYp=5nmg!vvSy?m*fN+Cd-Wi;7m%9&@9Yx?HaSzYfy;)Q ziA^rC(LDomo&?%Fvh`S9=2PY&8jEzl)34S+5L$;7xs?Xtw**fLo^V)MaZ&L=y@O%# zfcg>6N((@1==pDM%LiA_3Spy+GgIWE_*1Y3oSwjDmD*~*AP~69)VghEb zoOa%#+@Sq6$zI+Re!Homod7e|3&BtVN`EjBJ)xqOUH<$q#4*^544ly19vFk4hy-sD zt_lDJ2a;&|ub|*S&ryt8Wm2(8A7@gDwE~Jfx4E6)jvo2B8u7!RQVicHQ}mZtu+iD1 z7kaj0B?W70w+LCxm==v~5I*!0*9$<8n$DvCKOkiN)205Wv>eFTH)$upy{&qMk!K5z zI@>Gx|IzvQrw^4UnS2vuE9gDdxw$3zroF%5S6mP+;K6+cqF0`8(RfBU z>Yx20Ft`qWk*VoV;ivyXYM}*S7!Ci5VWbb;MFb1LqO|)JixQ&8_?k_XJ_qy@AD_!^ z^9pBy1fSDR^0&g?7>KF(fI+@H*89f4$$RO6)c+)vTkd)HA+WHHN6y~XNjq!N!Q(9< zOit(ze0TsP*QTrmX?q1c|A(xmahu?O$_NF-CS1d>=%CPaPvw#SBZy&9Pf+WIdL<&} zx|cxYSQ4IwnRqg$S>jE{c!C*dgX#ny<~U6%XgY1SdHS>?;ngdc!3xh`HJHEAI_^d; zaQcYxk_)F~mQ;S^fX&Wz!Kb(Q1hdDyv&Q_hd}h>Xw_5_Q9z?OS zL_)+a5n96dvB~S5PMHnXA5}oF_in+`FWy;ygopHz2`b(k1m{%qyR_t1=n_+i0a zFHSryYp`lfM5jL1ew&rCtxdJ^8uY~ckXGto$RZovRV0`NJ@jNG){O4m4r{aFVP+&3 znMlwt4|H^P4ondG1gXs4VHGcAGtBr53^(w^s@+pm-I1zcsK~6OdRKE>6dG&{nQWX- zoS#UA4flx{<0gO6y?!*5)Gyf;$tY|to&v4u0+&fgAmz@|kne1C4030AlQ6Gdo(42Q z?Ps6;=geX8(GYamHgR@s(6+@lh8Lus+=t%prOz>5{2P zR}Pu$yfGF0ZRQ_DCm`r0(rm-sEwz+5rfE7jbpD=V?v4a7MfGgNLB$l^9;=^^fnPk( zq1A3$02e4Ew;;p$+H{K@XLU&5X>C`CM&7nf*hwb_hILw9Y(dEYk;ybH&{_b4AwhRoa93}JYhTtB_X&y)WfV-+K@z1;J z8g#iFx7!wNe4d5G7{;W4wCBG_oSqQHw~vhcY$L?IgeekpWgsS^nJ41eL?DHqI0%+H zcRES_?7^@5LlKD><^QOM2HfGzsH^Kdjev@vRD2_Jn=omx?Uq3xwq)kEXwYvUp62DM z?Gv*Uf2a==3t-?XxvAb(dqsU}QXRYD_Mxfv2r)iE5%|=n zHTK&ib~Ziyslcdv6cyTDH!`*j-4gi-J>%NnQ3J1+$M>} znB;tfM0)hd!dvW(GB~|ZcGIk)(y>eORA3228nr&JZnsS!at-Vsq@O?JXunPS_F3oF zw=nc3@HcAt!n#Dt~7)iB7`)@wGMj?Y_<(*N-eIWB4% zq)^7Gua>V+(jpDWV%Y=Bw8$r2Gl)|&zC*9|MNW>D^s@6+-})->f;n1JUe2}(wArZ; z4pD52O03j@9SdbNF#N4c%v`Td!6UO7Q;S!d;O#aQD2lnoJ5|_Ym{mLC@WoZ{6Vy_( zP}(x^24@-$$6}Uorz1@6x>EF|9OJ$_N6*ljN-J6IdJrY}ppA+>h%bH6k^`6m%o6Xgj@Y;jMiz>Oh5|@6? z3C5lS|Abr}A%gf8_$&`qc1qP-@TU@9OxnEX3~#Qbv}A;&;=R-I1cWk5@C}ny-)aRr z-K|b`P48sPP|KLx;5Uhbqff&1Hco%aTC@>&wbNS4|n>kuTyXR+)y^GHEOxrzW&{p zdBcvG<_PfJzP=+a&p44jn#6{g)1Ep}4-Pir0MLhd8EJ5Axzl(0RY{e<`@rkSfp;hz z8$*eyzjO}@gD5@OTRJ>3KJkc1#~s|Rim%yrCI7AH0uJBZ4{UVP8}wLFX;6>jv=&za z>k%WcX)>q=x6A=+5pnS>jM5)_%eA^tulpcBVY-cA*sRBpn92Q3p2(rNN}B4SE;&+7 zq?lFvxD&=HR*)o_b0KS>{G?%byp_=j!|vPyuh~A+cUFFVjK)+u?;qmlq1=>VS>D{3 z=_y^Y$9Y9Zy5Wf4U()NQrhF}(SVr3Gw(0c8c}QC^q2W|Pzv_C z?%_vV5=wx}p^AypUnR|DW!qkV0fFvQTt-HWHN#FP?pIVi8+|$a_nyY_FRMtpenzN2 zKZVT3+#a9NTua-_Etua}H+)y+xZeXU)Vh2L=___vWn;1LBx23{l||>*=K6hjzmM2} zpg;w|RT4Iw*}1wD_Rx=^RJSw6I!dk5x;Qh2^Y#}lO8xrkP)3c^92;rpKGx;5GN;MPw9fbaCI{;zL1UDYhp8Q&J6y~-8Rgv=@Pz87Ls1O zRUVd*H|dn?s4A_f-bgoi{VpDK;;?-v>Jj|;3V724yv#J8ZP%`5PCDz`PTcPfgb+L8 zD3riw(VEid%Pp(ya=f(H?E95zjg9EX70}8ag6)B{hg>1N`Fb)CS|uW)&Qcz;!|zM z9mA5(?pnfL$}#Ti@$BGJHg!iYn0@(}S-Ua7PRi;pySra8<uPH65VG|M0(K1RGs)@pYRp{^ABdW1?DX19yGs_)$1qwi|3?5Shj%$o}zzXh6f zXyNo!GhT%y__sGx621xqNK0>wSXPui=slUdU-87%A=CYeUo`l)RWRQ001vkN!!p?T zcd}00hy3N4549Ll^ha&L)jT=&3iqf@xqRH933_-OWLLpG21YyR<_1Db=d)&qQqR|7 zJ*Gkh{0nbIy)7Yr3F7j9p6TNqleQ#w<>F~Y;i<2HC9OiP=F^{*V zgO=GWWxZ__N--BaFfDi?I8Ihn>u_kNZ((DCDuJEx;<@{FVa2732AVI@s&+-9)?MAL z^)lzsc6W^_cm!TLm{9N_qm8$@a}^Leo=6#~m1C^)(|)?ze)*CG1&?O9cRf{RfF$mm zaZ;Rj#m9~Hpoi4q5{tzZ&ENq_+NNY_9lc2Pk-LNVD`APXm9V|Ll8skx7IjQ5G^R(= zqxZR&9Qgx;q$)Zq`zZa3zTW&71n}qeE0zOUMk{hz@j{R&tv1f|F-(%0|9VjBbUI|}grFkiQa+#6!&aCuV7(P3*j6o*O-Ez$x zH_oR%vk*2sT`*tA&J~!7XFt+Qm_-Z|TlfzOJ7nEPeH$riIC>lRcL=CyebLZ^*MI|b zELw_jB73soy%v|`3E9~xFAaOgva+iWr?JK&i?R0ed>h3JHF~%ZIygV6`tb|?*LUjn zwS12S6K0B>ri&zgwoOGeh<}|+tXoBsp#8YM&wq;QK%n3gCk|Pu)k+aF{9L8sS7TaY zWRz%hm9*bJAp1Tha*=;q_AchXwYtVL&_~>_Vgk7^G!8lO(e~lQeh~m6Fl-+GY!1wE z@x_SZh2!2JV~3c~mz%$B!*HCT%;f$=RyP&TNz4&C>Ueb#&+P8sap|+kh9!p<8z}pKb za=1wTX_wC5MTcc~P5@I$(YxfiZP(1ft{u`LZQYG0E*PKQNv8v8G(BnGc6J!8AT_e% zvHN5rz{%IL-si7V!B4qE8KmKdj;C)+!xdLR8h#>$6If^XJg`s3q8orp4lSyG<#x13 zQ2@HrC|thx=RgZs=ht`{^J0N91p>QFPmgblokF1GP@5PD?M*zlV>Rf(fCe|8BtxBf za~y1YgtPRlekT==T%r`?m0if4bcdh>>P61oZN-wF^WZDrc!CS&!Z%>u=f}m82?nwc-35Q}C6Z)$g|DQ(}40;a-Bz_%-%9ahI(3 zuk=S&eO9`sn6*RBbCGVLPQ)zh;i-_H50~QgG+?+VQr4lk!ZAdewu1dUiXp-G0O%c| zLhgKWfYmLA)2u-r93T%e2Z&?q098W=s6-`>s-K7n2*d}Fbp986?-kZ$*0v2}1019% z3Th}aD5z9vp#=~|5ouO>5osbN^w2^?nxKG+fOHT60U`7rA_PICO7Ed}2sH_i^4)P} zo_F3~p5x#AzKz+rH#kCaueGjqUj4jY(~jiUF@Ys%o%i0kW{X+6|6lO{UL+q7htk`< z*Jw6Pgc3u;JoeQIOx<3Q<(=eUAW*`jB{@X2_^#1p@8)y-mt#6gixq93c;|aTipa&N z97&R^-DzPxmP5OF4<6y|d_y;ym*buG4hoLt0$Y{$2Y2*^)qvM2`FH14UJ$60ocs*~ z*r?lAfP3E6ayVK?*6F=P_;LBF)7ii5HQR#I&nx+)ib3_B8GmO0Ta~3)P(>&+EBYep znlQjgQJ@mV18H#R+3wy?bBj;@CCc6<@>ARPmolhkbOyY31zI3KiEktLyR`uUa(}Cm ziq&EhNPRM@BVW_=Yjn%qmIgOZD@Ko`*Uzhbb4|P>muHa-z~p<`s%h=yUuIWz-TL{u zo`95!6ug;Nxy3wXyArm(5vP2<CKyzmYLW@yI_%OglOuSpGl@ZN#p)MyWcwMu>&@sX2M!vrleM{y z9LJuZUhxA@WsCoANL`#yvsHBzRc8zu?0J-w!lxx})+zqu=yZ^VPXxd7MAa{9l5Ig8 z*Z`IchuuGZqRW$W-|rqEU%;JOpfN=pd#FZRc?TC`PS8PeNc&v)&mFo=JJ1vWWmRb? z`|F)N%J?5O_Y+K(+@k*r{a({6+I3v}2l)MB1_Sue#RIGZztHyv3`nBQH9+G}9yIL* zc$Ml8wC^jsw-)gFoh_ifx&ZC<%U!1Zr3w%%*Pgz(Yc!A!+8h1&E85cbGvFFOfKso0 z|DjY4T5c&V!V2;6n9=qH*bCYMUf(7jaG_}5S3u*ByOR&x$BVP^0C2hk!1+s10r-oG z6R_k__Z@4kp8%@_&N<*}1ONJ{jdsCj%>GANAGq9AAoBMl%8c6^KuJ3en%S&$@b{$& z{WPzIe#-Ei%4J4VKp`FUim#1T==i{<@N++L_fx0#(*p&8?W`nCWUBt5Ck|Y$FMyE4 z8T#tuz*SH9`mYH7&nf;Zg8z!(&#Uz>3jT|Ne`Dvriuho=<6lMmuOj~2TKU%&JlOR8 zzibO~uP6Z?T!SVK0UAHM2lpcM@HT{|va+Tkwk(M@MBT~eH_CChL5SKEi??ReK{*24 z%38`dkX^8)alpYwsi6%8m;oQmpTYc1&&dOAXS#qrT8s#6A3Gfnt7BoU+rHsNDigyf zVEmtW)~0ZmXe(F{$)nMsvvd2}23F-7%Pm($4#tx|U8tmYSOLgy^c2Fh^KzQ*2)EQH zkK@;h}jPWe{&gX_5I0$6C}9nn(sETZrUjQGTxbc;r$+NnP8aG;>? z^$G9N-Qu25kvJUx>pK-GC;p4EP4h2U%JKm6MsI>YTOGyX0e6+W=;B9IGqXa0qUE4f zyb?F;p6xHOyua?kL%_PuO?$BBL(af8v{clA=utZ!v+380QG+YdA?N~#y~M_5kmX0e z;9tFH+E=I$fHgeHjAT&S(2%v67@3SSH_|XzpX7n44kE}yZ+A~-iBwvBJ@`0O_-P@U zJFP_n_0K{>%U?fk;~jPwQnE-b+l$;~ayfSJlDqPOcYgX{KH$hWBTSiK7?ELWPk73t zdnR(!y`#Y6Zb8WZn8^P;yQZgr<8-x;Kxj2%Vy)f25yNi^8~BY$>!i-0>srBor*CYc zl~{x?olo@Pd0^sW;E{d>b2qX5Vb#d5B^rPJ@F$uBq$VTN=KZ>AG&gVVk5Atp1JSsH zR?`ba#@2-fzX&QFSI4evE!?0NKR^gJM zD_KNs)7?u2=8pyoEhZD}p`Q|5vf^z{EEkmM^;vozbll>2AR>9uqjIZCEc7}Q4#5xD z%&~9)op8<_I$O4Q_x!#svC7L_K7(&ot3Ls)@Rxf|p;tIKj2+&1CTq?u9fpm2 zzyO{Y(_EgF0ce2p0C&X$h|Ph!V~JM5Ft8Q)TRoB8h=ny%5d{;dHTvY}*o-EKc0HDJw>OX-gFjZTv zt#;IV&$m*(*S4yt*=&n@1!O?J=VT>Fj7qIni!XnMM~i6s0%$cXbXoaV;Rz_xPqR3} zSVXALRX_0?|4oV_zTXT~;P-sPC!~he>~rgm>cVF_)r*GkvWJ*s^QmL>+!{teT>pvo zHaqQ=}#X*P`!~t#`44cqCI>ck&##L_OAJUd`4Ly91jt~F)piiDig2~K$D&pig zuf#<~Dv4>bq*Dp%`gyo1kag5jDd?%V#~M%;$FAji(2v}ry)r_6qiVgQkhl8o!~VJ$ z!|X-wg8dQIGWJ&i{36HLXp{lY%kAI?s9d07FnGCu_bdx!<;6O{)b~)E9R{?D#ZG?X zXUX>-4JfBop0#TnL~%NHH;oTy2(I1o7~EKiW6J3~wy$#vzlH_3$yy`DHE=Gfoj`PP z-D>b-6q@T~2g>#qk-(IX)&|%Bea1z%LT}h4m-6fM@y&k&0WDq#;-or8AW?cX^EJ=Q zR3;JPi1WT9*c$fGG>V;4N7|fNPYvZ^f!6JMo|SPhAd+5+HT2%sK4bIVB}5#as$>zL ziQs*Fhab1O)u|jRn0o$Q5;cDvU^EQjQ&VE(y_gE|-9Ay$CZP$G3_tsu3t$tgWdYpA ztJ;*>FNe1(jM{*G=H&6--pF0#Fndy82z>k@gabySX`C!>Wq1Hl8uywGNrnxlw-l8F z+>rATSV3{$ijBa@L{#+_zym0Eb*6hTG%I5IZo%QaQVlks1u)a9fC{??pJ#@f4fwY%QQUH(Tj4_t^2oKM2&O=E`B?J>( zBg!_H?DB!5)tfQ~ZSb^3^*&CBl&u^phBqkL@2tMK@9|A;7^L!ovxv-66Eyh6)G^*` zDy+dCS!=L*$IjfL7d;(W)9|C2D^==dh0?o+Xn&?4?sBZmwz=Dmc>PiKUPUPW%eOcD z7=Rgsr$csnWql6>wPNivi3*5H_8eCFjMAef*a7nLjg6cuQnOm^Ci{pA&*Q$j3Q{D- z6mI6)_bXB+Usoh@+1t}i{Xjxn_cZC(FU{*+5Wl$Sc(_$6h{7pT+S)~yKCS$f2}WA)IL)QUCqt%a?` zaufu6h4ZzX9k4{vx|w3G$5aa{_g=w}MAd+3rI?yC6HDum-(;=yD zb5pb7-F=Q|-=t=~OW z`Au}IQ_7{%o!~!fI-t1cB0D)piWr_{FDrCyn{x|};Y=zHKK+$@=>?tY37*Cas`=L6 ze4!yJ5UTPm_8zh|0o4!z9=j)`nMmlAo==(__g(uWKTe5MSUvBg8=}7SVzy0Ehl!?2 zqwjkV=o&7?nenhFE~IL&$>Ew(!B{CS*veh+lGX!gt<%zvofm!P+;6JZaD#y8%8Bu( zTD%MeBKgKwr^CQ?ClFO>d+UD?c&okMyEpt;948U?3tL(`VM`v4HB+xF2KsE4dL@Q^ zHu3aqO1m@B>!GvMvvp*AP40~*dJ4lDx~8S5nY#bSp!g!ZtNYZv&cXoF{KY&pKTfr* ziOlOy> z(lfCL79VjaiCtP4UM_%6-LKl%z8@6~@bVV8R{WY622`2RN!r=e#i4oD5F1;12H|p~ zu9KQU#|6)3KNw_(`knDqKsaY})ILUE!E6|}_2pQX?#!$nzi?uABCv2i1;MPVxci`e zYL8&fpX7@_H#_a3MUK%oESa-vD!RMZdtc{-kTBXrPB#ht2u)@^K^P;bc$<4(l6j=; zMTJ--x!fGEP~aMg^XeJjxn^3Pq_G7gEoH5Wq!;e)T)+hqk=3aD8avW|;&2jd&CsGT$>FEqz!y;Aw z(r5Izyfw~!7BF{M0vXV6D{s^^in}B|dR}nN!pkS(pft%V$Dga*`y$xz;*Bz=k#1|d z@(o$LysEs|UGj_6h7ds|&Jg&HW#2S+l^e}eQ;#w#=GTqiHxZF8omW~!o&&gRrv#uY zQCxBo+sXOWh_=msP@ozB@sT?~1eV3uu0{$Pe!SG2X$01&STz!+N5{uP zC>hEEfvZ9Z;|OKpvh7W6yfyf7=d=D;qiAV;9aqJb9$ies%TmZK_Es~X5DuftBy!fj z0&ot(E^*lJwC}EQsl3=(Z+_U%h`gxwu*@UO?Y40BLId#19LE7?<-vQu&6bgbhw=wl zl}C+$VumM&vNKrPW7;6jKb)9?QZ$(Sxtcz?daq(|4KlWMr~SG5sv!J;6!S%TAhz$S zKj02usG2utw8xuQyhUNkvA**W0vKlQ%}xv^nA7y_KFQ_qf~n_l`soLsJm0SIs627J zxA;_G2(BqwF+3z_gD9 z8^5>9rSi(m)3W?KQ3#pDQp`ZjGTY4!5sEE6AF7^3o5cc zHG7uLz;dUrRn%p6Ql00xTB!f1mAU71Q@}vTB@U#LCnZ{!`M2eK^j#V6&;n)2g$x~jlT`rn7O!PxT@V1+ctq0{kf==g@NaUu|t((G<+z6Sib96F+TV)9Ri^MCV22A z{|YUjz6>B<(X%f{<||~qcm3|%Xb~#4eChQZFJR7BZWZ`8ps8@g3&LyLs+G4)n$e=! z-p0ROSSj9$oJ>1HeIwwAmwVDBX_34m<4~?VwgDKJJ$>CkYxx*pyIRBv>~}}_lQ|e+ zV=kK2h7{6loO#15$xgHJ0u%4Ql*xm&f@(5`RXNCajSQ=#QW(^d(yIGSPCt~SR=ZW0 z!dMtq&`?bcF8;rR{Qn4UrG?Y>2ah7{I8$HlVxJT|9<&;`=cdbpH_U^2V}BgMvUJvx zJ-iiaiXUM$8UP#p&bai%WID}w7lFdIzlW2vPBcTW>8q#84D2p3UuabA$3B`~Z;aOM z6UNoLb>;#kEuZcx2OHWXm)O+t;ZTO(40emIk;(?JjACd-*;-np zTGDyh9H9x68(L02-|7_2&Nr!ATC&GrDP{^^y83{++2yDmVn+=wh!&d=t0TI4&Bfaq z`|)(w7OA%auE6^POHNeMB4`&%cDaCW^25IJ6MkKCOID)abLWvmFW*TvP1Hxu*P4uX z6f}-A6mhCnuegp+toJ6GXC`t}s#e1#LrnD(b1_?}(mO0f{;N;W0W=B``2oUPXcrKYtxN)AtSZi=6O zS5YG5BC(jAx(AKcNG@px0viNpfCrCeCE&gT)tQ`o%S{9zI$^d*!5#AuInqtiapY}V|Sv}JP3n?3;B^TpStV9 zd?MIch9BVzH=k3nX}eoue55trs8HgNVe7TT&iHq74{ej{3by8e`qsn1xQuLCe}BL5 z@{v4w;EiPF7b-@5egU`uc!qWjuyo&0-BUW zDZ^CZ#+JzGQ$40~6HE8h@D+feUbibiA!ri;dbS2u41!VL#8cx16r*oEwXRhbA{)+( zEjpxVT2Q%}TZmO=(fZ3evRKY9e^RcTg3h!^dmQrnVMZ9%+uq<&z;2?c`KZh8tbT~D z^1iTNawQx@KGjUz9V1|a)mY>&G*0H{ip(eZ`pZszv&^OWa?#g6Byi3iw1=XiG>;|< zO}e(Nytk;6AFE8Y*elehW?9w>Vj4nm>ZEtCe(6zH|CCoO`?_Jkb;t+_pdMjXOlz0oUrz2TGP$_w~*X?IR+lOpM zxSz_bHCJ&up;xo+#p3GrmD;2`sjM0?5M7g~>GkFfVx9<9c4Fe*w0D{1ki^tRD6hYi zL$To&-E|opg*pg!00J5oAHoELk4cH5r@lMS+-|3!RA`(6V={T8lcuuJS0l(*OU z+dE>`WLJBm8$v*zIL3}DpWzqz zJ!UZDcl_sDajZ&2apB#4>z;NFWy=h22s}cQx9HVH2i5cXft2(pt)brZ+nj`?i z;?Bt*>b%fmW!%mDN&gf$zN!ncy0fh0NDJq1n)~J0)B$T66<^OPRF{DMVI2FNhrbBi zv>})@8v8jvD=Z+4sY4-qsZc%N2ACK0OXyQ2kQRI5>-Rp1IqMN)o0rFIe%cg>DiNn% zQiJ`OM2COhAQQ&8=ThuDZ0sl=d-0Q%)4ET~(J9=v$=*f=wyR~iHo!gBZJ0B5U^nxg z?aOT*sg~@paGp6C+OOqLJgFY))>)G_xABz03AGzixHxCr&(;4a<1i!8_4}L9MYo5w zWV}M3Xhut&vT%)7<4EMe9#3?)-g67B_>;Xo0*TP|D zkV@r>GH)V7p1j?S@<` zQ-wrpF47`O7Hi)7eYH4X^BY}5S;(>ug_8o4C<0bjEMsndA6Iv>>6~rS=Eh+3G+>|D zxhMs>PF)qE`A>uPonx5O_eojb@7DZNw*H2gCofen^lWw9N>@MoH1=3DeoGyhlIqWj ze^i??xfaOD%uYC8p*e;DET3}}moN1Xk#=uxaIkD>@Am(MOyRONSDHD9jNcAx=4FxW zkX7rOrbQ%SV{qL{;@j4S`??TQY3*uBnOYpp>WUJ|2P`-Rh}rU11Q>e)aCPp|CPEq4 zcDzTF57{s)tQDF{Xsqw0>m$v|bcP(LY1cc0T9K6!4}2|^=~+An{c8$mITB+8uNFwx zyQC`h1Oq7FKSTOEH<7TS3I5QceFUiq&hz)*Y6nk#KcpWQl9>BY_u6H*d2VoMi$LP% zA-Tu8(VC(t;Zd(1k$k+(3qtj(jB&8zTWVIk&yvl2ap14Q3nUjD{ynZwV;~V8Ubx(<(8N7BefKY12(_-)821D7N1Pk9G~L)C*)FB_Uf%8& zZm7hzY$h1D50FDPyyoK#(mgd@sRe28&Gd!Ziv@U@BT;xC;%2KDhWeK3zqgqEF>>$S z(q(xaiI$7O*yzIt80YS`vPQ z6?JPSi_bgjh+NUZC9ovq#Jw{IMAT>?GIj&V$>p?wL;QJV6n1vkTgApQjC?OvTziB& zhDm}8tnh$mL=Svbl{9A{*=FAIGsC$TQo)3L)^U0L3$rcjvdA@U+oWN+12zUg;KQ{d@^SRyaer7kf{#SMruI=V%U*JK5&lrFu;Mm+qrKy%Sm;tx-CN*eE#pJ^&hO z?r(R=qCV93;w*RJc>fZJmf)P{ z%sP6IPYbj%+yeGOK9@`ruB|ol1)9|?@9JUFt>GI5@-(u}D%|Mq@fg)e4m;q6(iF}E zpeXj!^X~2fXejmc&*c1t;{vbF?z(AeD69+~o!&W-D5d}(blp|5m@=F89Q029WtiDt z*w_p7lYF|=^PO_`)>$Gp3X>nG#Ed(!pB~e@%hD;c3Pj%@-w)l1OS(C6fj9k^HmX0B z-)msVAD^I!%!nk;kDJGD@#Q+v-n?AlJzF3>I@NcxaMTZd{AHVrUHRDq_;PqtQ-P;%fqBhk)QcNYmd0xPu0MfNbM>kRb@XLVy!+LS3tQgUknI_h}#avpgpH zAk9VFGk0I$gq+O3Ivq^Jca*XBUlI6M1pY;Ve^KD4B3NZ3&MfneyfM~02(Qi?J{s0& zhR%$Lk;Z|6WrEO^!$9+X4P^}SD?A6_X_aE?NJ{O`t^L6Q;E?A;%kBTAAO2Kz^#DeO z!|8y>juWx_DBF3;NxHuj)IVYILInVoPSqyoj?p@(-vP~xe8?ofgESM+MYDebcr1^t zXCA*GMdGLX^;iGy%Bhn0?ZV9C=qpIz%gy9=4^kvRvmpK)@aV6Z)MQtALR67-1fF%RN72z8u-Sh$HO+p%{Ot8h z?W|hh%e`l34hkm&3UJUCco^V9#I)(sCwULi9k3^^fTEqrYK^%|$H$qd%v46Y z18k4K`k4w|0VgtO^+>HihHe;(Ywg7>fB{lA8ImQi22qLhBa z`foYDw=9rT13HbHQkY0Oe!=SQl^sJ3~bAO zTn~)VGrY92Q-PMz>^bAu}{HNZG|0O z&XRz%BN~psa)x(VvOh1=AfSI~0+@WrgoP7KUj!`0+s0=OzFhv;ts}ele!VM@HMWBX z0iMR$R&!P2{3nCwQ<$PJ9SRaEKnaX-8@XK-T={Ya{e%0(P<{4!WB(|5VtMj^{9GXS zc$m>KXerI=FeCTTMJY%2vpqn9^HxcV&vKloCy?z1#t3@bv@>BHL%G!)1~uYh&tuKJ zcV`Q6;~AjEeuF&3pfzDkb4W_(qmNQ^=@$?Z#e?77sTy_cgfu+0FBn>R+Z0QmnCMi= zXX3Tyow=;MMcS&i%2+na`)pKQXC1q*Hi-LjB+(Go7+Eg+D(vP^WM##gdnB;r^*~k~ zpFGGpAKgI(6W<=~v8jG@|HaJpDELi=3ouHnlLauWOB4%m7R5K*W;$%yio45HF~Rn? zHdGM=w5|K^PBHhHESx8iW-?x!VDpFlRR9vS@}_{!eXP<7yXi z7O3zz=?nR4@#Ly6FqF)FHoI)uB#};aAcsl+?~>`C&1+x#!~ZlGjPw~Vn80@WCW~L* zj5_Y$l^z;$DQ*v5;^RG&9@^ld&eLaw@Ke}M06{;?n|wcnz=CUuq^->DBTkh{T0qb; z(*wxD2FWy~(F_nGP0hn*yU$BMyOXB_G!V25rqV2frw0FFC-?*m-}rQTan$ipP{)o3 z{L#jMv)O*A+lk6ffWSi=pRqDT2H6K)0 z(lLCI{Nf~kLx_C@PYR#TcfTpS?AR!MdNzN_uc!G~V5dRv=mk^RwZ#43!zjC$d#%Fk zK%H=tYu!^JW%Bm@Qy;zfYIpaR`Nq|_BCkXu>t=8WP7dS8Vd6k}uXHO1mQuUj@Dj+! zXEYo}uX6fV^xn&~h&S`!$Xo|<%fVDQS8B;~iIc!k?}i>-r86N>XU)zh2z1#07+)sRs)Dq^CxlI#c=b&$ zwMlKYWy<^S26JLGfq`)TI!pd_R#SaIg@)C8$4I%SrcQn2P9?It*Iv%`$sXO%;AS5G zkM9JkJGPdOPL*`X*n69ho-)huo;deb5h)f^Fg=~l8<#>Q3X7mtiZk~<8!aFerX}}C zC7r<)Z>uAAM)>1P9_^j8VQdveo8*uxO*>upMJj^Qd6}7!0-YLudQ-)1yp%gWdQ*Gd z2!ryai}e_#a~x(qlfg4XJ|eY*HQyFD35)meNI8tFP(jyH?Zpk;*mRWAc{6U(ZQ=rk zwc*p7j0Sg&JUTa z@TBH_jWa3UhH$2iaGHB5Z7=mHaKRfkw2S9-Db*n8GOK;~Tzm zN^wFYm&_T3$5{^D-9EllfBpXJNuj@wV=i%;7*ykAC)f4O{SB`QQ3Ntu=|PU~Oh%yH z?cKJhf$@uOUz_^$P0j%|r6XN6FkIoTp0OSmH|pGxHFNmxLp#gqcCZjbb4eI4kpQ2} zpQ*Vf3WAo~<>;H&b{Ipet4g6?8>RPAeenPd3tWB^EI;l5L0e)kqBRCCqP1P(A-iT# zo#wNfWCAwyP@JjRFl3{V9UT8kJ`w+2Q%q=w_~eSV4BQ00AE|(OO~A57>&O@mKIzGV zi1w6XFLgFQY;ijkM}!6)<1~|noKEqb8xmh=5!4*n@O2!WA&>!9Jtm|8R%8R_)-dBM zLmBzqUsvZ1i8~Lr_#0Y%XkL~gqbs>uIvGEMr3-wEI8qyLoZ)6PSiZSn~J} zzfjj@n*Y#W`afXR7?P+B9=t$WC$nbW+;)sMY)xVxK+spt^p-E@=~gT&RX z=9}O7qaZTd+UEmHH1UWpmX^KSl3J-I7%GEov7M#m(wZ+W`KYwOx3z*Q9`1@^_Yzmk zKp&Xp^UyOybAClgiLP=6aCIrQ-Yr)k8^GYg_uGtBmq!)Xo80wFIvru7*FINF(zoMn z;l>FcodZtMP><#tnX}8a(w9yc`yt!f!;G zo(OE1LE8;~iRX!m=vC+TF<8XitrpuKg4Q2X<60Av@dByQL5tjUETCmMg5W`QTTEgj;H$X!c0R=C^y61|@+lkwmidc9`J1K(-;=^QVgnPhai( za20pzks`yGlPZ8wqGhd2fbFDk{L`9=q$;{i5t{yDXCiw0mV{8PN6kLdBm&Jm6k#CO}D7zlLT|0zGoNH zAl5P(XYnn97BwO_8J_vaZGTb}&lxBeE?eSD1k<0W75rYA;s++6-58e==y1m#^9UIB+<2#0ey0WINXF zSw@wMiYO_1BO}_J>T^39oK_OSUKD!WPe@FrxJ|ONHeJ2@(eC$&IL!!#%(fO@TXV1L zCE!QXJ0!r`wNp4CXV3?%m6*X16E z&yTTnrivP0B2-TbfU*vI4Ci?pB0AfYozo%NlvX-(Pv2nIg!`Ha6sR16H zc0=ZqglVc$=5(OBe@+X^v1q5?B4cK?f937YY8##E=aRF|x8oMTq|iwXwRUAq)Ujb- z?xCCEgOA?JG&K4|LS3577>726QcJe0bKy$cUye*pQb~e-TRY&{D&?sXwm=OR!-)!} z5RZOyWN8ZA?D4eOo}Rl_suFrA?CUhB1Q_@0XZBhU@CKY4`KZFll9ZExibMo-k8~`$ zu@RcxQv8}0+na7hHRp=N2}GcIFGAZ`yb-sm?kdy&{y6G+<>xBAyhZvA3YB?CQ>?a7 z!_vj!<4dS&Gdgqw?VjVwyD?4}_NWjz^m-6v7e2$)DF}J{_}MkljimXD5w_RXIhI$y zw~C6a>Vj-CrUAFYco_VnF*<1Q+30vCPv}a?8LCqz0&Cfs4P?2cc3FHfO*%KK@uX#Q zHNT#6SGy?d*{b4^vXm-fTbrULR{ZzHMRrj4bax7_;k`2cc{r4ut@*j;ShPHOFHcM} z`fT<-OhW)op8KQQC7yD2UG*Utlm?9JC?&&16~UvS?eC{UUjGu5L~ zEV9QuMF<5gzN?wheZ*-j49l*gVCSyl5e3Jy2qDXjqTdxY-*Y&v6Zdey079}xqG-x# zCB3xOb0n_61QC@x=9W;Thw;$#?yfCU+S;>PmLW&x5x~`es<~DfPyez69kB>cf%O~C zrf|8Kmtlu|*J?{hk5%%~z~u1aRN7U_%0Cn&7j34si1TuPg_U;PW$ui9SY@_cll~2x zu_75y)_#TMzAr!xNpQpuVG4X#%&NCL_Qvwui~hrNDsDuJrwLyF(~Zo}JIYqfEEofQ zI1cNCO!l&?gL4}z>f?xGxZ98uQzKtpsunvG5^B>E9l6kpkt3Q=^Q<$;j!7@}A7}LT zk3h}OOZ@KC3|6%4d`^tDFwryeo-G`}QuT~EtjhTJQufgmzSA8BdM-hRpn7(5eBWY# z+w<~l1O~+Q*3RMTsutyi8l3}rb^+`o6zUajo$A&UpZT$>pqLCUdWGi|m;m{5E74 z9S33!6^wq9;<2|l810DxqbJVU1FRMKqw{{$tuCqy6xv3%SFJ2&GR1l9s^f8xi`JL*Zns)1mF3rH7f4V=RZ#Q+nI8aPV%OB zYp87rXYQ=<;_9|^2I1Msnl)2!(kd_Y$te>rz_oPtljzhq&-m%Y_feo&OamF;qq#d^ z1RJ~fx>8#rNe9{O=|FcRoG=Qkvez&qpMvf%z~se3ZLFE3suO&tF55qtoL^BVZIO)7{GUJFwpO0)7N&x^R zdb@6Tk*x`rjfiNU&*hJcSC#Gi)MQMJk1$@-B@w<_G;^6!lp=RrsVG7$6>_GhbX$Qt z$~NvPmiY#i$2zse%W-30l78fBsJze=Ow8W$KlSn#fVl;aQxE?c&n+!DrSi>lH;S2l zBcjJ$ZnttK;)@j*w(=upbJS~WXY#{Vr`W2(hIw{y)qH$*DNl3tm=)@WrJlb1vlbbh zM(T#5=sBfq*HHp7YbzCep4^Y{a}!hec+byRf&MaJ%DcAQk<_qsD!VlD?6sp6lEk~7 zp(CqAlJT~zacyC-e#0%3Az@m!ihA4BQ!#!PLfJVpV47Ilr)U^$Wmq#t7#E@iW-_N; zR#qLUq3^p;b!J7MJY<3?h##K@Kv_2Y(H zj&@YP&6F7whnIeaR)L0cS$L~+(bQ?Z} z^tkA}ghZRsyM!_Khw?~Q^NBgxVoyXyBo!4&)-=u&R;&u%dC#XJr5H4ZFQjHIh93$d zjy~A;ITMV%~Xq&iV>V6_VEc1_CNd06=ThZwpRh02%_UT?pf1)#Ztw-*%a2E zQdjDa8-s4WAhNn?yh#QB4DhH z%^C|W5=~qU7&frBeIa9jup&ily8livoTpK24i0ntnYmfM3Y15lbb0?l_To(kq5=>S zyX_GTkG?iCnB@3m)Td^(fgS{XaGO`KXMg@s251L1V&7RfeBS;YJ{w^L5~TQlp-i&2 zily>A-SqyZj2G*KI&Yc6VnGbWn2^$K8w>p2)Y-YdkdH0nw$TmI5e~?gfh-DA@$bF2 z#m~nq<~rKWgTK);c9+%&4n(uGxIOIt@{ZC;xUZ}DMk-tF?1xt3Z+X@QMb9>vXo zPUyTg5whIM?rj5CPne!ja(iu3VbNz<=Hw0i$M|qYeNVfW4>Bd;NiGPDF7ltDBJEyneJsRWh8np zfi3iAxMulDG{104x^An^;w))Cm)7 zxxR9RO&rYH(nlBxOyTn_Kn;_v2xG6?7+f?Ydi6~rA&ZUT2(*9Z4q+S)CRsNp-(KEd zserx+*r{yfxnYm2aI%BYOH<#S0CB{9H@iE8EB)?U(C0jMFXbMeH04Q@Zn@JI=_afZ zXFvk~L8|z}qyW7W>&p5?0a^n|+Cd^>@V3hny;h$ZWEWjcre@ansjE0Zzo4~mD;Vu& z=s~PX%78$VqgURxqRWfy{AlmY?q@D#W-@leE4Fw*(#SMPlT~l+ABkd7wLwZ2aBkG- z8)p68FR79NWY|vcAN?yP>yb&+)Z@k$y;*jhQlL17BRQpjpmpoiIGna z^A9PE$ljGxzK*w$74nYW?HF+qTCK*de{g@QAC9ra*T|>2__S1>%F938l0}AafEvbQN%D7u zvVF4T8Vup_NacoihkR`8w6Si)HA(n%ygkq${PupbF^z=(Tzz~*^321f16K*dtO=g zs2Js9(LP^A3$+SBJcYAfBPM*2WcEwouw1W7ZyW&M>iVE*iJu?_R={P(!&oMHF zUr2W!xXZu=BOp@cY@9ryFsPGE?E!=dHLvkF|W-F+Vcx^?#%p za7W*g?0smz(WI_VAt{qZt;cjNXwx_ZdU_0H+YXnU>4 ziZy(SUP%@x$F&ft)qq0v*4Xa(SCaV(!+C_34^RTV?hhHA!HC!O`w^v|r)8Bl|Dbqb z%&3QW9ODTo1}(TVW=U9om(5=57@6RaZ@My(uxq&_ zRpq9SI|e(Fq;Gzh@o|Kk6XD+RxWq5ZTc--@n;`FEm+@!hM&_S0&5SbDGVp}|cHxP* z4u}-4u-I9K7kAa&i`^-lH)rFvg?M%2!a&d}>6yd|e5cdL(M$FFLTj#fS*n%Am>(I5 z0&MrOu|7!?Ez6R&zVri8r7INC(pJ0igf{}}p$c+^C~f5(ZCiNHAkS0nfgAgf`@N9$ zQz~6s>uzgC$WI#VZR@4d|eNoXVta>SJognu=@*YKhT&#Nd3we zwTr0}jzFb-P0|3JYNetizHStAjaj-XtyKTU-RJ>ah!;g^b5pAtAroFLK)_E?#@z<2 zc@7;b7%Y;W zAUkFT_jqxM`)Nz^Km&^Eyk&OYpwy{!elqioYSjI1-wReYHs5z`=jIvYmfl;=tZeNq z*m24|%rWX~vA=6&aX;--h#PFmQG4**)sya@rh9WuN6sM>y=v$iY!W}t`5^sC6oqBO ziq`|(&OUGCN`=X>5W6gPK`){Td%;mXHc%lWg6O9g8DC88^F(WO z>lw0WnJA%Pe=Ry99`uLr&85>**pq)AIdJab9FG_?K14h=1ct#0OAqP4 zIebav*@Vu895sR>t5=L_@9i=V*nE<$|aE%^^F>H$Zjn;reuZ!&~d!x6C^QHF25y@xvC(zA`)i5NaF*8eXaU`Ui%V-Qp11ITwh=-3tKZl+U8n=6 z&q>dJg$rEx9B?yvG$Lt(vMcID$44abC;K`N-DypjDepXIYjFJ2dDGVZ*4qE@1OpV7`nocXQA?#!`7wGLmh6CGHg`kq~8-WoJor>|$d2?^W1Q~k{ zKh4k9a5KHcq~i>w3U_iJA~}k+Dr45@o-5>(oBEHGJL*CCR!?T2U@0K{+jq!2_2XRY zIfR1SF}dAYt96G^tg&LoHa;Md^{niZfjYPfw`o^JQm5>ql|2d|j;eV*miDpbBd(Uf zL&$pH&N-XLu({_D3~IQ{5&K4Ta9NUb6_!4ZMA&r3?z+u=53~7JwV9Qzw?5M`+mF&i++NO&1|qMGZc^I{|4@cg1N+XJR^77}5_~QYzlNBN(TUNR z7W}3**A7cQ54L;Eyqt+;8Q*>(s6ZA(mYACQS$1ro?nMN0!|V-Q($F#=E6&y*bRd$4#8d!>G~o zafljR&?oSw)iCZ84%u6F@tUDQzXN+shM!)P^GtOrZFa%E^!^*<=?*~;A7!hR`LUOn% zY@%sPFa_TKw9 z#Lzt;B|UU^cXz*E?{n|<>ht*i^;^I7zH439f;EddbLM>a+57ChKReDNBKtw<5u%SZ zGu-viQBSY7&&WQkUSk}XQ>)p6?TOa%9*knAu1O8c7et9^f&$TlX5j84)P8@Oq^&E| z5ufws>ya!Z{A5P`VK#H1s|PXGP+#;uDo6-SqD}Pd^F5G>Zx#1aV7(#nm&Oi2nddfs zOM(danmNrnK@t0#qv%GssoW5hk?VhMKqx1!v8SoXZ%=Trt;syZw*Pt?FXwG(^5A(`bWQgM3GgX*A*ZAq<3)1*E12 z7u~?2b2hOzFB3}LQ<>JhQ$+>E4}GJ=5<@WkRGtdl4l>gl zCGAhF1@nflwA~&>I$ZBCa!Sc$!;rc1rcS?VyEKVImp+&k7UL)NiuG#c-$Cg=6T0M5 zXJDV0)n}bR%c5#q)#ok8FX*jo`-t&q#^M0d@E$2~Dw1n#SzBkQjtee#cKDR%%uBJm zz39t&uP+k5w%ZAZF&n@_>eNHM!z(=rJ?AsaSIG@7dlt59^8s9!ADI`AYsr!uLZ5KA z?bwC3?m|0^sLOX7&PUvKx1PoiJ~=y$zI6Vr`KJ!YZxwKf&ZULHqTNt9`izT9Lx!tZ z<)*2Sw;4StJwd;peSb&8szU<;-62*Ws-GY!YEWdn?Hgr#+je^v+0ASvv6&H^L@ssS zNqH|z=DRT%1m{CyHB`IXxd{pBQ!{q$y3h1r2i?x;vsi((VsG+5br+dD#KZmE>ZU>Y zvx2*V7L|MRYogJqW_DBZwy!jW)-xkRwoqxl97|{oqwxu^@`9O`vFtzjEXR8~r{IuK zXe?Wr$c!C_%cf{_^{KpXu)4{ew3Ubb;zWJDyWq5~{x8v6%)Gozw^x$&=NmLM)fJYf zOl2(xhF#JxmYx(?avzGGz8Z1mDJve_@lF?1Ic_+6LnT&RSv{g4!z)b~N5aW@)TYC9 z^Wbs(w`89H&Vg0c6yqfOc1CWI$?HR0&keiFi$Ikm_suTQ<~9yU}V%{4SvA zJ;d=t!AtIdEs7jhOnc(P1u1RfIvx#RAN$osYA7MSi96)+fWabXR0A1=y&9zGwluzL zpi-duOkX-QSBLUCKOz5e3FD&Wa#e!}J;nLx_2$?Gx6@L;s0Mm9R7&=}?Q&-vNTKnC zxq1%!s^#`jGwDPhc*iswIg0prUsT4o1ll;QTDaMS&WpcZ9pnH zisGP321XsOeMv(j3EOc0pw)75pUv+LUm6zLgx&sUo>dNwEo0df4lahko1`X;qlb8W zeUDA8`EDUvl_6_;#-yHmX|(E9eVqO$`OX{XtK8^18F+PnI2^AtR>x{`v^<3_!M)eD zd`<+pZMm0KKiF@bmJidfWyT$_T#scg)1zD9d@kv``_hI)d97yWLU z?U!hp?+|hcK9=lVwmkf1GI@RK#0tJfcFspYp;5^XlVsT1ByKPZ-5J5U5Bq?{w4?V@ zz`R0v-I~C6x4!G`76v_&`vi0K;s}3ZUeYqZ(+nA;ZtpV-g(#4Y?pkC5Yc?YnE`#@z z<-HkO`r2n$v9L zsJ8p?`0!eB3gZ21L#x1}sqwb{xrKz?24j`?>|5aq)ZHI-zVpI}!UupGcAB|q5JGp{p|>Yo2jAMmca>H%S5kawWKLMNvU(tlPN{EC=RVv;c5j zIw62$fL@UsGK;={^<9Bs@T{76>{f$cta&g%-Mo$&h4x;miu~cPeE&m@1>`L1h6i#0 zn=iNWD1=Y^J}6(iyp#FC!~4cBzcB~;5iw{nECtE(;&QndoC;z_YwT7{SJ%%GI4!mS zUUTJ4J|=y7*A7MFJfVSoRdg@UxscJ-zG#}(TEeAqvYlhveDKsQ9Hz{-wVC%^p5Ck( zBsNE{cY0dmof^`<=r?Tc(F;p+3I*1qTVj&Fi5*4C62#<{x;WXyFA49Y&py^+v|^or z;@Lx4RW)_}V>yok$(If!FVxUeThT#di-gE*_Tz2nH%DNS9gz>#_v(&ScMJ*{8dwKv zzRlTDzda|4L_AJ^Ny={Z?k#!$<;u2MQXLP&4pPFL$kWTSiAN_ru{!UO=*srTxz}Gh z1o}tHat|+&q7cutYtaw5g@|8$L64jDyiCFcp|CJV){p1%vRyP>Qx-sV(4~?bR|ss6 zirf6%Xp|$LdhV}hE6+sE)m*qGnIYVF?Y0(_Hu0Kc!M!R4qpaIZ3l3fB!lq@W3TMeL z+~ucosgWVQFNWg7?b()JIaV!R_(Z;x?-Z zm7S2MUoCUot9|twtrRBV{pKiov{Q!V+6Emw+}@mXaRRE)6&-WN4s!L% z<}<7_vX_^t;ACnr-syI~BY?D{i=j@ppyp~LZ>c5n(5|?u>w&Sh&S&S-g33Dxsu#5- zvtIC&RT>%>$qBqd`g=~$Nz1WzY-LE}YR?NPNBU>n$k&Ct69u)Jj>~v5y<(8nl^e^z zqtjTxoBnV_98iPN&~REdlSJ8nlpn`bfd6#I^Gq*SjmCPcPOeS=@t+6@C=3SJT{z&= zdmxGtuI*4|02k_TR4Bui^(Cq1;E*p+cgWRfNLI{OEpE~D4?%-0Hk&m!PNs_@-{(*q z5;rn3`f&25FYPlSvx(dm+u(7*zJrl7p~W8163q2=K+xn#ge^%py<7oX0^)GF*(g1; zlz4_~>vWb?FoQ;o;z$CLyoCuwEiY!MK!eRd#%p0`k{;44Woel_#3ZQlu9GEo`6y1k z#JSjfx}?>Wa&silI7u>BK67i@?|Mk6DZY}-PB80ObF(zJ_tU62QGjxRs_C!|=4z&3 zdXt%Z%QiDhHcSY+6+JJ5m@*z@P>u zT|2s>VUQd&nrY*b(IP0k@7;$Gdkk%NoxD2JhAwq_kNVNKr~?*xDk3V76z|RUPC?+W z6Kw#f2^Dx_#R^RCntk1m0?L>nf3bAJWian~s|LV*d54@a)mq82hy&7m0jM08Q3?fJ zBnMxwZRN6M)CWu(_o7nB0oe`z3 zDLB@zh8l+wId)r<le%C`LWm$^3;weZFQ%~Ci4BA(RpGC6&A~3g<2W*>jSwCX`1MNN&`Cr zZd+*VcZ*WJeq+L0zKi18=x-8W@qvI_sIYLJCV3M7An+wnAobVx{#XI<$_;qjJ?YiF zC-8_m=86Y2d~l5r;^RLtt)E8z0dWC^L;p_t-A)3S_FtO*%Tj*>fj=bXUy1tnK>7c~ zdAefqpYYNT#rxwG1<*auFQZC2k>W24>u*5x??LbJfFey*s}TRc;#7aX^Vht5@+g1? z`!Lxe{sT|_bx@e<9~$G|#r#FIzp42zW&S3`FUQ&Y@$#E1^RHC+rw!*7+ zc6NrlBjBgU?`#hKYs-GDb56$#&c~DM?f(nomjGs%{K<%|-tVV5!v}fI&4$GPendt- zAgEE$a?MA-7u1`(D4?^-bjsh4cm~*YWQJCB_`jEBFHb;DZ?<#Z|87&f_&UGatK%A7 z@5p}8;g?tclI7R)?+*g~OO}7h@*he0SBQQ&G5#gXzen!RitGQBCIXqmrKy!Zyg8MS z{-4mte_S@Pw}9RgcfVx+N09f|;S1z|`s69x!uuP$`2`t)^Uin(7|TPIp^>7$zV-KK zKtQ__tcAr+?H}nQKfK0&7xOP={^pb)Ec7qW{12l1L7xAAP=2gT=OMMim#8QjEfL1fsBj6x&bae|+RG@%u6-2)i|`IJmCmhhhZ6fu zqw!BrLECeTak^6m1uEm}}n9<9WBB4AJYn{t{mqq~LO4(~9F_aWflX ze4`Hl-D4;wy?*rtC(+FtZ0~z8^y}~uP+lS#I{oVEL@9cAKb|y%uDg8ogG1QI&QYuP zQDlQ+%i9pvF6j`IT3bHXCLHzSdymDQey%-`C*Fl)L%$OV_)R0aKe8|XBQf3&@KRU# zKg_7o=e67$qEFFteG)}uvx?Vq&$QP!{LomW6m8>)mlv{k(5bn`g6k6i`nF!A_W8x* z;bTNIf%#^tB}AU%usb0}NTk|`L`QYJFPd6<_2`wuljes{hjH6GDD%89jE{6LcPOa@ zGI8wgA!12%7t9I$dZY)2e%;tsqmT;0qyr0sGQ2323pL2dmnsZ2&KD91D5PX6626^N zmIMDM>AUd4u|xmeJWx0&<{PU{670PvVW?27veQNj1uExi%}yZ7a{sQs6L`FzsW@ta%27QkIk&bKX?JxfubaTq6UPDANZILpQ_LgweqL9oB=Bh z45a}Je+>fu!ypmG59h55e5~;a?cdR_zlhBT^wkBmyo*kHG6&pc=tD(`3IzRt4yJw} ztcU+)(EK=@_nrU|r63$bAS|T{JaZ9B*IyIu*m;45wP46{+3aR9M?|6Tw%r6>T4 z3&l_PS4#{l5a?+4FPZ;jzW+mHrigpUX1E=dVpJF&7sT436U5r-qok4PHa;*=CgWdb zE~h55JtcQyrA-${|152_#_|xO`fytf_C2#gC--%AVrlpNpIMyG9N^EE5vJa)olqA$ zgNZ4Q5`*LCY88&b4qiy*ZzUr+9WvYCkvnIk6IxGFx9CiP;XbP?9Hn5s`5>3Ps z^-T*S<{@`zL`gKGq5^Sr~r?2<6>NQ z5Z~?LRJQuqzJ6Q8)MIEqxr++i$f3^@!>jH5bir_lHwQ|5vIoWPYB3{+_ggcNG>0RT zJ)jsBf*jofiQqy`(a#hwBWGi}`Y>0JG+z_pK3XfbvKX&4RT@uDqG7_figIdWhgqz2 zZDmfsy_2Cf6AhVqvA_^_qvLT(OlK`~O37HH(j{Ox=x`T!Qs|*3+doBTiyqj3{w~OD znRub=h9@ip#=eEZQP4IIE8&jR*KT)n?Y?9@Pq~`%B-C_1__Ddx=%-ZW7`r=$Jh1&k}M7fF+3I@&&>e(#lD14U#`5mvwWj%rU7;LPF3Jm*?Uv zve=q9ZWCzp7!PZim2*{<>q!P!sy?k1i4ERNgLGsxo(7E?bzDeuW$^cW7^r!TM|02a zl(jrFisu>sph5~P7CoV~pd6oMTq=G97PgMYxV-8)(y@EUDkfu@Y;U3_7_ut|X`hdD zTv_VyQ!|qmSPMQFU63vrUUD3(wNV;}s41-*h3M42Jx@(Xrnel6po=tultzf(T5PPw z1-(_I5e%`=k;PzvGD*bJy8#Ln0bT7M2@(Lk7U%%|;yOQj8%Gx!>e@EmUqpl~9{sUT z5Z9F9?skE$Y_E<}=}-<1J5seNPS`nRs1FjMa)Ay*oCd4p^ae|YDfD9CGryo|t*E5U zZIC)HYp>=Wq`XT$t9WiIJtTY}Qy|oF@36Z8NDRFqM#t+?!9sULl)a_bFvb#C zY=9-|D4C8Ih1*Z=!sW&R<+;8|Z;GYh8dDZxuL~oB(eTxxHBxLo5Iegx6mi8{uez6P ztDdl=FZOZ0qN%oLwUakJMM@;D;*OAlx#fU%3U|RDn(1V-sdr~k>sSwu7!h4i|yGY?>W8qWAJDU zk5iZmghq&Nu4SJO7tpYrnm=O!5)!xSp-5OG*GwuSJ;~&o(h*xdk}>K~>Msf4!G*E( z40&ixW30A`%kUAe;c^tO!Qp^mM7d)@b!>U2`eD|U9YU}Qum(=4KKUd_0ad%Cg^ z^eqrL?yDEKsrCGZ9+ScQd&GVTgu`E`8MJJ4(?qVCcR$S?`8#hdTrX|gNE&<)-ywcW zXl;(R4i+kvOE6fUu&}+(^YrIN?wQ}~yL%}S3q=!katLVXR%7thPFYWs+~c=D%UVS) zi{#!=K^+rV%0oip_cq)R@kD?waW?#AlO6IuNm`A9Gfk(u^j1 z#MlLHXXzakST#ggWlK4Z-0d~_IzL1bfQkg73poCqXq?2I;P{CmFzd%XWs`5~ zuS6(scTG=s(0ZKe<_S$*1Z0h`N3S8_=(qGmG33kGs%Jfz2b;~IT*o2q=LEU+qG-ly zMAKB$hhdRYW8+0;S#Kl14J>-sW=bsjHzs`0bR;S#vVOnizLGoA1@*-6obGu1xWc^-wt`N<+ENLyX`$Rb_rbsO9bRyO2(n$B|2~_D8lKjR#=S4 zNglR&V9WJFQ!jZ;=9cAaG&xS+n(>(RsGpzT1Q_<{oO9Qs;=Q0zPj*fuw%^7h^JU(z zV@rc&R&4?m-YVv7(K@Dt7qaeaDywU!C#K}0q;mF4k^zhtc6v7qW(89fYAm^$X&=i| zx(mi_C;Dck1~Q3_8|ICe17B>c_})QyxC1AEJ9r6_#}YWbJjz5CYvVRUBwk<`T%7xW zpUveR?iI|BHkwkGoj6|p`s>6g6@4^S8w^tw|83gG_bc_T4uII*gZGn@&lmiUef_5; zzd-f`i+59&I06|E*B-H16b2U_>G#;T#8 zk8^M>AGDF!;IIdD6{K>b?L4}PD4k4z?T|k{>GULWoeX)b+#8r_rpz_j+(SH>TYAKO z;%A+prgI-qAgy0*@sjor#Nw`J9vMroYFLFCi6(qi&Y9;-lz(Tu60aAQ6*nJNCl$cM zEJSGENxDJB&TmsSg}O6?$)a8nmfW0dgHb-0x4Tp+nqnW*++#w1+uzGWIULV|u0pYN zvED4w&b#Y5XFiyWWG8*&+sZ3#JyO2uS-j;wVhXdhF+RFF=KK(UG!g22p!ZBAcTRXg z3?8vZW4|YQw2N|ZF*PUGW)wEiy5vNyRgtft=!?m#$=iOkMqT4Be}{%p*G6`~o^40} zJc-I{PKCbl_=xV3s9WRWgn4DeH#3dEh&q0~vEOcKa8`xAmc7ivf+JU7&~)^3{FR>n z6W8m2){!tiNACazbF-&r6|vLsh+5gfM=HdX0R$B}HRjzD&&ca_9)$Vw2M7_Gy7G-h z-XrcDHwt{}G&e8AM4u@gX1Ng zq^oQ9@U4)$AY)LX8=P@g*IMLPLH zDUbBYPd2=rz_04$QRpIR&Os7&~V;UkIp6Y;1nM=4kEJgrEKb6Sal186x(wnjj?f&HOox_r*F9#FU?s5x+&B36IwTcN zz9&;_2Cm9cjH4UI>Kw!ypr`!$Hv zJ@af>CcG$ae?!W0u8Jkc=wZe=FLl%X@? zUZlZ5SU}=(1%5IOr<tThd-%n$gF`HJI)vQ_U2U1B`C1`c^^`u>dk#**rGO*cr@+N3Lsj zCb-oXepd~&Ce?FrO+=%QDGCS?9R+LF)^iz+$Bm3DBmGG>x)u)XmGjF05A!~KmZT^I9q27+~3ms(Ih($sX4*IMY}q*z^Yw`QZT<- zk-9DO+R-DKK5f*K49L0G?Np?)%w4V39pNHMCIuv(!zwLBdd?l8_3?dOV>M$S^=zO~G4?nPADrW{?3*rGIL#fYKzhv8 zo+h|!)4AULdAF^D0rTNiUGmY4nGF3q(_W0oYSQ5HPP4taDwX7DTgtuFWc#ffQY+%E ze9o2D?EG&o#_s~+GI2d(-V2h@D%#E-_J&uuUp_!(eE9s4(Yuw`XJ2mls4(BTlA5|c zih`)W5UQng9tMR@_d%*jLtIxpVI;skvlX;DdOkF<9LxE9ZNYc$_!D%F*9%fkIW%-w zyy$tJ4P|ys0C{msMbw@O(?tf%udSli&zAWhvDXth2XV}HezTXQVSin2s&A(AzJ_h2 z@$;GQ_k8U4`4@Z0cFT*iF&Y6wFRvS_@+7-4AXa;uzF5!u_i_b2qoau`G}<`b8aNN; zfJ?&K9FVbGKMA!?2$DHp-1H9HwrSj5^bCexV^PI6DK%#$EcL`GN5?C5c8pEd`rZHV zO3$BKy@aysdA4{snB-GRU~3ZY0<83ewIhBLnRG_o5&0!OV@LAkskvSOl^0e-Q1nko z4*(1TkU)rX0KDtq64sf=#xAy#tNiHBK&=L5t|HkHH4;a4wKCW^N2opCYaBzK*jo1~

`?2}VWi^!PRP?03&b33z0#EH!eZd%G|t};0cxW@ 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 ADgXcg literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/index-connector.png b/docs/management/connectors/images/index-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a81a7c0e7618697415b64017de941b3906884d GIT binary patch literal 157290 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:vUBNbF+oNMo1X z_ALBZ%mx_d@PB50s+>QHOW!8Lidk$c%0r_m4NBmWRjO;xXOq@+>WpC8S);K`5WMB} z{pv4aN#aqxUp%4*4Rb3TUP6&jQfrf%V7sW20>XfJexh3Q*-`r$Xm-^hVKUM1lr!Z% z|2c!?M`WjV9*XdDkKPK4`-yIwhh?oBqgEaBXAea{2t9T`D^KmavT~j}7}?p?9g*%Z zrV^GecDPotRZ<|}9r&b2;T{)ef7Nz%&O(z>%NP?eRV>W6%xJKo%M|bn@ni0Pe@8`+22V6OL?KFlEYK|k88k_7<`Wa4 zZ1SK3qc&w2#GdmQ`a^ma1K!X}pB*)il-2Go2{KtNJ-2ewCc(9?B*xF`Nte_)v2QTg zk5|!h(L_fVUUGcnfK@E;+t+VLppj08I{mR6&t&z-O9Z%i(J)E7tqH-oxwl_jYaA;z zw44ond3pPXwOyz|xeoKO27j)Au;8b!X9qPe!F+G((;nBBoNkRw%v1FeDa`LR>R(C6 z)K@wma{j)Af55Z>X3U^xCiV$e+VT#`q`UM8%62&8aHTGEe7D?FgV-!CT3*L0$#Nlp#by}ZD{aFnTgeGasM1W;5`nJ~Y~vjKTdCwMqH z)g+WP{R8Q9zalfPPJHoETNu&dZVOf+=7+egE~bR?IOeM5e-mhg-$scV@+tMRZ!a#^ z?7K*3?$DX-$NccJsTGmF)@W;(%Ktz$U6lJOexHs}oONXvkgA}rD`efQyptzy7$>uh z1ZDc2f39zvUCa&|&e>z%^0P#rg>~~<=7O`yvLxxnwursSv~T!iy+aN8+9QRauteB3 zhIRaT=uU5ySYn{pKBjgxfUWjzgMt7LUuT|;zu`OoxJsUYZSX>yjd=eORcL)NLO_HP zgQ+%{pdGYlXCL>-)o?&L(AY|n#f_sE_ku$`)wC^1z)Jzk13ko^q43(vH?H~Pa|g$Ut4-QX1Er$HjVEt6g~@uA&))uma27VlEEOyH5Kf7SRWm=I8`V*yX#3t>V?sb< zVnj~6Gw)ANMosPZjbiS@=%>F8_kUi&KTrPQTQ-ejxYV1cnGe$@+`N> z0q8*O8F?wGw*cgqMYd}sTb4FlS*&di%0AXNdttd2L-?W-4^}bGls|wT7d<%zJQSLN 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

7ax^ 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%0D08DGVzzNId_~n)9 zHz_0z(6>_9nLF}4KSTYoM-cqda3+lcs;PRn*gWDvZSf31X-K?hQKO}&e`u;AwpXSN zqo=3$PDr?=r8Q@Cak9UX28iB0^6rFh-!zLVD>cmGmu8gbji#zz*@T; z*`PqsII?@6I~GAmPAVdw= zj<8>Xp6YGm>i0Z{SY+dqDlE7|!_R>`qt5}!Vrsy`#RiS(zW*E3B-SL2q({V~l@8usC1}*@k4-km8 z>=ZQUXA?m1J7j#PZSKyTUU@#Dwdq(KP(!lkI#<5twslr|6GaCE}p=j9{LQkul&Q#U{-Nn78%y+mkFz zkB7-H$dUBpED9H!6AG&CSZ)ia!gT$XWof+}4s9Xu*##M}!EurvvC^&FT1eAT>3noZ ziv$kyo5O@EIK0M8$Zz{e7!mO8%0}aRN3F86@l-B}Gotd&HuOGQ+u^&2z2WQKoP5?y zRi0DCgJ@_(9hD#!wt-hX3p1VPR<0m$Nr=WMOgG6P@btTK#DxxMJ{n+RdZ5nC8TT`j8m7 zI9uoP)RS*Cgb;fFthJa`JufFF#5!$IIJ)A#%buy&E0l2yg86xn03R%QChxM!p;yyX z*m%i;44ei(=M$E>^C;#{#LqTO=|GDUfq{v(|Eb>-D!9Op73;7CZWQ7C>kIoZB0bp{lIU#wFrIIdrd43pr(YPca>&p4|hqo=Q9YxJIFV1o@rg7t=K)Ak}OZ z+0ZxCby4W$_oi{+iS0aYtp+))tu(*U_bTzdYGe2A%W#nYN_zRez`Kn4=f?9lq*zCd zA0$xYq^N6eZ!5o;;`;KmP;lzX4)@`?eJC45`PyL2AOlg2*>H?QALg`DT02@0<%h23 zY__U$8`KkRUbI^>*evQb{=<2NC!6J-&eCcce6RpLvHps?`qBh|Uh3xfK`i4W+Y zC*6O$eY`Pm7|u7p=JU<|#S+GfRUpF-Kt9BqxPmbGT!cZ6Lmxa685@MgXVtd^bt5L~ zuU@@!07;}BrPt^|Xh4gFK}_&a!eE<8I)l;3L(-p5^3>xPLDxr=e^1$c2><>|S(=Wo z&EybxQ;?hS8aH&XQ}p!IIfh`bha>4Z!tP?F&<7B5>8GQdm#FHv&Kg+G#)j=}gIsTR z>y@nEZ1%jrx1rh1oQ87a=z*A%qp3y?N~%1)ea3N<;hXv^a=V&k|0(_C5+O#(&YGcD zTw0bHt~4w80pteOgP0>yn< z(P6P41f)w)EM6!J6_~oBar19C|K7LD>z$Yg;N%KN@Gg ztO8=3?%E!!9uACX>u}pX@&S}-My>DP#OCRQ9kE!{vAjB*s)NX|bh>Ugv6w&pGMOh* zY^ciKm+YN67JxY%~#=-E|R-BPKxfAucrj%JO^o+Z{r$U z&%E!!bFjQqT|~(uny`VTS7fA%9bEo;dw@$?9;kr&c&Uzh{`k z2s{~aVq$|n=xF5`dEJ*)UyKM>ILcLM$U@Zv^^9UvpU>AMA}uX(gZv zyvq|C$$DGhY0ayhNz9<&⋙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 HFJAvI literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/jira-connector.png b/docs/management/connectors/images/jira-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff5ebf83afc7699e1c1eb79b0614e336b9f14e8 GIT binary patch literal 158772 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 J@@#$1{sYafk2(MV literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/jira-params-test.png b/docs/management/connectors/images/jira-params-test.png new file mode 100644 index 0000000000000000000000000000000000000000..78d51e823fb61b9c629d932e058a708e8a4d73c9 GIT binary patch literal 186073 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 literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/pagerduty-connector.png b/docs/management/connectors/images/pagerduty-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..2e5d240f42c11016d9ff962e7e3dbbf099973549 GIT binary patch literal 136276 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� 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 z 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 IWb)?!0R7Gw=>Px# literal 0 HcmV?d00001 diff --git a/docs/user/alerting/images/pre-configured-connectors-managing.png b/docs/management/connectors/images/pre-configured-connectors-managing.png similarity index 100% rename from docs/user/alerting/images/pre-configured-connectors-managing.png rename to docs/management/connectors/images/pre-configured-connectors-managing.png diff --git a/docs/user/alerting/images/pre-configured-connectors-view-screen.png b/docs/management/connectors/images/pre-configured-connectors-view-screen.png similarity index 100% rename from docs/user/alerting/images/pre-configured-connectors-view-screen.png rename to docs/management/connectors/images/pre-configured-connectors-view-screen.png diff --git a/docs/management/connectors/images/resilient-connector.png b/docs/management/connectors/images/resilient-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d216d150f8c1862601e976fddcc5f78eae595e GIT binary patch literal 152361 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 i}u9xV$CAk^8 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

    UF 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 DaAFsS literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/serverlog-connector.png b/docs/management/connectors/images/serverlog-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..983bb6afadd65b3da5f1137f586008de040eabf5 GIT binary patch literal 68666 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

    Es!kB5#4ojLknB7r@QxHMP` zGh3$A^Q^7iBMrhSwVLKN98%!bWBnU{aIj6|jclJ{kq!1wl#Ct+JC{muJ?75VQpUyW z6sT?Jm$&H_R&w%LnoA^sK(i{X8=gK1cBja)w}aB+(;@Z}H;0;s-3H&>?0r_{XndWs zYs3gN66-rRSwSc(snX7bBO;=TMzr|}GeCkhVdFsW9Cvrp;Yd*-*w4y@6K3RW<6;iU z^Lib7X>5Rb;ZVTiYjrWBC@@d#h8`uRb}1X}W?}@IwlZ|B`8!9CGAYZH(pTl?32u3< zVO_GBEEBa@++wB+{iYd9?-ILcr)T%{qcXWVD$G>w3Z3NV%NgS*8}~1m``p+DZ1~fR zVv|t-+#>e+M%Ts-qhmYYu@qca+-jE#$l|)&s7mP;pxtIoQSuv)uB=i~pr@(yz#1u- z2w`zGOwZO~6u!x_C3Sl!&zFICS=RGY-Q_e$@GdlYtUPrL|{YM*avjj?BS-| z&u%s@xIiW1;Ic@w>HvZ(r*9IHs;F4s5}vgUkGU&NrK;-9Cg{5B#k0fx!~;|p^QRZ( zwK5q@I0F7@f81%t&iq_%@yD*w#P|a3uP3+Qtqt)6>#co){K=%nk$~;5QReIVSVNH( zL%sb<;F?$6>dLT%UNQKf2?^+Y8vgnb|0At@s2%+miL0f-KY;qz^B4Ld>yAa?(#77v zs6JJ)e=IKgvTX~bKQSj{d72};jf~%~smm%P&dCWp3iSdxBp~J%^lZ!DajZ2sQ-+$C zC2<0^e$*&@4t)`U2&!&e68Y`b$zu)tDqmeSv=Au0_A7m{0{q$Nflv<(M5nEt{ckw1 zT@(-l+EXtLIq#czvNhRuE`~r_p9(xw23mf+zTf({aZZ{96eeF=Z2Og0^s%`4u7(A1 zPFnaa0aZcaX%Jkjg|3PKxIh||nDEA6BSHMo=;d_WnUEWv>NW@IDOhO%&tXiVR~;-R zaaAw;7sPIOf(RnW#k6nUpiPVLjOG{c^U&6HO9obm=>Wj7BPerf#MI`j&gNPHoD)yO z_vra`IoXrZ`AViYj;8l-#$QO$8cgh3)f$mqaY5XIQtC!vo82qO%*}Fs3B^3Iy%rl;4p|REIWF43 zb??!gtI+%xxEe_AeOV4If;2S+ZJ*ve3|X`HTMawi9ojUVu`3$lhyABdL_qjoT=zg< t1nWNW@;=mLYYIAo*1wHo8G$Q8O&PCjyswjEAwR~SY%Co1m70;_{saw@t^NQ2 literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/serverlog-params-test.png b/docs/management/connectors/images/serverlog-params-test.png new file mode 100644 index 0000000000000000000000000000000000000000..762721c7ead453272135c136e3cb1fcd4fb2d899 GIT binary patch literal 120530 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 literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/servicenow-connector.png b/docs/management/connectors/images/servicenow-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..9891a80ee758fec2abf750219116b4ac571d8df5 GIT binary patch literal 158511 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�ASVqhy9WKd33LF;4$o{40TEsvm&$OGiF3A(F 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 literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/servicenow-params-test.png b/docs/management/connectors/images/servicenow-params-test.png new file mode 100644 index 0000000000000000000000000000000000000000..79f1580c873d2647de495089041ac11814011ada GIT binary patch literal 184611 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%0A2B?K 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'&rQ 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/servicenow-sir-connector.png b/docs/management/connectors/images/servicenow-sir-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb137bd4f7d96977da185d5722e695aafbd18c8 GIT binary patch literal 159898 zcmcG$by(fX-Y5(dhvHhGNU`GXE=7wJTe!PRad&rjN^y6$RiwDPySw|hdd_*zefPfi z+5Gk8Nk~>ElbQLsg%CLzvG?#F;K9Ja-b;v!d;<0sbUo#aJ zmXi<`CX%zWHZrv^1OpQfNl1cGR4~Qze!bP=f}i{7Rmjfjijr0R8RzN6( z7zz`Q$`3vg3KNy)6BpGF9o*146oh)gs#|be$oTJ-I>N(zI&jQ2#!jOv_Ag7POG~eb zudS~ck6_s%He|6D0CaEsDvb{WXr1EHl16K8U=WC4sL9~TgK-i7d3jW@1lwnodmChd zPY?Ca;-y}%uN|Rm+C-b+V0qc;y-DYGa#n(~M6x6a@4WE^kBu(3V^Q1vn7)Q$1>3E{ z8i$|HqRQYIhVK;0TCm_5+JnIw(5a+?gUzGXF<&_2n&8`E3`FX+i-+5R547_TCq*%( zVoUe;r?3OxQL5*@pn*}c#HW~gg{GV*-I*5OX;=k@_C0*S6v`GS@86+&;*Z+#l9H*{ z;|U^b{w-u`!czQw{L(F&m0qJ~qZT)2lV&68A*xyq^#l6|4=%S$`u$R;&GgCIe*&`^qx^1V^wA8 zJAY(#!z8L7O4kV8#Ng;IeoAe-zh9;*f^!$Bv3moHU3X=s=uv9O^#;(C>dv8j1kw3y zsk}mX1QMiT3Gyzm4T1`fs#|fUwKyMaWR4=fW$2Q#)0m|TLc)S0qQF%9;ERJ}L%u^r zdFP{1DZn>@=$2`aqZm&d&kWd$Kxg34%lw5ASd&|W4)*ER=_tlojIb>U<@vzh(vTI5 zk0M@jyB|({?kiYiK7>GVR;B7Fv_K8E_h5lDyy;5vd*%y2DAH_j69HtL9BUYJ9prQ$ z?lb5YB3OSPaTJ8uPW;YyLeYN8e1tU6gMz4(;CP)_a^Q|WylY?_h><>DY~a)1C3Uje zpf5p12~zBVS9B8Hfdvx70);Vx;r9i5qoE97IEAHuW5fHBWSdaJNd_C{Do4@W4@^Rli z(Qwj>5QLD!5Vw%wZoKY~8w?U*2BH_lJ+Vv@gA&_6)h0wI&?mTASy>fWW$RMRNa`T! z?CL(5B~3R^@x|5k*Bh{L29y$2d^)9Qh$f6(m8Zmz3gstDAt@-$Ra6*J$duFI=~WXzBGn2Mrx*JR?XU!D#c38Dr>Sbi$C$h zjMG%qY}=%4nyc`;Xo)Odg=G=J&*53Rsg+z0t(LSs-gr6%}l z5}*$PGWY6WqTW3>DDu52E>&p6K?p9e{QNt8UlM!3peGd|QmFkkN;o=$ZX@-w8c&ATyK+nsOe z#}VRoLf1o&Lx&;W;ApVpFtIQpGREUrG4oh+=!mdiun({-SUB_+t|prunbR<>Sh&yJ zkqHNN=@~E&;9}$WkwcT`ki*9}&8L<=l+H?x8A>+VH%c2;8-^Z^7%oVo zXRBcJG7zlQQG=zeSF2TZudS_?uGBD`H<>riGw-PyXeh37)%#j?Q!`RmUfr(mSEIXN zFn?6pWQwrZJP&V4ZD~E%<#^&q(n8=!pirs6QxIIB__fJew%&MtcYb!xiF1sA1Yenh zg{w8wjE~jjpts0Up@X}b(}?@zyZh14V~m|zVA1@3Sxp)9Xw$@fBtj3_oMDPo+#sF` zw~Ei9%q)zRV#B^w$&%V~dy`wE)Ux^VBkvIJH{N=;CF6-?`JuX@!A!s?*r;J<0S~`h zlUsjVq|5WVNHDNZQEqChqOl{UyBEq2X1>&JO91oL&}})bMaH=W7_@Y z^X>g@wFMxhRJe2&JQ94u`@uWPg8l~0QHlr+2MvHf_wgqI2DT#V70nzA$EQYeXNGQC z19@>NN;VcA2mL*dNaCQrq8-FQ7k^r~78DtzD7Xq(uaCNT#1ST$NV3Rj?WPZLxLC~H z%pX1pl2X_yY)w*@6fPCUG21fd8Yz#sqaI_laWvBgeqd(b(HRPw^Pan|irOsQ#IP+p z|8V~KeEOUa9RghvoeRByoKB)O@n;sPq?u$dMIXhf)W=jz7W2Wpy8e=dHU{t7)24o1X6K49;wk;zW^P?Tzn>SIm(JlyUa${)$(a*I`yNQd^ z?T&IA4f*Dc=K=qO;efyZsDNdD|0g+xpIW4}%^d@7)8*62(?6z<%{68$)GynTwcYEw ztA3Vl9jdJ?l<;#s1733NG#{F8u1^k~tU4`GtQ#A~tv7wXl}$WNoP3>RXSFc0pj&zJ z99*JR8PFJXv?Q}svN)!RqO@KxYPbAVUx5h>ZAk!6_`dkQzGD8x7RIZuEaQdS+zI!D zYW{kgVq6y4G3dyuu)36L(Qh%XVYg@HuFaC4*{gh|prgWIwc&Z=IRoYgvPR)eVL6|P zjg7~9joiY0{&>5+o%PONU+Zq_S`PQVlZkbr_QWKKDMYPsV|kWdb6h$f(_?j5R20l$ zvkSaOz=OsMh{*UV@s)rAC{xSk#y*?nz|r&?-(NH^$yG3$MV#@OCzmJ9%dt>&g2{$% zQ^Vn;Zo?a=PWFV9!i^QwbzW>ZGQKnh+0cUM#E6cvUSI^Y`uB$`ayfy zv&`Db+PZPwHg`XNcX%h#l)%{PewoXO`|KuWTbJ?mi}bL@A303H{luK74MMe z-H!Z9?s^}TY^7{ymKh(do6%Y60ejl&0oO9OtP_-@rq{>ICtLQ4$LZ7R)s7pC_Uu;5 zL)MeB6Z;eHX~HG1%k9!6-U`x+K$y^%oa?CLiZboji=bD+Sr~K}w-xbK%GGj@f?KOs zx7ph=VR_+EzAbm07r>Lm>7>u-(5R(0TKg5!=xgY!+RN~c`sMA}scbx_WS&3uc4Q<3 zZ1dWc1K7%m*zP7NSm7R`U@9w{b`(6z%~uA=HU9HCL_Vq$u&Ezr1}u6FU^bANiBMoB zckdXOuzDWe&Gm@Zy^vKqVDDA|3>=!fJ-<<{;zD>^L$9SN7U8etD0(i2VLhUFCoWYr zd5VOOS%<6I2>?7U;3BlZUdZ*CU$b1FTA)8+Hu`oPdO^%I5lSq?JlTLu-cUn;gwfZp zU{s)MSTIQN4`5KBD{#=k2afmO>o4GxVDJ8Q9|8<4$P^6nKhMa3&VROO(DA3wzt8Vt z1HoWGztBL3b2h~PJPnPN{qBFRq5iai2`UInNPx}?`gVqfR`w>=4sjwKC7>H{HsY%G zU|?8ee-3boZ=`3S_s^Ls0vrHerMdL2E$MU(to01(oGt&X0St`CnG1AjY3QI!T-pR>{&WV}M+Rm7sk&}~?o`H#;iHR2U1g*V`m4mJ`t(EbT<7zBU#!1XIY>H(*J3pXQX4G z|L?m&U3vc8<&raXHnaeUm|B8h1{#Bpk(HH$=U*NEucrSq9E%0}kq^l!y?Szu`U_1{oh}z&7`2r^fC` zMzd4g^6rx-1GBNr(9`Zxlhf*M`tAFcqF9C)Fu3S{-o0TUbTP1a-YXxX$ z(%wK{V?`SAH>O64Qh&Moi#^2WjoE?b-iiX6U;x_S8*m1LGl2xwpDfukGhNL52uNeM zmJC$v4-R~503uX$SOkR27Pn`d#Y)STTk~R}pJt-W%hOc0(AwjERqPB6ScZu-DTY`gA~wvg)ai@9 zf1`i&8eB3I)KVoKmB}N25TQyc(2E+Yn&-yEHwcJF`Ub6`HIm_Q*fNA6rgm2Dj=`;l zLct=cPUhK|`R)EQy?|QLIKXSNy%(o1fj1)Qt#x|qH^or!2ypH!XE$&3?GzBeMnqKg zY}vWgbwkd&C<6qChsPh`e!Ev%1AmK?1U5eDU||S=xujNtVT+?+Ru0E7e&5Lb#ZCUt zYxNP4?vxZ^*cgL^BBLU@_lLrl1Asx1zsYCZRb3P`0*Z12zFWWJ18d({8VD??;M}NP z!2UK|x_Wsu5tYc7mH1X!IY6afkNaEm9fD+05l6uyv4*h< ztc<2t59}WDzm<7QUg!|%X!W4fvv2&wYQ_Blp-d|WU>Mt=dxK_3bs&t!I|s|m%A-M` zLD`1?{O!VcbT9AY+tP$o2!c;nP`gS%ml!n?Vuk6Aks49PRM;UKg??172}Kr2{Ik?0 z0!JT%f^1Q5ZPQyVO0Hj&stG^o%7V>PA#g-8hBx4uOjHpFY_SXNLr z?fsYtbe+zrZ=sbLoL?7wL#Qh~io)n)tJ52(Bm##4!DziV0xy-D6dnPo);aX80X~EC z7S@o{fanEd851oaK!l6LdGVjAG$huW4#&CezS1K|c6llQDi}d_XW*!gZtzXrOUeXc z)&nd`qY62J4*>xT54=_LjU~bQdXv-W{nfC{WI=25PYB`Rxr9blQ}%&Nu?55ehxOf--p(kO$x@6eWgOD2!}6vUy#{LKhbq36nf(!K5{pV((1`4()V#%VA|c+`w#0OzP)q3& zfMCV)=;|-~`Kl>zkf1n`1BA?mkVY7MBQ-oi4!`=$8>-R=hggS(hpY1}wMdM*M|0hJKaiTpY9}Rdm%K4 z*H_VH4d7Z4cHW>XFt~0Ga0+?BQ=al35N|%jt-S@Rjc9LddBKj>Mht99nmt(`^|v_h z6GT@q`~z8ULZg7Lpcll_8#c56J_@X;;ut+MT{mb#Tpm{cEGoo_kYHI%uJZkZ#Kix@ zk3V3{Zd^ZqvCT1w5n{3hQdTGlQ;F#klUkIDyaCH`VK5-XH_9Kro>0w=(KM#tQdn$j zGYLMa^XsmE*?Ql9BQk@t9~|+<3c%o&?jhZQzz95c(hDQffB^2-lnbP{BtkE&2~fzu z;HSweB~3Su3ENwEhw~AbtJ0^i5>jk*xg=MiA@!#iaC^h`@WCMkX=>>8YSTB6CT;?9 zpGa#d1|EsuFdP5>c;g@54{jx%ui-`YTdsO*u0%fEDPSNV-|wFZ|AVuMFxs_O~qzzJmAKzCM_-h|$dA-CCa61kx ze8=0;ac)fKeJn}mwEyz*@@UyV@xfvz({P2A%f;@tCy~|z{>k8Fm z>1Rr*R@;n|#ZnQV%6BN8Z#X$&?Iw-ILrS?!&C*5tlNe%x>vwbY%$h-q`3FnYYJ-&R zeaF+H~?DivBvsgzxX2K@!Rvl4qyUDm+v zsIA<71;1t`SnD!1)+A|MW@x3Tfd8kALE{4lIc%@EefI>Joc79rl$&c1hNOtBx;sZd z;Rq$G^hAX$NycZ~+7F~IE=S#HPWg=^@v9w&;s0Q3QUcJ)YqeahrT%&I+VeAwGa069 zQ$SdIyr5rD@%)vsu+>%>dz$1dUB=eS<0*1e1a}(=IimD~Nhsozj(EIPp01w?YlEpq z7YbQ;sWb$mVP2(67L#*m3>d0F6~ZRkuPS%UVUp zORQu<$w1X+-*PDQchBJi%vfsU$m|2s9Uz5FrsC*2RFmDdmnTjvxrexNIe^@TJs~DI*dpxxGQ)O&*mX_Z+C>UJ%X`^#N>%Pc7I&XP*GYynTzhiQ_p&bB|k=yrw3?Cq|- zz*`X72e3_IzMbfVHN4s-0)5-dbg2%4n zyn;~dq##0>@{q_NWWsaB(|P!9!xM+S4DOVYi)2U$SZ7Qux%1`7 zm-x5?Y{Ztr@`-NE#^|g!5e=?k9AIvN>CNhEC~-l=!l*) z9#PAPWlv?92~V0W*NlTgz#2#_TimKt3-Gy`(>KlY>bPaS6=qIIiw(o3SFMks*Z$ZQ zuG7F`e8SUYvyMEd2V#_Hssw7&-FAiBHjhW7LA!uyvlu2rN!3hdW33KPO-IVC<78q_ zjh~It}sRhg&Sz`6ZZ0*-Rd?Lw1Y!EYAm3 zH?7^#j3gLBcR41b0ZQD7f+Ps23yB`%tm`E)1|Yx^A zbXB~p`-`2J*n#V$@jLT&N?6;t0%^=}(~_yiadWdT55JTP47Q7{w>y1o2JLmuhM4nc zM>FI%U+u3sDw!5Z(2TAZ@AR6}w0=uh|YX>{-Th>YgB7oE=GDRk0w`>~6AziGEv zyy}N2uUGH&&DAmIb!MO2=~U6A-A1>>@ha3cVi%)*VqaY&6E3qsG@2|wS${0~bV<+L z%|!xrwc()haq8K8S2EB^MDlt?I*zL@6gOUBAi=9Qj+(6?j3u(*a@TWmB@0J3IKtm>9)IL; zmU~=z)r4#8pQb7pI&g!}$}Lr`DLmb}uzP*JRll(uad`N8v1Ff6I|}}wS!0yp{yYrN ziGiBa6AT=fF&a*Fe(*3jiTiuVm{AxczlUtTUX^j(-vzFt)&wn2988<%*~S?q_UKHh zSI;f1<*0ar;xI6XXIf}WOsrN*0(J(YCxBL9&1ip@jk*5O2x0v|mL!A8*x7d}CmC(} zS4rmHPB8e*3?(3q4vt_3S~#K0KDM=0I=Pew&NXPxg{(LEOn;Sstnx}BX{EUAl>uc3OFLssk7zE zv=QAdJ7rZ-&pu~Ou_ECzY0Q+ZuBl-`Q7M-ao!%Z0GgNZr84oDM{|Y)@#uZHW5#J;e ztff(Hwh$O|($}Q+!3peSUo|tN*;%a6X!;@j>KsZ=>aaf{T<>AcFLU3EZFnV`Msm+qQf9PTeRgD`{;Sk*z)VX<^PFea{&9oJOa6_f{xy;?ZYi5< zwT*3C<7&OdJk!N~ddkJ)DfU*|$g)AtfRg9#FpQ1IO;=~TWV)0-pP?JRLI?H`!I#@) z=R6~V#gKP9?ZbVCv*ocz^ED|ob^5Ky9WO?Ch##4T&NF_f^tus_Hg=g`TLxIPl}=j6 zMv;3Kiquz6)SB9}GH!CWg<3D}K4&ht%_emb{7naPkb!ig%sIuuJa9K#nkKVzdr}4HG5Irt#8Jm;br`)^?H>i}7P*MtIfPII?hkh7^`2AeqN7_3GG| z|D9XkP1yoGjCMgjK_j(GNmJc9l4u8jMf+ZcK7ZQo;nT`jfcM?_-gSN=NyvUI1d=YP zpSByjKBdtT@{>+<>UYA{QAZqRzDI}pEoEk<<8L6ETrho6R&eQXk{u+^C80T5Y|us@ z)aiz2%agiIcC1k5A?_3mu90MT>4G(p@p?KB+M)+cr5`)F-;H@n<#Hm1T=J=}sVMWC zOcnYdzGQcJ?wKNd?8&Uw=G4a+NdMq306spP4m@d=vfCXn9l0TRz2D6`xSU#;h~B0) zs8MKjmQOkFS5(peP`ujcQ^hC3m&!Ap&$@dgb6TH-bi7(c;~+h}LZ_79y3J{z_vGGS z=$FS~sA7852*+fwXVWsNcl~0+^hFr3H{KSe=v5V%tD}2V>Dk7$V1~)Yv=7oMWXm2+lbZlQTcfjRl@c!+uT~!S4YEW!UQLZ1L4Y}g>Bv= zHSz-E5T^l~5dbo7V_|aFj4yZQn(5(1 z0RkNed}*KZBoh!D{pA7z$_A9gkGWQi!eAU+x!>_%d!4&ZFm8xOAopr8v>;-wPyWNdD~N%3MAq`X*p=v@QT zRVN90M)q(H8?q}&)G43NupO#UZeU9n6Y^e zqo21t5IxGTO?u4bFhS3~MXTH;8WdKtcZUR|@hCm1Y%z8>N^LMX=5kwoA2{jcJy~P1 z(wZ`)R04k78>rdgNLRZA^6Fo;kQc_@+v*;tV%8(tMvR}ArhC%w;s3}bEMY`l1|^~t zrwUa^YrJz;vs@ng`{F!KaE5n5cx`+R{86cs->?4{z7JN1@B~625^~yewD^Q94jP_1 z!GkwanJknBY;FUImQFJ27Y@L>xq~AiwL3?ZYqLIMOA`WOqlgN2wn%A`2UDZI>w@32 znork!hw}9t?@;m$^971Z&6S5TjLJEI5I9l@>BMVOf;KSZddd2$Zfs$in#NdC--tv* zT|{i5)z;Fxi{Lnribf}py?hbh?GuJBF_%mJw+*1m02q93N~R~LjU1J7HT#a3|0%+m z7q7{goM5GF!Os?M#zaAj2%xAWPR-Me*NbhCp`2rf5EhIUp9%v*gWL(5WIQF^?UH?z zD0P={okvTX`}wv?mkP^tCwzv|KtPJ7d(6B&Ujm(`Te4YzBZt)yWs&NpVaLGnLdPM_ zt={Qq3k|=YX9NHr6g*I-1CWJ_)+|y}=+`RYXT@!#*DkPZkM$GU+oQ) zhCluQ?JMLWw{H~|z5K$=on^Z%&h~%`Wl7WN=VE1M$W1&|>%)Bb8)etQaD!ZrP>5KlvjFS(-r-#tndiI&tpwePWGs)=P|+BH19#x;I)|A^dKkl z@_xYihnCLrgE24 z7$!B<{pI%iev=bJOgP9fUnuzBs;qIdmicYV#qjj!@U1KC1FB7|cCMLZnN)OPSe{tY z*zMI;C+a}tqjURtbcJ3MceZ-#Mf@`vd|sn;L_EF$r?wpeo{ot;Nr@aGsBPr!ivi0- zUXAP4E4}ab%$bpGo-i(EM~*pP@n%fAY$Lv-m}e`d*hQ{tQ%1RoT~rr$QZ>3r^Ge}7 z=$^6XCxd*C_P#d0lEN3QvxTUbfW>xOX_11;O4CWKqFXcJhLbwmZA0mG=ErBJGzjHz zj%RY)!*rl89&skc{|AHDkhbITJp#XHb8n(B4S4ZIKTl?%lc)YfY$J+bJQi z%+*@vs)KyiYZ=qti}&bHF!Vsk>YCm; zoT%xG`m6P!M*`rDVsm|3!sK$n(n8*IG(il|UEdqm|Mrm5shZY{#E&y4i_2WnpBu$j z+ye`!c4#_0x_N)tejTR0zV)#Lb_ZQTiDJ$BZlv6~J^5dGLicv+RseAXHS)P%Cs>3B%=}QW# za0Z^(dp2O_a6bYx)fyc0v^(7@diRXJrkPL!s|`FgK-rh6;+UTLljW=SGL4beh3qPe zxk?H8jRw)u^eX)?cOf!3#@AYw2GqsG`M-kKg`XDAUDwEg*#xzkf=~qk&PYklC|{12 z7IIpri=hfexef%v34X48W(W-m28y;I>%Z9=DE2{duPJrFWF*gq)_+gvqX(LDq98!}mlD z_u2NH40BwI!wKnW>+-@WU&c#t!@;k9o5;X2M5y0R_Fjf84=qjEckVA5pNqQ5N?2?s z3~(97yy{D|MyU3xLD4#}e5K3^D|5N7%cWM^jLxy}t?oXv9-%O0OT!{G_@jyVe)PNp z1fP?ZcGaqHsUU~DJhd~K-9*Q0)rI06mT$f%&+#Yid0O>)NrJlOJ}IWh45w7$ma|J2 zd3bL;&pkOgACIzf!d{PH#9;XijJ4%{)|mSgyhk6R`MYbQYNKN={d#M!g(-=PCwnFL zJ}WD^qYdWHv0KRqu6pY4L(~pT2Cl%_0++u1XJa~ZzQECIk{-#_8jrpjBTpKJn}hx^ z#t$bRIt=U-4Rbt3>ljw+OosJNtBukfTb?U_(ij&pILkmwv_h_p_P9;Jz%%M)F4_aviMYHzkSUV#r z#M=XWx!6uio=wgnwWf7F0kD%f!=dy({fKXFhgxnJQ$R&c%*fF>L{B_FKkY z8Q1G0a$5BzJCCc|RWGS}e3yuV=bPgtr+Z90PH*Cmw#exkicKsz8TD$mI;FcT%F7UP zSv)S1lJT`K;risB9qq5Ud+GiR8c_*pRL@))BC@%QpBqLkDSgte%>|C~`f9eukl)qE zQAErdp&n8!g^wG>NL3VAXXuS)huaPbZ}s0fv$dIZ-dy*-pRRFUy;w%}qeSDw17O~+ z`5{A3A(Q{wSIr?PaVB$pywl)SZEQRqXwtrU-g{h0V>thWd*|~U3SUFb(}rxZECN@< zaC}1(aSE-^Kj(x%-u|#?P3lyh-fm_Egy^Pr4+4KPOYPj@S6#ai*Z2B+uF9ig zePFR5Ih?T`OS@RyVD_EkbgUA~A5A9XbzSf>_Np>z-`V+QJ+;pcH=tt&*-L`{cQT;> zWg(KUv0W6N71W!BLSK=OWmncwb0Rz`rpJ^i3l+ zSXokyq!z=Xd-(Px9LMr#rGejWOK#P|ks|kG7lAJ!R(25v=8GS%+jWd=zB&RvMI^xm z?wI^cSf#g}eqTfqv9OrVEK>vl^Eb0;cQQ)d^&mn=GiE1RJjE0%9(JoGnrrRLtQ>QT zLHx=O%qho+7hjx+z8|t<6yUb^@}an+3v$Gy_lj)~U>ZL3DTFHtuLR}b_ZFv6o%qI? zBheE8nnrDzyVapu*lq*Xc9dt0wgR|hpj$S2!UjOOlH{}-f=%uwvul;Di5{tT9uErZ z6&}8-!QoCM!5dI!?7CRca(T%pLjL53+3bt#)OY4DEgtR5$_L3k3I(@}Rv4?e-_2&x z8fX1}KaB~?qoW+HHQ_$pzO*WQblE~}IauJf98UcXzDuY$`#4`v<56P$gDG>YaWeE% zO$&a5@xFtsSFtnJJ^WqYcgB_U`RS~*N`~jS&)=H9iRzrk^Go;aJ;*^b>-b>+GBe!}yCA#BbWS#wsutcW+GfEEUh;JP6peb~L=4;tvEjlc; zazD>xwdSMK_GN%J0CU>tUcbJBlk*wX8Vie0Wi(F{<}t;$FVg=J#P!?PI5qai8iCmn zg*+7*{1!^Kv=a|>JtdXi2`H>)({+Zb$MF07HqkVy)kCxGwtYwN{Smw8x$EFB zcM-=;!&vMH=zc+n=-q3TlFhb#BfNS1$AQ?qvt$OzqD6Gmb#s2wu(^2O74J_ z14>faCX_B|?t2`l7xY6I=>qrJLna3>+UWmYhp~a|Q~4_>s<=Ory-5$G72-tf$&$x| zahKKWJt;sT_Ua5%OQ>#(Bd1U$9VPzc){o0Ah28#1&Q>*49uYW>${sChsjaqy z)8WMGi>xD_f$QAbK0@_@A8G_Otq1p`oNFo>Tn1S77p=3krmf9yu8*CVe!rveIum5W zlv}cZJg1_`&iN!3DVb6|3SC=d+$oUE<6^g%3}*yNXBEtYmEG#Da6xSo{Kwy`7}yzB z&$IG4oP%>k0kkN=B#(PuOnp|ZGpnoM_1Hb!);4Wl&(L5l)2tCHbFOhp$!)+qz#@@hx&vjwe)oP&v*1VA;bSl-pk_O1KBPOIIwACmH8Udc3x>L46G1gVvMiG%-m6;ebM)r5C0*MBR=lGi{SOozLS-Xi{ZV$L0)nFEpPp z&MPv{nYX&_;-$>0;DhmKy&VcgdhaAC^w&*WSvFbB4r|t%Js>lRRwdXje+pHwb#(%- z3}9&Xt3H_Q&&W{)*tjYyTf)Q{Keeq*$vQ;BJwFIxVlAx%EjCytUhPlrF9WPH?)38r zm7n(e_t_=FcC3p5NXyqh{$7*QZ4ZHgwQ>JWQaZ_LXGm4GLpOH^0;(oHBX<5cN50G^Y@*}h2s9~tDiR$?1}r$QAHv+&*RNLSujB~x3%D)ZRq@9 zi<2iI${cfcoXL;?*bJfLQT#R)bWd$mK})>_;#%nKkokKEmD@(PjjGP_j78F~2U8n6 zUw$7U_3B?H_MnX6*Nm6Ns`#}lX*P`d%@ZWWF)lo<)E^+bpm^vU)k+>Ow$a*H8%vwd zmL&y7tS}fswM8*L#e`y?JA@SYmWRQEkY}XAL;O9Pswsk^Ap6!eOFbc4yXD0ELAO)+ zwY>|jz}STX0YPSz3QRm2w|5mm=2>JmnL$enBwiOE&*ozM%<}Zm^i{wgbH79-tg~66 z3{&g+-hV|KLuLM3710JJC^LM1V0)$~07h++NTW$!ruMpvJ|8;t($-QpzsZ3eKI&Xj zpMJp*hsif^jR6W(EgVnO1r23h7Oe!VDzgVi;{#!7`)wHmc{_@cm%I=d|vtY6DVL=podoummhRGI8 z=A{V1uJJ$+UMzHK4=3q7p$42lx!g0FVbj|a!o1nXXA8}gl)*&;Zm7xn5#M*&&PpCWi&tE^cEk5%_$nI< zssQ_g20v(I%q#1Jp{z$8&p1F`AJ1Q+c|<;Ue-cnnE?96olA!ED@lw1+eQTC46vA(W z(Z$C@Hf7%&0%)g}KWSw(2AOmxrlDVVN}x=J<8b2+yUAIx_H!}{R=UQVPQG(Td)xMX zF@4CgBvJuUYS$C$>-GlOMEb*= z*<~lG(GyKF{a!@Z#ND;wc6hVhKe>C5Gp;%^!k)-{nideSx3<4kutZhfHD#Lh`_bbe zjs7clCfoN|BX9OcUiJ^3rAuRL^Tq2zuAU&WvB-;DnxfbdGt%XFzwuu$`U z+CJ^OMvL-$T;>HnjwWsW2IP8=4$VrvUb<=LZL)itbgxQB3VjDEWY7EYq_~!>elsP( zIx~8J7Mh4)W4~IPQ5lV9{gNXMK)F2wuFHBqmfly(WAlnYvCUP{71u`3e*4C;y&gY0E%iKByBXXw!7Jq zB(IWszCZt4NjlLAYIY^c>Bs&IFTt!LutWkSBB>ILaH+`P;9se>v&95k`^@)M{GLG4 zdz~@4Bj}%er?>G9E48<%ALY8pK9T!Fb<0w!J(&)!H3eH%O5-+%Vm#81<(;D~KNY}S zit*@awQA(nSGja}3^@ncj)AHioMdiZ?K&?UW=d7J&ZSdo?caZ3ivii3fW*n?d-Y62 zV&*wa1XpaSB)TN5vW0`7%zBWri`dP~a->AvmS3z#4I^4;;treOsijxmfjO!h7K#8I^UQ4=-c6ltBN+pv?#ng6pc;XadB!jZODW!&3=f zyG-OXM_MG8#pm7%>(f#Hy$M%P6?u!cA}a&e``q#R!kztFQ`ZU37x@rQFbdVYlMal1 zfOtgY=4k$ks$9JQceap6?+&F%yCPDXTc+0p!vXKo%BN1ny-nm|x54pt+llx9>>T^% zc#)p}bp8|n%T-P1`)E}~=Gm?)`PzCe>xA7af~{@0Q}0khyPMLwIklfQ#D5CsX38d= z&DOj4d6%-g2vU_Mmh<*^(=)d-Kw^luWbeP4&n1A0rm+pVtveFvgw*a<`faoKy}?-L zYxl{UJiHWMq!poVMTZwoN1YztnKLx?-4zFvxXJEle});@>Yt=(3GDhkf@9$LtZzk> z%)ha&-(g~F4*u@g@o+(Pp&rgb_{S}rEle*)iT_#z>_+fZo0xS9<0Kckf1El+iR1DG zNGp$7EjBC;Vrz53P_o{DOxY!8634Ez;UkYh5Skjh0*Sz*CGY}7`|udJ=H|@l7w#{WU}ZXTA5Gptr7n+0434NWK3Ob=C99w zAunb+ae==(sJC2|8rAanQ%7hyUZgA|vue#C?6#9?X!M`RK05#?0O4$5WYp%w)g69?(_FxEU zF}%9p^+XP55{~<~vaRz_P`u0enggx3=jr7UiWaA8d09u9RO9PUab13eM_>SdZOSF6 zP^rrNOL%XhHWGe(Xu{EQQmJa2kll7|Rt}F>*KV~=7s;^B_3ux}=H)7t0pN%G1yXm@ z5ubIz`G6&DfL}MB$1?tebDxm;?y{HnvzL$>ar1P+mh1G>4834!)XIg()Neoa5>?26 z>*_KrH+t4#RW2Ol>s0`}yB!V`TJ;WE zsYDuP_FRIN5L_H=YwB4-_V}C+`e!j>AIE!Fe<4$-JR(aibG?>5bhUs=VGc1h_J&LY zudZ-weu|CW(pFT-WT-K@ZZUM&C(&uf^4!DUZ>JzLSQ)u9DZyj9PPj{Q_wF`I&7PF| zet`S}8?m!x5dKB=Dr&SL!HwE|M3P@&#Zd{o_rT|w|FPNs?kP?!#M`{xeLGa6$z7Fh zJ!?Y_6sX(=1wlLvBe(%=a&-%Xy)+#jHN;b=KZm=#VgOmbbVQr7t;lz8|0T4mm^uq9Dy{R=k|4@CTWYkener-&!Cdg>sj2ja$db+~8jePybm!g# zmEt9wzMgvu!8-%b+RUcSTFfT)mv1I=+P-_+7tA5;Ko7rE*tV-(s~Fry@u!5TeH{Il zr&zDOt*6=_zt7?apntfKqL(~W9)7p9=1<5)I?0zwj8c*wI}dnjlL9lgcWJX6a`npH zSFi7Ci=a!AgBe9D&phho8c2TM{M%mr-f%k*_B!3SaHBPoNP11}a(9rTKc2y9trL9v zz^p>2Cp05DZ??yAHu98awE!es+W3^4K>1g(@YBsW3R#I|*Z263U)(>Il8?nH2)MP{ z&y;JKe%5IzBV}rypM1Qiwgjb3O94#-^^_~-?;ft@NmiEInSytHPYGL2xi7g_2A!*$ zJsWOuMAA;{EzZyl|4kEMo`2*^1Y-_zz69adn3s3Z`$3+dqMhSKHg$Mc%Dwsnu#R~w zPd-_qK)krcTSh%{+GPG&KmgE}@cqZXd{ohy@zom$%y@p4$lE$uKzgrKLbO9V%`f=O<4^t8V)}LBdwq|9P$i3qk{#tvYEUWcpX$>- zTeH&J%P4M$@F7^~a2#kyxWJ=Xt&)NsvPQf6P>WaHAom)*ys|~|T4rS^@$x(fGQ7A+ zX}val$oyC`DHCeKu~CpMeXWqFUh2>v!|T@BWWPIVUUPn|+z+V;OZ@BLHreXmzuyt-00Qf|&NkdMMD>x@T z57#ux9X6N^K~ZP!=iAIo${vV@pCt9~-xo+Nx=1SHpYnE^7Vbz)LiUfI`aS>&PCDXfeJO+PlWWsoBcO96rCp6S$x$k9xJ?|Fq+`y1Dy z)}3^2QU&bP-g$n=xu&O|C|aBLw^fc5@y|X%vcw?K+3YJ2?LXy6e2URU~>G@*30 zmAo404amlgj|>hora1dZ7* z>1%T7y%gB<)SI|>BonI>2U~b=H6bWO%r#azIh0q`cQ?loMuRc4V5^!H0*{&E6cr(p zNbt^rw8`-0__kw@D*#IREP_~sxnw8IZFayq>$B48yp8vEzJI`&1-=wtq*kU3KrFY_ z$Y5>x6T0D(=PaSuIOc^0ew&0VMxm4a0p;`M=E+7wyRabSJ&zneHfa7HWSKVV>>VnD zFO>$VHYf5d0Vwo`+pZQV^4J3XGy2uR#O`t_);C7|C=cWNW0_*;FbG&z=VqMTVjhU7 z1&1wSP!VeyA}n$k_p3N+37UEIfDYr6mg|Xj>h}zt+OxwfnHH7OZ-DZA#KteB&E+7# z)vH}fF>@0nqF{E4y4&1L;N9u8^Il$+%u_8%-w-Y?qCgQtzPKk3^jEiR#SsuB-O!M- zpxlNpEw?iTUI7w7tg$%`X9P+@nuOIGON8ES7i`rV_HBdbHHK@mbWi9{VCT&M(gqnX zf?5AQWcME>0K9{w4j6H<7q z9}@I7VLU$&;{{wba%C?j{Jmjy4koq5+xEw}`_SCM`(3a3mG*! z0+~gLX5=y%cH*E6lcwjMsF=i@uSmEnBjEl!AHxqh|J7;J&iA=$wgRZjsfMdbMKjy> zw~!?wLmuITbTGrqVG{i?!zK^aXHqkD?taou;pBzd99<_cWcZbVr3|CiNfxca4xG;# z=;o@!V*t^l^{l=a%d~~~-oMo0prY4P3`%}ZuxWns?(^yxjBLhBpntbGgTi3={G|=FOrWQ%tI^*;j9Z*OFQmByrRtLKm9~kX^clFHil{8>qFvEcMC-Cj;C=4 zL70gG(L4nCnl;q~FJHPIt#(;0ddUFANJjzf^1>3~0`i-s=Hm}A1T9sy=rF*F-rZi8 zgc9*;2tq!BWM|h~-$F}Z*BW-_h92k*=m*gYWl9@qrkCGRtF1K(;z*fp5L`*GKgt2< z@s|FQ@oG$~T^hz82`vr-Q-|!v+m&giUwLd7Wa^zbQSt|B5{6z zfD1U4kY9J9BQylCq16c61er8k$zA?zI>~qwhKm-NPIECSVYjo9TC%*w;U`q8_zm)y ztFg8p=o0|p0NLNMn2a*UGqy3ZasFlY7s2nIJb1X)9}VXXm=KtM~nIGFs(rL~WNE(_m~W_@}a`I$=dqJ)W~Z%2t8)$dY% z!8Zou{)E;8$V{fvCkXZPy<5FU!&ln3{lmg6A&|0Ed(1EQml6ATvyNk#d+OoB7ad3q zP5?{_L6wNr8xZYkVXObyjE4*b%&KxEmu63WpP126%m=fS&33ZjKIl=|9bXK zI8Y0kb`Gjc#Q6ao+4Fz>f%<2*6_k^C>`q?w5+jBVGycbe*Jp8MlzidRM6gFR*F`l6 zQl%)yj?grHT=g0+|8dAK_`B-tluSZ*2^3WKQOdymJWL*Wi3;}EU*%g-8((Dkmv zbfa;|Q#!|xVY^lY#*xskxLOl{qhd-3!#UC2P?2OQPVOC}2_ zy7gC@k7@fuUO%*)K4Ka+D7TrGSs& zt8ckx&Yb+~wc&d`hiWOD-Smk7Y{~P%Vverf7R(dn!@F<|$}v(<1eeE0J6B zLyGS{Sz(`>_1KiD#|*^dvYhNC4l^N(PL%Kj1Zc$aK00XceWuhEI+GtTo~QJ|h^Vrm z8_3ORhEwn}|Agsqm<~UGt@oIz#i9$ylf1q<`AXfH!Nz_(v+uS)?m>h!{30kvE;&Xi zN8UW>11g2ftCXGu@ni3B_~u(8!tRLFkt@EtS=$*#_=gGfuMb^xEGDE%zll3)Dalmc zXG1;*Z?C=x+u|}NYRY@K{X#JtCv=c(y23$={s4y5r<;aps8P(UbLbn zBhwa%;@s(H@5ghPuI`p>Ai*Mbpm)&#M#mDKz6fN2Sb`^aL)u!rw=1s%lKGx_YhAn^ zM~nrmmwD=oi>ru__)ls{kmQBEmIJPm$W>vBkSO;e2^y6?<*#RDoHOoIx1W-ST^rOT-R@!f6JWp|+ zgk`%Tn%=mN$k5WM6-Q7mRVd>&IVN&jebF7}Da9$7o#Fs;k|ov-y8&5itm$Vxz7nB? zB;U!hny)_T#HTjad6q^aO|ZEzoS)p0M5qZNG%%ETMfTG3O;{Z+-P)(Ch6T@Eyarr047BvcpDn24=qu&JUNmML<-Me8tz4^9BKT$ALhw0IN++WDo_imT zpoJGm4a{}iUPb`n>perb%^e$ax1N3bn(OIU+|2pzGfPaH&nFHbf#(>#|QQa-J@il{Z++^m<{>l-G0$Ilv)vXT84KWE-BalPT=8;{cIQD)UO6mcYi@z zANs$VN)K-DJMNN|RrYE4C{TwRQ|e>9XozwaYe277!HWsEYee5}9AR;v+5FO6zWDrH z;yQ|y#-XoZjtqbBtEM8Ie0s9qJ>O_d&2~i32T#{UGuS6MRk58Gt@fdK9SFfFZ_#E1 zWV9o+*<-{<)+M)7Q|uxVW0}5V*FF26hEU&^Kl`8LN-LE9T>tskr@>AL4|LS*(9Nv4 zj&)fgRM1ycJqZq8;qcsN4ln!)R2iGXd4oAX?@nMd;+B0LLvvn;Naf1=k)H?dr-W?` zoVxsm_b(Io0dk*TOoac+0~(nVN^dB&kF?Re{>V5tdfD=cSh4wRCjFOSx{k??K6WxWmGH?9vQyJ>dM^ve%ob;JXNVf@LYIKhv zDF+3h95MXfDE1=Vl!?}!wF-oCevozMTD<>DRp5ZHhRy8N@ZERKKs~{>a}BtmbiT`d zfaivaL#yL;>k9w;`~Kkg8R|V0{JUWvzG}~K&iZ{166r7fcs7P(=|C)0_52(d$Us#I z#2nU$h5;%g{wjR%xluhm+qnQ_6EX0xlznNM-ME7+b6P80Bymve--5=8MVc(srVAtC zscH;3TI=genjT~N8%Xz0{`?rC#;LYl^wn%@8`RwYj84!4Hl6p~vdEBDD}5iREF{nN z;_HOE3vVWf*CPwWPZUXEC^GDTKAyyEt#P?tAz$?k)S7k5U1~gH@)Yy`7_!xY;#+Fi z9e!D)))T{|X>~$s=qVNp=o$`uXfpfWV*M6;hfCb|J8Lmn6|ai|=;8Lb_d6e$g19 zWxwca8s#@XOpxp*as6J#=G}hv+N|LUL3XANIOKzq{GWr+I;eokI98iqG(U|1MxmBZ zOB(8XA@COVw5t(BtKRL|k9YC&R9nacB1vCTrHcsSg{?p7h|SJ?#CbTg`{5(%-|U4y zn4~f>V1S>0sgEhE<(MLGNdTflJxi}(vkDpx9lpi%SSfR2`PpUx{)s8Fy}tB? zd^yZ0Amy2pl=5Mb#ep%2b4tm1e$wSBNB|`m8EqyBC|ke&sM%o2ZT%HX(Ea*o(4NSH zuJ#xF@*f`Oe;$@ihN|@ehS~!?nJr3pnS){G`2P0NR0elv$TAM*8GY+3uCpFB0-Qy){n00?9l zi2RL}|8x9-jzNa_D=mK^HU$9bAB28F{v~zsSL&WK+CBW0mcJ0|0t`%O<)Hu7J@_+S zKM7AOZDIQhEx!``2gXtHp=klYa4fRW&)poxpMm*DZzLkWk9G|v@;qBUU~}C}M}0PL zX#Op0FklLew{t-_UOi-O=*ci1h*Gtw=}nvA6M~omsD%=N=Of5RhwkN|Krm zr9}F^?lSkxkxZ6y1KSePLG>rLQkqbWPG@9i@^Yl{zC7;4(8R~+xqja(#p}EqFz0kW zKbkFWxJQnou!%Kvq53f!fXYY1QK`qlbFOucTc6GZW7#J%zA|*<9$8(E9@!lkfjh`k z?)Ln4r>{fKJUzt(D*zOEKO*)V%L^p|>Z}xIT6tj=wXZai?C(iqH6~6L*BN@C%h(`G~Fm-@#Fku|~>b=RptyVSc;#~oc%PStqe2{QQ z4j%am2f)d|2V#BlCPS)Sv#-Mk1+F&RNAo;G_`5z^Hpi4V&Dt!|F`fn52uN)@^E1Feix*lf=2N+n7RX&i=PPkbo~t&`SZSh8{2${9CqvYV zwXeGmV|0pj#OYN%y2@m)tiH-F$Usx}D(q&_mFy$&7g>E=g-MK-|dHHU89bP`__$9C@?6enwRGsJ3M zRn=LS+`w42CctsPpc<#%FH9koma_vzQiaJp=op)v)(PXI8Pb|ie6$AuNT`R)YxE(d zw@0_Jmw-Plk~V0+uv8Iy_?GO<8CqB z4Gw!(OywS(8jDtkjdc!hE!SvQRvn~4 z(Z4^;m!ITE&f<1y3o4Gx(k+?9dW4Z7UV(BXHrahTHbYSSg;plzh4-ziB)?a_+LP0T zyfxKzIo_Wm;<~QBe2DBWkmkm~sIA?gkBuZO0KIP<3V6;)Wg^qf4EJ2rT}yG*(8&j> z>xDvbwP-vGKxvHECSfVh5Ti+JFV+dnhZl+h)3 zN^B~6YEQYtW3m0Y&F{fmYJM5UHc>6X$@Hgm^s0tARr~Hv?h=VFY@L{Jgxqq^u|Y3e zTKEm@SPBdVFuwRim-=M$fvxh8jcY8qpP*xOfxUch>bT1K_ivYU&}@P}Z$n)r^=czn zwhBLOvHftC!7i*dyK)nJq0Cycw-&GMgt@(_^0hP4g}0h;5cjV#{VoN_v~t{c;aQgjH$a{f7t(B%cNNn9il^@cqk;Mej`O5a=4) z8dhf<7A0@-V1CD0&ElOx#p_6^{kiF?mPi{EoQvK!*Jv+2mm-AM7QKrteY3}eV?a{* zdRcigw;kZSN_j8kJ1@w=hcscDS~FMb{-Wt|J%wf~$(1$pYgP|x9E*T_hl?Jz%WIhB zQSMQOPNkjK3&mQWIo!@4alz&X@U!{%z{tM3T!fE8CnJanvvFk8JG9}c;vB|xZ9fO?}1Aty<_5#HILUeJSW(2L8;$0)3qdf zKi{(Xez!^8K7ZvBAeR55k+;FXw9tBaHgSGEcnjkB z3+M}CuGdfJt^llRB)J7X&g0OpMErKG<#(}mT+VX2J59O(y1h6|zJldep*v^7Y04fU zg!i~vStQEV4EpYy%Ms;23DwvBVG-1o|V^K?s_fPFkWt7qI(cB zfy`+0+47GBE|XeMqJ}9EhF9Q00rm;>#^`$$5b3ZGrS0RO;Wz$QTu8o+haO*23Y58j zz%!F;;gq3+5)sMc;raQ~ix;6wUZ#WEnbr>Z_PV3A1P?l91+THpVC0pDY3QYiz_>49 z!kr0|PgNOZf#=Fb$Bz3bumMXs{Y;e5q8~b zaj&5E8SB*3GZZlz5AMQILS4@cWTmdUgpx)*b0i)i)W*b6j?#PSdn+=<8O|qOQV3vk#1ALdp0$&*x7?qmLB#0zY-pGM&@Oq+~U9+m#yx zjw-HX-7Rc%9fkmHXs8!LGo|K*1Cb@y+qD@Tla3 ze;Ky#6A4VuMOD+Z1j#%M47-~9{)ueFrhRQ(opZwk{pZ5F+ysZS-~=YOA9?{Yw=Tto zI71|Tn?{`I#HQb_oE)$3y(z=8g=~S*i#2|fBNuBHJ|?PE^_tMP!{YW`+m(lWPHs4# z0##wySQ^b&+6(%&_R_ZoPZe7$`RcR9W!Bhwb-fW@lO>t>V!a4MKR5+W&sAq+8;Ny# z#2N}Q^^y!*Hq!I3E~lz{gKiYnAq3t}Ehnuf%iWw^`CD*2E|2izUmC~Qb~TnUpOw+0 z4lBc;%q|t0dgIIDsZnoACLXd@UTW(?!A9e?dCmADU6!rzril|3;f(jsSH`BY?H6Hu z50eh+#Pv)wb5iNQAr+1vb*eIis(4=4y*G(mm(@LXAY9?!Dm}J=-p*`1HZ)!Ryim=M zMwW1pjDC7-N|u8rbbH!Yz(doAm+ZC*UIIQGrbC}>NHszes zJ_IJTr?wHVO01*FV{25Hz4zLsJ+2ai=;6>{RM{+ju!r(OT6hmT ze;7mq5Pk34OVy?Z2p*DXwe+xxB6Dp1WrG%p(ACpa*0Bcn1|RTaP^se%*A&zU(a94e z8Ya|yKup3_S(Ec)l$6_>&(Ymbf4Kr}A`15*EUnn7=(0zF2%ck%6 z-Ka3cv+$-AH)_Dx^|u7i{~B)`PeAd+D5a|%6Yqt-CT}_Kt z0UR@4>lx*vjZSHy#nYD`xEsJWA=<;eQ_b%L*h#GHoA@m4>h5mcC#;|qUc(DLy0E$J z%XUIx6Q8@Q9b2I?j5W(V^?tzNA1&ZR$B4t6FIcn_Mr1B#%X90(X*}6LHn}3IcuX)L zG@#${df?Fj9&|ov$&XcMCimWGml5Zt;aodw_%M*sHm}0xB2sb_z13Sw5aW4{$}e>4 zTv*+;!-~%O<~4PfP-xxTT2KcX>#@Xv22vR&t*5{WN2(gi{p_UzE&*ciK~J%@pDNn5 z5oY@F@H3kypX`*#!CJ8(s=4;c+<}N7Q{d;+@%-m#@oxdR`_~v-?(wrQfuaCpG&Qv+ zhB6ldZ8#xpd32$7UQG+9xIm$nuC3yZdM`Z#hMEBv zBWVOHX1giN6{rYanLe}@DiEqsb4ttM+NtUJ#sZnd8vMq>erOXkl23R1>E)^+0X$8A zrHUGqD%@1;8iKFw!b7#>0L}AskN_*JUv;hIHd2nrJ0xC38GFxkL ze-W9;|83V{0i@(J_8XTCxYKF=BKU#OQvgE#Kn*h&HAF(2CaV8Ti~txH_9?XoqwK*q z++VPKK>Yb?_h$>Vdm*l@ydC&n2Jd67jz*31wdacsHldTGehoOagmpmT{*=+W;r%Jf zrNtJ#HRT&PsPC<*;}@eOaVzfTHY#YvFl(v^sfd1J!H?26P*Mg^QS7sR$i&R>x4AG! zi^aAQ?+nOZY`$s?J%0aHG8DVZg|k1`g6*9M zG1uAs*FfrGBY~vEdruLEgjXz!JSKAt!WsakzO9PWC8=nAQ ziz!q=&ew!j6&!IZb2ov~Q5X@hvVxDCYM$R3+C>|5nbn^ZKo>Oj((o1U;sXO$=;V4w zzC>1z)q)EXp2rDC=xAY)2^2mYaPU|TRDa2)LrLFS8m?Yni%nCDPRxI6xOh=?Vnyt_ zChpzd1U<~-GCNK^=GMLn-s@`pmU?XyS#}ndE%5Gb+k@;$~0dVn)p&%5Q?@(Ka)2h!CP+pp!S=jlBwnX zh}}1*zqPBCqhJDTz zJne(@6vcqP#pg7Ky}A9RvGIwRg4#ef4{6u;pzkC4bc|%m&F%X4-uR_ILXjv4h{jbD z@ipT7rXJ0;F7ncc#bRKzsQAXHohgi0q%uy((l^GMn~y}jo#^B7dZiZIIA({PEHYF~ zCvu@VKJ~jE#?yCq=ltexJPaGWbsMtlI9v1YMG^CVD}iyE+<R)9EItseLd zBlr1JWnlhM=1xP=>H1AT1dxD{9xk>;C1MIYb&3^eMi~!}Jv3*ut+MUzwR+nz;6Bj8 zLzgj2!jHAi*JZf!(A!Yx;Z58}omvH<-fwdsrimRht}Z#kl|oU8M#>ah>G!VeOK5|Z z$UFwx(QIYjoZGrUiB!3WToVG3(bN}X=@v+kbq0u_hKgdRf*<7o>$*xRtZDL; zZD{rZhU)ls%zll(^@>9nK0&RC!%X&a=RiV(LO*weZ6V1>VAS{ah4Z@AR(EoS&4Zzq z<55*S;`xnqk(CXH9v>Teib4PNed~xrvTnJHj*W0hmf+j>Ydy5`^oG}w^f={_7sk7b z`wsdy9*K+C?}%|ZHW*Lpuy)hu5~n*|zr*@#xrA^t7@n_Oh`V;Ayn2Z4;75fZa<{$c zZJBd*viSqodWrVHKb_LzQd~s_J-BQ=pckP#JarTa6Dg5fo|`pxgYD0y;GY)t zM6&g)JvVM)N1;D8sO73}*o0ndv!TvRluVn6p-&11E(Fb=O&vz|^_+iko?)aQQa@Kg z5n_Nq?W+9Vzm>;lpa~{Mfh@3i?TRQ2Q-`~cGxE5A|F&(F1tBti)xxY;$u67*9MPdRp&<8Nj<4>Y)6VE;%wfle) ztBgJ8ojPo->DWlO7l7mb*QA@|Z|98dGt<`JnJi zXpqxNANGorPkmK>!Gwf#)e%cBKJvtP9}f*$OmaQe$XO9c)SOQ1w!NY&KWn0I#M;r) zq!4B0s^0?t%VjbNIqXAj=z|sh?we$jMy~?T3dJczlH@Kb8 zxF=T(Pj7H0FS-j4Ew~TvG)ykc4__CayW-(6jW0jKMGt~iNhm?${PYO5=Gq~uKZ>Si zumjIpIgxN)-Mjz$Ki_Ras!|1bc9mC%{b6q*b$qmV-*#wt4TszAOC>&xDkV8S`YqNo zTt#miyX3L$f$vIrZhTw?c@C=(C5S^FNi*1qw3)~0tQ+~uX~1Dy@fdTZ0iVt5jf9i| z6`}pYYz=&9ZIq;iy1b=HQDRCl7UZs8nRn6i&fgP$s_eeB2K{<7xkZ=aUse4GY}Gv* zx?_gt#?Gt54HvS4G`9Hh-Hacq=5_`KuME*=&F}Dswimsra~7z=wRmd z*00HrinQ&N7OO_2;J2N=fuc?tZC-7bWIbjp=&ZIs!e4L-t_iI*VZ*ymn()B`UB1Xp z#i{l-bP&0#Jb3B+kxs!1n4O_C4c;txsIBBiS9P-KuUFy<)tPwaS}$q#;FVrbk#sZBQ4acVu|MFkNJCJfuF0!`#x7o)j0F z4_;%=Q#K4d=(b9_{ZA~F6(_yo!tWuVQThD-PoW6`i69>uS;XrLrfo8X+cdXp=DsZF zTa>a^PyT-Bj5_BQA#HpjCy!N?|f~%!2qxoGgU7 zZUd9r)<_@ zOk?*wZ`ikBHbW@vLdxARBUfMKJj8a*HU6QNSvoSD-p%d8E!JN**=;L(C~Ym)(oDE6C$n8CcT29+AO%ero)o?%t9ntV z&}}#=wS5BfK2E;Pn-=YVE<1?Mz?e90`xY!mU?|9gLa@A3GJ{dC6K$?ez8*bY{7HIe z%e3lcDGu~BcYv)kucJJirKxF#L@k({RxV)~f~c>N8_RjQ}bPrBL0*y77gdq!usXLeUixcqcf~UWB(je?C$4{dQbb!Uc`H^Zv&Z zFKIXjy5ZEW-vXi8i8hqNPIZ?(9zu+3onnm7#_bDRyza7 zeAiCOiy}@G%h^$H{k8QEYVUysbZ3PpCLGlZA3L!vpSu282viDOfD}|542#|)Ez6lY zWxl}nVhdzF9bayl-FFg?^RBvLZuZ^e&e?sso4Wx$!IpVoD?CD5`H z(KLzA>eHl&=kZv5$_xdo>#NFIm7gVKe~Xcwi-h%aYRy0cM&3Te=T`|C3)*yGn>^%7 z(R{<$0fkgB+^a9-hxSz#hF?3H8iQmX?iD~M;Co}k%_j|Eh#2<1O85;RHmJc2V0q$0 zKlku8pE#p2Mtyupdiz=M^2Fix^$nhL-Xa7r4a?yxky`g>WwndpFH1Z0h@VW z1DTuUy?Eb*a^cl@q(+d+C$}&NoyukMxEwt?qgi|{qHbz5_s)#Ah1FqYTcVX)0oon!1Wb5Ytk@C6LV7%p>WCJ0ks(4PZo+K)mCFnbn{VSekZwBIB!qfcPiJ9YJENK<&6CXjXhVVhRw3`x(zaVs ztm6JjNk20+c-SwPe|NO5J!EUws|P<6_zMSx@IS6Ni%p@(F;llqt}5Ki>n4yXNy8#? z>c~}jR*D0D-X*VijR|T`9Vsi6HJ%{3*ga<1`?LUuFRaJ5h|amXx0QXkJRyo+8rZH? zoyS_sQsw{dgkEsZGCez-GpqVRvX#B5y;g8T{7#QRsrcHMKVToP)Y?v2qWbdV9&!C* z9U-RCl7X4u+F>$Yi?%kiMLg2)cXDbdg}SSBumsJ7XI;CC;Dw41??ae!nLN0gchxup zPYB&E_r(F&WES`4`a<3{MSnbS+cp#F=8MckNT>|jcn=RGEFTuWld5=+ zfN==sLDIPqMZWFuop%)U0j5unA!F8G(k(*GN2gHzbv-VfD3g?CGDbw*IM!|#jW_nb zDhr`k7EZW?m8u1naLnBXJtSX?9oq~x7`+W#-j>QE2+!m5qLiwm!?XGrVvy?5_C<(D z`_U^c7&YA1+2d~ezW;(v=8)g%HvZgdLou!R;;sKpqoDI_uf}eJd+XXLuFA`Lh;$^L zqKuRM{k5RzhtG3rdQE@#nf~QH`7R@)G2+>FevQUaNMDh@>qRV{7;+H*L|UX%J5{*8 z^RctPq`nnj@>Ya$@4^tPiivx+2LeqsK)`^>U5+@(&8KqD9AUC3?i8OLz1y>@Bs50t`?kH&jfp*?xYYw zp-JE~<8Yp=9eyU;_zv{pl0Q;=5GS@xtf(=^HCjSjUgraF+ObJ|Hp z3R-?d4xHun`%VGycKUc6{#@Pq)0-lx)D34 zW0on{$$7-&rqa(RB+PN8q@$M}cg-=Q+*TIQ zr+(@W;2o4$zeLrZ6>8#BpRadn&s?n%7=F1H!RI?HoKwYAaq_jd-VHZLOj=l$!dssH znm^B)kW_7?d}}A$+~Sby`^H6F6tj#7q;`wv-Kp(~BV@Y%(cQH-y!cJ1O~(Tj8E9P;YwcB}=K!gbwKZAe!b)k7zSA>Nf$BbvyejWYY; zxaN}Cx;x6!)0o8d!hY0WY|T2-uOLVwPt}ZDc#opRx%BGug_9r)y~=rAs|%?=2xx!_J-N2X(D@a#OcE0Xp2yY<#^RQ#bEO0 zrSaGB^Ihjyi*j2{o8~g>+E%{m-SYma@w~;lp~@Ut`J^r;a!QR$k_~UD*xDKBDhmaZ;7s1E`QnH)n|jJZ{XT+lMN8@zLy8KC`Lg^MDt%b9Hd|vw zxfv44jN4YOQST-OWp(k0D8-xutW3tvk|SUg_?E6x_m=!x`qXULwY1H60d4R*q|-fuR%O7Xhc z+PKX-Vf`kX;l&JdPG|AcuC7w|_O{O;nYoKJp_gGg;U`CBuheoiA8K<(Z=$DKfPdPF z+{s_G%!*Z#$`U73?`XbTl1SY305&f4lr7}0 zIHH*eGFM)0lA!{3y0{4`x!Lr^F`7Wgw;s7|taf#ZTE4Eak~Y4Jc|nxvjSEm9rW~sN zv`LhIJ=Z_-kx>FIZk8FkY^$$#$zlgc!`$^8mT}E99malh5jhOE@~uLdz!2=IO>Ka!AdFH4~mva&BEmqEFRj6mNb{j$JbPAYuWF$`HY)FJLVaE=mLQI!6% z>{w)sR3~sCeK1~8byCa=KE2v0B9~`AZ$fw7-ny(krfc%!^KS!CuUTE9FS}n3O2)-_ zseI7sJ~O>+k&cT6BFyy&dnbYu8V}GIyuo+pp^6;1%27{b3@=VG{LT?a^msY@3#YXv zWh{q9&bJke9aTKF=j*o*XX#H8oXG4Y3}lfBPMV0>uHL!d2(Ms}Yb;cX$}3u?D>i$p zU^1FP>^<*!hD!`=I?T}@-R#vY&Y$0O83lkEZEl)@Smoj!_aSE!%Nn@6+!xt(r&-mG zr}F3GA(#8x?#}hsHih+lQu<1+B}I;k z0ww18lauxRV!f52{k-LaN_{utwJcDMG~oXg6^x_N*K3-2yNPPOc#gjI3|jBzrzp?a zZEnq}oqX6`CD4&o;o2(r=%$*sE@_S&W4(`ZE-U^FPWOpPc`TfENl_iw z09z*5Sb(gyaTF?OV`!Irp!B3K;ZSX5oj@kO+m-GGeq&Hx($d>)TZ6n}7;>R;6y@*| z%PC=hY1A$+t#CiSwv+rSnVFBlRv7>ZZ-JDlY8qiuW#^_-CN~LdQ4aF8Uxd(u@h$4P zp>j(zTw zGfwcn?Uv`SrsuOfdo9XLL1}NQ%qhGL8U+u>D3Tn5RGL`q?L#4` zgq+}B1|nc+$RT&B?9gV`eCOnvAHEtC>dUGvczzFuP>Ut%vFvOJ25t8#7H0{)?CHII za=y_BIW)-ip|j&n!(M&H-u|s7kR4c2=YoZVRUGZ7z&K?6C!J#Ms|6Tj`!% z>6qh<(2^EW(rz?m!xm#C$n^YSUR1C}Bl!9jn5sB0Y9X%K0Xvi^k;g!xf2+Y>Aw=-l zt0Wpr!ATacV*++uXId>~8#DY%B=rm(NA3Be&l3!EX+wlrnhJDd5H0;4ATgnKVBXzl z&E;+mys2}!RqSHpkAmr;@f4Z;lleB;)ky`5OkF~(!`4f5Cr;H$@-Qm}i*Vx@oj!bp zqSU%tzQ|_yzI#mxWKZ`_V}OKP3+Pr$ZSq(TQsfw~%Q(SzLswaFlLBqUSV$*w@0sd0 ztN`)Lk#G8%mPSG04;5pX=1W-3ts9eCNs7F&vd)*W!o7T)+TuZ5=4Wb6ZccD6U5nml zM=4W-8W6s0LU(Uace8~B>D9i+IvJr_TKJuydF{YxbaNNiDICbI%GvUG44=B^xGO?b zI&X)}HM4HyvLmwUg?1K{>l2ANOlo)Pt#mLyZqLZeT1nguy}&8XIf>P=kks_LG`41g z`s&1kwqdXH&c$AW=1HYWvh+?r?Jr`(`4we=({U!{eWa8;$zKr>bo35-4ZV+#2`5jmv)PyRRS2)vqj z3f$CGa)MUF&uqBwl4(o>ek1K)Y0&Zaz#&z2gYx6#m#6+i9z8eo zo^N2ESsCMR_x_ER|0SUc03e7mLGHiw{Ik#Yzo~eDk3S!oU4!v=-uxjC`#*Pl#q={> z-*0Jhk^iOQ->($<0Y`ECh}36H;?E(z%b2L!xzIms(zic1Y5i0Z{eQkD>*x8S^7-^1tbsVNb1c4h zt}FlNYo4nBE9LnW{*n*=eQQzqyaImfu~Z?1nLFpxZ%XwSZF`jmtR#hR^ba=0;tL>1 z4aYKGmH%var0{{2@~L*7{$cq)ulZk<`3vv=&7i9Ps?6VSTtH=x5HKKj^JxUhLjRz{ z_Yk5V0qRH06!Q;THwI%BnSg}HMyp@)pAJx*9$?RWe%9{zpLHFl2k-+vOSB>V(A@^IyLFmoLA&9sjj2|3Ml4Yj^+NsQ&+oFS+=>fq9EwmWExSRW*w# zW+jlrY|pc4)5%OpT+2BZ*;&isdFvXJ!9ty;de@gSe~1@<-vIx9&sWR$QmFJ`(=cL| z*fhlua&rWkP9@n;bkgILFc1BO0U)_ppf9oXB9H;Qm%Pp!|s267%7B$%^tkHj5TDRSo;=KCk zL#yAPJ=yOGXM3e=SlIAOo@&Q^> zTcf8Gjj5GyKfb-R1p*payVl?9_$xgxyf_vh8iSw4R!!aM>B>LRs^mwRHyBLVdn|MX z1!msN)NN>+onw;6$gorHPv{j;Yb#)MCtmGu7?d|pA z-HbE~WLtPr*X+rxb&a-cH!xM!hzE|J$YvO1U3O_wy_KD)mdxkWW^uNW>OK85LMX;# z!8M0m_UQ{DC$1+c-nYn!e5ab4-4j7mt{ddmt;mEjG18FlhqA6PPl#|)MH_nm?Afff zB|~wosN44>0G|^feA|(_(#?EOzMWq%RliegXvwX?K{s`@3-laf3(Hj~$yp~BmZS}a z^IO5f3sUyVu5Efx4zlyT_`G?|;B={OGeS29PiGw><~hcgRVIYUOkF%z25WYkUcjbR zb-h>SC&5qEqv$Q4fCX1Tn+Z(yo74*jyx>8{iVb0g16GSw#L31^kuxA&|Ezy=uzJ?Uu;$@rsv~_)#M+?*WqEjV!;HhQ zU}{B5HSg*|gVnrK!m14P16_(o-;mJ8O{1szf-h=iX-X{kycOLuJP`psC)o=m$4WZ@ zeH)%=)7a`{RU|~hnDxbkJgMp@`aO%YdsNx*UpHxb%XWJJCEe$7Ia7UwfK)i#~$w(q1gVdxdQS_B>&QJ ze;ddcb91Ic8~0(6s&((PSQ(+5#oU%-p8a0Os_6g6-g`&G*{y%$Pb5+Zl4uDgB9iDN z(SjgIi0CD{L8ABGhmeSbDAC&}QAQ_vA0=9JgTW}#jWVMT#_-1{04IXIa9pr z#CI9pFpPd=U!BD7n(d$Fu%(V+!&Oc_X9t#ALTJ;JVr$&)yzlGrxWL=JvbfTPm_$@3 zOR^y;cUdagZSOF`(r1>)9k1Bo8dGo$3qB*<5orWw&H{% zr^oD4+kF0p(-2&Rr_1Wt9?C9HRs-r|RXEl`&rUr6sDwEguYG97vHCDLQPyp~%Oa1f zazi2wtOjDmR@stg*w&Grm0z(SAw1aW@?ok@U$#Rq@@?;dm_h0eT@q>b&ZlPhr~#G`GtBww^=0$pY)00Cy>Hb zb197>F_7bGn9Xa==R%Mk=OT16DHr*&xei0zz>>b}B(H2FHPL19qmB0juXJtPR8@Q1 zxMf~JZfm4~Pjjhj^Jmz8UtUo~f~d$$r}6DGWh{ZJ;|k}|R@aGlySoC$-qjjEBmhG# z5163C)M180pYR;@s8|D^;XUzUPOcCQa&*uv8DR&ZR55ii@m}P`8p-Zg9#NQyAL)sSSZ`hoGyH`EP` zkG$h-zPFl=Y%R~NcfykQx)@!TnMRgYz|@8GG^{+u$_SsCn}bEK%PCNR=CHHwfVAi} zt_$k*LnGGyXf>U_1b4QwA``v6l*`HkYni-VcC1oZVcI8RbA|4KUNy9>$0fm zy}IitqVJ1e7sPKD!2vv|!DJ2TzOxK_LS7O+t)8&RQ8A<{7Z7&5i-n(5yw)_}h<6>1 z7G3XPChsEUl#f4hRs3#Tpe%351gN{+ULl-+#)#x)PH+6Wn~zt5fpsmR!VfrKYZsqB zn$8{mJd%mH-)h_ZlazC)%wR+!>pW@exRn<=;hHwSe<$H8XU6(ZkbyV$%-=+2L(q4tVL`9{@ZhJc_hEdBz zP=pQ%Q+@wx5!?tbkP{qFvWoeEB;tRDlQuU{mOBnp z6J)znKHY#H?G?eATM1Yi^O|-S6Lg}ee~$QAJ}yq39o=lWSao zWOMv_?T}5E49k@Jl4B3Xi98uE(Rk_)wCLP+`S1V_&}bToqmjUDAn8T7&Y_$U+7^X_ z+g6W@!^yQoe+7NCs~?ULg5^GI-$DDv72YEIGdT5|D-s7Ka`6N^40qRJZ!O{uihQ|j z`=0JDuTA)dtmk2O36rc}I3m|q(MKF!`nD+B(sHhb{n;#*AuNM;>~76q$k0A4Cvq=3 zHd#s7D(vZsme*nYrcdEw$gSPff^vTkCwW-FHZWv^u1-xPPAVn3~Se0w|tB#3`o5@80)e= zt0t3U=u}H8JSvKtinU%Muu(#CSrtAZgg~ClO|Ct|rFH!92ZS<$WI^s8n(t*1eD51> zK#VVU;YXxWdHZep*tL=e=SjyqB`z`A^3?4|Oi!PBEx0L>Cs+2D-N%z$vx=C%;T?e! zoNst8^?zqt|1CVFQmMUdiMHuLRjQ(uQwh}Zr)=q4IDZ30h|ZJE47JF{XLV98Z661& zZtfUKVK@B(AKEm3SXwJ)*7+DF_Ny3~>@`Y6I#eFm7TPn`R*c6~*i=ro@#qfsuB#G} zqSeKOuTg&h8wD(^zmC;m!BE-NY%97Ve@Pr`?XqBgj4bVr=pu*W3%>OlKz7R?9Ju~E z$F+9YVA4dYVD2@pE%0VOyCfb{G@|V`>5`9ot+{W(kB(jA+sy)|M3|b6srcl$NB^3M z5i&=d4?Ry&n}=?cJbcQxvY2|FqL`RguRqy)i_MD=BG{5P`U1pVj2N#_6x+Udh5%*D z`rRu|B_Gngv{$-|G$?w26V$EL2ir4=T_dK8`e_Cnv~!)ugmt&86~Ww?C_&L=dyJ4- z{0iNN7z|Z1h?%C$PIRX5j)aE-Xo#+$csw`nL2!;5p}!@xgbiCCD=!DvhLjImuSqdG zl3WP8#XF*C0nzbP!SA=YK`vF94n-MEDW1eDzxFC9d^QAlbsF{vk_!0*KB0I`1W;vS z-q@&H(3Kf`AI}MpK>{{dkKknZm%D6bR}p8~?EuL;5vi_q!)LFp1MgTd80WB(3&vQ{ zR<7mI&OGFV-cCSNf>F?=1Y3#&yY6Y5jSkB3Q1|`xIO*o4%*T=uwnmVYhaeHKG0Ivr zkLJCGym$^HjDm!I>P_By#K0e-HEz4N!JM&g}CIptrYd5pb2{At^dzbuC zykI>?NFtzkb~KRj`yPn<5iyIT*UIPih$xi=4Q+8Q-ybUNA9}RY8s#7Jp31>^cZ%<^ zMeOb}`p7hsTD4y`U7hObxNTro=ai%&6QpO5xKbvR&cGtc-_R_ z&0rpQ*-16g2+6%=xaaPQhI`eD9@101ijE4J+=-5 zH!Unt!vVB>m)P5%NYnZk-MVcgZc6(}|E5uwL+DN&4k8KEt-e=-7BA+li`A!&(>4 z&}XNEu}lY&!Q<}3LcbL={PmGsRv_6PWS{@>4AT(EOxsWa2|M~C;ia?8N1zQgkoi}? z9yCM=Uy)*oxN1q-<}naa31Xjo&c# ze_66Sx~Ym#;fh8g7wa@n7n`(07n`pD$9RnkZ3o!scDxz~5h)3)Jl>;*aEM~u?l75o zcxFEqW&B>yaT?2Uf_;<8A9myX0#2$8o5K)3O41Mb?60RC?yipcb4#jM+CmRD8|IVF z9Q5K1KlpKi1+U&kC>n86HmxTO;tw&_a{L@%qe5#OM~edX-u{6v!UiaVz^{IL*Zd}! zo#gpLBXFIHkm*@5M=-5&_zW%54n%ZS?#RkWcVbt!&&s9&h=F7@Q-~ig7PZ4^3`S`z zihtF)+B^ZD@tQyU4wQc(r%gwd#A8LN;6o8)i`8FAw@nNs_^BI`4}+C_pDP=Q9gR4= z`kOlVAK#(zDfcyh(pSM{%_YG-YW%dP;WwOZhCc~E2jT0-i2gGtV`vX-<0o|3DrVcR&$*ruVc~~Uw&qDL%9bCTN7rLJX#lMQp}{e zy50N&l#AmBNXpTx?bT=DT(+~G-7J5|L+zN1B_ai?lJf`xkdIu|&(G^t`P6%CE6!%0 zDH4_ejaXm>8DRudvK1clF3$Rnrw+ZR9k&RNBLB?ya{C9NUE-_{m+Rcgkjm9{JEta` z;gQw@be5;#xDya*3yyAPT0?M^>=WrT*C~N=e_ZsT0Zb93>k;5PJfWED&;@*WX1gfM z<2DcnbB`@%JM&>WN@YU{n`r9T?C%iurH@xQ)nN}%l4t9%h*K2U6^+SY-ZyDAFUD@4 zrHh^^0JxZJ*~z;V3WjNy@6ntUeYh591)z_*XXGRdjmQoDa6JqqxqJ+si{qK*NMmF3YY9G(m6PFr6u9)z1MGCPTxu)6Wwd;?A7I=u?yv zTj7d9T%+V}V#$j$Uzh;o$&{TcUf9GpN~*|5gO`D9M+I)`q+dYGS3l1H?vsf$BR=!# zW?&vjYP&0PobDEH%mgxyEe}wjWEg$lsAbieAz&v)c|{Gm{5o%4P*z2gHrqXd<-pCh z-2(4drUroT7zKiS@~79@=X;0jvmbOsH5E!yfhM$jAS}*NuD83)7*Q{Y+^BUzI zNmlS;8#1wUf9W&gVEV+T{2#dwATKoKVOFA$uv5rYG5W3ICp!m90A;<m<4uA3Cwq`Q_%L@xtX{ zmiVWRKOiH;Gmkr$gbqyiH@>hwJkDW8yP*zk9<25y4maElibRg?G-3auFfOxD+!GzN!# zrje|k&Wd0Dq%pM<6T;i+VPXP=WLCq$>;XEbNu%S#)uO$oON<9|I!-;(r}lEUOMAz; z*PM+m`JWR7`cf=u|U|nIKaj9KK2+nf`UJ_~#h}$MVN)^o zz;&`*Q{xGdkq;SX-N7Piq^3u^b62ID=s2<+?j>cbh=qBX(W$VZ(04FnIMhIqrn z*0X+T%4nq0?j%WS@ZiYn{Vq_R+t5uauvRs<=c-+)$X)diOZ>Ul&h5J>er-Ez+w16i z$@M2fEMkG;tc^~Coi+p&y?zXX$gg+RB6s)$s~5*7oj^A7^E8~w>KUwFqyfkvtrhu$#1fLpxBW%W3r{vGv_@lF;-I~kBi99P{& ze!|UHU-{n5->f}cY53eH^%j$|DvijF)Q7I80e-%KYws9r>?cPN)q{8>Y} z_YesJlbtmNBNoYWqSA&;)gS6|Bu>@!r>?Bu^)IUm0EztkF0)V!7+4y!a=VE2vZ1a; zCN=5pLnU#7H4yoa!mjDtR-3Fh&ERPCLO;KzWTn#TkHOTvP35Vr~IUfiMtcM|KZwmV(z$aUEylR(6h~ z4^XXA{48ye31_1O`9Q%7V_S={gER^u7~ zqI~F8zr80QLPW}I)>}4-GoKN8%>QbpLf5WaB-FiG6nC{83HEJKS{XdJn}WFq)GpCo z-&o1B8=ddOj*CP-zBRmX>k@-j4n;DWR+xRKS)aVDHUV zZ}KAuZj5&cePD09Qhc(oWRTxr_@BW?lE zXlstEvHA#6y*rYvksOwb-d26B@d#?ZWMjSIKIe~ct6yapl~mPpz|YOObZ=vT8u>t^YGH7Y zk@!}}+XhpAe?c-j&Nb}9`eb%EpvXDbn&B&z^9M@?B}J2jt@%h3I4ONqlpTG|^ttjj zj8_&`(nR+)CfJ>keO`2PUG^BKYVkcrzamZUYk9+ZJr08r(Wwfrv<#hC9kj|>uf>8Z z+UW8Q-uwctw8=t?>xYF**maPj?5q?L@~N@Ca3t2yS5SEIv|I&VDY9NxpCiz=iV<8I z)&y7D!STH#`jww;&{z4Jv%YEkv9^)z}qgUzi3W5i6uH z4%Rf`JBMx-02Dz0>Z@Usu!B>8oAkjqzKP-{g7@%PxNc=3DEN?&-4Xsb5J$Jtsm|UQ zP6GK6Lub!jx;+y-$6Y=YAz(RQ+zrbKp4rFLV)ZBellNxjim3GT@cn9|E1Y48!VuR{ z2RCuFIr3Z%d68FOluMGu8}~zPws>`B37hngV;jLe_z0Y5XDK37e_i~<<7eLrHU>4y z#fX)Gege)?iK*Nb=M{UErEdQwueE{haj36r)3>5mGfs0M=hu_H0vBxr<(F4f71k?I z+%s>t=q}N4V;ypGO80?k_nqx9p~aV0h{Ji~v3-R{egTi(-mbui7Jkv}@+bXL`Ndjy z)O*YiIB?(Bq!5>FA8roOVa;T#8W^68)m8xg0`L!(rlP^QQ&{v`turgsLyGcpP6=lIG)$dqYYgEBy}iy z5>GzTj}0!S95UBW@Q+}VI7!PT(L=M-5`?M3S=C>iCCUh_KAyBsjsejXVCIpQ!9Ydm$(*9Pgi1^LJR`=k<6<8j^eYu*`_m&r0JE&h5*EY(RA7~cyJhGex(%9a8d(%Q!eXUn^n|sB+VLjHfM2wtsr>-uq0DfE}_UVRj zh?M<3Ymqt)Dy?M{t}W?VpggtlKsK@H0YgHvJZ7NY>4x5?_t!xan^`hM%Q@I!?gqYm z+W=J>wCp}}82f6H#>O|b_Px%ng?bek!(al%cJQ*hT?1NJQ@&2cBhR>3ZPLH$ygu%I z^6c?WWM2f;3mu`={ajC_AJFyIP>sth*WD_zu+jYkIorz6&-Mm3#Z8AA@MB4#fRXZg zNp#f3Y5pG}537XMdMDGn4q*u2eTM{|ItJ4+krPgljYgW8w~KigLNE_{Wogyx21YyN zj*1#=qk1W6CZ!EWIgz4TC^zxFa2&;DslKA~}KRSM$ zNl}}IAn}YIy+0O#JLUJV!3S!?cuADTA0;k{yoAg7#XOm*x{&hM3QIIceApp1#j?4H zmnl`POGVRhxapJrz7cGJ^sM=iWL*e=sp%D%uzzn%xrt4^DtS$=iJbt3Y%~SRK9lEQ z%g*^_S`&RLi#vyh>(hs4U|r{pqc;< zyxXob2BZ+pW}E^}%bGoJ+K13XY+Q42omq%}_WbW2@@eH4;0c{G)dZ@=X9`X{4qwCa z6{TH_*BelU6{By0X$tzkzZIm%rLYjTR`|s6`4tTvOw+o38V((-Jv2Yv;MuE z!K6S3WaqLvvb&mFif`TnMUoeVV)pl3LEtpe{a@y*E+&j8D$qKpNO_;^*GHZ^TB{BR zuYDSXbEKa>xo0*c1>jV67+x(nZ{9b7;%d0v$Qt;~KsNbxjm^NpU8`8GMiARw3gW0a z*kN^98QMflxuKnUh4KFLNw3d8L%R&k_7VW!s7ai#Zg#Z26apD4G0CZi{e|!E2}OSVx0TT*u($Lp>LhunZ@iblJA*>zAPukXz&L5{qyk%#0J@ zbMR%Fsr4&bL=E`>$@JQ-T&qZxt2Hu*dZJc86puu*7j{wKurT4>Vdt=klg9TW?U^^# z5Rg=?>rFzMMJ8B^Sc>m4OW6+gy(${&)0RK*1i(l!FX75YSF;DqltlTbu+mLx1nxj8 zwZp;*@9hFtGD^u5HMQ7$4d^!>ZV}%O(!Wk2=W5QJ&3ugYa zNY@}pf3vRG);&aRW7%TzVFXh*(rSWDbf-Zil8$K8XV8yWbhwbke3(kzd{P+B`~<@p zYNg6*P^o&n{8__gaMGzSHK~^kt^yQI6DY=qHF3L)bBf*yr`Er7=EfBZMXKTf$~6ZL zfY9MO)lANW)uEnIuH0AKTowCY5++K_dE1cv^SFEIG(+d;lNo$gI%V{rfu24tEzG>=D$4wc$Rqn{~gCsc?l0T)GYyRY#v}>(k^gSBb8>?JHdl0Lu_uVV2N>@`# zT&*KO<1XviVMO_Ve&>B`K zgrNpWtT3p6TkAJ!v9WUV%`TK%emUaU>iQB^dCQl3p<(}EDP2--(1{gybv4WIV?yC3c9&&JNx0a)`E!B7i`d~Sf=7O}PQuKQ zWL1Lf6^Dqj6mRyBaPa(?S&E=bc5W-Q%13fXhVAX%IR4pmPMl&`B(;{ZOvcKq550H} zPuJZSK`o}GK%u-{Up@Io@aah?@N2QbD7p?=^>+OycoMQ{%|+#wx>uVP#W>L)>>gz4>SU(z?50O_&&Xo8ttew;WmBVHH2O$bp%(F7sP%DVw`qG z32rm)^3{w`aAB6$)`-ZxY8s`|Xf8F)hFVZRoq~id`cM-$?c8(M(@pQMVCOCP1^}z{ zXhVug*xE4-s}=JWCvQSa;{fp)x(be;Bgaf| z%YG#rfgZ&8=_=UgfZrev;-P6S#LWuscBz~Bm>4;5Ibe_>0MeRXI@q+bkKgNPp)ftJ zy;jlschwVj9WdwIn%2lUKOmrs!aXUTE4LCi)<`{+f~{`3bZ{&k6OnRW(~uq9%vJ** zY?O`zppbhOFK1zybD@R#dbmx2xlnInks%4%gu!iAg)p5%*-dwGfSo8u9B?TF;ffPi zR#~VvWdgE>g^Et2KI1^nJGy%01+B{_bRG>W0G59|TpDD)6%5X!V{`+;*628?DBm=LDzRyI_SRN=HDRR?ZdU zVZu)x)H9qSoIjr~d~@2_BKScS-A&I3JfcrbX%QVFZ(DV2siw@%m#HeWnNboYRwEPD z%a%6@!9ip%t!00eB2dl)G(!&14_p2U0im)vuC6u}VJX99XvK!T7h2qyWpCh?F6++w zF_%lXz+q2jpV&oXI73ndkN|TBt;=-Liu4~;iKgs!W+(F5ti{SJE(5kvHPXta*^uk8sPc8uM=>`)xHTt^Pro&1-Q9YyxKA_aF zJ8~@hGxtfcJ*L`hl<86|@ioM1dq61lQ{`(CT*n~Js6|d|ncc_E@Eo?`2%p5^SM?t^ z`Co=z+Yn)$RjLcgU%fdU940DUGT|k{nWx|0)Vcvd;EcPM*CbId7#;`zUU{kf&jf-f z4B(El-~fdP$LD0O>mf`i?x9WjR5B zc7WVJl*&v2Hr+X{ltj+TL8dzL-TV-U=DlrUWOzMwmv||}cX88rM+V^XEXXI9cHzsl zC~KiEG|v|H1D2oNalBg24eqT$cTXHaI5@^LdRsC>fLm+cuO*ds`Cnb>*G#xa?GY*h zlcI}!c!P=i;!%nN#ev@1ChMpCyC|cRXvk{`4dRbb{53#$ul^pr)d4Lo)dYwoC) zPP($ih2{eaptwM?2v}wZn+S)nus!A!l64tGvhz7G@!et1o#okHE146(KgoCx^YQaN zzDmb8YJ1y0@gxf1YsKOO8Up8lB4*^nW1F9^-czN>q~TiiWHMn0yVxN9X&^$B)^iVW zsOR*a40QPJB;WG}(-VdUy9+co*r)!srfEQ0f#kELt6w!!@wJp00HbUK0OM^Rv-MUp z4p!Xb4R%jIBs=x;dE$p>45mzHL-&+ZUqfH6$g859`X=?#ddYI_$>rt^N~VTP+}9GhUnPm< z?_W89=t)>o_mUUb8PN7uRdS}L@o5Iv_)jsls<`V27ph%T4gFxK#t?oPm0zeC@9cyI zOZMjhuIt)zj7ckO&XXp3%;2T2`iki0u%WZxE@b;%w${*XMQ>UatyEPvO zE42VMPGZeM3<_fT{h??b`!DxuIrB)*bZu}2!X*40eXTDkJ1VF;bY?p9+8+(!o z_G2rdRlNAPx1nVM1xgi9UMQu(c1riQ=gKU&qhD#;yd&tYS3y@sq7iI$n`TwDDN#ifcGj&1f4Or zmOx~g|rx)eE1 zoS@wuIfV`Zym(;oGH@{L4gjz=r(|h(TT~Tg#MD6*<7M7W5DEwhMu(HH(s*+1Hhl8s zkPfNq%be87>bE`O8?Hr9)vx)4S|xP@IJST6GWH_Hmk+)qs&ukxjDW@JUOp=16 z!IHg4sdEkbd1y{|7fH^e-!YMX|H^)qG8d=n5WjLutFS7~k|oFHM}FCEYgbZjZ?&8I zdQ}@GtJJr$p~Mq=%pe>(gyyxJf2avh3*l+Z@AIr_u$`JXc)SB)jup)L9 zBrtKfQ$3{=dY&7-@Dr~GkeaQw6Gu~zY7e>Sh~tieeGm?YOyrUu8s$cgQ`~1QYWE}L z2x|b%=l>)b*f^fl2Xau=bq~tnuU|#?u5@{UP12=9_^A)Xek`nMdb08p>kLWgTc1`t z$;qh4G?)yu(r~Z`ga^5Bh$?!^Zyr?ILL%5&Uz_N%;Xdq9hvllU-wXMelda%w7Ex~L zQez;G+XUiqdw!wC;N|6^C6sObBUs^cE$JeM&9x`%T6OYiI7$}9t#m`lpqv?siMQ-Y zy4HEX*$6^r*1bIdFjVmq%kS;Yli$p`%7EoVhZW|QuDeN~~*Ls<^ zdF%HrXANw*F@aK(-nGk|Uv7(zcDCwP$-xf8+N`%Z@lF;q>Qu3>!oHBM z#6-qZR}JQ~D$*o~a(=685*-~mw&1eQLQ3t(byPB!S(z7G{-u2`M8p<8Hk@m&w{eqi)As~F9CmR4fwM#_Iw+8Wpq>U( zZW{dJlJ+c^x?#v>C@EMz`DrWhJMx#R4i;W%lPl5>$d1g6Rgr}tpy*MdC7;CLZE4kI zTdnUytKaYj%v1oA`8RA7GCRfDYdF(Jgpg8Za|txs+$(;PZ~V1NN|;+cnN#^k;ywch zUiUift7*?wu7bW{QBuq%5aF$;-{a=^nUB@i^LAIfM008u*+nXf0^Q zg8U&qBn5G+H)-LvsH|uZ#92F`t~g|a4whtDVWqY@Qt&n|+I#vk=e>J>t5Zsq1cZqC z#_$>uu zES9U*x+TeG!edEvVnF{=UkJ1udM-fkyVtK zmD7rRo?=(MOP=x`jE#n!d?R1i3kvf*jN_wz)&RH+ge8#M#1wS^CZU_u?lvPX0|+&7 zdG8dFgx+zcnny)pCk8rs`Rtusx&4ev@%Lp!L@U^+!d9+WPCN&}Ep)Q|Q~qfxwl!s2Y!pi5?lyNtii`{`)1<<9o%C?MSG(`!eVGQ%6X zRtt5HK1Dvslz$nWx!zU~wfap(V`WqmHgZ|kv z13EuM=JpFCje%2}Y|}1a&>7_1e=LL_v0KR0_c}C$nzFuwJp-GcR*%iGF3?#L_A6yi z7WEuAiG?J%Cj*y~kxgLtnfqL}7O*#krwnD*UKoCkC+T-W{R17;HfHln$M3_L&??Vn z@IW?JWA1NIlm$|N-DVoN3#&J@(O>afAHU#ee;UQTrF57%&Jo(rkzZU#*lfRwKMLlt zp6_@h)~c+s5oF7oAUus2Jvo*IY>D(dt0;HwjMap zchqOZ>If)cWaEied4azIeK{T~95J+6(<`iCy)u*|0Jx&E z062IIxWd-Fua>+-=C+4ksW(93nF|~>^q*uBqii0D7pFQ4$S^vo4mRb7YKbm1Xw31i z15w%%mK3^_FV6-9K2CTA7Sycdf4yf^>u^awP5`qxFp?_qeq#XM2FglMR>_S`icY66 z@HvR)$sz!N&BL4;gV3k5*K~c~?^-_+RDFIf06AGtHC;(^5y*V{_I`Q~l(aMwXs+2*MhFB=us#L?l#fS|oe+sW`0Hlq4DN+|2 zbAfdiWL2{r%Dq4E!{=aumR=B(lVqjC+Ho`NlZw63c{hWCF>^B1#4Q@s?5gtEbddY= zfIZmkl*n2!^rQ!JLZDb{y8bre`t!$iOBe~Eb4`GKt_)-eg>8_2-?wemYe!+LP_{Mb7-N1yZN{4cy84U(X5dC-w=Mi=-NDpI z8sVU`#FMg+*Drv9M(l4cK_TE0IC@z6EUuAoW^Z673!PpoJ*GuODN0)0A5;MO5Dv*Y z&_i-O>3u8r1`(LVs#Ga+YM1@M1(N!e&J{V~UeBM$bxwU{?Mj+-y@#!t(%_X^u{cRM$?Hb0Ro6lGW0*V!J{C%+t_JbLA&rlMv;Ozb(BZd^76 z=yy}V)zrrvSP6yPK@a6X1`i4>ECH`>{G&gqel6H`?sz*xECxk2ia?-%B2MR~g=QCJ znI&!ow~|XA!#Jyw9#}q?jqL?(1xZshbU~)^(IKjxdSg9RfWJ*WqAy!iG}{Igs_Q)7 zy4$UU9A{mq`2kur!Uup+P!O`Be{I#j)juk8{d%V9ST_cNIY~<&2qBwMScW z+p3YRO9tSTYKiw3Q9UO^9G_(h)OSQ~hRXN}5?r%gRz|1x#;tG?VR+-`lGi9#j(ic?b^(r z3WGmMe=YVx?e(q+7GEpG#fgR{E^?|GGEL|ny841TYPGkk9MqeMY09R)Kb4v^P`lo< ziec$5iMYId3f{IPV!EOyTX+yeyfqF+n6d0OyVM> z@Y7@DX|Erg!a=98zKTjZ~qwWKl1Lz6%6BT5i23Z|1x<+}jW1i`x-iV-+@u zSFWP#m(7^<(z6P%ij$50Hp@eE78Dfg(cdg$f@rvAF%ipk0{vE&Y@%&BFdE)-4-!jQ z2SDkg+0zh0-NIf2&NJmJX7h9z!$<2Zf^qRvHp!V6JGK_O=v#+dUyoHg!It;$ctVk&3Mu9t))Ijba?*n+4?{Hs7@!JNzZaUCfP4wsOD1W`#*?sIIeLQhu4_> z`uz%x|4AfdobqV?Tvs(wA|lOc?vS|Fp$zQ*$3t`TroTf30jh$l0791u$_P~CIs5#P zbldMHP`PmJJw<@re?mNO03{3iRA^o)pi*c;h=b@mC-87g3OVvWl|r1pSN!}1n!$r} z_MR8sC>u6^=-g@vTg^~z@*gZUtGrn!$$jNFx9;@k9bUk~dbtEsI_=jVu)od8pO3tZ z0ggXohs;xEgB-h`*MCRL{j1PnP!X7r@i8EuOhl^kNaa6$^B>6RJJJAVIAi-gz<$2LX)KP!bTPUm*rI$aoOm>rk>zgbiNa++Ub1{P@W zK;m@Rmm1M$4kQAAT{CIxC(!FsO4iz2YW8e$R1L=I3xcKF?%i&jX_3j$`g#<>r5iKntf2_V z_!(V!wna?ND8{Z^iQOD8Eq%2~IUjIvl~!x?7%5(YZIlqoQNG;?OL75U za_YsBd4J{7rP0s$FDs!(>?|K3>O~RPl(73FfMhX-(xlOpmR;%+&5m^WQgg39UP0%c z{>UFvg?eN6W%jHu+@kt$CS6guDG{Cg6Zhp}h9~wN6s+cl>5(K0Vl$rXS{YXvwfgCY zAJMw5iy2;Yt`O{{`rBy!9H!qKSL%6wTK3d2my+99HQ4yU;}?camKN`3QV5q8rq2g1 z81P6s&v&T6S>6}4{FnC(UF%Q2qFrkGH3@tXnp9mP3+74h{mh_T{2-nkFvAkq&JuD! z`ZMHDb@;?6>Dk?sX9JXhnwYCC-PvuT0M6H!@$_D2%HW-FHbA8t|7`D7I8)u-34aV| z2{xy^7gqlnGa(RW0ho_7mxm;MHz{`VGs84q+gs`@+a*^3ab3amkv_u2&C z*=^WP742iey)!lJvpZ_Q3EmME22DJ>4DyZ%&|%fZHt-o*4;Z-dD_{-cx4t_e&TjMn zr_hwtZ6C+VgfWQTb==8j5OP${eO=A2CTag)x_2kM44CtbkZiv*)%zbrCs)ErK8F#V zJ>!?3a{*#x$Zr~ouVkMkbVkIF6%38AQ@+ONL7d5MLV3vw9&6GXguU9~u>|EX>5BTASD4G` zHUU;BG3&cc6BK>fSltgO`_bjD%J%M9SMW8-)pMKVXIjm8ttXNHigx>1n>&^07643I?l-#i zWLfr>xX+uCWLJP+EYl`YqjNm)CmZFHbmRDNP$Hl0Jpv<^vLrM>*)OX{r&BkW2G7wI zB_t#MFH~gsN3q>dBKdYf< zK^God8ya=RaH)PD9KNCqxSMws68U1}xY<~M35tm3(Cq9`d25WSSZ8u6pK531iY7YP z4$L=Waskfcd(*sJM5LW?lD+@EK7Ss0e%2VmS$hL)o?zaZf zkZHrcaJJR>YrCu_cdkio&iAPpWhbU>Q?axPM>Z3+VtdQLC{9c9LCxxgu?VZJMTMAL&_uM zElMGHgDs%4BhE{^+A^Bq2$vegsV&K_Q74Zn^nuNHMzYM)HFJ4y_f(cR4&xdEvj(b{ zzmd)ZWL~j9ql?0=$4U-r(Yl*TS3O^aGKfapQ5Xi0)69Ys?$8|F^$OjES9a5evY!dG z2Hd2wj8QyxV(9VA^rNF~o~gsig?d~}0-izCvWkjboz?y4g)W&;hOapBePw`u!s?)B z`xqcC>~Rv=?jCgXbL+!R=ugsLetMit$Jgk~MH;x- ze2T}2d;H|nh8w-F11gc2<^tyXQj{=oc%jDE?LLvdRR?>!67LhBl;9SxYu(uNagHvm zqMAY<2&JRH%?Xb>9+j}3rXH!AJCU?}XZi3z zuf#aVdzCD;(AK0^SPcjoU#wmq$=#X@TQxrH*4|S$9nXEidm4_B8p-_V+i_0&4B5#h zer#+g;l-$@lcq}afqI&ga{cqQ!u&0|R=e7I&yFm7UEA7*{z)5kN@1cZnJS|JzJqVs`BX7lU0L$qkl{@8X_EPG5K`L3>_EPT_y}L{OUU9Z- z`(#B>yw71L{;^?WBoo<^ZNLwrdkJ}PsdjEaL4n<9eZfUDn?8^X@TBmuu-gN=utd8W zm1M@v{3Pc=SyLngzt=go1fIYBV9gueP@kcVXgjVj@1-uNzr8bAIUS{IO9sluuNH~P z^?zD7X!PZ!8wCpbWc;5+=_(by?WZIx1igx_&FiTPB|Ng+xp`}Ar}Rq27&TqS;2oKR zt=RF`s&iAqCDvn(zCsi7!?~}GyR)x%Zjs^QJuPORRF|)CEmDOfmW8+4!RJy6kI(PU zAA90D_1&gdi=523YxDi(6CXdaekc9@E|*TZLmqyc-)h2!=y3?0;5HKdMT}*)Y(a~# z?hto|g7|p>ScaJ{69d^EFD&Wxfu=YY<;5RCdyc1c7)R`8G2C2I$#nBPcB92Am>g{p ziSc`INkh}AiFhWmuBJx+i$dIWzlaVt(!%FUex z+LFM75Wz}1*xFQnz6f}XeddUNw zkONTr9xe8*iQXZ5weGU+PUO*Eti#NaE6M=a+epE|Q7Q9hL6lZW!DU9fKhXB zwB!sIQF=g9Kr`hvxJ6C$CP5jqdm9r(8Gm0_&0?O6K5|snTPES}F^*gN7Z`;~|E%pK z4dvQL(ME(&F1<%Q^XJW#YiZj;4-x2?pUm*j04qc>hWR*JgxH*!rY56r#?e~6X_P^y z9Q4kir)d}rE|seW=@RcA34pWuG^R9j7;>`3Jd`h zyPZ9TF38I5@m;$}M=T@5K{ygd@~f=Kh8MsI?|Hn=V?hq#!C_l!>}Y}GdpxG&+l zKCcQrhsPv&Z9#gwpeUCOR@7bW*S+RGE*=%h+!vThPoNP5pPj`16&8|ruASw6f zi8h5gUaQ-N0(t2>MpRTioL(I$zL~eWiiDeYpYD0INXAy1w?C{Y_f>b}Md^o&S=dKi z0L(N7#alo!BODwSTKO7$jJxZ@R`qCW!8Z|NrJ6fhE2&U)ZFWJfJ9CHy_|rtWS$q-f zyF+9aG@G$Of)88y`y?xjRU{)qJw>crUEC~V<;%51a~BWg$wHwweKEPJ^aqxg)iNG* ztHzF?8fDYU&NH%f&;IBxxjf<7D+=7E%VC||tsj%{lDluo9Hz5ZYee`G`3j`H-GF7* z3M4&hkP_Xa5RMEB(5oY?Fm4$R+GA0e7q%03_=^W~IT0lBdbqoTn}@#B!5HLW1&)*YGOv3c%AQ+pr)xIT1VNFocV5Y8wGs>(pDQXh*@S z_Cr7)pYx=(>oyo;KVJ}u&Ezz($TCK13?WSY`g|OxVLB2r9+9|ws$I#*pakcLpOX)z z-H6>*^+#@aQSrMrE2fBbZ3%3}@YCVTrfw+ps=_3@*(W47oeYV`!B~*Rl(>kN(V@b0$6oVJ(o6~qi*F8#SDFhI-o|)L_a8G*ob!tK}gzA28 zny|b|Jg==Ci?r{^MQwNIl|#}k)us!iIR<6fdF_F_?gQdD)HSE+s3uKmzWylYd3`q$ z)jA>i3zSYD@51w(Z6le)z6oejGi9danjUBfS>ybK!6z4k)yS!tqj_KrV!!k;|5(53 zs4TBJ8FFXb}5I!h&x zML|6#gx=(s)b0hQe5K&ciTAH@;X0&@5F9Q(u-w|>8K!f9uNCt28eCfJGQD@B;e4W| zG=AiwM+JHN$^*+IJkeyT(h(~#l>|l@UKOIP1{n-VuCf?7%SP=cpBx{6YiF~!JO|Z0 z1g)?USqkLL$bJ~#?MYhAJSrUe<)9AE-0ipOOWS&)^mRvu>E!>@0)_W!vFBd;9YSsMd^z;(O zZW@4-Bt;SAK~vEn{!&4gW`n`%4b(LpmFq#m38iIw_uD|ty3w!cNV(4fMbB>shULBT zU0Q8=!Pc&)cE2<_VfVK$=&Qp#M9 zl!5cxs_< z7G4V&eJ76FSxtVowTvC(dYxM>Xu0IDIwB#0iePyt39QSgSNGyVY!qMV>{3fLGS_8SI{CIp3U$$(M^WAZaZ;kMZ8}^K2fIAnS~OF$F@jHQwOonyz=5=x3U=YUpf*cL@L6$UEjB(6m-j&UuWfj!}n-X&pR#mu&rfOoq zJ##+u(-KH#4i=8~>%H<3m8}c%Il_w{`A*X1E?Y_;E-DM3RyvcFcFBR&m3<%R4F>F~ z$yn~>_A$u@Wba^PpL=bp3YKPqwB|P0q8a}lH+*>aG`2p!3S2I4oA^-m9-FR{VF)V6 zYT2=JKoBC-%b&cO$wlmzr(zS?ZmRCBe6crG(ijIAdcIqylPXDRyQk;N+psM9-rk6{ z+HY%6O9II4afMHpTYPxUcWW6{n{nUZvQEXGiHCqn$TNOt7mbFN9v>aMiUfu@FRSoC zPMTvRzEYtw0*FaK-#C@mxJv5v2Fz4aC2ZGmv9n43^};uXLr2L{f_Qi1`}>*m8w7v4~4~Db87ftt8E?wNJX1U=&k^9xue_~ zF$YE_ovzVAG#xoT!elp|G38Z1PI?O&+4%b8_(*8w!})B_s_#a4__Qa)quwSjnYzF{ z!)yzXuy@MSh*M4M?nHAf1|DESzYjkUTk1^_$WL|s_&|SyK~Z)CIjAF-EY!g#3p3^1 z-&*w0PujQfYl)cporkoW&I#cKY#2_)JJmyS9)&_eCC?GxZCa{>)7h0GJBItEQY=cH zQOMI=(>zMy?|qg6Eg3pW14(-^0h$p;6ux{&L_oWcS)4ArG2%fwV+mQ6K`8aa->KrSE6BFCjMZt~y1n8CB3oiMgf-zHe)B<~?-~ zHsLg9p_zdqFS6b7S+Qu<*F!v!IasG0OuyRn!*^6%>)Z3&P!BDTeN@db5b5+=Fd?&ZTi~a9(n?En&n;TdF!cgH1~!b{6^Tltt9zh*Q@h zHa0Ku9@csk>C}Ax0skId5CE&t?*{tl@?%q^AcKc`P>59C-)B0`4yQXalegXz8&gLR zr*(X&t})nV=r1o7F8;pUIGs&GkxUj}QGb7MpNwj)dsdF*P_pd0!QK%;-F2Iw|-at+gwwlh_x~ ziL^nBFJ!F_AKD1s7wLC=MV{k(243zCHEW1Uk5oBM$yZJM41!7NokWwAp8?WxU+WkM zB)xIk=dbY1N%PwqY=3dy_G6kJUy3Sjy0&F3s_Lb7`_%#Q3Dk}V@SFoF2LQ0KfS&ZA z6IlqY-?X5iHs&&-QD+cYueHARiK}!sj4js*PJCG+H>|e0UCKG>#u5&f*3T&*D>SgM^v3$NGJ<_Z?LBL{C$K~Mm!Fs z;WdZ>H=5qIY>P}pnnQBdQ>UTik*1WR9>K+pKt{tRuQJGf^CT)lzQSXb3e~~ z9EAB`6_V#O{WD7vpcyjz0BTaLk*5yPy{ndbefo8RXbs-^YiRa7 z&pRFbzdbN4JK$Wb_r)^_+x#dl(Pm+Is%>d&J6NdRQ9fv0x6=C#t`=mQ z=q?rexu0u2EAxCY0Sz&i*OuV z0}JX4k=L=kFI8(;Z+e2X&)C##r@V&wKEtaWIv0xc`~|8}X3|a4_H~@< z<&{>wMn3j~a~G#JO1v_pws&SPVhqn{Nv)m|IF8mOgfAqiWU5b53xNZg%NXz6UK!^q zX%y3si8Z=ERA%s3qoaQ|Yznxd7sKBaMY2k`K8<9RzK{N7;;*|u@<>wYv|D&gH?T>o z7{O{u2G_W}NW{S6n}W#|MZfrJwZD4w_gHlf>~TUr9DshVic%<2J7PlKpJ zM}hbze!SUEL?vm;?5hD+>_UmJ%i+z=WYHo++(1FmAshpSraaQFu(`@@S{E1BxT94| zT;l=qIbNLAvp&&x>m6ql!2dYwyr*!{uys#NpK0B}ItW=3yFSrEPH&bbqh05Y{f#^V z@JZQAF18^mKOCn#p~g8$Ks%Dl()=cOu4?>N5yvvqVcM6!FA7e%B)8gt4qVO?3%QK4 zT?>P)zB|IB0Ku^E@tOal!{(F^%x7Hc({@wzaB*evwRKw8Kn82f4{(9YXLRu?|%M_08bRby;rtyF&$*5bdy^K`&=%&I0_Kl zX#eE}P-4bz?pND0W8GFXeA;8(P4ox_-W~b>_U=v*9<)(~L9&?rqHOlR5+C3!u}0w& z3bf6|icWjUJcti8H){eza41RD`l@1e_&=-ry|CKTG&kqe0S*yMZ3_(G5I~L<%G18FTkZ&yY@l#PiF&&KpPfF{&UydceFm-iz9WkC_`F9y=I_>kPTS;GeclQ`tfN5Ya@Cvw zB!z9-WF+FToW03nW9k%b1|1o)8HQ{)&9uqNp4tB2Rb|xw$uIk7V>Qs=+9`sdU{>oI zKZ4i@Xw;YE@Md9uITvoZxHB9crt|E6=^sD^)isJl-%Ak(KR5u&kM4figeM`FIWO_P zV+Q;nkfvT8z+^2Fd&9G+oV{IWaSL1bYGj({^%xEjKPPDA@4^Av zte+;S@gNoNj^FossiDFU)Pm-+fWf`usR}}3z31vZmdR?-Wz2X%N~25};|0nOtEGPx zK>zns-b%PAdS#@bO!H% z(N$;exl6aA-vJ37$J_C(~aLAJ4K5B{-}jzZdu?&j&Q9T{ReZ+srma z(=h`%k;eT@rTzDX{-3{==eeM{hD4<@j85`r^luW%N5{wdVqnw;L9HW=Cv2fB$@B;0 zYPN%6`M7oG|3c=~VR-1b@Qry(XoY!?5WOzzJiu%Y5xOprV64IaMR>H|ON#nS773-X z7jv}i$t0LrG&5SjoIi-7eO|j&;(vale|vS;F4;r_lrEBhx4+|>YjejtYp;!j<8PdT zY|=Nx98uPXlndQ_K3fa#@zzcFGvC(h3xWOz)Ll5Zi$H6J8E-!Y((RNI4p6Hz0#KGi zY*%$UF3vo0I*Y9Tu<4?Mv)u5VG}HSh6rxK{fTr>xxLZc}d3m1feS=#Bid~mE*E3JO zQ1H*0dO}KtvSg-P=kQjlV0G$mfHz?L5>-;)OL9-^p)6n+Ajqb`f7a@Dm|T!tYTj+! z{gNV+uM^<(+;>XccNv!b(GJ?nejX?l z!=t}Tx9Rpv^vpy3`dT31dE5y@9dJO?nE`mUf$Nv4bHqU9i*Q8+haMno&ce=o`#*G*qF5#F0Dr`@qj!>vy7HGcqYlatCq9W1T!A6;8vPV!z5}gW znZQIChIqcXAb8XXzaiq!1xlvp0{~QT6Lz=M`7q;x^;wTX+fi|W3ut}Kw?zb4$dOzD zbQ#iFY^>7s8Y}JXt!J%Z(y63IQr7iUJ#y~he`uut6}BG#I1SR_Ja`^D17&~h$TJDI z(VjrG8R`=&WCyN~j~~t&paE3+cYyep#sCC5B zegs59TWiqhXA0h@txq}s?Qs5&QyX{_7*GJnf`U#T`<%uZkPmRV@dCfEb57-`3rII- z;@JP5{R8ZboHXE8sVI+F>i~*}SJ~Ij*yL{?e>%MsmdWM*|EY$eU0jttT3|QaU1R_f zK~Gy$mHaQbRRa;=ZT&FpliKF3&9^Fkj~@r}zB{MTt!PoB_)OvjQpzVmkJTt0rc2G1 z`co`nn+RVT<;}VL_8q*d%fEK#zs_gQsd%AcBw}v7oxRj~XXS;@?rQ$RY*Vn-?;jss zr?6g6UEb)pkg{UO3=zhg#U|b_Bz%Yyzj1e=$3Fu}TsKfIRd|pT2aVMDzzltFPrvLD zN4ZslUEvs_1eWUGS39`wX@YT>sZvM#ZhIIK=4rN$3UvW}u&irm?&9L~c3*5VVeB*D zYavmHnW*z9^4pxq|KYlL*%0B7B++MR9sk)L2B@KnJj1T@YjJeWAC`JX`0X8Q?GM%` zjLwwA#A--B>w9!^p>{83%N2O_l?B{26m4L)MfIO5xMB_e3u4)Fi zZXx=9d`ZLP#n>3h=XNHlTFV_aQ#3#--kT!DVJrqt0NSTrIkqLr$A_dsla8*kjLH^7 zp5fPP3yD1}z3C@)gxcQNKwPBpUrXX!KBuQ{Iex7&O3C6kAoS8Y+AUm~1Z*qBR>y0N zKjP#;@h6AdG@UV=MaZ`hgm~|@-G_r?l=W^`U?XkYlcI$wJoe+?%0}Rg0pmr7yD25P z)=@C4spzbhg=|-buwn+=MeB@!J0xrymSP0ZpLaTSb6v{1!*7nl*ct@b(?NDY=YI1) z28BKHz~0q2cQdW&J+8xJpr6gshx^hV9eFe*oexfr>Ar8qYT}rH=ks!$h2R$pURGmN zsI=U1$KR3^3wNeY0^;+@X<{-0j2H?&G8ojTuwqaGubgjJ!Z_zhU(ZqjF2pa4MD5pS zet(rd=%_@_%nAqxKmJbPjvYZ?d?3JQE=MMfSNm?tiu@}$`qKq)z;`yOrAuFbdYQK; zMcCMkS-frf*B2MMoH&A>SIsp?xbs2VT-~BMU#yHY#F?)B1+ zeoxhYiNMFT2p_`ZGQd-&nwYUN)89Cqtq`7+e%Y}6jc9>GzzJ3yYMkg4)upcMvUh8C*^iFh}%s{FKf(cL73J|9oJF zvV`sYzT2w+iT{s;u%qYnR@h$!E{|n$+SXMr#6yjxp5&Ky{N9!>zp9Z_6%KcaVhF?{ zdU-SO1+zqj%6Bq)fX&EeyX#ES*o3eumdutG7rB|KFic@9e^SGscpxs~KPE-7)PwX@ zhtJ!rfq>pxWi-ToW_jalVBm{>npm$HGl#J>3@K$gMCSNQoz^g`hr_}9#;9GypxMJJ zn~fL-#i*UAtK1%=+b!ww3Sjt4&r?6z9Ql0y+sK1NvyC#lX*8My_M!@f%^OI@>KElh}T+Bf=osb6`4TahLQj_gG-hsjxOJL*^gX+>2C% z?sl8m@lk}?#|-;i>x}jmT$x)t&`d9>ni%`xVO$X46;X=6X3SU=7$R;C?X~|C1=62O zwl5)Qk>IHypc1u|I|7<%4ppSVWOYO8H%7m?XcuS`jxV-Pz#-LA)3fIrm0I=^^Ev=t z_-`a+>%;NZW*FO-MZIEROI$yUIO(-H_Z5;DiM~n8)0=D^7A0aSFz#D-B)4H`d;c!> z!RAn$K8H2T#Is!1v~uf_8?))AMT?><^oZ(Mzc3H~SwKDgoqNWr zCyA|!T)W3iis7%);m1s;7aqyT0<#eO0%fwf8Trg;+c2N8Sa*_j8Yf^?U%)6O{$*RdiUKD|v9QgibXPhB-C&`+$=*wcp*pUrW1N87W z`9#^g01#>`7@yZ~>FTRioT6rgu8-hGdg(D>mrAi#G#)VqA};44xXVrA0*325}GR6fE9rKGbRr}A!*IgDN7u8ej%K!O_TmY~7< zVHn3hPfrl&$DM2`p|y$DJqac+nYQr{RcDOvu=$tjSi{}f@jY)RteOtCpC9?&_5VzE zF|R>L_|<%Rp2^yDR>TArxE?zIN=8{2EgmGf@T~khi6*i}od4E>{vKFSmQ55_XqCWU z;vOO;Bk06tEFcPNW#uU=*u81E<}WVhU;vhxsdZZx>;Iv($dl_A(tT}8cc;E=tNw;n zDV7atV2^{3bLV%&qcca6gYHkCLo#_M2?l&${h)=LQ(d^cA?5q2BoWHV13%y61|b=f zk$C-WReGywh|sg|A@%8FqW(v3K6^c=02_2CYXa6j%#1fe`&nky<_CpberCEM5yI01 z8A#_NR_z(S=~B*BF=Hyel)(<+WnpN$={-{$fj);KPPy(%EO$_eqnNK%{J?8Vj%~hybmO2|5(C_UC+2O*1-+z--T5*X@htPr;V*6>o5!-TiXGoC9oh~xpDQP zEYQ!-D<~|8OZM#-sZ{`tV@5tvu5*k*o<e>c zZO0hJFbN(Al{{!nM26oriB=?0kPo|(07jVM%&Q-L%@_>~&d?D2iT}*L84R~)-Ioue z?mnz7KQhHfU?;X2x`6rannohFug8>BB;I(rLcFdpN=}2u8&W5B3<&&Y(d(dL+T*QH z5><7wqmY5~Rh1ew*}?9zOa5q-8K09hm0qD-PPQB;)-=|@`N0sP3BPOBCv(7Ti!2MT zut(i7XywI-5(50*ruwegzO1$MIMvt=_-HC7+ zLU^b`fq6YIa;1xc-t4*ccT9z&g^H9u`8L_d$#NNRHvKpjllt5N28M%V%S|-+Y~LN% zZ_JP7LfH6T;27VV`Ka7@f@{1j@Co|N*B!fZ(pTHQHeDPxZIWB~%sSr|+Z>+|Rq=U^ z@asq>WD3^AjeVAz3nw^$i|Gkd*I@jZ|4~W-cU=eXKQ8uXY=EPP*xgCRC9Pc5lt9PI zz~|aWU_FfoAWU=nXbtiCCoh0Y6oZi%(KOw>@83@rtxqIT z)^z-UOWbnCvl9e-{dP~v$>ihuc8IY7Bz8PIv?ZNwUVK44?J#D>K1-F*zL1wvG+uan zxQ}I$*q-!o|BVE`q9#=Hk>@)-jr*mutS#8uEU;Pic6vO$|F${g+=}sp?03_7_$a&? zLVwVE4nY*FM*?hE8t4cfvq-s4ogY@8N04*Q2yFQN`W@Kr90&y7MsDllk z3y%!XqC$F_o3b%;Oi}UHWIU6Gt_t_ZksJ`ZI~dw9FtkK!f6w&|VYiXL_zP)}qNwtC#ypF%Qh zCICy&q3VIb z+7*`#m`jQ5Y<)mzg?{JShJJ{jtjJG)BIBkl(p}creVXB@`f+!7Y@Xs_#1DMZUkiJH z!FuYVp)G?39286)e_?)$J~i{}%sobtgWflb{`gn6zbrG>E;}<3$PF0`$q&@hrN@AWwq7E!r>iknx zc%)%dK7cmcr)bQznh@$pFF+NOfSs!99LOg>i15MPBxAa6H?jUwyJYBwezIi>DPT-v zT%|l8Hg`dsNn}Vzyy^*)Vee98o#r&2)wOO2DhP8AD5BQ%;FX#jKkp z=GuDdyS|jR2yeb7MJMsn%&E~j%S7DWn>pQ1gFCX5#!9L=;@ye-KKkkV0(hO^FxCWL z8mSewX2(x7WVq=A7a#O@q zv@aBVrc$ZP&^?)pk+9ro#f=r%d(l;t&b&}>-|@~cJKoUvlX?Jut4_D^$R=3s6c0#l z9T(Mh#P2>Ndz+`iB(z5Xv9)44j6mM9PSNY_tx|6M zfIGj#DB`sD77F(*mZbl1^l6P?^OnKARL&Cr&9%Gu__l}#`pXL!=^T;Ffs&J3+=hj5 z6R<`&o6qWE`W6nEkkz8-yZV{GH2ijxt!Y8yNwTCmB;y_Cc3uVvm7U$JTzCMD;uYwa zs_-t%a11R$BmSWtTHd_>HN(7^f&bRLjwStHYZ0|mu1^}9m+wV-GC*}H!sT14mL$@o zIr^1k#|~#({gh5{fH*ipNk)HH-G3B%Febe`6+RR5yI;mq&lX@@)xQqUdpM}WWmNG( z3luq>4UWfTwlMfcOigCOBJ`_lTDF@>w*fiooxH5_QgNz;2s4cXC8J-W8f&26L@V!_ zY@a!$i1(_M!lT^>Y*Gm+K?}84zcw#zj~(LSY#1Dy%uRzY!uFwwb=>?BN-3T!i@T5J z(QO2;KUO<@M|ozf&W>M3+FEUgt@i`z#nT3PgqM}Go@D8{!9(49i%K}l$bSCvz5K~H z;LFTFQG1y*ojcm`?UQo7h_`{!OWk@z++`sMW`aCD7nh6KlgQD zaVG{7X12HHP8P)v*LYb0JwoPF= zwLdbBRUjPWo18FJ4z`A=@HWQ^Dl+dO;C50o-**wRRC5w~v3m7^ zNX#*ts(3N7pMct)(T)O!({=j(#PWUntVsnAN>B#V}O{`mAPYtn_xgZTB zl#?|wFNZ2hy|7|SqE3_3S01nFeY$IriT_%#EOuG9{z$`iDk~OpA8H0+mC|X1%^1LH zQI1JsZ(lLPYB$uZ(nB6`)Zlj?$|DgKUz6&q z&l4*j=xh&7H5^a=ETa14>r`!HS&F@}-BrPzw~0o8xKX!R_&(MDUTW# z?YDbX=Z{v7yVY1G*iic%h*hIlZP)V7U1nJMaZpQz={1(QLm2t~MyxiFwEDp~jv=)U z&fbRD1JE2s!dUItu%ZK1v<-#$SjcHaq&G_z>|;|lf%Mx5Bs(h%b2?7$)cdHKk|&Q< zAE4UiEChwTKb=1!b^yZqS95In-=$raS!1Dge9*bT*WdUs~&3cp5UxUn>3(r#9gfnhE zMQzg>D#V+zgB4{bi^EUE8i|GF3A#Lu+sJzG(|X%jk;lMjFk_M4ZW5X{(b7o|$x*VW zjuw>)+I0*4Y>CHhFgJ+oiln-x>v0H!FPy3>rD3%y-Rx^#{bezuDJ)JWs(`9ovcp}F zyfN?A(0OCWxg%cQC`1tue;9t@X~HreRx4Wtd&#&wW$tF7(XhEKi=p$ zL^3=BF!3ir4}PPMk=u2xaJ0=@{lQwp0r=e`dezc&{{A#!)w`dBcV!!6A#0g@d3^~RdZsPj(%OG8A+%t}+u zTTSPTUkR1^P4LS3^!zb5Z9)xLr~Z7zFW3w14XLGz3_;6IlMV5&dlPiqA{c>CAkF4( zv0*4|CW@&%58fH4xC&|)U5phgv|l|o0M{Oef_fVc+8s+hkyAccz6Veo^R`$WHTCiI z_E&7)x4cHDX$vj+iR&`Sk=7jpFJD6Vb4DvyjJM?*LSJ~%nm{(0p4Jm5?WI#vu3eN` z2aQ)biD--8hz1!buM?VC^@Hv4c1RJqREv2BaRJ9DvDfxV64rqW-5E1DtGucQz;!-w zE}u+NduzSowjn4k)_8hHuKk+9C3HB1#p(G^Dqe@9ZB5&e*#PZI+!2j(i{j_tFr&`M zeA*q><7wfo-R$Zf7YDn0;%`2aUE87ZOSz9Juuc~~{{&l^1sAVa@n)4g=l%-V0>1*- z*jeO*)rs&yA;>Z2wzO=}f#2E{8&tWbtiW^kw1PP@`k?uZamySzw#<6b2C;Y03y z-bswbU)lSQ6;F+;`ZVKz27PH*PtK6mav9#UnTO@+xP(&&NO|@s3p*Fon=RubmibW- zj!E`AHBtN+<2_WpyGY74dk3%W>@fRVZshlJ_Di~VNkqF^xU^rvXkkzU&M6mgFQ-t=Epb$ z7(tkspH6{GSox9C%scooFv6ErI)mQ78@ipR9>|mxo-EnU@>6CAUIS6M%v(dkB|Dvy z#Q1I;CGc>jR^HgK-pV5g{m|TRw_t}rrZ)DfJ*2FOnu035VaT364=@S}?@eBJiSSmQz5D*fqqddblH1*UO@8kQjSk@=Hl1W#$`LB6vEI zi*~wysfi|!;Rn81bZ5e`sbGrz7ZvaNWTiH1jR3zUJP*(gkY{rP1@x89VI0EHX$Ijj zobz-$&s}S|GNP!-Z;_4HUo-SdK=V4Q?Z6v|10lINqTB+*DK;AT-5y!ftyACvcC;PK z)_pa~?&L;J14dQB6C+n}?>*QZl_Ts2+m7*#hj#!}fe%0-d6?e0hELs`F7&Y!cCL)f z&kp{hsO`GcV>|TF78Q4qetI^Mika_=EOG;W%~sIjz=r~{2;Pv>R#gx1@fE3_MY^=# z8fZfEykq=^E?Mun&aEXfN0=_4cM${L&?DfD))aJQGu|4fUS~N(4bEy~nMQlLE0vyV zZ@58c;4T@4UJn0gs}U0UAK0QpeJsnQRw78gO23{y7Yji(`4D{RK6*pa;Ztf|cHA6%cYwXNE#>7a2M)|FuysbUGi$Jz(V`eM1Fnu~E0Q z=-k#x7=#(linStR9(AOg@om2{!URjN*B~be7^S>2Uj3~I<&s$8$c7|o0y>N6C6tE4 z&o^Gtci^$7b-nuMMtKq4rwC?!5}V&;w+99BK>D3|#7=$1=P!`6p1eokOwU^*3< zO|-@2&cslbI?wPFds({RXQp|S_+)Gf5>4g0;?0pF zUE>3Re~6HybCNY(-o5|q{t70te~$X6pVS4)So7pt!ugG_oLVB4uCAv4hhXNh)v1kM zpXT9H0D}s)A)`QvZ?KQLfkJkA*IelCssdcwps<(-&{#J+-`vpBMNnx)nJ>OjS8D_$ zpVg4~k;`COgx)ujA~uh-=$+|UD8{$a{)^)W(TduLzT_5j(8b_Ze`C{Oq1CBcfJ;T8 z7t8YKcni%0n=b(}UWasW@t@|s#GKa!S^=hBisa$wD!k^PcoHT3{RJnXZQ0_37n2Yw zgb|aNokLsxfOtHeeUE#)#U=5_l@ebF?JTd2XN0^!>!>)@H9@Cl4sH{U-^N{&e@EA} z+PYyZ6Hq(Sr53i3Z4mV#Br2Faa)ABH`uz@1qw#I&I!__Y#*VL+)ExfXz+7IMt9JXB zh`tN}!ub$++hsF1vFo&n2YzO2@v^BwLI@X9Q^xE5eC~IDTdv>_>6?di4~0+nfQ#-m zRXO4L(L@F9EZaf3c02?DJqg%09jYdH_YkFOp-{X>Q^0uB9@#~sMYm{N>1n~$eKqVtJW(S5xFxJ;eWDIeZ~xZDQ>q? zAFjdFczdJ7w(J3|Xq&HG;5AN_Nd@82rUZ|HH+)DlXmIC-6Md>IB}0#J6S--wG^xAA z(gm}xfKkMy0^1U+{?wOxwqIAA!4_a-7nPB1@Jh$v{1c{#Q7v*QV0dvC|_YoEcyg5jt@%z&^-=2WSW;c|SqiA-TaZY?robjJWgBi;HW`Wv{N zHb$w8R=?ay4n37->}vJw0ERrTcRH?GnQ2Sgc5(4FwT-`ISK{(ElMHwldHWT~Lnjgs z6%tBZ%Ffc0;{&=?w{I!zqHP$jMyKMM+4M1xkb8}Im5M|fKKz*9=DrYL(?;ghp4nF` zKHGJw*G`Vu^D-V}q|`VthQpd^)oj|510ZP2)d6N6JLM(8P2|B~Czhk$WWoK#i@{!) zOr+#qrExPp;YY+$m08Vf(Q&9EG0nY1K|6zrS>)-*>wI=J)_IZ^_0-ca&b@kz;f~cR z=NavzPcp)`mc`5M zCH0|-7bNpJR4%&UA}jPIn7hJaw0QbIPzOVADyHe#qY`kPy=3hEwpEJBW}PW$Qt=Zj zD2A+4T{{arjlquxrZsM(m(rzNf@V5k|78~J4?!plD;^uyNje20unyts@GQa#;xNVM-UMdYb$o}Fi3-u-la#qW^I=axnw2(|HpP-2xnGd>i-{S~1WnoF4mJlv zSz-Bx^B=aCdhOThprO802^)Mq?dBeC@rBtLme|EIM~vP^fDAsE&WPKjWx32uwet^ff zr~A|zeNcuA@Z~vT`EFXBP9b@;-EX#$tl#lTe|~5SFwn4VUYBrZy2A7h^I|rV{p-QS zV47z~8f!AU=^kc{{Y>OTZdx9I)>oP`Ad0Wz+u zcgAV8IhRtUFn#J?&Z^B0)x5F-D4ysGUP-*KE1B~VF*?1{M1I)T5*^VOM8+#Z4)>oo z*3KQNTh?e)EENw%V2dIU;<~l1BIx}aX-UPBI4}+Tl{3@gq^`p`1*#knvhV(U9 zj2JI9^P&5AW>E1-djg*ot@V_J4U#-RSw)FFgGzr4GS9wJ10pKASC&hv?i8m)$LR-KLJ=ITqlDiW$5O4LPK_A3i8B?fe$Kg^rbcfIMb(o^6s5;`J!w z1btMjSvhoztylF={NvqbxLmhbU;Nw->KCPZo7V)q5tc|MyFp4fdZqJMolgGVh4Ysl zpSwW&_T0r==l<(Q1HitPS7+PeWVAVmdDit^e)+=<&%EjFE^}x}Zqli@d8O?3e?^C>E1o&^3*Ho_Jl3<_Cfm1%UcT`@rb3uZUKC~uta6d^1aLRgG#JB zeaJoW;_oK}7tY$P%4~DbV}-;zwEtK*&GwWLXGzD!+#8pD23zFja+`}Dtyj1yhWS1e zgH1S(Ni5e>5go4wbnO+q54OhE&C$1+k#}=9q!;hbSeE#!D8OFZDff+Xu|Y>3eVX?i zflAcS$gKYnDuBc|K4X57eB(x7ggS40x#>K*#$|plUueqJr18OmC}EDWKi^}aFzu+A zy0uGMkK4_u;p+gxhL_#U7yd<=LZdg zlj%srP(4T8m(lq}(5uL6ojcSBVpq4;3%Y*lfZU!&k~$6L&Kv~Vxf?sVs9vzU6ENhK z4W$(P>#hSfpbFh%gL}RIhrPFqi@MwXKz$GdL;(c`l@jSzkd_9K?rtgR?h+Ig5RmR} zknS9$yJ6^&jsb@58SamB&J*WveD1q@Uz|652H3M>?Uj44y}nBB0LWK|9k0#Y2NTI~Qb*Bs`9XGu;Ae+RmjOt%@f`4o|2DF`<>` zdj4)JcdSgerZsf;J=I!!7I>^@2dy_F>E<;isGr=Yovq(3}XYm!^IHOdlj;0^B|2{_AN(JJbbvEMl zic1DdlBmX;mF3n!(79|hX%%;S#P4UtyIx#fKKu~LBMRt%(}e4 zIyYZxnE5YF@TXEpowzTkp1Yb>(BC2~Hk5@2q94&UPV(sXU(-UKr}4wDtX$?3sx-Kd zTxK@NbYtZW^jDyr|57KZTo`w}7r0%PoFJzOwO8N7d+~>vL+Y2A|5P@A4sip8fZ}b5 z{4;L?ejD2{?)nf<`bY}o#hy9LW49DOst-J;5Wm2_>g98=XKa&+>A^#ABcpy&LQ8!f`@p?|ap_umKQ zyYbk%{e-3evrP8n>$W((mLDY<`H9EE5Ie^80{yKko5gUrzmid(Bb4*FXOFzW>+X z|JxE>Q{oHZAMgDeY*mooFtDNqBSGZgM&LNM;f>U#fRu;-L%u*xR39 z7Q9OiFh&1O-|HXEE5GUVF$+Lcw}t%6clSW_DRfN2zv*=R9_$t*R|htCp47dgA5xx7GfU9Ra|g7KFHBfDQD1O$tS5$rVUNbSKxOO!NWjRxPCj`6ksu0 zW+1b!I^adCX&{6uOm1pb5bIEG60F@==X6N$?sxlqnT4vXWH9lywn@F5Sv%o2M`voF zrutAYy}dz8v4f{3rB_VzP_BWO8d!)=^wuBW{#wJ2ou>9+ypmRb>XVkhYa=8nFMpmP zyG;bCd*y#4Z`~hlF4vq{I{pQO&=H$+faZ5x^SzilRk)ud#!R`uoSyO_6G4k`jTz>h zQIi1|pFZ97)mY&QTi+gD7Hok7%)gb=pTha~ymFtT1WMd4`i+q0LM1&klo40!@7YH0qdLZ)|M&NLl}^ERnNwFVkpd-?J^C zO>3)<^E-j~?-Lq%mAnQYNmr5^^cP;ce0L(t;wzHKIJZ7KmYJP^IXZet+ZJd^rTozt zROETC1t}5Iap@fP8kx6v2KQ`92Agi3!A6Sm>feCbgU(cIIe*5U@{y>4y6Uc8%PiJI zd@1$*L6)^Xw`N?AjAse1Ha8w|enry0Wg2*}liioN=0Tt1tOOf<=<#*6J=8Y`$6?f@ z{{-CVY3&0^Q^~mF(zdgYp?$nuy_04j5akj(V~vpAnQc^aagwoZzD;4fV5nE$2_;=q zg-^HexxR+l6UBjT!(bkZL@T5;ISuav`OaPFPA21>n~72oo3b?yneYi3h^4}4o!SZl zb1+48B#qEoaRnmf;;VpXQb#B*ZO;@x=7MfH%rr;7)%))4>S6VgNi=tc!%T;@{@`)4 zLmb)EA3tujU?G+KSW8PV%V%eo1|Dj5uKT#|g_Av%R`Wx_@m#%pXFD~@M$PoS>@GM- zW7V1@T@ir()=FldJvrI6QnmkRRsK33KJ9t}quW7pcGSsCn8S~WHHx`j}v7Z{C?Ke7=hWLK_8j^U=oh?<$)=S;IU_x%i^g|T3WI#Dji^7C#Usnk$z&x zTEu3~#!e2@B!{Q89uw=GvqqL?%AB&P{Vc%W_m1|Rm*83(8{UiN^*#eoWX;Wh`G-5)Cr{|cxpnB(F5uCR7c}w!iao_t(hX7CvT#Ku6 zv!;eQ7uXH96CJV)Hl>%C%A)FA9>wExAw-VM4#PGb{kEO+$ULQZwzwyR$1|2^texXy zBp6s2SnN*LAH4fx8=H0Z#;TD}aVr`bxJV-*+mr^5_eS!CzTcI`liD`>J3lHc-$ioy zik6mdoS$teULtm2xU^PZ_E&St#iE~>4fYDyLgSS5(88cij{0$}AdT^5g(cIt2)B5m z3m92ZW7gwG`olO3j+Uyc>f5dd2hdq~`D(4MYQ0dWbS!IUqiN;6rfS-NC|-64gqqD- zwAq=dk9QIWr19X$2u|5})(-bd=(L2)RaWv_h#{)HqK|5q!4*-{(BKp^?$v}kCni0w zkuf<$(dG8ic04f7CWl6OQs~eF^TqB8fmN+GAbCjmV>VKm+ZcLbQl_`j=mnMSUQM*0 z1MAoB8Ea|CUdTV?ITXo@pU|oeCWuR3Ns?RIinrf!E=Qs%6@Fs*3e6{ZX1wZ|Lgo{s zOQKzneYb_&%`3lgK@YL|QZ9C7`4Vmp(dyn%xIhAHFpfX2(?cO(~c-sY# zNSBi%Ikwq0=-O$dTD%nf_oV*ktBaSF+;a(2^p;8G-k}_3a@{T=)I{B;#QDPN@;<8? zsI5gY4Qm;M&pDwbkvzat8yV+u@#JMz^j5Z!JQ+iXOH`Hd^f2}_4mDg92$S-SGMJ$%aH=p8{*Ode^cNyk?WWgF&kiEc}^c$6D0RUC*NXg%~=Mr%!tlhf6m!B}MG^mY}ZUXA-=Hi&(0# z*!{!=``HtL6&dJk($&tAyH=^T#=1CIW#)XbgZ@47R!8fE9Z}r+lL)r$8eV=UpFW)j z-m+fwtdz1sk>}*S9iysSM}Fc>vRW)6XBRfy>D3lf72eSxC5J1e0yS;zjtA%#S>Glh?BAYEyUw}@~aZQ|4}HYf8dzO?G9 z(@I_0RNhsI`s%HRzp=|xq5zeH8A+?<-xt?QV4To?&>m!ly7O5tOF&FFZ z6wglbz8GP1Mx#J=41^mLwZ645w^n*7!!D31h1<2KF{M5xIL(~1!Ei7!IVm>T{&a z@rVsvo8u`Joky3&D(6m6_p)IOGMZ@&yhE3li}G%L=O_n zB`0iO)O9xQP~J(bcJVg*{#rq3EuZAQzh&mx-5=DkJTE4GR>|YF)Wr9!VvpZP9Z!9D zRp4Z77pA*14GCPAKh=JS7W_(?j;jM`-N*iuP_%! zSY$*4Zo|=cGb zWS6@2Ipt)ZJ=L+c({2aPz7Eo9$&p*n(gw(tA1-r1Z^rufXIHTHb1Q*%@jNWh7= z@zJxU_k+%#tlUTM)elB;p!;FD^}8Ht?XQtK%tm zw-MZ?NMW+d>?HHG_Hxc+_-j77(Ab)%J?Zt7%NwqRJu!uba5GGbGT~MC7e#g1tAVKN ztE!JRpE$UlAX3EAbSm_^FZT$`1=gl7WQ0FRuhH8Jk3->`%o?3QEYEUiq`Vn+l9lyJ}e_;YZJ zT+tV9&2=uL`0Bg?N{&?)?d9|2(+^NB-8Mh$M@CQ5)7hUxloLc%yNDyJYNj5xHsE<5 zRL;~h;AqcO6Cm5d#9YW`Xrfrf@8Ja|4$U^StJZhY6)e`;H;K_%ReMYHlurIZf`uiC zRxubwb}l7JTi-$4P2Lz0SP%Ev7UzE?iGHV6|E-0gupi^oiK@hrP4UEV*rOot8c6zM zqnycl^Uzn3xo@tVpe~b}mqvGqd`j>5uwE<0SD%%w5<#nxF%oa*Rz^-5%5|Rh&y15;;!SUyJpYF~DHT`ue8ZbjWk7Ll zJGG;GUv+@?vS>4K7xrNlwbtTzMUG9VeII2vVWA90As2WKml4G!Uu2bsvi7ZLI(O_I z{3JFXm%ipWJouxH51%i`i^H#qxt(v9PJVOwzzuT=NIXhwENM|@(1kX*jw+MFzgJk9 zI^ior$wT~xYSDE#Tj)L_r=xFP%`Z)0^%GDsz7gBHMH9nipt7tQGMU+p$&8-!wanjt zvi4z-#~{pbt`g)+&RiUup;wS=7$IU=P(Hsu(B#DtwYzT`n08v@swG>ghUDxn9L_S1 zOP|mTYlNy$4XASyRJPQ<=v|(?vxay*(9qgv@b&y&nVKcBiWY@#Ws&=R`bUWs-%G}j zxXGzE`rJxb>yDdUI;x!=w87|g*`PH!c%vIqu zhl($D7z2x$kF$|k<(~fjL^8Iut?y&hU)^CmNO~7v&7-!~o)ewam`uHF$X0ezG^hjYvxO zeI0~W6+7cjb7yZ*sLoW;Z=2XduE=ay!0tSAH?iY@x=EGXfsYiT{`t;!$5qj+DIED& zn8ballb=<>OQ8^VTt7et#qLv=>-3W}Ws$5QZqn)mD_%08#}T=y$JLcQ>>sb7k`H0e zj9@pxKl*NuT@PBGcVDhs7;6xyeBu_XBNf6lMHPK}%_jPO&I_y%84?;h zidf<=8U6S2(rd{PU16*EyvsHW=OT;G2JuPKqE@bhU9w_=Lrn=XEG)GI3XV)&Ovv~e z5M9^tF|$0B66+)exAtUhdbM?$Ynf>~H|*+wFMRPJEK!@Z#0B_z3CTQtL0oo^vV_;( zyx}~Hvm*8@ugQOpwlc038J;|T!UFAcDIDU?RoRndqEgbN%2Er@!+^iMdbqhJs$EUB z3=2&SLdFu8ayQ)6!cE z+I`;eo@pePe0jm|ImiJq>?ls+Y-TcCw6~Pps6YmYTo#?`5Og3O-~}R${S=r%t3oP` zrVa$4vVhyQv*?{aUI9J+w_k*ts1*3Xbv%*RU;Pb*Y;kx|Qi&pmYye(jRVf80KPQ)P z1cE_S{gYZ|XpQ>;>+rpWy0nxiIz}UV{Erosbyce0v)RUzztEvK*r%+$W;0>2wI69Z z={GtF=3bzRMP2jZ5^$dI_uAlpXUH~ZV~~;<*%|xJMK4GiLxIMwE?xR0`=Av;m(?BJ z$P;-Vv{RBB=qRS{G(WHAEuWA5arG6H)M{?Earz?hikvAVBseM7UcCUk!T8lrO<;^n zBh5j1ZIu^$L8Irn-k6Ey*-OSQvtqZj>06=L^b-EcVcazrS?~+Zhj#rTHO(H0fs$gw zD~U12@i_EFB&!=wgDe%zQ(U+FN^pbZ?$4aR%!9n5K} z89!)t+GjD^9AT)IE<(KOs*g89TPhD9KG9h8nyM0cR51L$kj#a3OJw_|7+AJZ=jhZ+8OrO+;Q zZ69&IzTGj1F4v3>%Fu8dVR1dQ@M$o|f3s4)uOR?gc5hWfRWI!-H4SN*RXE!wD+^L*++w&@3;~qrY-+w4p)IZEHyEfF483*aAm_PAO6g9Z~b}Ri{ z)!te*VIdcyS0GX{3-o}7;>M!VQia)|205IWI#tEwYRMw1I%(q!>m+Pr zE?h<(1ENeBfxHVGRCe!Bc{uwC=HQD+vg0!*l*q4N@8E*_0$W3YaGUUp9W~;~QL9qt zkG5|nu7&CAU6!+F2_?H*=yt)H-R=s1?i1vU;ENlZ%uw zbrdl=#;yhM(Nyc4O*Bk5gkz;n7S#G#+-L|0q}BN2mPyKO^jL?;E_O>&X0znHVK_k! zZk=mhuhC+0DunyWfcX7sWq1Q_PT@4IsQLp=w<FP2dqIU)a#^I`O;0DyaW*G{3ftE*qhg3lGQAifLd z7cav-KmK^#lj@8|D`_AkvfswLq^N))>EuwF^-4mmk1dm6n0qg9M*=+PG?RD`?Oczz z#SE97Ed2<@_My}z_C#Qulm=jVADxONWVZzgCsvtP;~EI9`6up5GGxwfX!4O*?tgZ( zmSezR3=;$K#uzF*(Ri**=XPAT_)a-64WQ+kCA)=f+q{=0nZrP|D9?L-I;zp@!(J<` z=Z^JOv+Y)v*dvz5mml$F<8UJJO-T(ZQ8(l9IIAu`e0EY3;O&9un;Qr%HLb+8&PB!@ z%uX{@*q@N9sdBju2P#63dmeBOttM?+(&l(GxA-X5h7$^4F4MPmA#w!); z+fd@oeQARw6F0>Kg{PUU7+PMhP^C-%Ys)cY;nD>|p3Y`1F)to^vvtNGyD6R_n@VX&HGNauFW%m6iGCNF<2jsdyE`yUfTd>5Yp zr|y0udc<}IG&>?v0pv>F=dINm-MsH+CIjUPUw|QrGLlr3O816nWammEDOi@XA#i)# z-Z%!DQbkm{&RX-QU6IVjAMf&9SRv@z%nA-}6Mz=GZgNw)l&cgoIKSDf$UiKt_Bocd zs$>cBM=SIr(Jz=NF@YGF$&uJ^v>xF5yo##IY0R=X zXF18WgYBA!tEWk^^k10BxAR6h4ij4uDvsFHDR(Oq@=A6BT!I}%ULrSHyh_GZ6s)2; z?!w&mHtr>)RBKE>nR?4UeTFYSJ+Sk1bI1>}>$s_Rdd@0AE}vdueml4iFO^d)akda{7=`SU4_n2!AbdL8V-dY`g4Q&VZjVtU7oP%i zOUt1EsHT7L!752+-1J-vYCHpSob7T;K;+(d3ENc6^|3R$?3R`}f#biT-7e#%_f0Ui z5cN+dIWzN+^nj45CJ#CVa$+?=8EoR@^7U6Q#8_%lKM@7f&4r|6;E&@nCZ|m2xb$UQ zO*K1dD#}qN+~hf9gq>kHp^Qa0L7kQ1%KdoTSfAM^%2yes1DLyOOImLwNnr$H#LO_fke$rB4&yu7Cgb5q}H;E2KQwqUI%! zfe^U;9>#gH^=t}HpzfWp%R74%oU<)Lu(|ritJe|b z@RS4=_%ZaWR!2*#Ru(A2UY2TBZwx;8;SJW-;82nZO$y&gqCCY!xcl^ z3vWQ&BxlkuFU!=`X^Y8_s23DMt2|N*_f#D|BJ7=a*i#GkwCD;&xQGdT0vpZm(Duu} zz)pL!6GGSo!x>ajui4*#C)$5CWpF0a6PT-dg0fTkTv{@LAOSTZ!bP+FsO<9c8zAV8 zUsYomdIX)Gy~ZmSvEttbyHzXq6z@Rp+vd+m(%^s4oQ0gJN@FK6Mst7d?0&*8Zp(*Mp%T4!gqm=*+;8 zO@t|v|Jc!B@Nw9ay-N4uvFQW7{=h~Wna?3$hs=xfwTDO=v495eZ#Td?UD_-*+T*sk zAZFgw9D-XcI=N?sEHpDO9z{tCt?|D0IsZC4om4twE^AgBt{TRjY{`HODZw56=`ky% zZ#p4pk!T`t7gNd9qx0}KN&J~g*B*STY9%-3rntf#Nw%>LV)@GUWk;Ap3odky?L@tw zFhd67GOqpRHTElR2>oc}z|u!Oq-}X{Qd{IemARHITv+;KzmVHA2k{JAJznTFDjc6T z=Fl-PjK9kJC=q$RG<`LR-Hl&uEa;VeNO%(t2W{FMwn*&dP&1vy=c_FH2eg!qaY*e zo)oDbiGxlh%k!OJY5Be*Xns%f(tS`>^`X3^vDznzlCv(wd-NmdKf9Gb#b8uv5#GD2 z*GP3-~cSx=6s0#A|)GfAx7xI=K01P}Tj7)C&z(U*I71@K=9n%z(Viz%Sn zkpyZdC{?^uY^f~qoBY{HXuCL&DTL9Xd=JY*@5~@CakIN6rLMm|WMgTf(sK#;hP*bA z*%N5-qL%0eO>&nu*R;;b&J}f%0b))GIvx$ynWq=C#vsmcKIK*w?yauWw$8J&7fc&7NJmtj3qlf^MZ z`_XLu)rC0&kcu_UV}JOQ8-~9cJ(j-JdUXX>0*^m%j=v!IXnI< zib{QSov?b-k@@#YaD~8#=CH0|o1f9|&!jm)_Unw=TkG2Qf3w8L@>>rRn@wh7Tn+ax5;IX<=d|}wlfZv(H!U@=x$V#6XR&@uo@{ZPt#|?4+{y@5zXSH8$lHn#JwjfrYv8lpQTB6JMgZ8vLGWZtsfdMNZE2LA;PJJ zlJmscx!hj|dDb+SklfAUCCjR0ezZBRLBwet`SmN~FjNGaTlCHUEzl_VH@3+QUs_*9 zphms=`tP7i6o7(`>B_%t5(YGRqOtxmV%O$B ze7&g(mntEk9`~RSB3Q4s zoT^tWkbNg8Ad`_@$;AOi949nfA@>DG7?ioxouOXUf?#iiP4sX^C)zpR!QqnqrCsN( za{^=WSu6EQO_{Sd?SX=d0$PoVk}=FA>*DA?l%Vd~A@KR?qIn!p$&&d}z zUHTC_4*6OaqnM@aHdEH7xj>s6Vi>(ejv3XMhl(@NK=VFVH}e$At@TO7Lm$yOnM3Xz zCa`;iJhvI{famDFX}BDDL8p}c8CsmHwP@Yy%^CN&J61+0yd#*XyRiBW?dEd1=MN9z z|7{i?hc$!n)N71~aBE%Kyv$17kJp(YRTfFkuHJV)CD1iy-2#odt$yWZok4wYJm*4I zyHzH|QNNf136*_3Yw=Q)R&xHsywjT#P!}&{I{`pBh5=Bc?-(Wbs zdinALA$p?Aw3)aD7zq&syAAe-Q-pB67#ehbak!gN_IgEfW`jUytjKDU5W5;`7js#L zB=l(r>?EUEW6xz_0bl0#c`Tr5lo{o{ai7f|CWz_A=G}QbW7!ydxH&aP6vp=T5)a+H6>jhj>@sND}O+&YT5JxHUAAa zB`0+Tcwl$9uNuyMtM@BqgZA*Kd(`y2nB@45J`0dp<*8N%67NHA>w8lDZ%Ib~z%5sfCl388d3*bfQa;3jb7w}qsWzGc}14f=pAy2>*D_sETFOIOPW8=jkqO{I7p*K)oZwcRQemnw{3lRVq^sLxn)C)$ME?iIKkO8E$KA*dW& z$4K$6n=T)FlEMFU#uR2%b=)+@H894c099se+OC>8KPY9=^W4k&Oj@6pOSKKHRYD&$ zKi)DmoJ)5WtIuG>5*ojG!QtS6NpZz(g^r`z?oE|8W>w~uwk2j;c* zj_%EStuamYqduQ~`Hq2v$62<}Rlhkk^84qc zwcYxiFIYs$HoRwI|8VR6S?1NANq+Grmd_O;^b#Jsbo1fRBmAMhy&jqrX6w}&Rs73M z29{TOidl+}myGViMA06q58YWX8zqyINSHAkX|tP;xnT`X+>Ej9+@4vxWj2)_2W3bc zE{>ZOk1M9ubw4BUNwf{RML4g07{AppDvNesy{rFxoe+hu2u`0R6>}VZwwB@}S-x7h zaz?oNF@j`ju1bcXHVtw#Uvi1fxK0SV%Tgyj@9kl?T-M5WakRn2r1|{FLmUmnT(|32 z;Y-82fX9|CnI%axDeL_Uj4WSm%*fMb;W45EU{LDqVk-)ThhuChZo(nF$FcZrnZ9UV z3<#ux;S-qK(C1TtC1ssw4aA2z2Py-4o*&;@-Yo_!NF&RwtvA3syD;~=kFJ^L!GV+D z!-%OSqYYkfff?2-f76wrDr_sp>(l~JO6--n11^4Z)35W!J5O+m}M=125stb_q#j)b7@9OaFn-01mrij{tsQ&pH+}(Sj?s3Hb`Jmy zg`C_kB>QGn5pGiWRRfA&>@)Ab^Vkk5?}EM@DPh?ubJFfdLR!5Db&TtX(e@0hum+Ag zpHxM4lKCipn05Y`RC!gu*y_?~e|!bttmJ83p|ISX#vYS~q0@vA-er7KZokrLKR(_s z3KK5rZzt5FZQZHqhe;EvuS2S<$G&QaOk9=e-kNjQ>LI+L>Eq|kXFycQoBFc9u4?px zgwH&4EH5c(!3JHFX%OU(U&+s-17S{TsKY`&cY4{E$Szd`OVp9`Pg={%Nq(Y4Be3OU zu0v!^La13Wny4YyOX{(;bC-UY2@M%}R4-Et|^97nfaz_V7;^ zmuEB4>?uWGSdDvr!(@{vR6HfS0Ij-8JJoJC(CMYMeB0j-nu@w-Gh3rTpX_S?odKoa z)#sw$pDwN_jx|7M+wTtJn_IO_r8}T;n4Ew;<9!)oupJ zAbaB_YHOC#hl2_a5p(rU(IF&7N1a#uy_LG9irzS*>FttJ#Vi#*-l!mcjsv4he1HG-N`&DNjt%mLfs95kC_Dguoz4M?@Fh?luN^>GHX$rEGJRpR%al&wRxgvmP#ku~(zJXWj#k_ka}(#q>V#r}+0}~C0#p=no~=SLtcISlxxF{yzfd@f7?JDEEwi&yu@6UC9`hrY@y;#} zSe9YM;Cpwq`x3c%sql1z`bQSaEhESP)IAi5AYpr=BSp??xATp-k^KJb$067rwj-{2 znk!pf%`J})oZ3|eAOt*3-sAR=U5|=!8_V5pxDeJ~hU;$=cKr!gDOD65RKbX_HSW~m zafvhxol^eTQUEwi3K^ZZYT`L+HE$iliMAkLqx#&Axxp!_H~3Db;=HS^=(<=y9l?!y z=E+*E%sm(5lAnn5D)WT(w#{y0DF}URZhOdMX-l;k`Q1>zi2DPBO8(t1}-;?e6Z& zap}F2Xr{2js%hn0h}GTpmQ%Zo<=IEy(%-V8fzs)7LM)!ywW#OmHkvOJVpR>?bkX$( z_DwT|DhT?8uQ$peBD|C@e=_GYUaT+LJ@s6b9HG=5til5k7!rfCK-G)hG*N|VsQ%q@Vev=A4B$Tiu%Xj8KETongsul#D8GVEH4x zNu4(Tnzns$N0G!{hga#U}=feo758=T7m%9eE#mE~J80#r#rf*Entlr>u}7_r04 z-Lxp-d!{?N>sf0tx$Vosls)L$;yE>>_57xH^<0l60Ag?4^UBall>Vj8sZo~4 z$&&1qUbbMzwWGXlD0k;`@yx~)_h6SVI`Q`-NOLn?P7)Q+zENO)uaksf@CBjHE34S>ngn9 zY2vVB3uZ$DIr2B!Y|$*yNRO$4ucL_P=8kcM&)r~!?e=RW3&^KddGZVTZe~brmeVhE z8PFu!93Id_5km6X+VTdxk^kOs>&Up1#3i!H%X;_2N=3teLgK8xoNjitZh&_y%!o zv*Vl8Z~c?l=pfaiOZ9;wO^O$BknN^nQqEDXoaPn)tBh`ZATQ3aZVq*W2Ucehq4W}* z#GKRYHz8mroTY@q;jD@90xHPQ$K2;;f&&I7y6%Vt_pWlASx*d9Yn7jOG@&|sAvYs* zFv_2qf>`}i{oU*BXu<+DP!sA+ztS>f*Zg+i02BuDBG15Un-d2RrWcJVe;!AFqLW_) z@YM2rwA*`p$02>lYN+;lOa|G5Q=85YcZrt2h=fW$tN?sFZ1^jBRH&tc<7ZqI1Mh*}1M-h#}(OPp->p0roAJ34!e+#hhaT zIu831Q7dbD-k6>exPaSVVOM1!>x-5orz|LS@sS7-E)-N!CdR+9TXXR$l2?!Mz5mAl zMF;q|x8YlZLd9H?dW2R1x7E={B(OKWJco|a46)>Ah;$CHTAeTX3gOXwj@leAI7jGu z9kJIULJaoLiGnV@AJwc+RFu&w9z)T7Ot8 z4zF@F%awdSB-cv(#JkmOuY*(1WS#JlHJj;#lKtWEx7(k9;0;}AY}BY&Ju|l&0fQ7X z6v_xLoGyhrm{Q@<@EL9D)jS)5BU}i3i?Y`rR|CQ~X0)*=^U_(H={%>=4x8|gOeYm> z=Z*IJD(LO|Cow$(yl_j?1qAZ)U~s=HBf_|?>p}_T&LjDn#rgZRq6RJJA2phL*pd#!I$=hk@Py#1)tmo?N?s+uYM$(2r$`%*Yz^n z4+)`n#8bae^tNsVNG(3$U8&l1am-tc3=+Z4`>sYxs>?k0=h47_dsuG;6@bFdwDfM# zLI39;fB!1@45;WWe~0st#Ls!`+QCW91t5R$qh9p>Dy#;YJOHZh(S9Hbru-F>GR9+h zW#D2YP%?St|3V7=eYPQg2S6jhZw-DK{)_Mym<}yHfb=FtHTY|!Zd}?A*CQ>wr0D(y zVSx4HM*($|)5A?`f73(+7^&ShBh2XMn&$eHFi;Wzh*sz>2X1r!d6)E0zcBE+V)N^o z;a99b_Xn;$G%)~sCM|bagZbA@+U0?fp3T0YeE84K|7%p=^!vbOD(^EA{<_I)T41CH z*3ZK~|IGyd=hOe#<~Ka?|AuXR6$kr$C@c&oUWR>ToT_;yWv(Jn`Jm|5Z)EI-ZwoH4 zcMp0Pf1!$ijrP6&L{Q-sm61ppa6|sL(ERr&{0{)PwaA-1{B@H^T!63t*Ue7}^gr7C zlq~;ZxBt=R{~OvYi#=vwkm5i6E;8j7lVp5_IPULdj5Wamoo)f=H9*DTFyKN*8@O4k zM3X83s=fVNAv8z-D?*OQk&Xe%T8mltvuZ_!@i{|vj;Af;xDWb9UEc;O_oO7-FuF^T z`dpgXm?ZI39rYcU4kW;}4;L=8k<~pZK)qW4)JkH&Lf+*-W(yR_>a|Y7ZU4FY`pndq z*yplTYiJr>%?WX?w-PNR(wGdKa)bCddZT72xD-VpaInpnZz4N~$5tesR`tBLR$ns-ICmw!c)I)}C)tYkG7Ae(x#v0C> zJX@cbG424LSWt-1($OT_dd{1)DN`xxw|)>uWWPL0a3RvmL9PiTSi zGLY%1)j1wDg?%h1vJLYjfin&}h;Mt9YY_lDrDhP&U7_0kavQxjgm>plxU|<$7W=J)VO!^2LD(PeUEyuQRxh3`=M zzwnx|;O$MYVUC`2W?*nI>8JgY<#Vy^Qg&QWoK?ZCcLnzmf0Y3&(T0n|~~3!CS}{$iTqF%O$}f$p;!PPYOP(5bIbE~C4j%u39pEsm>-v;^mS`aOHzcW?a_wV=K)3n+YB=!}!y*I!wR=~y@jJhTeFDtsJ4 z`hd!~CsKlB_^|ZhO`Z~s(Sl5sUh1%=;c{CvSFV91musHTMZv0_LFcG0<&0_etGl%9 z>4G}XSoJ}x5{U3N=wACu`=ZIjdvCv%L6A_^iZNDD;-LKA|t(2^)9NDUB*KoUSo2qB>ah)D>%i@nb?o^#H3_WAdX@r`f1 zKO6&LjJ58y*1YFE=QXc+O<%0^VJn$ydp9P=wL_)e*MxmDRf&iqGq<8fexLxTFsR~~ z0V>|uG9t=c{#4m()9CwGj_sih+aI7mNd3!49WaTo7BgDAGqAngNd3xIxI9v@f;A6! z4i2~%pQv6BQM?TQG-i1Y+VRI>gX!NfgU?~CJtaZM$ewQbvDEO9TV4tXFRlJORqoj{vNUd@Fgdd!ed?V; z#!+zv83hM$)jRBW3}LlO@T-%mpBjSA;~K8elV#@de7vG&mH{J6^Ykr!OYi=V6pD$-reTj?XBt;32zP6KSPzK7**DUo`TrvBG&D#-z6|E@^ zwN5+q%bzsRqgJWgu{+DIw9Jf9t2@>UKD;(`#9d8FQ(a$CIBYN=dVZqVVa3}cAAX69 zKCQy=&F>%0n{QAMKB%ZZ!WHHQP~zS71SX<7lg@=8O!ZtHLzz_|&$O3g|HLM@@nsd0 z<1Hxr^q7@7M-ad6e*kgj2%~uU36I%q|BJ7rj9R7K0A$dVdyAT}%AZHRHWf3RUC~|m zymj&kn^7BiC7Q6jw1v2g@+Z6lS5uqyWFUHd+WAGCTDbET(i{1*gUsPS1$ze==r~z zz_Bb2)Q`ky<;#YjVOYEgf^E=@rq>|l>EJHV>Jg6?EP?CgPxC@n9bc(`7Qd{kkk(d5 z)MW${S4*%5+eh39wj&8=vt}})L#bh>{q-qb)K7KG(qS98DeHj)33lACG1mE(o!_0W zBl3*2Mx0{v(lnVnRdDuSUufE=XO)=SjB5Ll>S_m#@{!|=Tj^|<-k`Uo3uu86-tooWG~b{E5UQ>k=nk={4Uv3oSZ= z_>mn!Pk1!7S|>@Rb!kuB@^@U3{J>}sgp9nfeTgb;1w)%6q5@%a$L3Sm_)K;ZzM`YP zOD1%#$GWQRZs1r1-^0FAOOdWC@iidHzIhpIJk#_p-r3#kui2_xRX!k|Tfc58>t=oLRAzUer17c_@ZC4zGKU^?&PAfF1-d z1&(HenD0~wSUciVJr(fa_39PgM_MVd6GwJJH-d2zA024q%6DkS%Cwu!mpaYT;=v}a z7NRlogNmN?!_Vt)zWM6rpurYUKU)~?6~kcEJIE?m)C8rgvz*Q^<{m%hC@su_n;n!K@LS)lG{xx44-p*3=S|?sFRr*(oMWH0t6u zX0!}ffx-sgO|{#lz?Q9CJ=h=Z#>XNXm{nP|#8=*L@0mdmP{SIJuV=WldF18!;^lQq zMt6760LmS-(UnekrM^O^<8Jri9%x&b#)slONK>=t3yHz@@zDdc(7rb&x%xy}2&mkv zlOZU9S%N7=sXBP%Ql`O*TSgTKJ_Q#P6C>3B;ax)`tXppDUzy)q4ov(AZf*RDw{+qK z?Z4A4Ma2vJ7SXXqeYgE>>l~3e;p|TA8_l%yhOQ4c5~Fu%onTiV(`tWt*sAr(V7crt z`LKrP4HGD5cG^uB>z&|uwNUTgNY&ch?*f>K`$Zq)8K3cOKhku%$|}YygoN*mu+9525-NmtWf0mJ8@MwUu#N16zeXUC1wFVaDZN47I(>x)$#Q z$31pbF(*CVLl$RE}kGbM7|@_2%#)>u3DXZdFAdttFAxoGE_-pPGJY zJ5>BNZ@;e6Y!OWb-o0Ck>n59t38`=SV5?c%-lc~Ma`Rre#~43s6!NrHn@hR1K%t6# zsA2cL?{{o^_C0fI^&!j*k!yqdAVaEojV3+uIt#RCw>=>nFTm`LDoRQ|-bQ+ZYgy2BOz=tU@xi=A9TfH-j?~4?4Vj#-TCps)V>Q)=jqg_^Nqp(yTNFB^T+G@Uk zIa8^q2hMNCYvmh=&FZ)=ln89P##uV9eekBKS-BDc#*;EN^C>%mvQX72eVR=D;Kr}y z+|w4r(Ry7G}U5Z`Q)eG@F5m#Ds z((Q)s;KK72$$LMUFepfS7GK{O88l}J^~==qM-0Pmmmn=Mg4I(`A5L|$xI>vPeRD4> zyxq+?O=7PsbOxhOpDAMBcf#BrU(RQAF}RIg^M&~yt&dUBKe`e}b*qT)oDAx}Yg$T2 z>b|Wn34|&2)0=3KTg}HHV@j7GH?HTX9HVqsI82%y)(z~Pa0KNts5w@{LDk9x6HXUm z@m?(@Sv}5_bI^yTqvF!(6Y5DW$m)gtp zNTaz2^51n>INx7Nq^mBk*5mr?U1pR%_#Yacp0Yc5ExA*aS395N@9blA`Ngw z`K?K>3{m)ur#3JW+2G zOZ((+H!HQwpR=J#jR_s8jOG==Qf7d0dM~^M{1$DbGU60}U!>RDWh*Ytoj<+U zCHHurWj@LsOEFL;vv2ot&$sHBCKu8+fY_eLPhBOMSAs2?qw(A3SeM4xZ&8-G=E8^! zr}!X&WJdJ(m#itLbDl)9`&Qq`!nz@WnJbAlW*IT~(s>uE+5 zXNzWnEX-I`b?`X06$7bm9}J_>0;bU#MFyrk2!fUD5VFpzW|r2^{e){cbF`$VSq>rO z0=UDd>mX)J6W?7MP<^=+?6hjw>J$Woc(l)gjMXedX7+as)YqO263IpI=-zkTfEle> z2zbFJ^=d3Dfg(8L=$!qRgQ)KsUwy-gTYMrnY{Y`MB(})$KpfA{MNvDo>p2#68KU}Q zzs=(t4dyGoC>;$u0^E-7q~F_mBK6hDh^SneyPys_!)y|qq;n^JxNLafhq=v2(H=OF z8vAvp;>`J>3OghJ%vketWZeuf{zxA>F-$(sAz4)CppnA?T2sM<4y&roq4vo7l};lT z_o4?AzxxBF4!1lMoX7S4;&+0Hp_P4+J31*Ou^9|xvNXC3N4$~n=57xwi^$R}@NgCQ zm>mcb#au=v$jtKqCXF8|lL%>sj;;}#kz2kv8h99J2fUOZe`n$om)8djRw?}7AtZjL znX=amlF4f7e)4CQXB==~hQddG6f?Y&36SivTubiN_J-qbsHVx_cy6~1YhyT^raFk1 zT^sqRTa{O6h7l`GBa1r$B(Tpu0@c~o=v1wD)KP7YTF*6VFs-P*i@tM0?>is< zvo&>np`v)8RrT=mh;ddOV+rI~)-CI2c#P;h`Uz!(6ZP*Yx-gclW)KhBhiT^5JXa#w(v`}Q0m%e?P;5V&kJi*(N2eZC^wn%t?kc87O61V zUtYKQ1G3b{Ij-sOewS>b-Nw1M!x)b zdwAGnJp0F_7w~EV;!W6SJLePw(O@`915_$#%ffP>oH}Q3t;W$lFUGkG)C%j3HUOrv zLUCx;@9X8VD1C}-QkIh3!)cYKhVzUJ#&UYz0FTq%lyE{KpC2!6f-P*_!EWKRiG=cJ z02|!s9`ORJj{e+~DTumK`858DfnDlx%-Z>t8WPx#gdt!>q%&7qvXH!ql%G>unk;UL z1Isc^ThAS#qA9LpfAorDn+%kLo#;8H*f?`Nyd39s(W%&3M!LkXSd-1zQ^* zte%&=6ZKHH-x2er`uw-xKVBhmAy+g)xTy_q@7Xo+(^()EMB}VQD({==JWy5T`RT5g zM9%O2F>6@dg3d_hJ~-+2hFjaUEg(Jbq;}tlyF4v-M`}Ugd=AZkqmPbNy|RnjWZ`b> zNxyrSW#G|bIp|SK+i4IYB!X|sS_fc9AvBh@rydTlRL(xcc*Pv+&?SsdtuK!=?3~@b zbeGq_Gz>e|n=JT_OWr+C+V%;a;B+Zxpk-Cs~~oy7ZHA7A|NumQgZ6n+i{vv={dfyiHeGKHRE1gE6$4L3pC#4ebxtV9u-T9J)Zo z)RzSF$WCTWw5=3>3fze!joYa9>I0YZ3r0>FPyrW+L+yMol(~I*=+?XoSTZxr{Z;)V z3`MlPQsoqmATl32-To@k$LxCJ%wNnWphA1jzg$U8tF^fL`{yU_m(#F@0x2=L^Fy_> zEAAcCN4f2n2Re4cg7$Z*2l-Q%o6TB8w0MvGle4vs+>C<-O;Yu}UpE@=o>^-;91`Nh zd+nUO7yl(#)^p{H4tZv4RE8~5gQP|FM8A-3Il$d>XwE&2u1%Nmw7_j!*KgDc4JRy-m|Vtgsp%3tZh0tByuK-RwCRhnCZIDagUQUIM&`E zf8C zz}oC)1DPf<{Hk`h;DloWaH95gh&*3gxa58G7H3Eb%HhZi7;fmV95PRyCa;EWeF5i* zE-Pt}EVdpQZ|<`hi_f|6z91l2k}^1FC~inRStXX=$`m#FEjltux0EHU2~G>!S0##0 z_e3560^|DUUjd&F><)u)>h6=Om!e_!Ty>4)3{Kbno@VX^k)5P;?9$4BQet&OXEeHT zGA1Pg@^6awTbd=CDviSu)qygqf7#+dVT}Q0ekYOZXV}wdF|qaS-A5B|Hms#cYeN@A5W;P^KqG$#JE-k zGxE9NQxk)NkvJAUb=+OIR?DBRdXZwjQ9B(sUf{m)T2CN#hI9WGLA1=vN~;7&BiiO7 z-%x+l#PN+8`1`b1F3H(q-)_d?4?k$>*?k!cOe!ANnxHK94Z=@c9}TXyK=?&3G`)7b zN**N(9qdh|FOj2#;pc);xr~qeasZ3Rw1Aft#Pu>*p{bIb>@OmZ+|sT_r(X9ExYdX) zgy^Eea_Bpd_gz{{ImPrcKJ-_K5$90{@$*GQO6~7mXA*)Ls8K;v#N~RGT>jZ_0?A|H z>%pYy%oD-XYe{}tgY4p}l#QPXA=dL+Uc3Z9 z7^*Z_tR>>>)!>?zE9gIA9;x&m!7;}PKQXNvOtj6YvBhA`7pRE(GgNxRTPHgT+_Lkn zrcRz6ZQk7}#B^abU?;$4Wxbj1X!Dn&icQI1#rBDuPRwOxt_zOHu0`*i;{9Aq9Y5@s{di_p6UR;$ zeiQ!bbu#;Yug|-c>l}ve^lErEA5F1p0u4M(rs2D@`JcdK@VjK6LReh;^2-T)Wj5&c z4>_Y(q4h+DAwvcea(LA)t92z^3L@qsO`_;cwEzIe90L;bkCf=`*|Gjl4}ZQ8&#RVa ztUW&=nvfH3Sf`ydllayh`zk6iB3s5@Gtc(o$ifre`X2VnqxtDcjzf#79_e!65p_;< zlmpeN;g+9NnqyCztsh!E-FqU*CF~NWG|(xsZrs$ZdBUpwy+eh<2b}-pIi2jE0rC@` zhij*qyD=McsU$%RqUz!`B@Y{^k~vk!ZJ%}5c$x5qB}mmrQ>7e=X0KRKv-6kvd!l$R(9AFx2#u6y9mEI_Nghb{w9Hd;@+ zd;NXkAN2B#Lf}at-{!Ieiv4;KHpfe*v3S6%$S0AZqad`x)Y>7yUNE^{TxYT6MNa%*1 z^39q0>EwDgn8drY{6n$Bo&3x61LXdXX#fE>CCWJZdW>=ElnroDef2n%4w(J*cfG^P zAEfk3Md5-fnjj$Ihlz@p4Ty86@A{e$xerGAj2t1uEje6w3(WPyCJM&$!H%o=f_E5O zjh3p-jE7!rL{BVovhFH$y5iTGy$_0V=L{Ms_h!hlC(?5v;$Avqb(ojZ@Oacy<9Zp= z>JeD$H<3J_e82?{zRqCa0ilJ%h>B@mA1aHRypFDnW}4tUu{bP z)vqet#jl;{37i3|ZA7J(H?5AqGFHjxOgbxPF8C&4^~i@Na*)d-vaoVPV?8wr10G-e zQ0JIqA}cfB&)F+Oq{R33f4Z?}M9Zi&dmOSe)W=a%!^a~_O_dV*bdU&vO=brKem}N7 z+JhO28jB-q=<_pOem>>nJkCm|boFN~j3zboeR{o2{>bM7V8$Ti9f^CLVcx4tseED6 z(nu(t5}Y)+I@hpkB0Oc;-i?&T(t2@a>~Jn0;v@*CC$TfboV=Fi*=>-FVeZQ3Q@EtM z!5VX-w%?Uj`*4<&i$}`3Wk5;lA$&_Z!!-W-Lq|d^WhR*|6Ka?MA1C^Ow#Yz1;eUsJ$HWv3F;0 z_fg-(h1FjXBBwis{rV1@-y`x!d?4hx`HjoO&ld2PpD*5W!-P~%CqN5rRO%Z&w8~z~ zGCsDS`zG`v3^u6Twb4KJR;V55FrXk8sC{=Hglb-w1)33E5BNwW;Wgou9- zLs)7ayq;9`_5ry0WyYDDtMQ!SoU^?C-xcf-$1A4w0lf294Crv4)`c06Hv1H5@eob> zp@QmPwdtgc-!o+0dGFn+%KO>dY&?~|{sD_u{XJ8yfte>hAs(D_LEeDlb@int&}`RO z{8-()R`bM3Uug{%GnCB4WJw*hcpzJK1e?YGEuD3z1MK`oM21oR=Vl<%$A7Fm_a+A4 z`>_aY09UmuO#O*9@2KG>Rzts(20-t=taUCa8F1(f?{v6wSKUa!PhXH0yRmamHM@*p zuT$K4By_8A)Tb`fc(r=bn*>vmKaE>bD`(_U8UeK&^ns&+k2g83e@KIf`d}sr z8*I>~jVuI`cP{~%^b_s)=@t$32K-G5rH-?zP;V7F8ZcP)g(`d~1PWg?nI}~RU~8pW z>v(4;?{lE4M>z6t!Q=@N%f#Mv0cZ^j^vI|-px1KSRR-I*A{7b){qO6921y$BZB!3AZ1dO^0%k~8dw?(g^J^(Sd9HJoRqvOOU{&hsfm-s3AtcyCB%uOI zGXAZT*@V+XWiQVbtP5=ip3gL%gTeEzN~UKC(wT;OdB06|pUC&|@vF9};{%QjA!_Od z47l3lQ=o9hg~Jdj?^^EAPNnRKC}2FQd0P^tfAkQ#@mlS|&t|H_uVJ;bTiH$Vw$~<# z?RliHV6UDvN#LKi|FX80zv&iXO6S&>a6LUgUT}k*Q`(6U--c2$rf^9=+L^gOOC|JBNtQ-WX zWvH{|u@;sWau(K>JKf+4=2Gwzceh$kSDf>Dbo0b~oViGFXE?MdQQk)G9KFxWDrM#H z!5I&|;Ix?O2(pl3qZl~#Rf~4Zg*qV2NyAkyi1chv)bKIH7Ef(>?^#A8aFcTtmK?tL zt#)xcP4*UT9bANuY=@;zUiog>B6AIg)6PT&3&=jV>jHd{dK(St zD&}vT)+Lr)I+BqsGHfHgk;G9EsrAi;~h-Xw4ZG6+E5;3ycy3rc-}Qu@deu$1&WBefL%_Q?eDTg zsVdpGBzn|`5B#r<7XCr6d0uH&2Lj-Q(xtX zz2zAf#v!&j&o(X$*M~9^7r|%zbCDa&yQS&ASW2}Y<|T8ps^3=-mYMv*W$SP4M)!`{ zIc7+AkhX6FQdktw2XPvG+>kKXdiwTTHKKl}f}tsp7{P0I#~JRZ0EV%5}yvf zt6twK)J`IHtP0_lmMY4Dsws?VI+v3)u^P+%EnU4yjX=s80sG4$NCrphWo|N4UkU3W z5a|hX`0{!Dlv_<0N!7BVWas1gs=-WZK|pWe2{{qPlep66A==N6_0p%iR^w1%Z(KJWhP+Xsk-dTPAk2%j^{e3jx7-t*tjr zJASBi>0I`3#(-DTQUlQ05h%8V@U{REkrMo1A!s7Qhs6NsJzD$Ev?-tM!OcIMkD6O% z;qz4VT+d#&#`r@sNYm?YLc^{c_J)xsY+}88Rkr=Zsv#F1aUP^~#VYGtE#p;yS;v~-O*70 ztuPbmWI*p%t1GZ%WU#dIeTpfTKmlVyhEMOkhWzVjkBNIMbkMfM{@woojpbkaPW9y2 z84;co%MO&7-Bq!96=X}{N$@999=KRHe-hX8ii!^NBJV2ya8`{JW|_5^m?dO`@S1$U zstrv9U^c@R*_IOZVe%QCAc*upL8RkWKvBtVECglwrea`MNJ&5VQuOxb00n=|E95_( zMd?*;QPPveZqXUR9K~MJR-)GhIfSt-1pXFU#fmm6j|q6ROx)*3rh_`?DsDvEZqb2t z-9rvRkNjvZ(T1!&-434L!i6X#k#>ntcCih)lcYqqG%Q7+PJFahm^fY?O#wBDkGSc| zRH>T#lp5ZQmmn?cKOn zM`Qs=r{4AeUDI@q!o6Ho|86&0?;r$JF@os$VKLI5Fa1uJPfXKra+59WTqHiX08D7M_VFp?w^q?YNpoW00 zxkXL?Gef*x$8_bN)&bSD#28Asdrt#=!+Dz^8h$K3ZP{LuBT37&vw-`qFHs=h89`Uc z@BxtL<=709I#@)_h&)LECi?_kUYhxf%w+s&-)kj}viAYt9n0&Z0gHNVI$x5 z&uvVIw#BfGebl@YfO?hTeHTLUg3p3F}apmM*f?uFEybD+aqIrI~5WoxhCE81vnPx4no=9UfVJ+wRK zz#*(IFva2^OaQ5|Jo2VVO_I(Z(|7W}O8&S(eOpMoXMo z*3BPu6a+;&1+bdbZ*s-&Tnmje!^(ae%1`heU8{L^)vxk-CY0b8FVDfBa76R!=iy`V z7~1FHIH3V%_=?PRH7Rfo=X%JUI{sDo-Nsi5BY(mUl#O66RPl;No#86pxTW34`9eMf z{2}RGVV1_(@0+;8ZS*pu>?BPX$Eo7X@EDmbP3`^3J|B~*QX_KoD)la|aq>H5Ajofl z<#!pZLCiu&KdS7c3(zuFx`>)jn)KCEp?Xs*>zWiDjr4->YjOGdqSLQcPiHS2hEo=W~OqpBN zgdtyb4koxhr~iDL3nboyQzMVl*S+`XU@g)aiCt=R9r^UdReHXU_1mJBG8ydZp-fEy zP|2yG11)lUS`=C#K+TJWx%DzhoBr4F`M&kc48#(eK6UxsNr9j9#ZhH3EvU#tLIFuY z!d@uyn8d?rMN?E&tJm_oosJm`PH>TtPg3y{F~`;UHYm;ph%p3 za79TB&8F~3Gv)eW*s%*Vh9*lb5}$IwFK{@S%*<^8 zJF)yp88(#4178gq^pL~JCnO@u2GHybQi@Zbp0RjvUb5xPN6D6?>(fRuwm}J=+Zo(A{7!b_PBV<6F9SBDzFZ z&o=g5Z}#1v4{X~amoLif4mHaJK(M6^kjBvx|B6sdIBlf`3IDhtQWrviikKB{40_d-SFXh__jbFCM+I~gHg*|*{V_D3q8U#kRR_-GdG#~Ie z1z9iIF`rf}WjdmXnmur>ZoZaZ#lj{#Lf_odq>uF9da(ZHlZ+nXt(^`A%^*wmPfq_n zv~t!H8&;tH?hJ^Y%)mgz)$7(C3=tDG1Wc{b7hz}K0HnjB9B3Tcfs~cptpBmivB^Y8 z4j!^P5z#ilG-gk~R|gLaF!~^M%Wt0ny_qfTn`~zVqxH)jkugZc*=yCi-Spt-iJm{g zzW!l9SMb4&F;M78x)q48N{RM6FLuC5TGU>%Leo!LcsQfa_v`ob4`iMM+d9=T28&O% z$cBC#ETPFt`z2E&_Um> z%AtfL=t8=xa$MIsgYVVs2Wl7e26Hq)$FhZA(GQ<`8q)%8Ns<{QcET?trLbc)p#}p> zvzuyA7(GATpdy!Juk7A#VgOwZ*#JnLJ7^$8iRo#IeaP6c31}j4>bg!BFhRW&iVe!+ ztdsOXU8JQ^#WSOJg^rcdz`Xsr;ar>>AObY`NuGp*$s_+D{j{Zi6j;2GQC-4+T0gVN z<~p6mNN8r;{$N|B?$qhI9=j%k81Y?DF0 zt^tt+UX2%5u!WA;Dr^i~otKs~(mnrBteF4#ot*|}zBX8&(z1*g3^!FI8gd#|mr&%s zPw)4iGSG@9|u=u}@OId*@EOa`)6%;1oE%9Pvd+OcLbfmxQ4NS9}zE;#fx=6SGS8 zESa0n9KYm7G-&7Me60;Llf2U%m3rJi7Zz{09!RPRp8YWZO9_Y`ky69SqX6oQ-gkc@ z=JQ2tsr0vo^K_yX`GZ#tqw7oH*S*nE+rz{rx7A8pA56(^aZPAF2e6m6y390jGq4^; z>fdnmt^;?vQ%?_Zf_b7Db@{H(JdxO*>#fc4(#Q1X(;dfaq|xHySYOH)p#GKD!WV$ z^SRpLoSRLZTCBXY{89s6eak)kz?76V2=*V;xmQ@r z+!!tn$}>+@tyW|D1BYRTHeJV*BW|M{eDs_bjk!L%h^CQZ7&~8PI-2t@@b&eyhZ*yq$_@+qtv8sv;hsGaVBjlHXB`fJBJw?qZ_shYCuMS zf;f}e@2LvAr2~V;e!L8lMYmtucc+_P)oWL>)(w0`99PBZPp<0R5LLT2LczC1jA^TZXrB4?A?cI{+gW-@f=rc9_Fqof`5?w=k=FrVH3jJY&T?g< z=iH`a3SBMDaeKQGhe~*IIQ&h7_0)cwXG0w{pa+Bh4BzGP)gUyt;}X29$hw^&E83A_ z#R58{u&}1gFlZ4cBw0uTXp{jv8>U^L;2iS5YxOgq1N&r7_2;_x^y;N}^Mmk|fvcRY z@U6F`IB30D5wQPBHc>?JvfC}jqcBI0jDhgdIh>b!Tlg!oKgKt>FpRPBBvD|S-+xv1 zVW-CiHH-SWKF-jXQC$i!_!E^Khouu4A@yRjPcQjP&ER&X_{l*NFo&bjo*xpopQS|C zh0w>gU0&7}A*|30%_*)=j#c@9p_lrVt>R7KHk}kBh+&3qq1Frn~T)-u2;8?Lqm_pC@T2 z^<*h_X!DG5+$n$l5Qt)#w(}uCY9HCm11IcE`Y?s&pERiIycHA+IWAXf=Tur8uv+^N z8n~HD14VrVq|krZM8nT{Jda!9rpLa0vqruE(uJ8&Os75!b?Wt}E%vqxyZ)k_uqjRE zMHz>(A3UXk=v5}DWKg=&h@aFli9N=iX0iZ5lBBmod9+?prUT6Xpnp|AT16G&1caCV zWehuAx}?;d9iWlkI9Zl|jAA0p6XFUQSSgI-cVUe;%8VZ3l#57aWm>0rtDt;VH>Jx6>ir0ZUMP8GD1r@NWo;LvW@1 zf|0D@JoseQQF>LMfvhXExku38#SU@m<*hKi@LMbeF{<>%Qm#Zi3iD<8+rf@tLmn%50Z`Iq*MiI{Kvp$lP zttF9mpDPeEdgPCKH{v2@GufTF4{=Sg4bp=J8S&?Yx$q_-%#IgJuzBgj&(E}}&sr49 zhf?^i*n71Gm(>cJQu9)Ku{z*rh|&5PAg_&W4OTv_=SzU2T~A9Uxn}gkI@5?9hJY_$R>1SMupd7Pp`5 z`h8k$ep8K#t|*|dnC-HW&$PQ0VR(yHZTbN1e-7@aS`QiRb({Bz*-d&GYaSMo`N2vXiB z#z5h_T&qqi+DvT=UN!Z^#+o2LnTqSIb>lO!6_LVgTBU>2fsSz~>e}OxdjmQc#@mwu zw4oB_kwNG4!J~0XXU}MP^^8@rM%}8^Zc(^>by zk_q=NG4)jib)YE&E!qp?o-3(n(tRj+eW@K|{-yv4{bpJVI!jY85gmlHNBjxNln@ov zVqU&BJ4W&}z4k6MS!Lr|@Wvp_Km;*KGyI@}OKEGz1>uILR%*_4uVe8SvU0FkdHwCM+LmAM*_F}qZf7`F83U|Q-xCZjgtJ9I*N8!pAHtw zQjS~xOPK9w!e1CWecN6C%PXAMmqc6D4V(T|JK@3UF}x!NB0b~K`Hv2YzZz*@YXRNz zVL>iu|5@Py5IeUI?|?W$c@Q^qMDU*)wck#zoZSDv!V3|dR*ye7PGc>u?fqv_hsj9e zdUGMvpO|1}jsh5-gMV=#ZQ&+<}%k962d~|GTg;a=K{crLd*MX&8DI}Kv z(@OtMJmZY}=ADLwPW(4{j=W6;k3Nr~zxrMN(f0f=S{4V?fIEHjjePUpzclqZz_0v@G&==+?(Kh3b-B4I$8sH>6!$N$-KvOP*o-f6<2dzh?7KyZ8Skvw7ba#2)=VoKki3q=K2IU&mYfek&#SV&ng^$Bf^X zZEnOQ_4W(@_EG=$zwiIpapQpX&L7V|ZuxtojoMVEDa*b4k80(A+H0qb0lWUcm-&zH z@c(P?=KW=%gHGXex3IB@?Sf7F)D`t_HJQ&kCqt&1XjKX>7PB=zg*Ba8#pi?{BaP^XTdhL%EMQ=w581i zB@>neRJV(+*9O8|$>2@7zD>b+K#+dd5Q5K~dc8}0vd_lKR6dCg6tCXs5DjU>Vkn>s zXds3m;IC1ke6Y@J!HFrdBn=P?mu+jw`nc3QlD|f^{`7OP9BAab+wkaxA^=lvp00Bh z#Kf&)+Ml!RYNmjzB>^m5M_bI@6Pw&-AiFL*0-4-f4itp*4*V`&)c}ZV+&$P(eZ!FF znYY;?zNrFBu#Ab5(n?!ba0R06@3P3XV?dw!Ox~wkh1TOhrV$Xgw$t-(H}n~6;Iumo zXy1(+EhIU(_04>GBUN}M7TsG4_8F?USNnMZgy3HBn;QY4%~KD~V5FxkjK`891UTae z>4GmYO|P_vL)x0e42}X4-3LWHJ%he*MJ6-rqk%O4k{gibG$14#A4T*PJD8Mu4L34E zHmZDk%>CvlB;o?LDKmW5tM(JoVm%y;6!ibr^fVx6>h-0wzi>_MdH{5s>yod${t(=A zwAseWG8qsuGn*YC7^~kH)6^iA9OF>cI)p#g2!ebjEzSN$HuLCX;~pSH`M&4Q4CIn* znDfub!`N5u>G4u9f>D>1k>F&%PoHJ0Gsol?*6k}Uv^7j*7Unn(5atIM65Fa@>{2`u zGLubB-V>6(F#j0^Kq94na~z;F5ukEsob%js$SYskZM7qRax7A8=~*41TF_p6Gp8+xM)LgMSww1CTJ~D5tPCN*1pa!{@=J=Q$gW1@ zTQc1S9YX-QQW_vr8qICWgg!`1e|Yfw_@vL2_HF%5eb0xH}fRt^PNG_XBLX+Z4d@ z`%^6vhkKBgr0fI~1OiM?XF<^$c~1}--Rr}efj{m?w>Cy$+JW8=E@`FqQ*x#E5SbCO zRe1Ok377*Qb(es^?W{3ZB@lQduh=d-(i#<@!;s_*s(X&-_}W*3oLI}6_#U^6Nu!0ZdY7h3nHXtNRTwN~uH650x8ZfRIpt~IA& zLu>@bXpC2FWa0R~B@`F&e_I<}mO1)VG|AXF<_xYNI9J{==E?Q#^1SRPJF*q7cs($V z+0u&&-t$^+$8lWfPU(FYx6s`jKi-U|}his5yK(F1u{w_w5n`f(e%1gIc#}i6m54 zE-V~q3H~|b@+x*?jkf3;v}=b9Y#B5ZzPOTBt$S^&2GT9+op8xPYde#|_MEjup&Y6U z5zdZX{OTgs(kQHQL`map`uE-c{uF;b*R9*eW#^)ukM#p}Bbhx|YDkN(cw)2hwGxTm zvDR-ThpuL_^U2P{)5PkHblcq5KY^JMX(itpK`PuJ-&d4dIT%c3~xrwq&Bh z-@Hh>_clVpUJs|#{frSjfELseqfq)9JOWJ-Oop1foYr5)L{Gdp zo%s?ug=cOwOKo)ew>csCs0kMi1usimr>`{{f2aR0m`7@H280FtmH2*JhrG_nDA;_x z5u$8_=BSWY4#qMyhaTghTNjSZ< zz~kJ0hwz!zFDkn9OUlx-!sc-tmlX{o+1Fw1N}93kb#+yO4lG06%NiJdqcIH}g^j$^ zS>b0xs1WQ$yNiV*ANt@oXEo&^S&3OoTMyEbNj|zD@4Y?sq4SNi)qbCDkfW?6QR9mn z`upe_M&kbd4Cm~;tK4!Z5O4iIwiB?l*~X_7rF9!>Sz2?K+m?GGH`A)~)` zZoW1O%gG_E@m)=IB_G-=kiV4!CU)x#rdQ#!qB`N1!+ z&`~bzFO9zzCtSGVgiPrK#M&>DdK1a#I-^y+H31V3VwJG1&8M!>^qn{06R#u1eAx$u z3pEDON ziIxsc714%-CL*6ZH3W2O*v1!Q>hz(@DH{03k@<%GJ|%*ZM&-ix_ay{=#vE#$LxzF$ zm%E#yz%4JeRadF7cwcU!ja94~QMbNKDK4sPv01A5bk@t*5kJBSAV7+2td`mc0oMmd z1-FdOzck;>e_{~I#HTi=MzCBm#6V=8R>lmfd$%2&+GeZ>~A-<9e z-1nE(Rs8VWfvYs{y4UtrYokQbR$DB@?iwJR?d4mu=pMJ_>CdIzAotXZj905W4g!m~ z=fwV3Kl(qWaKj+NQd;rkz|99GSFO2Q%DpmCXJP7FLxxY z?|jtuc`mbXs_DXZnLVQb)-p4K^+!Nf)9S9*{ftovqKG-Fjsz5LYl_&;l12HiG8@kW zh45E-(MZFZ<*8)HBMdkL6~*MHk}QqX5Xj-wp`WwG7)h;rNDG9`YMM~0QxKCFU(fFv zISzp*qWi8-yv~x5^R&CZV%EZ$wLrPum0$@0ZKv*uD-C(ucbkgFzpqt+hiFaBtXD$VU}o0b%}bba<8 zwgcc`iq3Y^BcmGpcu8y9Wf6y5uExK(5GnM{+Dz%Lr`zjM4?oO)IrEpHRJfM=WLL$n zpRpQ}9btYgd8P4&k_Ng`A9bX)9)5mY%cM?^SU+E!M&+nR-pYJ+4x*m(%K5|Y|M(eZ z3br`P-I*y6e}C^k{{5)&`=meq5U#rA(02WQzTCg<<|4(TcM1Zx)#(3c7rCe4)bC#| zD)lFo@B5oQbXIuB!J>P=D_i}|4ZKZ_%Wjxe<$e6S6}AB<^I5yc?fd`c2KM{*DE3){ z<^RTs?uKDP9CH~9a1h^Um(sD!lA%>e}j3F%Ie2I($!L}{fPq@}w-P#Eb3$)Sht9^$t- z@jK_}@VWoo=id8#pU*!&0yFRT-fOSD^0n5wf>PloilGC6_(`Lza=t&=b$fA4;BaT* z_E?o;)`ypF;XILcthrjwVlD>Z}NSx~uaE@|1caOtsI#qEKG966Ro$w^u3< z0|#Du>xqI7SocON2hwCn7*oQr6Z~Uh`(cUR?w@qv@g>S!EmEj?GfqyoXJ%nz!KkPf zU+C1$-7I%jB>gI3Pb4;le|)gL=RL*wH+A-w?@=y*gE<(NNWM(M?<$#`f&nv7Bzoq# zsUpM~JocWU(H|rKWq$tseqnJu39W;4%MU$X9grDy=DwD`g;&r%^~vKP!PX<6YftWj zo*$;O?HREs*?C?P&7=+5O(FZ;(zzRYdEjXlRECIg2Ge{%J&ED?utEi;&ge@MuI(3L z!kHNb?+Sv+_%FQJbk0`05rA`SalLsc<9eW=|h(bDqaQt|p*Vx$j-DA@fG}B4xPyXk; z(*ccQrj}JlMTN+Zfcmr&nJ~~H7MU7N6&Mgh${{Gqt)lb# zp9vr(s{bTM*`22CpJ_o$scOtOQrN+$O6S)sa}I@m10r21 z7pq<*jN!}dIagl|2-O$XB_|z#3S9PLsHtGg2Z%5-6mI{bUPSGw!yVLD_u8E^4e|It zO8IsmquKqkb{q*Ai)%C4Q0ofekt-<2D1|w*6|4c^5+F&xE(;je?>ZwHa!<3W* z12~5%FXIraZblxp?2VsNf~G0)w>TDaoP@Z9o_|Lxn7Qc(dl6%CQ)j_9s1IBRt90(@n5D6$P}lN3$%A;To2N zuQ74you7Ib5<{jydznBY9T%Q)r|I^2c%3I>)$+rF1sam3n-xe#j$?$7ENFo=vO8oH zv=62^PV1Z=Ivy=eiWe48dmJT?-5JY5t+U9~&Q4(1WJz~&1D4?b`r63>=~|&qorm?F z78lpBp!=ae_ueQ380C2;#kEe8V0xl|0M~e;lM-hFT7s<&OxtB4tjMA@Z@)Xp<2rKr zc=||xx$Knc1NmmB$>Bi~CJZ!B1x4uHyn{UjuODgJmvK&7TP-aR<2`` zms@dS*>99i73w(Ef6vyYk&agUF-s&Qbgy)5w+d>=hLT<9-<_G3gOY%0K%h%3*0cWc zkk-jo0E zYQ>Kh5e5CqF+}0LZK)Aj1b4;bRaDEmL_`gC`jy|y+AyJ=?Bt1KFZoe?N~fFx{H`n$n;5CR(?-%W&0R%I=T>l8 zA>COjc_991VbID{J2rm{f|?Y@zmq}&kfO1ytfP{|(2vBT+ynHRe%2U+y~Q>9QYzMF zabai^n}Lx+JczscS(cZEWrcvp)(G5iM8V95#HyU0=)!huc&{i@y6$*P0^T4y(jkc4 zD;O>O3PH%=f+*dRS3^PBxQ)g3>R45NP3!|gUy6>hd#X;yJEu*SRcm2dY-8{zbpo7A zY4>&B^)dCX$?`F1Xj;`+eY5hkHTO`!r-*swZ4h{3Pqi+=CxBeuvhI5~T@-%PyV{brO9AG}jnK;LlJ&xeG$#Zq zn)vR>?I`K_;U&v=y)sDA(i2*tA==uyC7GckfVU>&TiZ-F_kfL-t$FSiT`D@5qPQRF z1VYvZ?Hnqt#~K2aj%(UKM#<|%tXVf>@PYz&2Cewhep_r=!1d(jIz%*Cs+#5W8$f64 zYPY}d)tQk|()R%vi%Q*{o*PR~XWmSUKOz>c=nJis8aCguD7tV*fKq671`jmm zkcq{QF+Yqm7sSBJeEi$uRQhP9z$+-b*Cv(F@nhu_5Za>~T%34U=*y+o@J7?jUu~K{ zWrMt@9M?Ab8lT&vnW{LK`T8ozH>Qhp7KqbGV0mqT`jI;H0Kv^ii%3c8eGF zAdo2N?qXDhML0)eNP_B6Oa8d$_9?oP(PpQF=?NYVG&ZX|MolVpmHJtW{HI5L8?9dh z+sOCR@lIC`8T3Iom0mMBR(GNe;eV#!z$sx~MUEY)`uv9USkDusOgj2F+`Egn*gY zUC4rJnSUBTnPU0t0i)b#>9PDsr;7_3NaU*HOPa#QxtOL8;^fNmMos>=t+$xUU@GAx z6;ZG*-PIt4s` z%>Q`%_AR&Rw~e9Kd&QHTM1lUZ;Tom+ojGO40-%$4sQJPASKNR#4zb{uhjnRgutzn_V*_C9UW|0|ZuO~Jlqg{%)1uzv z(KhaR=8NmCFL(;RG_qS87Z{<%xO4y369sJcYe&tsP>Z3K(IDjNsS&C5w+BP|^ldG`q1q4E6nXm~vORlLJ#c>$CrzY$i7#!r9sk}E#tL?fH zV9s;=!#SNyKMCqHr!G~E5BddK>A6Rn4C_yR5I?~?b)26Z63n~`M~?3ns9V0At$&UA zcyV?9lOGFHtm||D*SqOJfx?%ycAoGNlfCSI5%r1&>{b{v-&$~(#rFJzjXs6WM~k2D z3vsMGe3Bm=v4JWSDa`bH7}0g*HY2{Hy`tMlBfLd+31s~1_xo>%6RpYHoJ_pl>m*+! zvZ~%L%+jCvu4X`qpJ&A@l%5-Srm?8pzEjwC{f0EcUEgXw%Se&BeP`M9E2@ciYUuu; zuH?4eJwNmcTD;YHvbMhO$V?eEQr!1Z>Ko{I8)t8#SPehZ{h3)Q?5x|PX?-6JzP&aW9SeJY?S6@U;ddg2^);B7pd&WXHH@E+cdyRu~*SNiP&!-3YRQ`E`TfBp?+)B z8m0xcKZsJYg|ExLCd#XInYMhhInv7^AMsl%`M6a@W7)Ki(2++HhR8|ekr{E_WUMXA zJG-%?ugEh!9msR|?udEFZ1Lto@u+Zbr_ia0o;xv87w*3MPMULw)nWX=XJcSwEfhqq zDBJhOk;0q_+|2A2Ns*kwdA?_&@SYIz!HI*tWE2OtN>@{|Qjdyc+2 zHaSdSBxSfxTuqwgr;qN@xwVTQd5E9$?f-_#pY*;)e-;jCEOyKft{Y?T+62wrgYBX0 z@QM0^{-T<+-vZ&zh#K?tsf))**d0Gc($|;6JSN7sC;E=NBOg$RR}M5(;PTBbTf&{mlV<5e= znd%)Ka~aK+7vSW34f-<5^c&v1A97E%Vb1@8Rx!OaXZLOgr3IYfd=^*8%2x;fT8*3+ zHxUB?AEjLG|HfAS$H!I}RgK*hjP9YZfk1Mz6z@7?ah!#kk;mR^*<_I9BvdojRYQ)T zcB|2`6cs2jAolk51^ahie^&D^%+uofGk~$I=jKAjX|6hi>G+Kd-l_EEEQ)XU-D`fl zCigDkv#5VYSN^dUVVbjex&Mii$f~nLnQE~Z2#J=#;*ng8h3g^(t6T$thCVD>AYlqK zplzJV>@}#ZcTbjGBOi}O$^0M@^cDMQ6z|=pfCN%^*FAqK2&nCzWn@+zYthkR*dYy- zmSQ=cEnkgp^(`A5Ju<>eZ`zkle*_m4FaXhY4iyg!RMsM(RPNp2cq7^PhXStg0{Nb6 z(d8SJE2Z$%$&$fSzO4L;HX9eY?^kRF~ysZ+)XmKKx6!a-EQ9^_ANuIflB23Z&ub=?)09&8@YLfb&k22_0lA@MvV(FPq6ADEKpE`&zu(8_B^FLE!8b;JJ<6=mc3NB5>v(?fpV6 zX)vzVxbD4+7pR2XHm!9SL%Bk9-cn&~ytK~9+Y0F&bm-Wb$mD~|dzlsC*v<{}qAPy>eQg?*p>%c_#czd8qq=f5w6u9C*41l+8JtC5 z+O4)w*%N>4&G=pyooe~=X4dp~9f|>COw_TFvnZr@wJ?>c(_9o{D&q$2w_aI+kMOzk z)^(k-OCoW#iNwm%X>JHH9c^ayZq)12E2tPh;W@YYg15eRWmsLUvM94`B*zs(UyHVL zvYi*vq|veK8y-sG`i(h^@RXjcDoZ;QoRcm9j1fsK=h#`Z$H7>zuiu?49+Z)n7o_*~ zZ2{FkWXZqJITR$<#$yjfZ!(6m7otwyfamTfcnvWe`gu#G=M$N8AgWs8Uwqb z{?*=j-=&l*1%{J3J>NOZa}n(o#v1C&2o{iN4%GONq65l{fA&gr$oQpmZj6`k5Qu^m zW-gygPb|V}%yZAM5ZDHW3Pa~)8?dflXLQ2-n?ygwwhe)O+mcpz_q>f!s;-m&^p(GN z(E_}NP-#PPRIb(8a)t9J1kOKj5dWu(X$k!MasS>SIA~W?mfr6x{qI4eIMM%m2c5W@ zizK(mu*wJmnbgC>w?E92OU$%q;}K0w)O$4=n}RMo^MpFLhPi61U&4Rrhb28I*9rQF zR2$kwldaw`iM1ceSQg0yvtnx8w&%46cZnP@Q1g^=fiTE~GrLaIa36=O;btRfdTTVa zNXrl83r1Z0+AX+7h9xFC(wn~Bh^SNNMheNQvK{U&DywpeqGlyB*+c~gsG?y1Zub(Oh&=!cO5#=pHI|2Xf$^V7!-;nWvOMOIze{NsOk!Ls?s+)2-Tdtpdmcj)>1h6-BgnA@Gz2WtGtfj8!3n^N0B_Th0tMCGB9&cGV{JnZP-i(gS9SoxF+Sh)n8<28m#5cV$Aboy?^asOKPLO zJo60PWf!MoflO7kf?{lD6%OWjY(3IDt+92$t=)dY92yyEA;lyt9~qK{&q?Yw>Gwdd zrOlk@)L=+cIHWRxckc7xW>&+k^E~zI^Z966oT?J=2_3{cPa^s`Ot?CuM`b_J9rr4a zn2>mXeEv3zVdGRP>rKnAkgC!3d2#E8l02etsrK!~Zl+a1my-Div*X~jIda?9>0}at zcXhVkOx0Rn+2xYh4hq#a?@%19sCOqLv$v&+DmYZ1OxK`Ks+^({>l;KXtbU|hEg;ej9MySCHSLWxU+(c)uf|y+RE);%TI`l!7)em&BA4w>D3%HRHNs6~cER>U zHYBZ&SMOWkSN*c0`1{5B637%~e2wgf?1OQ={^j%Ijz(rf8(*%N-9p?6T0m`(ktrrh zU52DqA}V$fI({t7eO#-~mgfB7kW2Dj!Qq}2?Ge~Yd&?RLjX|9rx%qCp+B(ev39LFZ zO>YAGab3&vJzyn7@4woNVa}#&*fQbt=yv7c---qG$MS5NMcUEj5@ z`b!*yEi6q!I!E_Bb|X5!M)WBuEdmX9&aA|%30xhKOP;@NIZwq(CT_{2B;23du3U1>S&i+dD!mqPPGh9mC}k4 z4O}6_#z&3S@6tQl6)V?qpH?@t!rOmK>nO#&mm4y8wDj6(z0rEZCRZx4Skn~n5c3g? z&$Zj14YSGlgSrQ}J-gwgTZ)##3pHXM7PO((v`t%fkcdMBWzpLClCuJWLYC(5sJ<5>>lRiD5 z(DVjhs-x!Xzp@BhYp+2oXEy5yQh0@<2Nf`^`}_>@$P=C7jfx2 zPSs?1+c&H`q8TAv(R3BMu!Bo8+jQBsbiq1^;BuzS7#msHR<>nWVZbT!Lz7SWws$9{`^nxDGeZsV z^1dATMeR%{`fK;j0*Yj1VjFYjC%KxpJ?)1WpgXUiXi(HSN;_3=<{ONo+gVDV#F?K; zD6GW;_!p8bJ#*jNc^JU}w3HR%vK4u)>ZvO8p4C@_69w*Kll)-L6z}&GZ8%rsnoOK{ z2P-Ls$VE;P^E^%DV(U(^4;q(CDqv?ae|W&Ms&T-DlU!Ek>4kp9L*OBN0ZK4NvGT+<}|t_|+V7S&^Hu@i?MgGB~@ zagrFI8pMF#WplX5z9U=5pbE@{r`|k#H2Pep9 zy~7bZO79}*yUf6RJ$<#-ywq8{UWC_**VBWS+Hv%4#k61gl)sV`|l3M7q=^rYXp(k#g*#+1=m2Ua#^I6l=iJAWm zknR8_5`(HPFa1Z24jL-OwQmz)&WQwpYL@~*ON1e|mS~(uYmD{Kr8NW>>;WGWnZ~TT zM2ZR6mO?AL>NYiI4n71Yo}hAcAL!#FppQG^UZ6t)xEWEH8H|CyZ&@_V1jjR;O0QJ!l)VP-G+C=`p)J=<^q@ zVHGlF^vj6B)8mYO{qJAmho;oZ0(_-bV>mcPJX~w54`#P3$1-J`G?LTt zl~e2ER1O=woOX_%1iX6BGS`$+KG&5;AmTH%6tReXKW;sPK|5e1A-4a{9VXfc0-L=A zbwzd@fgXo?5qVbB2q**KD@ONqIy=_jA;xwbLQ0AV74{xyDv8t@ifp_-)F7uIgK6%l zH&1Ue^lqq7RNCmR&xMnQ2n}X(op9y4%x@Lo$y2^;y^%G;Wi-vV%(Ge1U=v-j^G=Dx zzBhCrbpRJG1XK-Whly72eVp3gO|l-pZ3c6CTGd-2e0#Vym-NyH(Py)tXWvVnmC~s2?|U4bq;WyIg65i3=fjbuZWRhHx}L-BR)lD8>@;06 zJdT)KzsYuZCaqtu6-L1H*P@do=3q>1a@oY<8Q;_M^!IzGa;WwJZen!TsPW&T)M1GK; z?>QX*D!6ZRN@c{I=Wyr5Z5di@0n|97Kgol1LWoISAMa#&mQIl8oVwf0rKmm|J-Bp) z|19Aeg$d>2(LL4gQcftVUW8!;^P%-3X4Z8fBu+d6b`(IA&G!}^S@on}jDjCHnfk|Y z3lKJAT*>69ueJ#YC+$_=ixTSGj>6eE`EmcjT+xDBmhX`h*1<|xbsExj<@J-O>5q`z zfFq|HVX?ghs6F(q6X4qHaydRm?Ws}96@kA;=kQ{ny!9X?vcduYfS$H0=Y>o-7(hm6 z=(EDhb6)V@1^geNK-cV9AlRrW)PzlcvF|njqq(;$$G$=xCKQGd&37kj0G!p`!|lZz z0x}*YP-

    %XHf@}x%MJExai{!5#L0B4Zh?C;U3hhWRjf*!wOt%EB@1Dz-GGSnYPH{JB zLPO7sMGmV|La%}-Hv{@r(YZC1kg>b=!@5c3sSSzVHMY`HE+spz4F@RAW6(o^AA?3Z zK76Ut)3j8FsZ?{mxV{0C!aZEcS57Z}O^*-tZiM+D_&yLnM)v%;Jnf-bUPI91_6*g} z?j)Dc@`hCUJhBSw9;GW3T7EFK5Jt${W}MLgedK!Jk=PdNFB~ON->nQy%76;i!|C@! z?@crNMF32G^Ae|7j@&`a@a=y`>HdnQCR$)@<`9~iP$B^C-;LAS^l4kbX94&`ZFjn3 zP-%{}(RosU0PC;(4=9!O^*(l0d6~A$SKNyMF=&$UzsuRva_>)167qbX=7j7Ne_zWC<#j&Fq~5YrN}5})>#74qDnoh@Zd{P zQqd~We`6Y-2-Y91oO=#C^b=*2Acp_W#q1C;(ESG9gHg69ch1Vt&vvYl-*si&&hnhd zyQ#_--;1xWYrcRH;5Joq;isUfx z2s-d3e7(qD3=TUq@4$7V}hZj(cQ8DKqXY^6Jf;fOB2k}x_B^vo#o~}%e@!N*3$FC>NKGVPgXFeUqnqE zRDht&B+P4~^?T%wX-YE@Ml)~*9dA+n#*;&^nch;SZY*=_gU|qQnY3g|NV)4Do9XCG7CO#^S9IXhf>NF`t#GA+tep6RVm$%CPrzgWdB zcp1C4E1QxB2ioeOzMz}lmdSl$uxDC5wM$0COIZ5KesxCXqP*(Q7YoRLbja2{(-E@I zS{MKL%CK_p(3R@|87|1etDi&nOA$)q?C*OW{RsF~vw#MfzHviFXgcUaC7Wrx$;6k7 zL%JOr78Pn{@dFiD*XPlJ=_Mog{@3d&cMl|88Zw&9T~)rkC9xs^rJv>@8q$*@#98$K zulyhQvUtySMY6G2HA5~xhkU)H-Nkq0(@oc~ zjk7S_EbPa_BYEFm@D8M&*h(_!_v!gX&(RYYuOWuR!d3jB*cc;=7j-n^${I%OxxqOI ze?f?1W}rX*B^g!x3B>9N9%$Hn-p%zYb@?)=jIekQh96XufCl_n z?^eo2crW9Uvv>CP4-UdC%HX#FBI|iI0LT`60|gdyF;+LtvTGOlgQWSM#&X}!tvYFP z+8sg^6)>J5;Q^$dZ=;cgQE6b~3=MZQ9gm#uSJ4Tg5+!_RKd8mPiQJ{>E;0&oCf6|; zVz8EiW~D5LRVv9lSX!J`^?VSdm^<)$j`=g0E_gd*pV8Kt(3qUhxPTQm(b>ZC4{AA& z$@Z=Q$)tNUm7g4)8we#NCiXno;(1_KPjy!95XozAdbDli0|V_a!gQ3Jj+-yK!f+ko zCHb1BF8~B-nii9cn8KairL-LpZ!4C)xf5ojp;LWU&<(0UDyq-QCmNveI2#dwAapOa zI3NfMuen*K_*Sw-J5z(&5HTQF$3Ql_MRkgt`ZdOx_z=i2Lk|Lqv2g;q)l0QoEah~T z6+3G~#}*~CFADawg<_X#!d=HJ;!_#|KnnOhnd70}(`fe0nW%6Lhp6(IsVzxMDTdCI zX=m$ZoxI5DT{an^`vYpO?H@;sI%03TuDa`1uQy0hm+dVLvgB4Ae&o4Kf-A5sakSi} z6UNV(GwNQZHT5N7nGLoQ7Fr`;_WP<+|6KLtmR?{TKj$wThQ+RtSd(DJRpljptxG@Y zii9mutMiu#5hz%Gd3UBlem+>ZX>qPoQtTGt8k}$oxN;$~JO;VxwUdXf1_hvlr9}e3 zc>d5$&Y8Oveq(=R~Vb7#q5 zn&PxPue)*z+BY>79+S(gtrVG8yc|}ZDxxUAD>+7gpRa5eskMNWfD6^Rg#y_}0K9K{ zn(Srt6|IZ2{1YQCF>%w!xPs<(27b(y5~KTNJf1Oiv0I$HdL)dob}b9mU?O4rP8)4J z>mAVC;q}lifSv|T@oB8Fj~q@B0O+ae(Mn~juL{8&7?Kgsy_qo$X-$36!;R~6yqTWL z*;qQ_DMZqnG}CmNQ@t~1ra#|>VKkE3Q>Zc(j;-)yh`}DP_vrANW9nTu!M0sL1B_o% z$ijXY!^jE;KgeO-rIItj5sT?|;O@)90V{H#L8L z#H$Kzo0*~XM$;^J_fq#X=@>%z{y^CobsJo^0(>lyQW%(g~n+hk8|zbbov~v z`Tbgz>fHh)a~O%T-CH0`Y{=J-ry|6gj&b?>=4%I#1C`dMmKP>@q-SFtWniTPhc@K$ zr$BS)PkiyFX5q=hoN-+(a9ytI43Z+(=n!2jI$f_)HP}&-A{PRGW5_LcJ34qJ6b@K7 z`wz)*cI-@iWjwX1pEx{KcpDI3W7ql!f0Yn(ze|X@@Vtc+pmYgL=4^Oy_s@{EKU_w% zh~s#EuX~N|RqSv^*qNK<$hyxZ?8hifr^Q&YIJf8=9R>fe_OUp-Y&rl|`-5R{F|lu= z)5QOER&F`n;oce-Y}%@7rGtB}93DPeI|<6iLOfi}n=MRc-(0~nNI1UM95%W05qY%p zaZ7(_vNd!xTv_>dmSu9KwhRjg6g~Q#qC6*?KYmU3cby?4ikj8;y#65Rn9UNI_2>pI zS7rANaWcX)t(9!w2$_v7b2=@JP5>Tetn&bmb$|aL5py@dMeiFjEB?^;lZGtKv4_-N z^gOzf{tbX)wSLUTz*T9l2`w8@!?@^{x9g%vtSUKVgbbc1ztjia@;ffqu8z6xTKfA2 zQ3%XUb8mc8nAX8Pt;%=FObz!3MOEaW*s411PpOgjEvKi@)(i;`3*0>OQf(=(6>{Kh)(y%oLNq~&VUd2GUv}94`v$|tO~$nL1cv3{augqy zWQE*Yor(ema<^lZ1Zry-693TtS?WB@GG4-2So?0q1Y)$m;Ck$CdGC7UYApmn24kAW>Vvf&AwY7qSAfcg}afTWyxg(BD`27FB zdZbQF^TU~Izkbj){Ha6yFT?vU*2~Bhb`=`T-L}LT*G$sY5STE_+ER9^x<)IUcnK_b z{z6zH)-NWqG6+H!-+3V=(?3p-KiQ-ChSHpiY z`{$3)R*p5R(&MP(k{JV1t&VQ4n={!ud*%`ewPfL_9D$UuP z^RkS>GdF)gKdHs))_H5r1wf<>o8v)s48^F{^Iq2SyA$jOrLWUFZ_Slw__3B9o&Pm~ zR%8bC_1b>CKZ~Y;Sd0*;-BX?|dwq`Me8HOs(iW>mkt`H{OTfj>4})l42tmfz75-PG zC6=3Mj%1YUaC^1eJA>eyZU9*9gpm*J#r#Qxc!0L|mzI%llswa#f0^vsWRmi475lK$!0Cwh=I8N2b2g!n9 za%-fL?@KC!_1EVxxtFkYM*alaF)&yy$r2T3iIRFRL*7p`cvh2nmT#0~WM%n*p%b4p zI?20(H4?&&+Gn(hi5a)nJ-&N9I1=3FUw58A#XJ={L{c6n&7593rPx3Ha*BB(w0`P+ zihJZazjo0Rci;63{L%@zaZw%S;!-l0Fk<}O{ej@Ir|pE}+s1ejmMCOrS!o*RW0dlF zf8;L3w<{{Oq&pQCsA_I6Rywvqua4Q~Rj5mGL?rZ>yOc*K{QmY+&bC9P$@;r26I7T#dKiZ<)Gv~z!S4(7NBchv0v#db$ zimw)%n^z6oaW05M)N4CjPP4^*?^qW$B4)UeI)>V6Cj~mK4s4f`XoiwO$nf3)D@P ziOIgNiYF%vs^ewWc3&&Hg&f+>$YTk7w&i+Gudj<}VOQ*yl!+i$mv6T+a<q(KOJYSv;Ht8iz8#G zCG7=oUjS?-*x-pg=gQbIf#(l?wsJhD)e$=VS^V!CLKl_RIMV?o;Q3lvwPQ>u^$OPY z3<(g%yOHqvyc;$Mo^O|P=uq}w0-Te$`7a0jkG}#LRljz|$)%pKJm=C}@cv(w6m$`M z{NG$hfggW?@4^M%`%fPIrudgE`G2^kB9ci})qEp05c2W)?z zVCkGcU-142OplL@%I66Fi)g7pGN&qL-~G$&{`oEcCBXl)9B>LBcmE>(EXSSH6Ak@i zmk3LeBn#nZd3=Hb272r}^pC%3Kik%?*mbF))7`tX>-!4J_tPi#8|aUM?=WqDd_(v# zICv)BXzD3V%$Rw2@z@O48m2=_)NWj4E8nRA;;*LlR%oE)Nm143U(Nd|z5e;5HU=nc zD$Kw6)7+DP{#bnlRJADRk)a&9@W&hhCjwBU)Y2e%UYB<8xOEzkK$M2spF4N}i*iB< z6dW-?7|x$mBm5=iLj5Z)f&r?3ZQ@_g^iuK8@6Q^1F7`s#lU9hfq0>*#Z2g7xTfnUhBd<^C&>7;p*1W*VvF{(NO=@X z#NM@3yQSQjuZ7$mW!XHzlp`TGXLZ#-KVRod2^9pnDpvHCC^%Vv1B2vKMFJCznl!sC zCD}!BWoCcTi1`N%GRt<7b3_TAbaN*e1#+K)UWNQTQ%J5DjhJp(mhX;_bjFuA7tk>9 zGRzyG^Xrm^G`d~Fdcy-ag)i4SUeyHB<(N~yiDtNqLXLW|tmcz>eh-)Wa}3BBzPi~a={*f;;AVyi|2) zd9)i9kNp%7l^u=aX(x1%fPtXBUTQz1x6C5+et~Diy3$J*bjiFgUTHZqpTuC$QJlAp zO-(OM6N62fMDD6$RUlv(KNBT5{el3&=8WE5G$@T6u`9E&EVOJekDmSRH9(mMpGK$@mGB91tq}NxM z>N)vsBHy1L=;e9Qg<+rT69(F2Dmh{oCSxloGNOY4n>_IS1vFI%fhc<)?(+4HwwBL$bEY?NzLUi6ogCAY_>~OAJ zdj$=4da8Nv=Zoxp#ax>A-a=HA_sSzP^y_r_!p;hBN~{(8(J0dI;l4yn@e~4d*%NIv zgjnKJ>_;lu_gEbG1n#ZI=~CSz$0GvU{MWXGbnKF{`ic5!D6Glsvu8n+Wk*J9Gxlcidcsq9!dpF=??daE(rc@f8LIYxXb0p}ap40V~DD zpu@|H1$;#3VK$h;26PJKuA3d1GNJL0upQZ9K9EV=Rlb0hX9DDX_btzMG7-W#M z_s4$zqNM{K{yk8KsI|UbV`gH&B3!Cp3@25+m!>Bh9wlF8;F^6MO!XoZIl`RmE3l;& zxXY&F_)LIalbpOy%%%8BuIIelL#wLl?VZa@Tr34WkxMX# z9|ja|r>flZ*cs-}E9%%FOWDK2ed09R;#_KAumB_l)`k(OM7}P3@!OJYa0k<;mByQ= z_f+XN#J^ztlkykPsA;Y**EbaIEM-T`9boWgNpaowSjD*cLYp}PdjCH4<5ds)>iO2w z>NKA`GAfH0_V%pzofcavxxo?XG6kh7Y%FX#Rc8L3rPL)=M`+ayj`=SK-rLViS>nXrC4JHwoU_rq+1Nl<*zPv0@HP6z=0W7@uKs&Z(86H< z?gZMuY%}khcvy3~dY<~9Mvtbpc+8pCY~R{hjcA)H=FmU6FaD@5N62thw$KPJm_9b| z{W?`@skFn!BtB{nf$eOlJ|N{;(@DZy`N)OB^V2s9Zpu!Nqxfb2pfXDxS6fXB7hBTS zNBJ)qO%F!E{1s1`)SCWfjn(isC7yg`L(8$XJyQ)^DUx3gKSsqfBe|MdqGbgm1X`83 zE!1)6S!l=Dd(>W}Ed$y5W}nRw6LR;EGwj2$P5LQK(1$9T+h6xEv^uv zZP5qhgiPZ-KTJ&O$gwBoeKf3Nn_6VvY5XOBV#CM~Sq&ZdOpmkJdazbwVl`KE6=;Ar z`=Xt)`H5xaFGi?tKd_FnEt?jPr_|DzBfoZk#rW;fzENzO1{n+AP5FBZ5|!+EMAR0< z${#FqOeK&_N^u7J(FX>-7u76Jjw)so&4XkMu*H`=#?%M$=LGgz!E<4;m2_s=B4c%N zJmX)qAH@6U-~PAtN%;-^6_2VDyiX~zf^LagJ*0AHCh8d%vajD^SesVIqJ8h=`PW^G zLZ=l|hBw?Vxt}d628B1x{ZOAT7u}k+@o%kLUb8PW-4a`hU{K{6*(aBzs z|1;(MmxoW{4EvzRabvX_n=wyM9Nw0=9a%HY=%{EdnYVVfHPp2UL@fo3)wFV(+c&)JYjhmad4zF?_ABJYU+>&t{2`mY>|vR3n$>o?7jo?jwT_4JTkg%16IoXd zBC4Y1GiQ;kP&9UmJM`ipni}t+F+ElGO z1l8$WItzueXIZ!4n^y*L@s77SEe;llp0L6OGDQ?qjIpM8sI!q8HwDbEHizI{Ar7 z-*@sD9eov5vgKsPE0S$$V0(#yA-S9rgZUAoNM z9+;B)ewQ)w7^!a*hw#6ABO>0#B~bTkQ9zj?&XXqh-GY+)J?O+NaOa>$irI7{)4MIx zYc(r<+T~N*Y_mP%?$u-sh{`8$w>SjHQeeoMryRX9mSf9)X=IhGVxwA>c?MgLIg?mcI#0asX) zyNgti&#EnFIt9<2R-Kr8Bx#*?1I`_)H4k#hL+}1rH~(sL0t~E8D}qoaaCH30M)<>( zvTUoPCBFk6+3gN%At|oa2o3mma#|*sSP=ANjO4p}L`h2l=YxZct1fy4%TiBU3&ux8 z@*Fs350c2@q@6J!F}wGg*EggZuko>WMcSFsni#ssvHs-Yzo|VFaPiQXPBwTbg_Da; zCVu?!9X=shVF+oE^RywN(Nh~a4_OlT(XpzTkd+dm=c-+gy_Zg2;IN^TE?gIPI&rG) zcr9!45klD_dp5LB(b>3%WWdiO-8(4Cwla=Uw37!8Q(numzm-7(6F`{rf8AD}?@7z4 zKAOcxRC2tGbb=Yb&sJZ*e-fe$xIsSl#mo-HY~>!xk_z&98sD4xSREMxqAjb%6-Y0=hhNm zc}ZS+KQ+;lbPe$#KQ}^QV6b0ss?X1=)1{(%pmeh5p6#|kEcU&KQ1tDA=~pi!qUP0O zwNtrnWaVP9*rysi;=#aB9p%R6n7LaUKJsxI@dt9a?{j01aWhY!YFH7xFC{4s$kbmH zU=NvYW0fSn=8rTL4Mgi%8ykA8-q(3}`E8!=Z$A2!bB*wJp+`MAUrjUCTX1MwHl(wL z(kK6(cl^7jPWcT3NMs34xL3{ULAnjrlGLn}?23UeTUo(dSaU%)tU+AJgQb_K&9*dt zs3L2dU38XoFhA*bt+9_=nbQXj{*Pl{j&b&yi(aUY*vEKiob>apwfCD%g(P?cn{0U& zI1DbiT5R9C!jizD*%_)c_dQg{qY#&gIB-7ramiC$e==+9&1Tsm+pBEbGxl5(wru?J zl)ZxxM5~XG8^WHbCf*aLV&LFy-JqDDvMFVX}B&c>7 zOe%;gtjcU$hfk8F#+sGi!=Yw&cKN^-+nq|w73|8=zPK~Nq}sKs5`@&ccF%Cn%W0!> z`f*S@h_w9EC6IGD)9P}DD>&;jt|4(&@T%DzYDc18HsQLYJkhaopBd}2USf0xPRn2d zk^!j%JicZeBCV-$#{aLqtBi`WYuB#`2n?a5AgLfCDa{}usDPx>jnX+tGebxSuOcPg zB_NGMNem$f(hS`pl4B&XchT z&+%HiFB4V`{t}!7fo3~$Tqm?kd>j$xW*dx#n_dX37Y_t_B@(4u8PY0Z~ zLsJpAzI(_v=-c9SwpK*6(+rlLXMZ0W-|<|}(fMm$l`YSc;uY#STv$A}Xk7lPceNqz zP-~*fBI&R~D>-dQw{8w*9dVQEc)wd$*J!a=^68R>Eo^yt)a7KYYNyo^Cq8wgb`WV( zMrbYA%G%rD5zC&OOa`unF|lt zj+s-e*tE*c1EF|83c(07#;j%TrMmz@WEr^RL+W!M#|+gfFV~Osw>w?I4zI;=$2cGB zy;G}O@4|Yc6u}5F>!OCEjhog}vB!1FK@3;=;8H^7oqR0SeJ;J3Hn-4G}Vn_@-?mTC71ps&X-eW9SCHH~$^PNi1qO-N79xb1kw zvpYoP%bgvZ?o}j6>J3a1$K8O#c;3CU5^p7{t9jB!Fch;@(U1C7Dn8zP=WJdI%n-WE-r z%Qb0?cyQxqfG1#plIW#b3++sWe@4$Smg3NNgJHtLfIT&^-?FUsDQea%Bd^oy08`b!r z>igS%lswdpo@-h6CyuapCqz91*3W#C#;9x{fkWxODxY$)8=S`C3{(yW_S4=n((xDQIS|+Q^P_nx{lop^Q8;<%@EmEV1;+=gaB|motxPDb+*2S!J@QPQX(M$0M-lgji%~p6R38D=Ja2Wc zDpXQ$t2ix_u5gd)Y}`$j`PfZ0f`P=GAHqxLQIfG}ayAK7luobd9oG80UnKZRM2J-j z6ORp3Fj+mhp=zH*LFvhHS9N+X*2n{JtH|8FI5%1}@(nopRe64a$zt&WG)QQtrwu9( z`cN8D9LkU;G|iU3XO2 z{aPOi3b#=uh7D%LVd|bmjVLd6;y5Mc`E2J0>K>cd>!)WN0^f;QG#PW8x!&)$+c@^L zY!|P-%9axmDf76l$}s^AC8l+WrtT&IfJVzvXS2=Mad6+3>k|T}DU6&&b5#|o`#m`l zqZ}Qait9L;u9Z#y9Ye(l;N#oEY;8SRIjM_jBHIK76V+8!cd^Onw5L&E@+N~x3i_qW z9yqPlMEsR8OrR&a4X~At)K} zp}(}Lo_&CM+FQ+v5d3{oTDPeinJae3=q&zcY>b=}Dj|ZgzNA*gg8TTgJZkrmb`GrFH7`1T9G7lWYRhi$tA{>*Xeg$#y<0=T3Y>tGF`xb z6e?>=M7yixIr#70V<&Ss2IX9qG zqfQCr>%(jMflFvT8r}N*7Z8qP?vjg(7Q01MslDcero5b0Hp@IshkL?@wueuw50^Zc zERbv3eJ-r-j5~k=+(+1HltYz^wf&#vqLSc3(zCT5Y0t-61}p;!v~QigGRyMnja-*u z9pY=6l(6krIO7P1;)J!Age;S}dWxqultPv5-0b*=(3x=}K94On40fjcP2Toa_?0Jn zfoMhhQaO~*B$1QM`uWvHy9?|eLKKrv0;)~^U ze?P;G$1qW!V`qvo1c*Gzgz9FDXE2-EC zd&w^a8}<_2J->hnKwMf*2>Kq@x5mu6y@0R?Xs9_L2le+;kznFT6~Au%5-Hls)xcHI zL4Da(9^_nE3NY#Sy5HH274H) zz#!#Zj`)TXl4+59JX>TkZ!lzdKZxnHcA&G+{VCKq*jB_z=n9V>>E|;#z{&5-r(ou@ zJ>RXi^VRo9i97t=A7sTSbvq*iR#1WXA8+tWR>{Ij?JW^6 zoAkqgU8^-@ZnKs<(UgA##1DSHYcei2hB{A=OFidqccl48_==;kkz%v)RT+Lyd&Sm~ z#!#6vjff2%>NLQVAtz|NqX8trrsU-ns`#!trdOlx4|I6=W$uo4CwtPFV#eEil)tXT zxELP~k{vIPis_1@XIefLTf&x*>hO*jpXOo6$L1WrAdL9%?(2i8-H3q#Z$#Hli?ROs z{PRm740_O>NmTlHii`p5;{g#XFum~!Oz8hRx&W-AElR=i+fbxr^UPFrf+Qcy67@q5 z(Gwx;evQ!5F^4{XkK0K7IaKd^=~S|LBC< zigLfw2Kh!Y^TkQm=5)fobfXP@m-ePxbm`CQ9d_scf=9iq{uE=L;Re8#d z2LO^)WXEriVPIi^`;hO-iMT#_t;H2wE}R($xHrmJ(FR-kmdp#y*j8{CSBbq|$AHEnl_vEhh9--9 z=4GBQ0cf(XBH=;IWc1FNv2m|VAH4BOreoqS+FVYTRWFEu#+{-pr~ByB`Hr;pqwvBB z{_4uoPr9I$&YlOL%2y&)j)PjvjUK@w8M+IWj!{tIULPvIy6?Vk5#nr_TW{bxlHcbj zdZ;fQnf=Mr_<1hkn@?WK6_$rhV3YmzDeDq@CzBQXeo#q}nfj|vrJebAVyU7>swc!X zbG!@7+~cYZetAg{zPW?B)l`A|q1JVfEs??TV5(cscCDCLoyH2eui zebQWiT#9IyCQHL&CG1=B!eFVbkhQ)w3A7BPTM|ob>bJs(tyV6JVrBw^yTPy9(N-S| zO?7x`Mp3>EB38vz!nyDAy8d2Gcbl|VeRYOVcdeGZ7U&RS#`c9-k=Us3$X3V#6}%p$ z5h}3evdT+2lU?g7f?8RX^w?(6pHzazhSja;! zhGbmiv`(vG2GuUk|RFescFXg|bdf{>4?HY2;>J zjr(pFTF5(>M=vI-s^YNTA4ljiXF1W7no9PYElB;2 zQ68zD9h>+|Bos7eMwUL&{z}2TWx#l-FGTvpT!{3o)C~BHKuO$dz=WC%&!DYMaVPo) ze5)+3PuaIV0Pyx;kEajh_Pc%R5oHT;ZuO%gUbbEN9-3%u>^@V;B)P%K#0>hLm@Oc2?)Ca^L`9?F1&PFPS2F4+CnHV20CcwI)q_k} zZy+m#xfbqNYCsU_*YMDacWx0IFU+neAVo{58DZdfH;BOaaJykc@C;p?P9aTUA=)6k zd^teG~>bSU*~MSsM_(Yk4L-eJ&oC@7wX> zo(r6-XFa_EvE>07qZ{ZDvANYfcJ5fRPs8)A9Y80$Jj3WD>d|7WruDEl!Ma;Bt+HWq z=$egFRf8z6@!D18+H#k(Wbl;rd86J+#mhD#SG*`bRyLeBwV?hv=d z)6%_kd0CnzlLW|tVfyj6Q=`=_qpX*3maBro35Q=riY%vBCt6J=j>DO~;s8jh-GsCd z02VW$j2s?!lwkW^sYr8I#0k#*9)KT2QI)d9n^)8%9AgM4l{2l-@o;R-T**jdAi>N> zx36fppWXgu9LeM8!E-Dww}E)gM>VA}jWYI3A5KC^qEh|>|V*eVFW4&2XA-p{bX`M zi)qSN=lKUaO@x*4VRa+@?pHU`1W=)R`qkUArH;@u7@sX_H@5uR$56>aW*WY^#IOD7 zLvuhzQX>)y5@KFw8_D)LZ|%fh{WVC%&yX#@1iD=|(G4Qj;wn@#q#_7$e z+#;j#oP@)3O+=(>>1Y4B1E^gDqz!$iGQH(J=-5zxz2`v0UYr9m7gE!|s?T0$I))KE znFg)*O3REv=59{5HcKtNozW}1SB8MqlXnQaMbf6FgE#4ru3l;e!cgZqKOM(VuBH=q zO~0f?;ac<#cdp@-M<2Y2e(!Ll=A{JG|E}OJ7)f`EDPYAx=bf|N`74YT!hIc>Fevz} z@6s@pS{KdjaYy05p&h|8n2eZv)~Ot)urxa{;{RPu=$%Q|r>(n5@a23{_NR_IUr^rn z!qqmom_kedLn^X2ZNb}7a?;%}&9X^tSbYsut~i6KH5T>9U^x)2QN!H7_om4>fu6BYf&>|ZzHrNXzP<)AaSgYbcbEb z=m0oF0F;yqEn_0)g4=q&)gq;cv2xFOr&jgo!W=~IS)oI?GHuCrX4b>S$;Vbc57(~a zlXjB-e1^E_zC%K%L~i2QGsMJ{)*<%>FK0Qqxs_&jV)oOq1_NF&qf|zb#lSI9c|uf_ z^k)gwVb%V7wF7JCLNJ!bBtF6@EvKbYaGWlDmy;^%0Y7#d#=3uj|%XgHKS(SN;gBYos ztmAAn*KaE=AMLSc>-74ZiMq#Ryv|8z*f4-`na6c!%d zD;#5CVWH>G&@Rk%@K^%x$A151gJa(}kG_+C+ZWbC=}VZ};6M^9#!q-nL7NPf(&W0$ zIFSKmf43PBroc)~kj<_0maaaHnKA)`4`SeZm!A)6kyE@Y#`i0^J>V{ZM=rb4qa)Cy6s(6yc^o{kB77=SE9#gh`CxWRi1fTGGb2oo) zt{I;^5pr!)dGT6DKmow_3i@em4y7-VN^1 zHUt$%U}5E)yAGIOKK$B}Hai6R@&BU}ujutaR z?~w3$k5$8t06J{TDpo1YW`O}-Dzspx`Hd|MkYjfZhTKY$N{J_U%Ufty1S>a|4!Wm=t%jaW4$bQvyvE&y>BoZQ4 zzZm0}$=co;Usq0$>ua>oi9!`Ytpv4{D(UMnFWh- z0oLjq@mIdk0${+1%4uBU``d%nP*s#pk%{6ZlKnJ*3`FVkn_2lM%lg6;FeXj+g@5DO z{~$U;fLR+q|4VxRCtm(P9N-^4>3@0wO5=cSs>aXwb@o5hpVtNY;lJ{qZdfz};a@q& z!Tp~)|2cwh!h331?aVR`_AJOvn>CAQXe?9anv zjFF81;x#^DoAHB0@;0?U*JRZ=0yr~|&V^RUe?6W5Ncom9V9w=omSq3jPOKkLW$^q> zt^A*dPNE7>Kn89}T>edy{#&rQrp+X@fOO zkXNGYc(vn{;Ly+z>Vt-W!v3!+=ASK*sX_!i+h}E#N5eM^8F;TUEiU%!G5&F91^~Vi zzEeB%pG6X@e*wUBW=Zy)6?gS+RmgyVXM6ux+Yea#6H4Si!}-1BaDh|r%a&JUvM(?Pyhe` literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/servicenow-sir-params-test.png b/docs/management/connectors/images/servicenow-sir-params-test.png new file mode 100644 index 0000000000000000000000000000000000000000..16ea83c60b3c328f4580bdd08d4f2544e8c8cffc GIT binary patch literal 190659 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%0AwWoSpN;xE=Y5Ue-?=mI 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 literal 0 HcmV?d00001 diff --git a/docs/user/alerting/images/slack-add-webhook-integration.png b/docs/management/connectors/images/slack-add-webhook-integration.png similarity index 100% rename from docs/user/alerting/images/slack-add-webhook-integration.png rename to docs/management/connectors/images/slack-add-webhook-integration.png diff --git a/docs/management/connectors/images/slack-connector.png b/docs/management/connectors/images/slack-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..7342d962d2a2bb3b75c4dba8f07ef9b92cdf579d GIT binary patch literal 123918 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 literal 0 HcmV?d00001 diff --git a/docs/user/alerting/images/teams-add-webhook-integration.png b/docs/management/connectors/images/teams-add-webhook-integration.png similarity index 100% rename from docs/user/alerting/images/teams-add-webhook-integration.png rename to docs/management/connectors/images/teams-add-webhook-integration.png diff --git a/docs/management/connectors/images/teams-connector.png b/docs/management/connectors/images/teams-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..4b9112db28474df04fb657ac2ee77a201df71e7f GIT binary patch literal 148549 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

    Ywc$`-`=j_5QLi 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 literal 0 HcmV?d00001 diff --git a/docs/user/alerting/images/teams-copy-webhook-url.png b/docs/management/connectors/images/teams-copy-webhook-url.png similarity index 100% rename from docs/user/alerting/images/teams-copy-webhook-url.png rename to docs/management/connectors/images/teams-copy-webhook-url.png diff --git a/docs/management/connectors/images/teams-params-test.png b/docs/management/connectors/images/teams-params-test.png new file mode 100644 index 0000000000000000000000000000000000000000..01efb84ae60d462b1d3973838f698615d2083b3f GIT binary patch literal 144338 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 Ef7j7dQ~&?~ literal 0 HcmV?d00001 diff --git a/docs/management/connectors/images/webhook-connector.png b/docs/management/connectors/images/webhook-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..6046572734afd32a0dc96c91bbf91d930cf28a83 GIT binary patch literal 193110 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

    X07WgJh}7dAWQ(Umt0H3eXJUm5_#_SyV<7lenb% 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 literal 0 HcmV?d00001 diff --git a/docs/management/connectors/index.asciidoc b/docs/management/connectors/index.asciidoc new file mode 100644 index 0000000000000..ea4fa46d3e808 --- /dev/null +++ b/docs/management/connectors/index.asciidoc @@ -0,0 +1,11 @@ +include::action-types/email.asciidoc[] +include::action-types/resilient.asciidoc[] +include::action-types/index.asciidoc[] +include::action-types/jira.asciidoc[] +include::action-types/teams.asciidoc[] +include::action-types/pagerduty.asciidoc[] +include::action-types/server-log.asciidoc[] +include::action-types/servicenow.asciidoc[] +include::action-types/slack.asciidoc[] +include::action-types/webhook.asciidoc[] +include::pre-configured-connectors.asciidoc[] diff --git a/docs/user/alerting/action-types/pre-configured-connectors.asciidoc b/docs/management/connectors/pre-configured-connectors.asciidoc similarity index 99% rename from docs/user/alerting/action-types/pre-configured-connectors.asciidoc rename to docs/management/connectors/pre-configured-connectors.asciidoc index 557404f24288a..4d304cdd6c5a2 100644 --- a/docs/user/alerting/action-types/pre-configured-connectors.asciidoc +++ b/docs/management/connectors/pre-configured-connectors.asciidoc @@ -1,6 +1,5 @@ [role="xpack"] [[pre-configured-connectors]] - === Preconfigured connectors You can preconfigure a connector to have all the information it needs prior to startup by adding it to the `kibana.yml` file. diff --git a/docs/management/alerting/images/rules-and-connectors-ui.png b/docs/management/images/rules-and-connectors-ui.png similarity index 100% rename from docs/management/alerting/images/rules-and-connectors-ui.png rename to docs/management/images/rules-and-connectors-ui.png diff --git a/docs/user/alerting/action-types.asciidoc b/docs/user/alerting/action-types.asciidoc deleted file mode 100644 index b648f5a9ccde5..0000000000000 --- a/docs/user/alerting/action-types.asciidoc +++ /dev/null @@ -1,75 +0,0 @@ -[role="xpack"] -[[action-types]] -== Connectors and actions - -Connectors provide a central place to store connection information for services and integrations with third party systems. Actions are instantiations of a connector that are linked to rules and run as background tasks on the {kib} server when rule conditions are met. {kib} provides the following types of connectors: - -[cols="2"] -|=== - -a| <> - -| Send email from your server. - -a| <> - -| Create an incident in IBM Resilient. - -a| <> - -| Index data into Elasticsearch. - -a| <> - -| Create an incident in Jira. - -a| <> - -| Send a message to a Microsoft Teams channel. - -a| <> - -| Send an event in PagerDuty. - -a| <> - -| Add a message to a Kibana log. - -a| <> - -| Create an incident in ServiceNow. - -a| <> - -| Send a message to a Slack channel or user. - -a| <> - -| Send a request to a web service. -|=== - -[NOTE] -============================================== -Some connector types are paid commercial features, while others are free. -For a comparison of the Elastic subscription levels, -see https://www.elastic.co/subscriptions[the subscription page]. -============================================== - -[float] -[[create-connectors]] -=== Preconfigured connectors - -For out-of-the-box and standardized connectors, you can <> -before {kib} starts. - -include::action-types/email.asciidoc[] -include::action-types/resilient.asciidoc[] -include::action-types/index.asciidoc[] -include::action-types/jira.asciidoc[] -include::action-types/teams.asciidoc[] -include::action-types/pagerduty.asciidoc[] -include::action-types/server-log.asciidoc[] -include::action-types/servicenow.asciidoc[] -include::action-types/slack.asciidoc[] -include::action-types/webhook.asciidoc[] -include::action-types/pre-configured-connectors.asciidoc[] diff --git a/docs/user/alerting/alerting-getting-started.asciidoc b/docs/user/alerting/alerting-getting-started.asciidoc index 2c8985075398e..bb11d2a0be423 100644 --- a/docs/user/alerting/alerting-getting-started.asciidoc +++ b/docs/user/alerting/alerting-getting-started.asciidoc @@ -5,7 +5,7 @@ -- -Alerting allows you to define *rules* to detect complex conditions within different {kib} apps and trigger actions when those conditions are met. Alerting is integrated with {observability-guide}/create-alerts.html[*Observability*], {security-guide}/prebuilt-rules.html[*Security*], <> and {ml-docs}/ml-configuring-alerts.html[*{ml-app}*], can be centrally managed from the <> UI, and provides a set of built-in <> and <> (known as stack rules) for you to use. +Alerting allows you to define *rules* to detect complex conditions within different {kib} apps and trigger actions when those conditions are met. Alerting is integrated with {observability-guide}/create-alerts.html[*Observability*], {security-guide}/prebuilt-rules.html[*Security*], <> and {ml-docs}/ml-configuring-alerts.html[*{ml-app}*], can be centrally managed from the <> UI, and provides a set of built-in <> and <> (known as stack rules) for you to use. image::images/alerting-overview.png[Rules and Connectors UI] @@ -47,7 +47,7 @@ to control the details of the conditions to detect. For example, an <> lets you specify the index to query, an aggregation field, and a time window, but the details of the underlying {es} query are hidden. -See <> for the types of rules provided by {kib} and how they express their conditions. +See <> and <> for the types of rules provided by {kib} and how they express their conditions. [float] [[alerting-concepts-scheduling]] diff --git a/docs/user/alerting/domain-specific-rules.asciidoc b/docs/user/alerting/domain-specific-rules.asciidoc new file mode 100644 index 0000000000000..f509f9e528823 --- /dev/null +++ b/docs/user/alerting/domain-specific-rules.asciidoc @@ -0,0 +1,20 @@ +[role="xpack"] +[[domain-specific-rules]] +== Domain-specific rules + +For domain-specific rules, refer to the documentation for that app. +{kib} supports these rules: + +* {observability-guide}/create-alerts.html[Observability rules] +* {security-guide}/prebuilt-rules.html[Security rules] +* <> +* {ml-docs}/ml-configuring-alerts.html[{ml-cap} rules] beta:[] + +[NOTE] +============================================== +Some rule types are subscription features, while others are free features. +For a comparison of the Elastic subscription levels, +see {subscriptions}[the subscription page]. +============================================== + +include::map-rules/geo-rule-types.asciidoc[] diff --git a/docs/management/alerting/images/bulk-mute-disable.png b/docs/user/alerting/images/bulk-mute-disable.png similarity index 100% rename from docs/management/alerting/images/bulk-mute-disable.png rename to docs/user/alerting/images/bulk-mute-disable.png diff --git a/docs/management/alerting/images/follower_indices.png b/docs/user/alerting/images/follower_indices.png similarity index 100% rename from docs/management/alerting/images/follower_indices.png rename to docs/user/alerting/images/follower_indices.png diff --git a/docs/management/alerting/images/individual-mute-disable.png b/docs/user/alerting/images/individual-mute-disable.png similarity index 100% rename from docs/management/alerting/images/individual-mute-disable.png rename to docs/user/alerting/images/individual-mute-disable.png diff --git a/docs/management/alerting/images/rule-details-alert-muting.png b/docs/user/alerting/images/rule-details-alert-muting.png similarity index 100% rename from docs/management/alerting/images/rule-details-alert-muting.png rename to docs/user/alerting/images/rule-details-alert-muting.png diff --git a/docs/management/alerting/images/rule-details-alerts-active.png b/docs/user/alerting/images/rule-details-alerts-active.png similarity index 100% rename from docs/management/alerting/images/rule-details-alerts-active.png rename to docs/user/alerting/images/rule-details-alerts-active.png diff --git a/docs/management/alerting/images/rule-details-alerts-inactive.png b/docs/user/alerting/images/rule-details-alerts-inactive.png similarity index 100% rename from docs/management/alerting/images/rule-details-alerts-inactive.png rename to docs/user/alerting/images/rule-details-alerts-inactive.png diff --git a/docs/management/alerting/images/rule-details-disabling.png b/docs/user/alerting/images/rule-details-disabling.png similarity index 100% rename from docs/management/alerting/images/rule-details-disabling.png rename to docs/user/alerting/images/rule-details-disabling.png diff --git a/docs/management/alerting/images/rule-details-muting.png b/docs/user/alerting/images/rule-details-muting.png similarity index 100% rename from docs/management/alerting/images/rule-details-muting.png rename to docs/user/alerting/images/rule-details-muting.png diff --git a/docs/user/alerting/images/rules-and-connectors-ui.png b/docs/user/alerting/images/rules-and-connectors-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..3a464fa7cf3755864bea01f048f3411dad4021f4 GIT binary patch literal 281417 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

    +0i$}0%XeZT`nY>smr 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%0A${uRKxF~ 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

    VY5>WX8^ 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 literal 0 HcmV?d00001 diff --git a/docs/management/alerting/images/rules-filter-by-action-type.png b/docs/user/alerting/images/rules-filter-by-action-type.png similarity index 100% rename from docs/management/alerting/images/rules-filter-by-action-type.png rename to docs/user/alerting/images/rules-filter-by-action-type.png diff --git a/docs/management/alerting/images/rules-filter-by-search.png b/docs/user/alerting/images/rules-filter-by-search.png similarity index 100% rename from docs/management/alerting/images/rules-filter-by-search.png rename to docs/user/alerting/images/rules-filter-by-search.png diff --git a/docs/management/alerting/images/rules-filter-by-type.png b/docs/user/alerting/images/rules-filter-by-type.png similarity index 100% rename from docs/management/alerting/images/rules-filter-by-type.png rename to docs/user/alerting/images/rules-filter-by-type.png diff --git a/docs/user/alerting/index.asciidoc b/docs/user/alerting/index.asciidoc index a29ca1c4ca012..f8a5aacce8f0e 100644 --- a/docs/user/alerting/index.asciidoc +++ b/docs/user/alerting/index.asciidoc @@ -1,5 +1,7 @@ include::alerting-getting-started.asciidoc[] include::defining-rules.asciidoc[] -include::action-types.asciidoc[] -include::rule-types.asciidoc[] +include::rule-management.asciidoc[] +include::rule-details.asciidoc[] +include::stack-rules.asciidoc[] +include::domain-specific-rules.asciidoc[] include::alerting-troubleshooting.asciidoc[] diff --git a/docs/management/alerting/rule-details.asciidoc b/docs/user/alerting/rule-details.asciidoc similarity index 99% rename from docs/management/alerting/rule-details.asciidoc rename to docs/user/alerting/rule-details.asciidoc index a893db280c7f7..6e743595e5c33 100644 --- a/docs/management/alerting/rule-details.asciidoc +++ b/docs/user/alerting/rule-details.asciidoc @@ -1,6 +1,6 @@ [role="xpack"] [[rule-details]] -=== Rule details +== Rule details The *Rule details* page tells you about the state of the rule and provides granular control over the actions it is taking. diff --git a/docs/management/alerting/rule-management.asciidoc b/docs/user/alerting/rule-management.asciidoc similarity index 74% rename from docs/management/alerting/rule-management.asciidoc rename to docs/user/alerting/rule-management.asciidoc index b43dc9eb635e9..b908bd03b0992 100644 --- a/docs/management/alerting/rule-management.asciidoc +++ b/docs/user/alerting/rule-management.asciidoc @@ -1,6 +1,6 @@ [role="xpack"] [[alert-management]] -=== Managing Rules +== Managing rules The *Rules* tab provides a cross-app view of alerting. Different {kib} apps like {observability-guide}/create-alerts.html[*Observability*], {security-guide}/prebuilt-rules.html[*Security*], <> and <> can offer their own rules. The *Rules* tab provides a central place to: @@ -10,12 +10,12 @@ The *Rules* tab provides a cross-app view of alerting. Different {kib} apps like * Drill-down to <> [role="screenshot"] -image:management/alerting/images/rules-and-connectors-ui.png[Example rule listing in the Rules and Connectors UI] +image:images/rules-and-connectors-ui.png[Example rule listing in the Rules and Connectors UI] For more information on alerting concepts and the types of rules and connectors available, see <>. [float] -==== Finding rules +=== Finding rules The *Rules* tab lists all rules in the current space, including summary information about their execution frequency, tags, and type. @@ -36,23 +36,28 @@ image::images/rules-filter-by-action-type.png[Filtering the rule list by type of [float] [[create-edit-rules]] -==== Creating and editing rules +=== Creating and editing rules -Many rules must be created within the context of a {kib} app like <>, <>, or <>, but others are generic. Generic rule types can be created in the *Rules* management UI by clicking the *Create* button. This will launch a flyout that guides you through selecting a rule type and configuring its properties. Refer to <> for details on what types of rules are available and how to configure them. +Many rules must be created within the context of a {kib} app like <>, <>, or <>, but others are generic. Generic rule types can be created in the *Rules* management UI by clicking the *Create* button. This will launch a flyout that guides you through selecting a rule type and configuring its properties. Refer to <> for details on what types of rules are available and how to configure them. After a rule is created, you can re-open the flyout and change a rule's properties by clicking the *Edit* button shown on each row of the rule listing. [float] [[controlling-rules]] -==== Controlling rules +=== Controlling rules The rule listing allows you to quickly mute/unmute, disable/enable, and delete individual rules by clicking the action button. [role="screenshot"] -image:management/alerting/images/individual-mute-disable.png[The actions button allows an individual rule to be muted, disabled, or deleted] +image:images/individual-mute-disable.png[The actions button allows an individual rule to be muted, disabled, or deleted] These operations can also be performed in bulk by multi-selecting rules and clicking the *Manage rules* button: [role="screenshot"] -image:management/alerting/images/bulk-mute-disable.png[The Manage rules button lets you mute/unmute, enable/disable, and delete in bulk] +image:images/bulk-mute-disable.png[The Manage rules button lets you mute/unmute, enable/disable, and delete in bulk] + +[float] +=== Required permissions + +Access to rules is granted based on your privileges to alerting-enabled features. See <> for more information. diff --git a/docs/user/alerting/rule-types.asciidoc b/docs/user/alerting/stack-rules.asciidoc similarity index 58% rename from docs/user/alerting/rule-types.asciidoc rename to docs/user/alerting/stack-rules.asciidoc index 44a22c548757c..483834c78806e 100644 --- a/docs/user/alerting/rule-types.asciidoc +++ b/docs/user/alerting/stack-rules.asciidoc @@ -1,14 +1,11 @@ [role="xpack"] -[[rule-types]] -== Rules +[[stack-rules]] +== Stack rule types Kibana provides two types of rules: * Stack rules, which are built into {kib} -* Domain-specific rules, which are registered by {kib} apps. - -[float] -==== Standard stack rules +* <>, which are registered by {kib} apps. {kib} provides two stack rules: @@ -18,17 +15,6 @@ Kibana provides two types of rules: Users require the `all` privilege to access the *Stack Rules* feature and create and edit rules. See <> for more information. -[float] -==== Domain-specific rules - -For domain-specific rules, refer to the documentation for that app. -{kib} supports these rules: - -* {observability-guide}/create-alerts.html[Observability rules] -* {security-guide}/prebuilt-rules.html[Security rules] -* <> -* {ml-docs}/ml-configuring-alerts.html[{ml-cap} rules] beta:[] - [NOTE] ============================================== Some rule types are subscription features, while others are free features. @@ -39,4 +25,3 @@ see {subscriptions}[the subscription page]. include::stack-rules/index-threshold.asciidoc[] include::stack-rules/es-query.asciidoc[] -include::map-rules/geo-rule-types.asciidoc[] diff --git a/docs/user/index.asciidoc b/docs/user/index.asciidoc index 81ded1e54d8fd..47d86004fdc66 100644 --- a/docs/user/index.asciidoc +++ b/docs/user/index.asciidoc @@ -29,6 +29,8 @@ include::ml/index.asciidoc[] include::graph/index.asciidoc[] +include::alerting/index.asciidoc[] + include::{kib-repo-dir}/observability/index.asciidoc[] include::{kib-repo-dir}/apm/index.asciidoc[] @@ -45,8 +47,6 @@ include::{kib-repo-dir}/fleet/fleet.asciidoc[] include::reporting/index.asciidoc[] -include::alerting/index.asciidoc[] - include::api.asciidoc[] include::plugins.asciidoc[] diff --git a/docs/user/management.asciidoc b/docs/user/management.asciidoc index 7c73a80362eb6..83e18734f65d4 100644 --- a/docs/user/management.asciidoc +++ b/docs/user/management.asciidoc @@ -78,9 +78,9 @@ You can add and remove remote clusters, and check their connectivity. [cols="50, 50"] |=== -| <> -| Centrally manage your rules across {kib}. Create and manage reusable -connectors for triggering actions. +| <> +| Centrally <> across {kib}. Create and <> for triggering actions. | <> | Monitor the generation of reports—PDF, PNG, and CSV—and download reports that you previously generated. @@ -182,16 +182,10 @@ next major version of {es}, and then reindex, if needed. include::{kib-repo-dir}/management/advanced-options.asciidoc[] -include::{kib-repo-dir}/management/alerting/rules-and-connectors-intro.asciidoc[] - -include::{kib-repo-dir}/management/alerting/rule-management.asciidoc[] - -include::{kib-repo-dir}/management/alerting/rule-details.asciidoc[] - -include::{kib-repo-dir}/management/alerting/connector-management.asciidoc[] - include::{kib-repo-dir}/management/managing-beats.asciidoc[] +include::{kib-repo-dir}/management/action-types.asciidoc[] + include::{kib-repo-dir}/management/managing-fields.asciidoc[] include::{kib-repo-dir}/management/managing-licenses.asciidoc[] @@ -202,14 +196,14 @@ include::{kib-repo-dir}/management/rollups/create_and_manage_rollups.asciidoc[] include::{kib-repo-dir}/management/managing-saved-objects.asciidoc[] -include::{kib-repo-dir}/management/managing-tags.asciidoc[] - include::security/index.asciidoc[] include::{kib-repo-dir}/management/snapshot-restore/index.asciidoc[] include::{kib-repo-dir}/spaces/index.asciidoc[] +include::{kib-repo-dir}/management/managing-tags.asciidoc[] + include::{kib-repo-dir}/management/upgrade-assistant/index.asciidoc[] include::{kib-repo-dir}/management/watcher-ui/index.asciidoc[] diff --git a/docs/user/monitoring/kibana-alerts.asciidoc b/docs/user/monitoring/kibana-alerts.asciidoc index 2944921edd2ee..58bf419d8d54a 100644 --- a/docs/user/monitoring/kibana-alerts.asciidoc +++ b/docs/user/monitoring/kibana-alerts.asciidoc @@ -20,7 +20,7 @@ analyze past performance. You can also modify active alerts. image::user/monitoring/images/monitoring-kibana-alerts.png["Kibana alerts in the Stack Monitoring app"] To review and modify all the available alerts, use -<> in *{stack-manage-app}*. +<> in *{stack-manage-app}*. [discrete] [[kibana-alerts-cpu-threshold]] diff --git a/src/core/public/doc_links/doc_links_service.ts b/src/core/public/doc_links/doc_links_service.ts index 1696db23d2278..0ecfc152197d3 100644 --- a/src/core/public/doc_links/doc_links_service.ts +++ b/src/core/public/doc_links/doc_links_service.ts @@ -249,10 +249,10 @@ export class DocLinksService { guide: `${ELASTIC_WEBSITE_URL}guide/en/observability/${DOC_LINK_VERSION}/index.html`, }, alerting: { - guide: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/managing-alerts-and-actions.html`, + guide: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/alert-management.html`, actionTypes: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/action-types.html`, emailAction: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/email-action-type.html`, - emailActionConfig: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/email-action-type.html#configuring-email`, + emailActionConfig: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/email-action-type.html`, generalSettings: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/alert-action-settings-kb.html#general-alert-action-settings`, indexAction: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/index-action-type.html`, esQuery: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/rule-type-es-query.html`, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/home.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/home.test.tsx index 3d71d5404da2b..0e1c27c1e6768 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/home.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/home.test.tsx @@ -37,7 +37,7 @@ describe('home', () => { const documentationLink = wrapper.find('[data-test-subj="documentationLink"]'); expect(documentationLink.exists()).toBeTruthy(); expect(documentationLink.first().prop('href')).toEqual( - 'https://www.elastic.co/guide/en/kibana/mocked-test-branch/managing-alerts-and-actions.html' + 'https://www.elastic.co/guide/en/kibana/mocked-test-branch/alert-management.html' ); }); }); From 44eda0fa736bb3d552c22b1e66e465aded8c38fe Mon Sep 17 00:00:00 2001 From: Angela Chuang <6295984+angorayc@users.noreply.github.com> Date: Tue, 20 Apr 2021 01:32:39 +0100 Subject: [PATCH 31/56] [SecuritySolution] Timeline http endpoints (#95036) * add notes and pinned events routes * add api endpoints on client side * add apis * fix get all timelines * add decodeResponseFavoriteTimeline * rm apolloClient * fix unit tests * remove unused routes * update cypress task * fix integration tests * clean up type dependency * fix types * update snapshot * remove graphql types dependency * fix types * remove graphql queries * remove unused i18n * fix types * fix delete timelines * fix types and rewrite timeline integration tests * add readme * fix unit test * fix unit test * update package.json * rm x-pack/yarn.lock * fix tests * update yarn.lock * update yarn.lock * rm unused dependency * fix types * fix unit test * update query params for getAllTimelines * fix integration test * wrap JSON.stringify with try/catch * fix lint error * fix type * wrap JSON.stringify with try/catch * fix unit test * review * review * review Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- package.json | 21 - .../security_solution/common/constants.ts | 5 + .../common/graphql/root/schema.gql.ts | 19 - .../common/graphql/shared/schema.gql.ts | 92 - .../security_solution/index.ts | 6 + .../common/search_strategy/timeline/index.ts | 147 +- .../common/types/timeline/index.ts | 245 +- .../common/types/timeline/note/index.ts | 62 + .../types/timeline/pinned_event/index.ts | 25 + .../cypress/tasks/api_calls/notes.ts | 15 +- .../cypress/tasks/api_calls/timelines.ts | 20 +- .../security_solution/public/app/app.tsx | 44 +- .../security_solution/public/app/index.tsx | 9 +- .../security_solution/public/app/types.ts | 3 +- .../user_action_markdown.test.tsx | 6 - .../index.test.tsx | 17 +- .../error_toast_dispatcher/index.test.tsx | 17 +- .../components/event_details/columns.tsx | 3 +- .../components/event_details/helpers.tsx | 3 +- .../components/generic_downloader/index.tsx | 3 +- .../common/components/inspect/index.test.tsx | 25 +- .../get_criteria_from_network_type.test.ts | 2 +- .../get_criteria_from_network_type.ts | 2 +- .../ml/criteria/network_to_criteria.test.ts | 2 +- .../ml/criteria/network_to_criteria.ts | 2 +- .../get_anomalies_network_table_columns.tsx | 2 +- .../ml/tables/network_equality.test.ts | 2 +- .../public/common/components/ml/types.ts | 2 +- .../components/paginated_table/helpers.ts | 2 +- .../components/paginated_table/index.test.tsx | 2 +- .../components/sourcerer/index.test.tsx | 29 +- .../components/stat_items/index.test.tsx | 9 +- .../super_date_picker/index.test.tsx | 17 +- .../common/components/top_n/index.test.tsx | 9 +- .../url_state/initialize_redux_by_url.tsx | 2 - .../common/components/url_state/types.ts | 3 - .../components/url_state/use_url_state.tsx | 3 - .../anomalies_query_tab_body/types.ts | 2 +- .../anomalies_query_tab_body/utils.ts | 2 +- .../common/containers/errors/index.test.tsx | 108 - .../public/common/containers/errors/index.tsx | 57 - .../common/containers/errors/translations.ts | 22 - .../public/common/containers/helpers.ts | 3 - .../common/containers/query_template.tsx | 87 - .../containers/query_template_paginated.tsx | 103 - .../containers/sourcerer/index.test.tsx | 25 +- .../public/common/lib/compose/helpers.test.ts | 40 - .../public/common/lib/compose/helpers.ts | 26 - .../common/lib/compose/kibana_compose.tsx | 37 - .../public/common/lib/lib.ts | 39 - .../mock/endpoint/app_context_render.tsx | 14 +- .../public/common/mock/test_providers.tsx | 31 +- .../public/common/mock/timeline_results.ts | 3316 ++++--- .../public/common/store/store.ts | 3 - .../public/common/utils/apollo_context.ts | 20 - .../public/common/utils/route/types.ts | 2 +- .../utils/timeline/use_timeline_click.tsx | 5 +- .../components/alerts_table/actions.test.tsx | 31 +- .../components/alerts_table/actions.tsx | 22 +- .../components/alerts_table/helpers.ts | 2 +- .../investigate_in_timeline_action.tsx | 5 - .../components/alerts_table/types.ts | 5 +- .../detection_engine.test.tsx | 9 +- .../rules/details/index.test.tsx | 9 +- .../public/graphql/introspection.json | 7647 ----------------- .../security_solution/public/graphql/types.ts | 2435 ------ .../authentications_table/index.test.tsx | 17 +- .../components/hosts_table/index.test.tsx | 46 +- .../public/hosts/pages/hosts.test.tsx | 9 +- .../public/hosts/store/model.ts | 4 +- .../public/lazy_application_dependencies.tsx | 3 +- .../network/components/details/index.test.tsx | 19 +- .../point_tool_tip_content.test.tsx | 2 +- .../map_tool_tip/point_tool_tip_content.tsx | 2 +- .../flow_direction_select.test.tsx | 3 +- .../flow_controls/flow_direction_select.tsx | 3 +- .../flow_controls/flow_target_select.test.tsx | 3 +- .../flow_controls/flow_target_select.tsx | 3 +- .../index.test.tsx | 2 +- .../flow_target_select_connected/index.tsx | 2 +- .../components/kpi_network/index.test.tsx | 17 +- .../network_dns_table/index.test.tsx | 46 +- .../is_ptr_included.test.tsx | 3 +- .../network_http_table/index.test.tsx | 46 +- .../index.test.tsx | 58 +- .../network_top_n_flow_table/index.test.tsx | 50 +- .../components/tls_table/index.test.tsx | 46 +- .../components/users_table/index.test.tsx | 54 +- .../public/network/containers/tls/index.tsx | 2 +- .../public/network/containers/users/index.tsx | 2 +- .../network/pages/details/index.test.tsx | 19 +- .../public/network/pages/details/index.tsx | 7 +- .../public/network/pages/index.tsx | 2 +- .../public/network/pages/network.test.tsx | 9 +- .../components/overview_host/index.test.tsx | 17 +- .../overview_network/index.test.tsx | 17 +- .../components/recent_timelines/index.tsx | 11 +- .../overview/components/sidebar/sidebar.tsx | 7 +- .../security_solution/public/plugin.tsx | 27 +- .../components/flyout/index.test.tsx | 2 - .../components/open_timeline/helpers.test.ts | 39 +- .../components/open_timeline/helpers.ts | 101 +- .../components/open_timeline/index.test.tsx | 406 +- .../components/open_timeline/index.tsx | 22 +- .../open_timeline_modal/index.test.tsx | 21 +- .../open_timeline_modal_button.test.tsx | 19 +- .../components/open_timeline/types.ts | 2 +- .../host_details/expandable_host.test.tsx | 18 +- .../components/side_panel/index.test.tsx | 49 +- .../body/column_headers/column_header.tsx | 2 +- .../body/column_headers/header/helpers.ts | 2 +- .../body/column_headers/header/index.test.tsx | 2 +- .../body/column_headers/index.test.tsx | 2 +- .../components/timeline/body/sort/index.ts | 2 +- .../body/sort/sort_indicator.test.tsx | 2 +- .../timeline/body/sort/sort_indicator.tsx | 2 +- .../pinned_tab_content/index.test.tsx | 2 +- .../timeline/properties/helpers.tsx | 3 - .../properties/new_template_timeline.test.tsx | 9 +- .../timeline/query_tab_content/index.test.tsx | 2 +- .../selectable_timeline/index.test.tsx | 4 +- .../timeline/selectable_timeline/index.tsx | 3 +- .../containers/all/index.gql_query.ts | 81 - .../public/timelines/containers/all/index.tsx | 113 +- .../public/timelines/containers/api.ts | 172 +- .../containers/delete/persist.gql_query.ts | 14 - .../containers/favorite/persist.gql_query.ts | 35 - .../public/timelines/containers/index.tsx | 2 +- .../public/timelines/containers/notes/api.ts | 35 + .../containers/notes/persist.gql_query.ts | 29 - .../containers/one/index.gql_query.ts | 157 - .../timelines/containers/persist.gql_query.ts | 114 - .../timelines/containers/pinned_event/api.ts | 31 + .../pinned_event/persist.gql_query.ts | 28 - .../timelines/store/timeline/defaults.ts | 2 +- .../timelines/store/timeline/epic.test.ts | 2 +- .../public/timelines/store/timeline/epic.ts | 25 +- .../timelines/store/timeline/epic_favorite.ts | 27 +- .../timeline/epic_local_storage.test.tsx | 19 +- .../timelines/store/timeline/epic_note.ts | 30 +- .../store/timeline/epic_pinned_event.ts | 32 +- .../public/timelines/store/timeline/model.ts | 2 +- .../timelines/store/timeline/reducer.test.ts | 2 +- .../store/timeline/refetch_queries.ts | 25 - .../public/timelines/store/timeline/types.ts | 2 - .../plugins/security_solution/public/types.ts | 3 +- .../scripts/combined_schema.ts | 18 - .../scripts/generate_types_from_graphql.js | 146 - .../server/graphql/ecs/index.ts | 9 - .../server/graphql/ecs/resolvers.ts | 107 - .../server/graphql/ecs/schema.gql.ts | 468 - .../server/graphql/hosts/schema.gql.ts | 124 - .../security_solution/server/graphql/index.ts | 36 - .../server/graphql/note/index.ts | 9 - .../server/graphql/note/resolvers.ts | 93 - .../server/graphql/note/schema.gql.ts | 82 - .../server/graphql/pinned_event/index.ts | 9 - .../server/graphql/pinned_event/resolvers.ts | 59 - .../server/graphql/pinned_event/schema.gql.ts | 41 - .../server/graphql/scalar_date/index.ts | 9 - .../graphql/scalar_date/resolvers.test.ts | 56 - .../server/graphql/scalar_date/resolvers.ts | 33 - .../server/graphql/scalar_to_any/index.ts | 9 - .../server/graphql/scalar_to_any/resolvers.ts | 61 - .../graphql/scalar_to_any/schema.gql.ts | 12 - .../graphql/scalar_to_boolean_array/index.ts | 9 - .../scalar_to_boolean_array/resolvers.test.ts | 119 - .../scalar_to_boolean_array/resolvers.ts | 76 - .../scalar_to_boolean_array/schema.gql.ts | 12 - .../graphql/scalar_to_date_array/index.ts | 9 - .../scalar_to_date_array/resolvers.test.ts | 94 - .../graphql/scalar_to_date_array/resolvers.ts | 70 - .../scalar_to_date_array/schema.gql.ts | 12 - .../graphql/scalar_to_number_array/index.ts | 9 - .../scalar_to_number_array/resolvers.test.ts | 76 - .../scalar_to_number_array/resolvers.ts | 74 - .../scalar_to_number_array/schema.gql.ts | 12 - .../server/graphql/source_status/index.ts | 9 - .../graphql/source_status/resolvers.test.ts | 50 - .../server/graphql/source_status/resolvers.ts | 99 - .../graphql/source_status/schema.gql.ts | 43 - .../server/graphql/sources/index.ts | 9 - .../server/graphql/sources/resolvers.ts | 72 - .../server/graphql/sources/schema.gql.ts | 51 - .../server/graphql/timeline/index.ts | 9 - .../server/graphql/timeline/resolvers.ts | 85 - .../server/graphql/timeline/schema.gql.ts | 352 - .../security_solution/server/graphql/types.ts | 5706 ------------ .../security_solution/server/init_server.ts | 44 - .../server/lib/compose/kibana.ts | 2 +- .../delete_timeline_by_timeline_id.sh | 4 +- .../timelines/find_timeline_by_filter.sh | 5 +- .../scripts/timelines/get_all_timelines.sh | 2 +- .../lib/framework/kibana_framework_adapter.ts | 85 +- .../server/lib/framework/types.ts | 8 +- .../timeline/__mocks__/request_responses.ts | 8 +- .../server/lib/timeline/routes/README.md | 812 ++ .../lib/timeline/routes/notes}/index.ts | 2 +- .../lib/timeline/routes/notes/persist_note.ts | 69 + .../timeline/routes/pinned_events}/index.ts | 2 +- .../pinned_events/persist_pinned_event.ts | 65 + .../timelines/create_timelines/helpers.ts | 4 +- .../timelines/delete_timelines/index.ts | 51 + .../timelines/get_timeline/index.test.ts | 15 +- .../routes/timelines/get_timeline/index.ts | 41 +- .../timelines/get_timelines/index.test.ts | 58 + .../routes/timelines/get_timelines/index.ts | 103 + .../create_timelines_stream_from_ndjson.ts | 6 +- .../timelines/import_timelines/helpers.ts | 1 + .../timelines/import_timelines/types.ts | 2 +- .../lib/timeline/routes/timelines/index.ts | 14 + .../timelines/patch_timelines/index.test.ts | 16 +- .../routes/timelines/patch_timelines/index.ts | 2 +- .../timelines/persist_favorite/index.ts | 74 + .../notes/get_overridable_note.ts | 8 +- .../lib/timeline/saved_object/notes/index.ts | 10 +- .../saved_object/notes/persist_notes.ts | 2 +- .../saved_object/notes/saved_object.ts | 8 +- .../saved_object/pinned_events/index.ts | 7 +- .../saved_object/timelines/index.test.ts | 8 +- .../timeline/saved_object/timelines/index.ts | 33 +- .../lib/timeline/schemas/notes/index.ts | 11 + .../timeline/schemas/pinned_events/index.ts | 9 + .../timelines/delete_timelines_schema.ts} | 8 +- ...by_id_schema.ts => get_timeline_schema.ts} | 4 +- .../schemas/timelines/get_timelines_schema.ts | 41 + .../lib/timeline/schemas/timelines/index.ts | 3 +- .../timelines/persist_favorite_schema.ts | 18 + .../server/lib/timeline/utils/common.ts | 35 +- .../security_solution/server/plugin.ts | 4 +- .../security_solution/server/routes/index.ts | 28 +- .../utils/build_query/create_options.test.ts | 176 - .../utils/build_query/create_options.ts | 88 - .../server/utils/serialized_query.ts | 8 +- .../translations/translations/ja-JP.json | 2 - .../translations/translations/zh-CN.json | 2 - .../security_solution/feature_controls.ts | 203 - .../apis/security_solution/index.js | 3 +- .../saved_objects/helpers.ts | 44 + .../security_solution/saved_objects/notes.ts | 77 +- .../saved_objects/pinned_events.ts | 38 +- .../saved_objects/timeline.ts | 318 +- .../apis/security_solution/timeline.ts | 157 +- x-pack/test/api_integration/services/index.ts | 7 +- .../security_solution_graphql_client.ts | 57 - yarn.lock | 919 +- 246 files changed, 4719 insertions(+), 24790 deletions(-) delete mode 100644 x-pack/plugins/security_solution/common/graphql/root/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/common/graphql/shared/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/public/common/containers/errors/index.test.tsx delete mode 100644 x-pack/plugins/security_solution/public/common/containers/errors/index.tsx delete mode 100644 x-pack/plugins/security_solution/public/common/containers/errors/translations.ts delete mode 100644 x-pack/plugins/security_solution/public/common/containers/query_template.tsx delete mode 100644 x-pack/plugins/security_solution/public/common/containers/query_template_paginated.tsx delete mode 100644 x-pack/plugins/security_solution/public/common/lib/compose/helpers.test.ts delete mode 100644 x-pack/plugins/security_solution/public/common/lib/compose/helpers.ts delete mode 100644 x-pack/plugins/security_solution/public/common/lib/compose/kibana_compose.tsx delete mode 100644 x-pack/plugins/security_solution/public/common/lib/lib.ts delete mode 100644 x-pack/plugins/security_solution/public/common/utils/apollo_context.ts delete mode 100644 x-pack/plugins/security_solution/public/graphql/introspection.json delete mode 100644 x-pack/plugins/security_solution/public/graphql/types.ts delete mode 100644 x-pack/plugins/security_solution/public/timelines/containers/all/index.gql_query.ts delete mode 100644 x-pack/plugins/security_solution/public/timelines/containers/delete/persist.gql_query.ts delete mode 100644 x-pack/plugins/security_solution/public/timelines/containers/favorite/persist.gql_query.ts create mode 100644 x-pack/plugins/security_solution/public/timelines/containers/notes/api.ts delete mode 100644 x-pack/plugins/security_solution/public/timelines/containers/notes/persist.gql_query.ts delete mode 100644 x-pack/plugins/security_solution/public/timelines/containers/one/index.gql_query.ts delete mode 100644 x-pack/plugins/security_solution/public/timelines/containers/persist.gql_query.ts create mode 100644 x-pack/plugins/security_solution/public/timelines/containers/pinned_event/api.ts delete mode 100644 x-pack/plugins/security_solution/public/timelines/containers/pinned_event/persist.gql_query.ts delete mode 100644 x-pack/plugins/security_solution/public/timelines/store/timeline/refetch_queries.ts delete mode 100644 x-pack/plugins/security_solution/scripts/combined_schema.ts delete mode 100644 x-pack/plugins/security_solution/scripts/generate_types_from_graphql.js delete mode 100644 x-pack/plugins/security_solution/server/graphql/ecs/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/ecs/resolvers.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/ecs/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/hosts/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/note/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/note/resolvers.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/note/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/pinned_event/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/pinned_event/resolvers.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/pinned_event/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_date/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_date/resolvers.test.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_date/resolvers.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_any/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_any/resolvers.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_any/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/resolvers.test.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/resolvers.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/resolvers.test.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/resolvers.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/resolvers.test.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/resolvers.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/source_status/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/source_status/resolvers.test.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/source_status/resolvers.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/source_status/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/sources/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/sources/resolvers.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/sources/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/timeline/index.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/timeline/resolvers.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/timeline/schema.gql.ts delete mode 100644 x-pack/plugins/security_solution/server/graphql/types.ts delete mode 100644 x-pack/plugins/security_solution/server/init_server.ts rename x-pack/plugins/security_solution/{common/graphql/root => server/lib/timeline/routes/notes}/index.ts (83%) create mode 100644 x-pack/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts rename x-pack/plugins/security_solution/{common/graphql/shared => server/lib/timeline/routes/pinned_events}/index.ts (79%) create mode 100644 x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts create mode 100644 x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts create mode 100644 x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.test.ts create mode 100644 x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts create mode 100644 x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/index.ts create mode 100644 x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts rename x-pack/plugins/security_solution/server/{graphql/scalar_date/schema.gql.ts => lib/timeline/schemas/timelines/delete_timelines_schema.ts} (68%) rename x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/{get_timeline_by_id_schema.ts => get_timeline_schema.ts} (70%) create mode 100644 x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/get_timelines_schema.ts create mode 100644 x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/persist_favorite_schema.ts delete mode 100644 x-pack/plugins/security_solution/server/utils/build_query/create_options.test.ts delete mode 100644 x-pack/plugins/security_solution/server/utils/build_query/create_options.ts delete mode 100644 x-pack/test/api_integration/apis/security_solution/feature_controls.ts create mode 100644 x-pack/test/api_integration/apis/security_solution/saved_objects/helpers.ts delete mode 100644 x-pack/test/api_integration/services/security_solution_graphql_client.ts diff --git a/package.json b/package.json index 4f49ecd7373e2..23241a37ffe47 100644 --- a/package.json +++ b/package.json @@ -176,17 +176,6 @@ "angular-sortable-view": "^0.0.17", "angular-ui-ace": "0.2.3", "antlr4ts": "^0.5.0-alpha.3", - "apollo-cache-inmemory": "1.6.2", - "apollo-client": "^2.3.8", - "apollo-link": "^1.2.3", - "apollo-link-error": "^1.1.7", - "apollo-link-http": "^1.5.16", - "apollo-link-http-common": "^0.2.15", - "apollo-link-schema": "^1.1.0", - "apollo-link-state": "^0.4.1", - "apollo-server-core": "^1.3.6", - "apollo-server-errors": "^2.0.2", - "apollo-server-hapi": "^1.3.6", "archiver": "^5.2.0", "axios": "^0.21.1", "base64-js": "^1.3.1", @@ -243,9 +232,7 @@ "glob-all": "^3.2.1", "globby": "^11.0.3", "graphql": "^0.13.2", - "graphql-fields": "^1.0.2", "graphql-tag": "^2.10.3", - "graphql-tools": "^3.0.2", "handlebars": "4.7.7", "he": "^1.2.0", "history": "^4.9.0", @@ -333,7 +320,6 @@ "re2": "^1.15.4", "react": "^16.12.0", "react-ace": "^5.9.0", - "react-apollo": "^2.1.4", "react-beautiful-dnd": "^13.0.0", "react-color": "^2.13.8", "react-datetime": "^2.14.0", @@ -728,13 +714,6 @@ "form-data": "^4.0.0", "geckodriver": "^1.22.2", "glob-watcher": "5.0.3", - "graphql-code-generator": "^0.18.2", - "graphql-codegen-add": "^0.18.2", - "graphql-codegen-introspection": "^0.18.2", - "graphql-codegen-typescript-client": "^0.18.2", - "graphql-codegen-typescript-common": "^0.18.2", - "graphql-codegen-typescript-resolvers": "^0.18.2", - "graphql-codegen-typescript-server": "^0.18.2", "grunt": "1.3.0", "grunt-available-tasks": "^0.6.3", "grunt-peg": "^2.0.1", diff --git a/x-pack/plugins/security_solution/common/constants.ts b/x-pack/plugins/security_solution/common/constants.ts index 4c62179f9ed54..2b584b196a738 100644 --- a/x-pack/plugins/security_solution/common/constants.ts +++ b/x-pack/plugins/security_solution/common/constants.ts @@ -136,11 +136,16 @@ export const DETECTION_ENGINE_RULES_STATUS_URL = `${DETECTION_ENGINE_RULES_URL}/ export const DETECTION_ENGINE_PREPACKAGED_RULES_STATUS_URL = `${DETECTION_ENGINE_RULES_URL}/prepackaged/_status`; export const TIMELINE_URL = '/api/timeline'; +export const TIMELINES_URL = '/api/timelines'; +export const TIMELINE_FAVORITE_URL = '/api/timeline/_favorite'; export const TIMELINE_DRAFT_URL = `${TIMELINE_URL}/_draft`; export const TIMELINE_EXPORT_URL = `${TIMELINE_URL}/_export`; export const TIMELINE_IMPORT_URL = `${TIMELINE_URL}/_import`; export const TIMELINE_PREPACKAGED_URL = `${TIMELINE_URL}/_prepackaged`; +export const NOTE_URL = '/api/note'; +export const PINNED_EVENT_URL = '/api/pinned_event'; + /** * Default signals index key for kibana.dev.yml */ diff --git a/x-pack/plugins/security_solution/common/graphql/root/schema.gql.ts b/x-pack/plugins/security_solution/common/graphql/root/schema.gql.ts deleted file mode 100644 index 16fdeb7ec6c75..0000000000000 --- a/x-pack/plugins/security_solution/common/graphql/root/schema.gql.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const rootSchema = gql` - schema { - query: Query - mutation: Mutation - } - - type Query - - type Mutation -`; diff --git a/x-pack/plugins/security_solution/common/graphql/shared/schema.gql.ts b/x-pack/plugins/security_solution/common/graphql/shared/schema.gql.ts deleted file mode 100644 index 86416cf354498..0000000000000 --- a/x-pack/plugins/security_solution/common/graphql/shared/schema.gql.ts +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const sharedSchema = gql` - input TimerangeInput { - "The interval string to use for last bucket. The format is '{value}{unit}'. For example '5m' would return the metrics for the last 5 minutes of the timespan." - interval: String! - "The end of the timerange" - to: String! - "The beginning of the timerange" - from: String! - } - - input docValueFieldsInput { - field: String! - format: String! - } - - type CursorType { - value: String - tiebreaker: String - } - - input PaginationInput { - "The limit parameter allows you to configure the maximum amount of items to be returned" - limit: Float! - "The cursor parameter defines the next result you want to fetch" - cursor: String - "The tiebreaker parameter allow to be more precise to fetch the next item" - tiebreaker: String - } - - input PaginationInputPaginated { - "The activePage parameter defines the page of results you want to fetch" - activePage: Float! - "The cursorStart parameter defines the start of the results to be displayed" - cursorStart: Float! - "The fakePossibleCount parameter determines the total count in order to show 5 additional pages" - fakePossibleCount: Float! - "The querySize parameter is the number of items to be returned" - querySize: Float! - } - - enum Direction { - asc - desc - } - - enum FlowTarget { - client - destination - server - source - } - - enum FlowTargetSourceDest { - destination - source - } - - enum FlowDirection { - uniDirectional - biDirectional - } - - input SortField { - sortFieldId: String! - direction: Direction! - } - - type PageInfo { - endCursor: CursorType - hasNextPage: Boolean - } - - type Inspect { - dsl: [String!]! - response: [String!]! - } - - type PageInfoPaginated { - activePage: Float! - fakeTotalCount: Float! - showMorePagesIndicator: Boolean! - } -`; diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/index.ts b/x-pack/plugins/security_solution/common/search_strategy/security_solution/index.ts index 2160ed6170e29..ae2cff20717f3 100644 --- a/x-pack/plugins/security_solution/common/search_strategy/security_solution/index.ts +++ b/x-pack/plugins/security_solution/common/search_strategy/security_solution/index.ts @@ -192,3 +192,9 @@ export type StrategyRequestType = T extends HostsQu : T extends typeof MatrixHistogramQuery ? MatrixHistogramRequestOptions : never; + +export interface DocValueFieldsInput { + field: string; + + format: string; +} diff --git a/x-pack/plugins/security_solution/common/search_strategy/timeline/index.ts b/x-pack/plugins/security_solution/common/search_strategy/timeline/index.ts index 504e71cd8cefb..9c2c23eb334a3 100644 --- a/x-pack/plugins/security_solution/common/search_strategy/timeline/index.ts +++ b/x-pack/plugins/security_solution/common/search_strategy/timeline/index.ts @@ -17,7 +17,14 @@ import { TimelineEventsLastEventTimeStrategyResponse, TimelineKpiStrategyResponse, } from './events'; -import { DocValueFields, PaginationInputPaginated, TimerangeInput, SortField } from '../common'; +import { + DocValueFields, + PaginationInputPaginated, + TimerangeInput, + SortField, + Maybe, +} from '../common'; +import { DataProviderType, TimelineType, TimelineStatus } from '../../types/timeline'; export * from './events'; @@ -64,3 +71,141 @@ export type TimelineStrategyRequestType< : T extends TimelineEventsQueries.lastEventTime ? TimelineEventsLastEventTimeRequestOptions : never; + +export interface ColumnHeaderInput { + aggregatable?: Maybe; + category?: Maybe; + columnHeaderType?: Maybe; + description?: Maybe; + example?: Maybe; + indexes?: Maybe; + id?: Maybe; + name?: Maybe; + placeholder?: Maybe; + searchable?: Maybe; + type?: Maybe; +} + +export interface QueryMatchInput { + field?: Maybe; + + displayField?: Maybe; + + value?: Maybe; + + displayValue?: Maybe; + + operator?: Maybe; +} + +export interface DataProviderInput { + id?: Maybe; + name?: Maybe; + enabled?: Maybe; + excluded?: Maybe; + kqlQuery?: Maybe; + queryMatch?: Maybe; + and?: Maybe; + type?: Maybe; +} + +export interface EqlOptionsInput { + eventCategoryField?: Maybe; + tiebreakerField?: Maybe; + timestampField?: Maybe; + query?: Maybe; + size?: Maybe; +} + +export interface FilterMetaTimelineInput { + alias?: Maybe; + controlledBy?: Maybe; + disabled?: Maybe; + field?: Maybe; + formattedValue?: Maybe; + index?: Maybe; + key?: Maybe; + negate?: Maybe; + params?: Maybe; + type?: Maybe; + value?: Maybe; +} + +export interface FilterTimelineInput { + exists?: Maybe; + meta?: Maybe; + match_all?: Maybe; + missing?: Maybe; + query?: Maybe; + range?: Maybe; + script?: Maybe; +} + +export interface SerializedFilterQueryInput { + filterQuery?: Maybe; +} + +export interface SerializedKueryQueryInput { + kuery?: Maybe; + serializedQuery?: Maybe; +} + +export interface KueryFilterQueryInput { + kind?: Maybe; + expression?: Maybe; +} + +export interface DateRangePickerInput { + start?: Maybe; + end?: Maybe; +} + +export interface SortTimelineInput { + columnId?: Maybe; + sortDirection?: Maybe; +} + +export enum RowRendererId { + alerts = 'alerts', + auditd = 'auditd', + auditd_file = 'auditd_file', + library = 'library', + netflow = 'netflow', + plain = 'plain', + registry = 'registry', + suricata = 'suricata', + system = 'system', + system_dns = 'system_dns', + system_endgame_process = 'system_endgame_process', + system_file = 'system_file', + system_fim = 'system_fim', + system_security_event = 'system_security_event', + system_socket = 'system_socket', + zeek = 'zeek', +} + +export interface TimelineInput { + columns?: Maybe; + dataProviders?: Maybe; + description?: Maybe; + eqlOptions?: Maybe; + eventType?: Maybe; + excludedRowRendererIds?: Maybe; + filters?: Maybe; + kqlMode?: Maybe; + kqlQuery?: Maybe; + indexNames?: Maybe; + title?: Maybe; + templateTimelineId?: Maybe; + templateTimelineVersion?: Maybe; + timelineType?: Maybe; + dateRange?: Maybe; + savedQueryId?: Maybe; + sort?: Maybe; + status?: Maybe; +} + +export enum FlowDirection { + uniDirectional = 'uniDirectional', + biDirectional = 'biDirectional', +} diff --git a/x-pack/plugins/security_solution/common/types/timeline/index.ts b/x-pack/plugins/security_solution/common/types/timeline/index.ts index 9def70048410a..5b6c9c532ba7c 100644 --- a/x-pack/plugins/security_solution/common/types/timeline/index.ts +++ b/x-pack/plugins/security_solution/common/types/timeline/index.ts @@ -8,8 +8,12 @@ import * as runtimeTypes from 'io-ts'; import { stringEnum, unionWithNullType } from '../../utility_types'; -import { NoteSavedObject, NoteSavedObjectToReturnRuntimeType } from './note'; -import { PinnedEventToReturnSavedObjectRuntimeType, PinnedEventSavedObject } from './pinned_event'; +import { NoteResult, NoteSavedObject, NoteSavedObjectToReturnRuntimeType } from './note'; +import { + PinnedEventToReturnSavedObjectRuntimeType, + PinnedEventSavedObject, + PinnedEvent, +} from './pinned_event'; import { success, success_count as successCount, @@ -17,6 +21,7 @@ import { import { FlowTarget } from '../../search_strategy/security_solution/network'; import { PositiveInteger } from '../../detection_engine/schemas/types'; import { errorSchema } from '../../detection_engine/schemas/response/error_schema'; +import { Direction, Maybe } from '../../search_strategy'; /* * ColumnHeader Types @@ -167,6 +172,8 @@ const SavedSortRuntimeType = runtimeTypes.union([ SavedSortObject, ]); +export type Sort = runtimeTypes.TypeOf; + /* * Timeline Statuses */ @@ -346,6 +353,14 @@ export type TimelineSavedObject = runtimeTypes.TypeOf< typeof TimelineSavedToReturnObjectRuntimeType >; +export const SingleTimelineResponseType = runtimeTypes.type({ + data: runtimeTypes.type({ + getOneTimeline: TimelineSavedToReturnObjectRuntimeType, + }), +}); + +export type SingleTimelineResponse = runtimeTypes.TypeOf; + /** * All Timeline Saved object type with metadata */ @@ -476,3 +491,229 @@ export type TimelineExpandedDetailType = export type TimelineExpandedDetail = { [tab in TimelineTabs]?: TimelineExpandedDetailType; }; + +export const pageInfoTimeline = runtimeTypes.type({ + pageIndex: runtimeTypes.number, + pageSize: runtimeTypes.number, +}); + +export enum SortFieldTimeline { + title = 'title', + description = 'description', + updated = 'updated', + created = 'created', +} + +export const sortFieldTimeline = runtimeTypes.union([ + runtimeTypes.literal(SortFieldTimeline.title), + runtimeTypes.literal(SortFieldTimeline.description), + runtimeTypes.literal(SortFieldTimeline.updated), + runtimeTypes.literal(SortFieldTimeline.created), +]); + +export const direction = runtimeTypes.union([ + runtimeTypes.literal(Direction.asc), + runtimeTypes.literal(Direction.desc), +]); + +export const sortTimeline = runtimeTypes.type({ + sortField: sortFieldTimeline, + sortOrder: direction, +}); + +const favoriteTimelineResult = runtimeTypes.partial({ + fullName: unionWithNullType(runtimeTypes.string), + userName: unionWithNullType(runtimeTypes.string), + favoriteDate: unionWithNullType(runtimeTypes.number), +}); + +export type FavoriteTimelineResult = runtimeTypes.TypeOf; + +export const responseFavoriteTimeline = runtimeTypes.partial({ + savedObjectId: runtimeTypes.string, + version: runtimeTypes.string, + code: unionWithNullType(runtimeTypes.number), + message: unionWithNullType(runtimeTypes.string), + templateTimelineId: unionWithNullType(runtimeTypes.string), + templateTimelineVersion: unionWithNullType(runtimeTypes.number), + timelineType: unionWithNullType(TimelineTypeLiteralRt), + favorite: unionWithNullType(runtimeTypes.array(favoriteTimelineResult)), +}); + +export type ResponseFavoriteTimeline = runtimeTypes.TypeOf; + +export const getTimelinesArgs = runtimeTypes.partial({ + onlyUserFavorite: unionWithNullType(runtimeTypes.boolean), + pageInfo: unionWithNullType(pageInfoTimeline), + search: unionWithNullType(runtimeTypes.string), + sort: unionWithNullType(sortTimeline), + status: unionWithNullType(TimelineStatusLiteralRt), + timelineType: unionWithNullType(TimelineTypeLiteralRt), +}); + +export type GetTimelinesArgs = runtimeTypes.TypeOf; + +const responseTimelines = runtimeTypes.type({ + timeline: runtimeTypes.array(TimelineSavedToReturnObjectRuntimeType), + totalCount: runtimeTypes.number, +}); + +export type ResponseTimelines = runtimeTypes.TypeOf; + +export const allTimelinesResponse = runtimeTypes.intersection([ + responseTimelines, + runtimeTypes.type({ + defaultTimelineCount: runtimeTypes.number, + templateTimelineCount: runtimeTypes.number, + elasticTemplateTimelineCount: runtimeTypes.number, + customTemplateTimelineCount: runtimeTypes.number, + favoriteCount: runtimeTypes.number, + }), +]); + +export type AllTimelinesResponse = runtimeTypes.TypeOf; + +export interface PageInfoTimeline { + pageIndex: number; + + pageSize: number; +} + +export interface ColumnHeaderResult { + aggregatable?: Maybe; + category?: Maybe; + columnHeaderType?: Maybe; + description?: Maybe; + example?: Maybe; + indexes?: Maybe; + id?: Maybe; + name?: Maybe; + placeholder?: Maybe; + searchable?: Maybe; + type?: Maybe; +} + +export interface DataProviderResult { + id?: Maybe; + name?: Maybe; + enabled?: Maybe; + excluded?: Maybe; + kqlQuery?: Maybe; + queryMatch?: Maybe; + type?: Maybe; + and?: Maybe; +} + +export interface QueryMatchResult { + field?: Maybe; + displayField?: Maybe; + value?: Maybe; + displayValue?: Maybe; + operator?: Maybe; +} + +export interface DateRangePickerResult { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + start?: Maybe; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + end?: Maybe; +} + +export interface EqlOptionsResult { + eventCategoryField?: Maybe; + tiebreakerField?: Maybe; + timestampField?: Maybe; + query?: Maybe; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + size?: Maybe; +} + +export interface FilterTimelineResult { + exists?: Maybe; + meta?: Maybe; + match_all?: Maybe; + missing?: Maybe; + query?: Maybe; + range?: Maybe; + script?: Maybe; +} + +export interface FilterMetaTimelineResult { + alias?: Maybe; + controlledBy?: Maybe; + disabled?: Maybe; + field?: Maybe; + formattedValue?: Maybe; + index?: Maybe; + key?: Maybe; + negate?: Maybe; + params?: Maybe; + type?: Maybe; + value?: Maybe; +} + +export interface SerializedFilterQueryResult { + filterQuery?: Maybe; +} + +export interface SerializedKueryQueryResult { + kuery?: Maybe; + serializedQuery?: Maybe; +} + +export interface KueryFilterQueryResult { + kind?: Maybe; + expression?: Maybe; +} + +export interface TimelineResult { + columns?: Maybe; + created?: Maybe; + createdBy?: Maybe; + dataProviders?: Maybe; + dateRange?: Maybe; + description?: Maybe; + eqlOptions?: Maybe; + eventIdToNoteIds?: Maybe; + eventType?: Maybe; + excludedRowRendererIds?: Maybe; + favorite?: Maybe; + filters?: Maybe; + kqlMode?: Maybe; + kqlQuery?: Maybe; + indexNames?: Maybe; + notes?: Maybe; + noteIds?: Maybe; + pinnedEventIds?: Maybe; + pinnedEventsSaveObject?: Maybe; + savedQueryId?: Maybe; + savedObjectId: string; + sort?: Maybe; + status?: Maybe; + title?: Maybe; + templateTimelineId?: Maybe; + templateTimelineVersion?: Maybe; + timelineType?: Maybe; + updated?: Maybe; + updatedBy?: Maybe; + version: string; +} + +export interface ResponseTimeline { + code?: Maybe; + message?: Maybe; + timeline: TimelineResult; +} +export interface SortTimeline { + sortField: SortFieldTimeline; + sortOrder: Direction; +} + +export interface GetAllTimelineVariables { + pageInfo: PageInfoTimeline; + search?: Maybe; + sort?: Maybe; + onlyUserFavorite?: Maybe; + timelineType?: Maybe; + status?: Maybe; +} diff --git a/x-pack/plugins/security_solution/common/types/timeline/note/index.ts b/x-pack/plugins/security_solution/common/types/timeline/note/index.ts index 1a97a59444a56..074e4132efdff 100644 --- a/x-pack/plugins/security_solution/common/types/timeline/note/index.ts +++ b/x-pack/plugins/security_solution/common/types/timeline/note/index.ts @@ -8,6 +8,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ import * as runtimeTypes from 'io-ts'; +import { Direction, Maybe } from '../../../search_strategy/common'; import { unionWithNullType } from '../../../utility_types'; @@ -63,3 +64,64 @@ export const NoteSavedObjectToReturnRuntimeType = runtimeTypes.intersection([ export interface NoteSavedObject extends runtimeTypes.TypeOf {} + +export enum SortFieldNote { + updatedBy = 'updatedBy', + updated = 'updated', +} + +export const pageInfoNoteRt = runtimeTypes.type({ + pageIndex: runtimeTypes.number, + pageSize: runtimeTypes.number, +}); + +export type PageInfoNote = runtimeTypes.TypeOf; + +export const sortNoteRt = runtimeTypes.type({ + sortField: runtimeTypes.union([ + runtimeTypes.literal(SortFieldNote.updatedBy), + runtimeTypes.literal(SortFieldNote.updated), + ]), + sortOrder: runtimeTypes.union([ + runtimeTypes.literal(Direction.asc), + runtimeTypes.literal(Direction.desc), + ]), +}); + +export type SortNote = runtimeTypes.TypeOf; + +export interface NoteResult { + eventId?: Maybe; + + note?: Maybe; + + timelineId?: Maybe; + + noteId: string; + + created?: Maybe; + + createdBy?: Maybe; + + timelineVersion?: Maybe; + + updated?: Maybe; + + updatedBy?: Maybe; + + version?: Maybe; +} + +export interface ResponseNotes { + notes: NoteResult[]; + + totalCount?: Maybe; +} + +export interface ResponseNote { + code?: Maybe; + + message?: Maybe; + + note: NoteResult; +} diff --git a/x-pack/plugins/security_solution/common/types/timeline/pinned_event/index.ts b/x-pack/plugins/security_solution/common/types/timeline/pinned_event/index.ts index ba6ac673aa7d4..dbb19df7a6b05 100644 --- a/x-pack/plugins/security_solution/common/types/timeline/pinned_event/index.ts +++ b/x-pack/plugins/security_solution/common/types/timeline/pinned_event/index.ts @@ -8,6 +8,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ import * as runtimeTypes from 'io-ts'; +import { Maybe } from '../../../search_strategy/common'; import { unionWithNullType } from '../../../utility_types'; @@ -58,3 +59,27 @@ export const PinnedEventToReturnSavedObjectRuntimeType = runtimeTypes.intersecti export interface PinnedEventSavedObject extends runtimeTypes.TypeOf {} + +export interface PinnedEvent { + code?: Maybe; + + message?: Maybe; + + pinnedEventId: string; + + eventId?: Maybe; + + timelineId?: Maybe; + + timelineVersion?: Maybe; + + created?: Maybe; + + createdBy?: Maybe; + + updated?: Maybe; + + updatedBy?: Maybe; + + version?: Maybe; +} diff --git a/x-pack/plugins/security_solution/cypress/tasks/api_calls/notes.ts b/x-pack/plugins/security_solution/cypress/tasks/api_calls/notes.ts index 0fc1a86395605..83651a0cbfd0b 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/api_calls/notes.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/api_calls/notes.ts @@ -7,17 +7,12 @@ export const addNoteToTimeline = (note: string, timelineId: string) => cy.request({ - method: 'POST', - url: '/api/solutions/security/graphql', + method: 'PATCH', + url: '/api/note', body: { - operationName: 'PersistTimelineNoteMutation', - variables: { - noteId: null, - version: null, - note: { note, timelineId }, - }, - query: - 'mutation PersistTimelineNoteMutation($noteId: ID, $version: String, $note: NoteInput!) {\n persistNote(noteId: $noteId, version: $version, note: $note) {\n code\n message\n note {\n eventId\n note\n timelineId\n timelineVersion\n noteId\n created\n createdBy\n updated\n updatedBy\n version\n __typename\n }\n __typename\n }\n}\n', + noteId: null, + version: null, + note: { note, timelineId }, }, headers: { 'kbn-xsrf': 'cypress-creds' }, }); diff --git a/x-pack/plugins/security_solution/cypress/tasks/api_calls/timelines.ts b/x-pack/plugins/security_solution/cypress/tasks/api_calls/timelines.ts index 4cfd1e7f89986..453c2db8afd65 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/api_calls/timelines.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/api_calls/timelines.ts @@ -98,13 +98,9 @@ export const createTimelineTemplate = (timeline: CompleteTimeline) => export const deleteTimeline = (timelineId: string) => { cy.request({ method: 'POST', - url: 'api/solutions/security/graphql', + url: 'api/timeline', body: { - operationName: 'DeleteTimelineMutation', - variables: { - id: [timelineId], - }, - query: 'mutation DeleteTimelineMutation($id: [ID!]!) {\n deleteTimeline(id: $id)\n}\n', + id: [timelineId], }, headers: { 'kbn-xsrf': 'delete-signals' }, }); @@ -112,15 +108,7 @@ export const deleteTimeline = (timelineId: string) => { export const getTimelineById = (timelineId: string) => cy.request({ - method: 'POST', - url: 'api/solutions/security/graphql', - body: { - operationName: 'GetOneTimeline', - variables: { - id: timelineId, - }, - query: - 'query GetOneTimeline($id: ID!, $timelineType: TimelineType) {\n getOneTimeline(id: $id, timelineType: $timelineType) {\n savedObjectId\n columns {\n aggregatable\n category\n columnHeaderType\n description\n example\n indexes\n id\n name\n searchable\n type\n __typename\n }\n dataProviders {\n id\n name\n enabled\n excluded\n kqlQuery\n type\n queryMatch {\n field\n displayField\n value\n displayValue\n operator\n __typename\n }\n and {\n id\n name\n enabled\n excluded\n kqlQuery\n type\n queryMatch {\n field\n displayField\n value\n displayValue\n operator\n __typename\n }\n __typename\n }\n __typename\n }\n dateRange {\n start\n end\n __typename\n }\n description\n eventType\n eventIdToNoteIds {\n eventId\n note\n timelineId\n noteId\n created\n createdBy\n timelineVersion\n updated\n updatedBy\n version\n __typename\n }\n excludedRowRendererIds\n favorite {\n fullName\n userName\n favoriteDate\n __typename\n }\n filters {\n meta {\n alias\n controlledBy\n disabled\n field\n formattedValue\n index\n key\n negate\n params\n type\n value\n __typename\n }\n query\n exists\n match_all\n missing\n range\n script\n __typename\n }\n kqlMode\n kqlQuery {\n filterQuery {\n kuery {\n kind\n expression\n __typename\n }\n serializedQuery\n __typename\n }\n __typename\n }\n indexNames\n notes {\n eventId\n note\n timelineId\n timelineVersion\n noteId\n created\n createdBy\n updated\n updatedBy\n version\n __typename\n }\n noteIds\n pinnedEventIds\n pinnedEventsSaveObject {\n pinnedEventId\n eventId\n timelineId\n created\n createdBy\n updated\n updatedBy\n version\n __typename\n }\n status\n title\n timelineType\n templateTimelineId\n templateTimelineVersion\n savedQueryId\n sort\n created\n createdBy\n updated\n updatedBy\n version\n __typename\n }\n}\n', - }, + method: 'GET', + url: `api/timeline?id=${timelineId}`, headers: { 'kbn-xsrf': 'timeline-by-id' }, }); diff --git a/x-pack/plugins/security_solution/public/app/app.tsx b/x-pack/plugins/security_solution/public/app/app.tsx index 451e29543fa03..0917354894834 100644 --- a/x-pack/plugins/security_solution/public/app/app.tsx +++ b/x-pack/plugins/security_solution/public/app/app.tsx @@ -7,7 +7,6 @@ import { History } from 'history'; import React, { memo, FC } from 'react'; -import { ApolloProvider } from 'react-apollo'; import { Store, Action } from 'redux'; import { Provider as ReduxStoreProvider } from 'react-redux'; @@ -19,30 +18,22 @@ import { DEFAULT_DARK_MODE, APP_NAME } from '../../common/constants'; import { ErrorToastDispatcher } from '../common/components/error_toast_dispatcher'; import { MlCapabilitiesProvider } from '../common/components/ml/permissions/ml_capabilities_provider'; import { GlobalToaster, ManageGlobalToaster } from '../common/components/toasters'; -import { AppFrontendLibs } from '../common/lib/lib'; import { KibanaContextProvider, useKibana, useUiSetting$ } from '../common/lib/kibana'; import { State } from '../common/store'; -import { ApolloClientContext } from '../common/utils/apollo_context'; import { ManageGlobalTimeline } from '../timelines/components/manage_timeline'; import { StartServices } from '../types'; import { PageRouter } from './routes'; import { EuiThemeProvider } from '../../../../../src/plugins/kibana_react/common'; -interface StartAppComponent extends AppFrontendLibs { +interface StartAppComponent { children: React.ReactNode; history: History; onAppLeave: (handler: AppLeaveHandler) => void; store: Store; } -const StartAppComponent: FC = ({ - children, - apolloClient, - history, - onAppLeave, - store, -}) => { +const StartAppComponent: FC = ({ children, history, onAppLeave, store }) => { const { i18n } = useKibana().services; const [darkMode] = useUiSetting$(DEFAULT_DARK_MODE); @@ -52,21 +43,17 @@ const StartAppComponent: FC = ({ - - - - - - - {children} - - - - - - - - + + + + + {children} + + + + + + @@ -77,7 +64,7 @@ const StartAppComponent: FC = ({ const StartApp = memo(StartAppComponent); -interface SecurityAppComponentProps extends AppFrontendLibs { +interface SecurityAppComponentProps { children: React.ReactNode; history: History; onAppLeave: (handler: AppLeaveHandler) => void; @@ -87,7 +74,6 @@ interface SecurityAppComponentProps extends AppFrontendLibs { const SecurityAppComponent: React.FC = ({ children, - apolloClient, history, onAppLeave, services, @@ -99,7 +85,7 @@ const SecurityAppComponent: React.FC = ({ ...services, }} > - + {children} diff --git a/x-pack/plugins/security_solution/public/app/index.tsx b/x-pack/plugins/security_solution/public/app/index.tsx index dadba699bd243..1e304c2686960 100644 --- a/x-pack/plugins/security_solution/public/app/index.tsx +++ b/x-pack/plugins/security_solution/public/app/index.tsx @@ -12,7 +12,6 @@ import { SecurityApp } from './app'; import { RenderAppProps } from './types'; export const renderApp = ({ - apolloClient, element, history, onAppLeave, @@ -21,13 +20,7 @@ export const renderApp = ({ SubPluginRoutes, }: RenderAppProps): (() => void) => { render( - + , element diff --git a/x-pack/plugins/security_solution/public/app/types.ts b/x-pack/plugins/security_solution/public/app/types.ts index 95e64fe37d333..a617c6f14b9c4 100644 --- a/x-pack/plugins/security_solution/public/app/types.ts +++ b/x-pack/plugins/security_solution/public/app/types.ts @@ -19,12 +19,11 @@ import { import { AppMountParameters, AppSearchDeepLink } from '../../../../../src/core/public'; import { StartServices } from '../types'; -import { AppFrontendLibs } from '../common/lib/lib'; /** * The React properties used to render `SecurityApp` as well as the `element` to render it into. */ -export interface RenderAppProps extends AppFrontendLibs, AppMountParameters { +export interface RenderAppProps extends AppMountParameters { services: StartServices; store: Store; SubPluginRoutes: React.FC; diff --git a/x-pack/plugins/security_solution/public/cases/components/user_action_tree/user_action_markdown.test.tsx b/x-pack/plugins/security_solution/public/cases/components/user_action_tree/user_action_markdown.test.tsx index 597566639a8d7..0b3915c3d38d4 100644 --- a/x-pack/plugins/security_solution/public/cases/components/user_action_tree/user_action_markdown.test.tsx +++ b/x-pack/plugins/security_solution/public/cases/components/user_action_tree/user_action_markdown.test.tsx @@ -11,9 +11,6 @@ import { Router, mockHistory } from '../__mock__/router'; import { UserActionMarkdown } from './user_action_markdown'; import { TestProviders } from '../../../common/mock'; import * as timelineHelpers from '../../../timelines/components/open_timeline/helpers'; -import { useApolloClient } from '../../../common/utils/apollo_context'; -const mockUseApolloClient = useApolloClient as jest.Mock; -jest.mock('../../../common/utils/apollo_context'); const onChangeEditable = jest.fn(); const onSaveContent = jest.fn(); @@ -30,7 +27,6 @@ const defaultProps = { describe('UserActionMarkdown ', () => { const queryTimelineByIdSpy = jest.spyOn(timelineHelpers, 'queryTimelineById'); beforeEach(() => { - mockUseApolloClient.mockClear(); jest.resetAllMocks(); }); @@ -49,7 +45,6 @@ describe('UserActionMarkdown ', () => { .simulate('click'); expect(queryTimelineByIdSpy).toBeCalledWith({ - apolloClient: mockUseApolloClient(), graphEventId: '', timelineId, updateIsLoading: expect.any(Function), @@ -79,7 +74,6 @@ describe('UserActionMarkdown ', () => { .first() .simulate('click'); expect(queryTimelineByIdSpy).toBeCalledWith({ - apolloClient: mockUseApolloClient(), graphEventId: '', timelineId, updateIsLoading: expect.any(Function), diff --git a/x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.test.tsx index 1b812c6e81e82..66b8c00879b1c 100644 --- a/x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/add_filter_to_global_search_bar/index.test.tsx @@ -9,7 +9,6 @@ import { mount, shallow } from 'enzyme'; import React from 'react'; import { waitFor } from '@testing-library/react'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -37,23 +36,11 @@ jest.mock('../../lib/kibana', () => ({ describe('AddFilterToGlobalSearchBar Component', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { jest.useFakeTimers(); - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); mockAddFilters.mockClear(); }); diff --git a/x-pack/plugins/security_solution/public/common/components/error_toast_dispatcher/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/error_toast_dispatcher/index.test.tsx index b58ecbdd3349d..98be87c737d58 100644 --- a/x-pack/plugins/security_solution/public/common/components/error_toast_dispatcher/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/error_toast_dispatcher/index.test.tsx @@ -10,7 +10,6 @@ import React from 'react'; import { Provider } from 'react-redux'; import { - apolloClientObservable, mockGlobalState, SUB_PLUGINS_REDUCER, kibanaObservable, @@ -24,22 +23,10 @@ import { State } from '../../store/types'; describe('Error Toast Dispatcher', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); describe('rendering', () => { diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx index a62b652492c5f..836a67441ef8a 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx @@ -21,7 +21,6 @@ import styled from 'styled-components'; import { onFocusReFocusDraggable } from '../accessibility/helpers'; import { BrowserFields } from '../../containers/source'; -import { ToStringArray } from '../../../graphql/types'; import { ColumnHeaderOptions } from '../../../timelines/store/timeline/model'; import { DragEffects } from '../drag_and_drop/draggable_wrapper'; import { DroppableWrapper } from '../drag_and_drop/droppable_wrapper'; @@ -175,7 +174,7 @@ export const getColumns = ({ name: i18n.VALUE, sortable: true, truncateText: false, - render: (values: ToStringArray | null | undefined, data: EventFieldsData) => ( + render: (values: string[] | null | undefined, data: EventFieldsData) => ( Promise; +}: ExportDocumentsProps) => Promise; export interface GenericDownloaderProps { filename: string; diff --git a/x-pack/plugins/security_solution/public/common/components/inspect/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/inspect/index.test.tsx index 2a7b7811a2de8..6f3e28469a949 100644 --- a/x-pack/plugins/security_solution/public/common/components/inspect/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/inspect/index.test.tsx @@ -11,7 +11,6 @@ import React from 'react'; import { TestProviders, mockGlobalState, - apolloClientObservable, SUB_PLUGINS_REDUCER, kibanaObservable, createSecuritySolutionStorageMock, @@ -35,25 +34,13 @@ describe('Inspect Button', () => { state: state.inputs, }; - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); describe('Render', () => { beforeEach(() => { const myState = cloneDeep(state); myState.inputs = upsertQuery(newQuery); - store = createStore( - myState, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(myState, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); test('Eui Empty Button', () => { const wrapper = mount( @@ -157,13 +144,7 @@ describe('Inspect Button', () => { response: ['my response'], }; myState.inputs = upsertQuery(myQuery); - store = createStore( - myState, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(myState, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); test('Open Inspect Modal', () => { const wrapper = mount( diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.test.ts b/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.test.ts index e2b5a131a7954..e5d395561cc0a 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.test.ts +++ b/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.test.ts @@ -7,7 +7,7 @@ import { getCriteriaFromNetworkType } from './get_criteria_from_network_type'; import { NetworkType } from '../../../../network/store/model'; -import { FlowTarget } from '../../../../graphql/types'; +import { FlowTarget } from '../../../../../common/search_strategy'; describe('get_criteria_from_network_type', () => { test('returns network names from criteria if the network type is details and it is source', () => { diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.ts b/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.ts index 0bc42690f67bd..84fd7bd9d42d8 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.ts +++ b/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.ts @@ -7,7 +7,7 @@ import { CriteriaFields } from '../types'; import { NetworkType } from '../../../../network/store/model'; -import { FlowTarget } from '../../../../graphql/types'; +import { FlowTarget } from '../../../../../common/search_strategy'; export const getCriteriaFromNetworkType = ( type: NetworkType, diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.test.ts b/x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.test.ts index 16e4150845b70..f9122038e989e 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.test.ts +++ b/x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FlowTarget } from '../../../../graphql/types'; +import { FlowTarget } from '../../../../../common/search_strategy'; import { CriteriaFields } from '../types'; import { networkToCriteria } from './network_to_criteria'; diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.ts b/x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.ts index 72828be7e4877..10a2606a7545e 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.ts +++ b/x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.ts @@ -5,8 +5,8 @@ * 2.0. */ +import { FlowTarget } from '../../../../../common/search_strategy'; import { CriteriaFields } from '../types'; -import { FlowTarget } from '../../../../graphql/types'; export const networkToCriteria = (ip: string, flowTarget: FlowTarget): CriteriaFields[] => { if (flowTarget === FlowTarget.source) { diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx index a2741331756ac..bc383ccefa453 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx @@ -24,7 +24,7 @@ import { ExplorerLink } from '../links/create_explorer_link'; import { FormattedRelativePreferenceDate } from '../../formatted_date'; import { NetworkType } from '../../../../network/store/model'; import { escapeDataProviderId } from '../../drag_and_drop/helpers'; -import { FlowTarget } from '../../../../graphql/types'; +import { FlowTarget } from '../../../../../common/search_strategy'; export const getAnomaliesNetworkTableColumns = ( startDate: string, diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/network_equality.test.ts b/x-pack/plugins/security_solution/public/common/components/ml/tables/network_equality.test.ts index 4ab2b8cf44a0e..dd85d9fedab01 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/tables/network_equality.test.ts +++ b/x-pack/plugins/security_solution/public/common/components/ml/tables/network_equality.test.ts @@ -8,7 +8,7 @@ import { networkEquality } from './network_equality'; import { AnomaliesNetworkTableProps } from '../types'; import { NetworkType } from '../../../../network/store/model'; -import { FlowTarget } from '../../../../graphql/types'; +import { FlowTarget } from '../../../../../common/search_strategy'; describe('network_equality', () => { test('it returns true if start and end date are equal', () => { diff --git a/x-pack/plugins/security_solution/public/common/components/ml/types.ts b/x-pack/plugins/security_solution/public/common/components/ml/types.ts index 51da87e571e52..494c8a522ffac 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/ml/types.ts @@ -6,10 +6,10 @@ */ import { Influencer } from '../../../../../ml/public'; +import { FlowTarget } from '../../../../common/search_strategy'; import { HostsType } from '../../../hosts/store/model'; import { NetworkType } from '../../../network/store/model'; -import { FlowTarget } from '../../../graphql/types'; export interface Source { job_id: string; diff --git a/x-pack/plugins/security_solution/public/common/components/paginated_table/helpers.ts b/x-pack/plugins/security_solution/public/common/components/paginated_table/helpers.ts index 8c8f8d0acebc0..1e7b1c749c004 100644 --- a/x-pack/plugins/security_solution/public/common/components/paginated_table/helpers.ts +++ b/x-pack/plugins/security_solution/public/common/components/paginated_table/helpers.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { PaginationInputPaginated } from '../../../graphql/types'; +import { PaginationInputPaginated } from '../../../../common/search_strategy'; export const generateTablePaginationOptions = ( activePage: number, diff --git a/x-pack/plugins/security_solution/public/common/components/paginated_table/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/paginated_table/index.test.tsx index 3439bb0a7ddb3..64c3584bc668c 100644 --- a/x-pack/plugins/security_solution/public/common/components/paginated_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/paginated_table/index.test.tsx @@ -9,12 +9,12 @@ import { mount, shallow } from 'enzyme'; import React from 'react'; import { DEFAULT_MAX_TABLE_QUERY_SIZE } from '../../../../common/constants'; -import { Direction } from '../../../graphql/types'; import { BasicTableProps, PaginatedTable } from './index'; import { getHostsColumns, mockData, rowItems, sortedHosts } from './index.mock'; import { ThemeProvider } from 'styled-components'; import { getMockTheme } from '../../lib/kibana/kibana_react.mock'; +import { Direction } from '../../../../common/search_strategy'; jest.mock('react', () => { const r = jest.requireActual('react'); diff --git a/x-pack/plugins/security_solution/public/common/components/sourcerer/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/sourcerer/index.test.tsx index 3729f9dcdf68b..e8f382a5050d8 100644 --- a/x-pack/plugins/security_solution/public/common/components/sourcerer/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/sourcerer/index.test.tsx @@ -12,7 +12,6 @@ import { Sourcerer } from './index'; import { DEFAULT_INDEX_PATTERN } from '../../../../common/constants'; import { sourcererActions, sourcererModel } from '../../store/sourcerer'; import { - apolloClientObservable, createSecuritySolutionStorageMock, kibanaObservable, mockGlobalState, @@ -53,22 +52,10 @@ describe('Sourcerer component', () => { }); const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); // Using props callback instead of simulating clicks, @@ -100,13 +87,7 @@ describe('Sourcerer component', () => { }, }; - store = createStore( - state2, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state2, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const wrapper = mount( @@ -154,7 +135,6 @@ describe('Sourcerer component', () => { }, }, SUB_PLUGINS_REDUCER, - apolloClientObservable, kibanaObservable, storage ); @@ -185,7 +165,6 @@ describe('Sourcerer component', () => { }, }, SUB_PLUGINS_REDUCER, - apolloClientObservable, kibanaObservable, storage ); @@ -209,7 +188,6 @@ describe('Sourcerer component', () => { }, }, SUB_PLUGINS_REDUCER, - apolloClientObservable, kibanaObservable, storage ); @@ -251,7 +229,6 @@ describe('Sourcerer component', () => { }, }, SUB_PLUGINS_REDUCER, - apolloClientObservable, kibanaObservable, storage ); diff --git a/x-pack/plugins/security_solution/public/common/components/stat_items/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/stat_items/index.test.tsx index 4c4cc1f838a50..e2961de91c448 100644 --- a/x-pack/plugins/security_solution/public/common/components/stat_items/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/stat_items/index.test.tsx @@ -31,7 +31,6 @@ import { mockNarrowDateRange, } from '../../../network/components/kpi_network/mock'; import { - apolloClientObservable, createSecuritySolutionStorageMock, kibanaObservable, mockGlobalState, @@ -60,13 +59,7 @@ describe('Stat Items Component', () => { const mockTheme = getMockTheme({ eui: { euiColorMediumShade: '#ece' } }); const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - const store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + const store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); describe.each([ [ diff --git a/x-pack/plugins/security_solution/public/common/components/super_date_picker/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/super_date_picker/index.test.tsx index 5af5b81c75cd6..7cc0b80b51f80 100644 --- a/x-pack/plugins/security_solution/public/common/components/super_date_picker/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/super_date_picker/index.test.tsx @@ -12,7 +12,6 @@ import { Provider as ReduxStoreProvider } from 'react-redux'; import { DEFAULT_TIMEPICKER_QUICK_RANGES } from '../../../../common/constants'; import { useUiSetting$ } from '../../lib/kibana'; import { - apolloClientObservable, mockGlobalState, SUB_PLUGINS_REDUCER, kibanaObservable, @@ -83,23 +82,11 @@ describe('SIEM Super Date Picker', () => { describe('#SuperDatePicker', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { jest.clearAllMocks(); - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); mockUseUiSetting$.mockImplementation((key, defaultValue) => { const useUiSetting$Mock = createUseUiSetting$Mock(); diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx index 0b5e07488ff2a..005602738f376 100644 --- a/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx @@ -11,7 +11,6 @@ import { waitFor } from '@testing-library/react'; import '../../mock/match_media'; import { mockBrowserFields } from '../../containers/source/mock'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -157,13 +156,7 @@ const state: State = { }; const { storage } = createSecuritySolutionStorageMock(); -const store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage -); +const store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); let testProps = { browserFields: mockBrowserFields, diff --git a/x-pack/plugins/security_solution/public/common/components/url_state/initialize_redux_by_url.tsx b/x-pack/plugins/security_solution/public/common/components/url_state/initialize_redux_by_url.tsx index 56a6dd089cf05..a2d5076031328 100644 --- a/x-pack/plugins/security_solution/public/common/components/url_state/initialize_redux_by_url.tsx +++ b/x-pack/plugins/security_solution/public/common/components/url_state/initialize_redux_by_url.tsx @@ -29,7 +29,6 @@ import { SecurityPageName } from '../../../../common/constants'; export const dispatchSetInitialStateFromUrl = ( dispatch: Dispatch ): DispatchSetInitialStateFromUrl => ({ - apolloClient, detailName, filterManager, indexPattern, @@ -99,7 +98,6 @@ export const dispatchSetInitialStateFromUrl = ( if (timeline != null && timeline.id !== '') { queryTimelineById({ activeTimelineTab: timeline.activeTab, - apolloClient, duplicate: false, graphEventId: timeline.graphEventId, timelineId: timeline.id, diff --git a/x-pack/plugins/security_solution/public/common/components/url_state/types.ts b/x-pack/plugins/security_solution/public/common/components/url_state/types.ts index 8e41514d416ec..1a8d512d211e6 100644 --- a/x-pack/plugins/security_solution/public/common/components/url_state/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/url_state/types.ts @@ -5,7 +5,6 @@ * 2.0. */ -import ApolloClient from 'apollo-client'; import * as H from 'history'; import { ActionCreator } from 'typescript-fsa'; import { @@ -148,7 +147,6 @@ export interface UrlStateToRedux { } export interface SetInitialStateFromUrl { - apolloClient: ApolloClient | ApolloClient<{}> | undefined; detailName: string | undefined; filterManager: FilterManager; indexPattern: IIndexPattern | undefined; @@ -160,7 +158,6 @@ export interface SetInitialStateFromUrl { } export type DispatchSetInitialStateFromUrl = ({ - apolloClient, detailName, indexPattern, pageName, diff --git a/x-pack/plugins/security_solution/public/common/components/url_state/use_url_state.tsx b/x-pack/plugins/security_solution/public/common/components/url_state/use_url_state.tsx index 84f74434cbcd0..7785fa6af2569 100644 --- a/x-pack/plugins/security_solution/public/common/components/url_state/use_url_state.tsx +++ b/x-pack/plugins/security_solution/public/common/components/url_state/use_url_state.tsx @@ -10,7 +10,6 @@ import { useEffect, useRef, useState } from 'react'; import deepEqual from 'fast-deep-equal'; import { useKibana } from '../../lib/kibana'; -import { useApolloClient } from '../../utils/apollo_context'; import { CONSTANTS, UrlStateType } from './constants'; import { getQueryStringFromLocation, @@ -70,7 +69,6 @@ export const useUrlStateHooks = ({ urlState, }: UrlStateContainerPropTypes) => { const [isInitializing, setIsInitializing] = useState(true); - const apolloClient = useApolloClient(); const { filterManager, savedQueries } = useKibana().services.data.query; const prevProps = usePrevious({ pathName, pageName, urlState }); @@ -161,7 +159,6 @@ export const useUrlStateHooks = ({ }); setInitialStateFromUrl({ - apolloClient, detailName, filterManager, indexPattern, diff --git a/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts b/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts index a50894ad278f3..2d3bb00501da5 100644 --- a/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts +++ b/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts @@ -9,9 +9,9 @@ import { ESTermQuery } from '../../../../../common/typed_json'; import { NarrowDateRange } from '../../../components/ml/types'; import { UpdateDateRange } from '../../../components/charts/common'; import { GlobalTimeArgs } from '../../use_global_time'; -import { FlowTarget } from '../../../../graphql/types'; import { HostsType } from '../../../../hosts/store/model'; import { NetworkType } from '../../../../network/store//model'; +import { FlowTarget } from '../../../../../common/search_strategy'; interface QueryTabBodyProps { type: HostsType | NetworkType; diff --git a/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/utils.ts b/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/utils.ts index ed0be60f22516..9a9b5b13137e6 100644 --- a/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/utils.ts +++ b/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/utils.ts @@ -8,9 +8,9 @@ import deepmerge from 'deepmerge'; import { MlSummaryJob } from '../../../../../../ml/public'; +import { FlowTarget } from '../../../../../common/search_strategy'; import { ESTermQuery } from '../../../../../common/typed_json'; import { createFilter } from '../../helpers'; -import { FlowTarget } from '../../../../graphql/types'; export const getAnomaliesFilterQuery = ( filterQuery: string | ESTermQuery | undefined, diff --git a/x-pack/plugins/security_solution/public/common/containers/errors/index.test.tsx b/x-pack/plugins/security_solution/public/common/containers/errors/index.test.tsx deleted file mode 100644 index 822c936206333..0000000000000 --- a/x-pack/plugins/security_solution/public/common/containers/errors/index.test.tsx +++ /dev/null @@ -1,108 +0,0 @@ -/* - * 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 { reTryOneTimeOnErrorHandler, errorLinkHandler } from '.'; -import { ServerError } from 'apollo-link-http-common'; -import { Operation } from 'apollo-link'; -import { GraphQLError } from 'graphql'; -import * as store from '../../store'; -import { onError } from 'apollo-link-error'; - -const mockDispatch = jest.fn(); -jest.mock('apollo-link-error'); -jest.mock('../../store'); -(store.getStore as jest.Mock).mockReturnValue({ dispatch: mockDispatch }); - -describe('errorLinkHandler', () => { - const mockGraphQLErrors: GraphQLError = { - message: 'GraphQLError', - } as GraphQLError; - const mockNetworkError: ServerError = { - result: {}, - statusCode: 503, - name: '', - message: 'error', - response: { - ok: false, - } as Response, - }; - const mockOperation: Operation = {} as Operation; - const mockForward = jest.fn(); - - afterEach(() => { - mockDispatch.mockClear(); - }); - - test('it should display error if graphQLErrors exist', () => { - errorLinkHandler({ - graphQLErrors: [mockGraphQLErrors], - operation: mockOperation, - forward: mockForward, - }); - - expect(store.getStore).toBeCalled(); - expect(mockDispatch.mock.calls.length).toBe(1); - }); - - test('it should display error if networkError exist', () => { - errorLinkHandler({ - networkError: mockNetworkError, - operation: mockOperation, - forward: mockForward, - }); - - expect(store.getStore).toBeCalled(); - expect(mockDispatch.mock.calls.length).toBe(1); - }); -}); - -describe('errorLink', () => { - test('onError should be called with errorLinkHandler', () => { - expect(onError).toHaveBeenCalledWith(errorLinkHandler); - }); -}); - -describe('reTryOneTimeOnErrorHandler', () => { - const mockNetworkError: ServerError = { - result: {}, - statusCode: 503, - name: '', - message: 'error', - response: { - ok: false, - } as Response, - }; - const mockOperation: Operation = {} as Operation; - const mockForward = jest.fn(); - - afterEach(() => { - mockForward.mockClear(); - }); - test('it should retry only if network status code is 503', () => { - reTryOneTimeOnErrorHandler({ - networkError: mockNetworkError, - operation: mockOperation, - forward: mockForward, - }); - expect(mockForward).toBeCalledWith(mockOperation); - }); - - test('it should not retry if other error happens', () => { - reTryOneTimeOnErrorHandler({ - networkError: { ...mockNetworkError, statusCode: 500 }, - operation: mockOperation, - forward: mockForward, - }); - expect(mockForward).not.toBeCalled(); - }); -}); - -describe('reTryOneTimeOnErrorLink', () => { - test('onError should be called with reTryOneTimeOnErrorHandler', () => { - expect(onError).toHaveBeenCalledWith(reTryOneTimeOnErrorHandler); - }); -}); diff --git a/x-pack/plugins/security_solution/public/common/containers/errors/index.tsx b/x-pack/plugins/security_solution/public/common/containers/errors/index.tsx deleted file mode 100644 index f1b3a1b0c4352..0000000000000 --- a/x-pack/plugins/security_solution/public/common/containers/errors/index.tsx +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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 { onError, ErrorLink } from 'apollo-link-error'; -import { get, throttle, noop } from 'lodash/fp'; - -import uuid from 'uuid'; - -import * as i18n from './translations'; - -import { getStore } from '../../store'; -import { appActions } from '../../store/actions'; - -export const errorLinkHandler: ErrorLink.ErrorHandler = ({ graphQLErrors, networkError }) => { - const store = getStore(); - const dispatch = throttle(50, store != null ? store.dispatch : noop); - - if (graphQLErrors != null && store != null) { - dispatch( - appActions.addError({ - id: uuid.v4(), - title: i18n.DATA_FETCH_FAILURE, - message: graphQLErrors.map(({ message }) => message), - }) - ); - } - - if (networkError != null && store != null) { - dispatch( - appActions.addError({ - id: uuid.v4(), - title: i18n.NETWORK_FAILURE, - message: [networkError.message], - }) - ); - } -}; -export const errorLink = onError(errorLinkHandler); - -export const reTryOneTimeOnErrorHandler: ErrorLink.ErrorHandler = ({ - networkError, - operation, - forward, -}) => { - if (networkError != null) { - const statusCode = get('statusCode', networkError); - if (statusCode != null && statusCode === 503) { - return forward(operation); - } - } -}; - -export const reTryOneTimeOnErrorLink = onError(reTryOneTimeOnErrorHandler); diff --git a/x-pack/plugins/security_solution/public/common/containers/errors/translations.ts b/x-pack/plugins/security_solution/public/common/containers/errors/translations.ts deleted file mode 100644 index bec8c98951f28..0000000000000 --- a/x-pack/plugins/security_solution/public/common/containers/errors/translations.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * 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'; - -export const DATA_FETCH_FAILURE = i18n.translate( - 'xpack.securitySolution.containers.errors.dataFetchFailureTitle', - { - defaultMessage: 'Data Fetch Failure', - } -); - -export const NETWORK_FAILURE = i18n.translate( - 'xpack.securitySolution.containers.errors.networkFailureTitle', - { - defaultMessage: 'Network Failure', - } -); diff --git a/x-pack/plugins/security_solution/public/common/containers/helpers.ts b/x-pack/plugins/security_solution/public/common/containers/helpers.ts index efc50f4e4d948..f46147ceabf7c 100644 --- a/x-pack/plugins/security_solution/public/common/containers/helpers.ts +++ b/x-pack/plugins/security_solution/public/common/containers/helpers.ts @@ -5,12 +5,9 @@ * 2.0. */ -import { FetchPolicy } from 'apollo-client'; import { isString } from 'lodash/fp'; import { ESQuery } from '../../../common/typed_json'; export const createFilter = (filterQuery: ESQuery | string | undefined) => isString(filterQuery) ? filterQuery : JSON.stringify(filterQuery); - -export const getDefaultFetchPolicy = (): FetchPolicy => 'cache-and-network'; diff --git a/x-pack/plugins/security_solution/public/common/containers/query_template.tsx b/x-pack/plugins/security_solution/public/common/containers/query_template.tsx deleted file mode 100644 index e8c7d2e0ef436..0000000000000 --- a/x-pack/plugins/security_solution/public/common/containers/query_template.tsx +++ /dev/null @@ -1,87 +0,0 @@ -/* - * 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 { ApolloQueryResult } from 'apollo-client'; -import React from 'react'; -import { FetchMoreOptions, FetchMoreQueryOptions, OperationVariables } from 'react-apollo'; - -import { ESQuery } from '../../../common/typed_json'; -import { DocValueFields } from './source'; - -export { DocValueFields }; - -export interface QueryTemplateProps { - indexNames: string[]; - docValueFields?: DocValueFields[]; - id?: string; - endDate?: string; - filterQuery?: ESQuery | string; - skip?: boolean; - sourceId: string; - startDate?: string; -} -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export type FetchMoreOptionsArgs = FetchMoreQueryOptions & - FetchMoreOptions; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -type PromiseApolloQueryResult = Promise>; - -export class QueryTemplate< - T extends QueryTemplateProps, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - TData = any, - TVariables = OperationVariables -> extends React.PureComponent { - private fetchMore!: ( - fetchMoreOptions: FetchMoreOptionsArgs - ) => PromiseApolloQueryResult; - - private fetchMoreOptions!: ( - newCursor: string, - tiebreaker?: string - ) => FetchMoreOptionsArgs; - - private refetch!: (variables?: TVariables) => Promise>; - - private executeBeforeFetchMore!: ({ id }: { id?: string }) => void; - - private executeBeforeRefetch!: ({ id }: { id?: string }) => void; - - public setExecuteBeforeFetchMore = (val: ({ id }: { id?: string }) => void) => { - this.executeBeforeFetchMore = val; - }; - public setExecuteBeforeRefetch = (val: ({ id }: { id?: string }) => void) => { - this.executeBeforeRefetch = val; - }; - - public setFetchMore = ( - val: (fetchMoreOptions: FetchMoreOptionsArgs) => PromiseApolloQueryResult - ) => { - this.fetchMore = val; - }; - - public setFetchMoreOptions = ( - val: (newCursor: string, tiebreaker?: string) => FetchMoreOptionsArgs - ) => { - this.fetchMoreOptions = val; - }; - - public setRefetch = (val: (variables?: TVariables) => Promise>) => { - this.refetch = val; - }; - - public wrappedLoadMore = (newCursor: string, tiebreaker?: string) => { - this.executeBeforeFetchMore({ id: this.props.id }); - return this.fetchMore(this.fetchMoreOptions(newCursor, tiebreaker)); - }; - - public wrappedRefetch = (variables?: TVariables) => { - this.executeBeforeRefetch({ id: this.props.id }); - return this.refetch(variables); - }; -} diff --git a/x-pack/plugins/security_solution/public/common/containers/query_template_paginated.tsx b/x-pack/plugins/security_solution/public/common/containers/query_template_paginated.tsx deleted file mode 100644 index 0dc8aa9abf38f..0000000000000 --- a/x-pack/plugins/security_solution/public/common/containers/query_template_paginated.tsx +++ /dev/null @@ -1,103 +0,0 @@ -/* - * 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 { ApolloQueryResult, NetworkStatus } from 'apollo-client'; -import memoizeOne from 'memoize-one'; -import React from 'react'; -import { FetchMoreOptions, FetchMoreQueryOptions, OperationVariables } from 'react-apollo'; -import deepEqual from 'fast-deep-equal'; - -import { ESQuery } from '../../../common/typed_json'; -import { inputsModel } from '../store/model'; -import { generateTablePaginationOptions } from '../components/paginated_table/helpers'; -import { DocValueFields } from './source'; - -export { DocValueFields }; - -export interface QueryTemplatePaginatedProps { - docValueFields?: DocValueFields[]; - id?: string; - endDate?: string; - filterQuery?: ESQuery | string; - skip?: boolean; - sourceId: string; - startDate?: string; -} -// eslint-disable-next-line @typescript-eslint/no-explicit-any -type FetchMoreOptionsArgs = FetchMoreQueryOptions & - FetchMoreOptions; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -type PromiseApolloQueryResult = Promise>; - -export class QueryTemplatePaginated< - T extends QueryTemplatePaginatedProps, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - TData = any, - TVariables = OperationVariables -> extends React.PureComponent { - private queryVariables: TVariables | null = null; - private myLoading: boolean = false; - private fetchMore!: ( - fetchMoreOptions: FetchMoreOptionsArgs - ) => PromiseApolloQueryResult; - - private fetchMoreOptions!: (newActivePage: number) => FetchMoreOptionsArgs; - - public memoizedRefetchQuery: ( - variables: TVariables, - limit: number, - refetch: (variables?: TVariables) => Promise> - ) => inputsModel.Refetch; - - constructor(props: T) { - super(props); - this.memoizedRefetchQuery = memoizeOne(this.refetchQuery); - } - - public setFetchMore = ( - val: (fetchMoreOptions: FetchMoreOptionsArgs) => PromiseApolloQueryResult - ) => { - this.fetchMore = val; - }; - - public setFetchMoreOptions = ( - val: (newActivePage: number) => FetchMoreOptionsArgs - ) => { - this.fetchMoreOptions = val; - }; - - public wrappedLoadMore = (newActivePage: number) => { - return this.fetchMore(this.fetchMoreOptions(newActivePage)); - }; - - public refetchQuery = ( - variables: TVariables, - limit: number, - refetch: (variables?: TVariables) => Promise> - ): inputsModel.Refetch => () => { - refetch({ ...variables, pagination: generateTablePaginationOptions(0, limit) }); - }; - - public setPrevVariables(vars: TVariables) { - this.queryVariables = vars; - } - - public isItAValidLoading(loading: boolean, variables: TVariables, networkStatus: NetworkStatus) { - if ( - !this.myLoading && - (!deepEqual(variables, this.queryVariables) || networkStatus === NetworkStatus.refetch) && - loading - ) { - this.myLoading = true; - } else if (this.myLoading && !loading) { - this.myLoading = false; - } - this.setPrevVariables(variables); - return this.myLoading; - } -} diff --git a/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.test.tsx b/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.test.tsx index 7a20c98a8d4bf..542369fdf5aa3 100644 --- a/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.test.tsx @@ -12,7 +12,7 @@ import { act, renderHook } from '@testing-library/react-hooks'; import { Provider } from 'react-redux'; import { useInitSourcerer } from '.'; -import { mockPatterns, mockSource } from './mocks'; +import { mockPatterns } from './mocks'; // import { SourcererScopeName } from '../../store/sourcerer/model'; import { RouteSpyState } from '../../utils/route/types'; import { SecurityPageName } from '../../../../common/constants'; @@ -22,14 +22,12 @@ import { initialState as userInfoState, } from '../../../detections/components/user_info'; import { - apolloClientObservable, createSecuritySolutionStorageMock, kibanaObservable, mockGlobalState, SUB_PLUGINS_REDUCER, } from '../../mock'; import { SourcererScopeName } from '../../store/sourcerer/model'; -const mockSourceDefaults = mockSource; const mockRouteSpy: RouteSpyState = { pageName: SecurityPageName.overview, @@ -81,11 +79,6 @@ jest.mock('../../lib/kibana', () => ({ }), useUiSetting$: jest.fn().mockImplementation(() => [mockPatterns]), })); -jest.mock('../../utils/apollo_context', () => ({ - useApolloClient: jest.fn().mockReturnValue({ - query: jest.fn().mockImplementation(() => Promise.resolve(mockSourceDefaults)), - }), -})); describe('Sourcerer Hooks', () => { const state: State = { @@ -112,24 +105,12 @@ describe('Sourcerer Hooks', () => { }, }; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { jest.clearAllMocks(); jest.restoreAllMocks(); - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); mockUseUserInfo.mockImplementation(() => userInfoState); }); it('initializes loading default and timeline index patterns', async () => { diff --git a/x-pack/plugins/security_solution/public/common/lib/compose/helpers.test.ts b/x-pack/plugins/security_solution/public/common/lib/compose/helpers.test.ts deleted file mode 100644 index 8465e343d2a41..0000000000000 --- a/x-pack/plugins/security_solution/public/common/lib/compose/helpers.test.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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 { InMemoryCache, IntrospectionFragmentMatcher } from 'apollo-cache-inmemory'; -import { errorLink, reTryOneTimeOnErrorLink } from '../../containers/errors'; -import { getLinks } from './helpers'; -import { withClientState } from 'apollo-link-state'; -import * as apolloLinkHttp from 'apollo-link-http'; -import introspectionQueryResultData from '../../../graphql/introspection.json'; - -jest.mock('apollo-cache-inmemory'); -jest.mock('apollo-link-http'); -jest.mock('apollo-link-state'); -jest.mock('../../containers/errors'); -const mockWithClientState = 'mockWithClientState'; -const mockHttpLink = { mockHttpLink: 'mockHttpLink' }; - -(withClientState as jest.Mock).mockReturnValue(mockWithClientState); -(apolloLinkHttp.createHttpLink as jest.Mock).mockImplementation(() => mockHttpLink); - -describe('getLinks helper', () => { - test('It should return links in correct order', () => { - const mockCache = new InMemoryCache({ - dataIdFromObject: () => null, - fragmentMatcher: new IntrospectionFragmentMatcher({ - // @ts-expect-error apollo-cache-inmemory types don't match actual introspection data - introspectionQueryResultData, - }), - }); - const links = getLinks(mockCache, 'basePath'); - expect(links[0]).toEqual(errorLink); - expect(links[1]).toEqual(reTryOneTimeOnErrorLink); - expect(links[2]).toEqual(mockWithClientState); - expect(links[3]).toEqual(mockHttpLink); - }); -}); diff --git a/x-pack/plugins/security_solution/public/common/lib/compose/helpers.ts b/x-pack/plugins/security_solution/public/common/lib/compose/helpers.ts deleted file mode 100644 index d9833844d843f..0000000000000 --- a/x-pack/plugins/security_solution/public/common/lib/compose/helpers.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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 { createHttpLink } from 'apollo-link-http'; -import { withClientState } from 'apollo-link-state'; -import { InMemoryCache } from 'apollo-cache-inmemory'; - -import { errorLink, reTryOneTimeOnErrorLink } from '../../containers/errors'; - -export const getLinks = (cache: InMemoryCache, basePath: string) => [ - errorLink, - reTryOneTimeOnErrorLink, - withClientState({ - cache, - resolvers: {}, - }), - createHttpLink({ - credentials: 'same-origin', - headers: { 'kbn-xsrf': 'true' }, - uri: `${basePath}/api/solutions/security/graphql`, - }), -]; diff --git a/x-pack/plugins/security_solution/public/common/lib/compose/kibana_compose.tsx b/x-pack/plugins/security_solution/public/common/lib/compose/kibana_compose.tsx deleted file mode 100644 index 74a31ac58c6c5..0000000000000 --- a/x-pack/plugins/security_solution/public/common/lib/compose/kibana_compose.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 { InMemoryCache, IntrospectionFragmentMatcher } from 'apollo-cache-inmemory'; -import ApolloClient from 'apollo-client'; -import { ApolloLink } from 'apollo-link'; - -import introspectionQueryResultData from '../../../graphql/introspection.json'; -import { AppFrontendLibs } from '../lib'; -import { getLinks } from './helpers'; -import { CoreStart } from '../../../../../../../src/core/public'; - -export function composeLibs(core: CoreStart): AppFrontendLibs { - const cache = new InMemoryCache({ - dataIdFromObject: () => null, - fragmentMatcher: new IntrospectionFragmentMatcher({ - // @ts-expect-error apollo-cache-inmemory types don't match actual introspection data - introspectionQueryResultData, - }), - }); - const basePath = core.http.basePath.get(); - - const apolloClient = new ApolloClient({ - connectToDevTools: process.env.NODE_ENV !== 'production', - cache, - link: ApolloLink.from(getLinks(cache, basePath)), - }); - - const libs: AppFrontendLibs = { - apolloClient, - }; - return libs; -} diff --git a/x-pack/plugins/security_solution/public/common/lib/lib.ts b/x-pack/plugins/security_solution/public/common/lib/lib.ts deleted file mode 100644 index 7919ef78fff0b..0000000000000 --- a/x-pack/plugins/security_solution/public/common/lib/lib.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 { NormalizedCacheObject } from 'apollo-cache-inmemory'; -import ApolloClient from 'apollo-client'; - -export interface AppFrontendLibs { - apolloClient: AppApolloClient; -} - -export type AppTimezoneProvider = () => string; - -export type AppApolloClient = ApolloClient; - -export interface AppFrameworkAdapter { - appState?: object; - bytesFormat?: string; - dateFormat?: string; - dateFormatTz?: string; - darkMode?: boolean; - indexPattern?: string; - anomalyScore?: number; - scaledDateFormat?: string; - timezone?: string; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - setUISettings(key: string, value: any): void; -} - -export interface AppKibanaUIConfig { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - get(key: string): any; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - set(key: string, value: any): Promise; -} diff --git a/x-pack/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx b/x-pack/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx index 6f0f719c867d2..2d3a01f820b44 100644 --- a/x-pack/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx +++ b/x-pack/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx @@ -14,7 +14,7 @@ import { coreMock } from '../../../../../../../src/core/public/mocks'; import { StartPlugins } from '../../../types'; import { depsStartMock } from './dependencies_start_mock'; import { MiddlewareActionSpyHelper, createSpyMiddleware } from '../../store/test_utils'; -import { apolloClientObservable, kibanaObservable } from '../test_providers'; +import { kibanaObservable } from '../test_providers'; import { createStore, State } from '../../store'; import { AppRootProvider } from './app_root_provider'; import { managementMiddlewareFactory } from '../../../management/store/middleware'; @@ -58,14 +58,10 @@ export const createAppRootMockRenderer = (): AppContextTestRender => { const middlewareSpy = createSpyMiddleware(); const { storage } = createSecuritySolutionStorageMock(); - const store = createStore( - mockGlobalState, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage, - [...managementMiddlewareFactory(coreStart, depsStart), middlewareSpy.actionSpyMiddleware] - ); + const store = createStore(mockGlobalState, SUB_PLUGINS_REDUCER, kibanaObservable, storage, [ + ...managementMiddlewareFactory(coreStart, depsStart), + middlewareSpy.actionSpyMiddleware, + ]); const MockKibanaContextProvider = createKibanaContextProviderMock(); diff --git a/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx b/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx index 5baec99274823..90526e84a2262 100644 --- a/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx +++ b/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx @@ -7,11 +7,8 @@ import euiDarkVars from '@elastic/eui/dist/eui_theme_dark.json'; import { I18nProvider } from '@kbn/i18n/react'; -import { InMemoryCache as Cache } from 'apollo-cache-inmemory'; -import ApolloClient from 'apollo-client'; -import { ApolloLink } from 'apollo-link'; + import React from 'react'; -import { ApolloProvider } from 'react-apollo'; import { DragDropContext, DropResult, ResponderProvided } from 'react-beautiful-dnd'; import { Provider as ReduxStoreProvider } from 'react-redux'; import { Store } from 'redux'; @@ -36,12 +33,6 @@ interface Props { onDragEnd?: (result: DropResult, provided: ResponderProvided) => void; } -export const apolloClient = new ApolloClient({ - cache: new Cache(), - link: new ApolloLink((o, f) => (f ? f(o) : null)), -}); - -export const apolloClientObservable = new BehaviorSubject(apolloClient); export const kibanaObservable = new BehaviorSubject(createStartServicesMock()); Object.defineProperty(window, 'localStorage', { @@ -54,24 +45,16 @@ const { storage } = createSecuritySolutionStorageMock(); /** A utility for wrapping children in the providers required to run most tests */ const TestProvidersComponent: React.FC = ({ children, - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ), + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage), onDragEnd = jest.fn(), }) => ( - - - ({ eui: euiDarkVars, darkMode: true })}> - {children} - - - + + ({ eui: euiDarkVars, darkMode: true })}> + {children} + + ); diff --git a/x-pack/plugins/security_solution/public/common/mock/timeline_results.ts b/x-pack/plugins/security_solution/public/common/mock/timeline_results.ts index 5aef3b97c81b7..c02c47d45f732 100644 --- a/x-pack/plugins/security_solution/public/common/mock/timeline_results.ts +++ b/x-pack/plugins/security_solution/public/common/mock/timeline_results.ts @@ -12,1736 +12,1606 @@ import { TimelineType, TimelineStatus, TimelineTabs, + TimelineResult, } from '../../../common/types/timeline'; import { OpenTimelineResult } from '../../timelines/components/open_timeline/types'; -import { GetAllTimeline, SortFieldTimeline, TimelineResult, Direction } from '../../graphql/types'; -import { TimelineEventsDetailsItem } from '../../../common/search_strategy'; -import { allTimelinesQuery } from '../../timelines/containers/all/index.gql_query'; +import { Direction, TimelineEventsDetailsItem } from '../../../common/search_strategy'; import { CreateTimelineProps } from '../../detections/components/alerts_table/types'; import { TimelineModel } from '../../timelines/store/timeline/model'; import { timelineDefaults } from '../../timelines/store/timeline/defaults'; -export interface MockedProvidedQuery { - request: { - query: GetAllTimeline.Query; - variables: GetAllTimeline.Variables; - }; - result: { - data: { - getAllTimeline: { - totalCount: number; - timeline: TimelineResult[]; - }; - }; - }; -} -/** Mocks results of a query run by the `OpenTimeline` component */ -export const mockOpenTimelineQueryResults: MockedProvidedQuery[] = [ - { - request: { - query: (allTimelinesQuery as unknown) as GetAllTimeline.Query, - variables: { - onlyUserFavorite: false, - pageInfo: { - pageIndex: 1, - pageSize: 10, - }, - search: '', - sort: { - sortField: 'updated' as SortFieldTimeline, - sortOrder: 'desc' as Direction, +export const mockOpenTimelineQueryResults = { + totalCount: 11, + timeline: [ + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811609', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, }, - }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 1', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', }, - result: { - data: { - getAllTimeline: { - totalCount: 11, - timeline: [ - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811609', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 1', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f91', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 2', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f92', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 2', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f9', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 3', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f93', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 4', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f94', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 5', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f95', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 6', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f96', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 7', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f97', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 7', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f98', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 7', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f99', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 7', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f910', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 7', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - { - savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f911', - description: 'hhw4', - favorite: [ - { - fullName: null, - userName: 'elastic', - favoriteDate: 1558390951234, - }, - ], - eventIdToNoteIds: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - timelineVersion: null, - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - ], - notes: [ - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'test pinned event 2', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', - created: 1558404484133, - createdBy: 'elastic', - updated: 1558404484133, - updatedBy: 'elastic', - version: 'WzEzOSwxXQ==', - }, - { - eventId: 'ZF0W12oB9v5HJNSHwY6L', - note: 'Test pinned 1', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404474317, - createdBy: 'elastic', - updated: 1558404474317, - updatedBy: 'elastic', - version: 'WzEzNywxXQ==', - }, - { - eventId: '4l0W12oB9v5HJNSHY4wv', - note: 'again', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', - created: 1558404491600, - createdBy: 'elastic', - updated: 1558404491600, - updatedBy: 'elastic', - version: 'WzE0MSwxXQ==', - }, - { - eventId: null, - note: 'Hello world', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', - created: 1558404450688, - createdBy: 'elastic', - updated: 1558404450688, - updatedBy: 'elastic', - version: 'WzEzMywxXQ==', - }, - { - eventId: null, - note: 'here I am', - timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', - timelineVersion: null, - noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', - created: 1558404458065, - createdBy: 'elastic', - updated: 1558404458065, - updatedBy: 'elastic', - version: 'WzEzNCwxXQ==', - }, - ], - noteIds: [ - '308783f0-7b6d-11e9-980a-e5349fc014ef', - '34ec1690-7b6d-11e9-980a-e5349fc014ef', - ], - pinnedEventIds: [ - 'Wl0W12oB9v5HJNSHb400', - '410W12oB9v5HJNSHY4wv', - 'ZF0W12oB9v5HJNSHwY6L', - ], - title: 'test 7', - timelineType: TimelineType.default, - templateTimelineId: null, - templateTimelineVersion: null, - created: 1558386787614, - createdBy: 'elastic', - updated: 1558390951234, - updatedBy: 'elastic', - version: 'WzEyOCwxXQ==', - }, - ], + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f91', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, }, - }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 2', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', }, - }, -]; + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f92', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, + }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 2', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', + }, + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f9', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, + }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 3', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', + }, + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f93', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, + }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 4', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', + }, + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f94', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, + }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 5', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', + }, + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f95', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, + }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 6', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', + }, + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f96', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, + }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 7', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', + }, + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f97', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, + }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 7', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', + }, + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f98', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, + }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 7', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', + }, + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f99', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, + }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 7', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', + }, + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f910', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, + }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 7', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', + }, + { + savedObjectId: '10849df0-7b44-11e9-a608-ab3d811602f911', + description: 'hhw4', + favorite: [ + { + fullName: null, + userName: 'elastic', + favoriteDate: 1558390951234, + }, + ], + eventIdToNoteIds: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + timelineVersion: null, + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + ], + notes: [ + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'test pinned event 2', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '44763500-7b6d-11e9-980a-e5349fc014ef', + created: 1558404484133, + createdBy: 'elastic', + updated: 1558404484133, + updatedBy: 'elastic', + version: 'WzEzOSwxXQ==', + }, + { + eventId: 'ZF0W12oB9v5HJNSHwY6L', + note: 'Test pinned 1', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '3e9d51e0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404474317, + createdBy: 'elastic', + updated: 1558404474317, + updatedBy: 'elastic', + version: 'WzEzNywxXQ==', + }, + { + eventId: '4l0W12oB9v5HJNSHY4wv', + note: 'again', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '48eaf440-7b6d-11e9-980a-e5349fc014ef', + created: 1558404491600, + createdBy: 'elastic', + updated: 1558404491600, + updatedBy: 'elastic', + version: 'WzE0MSwxXQ==', + }, + { + eventId: null, + note: 'Hello world', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '308783f0-7b6d-11e9-980a-e5349fc014ef', + created: 1558404450688, + createdBy: 'elastic', + updated: 1558404450688, + updatedBy: 'elastic', + version: 'WzEzMywxXQ==', + }, + { + eventId: null, + note: 'here I am', + timelineId: '10849df0-7b44-11e9-a608-ab3d811602f9', + timelineVersion: null, + noteId: '34ec1690-7b6d-11e9-980a-e5349fc014ef', + created: 1558404458065, + createdBy: 'elastic', + updated: 1558404458065, + updatedBy: 'elastic', + version: 'WzEzNCwxXQ==', + }, + ], + noteIds: ['308783f0-7b6d-11e9-980a-e5349fc014ef', '34ec1690-7b6d-11e9-980a-e5349fc014ef'], + pinnedEventIds: ['Wl0W12oB9v5HJNSHb400', '410W12oB9v5HJNSHY4wv', 'ZF0W12oB9v5HJNSHwY6L'], + title: 'test 7', + timelineType: TimelineType.default, + templateTimelineId: null, + templateTimelineVersion: null, + created: 1558386787614, + createdBy: 'elastic', + updated: 1558390951234, + updatedBy: 'elastic', + version: 'WzEyOCwxXQ==', + }, + ], +}; /** Mocks results of a query run by the `OpenTimeline` component */ export const mockTimelineResults: OpenTimelineResult[] = [ @@ -2170,7 +2040,7 @@ export const mockTimelineModel: TimelineModel = { version: '1', }; -export const mockTimelineResult: TimelineResult = { +export const mockGetOneTimelineResult: TimelineResult = { savedObjectId: 'ef579e40-jibber-jabber', columns: timelineDefaults.columns.filter((column) => column.id !== 'event.action'), dateRange: { start: '2020-03-18T13:46:38.929Z', end: '2020-03-18T13:52:38.929Z' }, @@ -2193,13 +2063,13 @@ export const mockTimelineResult: TimelineResult = { templateTimelineId: null, templateTimelineVersion: null, savedQueryId: null, - sort: [{ columnId: '@timestamp', columnType: 'number', sortDirection: 'desc' }], + sort: [{ columnId: '@timestamp', columnType: 'number', sortDirection: Direction.desc }], version: '1', }; -export const mockTimelineApolloResult = { +export const mockTimelineResult = { data: { - getOneTimeline: mockTimelineResult, + getOneTimeline: mockGetOneTimelineResult, }, loading: false, networkStatus: 7, diff --git a/x-pack/plugins/security_solution/public/common/store/store.ts b/x-pack/plugins/security_solution/public/common/store/store.ts index efd97891f1573..e253ae1bbaf98 100644 --- a/x-pack/plugins/security_solution/public/common/store/store.ts +++ b/x-pack/plugins/security_solution/public/common/store/store.ts @@ -26,7 +26,6 @@ import { timelineSelectors } from '../../timelines/store/timeline'; import { inputsSelectors } from './inputs'; import { SubPluginsInitReducer, createReducer } from './reducer'; import { createRootEpic } from './epic'; -import { AppApolloClient } from '../lib/lib'; import { AppAction } from './actions'; import { Immutable } from '../../../common/endpoint/types'; import { State } from './types'; @@ -52,7 +51,6 @@ let store: Store | null = null; export const createStore = ( state: PreloadedState, pluginsReducer: SubPluginsInitReducer, - apolloClient: Observable, kibana: Observable, storage: Storage, additionalMiddleware?: Array>>> @@ -60,7 +58,6 @@ export const createStore = ( const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; const middlewareDependencies: TimelineEpicDependencies = { - apolloClient$: apolloClient, kibana$: kibana, selectAllTimelineQuery: inputsSelectors.globalQueryByIdSelector, selectNotesByIdSelector: appSelectors.selectNotesByIdSelector, diff --git a/x-pack/plugins/security_solution/public/common/utils/apollo_context.ts b/x-pack/plugins/security_solution/public/common/utils/apollo_context.ts deleted file mode 100644 index c53d9903cd8d5..0000000000000 --- a/x-pack/plugins/security_solution/public/common/utils/apollo_context.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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 { ApolloClient } from 'apollo-client'; -import { createContext, useContext } from 'react'; - -/** - * This is a temporary provider and hook for use with hooks until react-apollo - * has upgraded to the new-style `createContext` api. - */ - -export const ApolloClientContext = createContext | undefined>(undefined); - -export const useApolloClient = () => { - return useContext(ApolloClientContext); -}; diff --git a/x-pack/plugins/security_solution/public/common/utils/route/types.ts b/x-pack/plugins/security_solution/public/common/utils/route/types.ts index 7305fc3121085..189e68d1c55bb 100644 --- a/x-pack/plugins/security_solution/public/common/utils/route/types.ts +++ b/x-pack/plugins/security_solution/public/common/utils/route/types.ts @@ -14,7 +14,7 @@ import { TimelineType } from '../../../../common/types/timeline'; import { HostsTableType } from '../../../hosts/store/model'; import { NetworkRouteType } from '../../../network/pages/navigation/types'; import { AdministrationSubTab as AdministrationType } from '../../../management/types'; -import { FlowTarget } from '../../../graphql/types'; +import { FlowTarget } from '../../../../common/search_strategy'; export type SiemRouteType = HostsTableType | NetworkRouteType | TimelineType | AdministrationType; export interface RouteSpyState { diff --git a/x-pack/plugins/security_solution/public/common/utils/timeline/use_timeline_click.tsx b/x-pack/plugins/security_solution/public/common/utils/timeline/use_timeline_click.tsx index 4289ccfbc61fa..2756ba2a696e1 100644 --- a/x-pack/plugins/security_solution/public/common/utils/timeline/use_timeline_click.tsx +++ b/x-pack/plugins/security_solution/public/common/utils/timeline/use_timeline_click.tsx @@ -7,7 +7,6 @@ import { useCallback } from 'react'; import { useDispatch } from 'react-redux'; -import { useApolloClient } from '../../../common/utils/apollo_context'; import { dispatchUpdateTimeline, queryTimelineById, @@ -16,12 +15,10 @@ import { updateIsLoading as dispatchUpdateIsLoading } from '../../../timelines/s export const useTimelineClick = () => { const dispatch = useDispatch(); - const apolloClient = useApolloClient(); const handleTimelineClick = useCallback( (timelineId: string, graphEventId?: string) => { queryTimelineById({ - apolloClient, graphEventId, timelineId, updateIsLoading: ({ @@ -34,7 +31,7 @@ export const useTimelineClick = () => { updateTimeline: dispatchUpdateTimeline(dispatch), }); }, - [apolloClient, dispatch] + [dispatch] ); return handleTimelineClick; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx index 6eccba954a175..d5b64a8fe27fc 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx @@ -5,7 +5,6 @@ * 2.0. */ -import { get } from 'lodash/fp'; import sinon from 'sinon'; import moment from 'moment'; @@ -13,9 +12,7 @@ import { sendAlertToTimelineAction, determineToAndFrom } from './actions'; import { mockEcsDataWithAlert, defaultTimelineProps, - apolloClient, - mockTimelineApolloResult, - mockTimelineDetailsApollo, + mockTimelineResult, mockTimelineDetails, } from '../../../common/mock/'; import { CreateTimeline, UpdateTimelineLoading } from './types'; @@ -28,8 +25,11 @@ import { } from '../../../../common/types/timeline'; import { ISearchStart } from '../../../../../../../src/plugins/data/public'; import { dataPluginMock } from '../../../../../../../src/plugins/data/public/mocks'; +import { getTimelineTemplate } from '../../../timelines/containers/api'; -jest.mock('apollo-client'); +jest.mock('../../../timelines/containers/api', () => ({ + getTimelineTemplate: jest.fn(), +})); describe('alert actions', () => { const anchor = '2020-03-01T17:59:46.349Z'; @@ -60,13 +60,7 @@ describe('alert actions', () => { searchSource: {} as ISearchStart['searchSource'], }; - jest.spyOn(apolloClient, 'query').mockImplementation((obj) => { - const id = get('variables.id', obj); - if (id != null) { - return Promise.resolve(mockTimelineApolloResult); - } - return Promise.resolve(mockTimelineDetailsApollo); - }); + (getTimelineTemplate as jest.Mock).mockResolvedValue(mockTimelineResult); clock = sinon.useFakeTimers(unix); }); @@ -79,7 +73,6 @@ describe('alert actions', () => { describe('timeline id is NOT empty string and apollo client exists', () => { test('it invokes updateTimelineIsLoading to set to true', async () => { await sendAlertToTimelineAction({ - apolloClient, createTimeline, ecsData: mockEcsDataWithAlert, nonEcsData: [], @@ -96,7 +89,6 @@ describe('alert actions', () => { test('it invokes createTimeline with designated timeline template if "timelineTemplate" exists', async () => { await sendAlertToTimelineAction({ - apolloClient, createTimeline, ecsData: mockEcsDataWithAlert, nonEcsData: [], @@ -236,8 +228,8 @@ describe('alert actions', () => { }); test('it invokes createTimeline with kqlQuery.filterQuery.kuery.kind as "kuery" if not specified in returned timeline template', async () => { - const mockTimelineApolloResultModified = { - ...mockTimelineApolloResult, + const mockTimelineResultModified = { + ...mockTimelineResult, kqlQuery: { filterQuery: { kuery: { @@ -246,10 +238,9 @@ describe('alert actions', () => { }, }, }; - jest.spyOn(apolloClient, 'query').mockResolvedValue(mockTimelineApolloResultModified); + (getTimelineTemplate as jest.Mock).mockResolvedValue(mockTimelineResultModified); await sendAlertToTimelineAction({ - apolloClient, createTimeline, ecsData: mockEcsDataWithAlert, nonEcsData: [], @@ -263,12 +254,11 @@ describe('alert actions', () => { }); test('it invokes createTimeline with default timeline if apolloClient throws', async () => { - jest.spyOn(apolloClient, 'query').mockImplementation(() => { + (getTimelineTemplate as jest.Mock).mockImplementation(() => { throw new Error('Test error'); }); await sendAlertToTimelineAction({ - apolloClient, createTimeline, ecsData: mockEcsDataWithAlert, nonEcsData: [], @@ -303,7 +293,6 @@ describe('alert actions', () => { }; await sendAlertToTimelineAction({ - apolloClient, createTimeline, ecsData: ecsDataMock, nonEcsData: [], diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.tsx index 4dd40eb2ddaee..e5cefca66d0fd 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.tsx @@ -13,7 +13,12 @@ import moment from 'moment'; import { i18n } from '@kbn/i18n'; import type { Filter } from '../../../../../../../src/plugins/data/common/es_query/filters'; -import { TimelineId, TimelineStatus, TimelineType } from '../../../../common/types/timeline'; +import { + TimelineId, + TimelineResult, + TimelineStatus, + TimelineType, +} from '../../../../common/types/timeline'; import { updateAlertStatus } from '../../containers/detection_engine/alerts/api'; import { SendAlertToTimelineActionProps, @@ -21,7 +26,6 @@ import { UpdateAlertStatusActionProps, } from './types'; import { Ecs } from '../../../../common/ecs'; -import { GetOneTimeline, TimelineResult } from '../../../graphql/types'; import { TimelineNonEcsData, TimelineEventsDetailsItem, @@ -29,7 +33,6 @@ import { TimelineEventsDetailsStrategyResponse, TimelineEventsQueries, } from '../../../../common/search_strategy/timeline'; -import { oneTimelineQuery } from '../../../timelines/containers/one/index.gql_query'; import { timelineDefaults } from '../../../timelines/store/timeline/defaults'; import { omitTypenameInTimeline, @@ -47,6 +50,7 @@ import { QueryOperator, } from '../../../timelines/components/timeline/data_providers/data_provider'; import { esFilters } from '../../../../../../../src/plugins/data/public'; +import { getTimelineTemplate } from '../../../timelines/containers/api'; export const getUpdateAlertsQuery = (eventIds: Readonly) => { return { @@ -362,7 +366,6 @@ export const buildEqlDataProviderOrFilter = ( }; export const sendAlertToTimelineAction = async ({ - apolloClient, createTimeline, ecsData: ecs, nonEcsData, @@ -381,18 +384,11 @@ export const sendAlertToTimelineAction = async ({ const { to, from } = determineToAndFrom({ ecs }); // For now we do not want to populate the template timeline if we have alertIds - if (!isEmpty(timelineId) && apolloClient != null && isEmpty(alertIds)) { + if (!isEmpty(timelineId) && isEmpty(alertIds)) { try { updateTimelineIsLoading({ id: TimelineId.active, isLoading: true }); const [responseTimeline, eventDataResp] = await Promise.all([ - apolloClient.query({ - query: oneTimelineQuery, - fetchPolicy: 'no-cache', - variables: { - id: timelineId, - timelineType: TimelineType.template, - }, - }), + getTimelineTemplate(timelineId), searchStrategyClient .search( { diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts index 98cb939ca2656..69cf6ac43d4a7 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts @@ -18,7 +18,7 @@ import { DataProvidersAnd, } from '../../../timelines/components/timeline/data_providers/data_provider'; import { TimelineEventsDetailsItem } from '../../../../common/search_strategy'; -import { TimelineType } from '../../../graphql/types'; +import { TimelineType } from '../../../../common/types/timeline'; interface FindValueToChangeInQuery { field: string; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx index 2f0fee980c218..3bf30d57d4a8a 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx @@ -13,7 +13,6 @@ import { TimelineId } from '../../../../../common/types/timeline'; import { Ecs } from '../../../../../common/ecs'; import { TimelineNonEcsData } from '../../../../../common/search_strategy/timeline'; import { timelineActions } from '../../../../timelines/store/timeline'; -import { useApolloClient } from '../../../../common/utils/apollo_context'; import { sendAlertToTimelineAction } from '../actions'; import { dispatchUpdateTimeline } from '../../../../timelines/components/open_timeline/helpers'; import { ActionIconItem } from '../../../../timelines/components/timeline/body/actions/action_icon_item'; @@ -42,7 +41,6 @@ const InvestigateInTimelineActionComponent: React.FC dispatch(timelineActions.updateIsLoading(payload)), @@ -74,7 +72,6 @@ const InvestigateInTimelineActionComponent: React.FC; createTimeline: CreateTimeline; ecsData: Ecs | Ecs[]; nonEcsData: TimelineNonEcsData[]; diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx index d9fc3a60cb717..6bca9bf2756bb 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx @@ -11,7 +11,6 @@ import { useParams } from 'react-router-dom'; import { waitFor } from '@testing-library/react'; import '../../../common/mock/match_media'; import { - apolloClientObservable, createSecuritySolutionStorageMock, kibanaObservable, mockGlobalState, @@ -62,13 +61,7 @@ const state: State = { }; const { storage } = createSecuritySolutionStorageMock(); -const store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage -); +const store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); describe('DetectionEnginePageComponent', () => { beforeAll(() => { diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.test.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.test.tsx index c9468005960a6..b1c7bf8aa41e4 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.test.tsx @@ -11,7 +11,6 @@ import { waitFor } from '@testing-library/react'; import '../../../../../common/mock/match_media'; import { - apolloClientObservable, createSecuritySolutionStorageMock, kibanaObservable, mockGlobalState, @@ -60,13 +59,7 @@ const state: State = { ...mockGlobalState, }; const { storage } = createSecuritySolutionStorageMock(); -const store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage -); +const store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); describe('RuleDetailsPageComponent', () => { beforeAll(() => { diff --git a/x-pack/plugins/security_solution/public/graphql/introspection.json b/x-pack/plugins/security_solution/public/graphql/introspection.json deleted file mode 100644 index 752173ded5163..0000000000000 --- a/x-pack/plugins/security_solution/public/graphql/introspection.json +++ /dev/null @@ -1,7647 +0,0 @@ -{ - "__schema": { - "queryType": { "name": "Query" }, - "mutationType": { "name": "Mutation" }, - "subscriptionType": null, - "types": [ - { - "kind": "OBJECT", - "name": "Query", - "description": "", - "fields": [ - { - "name": "getNote", - "description": "", - "args": [ - { - "name": "id", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "NoteResult", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "getNotesByTimelineId", - "description": "", - "args": [ - { - "name": "timelineId", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "NoteResult", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "getNotesByEventId", - "description": "", - "args": [ - { - "name": "eventId", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "NoteResult", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "getAllNotes", - "description": "", - "args": [ - { - "name": "pageInfo", - "description": "", - "type": { "kind": "INPUT_OBJECT", "name": "PageInfoNote", "ofType": null }, - "defaultValue": null - }, - { - "name": "search", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "sort", - "description": "", - "type": { "kind": "INPUT_OBJECT", "name": "SortNote", "ofType": null }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "ResponseNotes", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "getAllPinnedEventsByTimelineId", - "description": "", - "args": [ - { - "name": "timelineId", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "PinnedEvent", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "source", - "description": "Get a security data source by id", - "args": [ - { - "name": "id", - "description": "The id of the source", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "Source", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "allSources", - "description": "Get a list of all security data sources", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "Source", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "getOneTimeline", - "description": "", - "args": [ - { - "name": "id", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "timelineType", - "description": "", - "type": { "kind": "ENUM", "name": "TimelineType", "ofType": null }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "TimelineResult", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "getAllTimeline", - "description": "", - "args": [ - { - "name": "pageInfo", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "INPUT_OBJECT", "name": "PageInfoTimeline", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "search", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "sort", - "description": "", - "type": { "kind": "INPUT_OBJECT", "name": "SortTimeline", "ofType": null }, - "defaultValue": null - }, - { - "name": "onlyUserFavorite", - "description": "", - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "defaultValue": null - }, - { - "name": "timelineType", - "description": "", - "type": { "kind": "ENUM", "name": "TimelineType", "ofType": null }, - "defaultValue": null - }, - { - "name": "status", - "description": "", - "type": { "kind": "ENUM", "name": "TimelineStatus", "ofType": null }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "ResponseTimelines", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ID", - "description": "The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "NoteResult", - "description": "", - "fields": [ - { - "name": "eventId", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "note", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timelineId", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "noteId", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "created", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "createdBy", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timelineVersion", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updated", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updatedBy", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "version", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "String", - "description": "The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Float", - "description": "The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](http://en.wikipedia.org/wiki/IEEE_floating_point). ", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "PageInfoNote", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "pageIndex", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "pageSize", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SortNote", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "sortField", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "SortFieldNote", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "sortOrder", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "Direction", "ofType": null } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "SortFieldNote", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "updatedBy", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { "name": "updated", "description": "", "isDeprecated": false, "deprecationReason": null } - ], - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "Direction", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { "name": "asc", "description": "", "isDeprecated": false, "deprecationReason": null }, - { "name": "desc", "description": "", "isDeprecated": false, "deprecationReason": null } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ResponseNotes", - "description": "", - "fields": [ - { - "name": "notes", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "NoteResult", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "totalCount", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "PinnedEvent", - "description": "", - "fields": [ - { - "name": "code", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "message", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pinnedEventId", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "eventId", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ID", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timelineId", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ID", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timelineVersion", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "created", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "createdBy", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updated", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updatedBy", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "version", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Source", - "description": "", - "fields": [ - { - "name": "id", - "description": "The id of the source", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "configuration", - "description": "The raw configuration of the source", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "SourceConfiguration", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "status", - "description": "The status of the source", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "SourceStatus", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SourceConfiguration", - "description": "A set of configuration options for a security data source", - "fields": [ - { - "name": "fields", - "description": "The field mapping to use for this source", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "SourceFields", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SourceFields", - "description": "A mapping of semantic fields to their document counterparts", - "fields": [ - { - "name": "container", - "description": "The field to identify a container by", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "host", - "description": "The fields to identify a host by", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "message", - "description": "The fields that may contain the log event message. The first field found win.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pod", - "description": "The field to identify a pod by", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tiebreaker", - "description": "The field to use as a tiebreaker for log events that have identical timestamps", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timestamp", - "description": "The field to use as a timestamp for metrics and logs", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SourceStatus", - "description": "The status of an infrastructure data source", - "fields": [ - { - "name": "indicesExist", - "description": "Whether the configured alias or wildcard pattern resolve to any auditbeat indices", - "args": [ - { - "name": "defaultIndex", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "indexFields", - "description": "The list of fields defined in the index mappings", - "args": [ - { - "name": "defaultIndex", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Boolean", - "description": "The `Boolean` scalar type represents `true` or `false`.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "TimelineType", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "default", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "template", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "TimelineResult", - "description": "", - "fields": [ - { - "name": "columns", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "ColumnHeaderResult", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "created", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "createdBy", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "dataProviders", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "DataProviderResult", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "dateRange", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "DateRangePickerResult", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "eqlOptions", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "EqlOptionsResult", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "eventIdToNoteIds", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "NoteResult", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "eventType", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "excludedRowRendererIds", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "RowRendererId", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "favorite", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "FavoriteTimelineResult", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "filters", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "FilterTimelineResult", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "kqlMode", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "kqlQuery", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "SerializedFilterQueryResult", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "indexNames", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notes", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "NoteResult", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "noteIds", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pinnedEventIds", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pinnedEventsSaveObject", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "PinnedEvent", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "savedQueryId", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "savedObjectId", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sort", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToAny", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "status", - "description": "", - "args": [], - "type": { "kind": "ENUM", "name": "TimelineStatus", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "title", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "templateTimelineId", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "templateTimelineVersion", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Int", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timelineType", - "description": "", - "args": [], - "type": { "kind": "ENUM", "name": "TimelineType", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updated", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updatedBy", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "version", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ColumnHeaderResult", - "description": "", - "fields": [ - { - "name": "aggregatable", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "category", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "columnHeaderType", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "example", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "indexes", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "placeholder", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "searchable", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "DataProviderResult", - "description": "", - "fields": [ - { - "name": "id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "enabled", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "excluded", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "kqlQuery", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "queryMatch", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "QueryMatchResult", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": "", - "args": [], - "type": { "kind": "ENUM", "name": "DataProviderType", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "and", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "DataProviderResult", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "QueryMatchResult", - "description": "", - "fields": [ - { - "name": "field", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "displayField", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "value", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "displayValue", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "operator", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "DataProviderType", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "default", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "template", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "DateRangePickerResult", - "description": "", - "fields": [ - { - "name": "start", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToAny", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "end", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToAny", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ToAny", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "EqlOptionsResult", - "description": "", - "fields": [ - { - "name": "eventCategoryField", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tiebreakerField", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timestampField", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "query", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "size", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToAny", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "RowRendererId", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { "name": "alerts", "description": "", "isDeprecated": false, "deprecationReason": null }, - { "name": "auditd", "description": "", "isDeprecated": false, "deprecationReason": null }, - { - "name": "auditd_file", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "library", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "netflow", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { "name": "plain", "description": "", "isDeprecated": false, "deprecationReason": null }, - { - "name": "registry", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "suricata", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { "name": "system", "description": "", "isDeprecated": false, "deprecationReason": null }, - { - "name": "system_dns", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "system_endgame_process", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "system_file", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "system_fim", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "system_security_event", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "system_socket", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "threat_match", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { "name": "zeek", "description": "", "isDeprecated": false, "deprecationReason": null } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "FavoriteTimelineResult", - "description": "", - "fields": [ - { - "name": "fullName", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "userName", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "favoriteDate", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "FilterTimelineResult", - "description": "", - "fields": [ - { - "name": "exists", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "meta", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "FilterMetaTimelineResult", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "match_all", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "missing", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "query", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "range", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "script", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "FilterMetaTimelineResult", - "description": "", - "fields": [ - { - "name": "alias", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "controlledBy", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "disabled", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "field", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "formattedValue", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "index", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "key", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "negate", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "params", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "value", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SerializedFilterQueryResult", - "description": "", - "fields": [ - { - "name": "filterQuery", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "SerializedKueryQueryResult", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SerializedKueryQueryResult", - "description": "", - "fields": [ - { - "name": "kuery", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "KueryFilterQueryResult", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "serializedQuery", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "KueryFilterQueryResult", - "description": "", - "fields": [ - { - "name": "kind", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "expression", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "TimelineStatus", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { "name": "active", "description": "", "isDeprecated": false, "deprecationReason": null }, - { "name": "draft", "description": "", "isDeprecated": false, "deprecationReason": null }, - { - "name": "immutable", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Int", - "description": "The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1. ", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "PageInfoTimeline", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "pageIndex", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "pageSize", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SortTimeline", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "sortField", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "SortFieldTimeline", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "sortOrder", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "Direction", "ofType": null } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "SortFieldTimeline", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { "name": "title", "description": "", "isDeprecated": false, "deprecationReason": null }, - { - "name": "description", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updated", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { "name": "created", "description": "", "isDeprecated": false, "deprecationReason": null } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ResponseTimelines", - "description": "", - "fields": [ - { - "name": "timeline", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { "kind": "OBJECT", "name": "TimelineResult", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "totalCount", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "defaultTimelineCount", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "templateTimelineCount", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "elasticTemplateTimelineCount", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "customTemplateTimelineCount", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "favoriteCount", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Mutation", - "description": "", - "fields": [ - { - "name": "persistNote", - "description": "Persists a note", - "args": [ - { - "name": "noteId", - "description": "", - "type": { "kind": "SCALAR", "name": "ID", "ofType": null }, - "defaultValue": null - }, - { - "name": "version", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "note", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "INPUT_OBJECT", "name": "NoteInput", "ofType": null } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "ResponseNote", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deleteNote", - "description": "", - "args": [ - { - "name": "id", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - } - } - }, - "defaultValue": null - } - ], - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deleteNoteByTimelineId", - "description": "", - "args": [ - { - "name": "timelineId", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "version", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - } - ], - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "persistPinnedEventOnTimeline", - "description": "Persists a pinned event in a timeline", - "args": [ - { - "name": "pinnedEventId", - "description": "", - "type": { "kind": "SCALAR", "name": "ID", "ofType": null }, - "defaultValue": null - }, - { - "name": "eventId", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "timelineId", - "description": "", - "type": { "kind": "SCALAR", "name": "ID", "ofType": null }, - "defaultValue": null - } - ], - "type": { "kind": "OBJECT", "name": "PinnedEvent", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deletePinnedEventOnTimeline", - "description": "Remove a pinned events in a timeline", - "args": [ - { - "name": "id", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deleteAllPinnedEventsOnTimeline", - "description": "Remove all pinned events in a timeline", - "args": [ - { - "name": "timelineId", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "persistTimeline", - "description": "Persists a timeline", - "args": [ - { - "name": "id", - "description": "", - "type": { "kind": "SCALAR", "name": "ID", "ofType": null }, - "defaultValue": null - }, - { - "name": "version", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "timeline", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "INPUT_OBJECT", "name": "TimelineInput", "ofType": null } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "ResponseTimeline", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "persistFavorite", - "description": "", - "args": [ - { - "name": "timelineId", - "description": "", - "type": { "kind": "SCALAR", "name": "ID", "ofType": null }, - "defaultValue": null - }, - { - "name": "templateTimelineId", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "templateTimelineVersion", - "description": "", - "type": { "kind": "SCALAR", "name": "Int", "ofType": null }, - "defaultValue": null - }, - { - "name": "timelineType", - "description": "", - "type": { "kind": "ENUM", "name": "TimelineType", "ofType": null }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "ResponseFavoriteTimeline", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deleteTimeline", - "description": "", - "args": [ - { - "name": "id", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "ID", "ofType": null } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "NoteInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "eventId", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "note", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "timelineId", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ResponseNote", - "description": "", - "fields": [ - { - "name": "code", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "message", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "note", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "NoteResult", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "TimelineInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "columns", - "description": "", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "INPUT_OBJECT", "name": "ColumnHeaderInput", "ofType": null } - } - }, - "defaultValue": null - }, - { - "name": "dataProviders", - "description": "", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "INPUT_OBJECT", "name": "DataProviderInput", "ofType": null } - } - }, - "defaultValue": null - }, - { - "name": "description", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "eqlOptions", - "description": "", - "type": { "kind": "INPUT_OBJECT", "name": "EqlOptionsInput", "ofType": null }, - "defaultValue": null - }, - { - "name": "eventType", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "excludedRowRendererIds", - "description": "", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "RowRendererId", "ofType": null } - } - }, - "defaultValue": null - }, - { - "name": "filters", - "description": "", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "INPUT_OBJECT", "name": "FilterTimelineInput", "ofType": null } - } - }, - "defaultValue": null - }, - { - "name": "kqlMode", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "kqlQuery", - "description": "", - "type": { - "kind": "INPUT_OBJECT", - "name": "SerializedFilterQueryInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "indexNames", - "description": "", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "defaultValue": null - }, - { - "name": "title", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "templateTimelineId", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "templateTimelineVersion", - "description": "", - "type": { "kind": "SCALAR", "name": "Int", "ofType": null }, - "defaultValue": null - }, - { - "name": "timelineType", - "description": "", - "type": { "kind": "ENUM", "name": "TimelineType", "ofType": null }, - "defaultValue": null - }, - { - "name": "dateRange", - "description": "", - "type": { "kind": "INPUT_OBJECT", "name": "DateRangePickerInput", "ofType": null }, - "defaultValue": null - }, - { - "name": "savedQueryId", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "sort", - "description": "", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "INPUT_OBJECT", "name": "SortTimelineInput", "ofType": null } - } - }, - "defaultValue": null - }, - { - "name": "status", - "description": "", - "type": { "kind": "ENUM", "name": "TimelineStatus", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "ColumnHeaderInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "aggregatable", - "description": "", - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "defaultValue": null - }, - { - "name": "category", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "columnHeaderType", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "description", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "example", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "indexes", - "description": "", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "defaultValue": null - }, - { - "name": "id", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "name", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "placeholder", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "searchable", - "description": "", - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "defaultValue": null - }, - { - "name": "type", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "DataProviderInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "id", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "name", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "enabled", - "description": "", - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "defaultValue": null - }, - { - "name": "excluded", - "description": "", - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "defaultValue": null - }, - { - "name": "kqlQuery", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "queryMatch", - "description": "", - "type": { "kind": "INPUT_OBJECT", "name": "QueryMatchInput", "ofType": null }, - "defaultValue": null - }, - { - "name": "and", - "description": "", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "INPUT_OBJECT", "name": "DataProviderInput", "ofType": null } - } - }, - "defaultValue": null - }, - { - "name": "type", - "description": "", - "type": { "kind": "ENUM", "name": "DataProviderType", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "QueryMatchInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "field", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "displayField", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "value", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "displayValue", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "operator", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "EqlOptionsInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "eventCategoryField", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "tiebreakerField", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "timestampField", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "query", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "size", - "description": "", - "type": { "kind": "SCALAR", "name": "ToAny", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "FilterTimelineInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "exists", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "meta", - "description": "", - "type": { "kind": "INPUT_OBJECT", "name": "FilterMetaTimelineInput", "ofType": null }, - "defaultValue": null - }, - { - "name": "match_all", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "missing", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "query", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "range", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "script", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "FilterMetaTimelineInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "alias", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "controlledBy", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "disabled", - "description": "", - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "defaultValue": null - }, - { - "name": "field", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "formattedValue", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "index", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "key", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "negate", - "description": "", - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "defaultValue": null - }, - { - "name": "params", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "type", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "value", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SerializedFilterQueryInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "filterQuery", - "description": "", - "type": { "kind": "INPUT_OBJECT", "name": "SerializedKueryQueryInput", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SerializedKueryQueryInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "kuery", - "description": "", - "type": { "kind": "INPUT_OBJECT", "name": "KueryFilterQueryInput", "ofType": null }, - "defaultValue": null - }, - { - "name": "serializedQuery", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "KueryFilterQueryInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "kind", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "expression", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "DateRangePickerInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "start", - "description": "", - "type": { "kind": "SCALAR", "name": "ToAny", "ofType": null }, - "defaultValue": null - }, - { - "name": "end", - "description": "", - "type": { "kind": "SCALAR", "name": "ToAny", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SortTimelineInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "columnId", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "sortDirection", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ResponseTimeline", - "description": "", - "fields": [ - { - "name": "code", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "message", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timeline", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "TimelineResult", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ResponseFavoriteTimeline", - "description": "", - "fields": [ - { - "name": "code", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "message", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "savedObjectId", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "templateTimelineId", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "templateTimelineVersion", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Int", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timelineType", - "description": "", - "args": [], - "type": { "kind": "ENUM", "name": "TimelineType", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "version", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "favorite", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "FavoriteTimelineResult", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__Schema", - "description": "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.", - "fields": [ - { - "name": "types", - "description": "A list of all types supported by this server.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__Type", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "queryType", - "description": "The type that query operations will be rooted at.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__Type", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "mutationType", - "description": "If this server supports mutation, the type that mutation operations will be rooted at.", - "args": [], - "type": { "kind": "OBJECT", "name": "__Type", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "subscriptionType", - "description": "If this server support subscription, the type that subscription operations will be rooted at.", - "args": [], - "type": { "kind": "OBJECT", "name": "__Type", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "directives", - "description": "A list of all directives supported by this server.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__Directive", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__Type", - "description": "The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.", - "fields": [ - { - "name": "kind", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "__TypeKind", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fields", - "description": null, - "args": [ - { - "name": "includeDeprecated", - "description": null, - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "defaultValue": "false" - } - ], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__Field", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "interfaces", - "description": null, - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__Type", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "possibleTypes", - "description": null, - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__Type", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "enumValues", - "description": null, - "args": [ - { - "name": "includeDeprecated", - "description": null, - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "defaultValue": "false" - } - ], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__EnumValue", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "inputFields", - "description": null, - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__InputValue", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ofType", - "description": null, - "args": [], - "type": { "kind": "OBJECT", "name": "__Type", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "__TypeKind", - "description": "An enum describing what kind of type a given `__Type` is.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "SCALAR", - "description": "Indicates this type is a scalar.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "OBJECT", - "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INTERFACE", - "description": "Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "UNION", - "description": "Indicates this type is a union. `possibleTypes` is a valid field.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ENUM", - "description": "Indicates this type is an enum. `enumValues` is a valid field.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INPUT_OBJECT", - "description": "Indicates this type is an input object. `inputFields` is a valid field.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "LIST", - "description": "Indicates this type is a list. `ofType` is a valid field.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "NON_NULL", - "description": "Indicates this type is a non-null. `ofType` is a valid field.", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__Field", - "description": "Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.", - "fields": [ - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "args", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__InputValue", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__Type", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isDeprecated", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deprecationReason", - "description": null, - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__InputValue", - "description": "Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.", - "fields": [ - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__Type", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "defaultValue", - "description": "A GraphQL-formatted string representing the default value for this input value.", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__EnumValue", - "description": "One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.", - "fields": [ - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isDeprecated", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deprecationReason", - "description": null, - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__Directive", - "description": "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", - "fields": [ - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "locations", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "__DirectiveLocation", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "args", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "__InputValue", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "onOperation", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": true, - "deprecationReason": "Use `locations`." - }, - { - "name": "onFragment", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": true, - "deprecationReason": "Use `locations`." - }, - { - "name": "onField", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": true, - "deprecationReason": "Use `locations`." - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "__DirectiveLocation", - "description": "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "QUERY", - "description": "Location adjacent to a query operation.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "MUTATION", - "description": "Location adjacent to a mutation operation.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SUBSCRIPTION", - "description": "Location adjacent to a subscription operation.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "FIELD", - "description": "Location adjacent to a field.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "FRAGMENT_DEFINITION", - "description": "Location adjacent to a fragment definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "FRAGMENT_SPREAD", - "description": "Location adjacent to a fragment spread.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INLINE_FRAGMENT", - "description": "Location adjacent to an inline fragment.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SCHEMA", - "description": "Location adjacent to a schema definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SCALAR", - "description": "Location adjacent to a scalar definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "OBJECT", - "description": "Location adjacent to an object type definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "FIELD_DEFINITION", - "description": "Location adjacent to a field definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ARGUMENT_DEFINITION", - "description": "Location adjacent to an argument definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INTERFACE", - "description": "Location adjacent to an interface definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "UNION", - "description": "Location adjacent to a union definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ENUM", - "description": "Location adjacent to an enum definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ENUM_VALUE", - "description": "Location adjacent to an enum value definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INPUT_OBJECT", - "description": "Location adjacent to an input object type definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INPUT_FIELD_DEFINITION", - "description": "Location adjacent to an input object field definition.", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ToStringArray", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ToStringArrayNoNullable", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "EventEcsFields", - "description": "", - "fields": [ - { - "name": "action", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "category", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "code", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "created", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToDateArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "dataset", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "duration", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "end", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToDateArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hash", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "kind", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "module", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "original", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "outcome", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "risk_score", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "risk_score_norm", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "severity", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "start", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToDateArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timezone", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ToDateArray", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ToNumberArray", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Location", - "description": "", - "fields": [ - { - "name": "lon", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lat", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "GeoEcsFields", - "description": "", - "fields": [ - { - "name": "city_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "continent_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "country_iso_code", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "country_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "location", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "Location", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "region_iso_code", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "region_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "PrimarySecondary", - "description": "", - "fields": [ - { - "name": "primary", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "secondary", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Summary", - "description": "", - "fields": [ - { - "name": "actor", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "PrimarySecondary", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "object", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "PrimarySecondary", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "how", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "message_type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sequence", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AgentEcsField", - "description": "", - "fields": [ - { - "name": "type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AuditdData", - "description": "", - "fields": [ - { - "name": "acct", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "terminal", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "op", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AuditdEcsFields", - "description": "", - "fields": [ - { - "name": "result", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "session", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "data", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "AuditdData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "summary", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "Summary", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sequence", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "OsEcsFields", - "description": "", - "fields": [ - { - "name": "platform", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "full", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "family", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "version", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "kernel", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "HostEcsFields", - "description": "", - "fields": [ - { - "name": "architecture", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ip", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "mac", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "os", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "OsEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Thread", - "description": "", - "fields": [ - { - "name": "id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "start", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ProcessHashData", - "description": "", - "fields": [ - { - "name": "md5", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sha1", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sha256", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ProcessEcsFields", - "description": "", - "fields": [ - { - "name": "hash", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "ProcessHashData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pid", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ppid", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "args", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "entity_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "executable", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "title", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "thread", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "Thread", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "working_directory", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SourceEcsFields", - "description": "", - "fields": [ - { - "name": "bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ip", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "port", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "domain", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "geo", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "GeoEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "packets", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "DestinationEcsFields", - "description": "", - "fields": [ - { - "name": "bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ip", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "port", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "domain", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "geo", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "GeoEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "packets", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "DnsQuestionData", - "description": "", - "fields": [ - { - "name": "name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "DnsEcsFields", - "description": "", - "fields": [ - { - "name": "question", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "DnsQuestionData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "resolved_ip", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "response_code", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "EndgameEcsFields", - "description": "", - "fields": [ - { - "name": "exit_code", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "file_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "file_path", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "logon_type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "parent_process_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pid", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "process_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "subject_domain_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "subject_logon_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "subject_user_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "target_domain_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "target_logon_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "target_user_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SuricataAlertData", - "description": "", - "fields": [ - { - "name": "signature", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "signature_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SuricataEveData", - "description": "", - "fields": [ - { - "name": "alert", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "SuricataAlertData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "flow_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "proto", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SuricataEcsFields", - "description": "", - "fields": [ - { - "name": "eve", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "SuricataEveData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "TlsJa3Data", - "description": "", - "fields": [ - { - "name": "hash", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "FingerprintData", - "description": "", - "fields": [ - { - "name": "sha1", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "TlsClientCertificateData", - "description": "", - "fields": [ - { - "name": "fingerprint", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "FingerprintData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "TlsServerCertificateData", - "description": "", - "fields": [ - { - "name": "fingerprint", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "FingerprintData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "TlsFingerprintsData", - "description": "", - "fields": [ - { - "name": "ja3", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "TlsJa3Data", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "TlsEcsFields", - "description": "", - "fields": [ - { - "name": "client_certificate", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "TlsClientCertificateData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fingerprints", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "TlsFingerprintsData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "server_certificate", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "TlsServerCertificateData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZeekConnectionData", - "description": "", - "fields": [ - { - "name": "local_resp", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "local_orig", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "missed_bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "state", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "history", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ToBooleanArray", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZeekNoticeData", - "description": "", - "fields": [ - { - "name": "suppress_for", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "msg", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "note", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sub", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "dst", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "dropped", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "peer_descr", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZeekDnsData", - "description": "", - "fields": [ - { - "name": "AA", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "qclass_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "RD", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "qtype_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "rejected", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "qtype", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "query", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "trans_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "qclass", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "RA", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "TC", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "FileFields", - "description": "", - "fields": [ - { - "name": "name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "path", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "target_path", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "extension", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "device", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "inode", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "uid", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "owner", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "gid", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "group", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "mode", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "size", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "mtime", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToDateArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ctime", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToDateArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZeekHttpData", - "description": "", - "fields": [ - { - "name": "resp_mime_types", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "trans_depth", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "status_msg", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "resp_fuids", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tags", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "HttpBodyData", - "description": "", - "fields": [ - { - "name": "content", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "HttpRequestData", - "description": "", - "fields": [ - { - "name": "method", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "body", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "HttpBodyData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "referrer", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "HttpResponseData", - "description": "", - "fields": [ - { - "name": "status_code", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "body", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "HttpBodyData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "HttpEcsFields", - "description": "", - "fields": [ - { - "name": "version", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "request", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "HttpRequestData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "response", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "HttpResponseData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "UrlEcsFields", - "description": "", - "fields": [ - { - "name": "domain", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "original", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "username", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "password", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZeekFileData", - "description": "", - "fields": [ - { - "name": "session_ids", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timedout", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "local_orig", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tx_host", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "source", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "is_orig", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "overflow_bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sha1", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "duration", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "depth", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "analyzers", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "mime_type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "rx_host", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "total_bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fuid", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "seen_bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "missing_bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "md5", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZeekSslData", - "description": "", - "fields": [ - { - "name": "cipher", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "established", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "resumed", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "version", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZeekEcsFields", - "description": "", - "fields": [ - { - "name": "session_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "connection", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "ZeekConnectionData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notice", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "ZeekNoticeData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "dns", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "ZeekDnsData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "http", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "ZeekHttpData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "files", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "ZeekFileData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ssl", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "ZeekSslData", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "UserEcsFields", - "description": "", - "fields": [ - { - "name": "domain", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "full_name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "email", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hash", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "group", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "WinlogEcsFields", - "description": "", - "fields": [ - { - "name": "event_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "NetworkEcsField", - "description": "", - "fields": [ - { - "name": "bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "community_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "direction", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "packets", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "protocol", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "transport", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "PackageEcsFields", - "description": "", - "fields": [ - { - "name": "arch", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "entity_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "size", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "summary", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "version", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AuditEcsFields", - "description": "", - "fields": [ - { - "name": "package", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "PackageEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SshEcsFields", - "description": "", - "fields": [ - { - "name": "method", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "signature", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AuthEcsFields", - "description": "", - "fields": [ - { - "name": "ssh", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "SshEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SystemEcsField", - "description": "", - "fields": [ - { - "name": "audit", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "AuditEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "auth", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "AuthEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "RuleField", - "description": "", - "fields": [ - { - "name": "id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "rule_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "false_positives", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "saved_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timeline_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timeline_title", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "max_signals", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToNumberArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "risk_score", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "output_index", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "from", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "immutable", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "index", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "interval", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "language", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "query", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "references", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "severity", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tags", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "threat", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToAny", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "size", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "to", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "enabled", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToBooleanArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "filters", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToAny", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "created_at", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updated_at", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "created_by", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updated_by", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "version", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "note", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "threshold", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToAny", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "exceptions_list", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToAny", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SignalField", - "description": "", - "fields": [ - { - "name": "rule", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "RuleField", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "original_time", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "status", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "RuleEcsField", - "description": "", - "fields": [ - { - "name": "reference", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ECS", - "description": "", - "fields": [ - { - "name": "_id", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "_index", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "agent", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "AgentEcsField", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "auditd", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "AuditdEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "destination", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "DestinationEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "dns", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "DnsEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "endgame", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "EndgameEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "event", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "EventEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "geo", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "GeoEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "host", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "HostEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "network", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "NetworkEcsField", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "rule", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "RuleEcsField", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "signal", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "SignalField", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "source", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "SourceEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "suricata", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "SuricataEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tls", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "TlsEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "zeek", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "ZeekEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "http", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "HttpEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "url", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "UrlEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timestamp", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Date", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "message", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArray", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "user", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "UserEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "winlog", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "WinlogEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "process", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "ProcessEcsFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "file", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "FileFields", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "system", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "SystemEcsField", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Date", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "EcsEdges", - "description": "", - "fields": [ - { - "name": "node", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "ECS", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "cursor", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "CursorType", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "CursorType", - "description": "", - "fields": [ - { - "name": "value", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tiebreaker", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ToIFieldSubTypeNonNullable", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "IndexField", - "description": "A descriptor of a field in an index", - "fields": [ - { - "name": "category", - "description": "Where the field belong", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "example", - "description": "Example of field's value", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "indexes", - "description": "whether the field's belong to an alias index", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": "The name of the field", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": "The type of the field's values as recognized by Kibana", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "searchable", - "description": "Whether the field's values can be efficiently searched for", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "aggregatable", - "description": "Whether the field's values can be aggregated", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": "Description of the field", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "format", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "esTypes", - "description": "the elastic type as mapped in the index", - "args": [], - "type": { "kind": "SCALAR", "name": "ToStringArrayNoNullable", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "subType", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "ToIFieldSubTypeNonNullable", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "TimerangeInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "interval", - "description": "The interval string to use for last bucket. The format is '{value}{unit}'. For example '5m' would return the metrics for the last 5 minutes of the timespan.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "to", - "description": "The end of the timerange", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "from", - "description": "The beginning of the timerange", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "docValueFieldsInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "field", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "format", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "PaginationInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "limit", - "description": "The limit parameter allows you to configure the maximum amount of items to be returned", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "cursor", - "description": "The cursor parameter defines the next result you want to fetch", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "tiebreaker", - "description": "The tiebreaker parameter allow to be more precise to fetch the next item", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "PaginationInputPaginated", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "activePage", - "description": "The activePage parameter defines the page of results you want to fetch", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "cursorStart", - "description": "The cursorStart parameter defines the start of the results to be displayed", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "fakePossibleCount", - "description": "The fakePossibleCount parameter determines the total count in order to show 5 additional pages", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "querySize", - "description": "The querySize parameter is the number of items to be returned", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "FlowTarget", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { "name": "client", "description": "", "isDeprecated": false, "deprecationReason": null }, - { - "name": "destination", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { "name": "server", "description": "", "isDeprecated": false, "deprecationReason": null }, - { "name": "source", "description": "", "isDeprecated": false, "deprecationReason": null } - ], - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "FlowTargetSourceDest", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "destination", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { "name": "source", "description": "", "isDeprecated": false, "deprecationReason": null } - ], - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "FlowDirection", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "uniDirectional", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "biDirectional", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SortField", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "sortFieldId", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "Direction", "ofType": null } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "PageInfo", - "description": "", - "fields": [ - { - "name": "endCursor", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "CursorType", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hasNextPage", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Boolean", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Inspect", - "description": "", - "fields": [ - { - "name": "dsl", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "response", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "PageInfoPaginated", - "description": "", - "fields": [ - { - "name": "activePage", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fakeTotalCount", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "showMorePagesIndicator", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "FavoriteTimelineInput", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "fullName", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "userName", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "favoriteDate", - "description": "", - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - } - ], - "directives": [ - { - "name": "skip", - "description": "Directs the executor to skip this field or fragment when the `if` argument is true.", - "locations": ["FIELD", "FRAGMENT_SPREAD", "INLINE_FRAGMENT"], - "args": [ - { - "name": "if", - "description": "Skipped when true.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "defaultValue": null - } - ] - }, - { - "name": "include", - "description": "Directs the executor to include this field or fragment only when the `if` argument is true.", - "locations": ["FIELD", "FRAGMENT_SPREAD", "INLINE_FRAGMENT"], - "args": [ - { - "name": "if", - "description": "Included when true.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Boolean", "ofType": null } - }, - "defaultValue": null - } - ] - }, - { - "name": "deprecated", - "description": "Marks an element of a GraphQL schema as no longer supported.", - "locations": ["FIELD_DEFINITION", "ENUM_VALUE"], - "args": [ - { - "name": "reason", - "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/).", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": "\"No longer supported\"" - } - ] - } - ] - } -} diff --git a/x-pack/plugins/security_solution/public/graphql/types.ts b/x-pack/plugins/security_solution/public/graphql/types.ts deleted file mode 100644 index a41111c3e123a..0000000000000 --- a/x-pack/plugins/security_solution/public/graphql/types.ts +++ /dev/null @@ -1,2435 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/* - * 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. - */ - -export type Maybe = T | null; - -export interface PageInfoNote { - pageIndex: number; - - pageSize: number; -} - -export interface SortNote { - sortField: SortFieldNote; - - sortOrder: Direction; -} - -export interface PageInfoTimeline { - pageIndex: number; - - pageSize: number; -} - -export interface SortTimeline { - sortField: SortFieldTimeline; - - sortOrder: Direction; -} - -export interface NoteInput { - eventId?: Maybe; - - note?: Maybe; - - timelineId?: Maybe; -} - -export interface TimelineInput { - columns?: Maybe; - - dataProviders?: Maybe; - - description?: Maybe; - - eqlOptions?: Maybe; - - eventType?: Maybe; - - excludedRowRendererIds?: Maybe; - - filters?: Maybe; - - kqlMode?: Maybe; - - kqlQuery?: Maybe; - - indexNames?: Maybe; - - title?: Maybe; - - templateTimelineId?: Maybe; - - templateTimelineVersion?: Maybe; - - timelineType?: Maybe; - - dateRange?: Maybe; - - savedQueryId?: Maybe; - - sort?: Maybe; - - status?: Maybe; -} - -export interface ColumnHeaderInput { - aggregatable?: Maybe; - - category?: Maybe; - - columnHeaderType?: Maybe; - - description?: Maybe; - - example?: Maybe; - - indexes?: Maybe; - - id?: Maybe; - - name?: Maybe; - - placeholder?: Maybe; - - searchable?: Maybe; - - type?: Maybe; -} - -export interface DataProviderInput { - id?: Maybe; - - name?: Maybe; - - enabled?: Maybe; - - excluded?: Maybe; - - kqlQuery?: Maybe; - - queryMatch?: Maybe; - - and?: Maybe; - - type?: Maybe; -} - -export interface QueryMatchInput { - field?: Maybe; - - displayField?: Maybe; - - value?: Maybe; - - displayValue?: Maybe; - - operator?: Maybe; -} - -export interface EqlOptionsInput { - eventCategoryField?: Maybe; - - tiebreakerField?: Maybe; - - timestampField?: Maybe; - - query?: Maybe; - - size?: Maybe; -} - -export interface FilterTimelineInput { - exists?: Maybe; - - meta?: Maybe; - - match_all?: Maybe; - - missing?: Maybe; - - query?: Maybe; - - range?: Maybe; - - script?: Maybe; -} - -export interface FilterMetaTimelineInput { - alias?: Maybe; - - controlledBy?: Maybe; - - disabled?: Maybe; - - field?: Maybe; - - formattedValue?: Maybe; - - index?: Maybe; - - key?: Maybe; - - negate?: Maybe; - - params?: Maybe; - - type?: Maybe; - - value?: Maybe; -} - -export interface SerializedFilterQueryInput { - filterQuery?: Maybe; -} - -export interface SerializedKueryQueryInput { - kuery?: Maybe; - - serializedQuery?: Maybe; -} - -export interface KueryFilterQueryInput { - kind?: Maybe; - - expression?: Maybe; -} - -export interface DateRangePickerInput { - start?: Maybe; - - end?: Maybe; -} - -export interface SortTimelineInput { - columnId?: Maybe; - - sortDirection?: Maybe; -} - -export interface TimerangeInput { - /** The interval string to use for last bucket. The format is '{value}{unit}'. For example '5m' would return the metrics for the last 5 minutes of the timespan. */ - interval: string; - /** The end of the timerange */ - to: string; - /** The beginning of the timerange */ - from: string; -} - -export interface DocValueFieldsInput { - field: string; - - format: string; -} - -export interface PaginationInput { - /** The limit parameter allows you to configure the maximum amount of items to be returned */ - limit: number; - /** The cursor parameter defines the next result you want to fetch */ - cursor?: Maybe; - /** The tiebreaker parameter allow to be more precise to fetch the next item */ - tiebreaker?: Maybe; -} - -export interface PaginationInputPaginated { - /** The activePage parameter defines the page of results you want to fetch */ - activePage: number; - /** The cursorStart parameter defines the start of the results to be displayed */ - cursorStart: number; - /** The fakePossibleCount parameter determines the total count in order to show 5 additional pages */ - fakePossibleCount: number; - /** The querySize parameter is the number of items to be returned */ - querySize: number; -} - -export interface SortField { - sortFieldId: string; - - direction: Direction; -} - -export interface FavoriteTimelineInput { - fullName?: Maybe; - - userName?: Maybe; - - favoriteDate?: Maybe; -} - -export enum SortFieldNote { - updatedBy = 'updatedBy', - updated = 'updated', -} - -export enum Direction { - asc = 'asc', - desc = 'desc', -} - -export enum TimelineType { - default = 'default', - template = 'template', -} - -export enum DataProviderType { - default = 'default', - template = 'template', -} - -export enum RowRendererId { - alerts = 'alerts', - auditd = 'auditd', - auditd_file = 'auditd_file', - library = 'library', - netflow = 'netflow', - plain = 'plain', - registry = 'registry', - suricata = 'suricata', - system = 'system', - system_dns = 'system_dns', - system_endgame_process = 'system_endgame_process', - system_file = 'system_file', - system_fim = 'system_fim', - system_security_event = 'system_security_event', - system_socket = 'system_socket', - threat_match = 'threat_match', - zeek = 'zeek', -} - -export enum TimelineStatus { - active = 'active', - draft = 'draft', - immutable = 'immutable', -} - -export enum SortFieldTimeline { - title = 'title', - description = 'description', - updated = 'updated', - created = 'created', -} - -export enum FlowTarget { - client = 'client', - destination = 'destination', - server = 'server', - source = 'source', -} - -export enum FlowTargetSourceDest { - destination = 'destination', - source = 'source', -} - -export enum FlowDirection { - uniDirectional = 'uniDirectional', - biDirectional = 'biDirectional', -} - -export type ToAny = any; - -export type ToStringArray = string[]; - -export type ToStringArrayNoNullable = any; - -export type ToDateArray = string[]; - -export type ToNumberArray = number[]; - -export type ToBooleanArray = boolean[]; - -export type Date = string; - -export type ToIFieldSubTypeNonNullable = any; - -// ==================================================== -// Scalars -// ==================================================== - -// ==================================================== -// Types -// ==================================================== - -export interface Query { - getNote: NoteResult; - - getNotesByTimelineId: NoteResult[]; - - getNotesByEventId: NoteResult[]; - - getAllNotes: ResponseNotes; - - getAllPinnedEventsByTimelineId: PinnedEvent[]; - /** Get a security data source by id */ - source: Source; - /** Get a list of all security data sources */ - allSources: Source[]; - - getOneTimeline: TimelineResult; - - getAllTimeline: ResponseTimelines; -} - -export interface NoteResult { - eventId?: Maybe; - - note?: Maybe; - - timelineId?: Maybe; - - noteId: string; - - created?: Maybe; - - createdBy?: Maybe; - - timelineVersion?: Maybe; - - updated?: Maybe; - - updatedBy?: Maybe; - - version?: Maybe; -} - -export interface ResponseNotes { - notes: NoteResult[]; - - totalCount?: Maybe; -} - -export interface PinnedEvent { - code?: Maybe; - - message?: Maybe; - - pinnedEventId: string; - - eventId?: Maybe; - - timelineId?: Maybe; - - timelineVersion?: Maybe; - - created?: Maybe; - - createdBy?: Maybe; - - updated?: Maybe; - - updatedBy?: Maybe; - - version?: Maybe; -} - -export interface Source { - /** The id of the source */ - id: string; - /** The raw configuration of the source */ - configuration: SourceConfiguration; - /** The status of the source */ - status: SourceStatus; -} - -/** A set of configuration options for a security data source */ -export interface SourceConfiguration { - /** The field mapping to use for this source */ - fields: SourceFields; -} - -/** A mapping of semantic fields to their document counterparts */ -export interface SourceFields { - /** The field to identify a container by */ - container: string; - /** The fields to identify a host by */ - host: string; - /** The fields that may contain the log event message. The first field found win. */ - message: string[]; - /** The field to identify a pod by */ - pod: string; - /** The field to use as a tiebreaker for log events that have identical timestamps */ - tiebreaker: string; - /** The field to use as a timestamp for metrics and logs */ - timestamp: string; -} - -/** The status of an infrastructure data source */ -export interface SourceStatus { - /** Whether the configured alias or wildcard pattern resolve to any auditbeat indices */ - indicesExist: boolean; - /** The list of fields defined in the index mappings */ - indexFields: string[]; -} - -export interface TimelineResult { - columns?: Maybe; - - created?: Maybe; - - createdBy?: Maybe; - - dataProviders?: Maybe; - - dateRange?: Maybe; - - description?: Maybe; - - eqlOptions?: Maybe; - - eventIdToNoteIds?: Maybe; - - eventType?: Maybe; - - excludedRowRendererIds?: Maybe; - - favorite?: Maybe; - - filters?: Maybe; - - kqlMode?: Maybe; - - kqlQuery?: Maybe; - - indexNames?: Maybe; - - notes?: Maybe; - - noteIds?: Maybe; - - pinnedEventIds?: Maybe; - - pinnedEventsSaveObject?: Maybe; - - savedQueryId?: Maybe; - - savedObjectId: string; - - sort?: Maybe; - - status?: Maybe; - - title?: Maybe; - - templateTimelineId?: Maybe; - - templateTimelineVersion?: Maybe; - - timelineType?: Maybe; - - updated?: Maybe; - - updatedBy?: Maybe; - - version: string; -} - -export interface ColumnHeaderResult { - aggregatable?: Maybe; - - category?: Maybe; - - columnHeaderType?: Maybe; - - description?: Maybe; - - example?: Maybe; - - indexes?: Maybe; - - id?: Maybe; - - name?: Maybe; - - placeholder?: Maybe; - - searchable?: Maybe; - - type?: Maybe; -} - -export interface DataProviderResult { - id?: Maybe; - - name?: Maybe; - - enabled?: Maybe; - - excluded?: Maybe; - - kqlQuery?: Maybe; - - queryMatch?: Maybe; - - type?: Maybe; - - and?: Maybe; -} - -export interface QueryMatchResult { - field?: Maybe; - - displayField?: Maybe; - - value?: Maybe; - - displayValue?: Maybe; - - operator?: Maybe; -} - -export interface DateRangePickerResult { - start?: Maybe; - - end?: Maybe; -} - -export interface EqlOptionsResult { - eventCategoryField?: Maybe; - - tiebreakerField?: Maybe; - - timestampField?: Maybe; - - query?: Maybe; - - size?: Maybe; -} - -export interface FavoriteTimelineResult { - fullName?: Maybe; - - userName?: Maybe; - - favoriteDate?: Maybe; -} - -export interface FilterTimelineResult { - exists?: Maybe; - - meta?: Maybe; - - match_all?: Maybe; - - missing?: Maybe; - - query?: Maybe; - - range?: Maybe; - - script?: Maybe; -} - -export interface FilterMetaTimelineResult { - alias?: Maybe; - - controlledBy?: Maybe; - - disabled?: Maybe; - - field?: Maybe; - - formattedValue?: Maybe; - - index?: Maybe; - - key?: Maybe; - - negate?: Maybe; - - params?: Maybe; - - type?: Maybe; - - value?: Maybe; -} - -export interface SerializedFilterQueryResult { - filterQuery?: Maybe; -} - -export interface SerializedKueryQueryResult { - kuery?: Maybe; - - serializedQuery?: Maybe; -} - -export interface KueryFilterQueryResult { - kind?: Maybe; - - expression?: Maybe; -} - -export interface ResponseTimelines { - timeline: (Maybe)[]; - - totalCount?: Maybe; - - defaultTimelineCount?: Maybe; - - templateTimelineCount?: Maybe; - - elasticTemplateTimelineCount?: Maybe; - - customTemplateTimelineCount?: Maybe; - - favoriteCount?: Maybe; -} - -export interface Mutation { - /** Persists a note */ - persistNote: ResponseNote; - - deleteNote?: Maybe; - - deleteNoteByTimelineId?: Maybe; - /** Persists a pinned event in a timeline */ - persistPinnedEventOnTimeline?: Maybe; - /** Remove a pinned events in a timeline */ - deletePinnedEventOnTimeline: boolean; - /** Remove all pinned events in a timeline */ - deleteAllPinnedEventsOnTimeline: boolean; - /** Persists a timeline */ - persistTimeline: ResponseTimeline; - - persistFavorite: ResponseFavoriteTimeline; - - deleteTimeline: boolean; -} - -export interface ResponseNote { - code?: Maybe; - - message?: Maybe; - - note: NoteResult; -} - -export interface ResponseTimeline { - code?: Maybe; - - message?: Maybe; - - timeline: TimelineResult; -} - -export interface ResponseFavoriteTimeline { - code?: Maybe; - - message?: Maybe; - - savedObjectId: string; - - templateTimelineId?: Maybe; - - templateTimelineVersion?: Maybe; - - timelineType?: Maybe; - - version: string; - - favorite?: Maybe; -} - -export interface EventEcsFields { - action?: Maybe; - - category?: Maybe; - - code?: Maybe; - - created?: Maybe; - - dataset?: Maybe; - - duration?: Maybe; - - end?: Maybe; - - hash?: Maybe; - - id?: Maybe; - - kind?: Maybe; - - module?: Maybe; - - original?: Maybe; - - outcome?: Maybe; - - risk_score?: Maybe; - - risk_score_norm?: Maybe; - - severity?: Maybe; - - start?: Maybe; - - timezone?: Maybe; - - type?: Maybe; -} - -export interface Location { - lon?: Maybe; - - lat?: Maybe; -} - -export interface GeoEcsFields { - city_name?: Maybe; - - continent_name?: Maybe; - - country_iso_code?: Maybe; - - country_name?: Maybe; - - location?: Maybe; - - region_iso_code?: Maybe; - - region_name?: Maybe; -} - -export interface PrimarySecondary { - primary?: Maybe; - - secondary?: Maybe; - - type?: Maybe; -} - -export interface Summary { - actor?: Maybe; - - object?: Maybe; - - how?: Maybe; - - message_type?: Maybe; - - sequence?: Maybe; -} - -export interface AgentEcsField { - type?: Maybe; -} - -export interface AuditdData { - acct?: Maybe; - - terminal?: Maybe; - - op?: Maybe; -} - -export interface AuditdEcsFields { - result?: Maybe; - - session?: Maybe; - - data?: Maybe; - - summary?: Maybe

    ; - - sequence?: Maybe; -} - -export interface OsEcsFields { - platform?: Maybe; - - name?: Maybe; - - full?: Maybe; - - family?: Maybe; - - version?: Maybe; - - kernel?: Maybe; -} - -export interface HostEcsFields { - architecture?: Maybe; - - id?: Maybe; - - ip?: Maybe; - - mac?: Maybe; - - name?: Maybe; - - os?: Maybe; - - type?: Maybe; -} - -export interface Thread { - id?: Maybe; - - start?: Maybe; -} - -export interface ProcessHashData { - md5?: Maybe; - - sha1?: Maybe; - - sha256?: Maybe; -} - -export interface ProcessEcsFields { - hash?: Maybe; - - pid?: Maybe; - - name?: Maybe; - - ppid?: Maybe; - - args?: Maybe; - - entity_id?: Maybe; - - executable?: Maybe; - - title?: Maybe; - - thread?: Maybe; - - working_directory?: Maybe; -} - -export interface SourceEcsFields { - bytes?: Maybe; - - ip?: Maybe; - - port?: Maybe; - - domain?: Maybe; - - geo?: Maybe; - - packets?: Maybe; -} - -export interface DestinationEcsFields { - bytes?: Maybe; - - ip?: Maybe; - - port?: Maybe; - - domain?: Maybe; - - geo?: Maybe; - - packets?: Maybe; -} - -export interface DnsQuestionData { - name?: Maybe; - - type?: Maybe; -} - -export interface DnsEcsFields { - question?: Maybe; - - resolved_ip?: Maybe; - - response_code?: Maybe; -} - -export interface EndgameEcsFields { - exit_code?: Maybe; - - file_name?: Maybe; - - file_path?: Maybe; - - logon_type?: Maybe; - - parent_process_name?: Maybe; - - pid?: Maybe; - - process_name?: Maybe; - - subject_domain_name?: Maybe; - - subject_logon_id?: Maybe; - - subject_user_name?: Maybe; - - target_domain_name?: Maybe; - - target_logon_id?: Maybe; - - target_user_name?: Maybe; -} - -export interface SuricataAlertData { - signature?: Maybe; - - signature_id?: Maybe; -} - -export interface SuricataEveData { - alert?: Maybe; - - flow_id?: Maybe; - - proto?: Maybe; -} - -export interface SuricataEcsFields { - eve?: Maybe; -} - -export interface TlsJa3Data { - hash?: Maybe; -} - -export interface FingerprintData { - sha1?: Maybe; -} - -export interface TlsClientCertificateData { - fingerprint?: Maybe; -} - -export interface TlsServerCertificateData { - fingerprint?: Maybe; -} - -export interface TlsFingerprintsData { - ja3?: Maybe; -} - -export interface TlsEcsFields { - client_certificate?: Maybe; - - fingerprints?: Maybe; - - server_certificate?: Maybe; -} - -export interface ZeekConnectionData { - local_resp?: Maybe; - - local_orig?: Maybe; - - missed_bytes?: Maybe; - - state?: Maybe; - - history?: Maybe; -} - -export interface ZeekNoticeData { - suppress_for?: Maybe; - - msg?: Maybe; - - note?: Maybe; - - sub?: Maybe; - - dst?: Maybe; - - dropped?: Maybe; - - peer_descr?: Maybe; -} - -export interface ZeekDnsData { - AA?: Maybe; - - qclass_name?: Maybe; - - RD?: Maybe; - - qtype_name?: Maybe; - - rejected?: Maybe; - - qtype?: Maybe; - - query?: Maybe; - - trans_id?: Maybe; - - qclass?: Maybe; - - RA?: Maybe; - - TC?: Maybe; -} - -export interface FileFields { - name?: Maybe; - - path?: Maybe; - - target_path?: Maybe; - - extension?: Maybe; - - type?: Maybe; - - device?: Maybe; - - inode?: Maybe; - - uid?: Maybe; - - owner?: Maybe; - - gid?: Maybe; - - group?: Maybe; - - mode?: Maybe; - - size?: Maybe; - - mtime?: Maybe; - - ctime?: Maybe; -} - -export interface ZeekHttpData { - resp_mime_types?: Maybe; - - trans_depth?: Maybe; - - status_msg?: Maybe; - - resp_fuids?: Maybe; - - tags?: Maybe; -} - -export interface HttpBodyData { - content?: Maybe; - - bytes?: Maybe; -} - -export interface HttpRequestData { - method?: Maybe; - - body?: Maybe; - - referrer?: Maybe; - - bytes?: Maybe; -} - -export interface HttpResponseData { - status_code?: Maybe; - - body?: Maybe; - - bytes?: Maybe; -} - -export interface HttpEcsFields { - version?: Maybe; - - request?: Maybe; - - response?: Maybe; -} - -export interface UrlEcsFields { - domain?: Maybe; - - original?: Maybe; - - username?: Maybe; - - password?: Maybe; -} - -export interface ZeekFileData { - session_ids?: Maybe; - - timedout?: Maybe; - - local_orig?: Maybe; - - tx_host?: Maybe; - - source?: Maybe; - - is_orig?: Maybe; - - overflow_bytes?: Maybe; - - sha1?: Maybe; - - duration?: Maybe; - - depth?: Maybe; - - analyzers?: Maybe; - - mime_type?: Maybe; - - rx_host?: Maybe; - - total_bytes?: Maybe; - - fuid?: Maybe; - - seen_bytes?: Maybe; - - missing_bytes?: Maybe; - - md5?: Maybe; -} - -export interface ZeekSslData { - cipher?: Maybe; - - established?: Maybe; - - resumed?: Maybe; - - version?: Maybe; -} - -export interface ZeekEcsFields { - session_id?: Maybe; - - connection?: Maybe; - - notice?: Maybe; - - dns?: Maybe; - - http?: Maybe; - - files?: Maybe; - - ssl?: Maybe; -} - -export interface UserEcsFields { - domain?: Maybe; - - id?: Maybe; - - name?: Maybe; - - full_name?: Maybe; - - email?: Maybe; - - hash?: Maybe; - - group?: Maybe; -} - -export interface WinlogEcsFields { - event_id?: Maybe; -} - -export interface NetworkEcsField { - bytes?: Maybe; - - community_id?: Maybe; - - direction?: Maybe; - - packets?: Maybe; - - protocol?: Maybe; - - transport?: Maybe; -} - -export interface PackageEcsFields { - arch?: Maybe; - - entity_id?: Maybe; - - name?: Maybe; - - size?: Maybe; - - summary?: Maybe; - - version?: Maybe; -} - -export interface AuditEcsFields { - package?: Maybe; -} - -export interface SshEcsFields { - method?: Maybe; - - signature?: Maybe; -} - -export interface AuthEcsFields { - ssh?: Maybe; -} - -export interface SystemEcsField { - audit?: Maybe; - - auth?: Maybe; -} - -export interface RuleField { - id?: Maybe; - - rule_id?: Maybe; - - false_positives: string[]; - - saved_id?: Maybe; - - timeline_id?: Maybe; - - timeline_title?: Maybe; - - max_signals?: Maybe; - - risk_score?: Maybe; - - output_index?: Maybe; - - description?: Maybe; - - from?: Maybe; - - immutable?: Maybe; - - index?: Maybe; - - interval?: Maybe; - - language?: Maybe; - - query?: Maybe; - - references?: Maybe; - - severity?: Maybe; - - tags?: Maybe; - - threat?: Maybe; - - type?: Maybe; - - size?: Maybe; - - to?: Maybe; - - enabled?: Maybe; - - filters?: Maybe; - - created_at?: Maybe; - - updated_at?: Maybe; - - created_by?: Maybe; - - updated_by?: Maybe; - - version?: Maybe; - - note?: Maybe; - - threshold?: Maybe; - - exceptions_list?: Maybe; -} - -export interface SignalField { - rule?: Maybe; - - original_time?: Maybe; - - status?: Maybe; -} - -export interface RuleEcsField { - reference?: Maybe; -} - -export interface Ecs { - _id: string; - - _index?: Maybe; - - agent?: Maybe; - - auditd?: Maybe; - - destination?: Maybe; - - dns?: Maybe; - - endgame?: Maybe; - - event?: Maybe; - - geo?: Maybe; - - host?: Maybe; - - network?: Maybe; - - rule?: Maybe; - - signal?: Maybe; - - source?: Maybe; - - suricata?: Maybe; - - tls?: Maybe; - - zeek?: Maybe; - - http?: Maybe; - - url?: Maybe; - - timestamp?: Maybe; - - message?: Maybe; - - user?: Maybe; - - winlog?: Maybe; - - process?: Maybe; - - file?: Maybe; - - system?: Maybe; -} - -export interface EcsEdges { - node: Ecs; - - cursor: CursorType; -} - -export interface CursorType { - value?: Maybe; - - tiebreaker?: Maybe; -} - -/** A descriptor of a field in an index */ -export interface IndexField { - /** Where the field belong */ - category: string; - /** Example of field's value */ - example?: Maybe; - /** whether the field's belong to an alias index */ - indexes: (Maybe)[]; - /** The name of the field */ - name: string; - /** The type of the field's values as recognized by Kibana */ - type: string; - /** Whether the field's values can be efficiently searched for */ - searchable: boolean; - /** Whether the field's values can be aggregated */ - aggregatable: boolean; - /** Description of the field */ - description?: Maybe; - - format?: Maybe; - /** the elastic type as mapped in the index */ - esTypes?: Maybe; - - subType?: Maybe; -} - -export interface PageInfo { - endCursor?: Maybe; - - hasNextPage?: Maybe; -} - -export interface Inspect { - dsl: string[]; - - response: string[]; -} - -export interface PageInfoPaginated { - activePage: number; - - fakeTotalCount: number; - - showMorePagesIndicator: boolean; -} - -// ==================================================== -// Arguments -// ==================================================== - -export interface GetNoteQueryArgs { - id: string; -} -export interface GetNotesByTimelineIdQueryArgs { - timelineId: string; -} -export interface GetNotesByEventIdQueryArgs { - eventId: string; -} -export interface GetAllNotesQueryArgs { - pageInfo?: Maybe; - - search?: Maybe; - - sort?: Maybe; -} -export interface GetAllPinnedEventsByTimelineIdQueryArgs { - timelineId: string; -} -export interface SourceQueryArgs { - /** The id of the source */ - id: string; -} -export interface GetOneTimelineQueryArgs { - id: string; - - timelineType?: Maybe; -} -export interface GetAllTimelineQueryArgs { - pageInfo: PageInfoTimeline; - - search?: Maybe; - - sort?: Maybe; - - onlyUserFavorite?: Maybe; - - timelineType?: Maybe; - - status?: Maybe; -} -export interface IndicesExistSourceStatusArgs { - defaultIndex: string[]; -} -export interface IndexFieldsSourceStatusArgs { - defaultIndex: string[]; -} -export interface PersistNoteMutationArgs { - noteId?: Maybe; - - version?: Maybe; - - note: NoteInput; -} -export interface DeleteNoteMutationArgs { - id: string[]; -} -export interface DeleteNoteByTimelineIdMutationArgs { - timelineId: string; - - version?: Maybe; -} -export interface PersistPinnedEventOnTimelineMutationArgs { - pinnedEventId?: Maybe; - - eventId: string; - - timelineId?: Maybe; -} -export interface DeletePinnedEventOnTimelineMutationArgs { - id: string[]; -} -export interface DeleteAllPinnedEventsOnTimelineMutationArgs { - timelineId: string; -} -export interface PersistTimelineMutationArgs { - id?: Maybe; - - version?: Maybe; - - timeline: TimelineInput; -} -export interface PersistFavoriteMutationArgs { - timelineId?: Maybe; - - templateTimelineId?: Maybe; - - templateTimelineVersion?: Maybe; - - timelineType?: Maybe; -} -export interface DeleteTimelineMutationArgs { - id: string[]; -} - -// ==================================================== -// Documents -// ==================================================== - -export namespace GetAllTimeline { - export type Variables = { - pageInfo: PageInfoTimeline; - search?: Maybe; - sort?: Maybe; - onlyUserFavorite?: Maybe; - timelineType?: Maybe; - status?: Maybe; - }; - - export type Query = { - __typename?: 'Query'; - - getAllTimeline: GetAllTimeline; - }; - - export type GetAllTimeline = { - __typename?: 'ResponseTimelines'; - - totalCount: Maybe; - - defaultTimelineCount: Maybe; - - templateTimelineCount: Maybe; - - elasticTemplateTimelineCount: Maybe; - - customTemplateTimelineCount: Maybe; - - favoriteCount: Maybe; - - timeline: (Maybe)[]; - }; - - export type Timeline = { - __typename?: 'TimelineResult'; - - savedObjectId: string; - - description: Maybe; - - favorite: Maybe; - - eventIdToNoteIds: Maybe; - - excludedRowRendererIds: Maybe; - - notes: Maybe; - - noteIds: Maybe; - - pinnedEventIds: Maybe; - - status: Maybe; - - title: Maybe; - - timelineType: Maybe; - - templateTimelineId: Maybe; - - templateTimelineVersion: Maybe; - - created: Maybe; - - createdBy: Maybe; - - updated: Maybe; - - updatedBy: Maybe; - - version: string; - }; - - export type Favorite = { - __typename?: 'FavoriteTimelineResult'; - - fullName: Maybe; - - userName: Maybe; - - favoriteDate: Maybe; - }; - - export type EventIdToNoteIds = { - __typename?: 'NoteResult'; - - eventId: Maybe; - - note: Maybe; - - timelineId: Maybe; - - noteId: string; - - created: Maybe; - - createdBy: Maybe; - - timelineVersion: Maybe; - - updated: Maybe; - - updatedBy: Maybe; - - version: Maybe; - }; - - export type Notes = { - __typename?: 'NoteResult'; - - eventId: Maybe; - - note: Maybe; - - timelineId: Maybe; - - timelineVersion: Maybe; - - noteId: string; - - created: Maybe; - - createdBy: Maybe; - - updated: Maybe; - - updatedBy: Maybe; - - version: Maybe; - }; -} - -export namespace DeleteTimelineMutation { - export type Variables = { - id: string[]; - }; - - export type Mutation = { - __typename?: 'Mutation'; - - deleteTimeline: boolean; - }; -} - -export namespace PersistTimelineFavoriteMutation { - export type Variables = { - timelineId?: Maybe; - templateTimelineId?: Maybe; - templateTimelineVersion?: Maybe; - timelineType: TimelineType; - }; - - export type Mutation = { - __typename?: 'Mutation'; - - persistFavorite: PersistFavorite; - }; - - export type PersistFavorite = { - __typename?: 'ResponseFavoriteTimeline'; - - savedObjectId: string; - - version: string; - - favorite: Maybe; - - templateTimelineId: Maybe; - - templateTimelineVersion: Maybe; - - timelineType: Maybe; - }; - - export type Favorite = { - __typename?: 'FavoriteTimelineResult'; - - fullName: Maybe; - - userName: Maybe; - - favoriteDate: Maybe; - }; -} - -export namespace PersistTimelineNoteMutation { - export type Variables = { - noteId?: Maybe; - version?: Maybe; - note: NoteInput; - }; - - export type Mutation = { - __typename?: 'Mutation'; - - persistNote: PersistNote; - }; - - export type PersistNote = { - __typename?: 'ResponseNote'; - - code: Maybe; - - message: Maybe; - - note: Note; - }; - - export type Note = { - __typename?: 'NoteResult'; - - eventId: Maybe; - - note: Maybe; - - timelineId: Maybe; - - timelineVersion: Maybe; - - noteId: string; - - created: Maybe; - - createdBy: Maybe; - - updated: Maybe; - - updatedBy: Maybe; - - version: Maybe; - }; -} - -export namespace GetOneTimeline { - export type Variables = { - id: string; - timelineType?: Maybe; - }; - - export type Query = { - __typename?: 'Query'; - - getOneTimeline: GetOneTimeline; - }; - - export type GetOneTimeline = { - __typename?: 'TimelineResult'; - - savedObjectId: string; - - columns: Maybe; - - dataProviders: Maybe; - - dateRange: Maybe; - - description: Maybe; - - eqlOptions: Maybe; - - eventType: Maybe; - - eventIdToNoteIds: Maybe; - - excludedRowRendererIds: Maybe; - - favorite: Maybe; - - filters: Maybe; - - kqlMode: Maybe; - - kqlQuery: Maybe; - - indexNames: Maybe; - - notes: Maybe; - - noteIds: Maybe; - - pinnedEventIds: Maybe; - - pinnedEventsSaveObject: Maybe; - - status: Maybe; - - title: Maybe; - - timelineType: Maybe; - - templateTimelineId: Maybe; - - templateTimelineVersion: Maybe; - - savedQueryId: Maybe; - - sort: Maybe; - - created: Maybe; - - createdBy: Maybe; - - updated: Maybe; - - updatedBy: Maybe; - - version: string; - }; - - export type Columns = { - __typename?: 'ColumnHeaderResult'; - - aggregatable: Maybe; - - category: Maybe; - - columnHeaderType: Maybe; - - description: Maybe; - - example: Maybe; - - indexes: Maybe; - - id: Maybe; - - name: Maybe; - - searchable: Maybe; - - type: Maybe; - }; - - export type DataProviders = { - __typename?: 'DataProviderResult'; - - id: Maybe; - - name: Maybe; - - enabled: Maybe; - - excluded: Maybe; - - kqlQuery: Maybe; - - type: Maybe; - - queryMatch: Maybe; - - and: Maybe; - }; - - export type QueryMatch = { - __typename?: 'QueryMatchResult'; - - field: Maybe; - - displayField: Maybe; - - value: Maybe; - - displayValue: Maybe; - - operator: Maybe; - }; - - export type And = { - __typename?: 'DataProviderResult'; - - id: Maybe; - - name: Maybe; - - enabled: Maybe; - - excluded: Maybe; - - kqlQuery: Maybe; - - type: Maybe; - - queryMatch: Maybe<_QueryMatch>; - }; - - export type _QueryMatch = { - __typename?: 'QueryMatchResult'; - - field: Maybe; - - displayField: Maybe; - - value: Maybe; - - displayValue: Maybe; - - operator: Maybe; - }; - - export type DateRange = { - __typename?: 'DateRangePickerResult'; - - start: Maybe; - - end: Maybe; - }; - - export type EqlOptions = { - __typename?: 'EqlOptionsResult'; - - eventCategoryField: Maybe; - - tiebreakerField: Maybe; - - timestampField: Maybe; - - query: Maybe; - - size: Maybe; - }; - - export type EventIdToNoteIds = { - __typename?: 'NoteResult'; - - eventId: Maybe; - - note: Maybe; - - timelineId: Maybe; - - noteId: string; - - created: Maybe; - - createdBy: Maybe; - - timelineVersion: Maybe; - - updated: Maybe; - - updatedBy: Maybe; - - version: Maybe; - }; - - export type Favorite = { - __typename?: 'FavoriteTimelineResult'; - - fullName: Maybe; - - userName: Maybe; - - favoriteDate: Maybe; - }; - - export type Filters = { - __typename?: 'FilterTimelineResult'; - - meta: Maybe; - - query: Maybe; - - exists: Maybe; - - match_all: Maybe; - - missing: Maybe; - - range: Maybe; - - script: Maybe; - }; - - export type Meta = { - __typename?: 'FilterMetaTimelineResult'; - - alias: Maybe; - - controlledBy: Maybe; - - disabled: Maybe; - - field: Maybe; - - formattedValue: Maybe; - - index: Maybe; - - key: Maybe; - - negate: Maybe; - - params: Maybe; - - type: Maybe; - - value: Maybe; - }; - - export type KqlQuery = { - __typename?: 'SerializedFilterQueryResult'; - - filterQuery: Maybe; - }; - - export type FilterQuery = { - __typename?: 'SerializedKueryQueryResult'; - - kuery: Maybe; - - serializedQuery: Maybe; - }; - - export type Kuery = { - __typename?: 'KueryFilterQueryResult'; - - kind: Maybe; - - expression: Maybe; - }; - - export type Notes = { - __typename?: 'NoteResult'; - - eventId: Maybe; - - note: Maybe; - - timelineId: Maybe; - - timelineVersion: Maybe; - - noteId: string; - - created: Maybe; - - createdBy: Maybe; - - updated: Maybe; - - updatedBy: Maybe; - - version: Maybe; - }; - - export type PinnedEventsSaveObject = { - __typename?: 'PinnedEvent'; - - pinnedEventId: string; - - eventId: Maybe; - - timelineId: Maybe; - - created: Maybe; - - createdBy: Maybe; - - updated: Maybe; - - updatedBy: Maybe; - - version: Maybe; - }; -} - -export namespace PersistTimelineMutation { - export type Variables = { - timelineId?: Maybe; - version?: Maybe; - timeline: TimelineInput; - }; - - export type Mutation = { - __typename?: 'Mutation'; - - persistTimeline: PersistTimeline; - }; - - export type PersistTimeline = { - __typename?: 'ResponseTimeline'; - - code: Maybe; - - message: Maybe; - - timeline: Timeline; - }; - - export type Timeline = { - __typename?: 'TimelineResult'; - - savedObjectId: string; - - version: string; - - columns: Maybe; - - dataProviders: Maybe; - - description: Maybe; - - eventType: Maybe; - - excludedRowRendererIds: Maybe; - - favorite: Maybe; - - filters: Maybe; - - kqlMode: Maybe; - - kqlQuery: Maybe; - - indexNames: Maybe; - - title: Maybe; - - dateRange: Maybe; - - savedQueryId: Maybe; - - sort: Maybe; - - created: Maybe; - - createdBy: Maybe; - - updated: Maybe; - - updatedBy: Maybe; - }; - - export type Columns = { - __typename?: 'ColumnHeaderResult'; - - aggregatable: Maybe; - - category: Maybe; - - columnHeaderType: Maybe; - - description: Maybe; - - example: Maybe; - - indexes: Maybe; - - id: Maybe; - - name: Maybe; - - searchable: Maybe; - - type: Maybe; - }; - - export type DataProviders = { - __typename?: 'DataProviderResult'; - - id: Maybe; - - name: Maybe; - - enabled: Maybe; - - excluded: Maybe; - - kqlQuery: Maybe; - - type: Maybe; - - queryMatch: Maybe; - - and: Maybe; - }; - - export type QueryMatch = { - __typename?: 'QueryMatchResult'; - - field: Maybe; - - displayField: Maybe; - - value: Maybe; - - displayValue: Maybe; - - operator: Maybe; - }; - - export type And = { - __typename?: 'DataProviderResult'; - - id: Maybe; - - name: Maybe; - - enabled: Maybe; - - excluded: Maybe; - - kqlQuery: Maybe; - - type: Maybe; - - queryMatch: Maybe<_QueryMatch>; - }; - - export type _QueryMatch = { - __typename?: 'QueryMatchResult'; - - field: Maybe; - - displayField: Maybe; - - value: Maybe; - - displayValue: Maybe; - - operator: Maybe; - }; - - export type Favorite = { - __typename?: 'FavoriteTimelineResult'; - - fullName: Maybe; - - userName: Maybe; - - favoriteDate: Maybe; - }; - - export type Filters = { - __typename?: 'FilterTimelineResult'; - - meta: Maybe; - - query: Maybe; - - exists: Maybe; - - match_all: Maybe; - - missing: Maybe; - - range: Maybe; - - script: Maybe; - }; - - export type Meta = { - __typename?: 'FilterMetaTimelineResult'; - - alias: Maybe; - - controlledBy: Maybe; - - disabled: Maybe; - - field: Maybe; - - formattedValue: Maybe; - - index: Maybe; - - key: Maybe; - - negate: Maybe; - - params: Maybe; - - type: Maybe; - - value: Maybe; - }; - - export type KqlQuery = { - __typename?: 'SerializedFilterQueryResult'; - - filterQuery: Maybe; - }; - - export type FilterQuery = { - __typename?: 'SerializedKueryQueryResult'; - - kuery: Maybe; - - serializedQuery: Maybe; - }; - - export type Kuery = { - __typename?: 'KueryFilterQueryResult'; - - kind: Maybe; - - expression: Maybe; - }; - - export type DateRange = { - __typename?: 'DateRangePickerResult'; - - start: Maybe; - - end: Maybe; - }; -} - -export namespace PersistTimelinePinnedEventMutation { - export type Variables = { - pinnedEventId?: Maybe; - eventId: string; - timelineId?: Maybe; - }; - - export type Mutation = { - __typename?: 'Mutation'; - - persistPinnedEventOnTimeline: Maybe; - }; - - export type PersistPinnedEventOnTimeline = { - __typename?: 'PinnedEvent'; - - pinnedEventId: string; - - eventId: Maybe; - - timelineId: Maybe; - - timelineVersion: Maybe; - - created: Maybe; - - createdBy: Maybe; - - updated: Maybe; - - updatedBy: Maybe; - - version: Maybe; - }; -} diff --git a/x-pack/plugins/security_solution/public/hosts/components/authentications_table/index.test.tsx b/x-pack/plugins/security_solution/public/hosts/components/authentications_table/index.test.tsx index a63300738ebf0..8013208d02cc3 100644 --- a/x-pack/plugins/security_solution/public/hosts/components/authentications_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/hosts/components/authentications_table/index.test.tsx @@ -12,7 +12,6 @@ import { Provider as ReduxStoreProvider } from 'react-redux'; import '../../../common/mock/match_media'; import { - apolloClientObservable, mockGlobalState, SUB_PLUGINS_REDUCER, kibanaObservable, @@ -29,22 +28,10 @@ describe('Authentication Table Component', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); describe('rendering', () => { diff --git a/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.test.tsx b/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.test.tsx index 613ef2c3366dc..0808238151e03 100644 --- a/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/hosts/components/hosts_table/index.test.tsx @@ -7,11 +7,9 @@ import { shallow } from 'enzyme'; import React from 'react'; -import { MockedProvider } from 'react-apollo/test-utils'; import '../../../common/mock/match_media'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -41,23 +39,11 @@ describe('Hosts Table', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const mount = useMountAppended(); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); describe('rendering', () => { @@ -86,21 +72,19 @@ describe('Hosts Table', () => { beforeEach(() => { wrapper = mount( - - - - - + + + ); }); test('Initial value of the store', () => { diff --git a/x-pack/plugins/security_solution/public/hosts/pages/hosts.test.tsx b/x-pack/plugins/security_solution/public/hosts/pages/hosts.test.tsx index ddea55158d9fd..4871cfcb069d2 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/hosts.test.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/hosts.test.tsx @@ -12,7 +12,6 @@ import { Router } from 'react-router-dom'; import { Filter } from '../../../../../../src/plugins/data/common/es_query'; import '../../common/mock/match_media'; import { - apolloClientObservable, TestProviders, mockGlobalState, SUB_PLUGINS_REDUCER, @@ -144,13 +143,7 @@ describe('Hosts - rendering', () => { }); const myState: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - const myStore = createStore( - myState, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + const myStore = createStore(myState, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const wrapper = mount( diff --git a/x-pack/plugins/security_solution/public/hosts/store/model.ts b/x-pack/plugins/security_solution/public/hosts/store/model.ts index b610971f70305..2060d46206723 100644 --- a/x-pack/plugins/security_solution/public/hosts/store/model.ts +++ b/x-pack/plugins/security_solution/public/hosts/store/model.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { HostsFields } from '../../../common/search_strategy/security_solution/hosts'; -import { Direction } from '../../graphql/types'; +import { Direction } from '../../../common/search_strategy'; +import { HostsFields } from '../../../common/search_strategy/security_solution'; export enum HostsType { page = 'page', diff --git a/x-pack/plugins/security_solution/public/lazy_application_dependencies.tsx b/x-pack/plugins/security_solution/public/lazy_application_dependencies.tsx index 0c9c74f9ebc15..536d1d084f0c5 100644 --- a/x-pack/plugins/security_solution/public/lazy_application_dependencies.tsx +++ b/x-pack/plugins/security_solution/public/lazy_application_dependencies.tsx @@ -11,8 +11,7 @@ */ import { renderApp } from './app'; -import { composeLibs } from './common/lib/compose/kibana_compose'; import { createStore, createInitialState } from './common/store'; -export { renderApp, composeLibs, createStore, createInitialState }; +export { renderApp, createStore, createInitialState }; diff --git a/x-pack/plugins/security_solution/public/network/components/details/index.test.tsx b/x-pack/plugins/security_solution/public/network/components/details/index.test.tsx index 514460ffb0970..ceb89db7b0f53 100644 --- a/x-pack/plugins/security_solution/public/network/components/details/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/details/index.test.tsx @@ -9,10 +9,8 @@ import { shallow } from 'enzyme'; import React from 'react'; import { ActionCreator } from 'typescript-fsa'; -import { FlowTarget } from '../../../graphql/types'; import '../../../common/mock/match_media'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -26,27 +24,16 @@ import { IpOverview } from './index'; import { mockData } from './mock'; import { mockAnomalies } from '../../../common/components/ml/mock'; import { NarrowDateRange } from '../../../common/components/ml/types'; +import { FlowTarget } from '../../../../common/search_strategy'; describe('IP Overview Component', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); describe('rendering', () => { diff --git a/x-pack/plugins/security_solution/public/network/components/embeddables/map_tool_tip/point_tool_tip_content.test.tsx b/x-pack/plugins/security_solution/public/network/components/embeddables/map_tool_tip/point_tool_tip_content.test.tsx index 3bbc08d593fd3..7b3f9e956c765 100644 --- a/x-pack/plugins/security_solution/public/network/components/embeddables/map_tool_tip/point_tool_tip_content.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/embeddables/map_tool_tip/point_tool_tip_content.test.tsx @@ -13,11 +13,11 @@ import { getRenderedFieldValue, PointToolTipContentComponent } from './point_too import { TestProviders } from '../../../../common/mock'; import { getEmptyStringTag } from '../../../../common/components/empty_value'; import { HostDetailsLink, NetworkDetailsLink } from '../../../../common/components/links'; -import { FlowTarget } from '../../../../graphql/types'; import { TooltipProperty, ITooltipProperty, } from '../../../../../../maps/public/classes/tooltips/tooltip_property'; +import { FlowTarget } from '../../../../../common/search_strategy'; describe('PointToolTipContent', () => { const mockFeatureProps: ITooltipProperty[] = [ diff --git a/x-pack/plugins/security_solution/public/network/components/embeddables/map_tool_tip/point_tool_tip_content.tsx b/x-pack/plugins/security_solution/public/network/components/embeddables/map_tool_tip/point_tool_tip_content.tsx index fb032d11ef98a..0fa59c6fd9e42 100644 --- a/x-pack/plugins/security_solution/public/network/components/embeddables/map_tool_tip/point_tool_tip_content.tsx +++ b/x-pack/plugins/security_solution/public/network/components/embeddables/map_tool_tip/point_tool_tip_content.tsx @@ -14,9 +14,9 @@ import { import { DescriptionListStyled } from '../../../../common/components/page'; import { HostDetailsLink, NetworkDetailsLink } from '../../../../common/components/links'; import { DefaultFieldRenderer } from '../../../../timelines/components/field_renderers/field_renderers'; -import { FlowTarget } from '../../../../graphql/types'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { ITooltipProperty } from '../../../../../../maps/public/classes/tooltips/tooltip_property'; +import { FlowTarget } from '../../../../../common/search_strategy'; interface PointToolTipContentProps { contextId: string; diff --git a/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_direction_select.test.tsx b/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_direction_select.test.tsx index 49c0decbfe301..d98db616c9cde 100644 --- a/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_direction_select.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_direction_select.test.tsx @@ -7,8 +7,7 @@ import { mount, shallow } from 'enzyme'; import React from 'react'; - -import { FlowDirection } from '../../../graphql/types'; +import { FlowDirection } from '../../../../common/search_strategy'; import { FlowDirectionSelect } from './flow_direction_select'; diff --git a/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_direction_select.tsx b/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_direction_select.tsx index c434434f707de..12fa1e6a0d00d 100644 --- a/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_direction_select.tsx +++ b/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_direction_select.tsx @@ -7,8 +7,7 @@ import { EuiFilterButton, EuiFilterGroup } from '@elastic/eui'; import React from 'react'; - -import { FlowDirection } from '../../../graphql/types'; +import { FlowDirection } from '../../../../common/search_strategy'; import * as i18n from './translations'; diff --git a/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_target_select.test.tsx b/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_target_select.test.tsx index e8779a76626a5..918114f9e7196 100644 --- a/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_target_select.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_target_select.test.tsx @@ -8,8 +8,7 @@ import { mount, shallow } from 'enzyme'; import { clone } from 'lodash/fp'; import React from 'react'; - -import { FlowDirection, FlowTarget } from '../../../graphql/types'; +import { FlowDirection, FlowTarget } from '../../../../common/search_strategy'; import { FlowTargetSelect } from './flow_target_select'; diff --git a/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_target_select.tsx b/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_target_select.tsx index 5d8f33e9d7b05..723378b970df8 100644 --- a/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_target_select.tsx +++ b/x-pack/plugins/security_solution/public/network/components/flow_controls/flow_target_select.tsx @@ -7,8 +7,7 @@ import { EuiSuperSelect } from '@elastic/eui'; import React from 'react'; - -import { FlowDirection, FlowTarget } from '../../../graphql/types'; +import { FlowTarget, FlowDirection } from '../../../../common/search_strategy'; import * as i18n from './translations'; diff --git a/x-pack/plugins/security_solution/public/network/components/flow_target_select_connected/index.test.tsx b/x-pack/plugins/security_solution/public/network/components/flow_target_select_connected/index.test.tsx index b1e2874d3c77b..8794d48b5aa13 100644 --- a/x-pack/plugins/security_solution/public/network/components/flow_target_select_connected/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/flow_target_select_connected/index.test.tsx @@ -12,7 +12,7 @@ import { MemoryRouter } from 'react-router-dom'; import '../../../common/mock/match_media'; import { TestProviders } from '../../../common/mock'; import { FlowTargetSelectConnectedComponent } from './index'; -import { FlowTarget } from '../../../graphql/types'; +import { FlowTarget } from '../../../../common/search_strategy'; describe('Flow Target Select Connected', () => { test('renders correctly against snapshot flowTarget source', () => { diff --git a/x-pack/plugins/security_solution/public/network/components/flow_target_select_connected/index.tsx b/x-pack/plugins/security_solution/public/network/components/flow_target_select_connected/index.tsx index c1568e2df21b8..5fef9833c57e2 100644 --- a/x-pack/plugins/security_solution/public/network/components/flow_target_select_connected/index.tsx +++ b/x-pack/plugins/security_solution/public/network/components/flow_target_select_connected/index.tsx @@ -11,11 +11,11 @@ import React, { useCallback } from 'react'; import { useHistory, useLocation } from 'react-router-dom'; import styled from 'styled-components'; -import { FlowDirection, FlowTarget } from '../../../graphql/types'; import * as i18nIp from '../details/translations'; import { FlowTargetSelect } from '../flow_controls/flow_target_select'; import { IpOverviewId } from '../../../timelines/components/field_renderers/field_renderers'; +import { FlowTarget, FlowDirection } from '../../../../common/search_strategy'; const SelectTypeItem = styled(EuiFlexItem)` min-width: 180px; diff --git a/x-pack/plugins/security_solution/public/network/components/kpi_network/index.test.tsx b/x-pack/plugins/security_solution/public/network/components/kpi_network/index.test.tsx index e88a7593c1a09..7f9c5b4672f9a 100644 --- a/x-pack/plugins/security_solution/public/network/components/kpi_network/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/kpi_network/index.test.tsx @@ -10,7 +10,6 @@ import React from 'react'; import { Provider as ReduxStoreProvider } from 'react-redux'; import { - apolloClientObservable, mockGlobalState, SUB_PLUGINS_REDUCER, kibanaObservable, @@ -33,22 +32,10 @@ describe('NetworkKpiComponent', () => { }; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); describe('rendering', () => { diff --git a/x-pack/plugins/security_solution/public/network/components/network_dns_table/index.test.tsx b/x-pack/plugins/security_solution/public/network/components/network_dns_table/index.test.tsx index a645396063bde..7ec18c078c73d 100644 --- a/x-pack/plugins/security_solution/public/network/components/network_dns_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/network_dns_table/index.test.tsx @@ -8,12 +8,10 @@ import { shallow } from 'enzyme'; import { getOr } from 'lodash/fp'; import React from 'react'; -import { MockedProvider } from 'react-apollo/test-utils'; import { Provider as ReduxStoreProvider } from 'react-redux'; import '../../../common/mock/match_media'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -31,23 +29,11 @@ describe('NetworkTopNFlow Table Component', () => { const loadPage = jest.fn(); const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const mount = useMountAppended(); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); describe('rendering', () => { @@ -75,21 +61,19 @@ describe('NetworkTopNFlow Table Component', () => { describe('Sorting', () => { test('when you click on the column header, you should show the sorting icon', () => { const wrapper = mount( - - - - - + + + ); expect(store.getState().network.page.queries!.dns.sort).toEqual({ diff --git a/x-pack/plugins/security_solution/public/network/components/network_dns_table/is_ptr_included.test.tsx b/x-pack/plugins/security_solution/public/network/components/network_dns_table/is_ptr_included.test.tsx index 870de5c36afad..762cd4006002b 100644 --- a/x-pack/plugins/security_solution/public/network/components/network_dns_table/is_ptr_included.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/network_dns_table/is_ptr_included.test.tsx @@ -7,8 +7,7 @@ import { mount, shallow } from 'enzyme'; import React from 'react'; - -import { FlowDirection } from '../../../graphql/types'; +import { FlowDirection } from '../../../../common/search_strategy'; import { IsPtrIncluded } from './is_ptr_included'; diff --git a/x-pack/plugins/security_solution/public/network/components/network_http_table/index.test.tsx b/x-pack/plugins/security_solution/public/network/components/network_http_table/index.test.tsx index cbadb47c6d11a..f7f75d9f0a365 100644 --- a/x-pack/plugins/security_solution/public/network/components/network_http_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/network_http_table/index.test.tsx @@ -8,12 +8,10 @@ import { shallow } from 'enzyme'; import { getOr } from 'lodash/fp'; import React from 'react'; -import { MockedProvider } from 'react-apollo/test-utils'; import { Provider as ReduxStoreProvider } from 'react-redux'; import '../../../common/mock/match_media'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -34,23 +32,11 @@ describe('NetworkHttp Table Component', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const mount = useMountAppended(); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); describe('rendering', () => { @@ -78,21 +64,19 @@ describe('NetworkHttp Table Component', () => { describe('Sorting', () => { test('when you click on the column header, you should show the sorting icon', () => { const wrapper = mount( - - - - - + + + ); expect(store.getState().network.page.queries!.http.sort).toEqual({ diff --git a/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.test.tsx b/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.test.tsx index 8ea43d1b0c34f..c9ce204a52538 100644 --- a/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.test.tsx @@ -8,13 +8,11 @@ import { shallow } from 'enzyme'; import { getOr } from 'lodash/fp'; import React from 'react'; -import { MockedProvider } from 'react-apollo/test-utils'; import { Provider as ReduxStoreProvider } from 'react-redux'; import '../../../common/mock/match_media'; import { FlowTargetSourceDest } from '../../../../common/search_strategy/security_solution/network'; import { - apolloClientObservable, mockGlobalState, mockIndexPattern, TestProviders, @@ -35,22 +33,10 @@ describe('NetworkTopCountries Table Component', () => { const mount = useMountAppended(); const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); describe('rendering', () => { @@ -109,27 +95,25 @@ describe('NetworkTopCountries Table Component', () => { describe('Sorting on Table', () => { test('when you click on the column header, you should show the sorting icon', () => { const wrapper = mount( - - - - - + + + ); expect(store.getState().network.page.queries.topCountriesSource.sort).toEqual({ direction: 'desc', diff --git a/x-pack/plugins/security_solution/public/network/components/network_top_n_flow_table/index.test.tsx b/x-pack/plugins/security_solution/public/network/components/network_top_n_flow_table/index.test.tsx index 5983efad32fe2..a05277cd0513d 100644 --- a/x-pack/plugins/security_solution/public/network/components/network_top_n_flow_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/network_top_n_flow_table/index.test.tsx @@ -8,13 +8,10 @@ import { shallow } from 'enzyme'; import { getOr } from 'lodash/fp'; import React from 'react'; -import { MockedProvider } from 'react-apollo/test-utils'; import { Provider as ReduxStoreProvider } from 'react-redux'; import '../../../common/mock/match_media'; -import { FlowTargetSourceDest } from '../../../graphql/types'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -26,6 +23,7 @@ import { createStore, State } from '../../../common/store'; import { networkModel } from '../../store'; import { NetworkTopNFlowTable } from '.'; import { mockData } from './mock'; +import { FlowTargetSourceDest } from '../../../../common/search_strategy'; jest.mock('../../../common/components/link_to'); @@ -34,23 +32,11 @@ describe('NetworkTopNFlow Table Component', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const mount = useMountAppended(); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); describe('rendering', () => { @@ -100,22 +86,20 @@ describe('NetworkTopNFlow Table Component', () => { describe('Sorting on Table', () => { test('when you click on the column header, you should show the sorting icon', () => { const wrapper = mount( - - - - - + + + ); expect(store.getState().network.page.queries.topNFlowSource.sort).toEqual({ direction: 'desc', diff --git a/x-pack/plugins/security_solution/public/network/components/tls_table/index.test.tsx b/x-pack/plugins/security_solution/public/network/components/tls_table/index.test.tsx index f93d6d276bc6e..09b1afc5611b0 100644 --- a/x-pack/plugins/security_solution/public/network/components/tls_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/tls_table/index.test.tsx @@ -8,12 +8,10 @@ import { shallow } from 'enzyme'; import { getOr } from 'lodash/fp'; import React from 'react'; -import { MockedProvider } from 'react-apollo/test-utils'; import { Provider as ReduxStoreProvider } from 'react-redux'; import '../../../common/mock/match_media'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -31,23 +29,11 @@ describe('Tls Table Component', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const mount = useMountAppended(); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); describe('Rendering', () => { @@ -75,21 +61,19 @@ describe('Tls Table Component', () => { describe('Sorting on Table', () => { test('when you click on the column header, you should show the sorting icon', () => { const wrapper = mount( - - - - - + + + ); expect(store.getState().network.details.queries!.tls.sort).toEqual({ direction: 'desc', diff --git a/x-pack/plugins/security_solution/public/network/components/users_table/index.test.tsx b/x-pack/plugins/security_solution/public/network/components/users_table/index.test.tsx index 8fab7273530d2..e551dbb640751 100644 --- a/x-pack/plugins/security_solution/public/network/components/users_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/users_table/index.test.tsx @@ -8,13 +8,10 @@ import { shallow } from 'enzyme'; import { getOr } from 'lodash/fp'; import React from 'react'; -import { MockedProvider } from 'react-apollo/test-utils'; import { Provider as ReduxStoreProvider } from 'react-redux'; import '../../../common/mock/match_media'; -import { FlowTarget } from '../../../graphql/types'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -27,29 +24,18 @@ import { networkModel } from '../../store'; import { UsersTable } from '.'; import { mockUsersData } from './mock'; +import { FlowTarget } from '../../../../common/search_strategy'; describe('Users Table Component', () => { const loadPage = jest.fn(); const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const mount = useMountAppended(); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); describe('Rendering', () => { @@ -78,26 +64,20 @@ describe('Users Table Component', () => { describe('Sorting on Table', () => { test('when you click on the column header, you should show the sorting icon', () => { const wrapper = mount( - - - - - + + + ); expect(store.getState().network.details.queries!.users.sort).toEqual({ direction: 'asc', diff --git a/x-pack/plugins/security_solution/public/network/containers/tls/index.tsx b/x-pack/plugins/security_solution/public/network/containers/tls/index.tsx index 77f6d4575d8f7..49a7064113c30 100644 --- a/x-pack/plugins/security_solution/public/network/containers/tls/index.tsx +++ b/x-pack/plugins/security_solution/public/network/containers/tls/index.tsx @@ -15,7 +15,6 @@ import { inputsModel } from '../../../common/store'; import { useDeepEqualSelector } from '../../../common/hooks/use_selector'; import { useKibana } from '../../../common/lib/kibana'; import { createFilter } from '../../../common/containers/helpers'; -import { PageInfoPaginated, FlowTargetSourceDest } from '../../../graphql/types'; import { generateTablePaginationOptions } from '../../../common/components/paginated_table/helpers'; import { networkModel, networkSelectors } from '../../store'; import { @@ -27,6 +26,7 @@ import { isCompleteResponse, isErrorResponse } from '../../../../../../../src/pl import * as i18n from './translations'; import { getInspectResponse } from '../../../helpers'; +import { FlowTargetSourceDest, PageInfoPaginated } from '../../../../common/search_strategy'; const ID = 'networkTlsQuery'; diff --git a/x-pack/plugins/security_solution/public/network/containers/users/index.tsx b/x-pack/plugins/security_solution/public/network/containers/users/index.tsx index 515ef3b8644ab..e000981733eed 100644 --- a/x-pack/plugins/security_solution/public/network/containers/users/index.tsx +++ b/x-pack/plugins/security_solution/public/network/containers/users/index.tsx @@ -16,7 +16,6 @@ import { DEFAULT_INDEX_KEY } from '../../../../common/constants'; import { inputsModel } from '../../../common/store'; import { useKibana } from '../../../common/lib/kibana'; import { createFilter } from '../../../common/containers/helpers'; -import { PageInfoPaginated } from '../../../graphql/types'; import { generateTablePaginationOptions } from '../../../common/components/paginated_table/helpers'; import { networkSelectors } from '../../store'; import { @@ -29,6 +28,7 @@ import { isCompleteResponse, isErrorResponse } from '../../../../../../../src/pl import * as i18n from './translations'; import { getInspectResponse } from '../../../helpers'; import { InspectResponse } from '../../../types'; +import { PageInfoPaginated } from '../../../../common/search_strategy'; const ID = 'networkUsersQuery'; diff --git a/x-pack/plugins/security_solution/public/network/pages/details/index.test.tsx b/x-pack/plugins/security_solution/public/network/pages/details/index.test.tsx index 84c4e4528a12e..a9a97f6bac652 100644 --- a/x-pack/plugins/security_solution/public/network/pages/details/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/pages/details/index.test.tsx @@ -11,9 +11,7 @@ import { Router, useParams } from 'react-router-dom'; import '../../../common/mock/match_media'; import { useSourcererScope } from '../../../common/containers/sourcerer'; -import { FlowTarget } from '../../../graphql/types'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -23,6 +21,7 @@ import { import { useMountAppended } from '../../../common/utils/use_mount_appended'; import { createStore, State } from '../../../common/store'; import { NetworkDetails } from './index'; +import { FlowTarget } from '../../../../common/search_strategy'; jest.mock('@elastic/eui', () => { const original = jest.requireActual('@elastic/eui'); @@ -109,22 +108,10 @@ describe('Network Details', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); test('it renders', () => { diff --git a/x-pack/plugins/security_solution/public/network/pages/details/index.tsx b/x-pack/plugins/security_solution/public/network/pages/details/index.tsx index 896eec39c125c..4cccb536c08bb 100644 --- a/x-pack/plugins/security_solution/public/network/pages/details/index.tsx +++ b/x-pack/plugins/security_solution/public/network/pages/details/index.tsx @@ -11,7 +11,11 @@ import { useDispatch } from 'react-redux'; import { useParams } from 'react-router-dom'; import { useDeepEqualSelector } from '../../../common/hooks/use_selector'; -import { FlowTarget, LastEventIndexKey } from '../../../../common/search_strategy'; +import { + FlowTarget, + FlowTargetSourceDest, + LastEventIndexKey, +} from '../../../../common/search_strategy'; import { useGlobalTime } from '../../../common/containers/use_global_time'; import { FiltersGlobal } from '../../../common/components/filters_global'; import { HeaderPage } from '../../../common/components/header_page'; @@ -26,7 +30,6 @@ import { IpOverview } from '../../components/details'; import { SiemSearchBar } from '../../../common/components/search_bar'; import { WrapperPage } from '../../../common/components/wrapper_page'; import { useNetworkDetails } from '../../containers/details'; -import { FlowTargetSourceDest } from '../../../graphql/types'; import { useKibana } from '../../../common/lib/kibana'; import { decodeIpv6 } from '../../../common/lib/helpers'; import { convertToBuildEsQuery } from '../../../common/lib/keury'; diff --git a/x-pack/plugins/security_solution/public/network/pages/index.tsx b/x-pack/plugins/security_solution/public/network/pages/index.tsx index c82b9060729c6..ddc098823470a 100644 --- a/x-pack/plugins/security_solution/public/network/pages/index.tsx +++ b/x-pack/plugins/security_solution/public/network/pages/index.tsx @@ -10,13 +10,13 @@ import { Route, Switch, RouteComponentProps, useHistory } from 'react-router-dom import { useMlCapabilities } from '../../common/components/ml/hooks/use_ml_capabilities'; import { hasMlUserPermissions } from '../../../common/machine_learning/has_ml_user_permissions'; -import { FlowTarget } from '../../graphql/types'; import { NetworkDetails } from './details'; import { Network } from './network'; import { getNetworkRoutePath } from './navigation'; import { NetworkRouteType } from './navigation/types'; import { MlNetworkConditionalContainer } from '../../common/components/ml/conditional_links/ml_network_conditional_container'; +import { FlowTarget } from '../../../common/search_strategy'; type Props = Partial> & { url: string }; diff --git a/x-pack/plugins/security_solution/public/network/pages/network.test.tsx b/x-pack/plugins/security_solution/public/network/pages/network.test.tsx index ece647e9710e0..862a4f1a56c12 100644 --- a/x-pack/plugins/security_solution/public/network/pages/network.test.tsx +++ b/x-pack/plugins/security_solution/public/network/pages/network.test.tsx @@ -15,7 +15,6 @@ import { useSourcererScope } from '../../common/containers/sourcerer'; import { TestProviders, mockGlobalState, - apolloClientObservable, SUB_PLUGINS_REDUCER, kibanaObservable, createSecuritySolutionStorageMock, @@ -146,13 +145,7 @@ describe('Network page - rendering', () => { }); const myState: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - const myStore = createStore( - myState, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + const myStore = createStore(myState, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const wrapper = mount( diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_host/index.test.tsx b/x-pack/plugins/security_solution/public/overview/components/overview_host/index.test.tsx index 9199059b9790d..1295693db506f 100644 --- a/x-pack/plugins/security_solution/public/overview/components/overview_host/index.test.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/overview_host/index.test.tsx @@ -11,7 +11,6 @@ import React from 'react'; import '../../../common/mock/match_media'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -63,23 +62,11 @@ describe('OverviewHost', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { const myState = cloneDeep(state); - store = createStore( - myState, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(myState, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); test('it renders the expected widget title', () => { diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_network/index.test.tsx b/x-pack/plugins/security_solution/public/overview/components/overview_network/index.test.tsx index ce3973e59d18b..13a9b529fdf43 100644 --- a/x-pack/plugins/security_solution/public/overview/components/overview_network/index.test.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/overview_network/index.test.tsx @@ -11,7 +11,6 @@ import React from 'react'; import '../../../common/mock/match_media'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -73,23 +72,11 @@ describe('OverviewNetwork', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); beforeEach(() => { const myState = cloneDeep(state); - store = createStore( - myState, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(myState, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); test('it renders the expected widget title', () => { diff --git a/x-pack/plugins/security_solution/public/overview/components/recent_timelines/index.tsx b/x-pack/plugins/security_solution/public/overview/components/recent_timelines/index.tsx index 004e675cb3516..1d9b039e02258 100644 --- a/x-pack/plugins/security_solution/public/overview/components/recent_timelines/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/recent_timelines/index.tsx @@ -5,14 +5,12 @@ * 2.0. */ -import ApolloClient from 'apollo-client'; import { EuiHorizontalRule, EuiText } from '@elastic/eui'; import React, { useCallback, useMemo, useEffect } from 'react'; import { useDispatch } from 'react-redux'; -import { TimelineType } from '../../../../common/types/timeline'; +import { SortFieldTimeline, TimelineType } from '../../../../common/types/timeline'; import { useGetAllTimeline } from '../../../timelines/containers/all'; -import { SortFieldTimeline, Direction } from '../../../graphql/types'; import { queryTimelineById, dispatchUpdateTimeline, @@ -30,15 +28,15 @@ import { SecurityPageName } from '../../../app/types'; import { APP_ID } from '../../../../common/constants'; import { useFormatUrl } from '../../../common/components/link_to'; import { LinkAnchor } from '../../../common/components/links'; +import { Direction } from '../../../../common/search_strategy'; interface Props { - apolloClient: ApolloClient<{}>; filterBy: FilterMode; } const PAGE_SIZE = 3; -const StatefulRecentTimelinesComponent: React.FC = ({ apolloClient, filterBy }) => { +const StatefulRecentTimelinesComponent: React.FC = ({ filterBy }) => { const dispatch = useDispatch(); const updateIsLoading = useCallback((payload) => dispatch(dispatchUpdateIsLoading(payload)), [ dispatch, @@ -50,14 +48,13 @@ const StatefulRecentTimelinesComponent: React.FC = ({ apolloClient, filte const onOpenTimeline: OnOpenTimeline = useCallback( ({ duplicate, timelineId }) => { queryTimelineById({ - apolloClient, duplicate, timelineId, updateIsLoading, updateTimeline, }); }, - [apolloClient, updateIsLoading, updateTimeline] + [updateIsLoading, updateTimeline] ); const goToTimelines = useCallback( diff --git a/x-pack/plugins/security_solution/public/overview/components/sidebar/sidebar.tsx b/x-pack/plugins/security_solution/public/overview/components/sidebar/sidebar.tsx index 9512a3e3c67c7..cd88b8f44dc7b 100644 --- a/x-pack/plugins/security_solution/public/overview/components/sidebar/sidebar.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/sidebar/sidebar.tsx @@ -20,7 +20,6 @@ import { FilterMode as RecentCasesFilterMode } from '../recent_cases/types'; import { DEFAULT_FILTER_OPTIONS } from '../../../cases/containers/use_get_cases'; import { SidebarHeader } from '../../../common/components/sidebar_header'; import { useCurrentUser } from '../../../common/lib/kibana'; -import { useApolloClient } from '../../../common/utils/apollo_context'; import * as i18n from '../../pages/translations'; @@ -50,7 +49,6 @@ export const Sidebar = React.memo<{ setRecentTimelinesFilterBy, }) => { const currentUser = useCurrentUser(); - const apolloClient = useApolloClient(); const recentCasesFilters = useMemo( () => ( {recentTimelinesFilters} - + diff --git a/x-pack/plugins/security_solution/public/plugin.tsx b/x-pack/plugins/security_solution/public/plugin.tsx index 136df89558d53..23f3472b470b5 100644 --- a/x-pack/plugins/security_solution/public/plugin.tsx +++ b/x-pack/plugins/security_solution/public/plugin.tsx @@ -177,10 +177,9 @@ export class Plugin implements IPlugin { const [coreStart, startPlugins] = await core.getStartServices(); const { overview: subPlugin } = await this.subPlugins(); - const { renderApp, composeLibs } = await this.lazyApplicationDependencies(); + const { renderApp } = await this.lazyApplicationDependencies(); return renderApp({ - ...composeLibs(coreStart), ...params, services: await startServices, store: await this.store(coreStart, startPlugins), @@ -200,10 +199,9 @@ export class Plugin implements IPlugin { const [coreStart, startPlugins] = await core.getStartServices(); const { detections: subPlugin } = await this.subPlugins(); - const { renderApp, composeLibs } = await this.lazyApplicationDependencies(); + const { renderApp } = await this.lazyApplicationDependencies(); return renderApp({ - ...composeLibs(coreStart), ...params, services: await startServices, store: await this.store(coreStart, startPlugins), @@ -223,9 +221,8 @@ export class Plugin implements IPlugin { const [coreStart, startPlugins] = await core.getStartServices(); const { hosts: subPlugin } = await this.subPlugins(); - const { renderApp, composeLibs } = await this.lazyApplicationDependencies(); + const { renderApp } = await this.lazyApplicationDependencies(); return renderApp({ - ...composeLibs(coreStart), ...params, services: await startServices, store: await this.store(coreStart, startPlugins), @@ -245,9 +242,8 @@ export class Plugin implements IPlugin { const [coreStart, startPlugins] = await core.getStartServices(); const { network: subPlugin } = await this.subPlugins(); - const { renderApp, composeLibs } = await this.lazyApplicationDependencies(); + const { renderApp } = await this.lazyApplicationDependencies(); return renderApp({ - ...composeLibs(coreStart), ...params, services: await startServices, store: await this.store(coreStart, startPlugins), @@ -267,9 +263,8 @@ export class Plugin implements IPlugin { const [coreStart, startPlugins] = await core.getStartServices(); const { timelines: subPlugin } = await this.subPlugins(); - const { renderApp, composeLibs } = await this.lazyApplicationDependencies(); + const { renderApp } = await this.lazyApplicationDependencies(); return renderApp({ - ...composeLibs(coreStart), ...params, services: await startServices, store: await this.store(coreStart, startPlugins), @@ -289,9 +284,8 @@ export class Plugin implements IPlugin { const [coreStart, startPlugins] = await core.getStartServices(); const { cases: subPlugin } = await this.subPlugins(); - const { renderApp, composeLibs } = await this.lazyApplicationDependencies(); + const { renderApp } = await this.lazyApplicationDependencies(); return renderApp({ - ...composeLibs(coreStart), ...params, services: await startServices, store: await this.store(coreStart, startPlugins), @@ -311,9 +305,8 @@ export class Plugin implements IPlugin { const [coreStart, startPlugins] = await core.getStartServices(); const { management: managementSubPlugin } = await this.subPlugins(); - const { renderApp, composeLibs } = await this.lazyApplicationDependencies(); + const { renderApp } = await this.lazyApplicationDependencies(); return renderApp({ - ...composeLibs(coreStart), ...params, services: await startServices, store: await this.store(coreStart, startPlugins), @@ -458,7 +451,7 @@ export class Plugin implements IPlugin { const storeShowIsTrue = createStore( stateShowIsTrue, SUB_PLUGINS_REDUCER, - apolloClientObservable, kibanaObservable, storage ); diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.test.ts b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.test.ts index 4d1c9e8037455..1222f168b2ae9 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.test.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.test.ts @@ -7,9 +7,12 @@ import { cloneDeep, getOr, omit } from 'lodash/fp'; import { Dispatch } from 'redux'; -import ApolloClient from 'apollo-client'; -import { mockTimelineResults, mockTimelineResult, mockTimelineModel } from '../../../common/mock'; +import { + mockTimelineResults, + mockTimelineModel, + mockGetOneTimelineResult, +} from '../../../common/mock'; import { timelineDefaults } from '../../store/timeline/defaults'; import { setTimelineRangeDatePicker as dispatchSetTimelineRangeDatePicker } from '../../../common/store/inputs/actions'; import { @@ -47,6 +50,7 @@ import { mockTimeline as mockSelectedTimeline, mockTemplate as mockSelectedTemplate, } from './__mocks__'; +import { getTimeline } from '../../containers/api'; jest.mock('../../../common/store/inputs/actions'); jest.mock('../../../common/components/url_state/normalize_time_range.ts'); @@ -68,6 +72,8 @@ jest.mock('../../../common/utils/default_date_settings', () => { }; }); +jest.mock('../../containers/api'); + describe('helpers', () => { let mockResults: OpenTimelineResult[]; @@ -1223,12 +1229,8 @@ describe('helpers', () => { const selectedTimeline = { ...mockSelectedTimeline, }; - const apolloClient = { - query: (jest.fn().mockResolvedValue(selectedTimeline) as unknown) as ApolloClient<{}>, - }; const onOpenTimeline = jest.fn(); const args = { - apolloClient, duplicate: false, graphEventId: '', timelineId: '', @@ -1240,6 +1242,7 @@ describe('helpers', () => { }; beforeAll(async () => { + (getTimeline as jest.Mock).mockResolvedValue(selectedTimeline); await queryTimelineById<{}>((args as unknown) as QueryTimelineById<{}>); }); @@ -1255,7 +1258,7 @@ describe('helpers', () => { }); test('get timeline by Id', () => { - expect(apolloClient.query).toHaveBeenCalled(); + expect(getTimeline).toHaveBeenCalled(); }); test('Do not override daterange if TimelineStatus is active', () => { @@ -1281,11 +1284,8 @@ describe('helpers', () => { const updateIsLoading = jest.fn(); const updateTimeline = jest.fn().mockImplementation(() => jest.fn()); const selectedTimeline = { ...mockSelectedTimeline }; - const apolloClient = { - query: (jest.fn().mockResolvedValue(selectedTimeline) as unknown) as ApolloClient<{}>, - }; + const args = { - apolloClient, duplicate: false, graphEventId: '', timelineId: '', @@ -1296,6 +1296,7 @@ describe('helpers', () => { }; beforeAll(async () => { + (getTimeline as jest.Mock).mockResolvedValue(selectedTimeline); await queryTimelineById<{}>((args as unknown) as QueryTimelineById<{}>); }); @@ -1311,7 +1312,7 @@ describe('helpers', () => { }); test('get timeline by Id', () => { - expect(apolloClient.query).toHaveBeenCalled(); + expect(getTimeline).toHaveBeenCalled(); }); test('should not override daterange if TimelineStatus is active', () => { @@ -1350,12 +1351,8 @@ describe('helpers', () => { describe('open an immutable template', () => { const updateIsLoading = jest.fn(); const template = { ...mockSelectedTemplate }; - const apolloClient = { - query: (jest.fn().mockResolvedValue(template) as unknown) as ApolloClient<{}>, - }; const onOpenTimeline = jest.fn(); const args = { - apolloClient, duplicate: false, graphEventId: '', timelineId: '', @@ -1367,10 +1364,12 @@ describe('helpers', () => { }; beforeAll(async () => { + (getTimeline as jest.Mock).mockResolvedValue(template); await queryTimelineById<{}>((args as unknown) as QueryTimelineById<{}>); }); afterAll(() => { + (getTimeline as jest.Mock).mockReset(); jest.clearAllMocks(); }); @@ -1382,7 +1381,7 @@ describe('helpers', () => { }); test('get timeline by Id', () => { - expect(apolloClient.query).toHaveBeenCalled(); + expect(getTimeline).toHaveBeenCalled(); }); test('override daterange if TimelineStatus is immutable', () => { @@ -1411,14 +1410,14 @@ describe('helpers', () => { describe('omitTypenameInTimeline', () => { test('it does not modify the passed in timeline if no __typename exists', () => { - const result = omitTypenameInTimeline(mockTimelineResult); + const result = omitTypenameInTimeline(mockGetOneTimelineResult); - expect(result).toEqual(mockTimelineResult); + expect(result).toEqual(mockGetOneTimelineResult); }); test('it returns timeline with __typename removed when it exists', () => { const mockTimeline = { - ...mockTimelineResult, + ...mockGetOneTimelineResult, __typename: 'something, something', }; const result = omitTypenameInTimeline(mockTimeline); diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.ts b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.ts index 68f4d70c018f8..8c4eb2112640f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.ts @@ -5,23 +5,12 @@ * 2.0. */ -import ApolloClient from 'apollo-client'; import { set } from '@elastic/safer-lodash-set/fp'; import { getOr, isEmpty } from 'lodash/fp'; import { Action } from 'typescript-fsa'; import uuid from 'uuid'; import { Dispatch } from 'redux'; import deepMerge from 'deepmerge'; -import { oneTimelineQuery } from '../../containers/one/index.gql_query'; -import { - TimelineResult, - GetOneTimeline, - NoteResult, - FilterTimelineResult, - ColumnHeaderResult, - PinnedEvent, - DataProviderResult, -} from '../../../graphql/types'; import { DataProviderType, @@ -29,6 +18,10 @@ import { TimelineStatus, TimelineType, TimelineTabs, + TimelineResult, + ColumnHeaderResult, + FilterTimelineResult, + DataProviderResult, } from '../../../../common/types/timeline'; import { @@ -66,6 +59,9 @@ import { DEFAULT_FROM_MOMENT, DEFAULT_TO_MOMENT, } from '../../../common/utils/default_date_settings'; +import { getTimeline } from '../../containers/api'; +import { PinnedEvent } from '../../../../common/types/timeline/pinned_event'; +import { NoteResult } from '../../../../common/types/timeline/note'; export const OPEN_TIMELINE_CLASS_NAME = 'open-timeline'; @@ -310,7 +306,6 @@ export const formatTimelineResultToModel = ( export interface QueryTimelineById { activeTimelineTab?: TimelineTabs; - apolloClient: ApolloClient | ApolloClient<{}> | undefined; duplicate?: boolean; graphEventId?: string; timelineId: string; @@ -329,7 +324,6 @@ export interface QueryTimelineById { export const queryTimelineById = ({ activeTimelineTab = TimelineTabs.query, - apolloClient, duplicate = false, graphEventId = '', timelineId, @@ -340,51 +334,44 @@ export const queryTimelineById = ({ updateTimeline, }: QueryTimelineById) => { updateIsLoading({ id: TimelineId.active, isLoading: true }); - if (apolloClient) { - apolloClient - .query({ - query: oneTimelineQuery, - fetchPolicy: 'no-cache', - variables: { id: timelineId }, - }) - .then((result) => { - const timelineToOpen: TimelineResult = omitTypenameInTimeline( - getOr({}, 'data.getOneTimeline', result) - ); - - const { timeline, notes } = formatTimelineResultToModel( - timelineToOpen, + Promise.resolve(getTimeline(timelineId)) + .then((result) => { + const timelineToOpen: TimelineResult = omitTypenameInTimeline( + getOr({}, 'data.getOneTimeline', result) + ); + + const { timeline, notes } = formatTimelineResultToModel( + timelineToOpen, + duplicate, + timelineType + ); + + if (onOpenTimeline != null) { + onOpenTimeline(timeline); + } else if (updateTimeline) { + const { from, to } = normalizeTimeRange({ + from: getOr(null, 'dateRange.start', timeline), + to: getOr(null, 'dateRange.end', timeline), + }); + updateTimeline({ duplicate, - timelineType - ); - - if (onOpenTimeline != null) { - onOpenTimeline(timeline); - } else if (updateTimeline) { - const { from, to } = normalizeTimeRange({ - from: getOr(null, 'dateRange.start', timeline), - to: getOr(null, 'dateRange.end', timeline), - }); - updateTimeline({ - duplicate, - from, - id: TimelineId.active, - notes, - timeline: { - ...timeline, - activeTab: activeTimelineTab, - graphEventId, - show: openTimeline, - dateRange: { start: from, end: to }, - }, - to, - })(); - } - }) - .finally(() => { - updateIsLoading({ id: TimelineId.active, isLoading: false }); - }); - } + from, + id: TimelineId.active, + notes, + timeline: { + ...timeline, + activeTab: activeTimelineTab, + graphEventId, + show: openTimeline, + dateRange: { start: from, end: to }, + }, + to, + })(); + } + }) + .finally(() => { + updateIsLoading({ id: TimelineId.active, isLoading: false }); + }); }; export const dispatchUpdateTimeline = (dispatch: Dispatch): DispatchUpdateTimeline => ({ diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx index 872175de2c055..c0b451a875522 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx @@ -8,9 +8,8 @@ /* eslint-disable react/display-name */ import React from 'react'; -import { renderHook, act } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react-hooks'; import { mount } from 'enzyme'; -import { MockedProvider } from 'react-apollo/test-utils'; import { waitFor } from '@testing-library/react'; import { useHistory, useParams } from 'react-router-dom'; @@ -20,14 +19,13 @@ import { SecurityPageName } from '../../../app/types'; import { TimelineType } from '../../../../common/types/timeline'; import { TestProviders, mockOpenTimelineQueryResults } from '../../../common/mock'; -import { getTimelineTabsUrl } from '../../../common/components/link_to'; import { DEFAULT_SEARCH_RESULTS_PER_PAGE } from '../../pages/timelines_page'; import { useGetAllTimeline, getAllTimeline } from '../../containers/all'; import { useTimelineStatus } from './use_timeline_status'; import { NotePreviews } from './note_previews'; -import { OPEN_TIMELINE_CLASS_NAME } from './helpers'; +import { OPEN_TIMELINE_CLASS_NAME, queryTimelineById } from './helpers'; import { StatefulOpenTimeline } from '.'; import { TimelineTabsStyle } from './types'; import { @@ -35,6 +33,7 @@ import { UseTimelineTypesArgs, UseTimelineTypesResult, } from './use_timeline_types'; +import { deleteTimelinesByIds } from '../../containers/api'; jest.mock('react-router-dom', () => { const originalModule = jest.requireActual('react-router-dom'); @@ -80,6 +79,10 @@ jest.mock('./use_timeline_status', () => { }; }); +jest.mock('../../containers/api', () => ({ + deleteTimelinesByIds: jest.fn(), +})); + describe('StatefulOpenTimeline', () => { const title = 'All Timelines / Open Timelines'; let mockHistory: History[]; @@ -94,12 +97,9 @@ describe('StatefulOpenTimeline', () => { (useHistory as jest.Mock).mockReturnValue(mockHistory); ((useGetAllTimeline as unknown) as jest.Mock).mockReturnValue({ fetchAllTimeline: jest.fn(), - timelines: getAllTimeline( - '', - mockOpenTimelineQueryResults[0].result.data?.getAllTimeline?.timeline ?? [] - ), + timelines: getAllTimeline('', mockOpenTimelineQueryResults.timeline ?? []), loading: false, - totalCount: mockOpenTimelineQueryResults[0].result.data.getAllTimeline.totalCount, + totalCount: mockOpenTimelineQueryResults.totalCount, refetch: jest.fn(), }); ((useTimelineStatus as unknown) as jest.Mock).mockReturnValue({ @@ -112,23 +112,19 @@ describe('StatefulOpenTimeline', () => { }); afterEach(() => { - (getTimelineTabsUrl as jest.Mock).mockClear(); - (useParams as jest.Mock).mockClear(); - (useHistory as jest.Mock).mockClear(); + jest.clearAllMocks(); mockHistory = []; }); test('it has the expected initial state', () => { const wrapper = mount( - - - + ); @@ -175,7 +171,7 @@ describe('StatefulOpenTimeline', () => { expect(result.current.timelineType).toBe(TimelineType.template); }); - test("should land on correct templates' tab after switching tab", () => { + test("should land on correct templates' tab after switching tab", async () => { (useParams as jest.Mock).mockReturnValue({ tabName: TimelineType.template, pageName: SecurityPageName.timelines, @@ -183,21 +179,20 @@ describe('StatefulOpenTimeline', () => { const wrapper = mount( - - - + ); - wrapper - .find(`[data-test-subj="timeline-${TimelineTabsStyle.tab}-${TimelineType.template}"]`) - .first() - .simulate('click'); - act(() => { + await waitFor(() => { + wrapper + .find(`[data-test-subj="timeline-${TimelineTabsStyle.tab}-${TimelineType.template}"]`) + .first() + .simulate('click'); + expect(history.length).toBeGreaterThan(0); }); }); @@ -218,7 +213,7 @@ describe('StatefulOpenTimeline', () => { expect(result.current.timelineType).toBe(TimelineType.default); }); - test('should not change url after switching filter', () => { + test('should not change url after switching filter', async () => { (useParams as jest.Mock).mockReturnValue({ tabName: 'mockTabName', pageName: SecurityPageName.case, @@ -226,58 +221,53 @@ describe('StatefulOpenTimeline', () => { const wrapper = mount( - - - + ); - wrapper - .find( - `[data-test-subj="open-timeline-modal-body-${TimelineTabsStyle.filter}-${TimelineType.template}"]` - ) - .first() - .simulate('click'); - act(() => { + await waitFor(() => { + wrapper + .find( + `[data-test-subj="open-timeline-modal-body-${TimelineTabsStyle.filter}-${TimelineType.template}"]` + ) + .first() + .simulate('click'); expect(mockHistory.length).toEqual(0); }); }); }); describe('#onQueryChange', () => { - test('it updates the query state with the expected trimmed value when the user enters a query', () => { + test('it updates the query state with the expected trimmed value when the user enters a query', async () => { const wrapper = mount( - - - + ); - wrapper - .find('[data-test-subj="search-bar"] input') - .simulate('keyup', { key: 'Enter', target: { value: ' abcd ' } }); - expect(wrapper.find('[data-test-subj="search-row"]').first().prop('query')).toEqual('abcd'); + await waitFor(() => { + wrapper + .find('[data-test-subj="search-bar"] input') + .simulate('keyup', { key: 'Enter', target: { value: ' abcd ' } }); + expect(wrapper.find('[data-test-subj="search-row"]').first().prop('query')).toEqual('abcd'); + }); }); - test('it appends the word "with" to the Showing in Timelines message when the user enters a query', async () => { const wrapper = mount( - - - + ); @@ -295,13 +285,11 @@ describe('StatefulOpenTimeline', () => { test('echos (renders) the query when the user enters a query', async () => { const wrapper = mount( - - - + ); @@ -321,13 +309,11 @@ describe('StatefulOpenTimeline', () => { test('focuses the input when the component mounts', async () => { const wrapper = mount( - - - + ); @@ -347,13 +333,11 @@ describe('StatefulOpenTimeline', () => { const wrapper = mount( - - - + ); @@ -381,41 +365,24 @@ describe('StatefulOpenTimeline', () => { }); describe('#onDeleteSelected', () => { - // TODO - Have been skip because we need to re-implement the test as the component changed - test.skip('it invokes deleteTimelines with the selected timelines when the button is clicked', async () => { - const deleteTimelines = jest.fn(); - + test('it invokes deleteTimelines with the selected timelines when the button is clicked', async () => { const wrapper = mount( - - - + ); + wrapper.find('[data-test-subj="euiCollapsedItemActionsButton"]').first().simulate('click'); + wrapper.find('[data-test-subj="delete-timeline"]').first().simulate('click'); + wrapper.find('[data-test-subj="confirmModalConfirmButton"]').first().simulate('click'); await waitFor(() => { - wrapper - .find('.euiCheckbox__input') - .first() - .simulate('change', { target: { checked: true } }); - - wrapper.find('[data-test-subj="delete-selected"]').first().simulate('click'); + wrapper.update(); - expect(deleteTimelines).toHaveBeenCalledWith([ - 'saved-timeline-11', - 'saved-timeline-10', - 'saved-timeline-9', - 'saved-timeline-8', - 'saved-timeline-6', - 'saved-timeline-5', - 'saved-timeline-4', - 'saved-timeline-3', - 'saved-timeline-2', - ]); + expect(deleteTimelinesByIds).toHaveBeenCalled(); }); }); }); @@ -424,14 +391,12 @@ describe('StatefulOpenTimeline', () => { test('it updates the selection state when timelines are selected', async () => { const wrapper = mount( - - - + ); @@ -455,14 +420,12 @@ describe('StatefulOpenTimeline', () => { test('it updates the sort state when the user clicks on a column to sort it', () => { const wrapper = mount( - - - + ); @@ -482,14 +445,12 @@ describe('StatefulOpenTimeline', () => { test('it updates the onlyFavorites state when the user clicks the Only Favorites button', () => { const wrapper = mount( - - - + ); @@ -509,14 +470,12 @@ describe('StatefulOpenTimeline', () => { test('it updates the itemIdToExpandedNotesRowMap state when the user clicks the expand notes button', async () => { const wrapper = mount( - - - + ); @@ -538,11 +497,11 @@ describe('StatefulOpenTimeline', () => { '10849df0-7b44-11e9-a608-ab3d811609': ( ({ ...note, savedObjectId: note.noteId }) - ) + mockOpenTimelineQueryResults.timeline[0].notes != null + ? mockOpenTimelineQueryResults.timeline[0].notes.map((note) => ({ + ...note, + savedObjectId: note.noteId, + })) : [] } /> @@ -554,14 +513,12 @@ describe('StatefulOpenTimeline', () => { test('it renders the expanded notes when the expand button is clicked', async () => { const wrapper = mount( - - - + ); @@ -577,14 +534,12 @@ describe('StatefulOpenTimeline', () => { test('it has the expected initial state for openTimeline - templateTimelineFilter', () => { const wrapper = mount( - - - + ); @@ -594,14 +549,12 @@ describe('StatefulOpenTimeline', () => { test('it has the expected initial state for openTimelineModalBody - templateTimelineFilter', () => { const wrapper = mount( - - - + ); @@ -619,14 +572,12 @@ describe('StatefulOpenTimeline', () => { test('when the user deletes selected timelines, resetSelectionState is invoked to clear the selection state', async () => { const wrapper = mount( - - - + ); const getSelectedItem = (): [] => @@ -645,14 +596,12 @@ describe('StatefulOpenTimeline', () => { test('it renders the expected count of matching timelines when no query has been entered', async () => { const wrapper = mount( - - - + ); @@ -665,62 +614,51 @@ describe('StatefulOpenTimeline', () => { }); }); - // TODO - Have been skip because we need to re-implement the test as the component changed - test.skip('it invokes onOpenTimeline with the expected parameters when the hyperlink is clicked', async () => { - const onOpenTimeline = jest.fn(); - + test('it invokes onOpenTimeline with the expected parameters when the hyperlink is clicked', async () => { const wrapper = mount( - - - + ); await waitFor(() => { wrapper - .find( - `[data-test-subj="title-${ - mockOpenTimelineQueryResults[0].result.data!.getAllTimeline.timeline[0].savedObjectId - }"]` - ) + .find(`[data-test-subj="title-${mockOpenTimelineQueryResults.timeline[0].savedObjectId}"]`) .first() .simulate('click'); - expect(onOpenTimeline).toHaveBeenCalledWith({ - duplicate: false, - timelineId: mockOpenTimelineQueryResults[0].result.data!.getAllTimeline.timeline[0] - .savedObjectId, - }); + expect((queryTimelineById as jest.Mock).mock.calls[0][0].timelineId).toEqual( + mockOpenTimelineQueryResults.timeline[0].savedObjectId + ); + expect((queryTimelineById as jest.Mock).mock.calls[0][0].duplicate).toEqual(false); }); }); - // TODO - Have been skip because we need to re-implement the test as the component changed - test.skip('it invokes onOpenTimeline with the expected params when the button is clicked', async () => { - const onOpenTimeline = jest.fn(); - + test('it invokes onOpenTimeline with the expected params when the button is clicked', async () => { const wrapper = mount( - - - + ); - + wrapper.find('[data-test-subj="euiCollapsedItemActionsButton"]').first().simulate('click'); + wrapper.find('[data-test-subj="open-duplicate"]').first().simulate('click'); await waitFor(() => { - wrapper.find('[data-test-subj="open-duplicate"]').first().simulate('click'); + wrapper.update(); - expect(onOpenTimeline).toBeCalledWith({ duplicate: true, timelineId: 'saved-timeline-11' }); + expect((queryTimelineById as jest.Mock).mock.calls[0][0].timelineId).toEqual( + mockOpenTimelineQueryResults.timeline[0].savedObjectId + ); + expect((queryTimelineById as jest.Mock).mock.calls[0][0].duplicate).toEqual(true); }); }); }); diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.tsx index 523c181dfb10f..21e85fd3c5a4f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.tsx @@ -8,11 +8,9 @@ import React, { useEffect, useState, useCallback, useMemo } from 'react'; import { useDispatch } from 'react-redux'; -import { DeleteTimelineMutation, SortFieldTimeline, Direction } from '../../../graphql/types'; import { sourcererSelectors } from '../../../common/store'; import { useShallowEqualSelector, useDeepEqualSelector } from '../../../common/hooks/use_selector'; -import { TimelineId } from '../../../../common/types/timeline'; -import { useApolloClient } from '../../../common/utils/apollo_context'; +import { SortFieldTimeline, TimelineId } from '../../../../common/types/timeline'; import { TimelineModel } from '../../../timelines/store/timeline/model'; import { timelineSelectors } from '../../../timelines/store/timeline'; import { @@ -20,7 +18,6 @@ import { updateIsLoading as dispatchUpdateIsLoading, } from '../../../timelines/store/timeline/actions'; -import { deleteTimelineMutation } from '../../containers/delete/persist.gql_query'; import { useGetAllTimeline } from '../../containers/all'; import { defaultHeaders } from '../timeline/body/column_headers/default_headers'; @@ -47,6 +44,8 @@ import { import { DEFAULT_SORT_FIELD, DEFAULT_SORT_DIRECTION } from './constants'; import { useTimelineTypes } from './use_timeline_types'; import { useTimelineStatus } from './use_timeline_status'; +import { deleteTimelinesByIds } from '../../containers/api'; +import { Direction } from '../../../../common/search_strategy'; interface OwnProps { /** Displays open timeline in modal */ @@ -84,7 +83,6 @@ export const StatefulOpenTimelineComponent = React.memo( setImportDataModalToggle, title, }) => { - const apolloClient = useApolloClient(); const dispatch = useDispatch(); /** Required by EuiTable for expandable rows: a map of `TimelineResult.savedObjectId` to rendered notes */ const [itemIdToExpandedNotesRowMap, setItemIdToExpandedNotesRowMap] = useState< @@ -214,17 +212,10 @@ export const StatefulOpenTimelineComponent = React.memo( ); } - await apolloClient!.mutate< - DeleteTimelineMutation.Mutation, - DeleteTimelineMutation.Variables - >({ - mutation: deleteTimelineMutation, - fetchPolicy: 'no-cache', - variables: { id: timelineIds }, - }); + await deleteTimelinesByIds(timelineIds); refetch(); }, - [apolloClient, dispatch, existingIndexNames, refetch, timelineSavedObjectId] + [dispatch, existingIndexNames, refetch, timelineSavedObjectId] ); const onDeleteOneTimeline: OnDeleteOneTimeline = useCallback( @@ -291,7 +282,6 @@ export const StatefulOpenTimelineComponent = React.memo( } queryTimelineById({ - apolloClient, duplicate, onOpenTimeline, timelineId, @@ -301,7 +291,7 @@ export const StatefulOpenTimelineComponent = React.memo( }); }, // eslint-disable-next-line react-hooks/exhaustive-deps - [apolloClient, updateIsLoading, updateTimeline] + [updateIsLoading, updateTimeline] ); useEffect(() => { diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.test.tsx index 936993931da27..12da999c21fc8 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.test.tsx @@ -7,7 +7,6 @@ import { mount } from 'enzyme'; import React, { ReactElement } from 'react'; -import { MockedProvider } from 'react-apollo/test-utils'; import { TestProviders } from '../../../../common/mock/test_providers'; import { mockOpenTimelineQueryResults } from '../../../../common/mock/timeline_results'; @@ -16,9 +15,7 @@ import { useTimelineStatus } from '../use_timeline_status'; import { OpenTimelineModal } from '.'; jest.mock('../../../../common/lib/kibana'); -jest.mock('../../../../common/utils/apollo_context', () => ({ - useApolloClient: () => ({}), -})); + jest.mock('../../../containers/all', () => { const originalModule = jest.requireActual('../../../containers/all'); return { @@ -53,13 +50,9 @@ describe('OpenTimelineModal', () => { beforeEach(() => { ((useGetAllTimeline as unknown) as jest.Mock).mockReturnValue({ fetchAllTimeline: jest.fn(), - timelines: getAllTimeline( - '', - mockOpenTimelineQueryResults[0].result.data?.getAllTimeline?.timeline ?? [] - ), + timelines: getAllTimeline('', mockOpenTimelineQueryResults.timeline ?? []), loading: false, - totalCount: mockOpenTimelineQueryResults[0].result.data.getAllTimeline.totalCount, - refetch: jest.fn(), + totalCount: mockOpenTimelineQueryResults.totalCount, }); ((useTimelineStatus as unknown) as jest.Mock).mockReturnValue({ timelineStatus: null, @@ -76,9 +69,7 @@ describe('OpenTimelineModal', () => { test('it renders the expected modal', async () => { const wrapper = mount( - - - + ); @@ -90,9 +81,7 @@ describe('OpenTimelineModal', () => { test('it installs elastic prebuilt templates', async () => { const wrapper = mount( - - - + ); diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_button.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_button.test.tsx index 62cdda6070b32..a902f4ea785c3 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_button.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_button.test.tsx @@ -7,24 +7,15 @@ import { mount } from 'enzyme'; import React from 'react'; -import { MockedProvider } from 'react-apollo/test-utils'; import { waitFor } from '@testing-library/react'; -import { TestProviders } from '../../../../common/mock/test_providers'; -import { mockOpenTimelineQueryResults } from '../../../../common/mock/timeline_results'; import * as i18n from '../translations'; import { OpenTimelineModalButton } from './open_timeline_modal_button'; describe('OpenTimelineModalButton', () => { test('it renders the expected button text', async () => { - const wrapper = mount( - - - - - - ); + const wrapper = mount(); await waitFor(() => { wrapper.update(); @@ -38,13 +29,7 @@ describe('OpenTimelineModalButton', () => { describe('onClick prop', () => { test('it invokes onClick function provided as a prop when the button is clicked', async () => { const onClick = jest.fn(); - const wrapper = mount( - - - - - - ); + const wrapper = mount(); await waitFor(() => { wrapper.find('[data-test-subj="open-timeline-button"]').first().simulate('click'); diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/types.ts b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/types.ts index 47e1da2d240ea..cddf4e8d71d60 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/types.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/types.ts @@ -8,7 +8,7 @@ import type React from 'react'; import { AllTimelinesVariables } from '../../containers/all'; import { TimelineModel } from '../../store/timeline/model'; -import { NoteResult } from '../../../graphql/types'; +import { NoteResult } from '../../../../common/types/timeline/note'; import { TimelineTypeLiteral, TimelineTypeLiteralWithNull, diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.test.tsx index a9ab89359d0ae..c2df8959c8c94 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.test.tsx @@ -10,7 +10,6 @@ import React from 'react'; import '../../../../common/mock/match_media'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -20,15 +19,6 @@ import { import { createStore, State } from '../../../../common/store'; import { ExpandableHostDetails } from './expandable_host'; -jest.mock('react-apollo', () => { - const original = jest.requireActual('react-apollo'); - return { - ...original, - // eslint-disable-next-line react/display-name - Query: () => <>, - }; -}); - describe('Expandable Host Component', () => { const state: State = { ...mockGlobalState, @@ -39,13 +29,7 @@ describe('Expandable Host Component', () => { }; const { storage } = createSecuritySolutionStorageMock(); - const store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + const store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const mockProps = { contextID: 'text-context', diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.test.tsx index 15b2b33409707..69676e58b77bd 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/index.test.tsx @@ -10,7 +10,6 @@ import React from 'react'; import '../../../common/mock/match_media'; import { - apolloClientObservable, mockGlobalState, TestProviders, SUB_PLUGINS_REDUCER, @@ -21,26 +20,12 @@ import { createStore, State } from '../../../common/store'; import { DetailsPanel } from './index'; import { TimelineExpandedDetail, TimelineTabs } from '../../../../common/types/timeline'; import { FlowTarget } from '../../../../common/search_strategy/security_solution/network'; -jest.mock('react-apollo', () => { - const original = jest.requireActual('react-apollo'); - return { - ...original, - // eslint-disable-next-line react/display-name - Query: () => <>, - }; -}); describe('Details Panel Component', () => { const state: State = { ...mockGlobalState }; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const dataLessExpandedDetail = { [TimelineTabs.query]: { @@ -89,13 +74,7 @@ describe('Details Panel Component', () => { describe('DetailsPanel: rendering', () => { beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); test('it should not render the DetailsPanel if no expanded detail has been set in the reducer', () => { @@ -123,13 +102,7 @@ describe('Details Panel Component', () => { describe('DetailsPanel:EventDetails: rendering', () => { beforeEach(() => { state.timeline.timelineById.test.expandedDetail = eventExpandedDetail; - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); test('it should render the Details Panel when the panelView is set and the associated params are set', () => { @@ -167,13 +140,7 @@ describe('Details Panel Component', () => { describe('DetailsPanel:HostDetails: rendering', () => { beforeEach(() => { state.timeline.timelineById.test.expandedDetail = hostExpandedDetail; - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); test('it should render the Host Details view in the Details Panel when the panelView is hostDetail and the hostName is set', () => { @@ -190,13 +157,7 @@ describe('Details Panel Component', () => { describe('DetailsPanel:NetworkDetails: rendering', () => { beforeEach(() => { state.timeline.timelineById.test.expandedDetail = networkExpandedDetail; - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); }); test('it should render the Network Details view in the Details Panel when the panelView is networkDetail and the ip is set', () => { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/column_header.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/column_header.tsx index 18ead2490dee3..7d203fab9e88f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/column_header.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/column_header.tsx @@ -19,9 +19,9 @@ import { getDraggableFieldId, } from '../../../../../common/components/drag_and_drop/helpers'; import { TimelineTabs } from '../../../../../../common/types/timeline'; +import { Direction } from '../../../../../../common/search_strategy'; import { ColumnHeaderOptions } from '../../../../../timelines/store/timeline/model'; import { OnFilterChange } from '../../events'; -import { Direction } from '../../../../../graphql/types'; import { ARIA_COLUMN_INDEX_OFFSET } from '../../helpers'; import { EventsTh, EventsThContent, EventsHeadingHandle } from '../../styles'; import { Sort } from '../sort'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/header/helpers.ts b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/header/helpers.ts index 85e1b52b5620b..b52fa292413df 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/header/helpers.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/header/helpers.ts @@ -5,8 +5,8 @@ * 2.0. */ +import { Direction } from '../../../../../../../common/search_strategy'; import { assertUnreachable } from '../../../../../../../common/utility_types'; -import { Direction } from '../../../../../../graphql/types'; import { ColumnHeaderOptions } from '../../../../../../timelines/store/timeline/model'; import { Sort, SortDirection } from '../../sort'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/header/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/header/index.test.tsx index bc4ba7fbf0ff5..b0198e60f3b9a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/header/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/header/index.test.tsx @@ -9,7 +9,6 @@ import { mount, shallow } from 'enzyme'; import React from 'react'; import { timelineActions } from '../../../../../store/timeline'; -import { Direction } from '../../../../../../graphql/types'; import { TestProviders } from '../../../../../../common/mock'; import { ColumnHeaderType } from '../../../../../store/timeline/model'; import { Sort } from '../../sort'; @@ -18,6 +17,7 @@ import { defaultHeaders } from '../default_headers'; import { HeaderComponent } from '.'; import { getNewSortDirectionOnClick, getNextSortDirection, getSortDirection } from './helpers'; +import { Direction } from '../../../../../../../common/search_strategy'; const mockDispatch = jest.fn(); jest.mock('react-redux', () => { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/index.test.tsx index c76027e5ef78e..e900458c65572 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/index.test.tsx @@ -11,7 +11,6 @@ import React from 'react'; import '../../../../../common/mock/match_media'; import { DEFAULT_ACTIONS_COLUMN_WIDTH } from '../constants'; import { defaultHeaders } from './default_headers'; -import { Direction } from '../../../../../graphql/types'; import { mockBrowserFields } from '../../../../../common/containers/source/mock'; import { Sort } from '../sort'; import { TestProviders } from '../../../../../common/mock/test_providers'; @@ -21,6 +20,7 @@ import { ColumnHeadersComponent } from '.'; import { cloneDeep } from 'lodash/fp'; import { timelineActions } from '../../../../store/timeline'; import { TimelineTabs } from '../../../../../../common/types/timeline'; +import { Direction } from '../../../../../../common/search_strategy'; const mockDispatch = jest.fn(); jest.mock('react-redux', () => { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/index.ts b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/index.ts index 67cda060e90e4..e7c69b9229d70 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/index.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Direction } from '../../../../../graphql/types'; +import { Direction } from '../../../../../../common/search_strategy'; import { ColumnId } from '../column_id'; /** Specifies a column's sort direction */ diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/sort_indicator.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/sort_indicator.test.tsx index a08e47b5cadda..56f98a6795cd1 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/sort_indicator.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/sort_indicator.test.tsx @@ -7,8 +7,8 @@ import { mount, shallow } from 'enzyme'; import React from 'react'; +import { Direction } from '../../../../../../common/search_strategy'; -import { Direction } from '../../../../../graphql/types'; import * as i18n from '../translations'; import { getDirection, SortIndicator } from './sort_indicator'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/sort_indicator.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/sort_indicator.tsx index c7d1a1f7b6957..6af29793f9373 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/sort_indicator.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/sort/sort_indicator.tsx @@ -8,11 +8,11 @@ import { EuiIcon, EuiToolTip } from '@elastic/eui'; import React from 'react'; -import { Direction } from '../../../../../graphql/types'; import * as i18n from '../translations'; import { SortNumber } from './sort_number'; import { SortDirection } from '.'; +import { Direction } from '../../../../../../common/search_strategy'; enum SortDirectionIndicatorEnum { SORT_UP = 'sortUp', diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/pinned_tab_content/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/pinned_tab_content/index.test.tsx index 2ea2a2e401c0f..0f781b0958d02 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/pinned_tab_content/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/pinned_tab_content/index.test.tsx @@ -9,7 +9,6 @@ import { shallow } from 'enzyme'; import React from 'react'; import useResizeObserver from 'use-resize-observer/polyfilled'; -import { Direction } from '../../../../graphql/types'; import { DefaultCellRenderer } from '../cell_rendering/default_cell_renderer'; import { defaultHeaders, mockTimelineData } from '../../../../common/mock'; import '../../../../common/mock/match_media'; @@ -23,6 +22,7 @@ import { useTimelineEventsDetails } from '../../../containers/details/index'; import { useSourcererScope } from '../../../../common/containers/sourcerer'; import { mockSourcererScope } from '../../../../common/containers/sourcerer/mocks'; import { PinnedTabContentComponent, Props as PinnedTabContentComponentProps } from '.'; +import { Direction } from '../../../../../common/search_strategy'; jest.mock('../../../containers/index', () => ({ useTimelineEvents: jest.fn(), diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx index 4333f48bc2379..165de178768f2 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx @@ -15,7 +15,6 @@ import { timelineActions, timelineSelectors } from '../../../../timelines/store/ import { useShallowEqualSelector } from '../../../../common/hooks/use_selector'; import * as i18n from './translations'; -import { TimelineInput } from '../../../store/timeline/actions'; import { useCreateTimelineButton } from './use_create_timeline'; import { timelineDefaults } from '../../../store/timeline/defaults'; @@ -25,8 +24,6 @@ const NotesCountBadge = (styled(EuiBadge)` NotesCountBadge.displayName = 'NotesCountBadge'; -export type SaveTimeline = (args: TimelineInput) => void; - interface AddToFavoritesButtonProps { timelineId: string; } diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/new_template_timeline.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/new_template_timeline.test.tsx index aa667c0a8466c..1cbf7587dd29b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/new_template_timeline.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/new_template_timeline.test.tsx @@ -11,7 +11,6 @@ import { Provider as ReduxStoreProvider } from 'react-redux'; import { mockGlobalState, - apolloClientObservable, SUB_PLUGINS_REDUCER, kibanaObservable, createSecuritySolutionStorageMock, @@ -29,13 +28,7 @@ jest.mock('../../../../common/lib/kibana', () => { describe('NewTemplateTimeline', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - const store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + const store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); const mockClosePopover = jest.fn(); const mockTitle = 'NEW_TIMELINE'; let wrapper: ReactWrapper; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/index.test.tsx index ede473acbfb2a..acae8c8c53cd0 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/index.test.tsx @@ -9,7 +9,6 @@ import { shallow } from 'enzyme'; import React from 'react'; import useResizeObserver from 'use-resize-observer/polyfilled'; -import { Direction } from '../../../../graphql/types'; import { DefaultCellRenderer } from '../cell_rendering/default_cell_renderer'; import { defaultHeaders, mockTimelineData } from '../../../../common/mock'; import '../../../../common/mock/match_media'; @@ -25,6 +24,7 @@ import { useTimelineEvents } from '../../../containers/index'; import { useTimelineEventsDetails } from '../../../containers/details/index'; import { useSourcererScope } from '../../../../common/containers/sourcerer'; import { mockSourcererScope } from '../../../../common/containers/sourcerer/mocks'; +import { Direction } from '../../../../../common/search_strategy'; jest.mock('../../../containers/index', () => ({ useTimelineEvents: jest.fn(), diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.test.tsx index 3bca1c743db09..44174009d0198 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.test.tsx @@ -9,9 +9,9 @@ import { EuiSelectableProps } from '@elastic/eui'; import React from 'react'; import { shallow, ShallowWrapper, mount } from 'enzyme'; -import { TimelineType } from '../../../../../common/types/timeline'; -import { SortFieldTimeline, Direction } from '../../../../graphql/types'; +import { SortFieldTimeline, TimelineType } from '../../../../../common/types/timeline'; import { SelectableTimeline, ORIGINAL_PAGE_SIZE } from './'; +import { Direction } from '../../../../../common/search_strategy'; const mockFetchAllTimeline = jest.fn(); jest.mock('../../../containers/all', () => { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.tsx index 7ccce80bbe9a4..5692081c5ed3e 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.tsx @@ -23,15 +23,16 @@ import styled from 'styled-components'; import { TimelineTypeLiteralWithNull, TimelineTypeLiteral, + SortFieldTimeline, } from '../../../../../common/types/timeline'; import { useGetAllTimeline } from '../../../containers/all'; -import { SortFieldTimeline, Direction } from '../../../../graphql/types'; import { isUntitled } from '../../open_timeline/helpers'; import * as i18nTimeline from '../../open_timeline/translations'; import { OpenTimelineResult } from '../../open_timeline/types'; import { getEmptyTagValue } from '../../../../common/components/empty_value'; import * as i18n from '../translations'; +import { Direction } from '../../../../../common/search_strategy'; const MyEuiFlexItem = styled(EuiFlexItem)` display: inline-block; diff --git a/x-pack/plugins/security_solution/public/timelines/containers/all/index.gql_query.ts b/x-pack/plugins/security_solution/public/timelines/containers/all/index.gql_query.ts deleted file mode 100644 index 59d8ce381446a..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/containers/all/index.gql_query.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const allTimelinesQuery = gql` - query GetAllTimeline( - $pageInfo: PageInfoTimeline! - $search: String - $sort: SortTimeline - $onlyUserFavorite: Boolean - $timelineType: TimelineType - $status: TimelineStatus - ) { - getAllTimeline( - pageInfo: $pageInfo - search: $search - sort: $sort - onlyUserFavorite: $onlyUserFavorite - timelineType: $timelineType - status: $status - ) { - totalCount - defaultTimelineCount - templateTimelineCount - elasticTemplateTimelineCount - customTemplateTimelineCount - favoriteCount - timeline { - savedObjectId - description - favorite { - fullName - userName - favoriteDate - } - eventIdToNoteIds { - eventId - note - timelineId - noteId - created - createdBy - timelineVersion - updated - updatedBy - version - } - excludedRowRendererIds - notes { - eventId - note - timelineId - timelineVersion - noteId - created - createdBy - updated - updatedBy - version - } - noteIds - pinnedEventIds - status - title - timelineType - templateTimelineId - templateTimelineVersion - created - createdBy - updated - updatedBy - version - } - } - } -`; diff --git a/x-pack/plugins/security_solution/public/timelines/containers/all/index.tsx b/x-pack/plugins/security_solution/public/timelines/containers/all/index.tsx index 82b41a95bd537..4ba6fa8b22cd7 100644 --- a/x-pack/plugins/security_solution/public/timelines/containers/all/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/containers/all/index.tsx @@ -12,22 +12,19 @@ import { useDispatch } from 'react-redux'; import { OpenTimelineResult } from '../../components/open_timeline/types'; import { errorToToaster, useStateToaster } from '../../../common/components/toasters'; -import { - GetAllTimeline, - PageInfoTimeline, - SortTimeline, - TimelineResult, -} from '../../../graphql/types'; import { inputsActions } from '../../../common/store/inputs'; -import { useApolloClient } from '../../../common/utils/apollo_context'; -import { allTimelinesQuery } from './index.gql_query'; import * as i18n from '../../pages/translations'; import { TimelineType, TimelineTypeLiteralWithNull, TimelineStatusLiteralWithNull, + PageInfoTimeline, + TimelineResult, + SortTimeline, + GetAllTimelineVariables, } from '../../../../common/types/timeline'; +import { getAllTimelines } from '../api'; export interface AllTimelinesArgs { fetchAllTimeline: ({ @@ -100,7 +97,6 @@ export const getAllTimeline = memoizeOne( export const useGetAllTimeline = (): AllTimelinesArgs => { const dispatch = useDispatch(); - const apolloClient = useApolloClient(); const [, dispatchToaster] = useStateToaster(); const [allTimelines, setAllTimelines] = useState>({ loading: false, @@ -127,64 +123,49 @@ export const useGetAllTimeline = (): AllTimelinesArgs => { const fetchData = async () => { try { - if (apolloClient != null) { - setAllTimelines((prevState) => ({ - ...prevState, - loading: true, - })); + setAllTimelines((prevState) => ({ + ...prevState, + loading: true, + })); - const variables: GetAllTimeline.Variables = { - onlyUserFavorite, - pageInfo, - search, - sort, - status, - timelineType, - }; - const response = await apolloClient.query< - GetAllTimeline.Query, - GetAllTimeline.Variables - >({ - query: allTimelinesQuery, - fetchPolicy: 'network-only', - variables, - context: { - fetchOptions: { - abortSignal: abortCtrl.signal, - }, - }, - }); - const getAllTimelineResponse = response?.data?.getAllTimeline; - const totalCount = getAllTimelineResponse?.totalCount ?? 0; - const timelines = getAllTimelineResponse?.timeline ?? []; - const customTemplateTimelineCount = - getAllTimelineResponse?.customTemplateTimelineCount ?? 0; - const defaultTimelineCount = getAllTimelineResponse?.defaultTimelineCount ?? 0; - const elasticTemplateTimelineCount = - getAllTimelineResponse?.elasticTemplateTimelineCount ?? 0; - const templateTimelineCount = getAllTimelineResponse?.templateTimelineCount ?? 0; - const favoriteCount = getAllTimelineResponse?.favoriteCount ?? 0; - if (!didCancel) { - dispatch( - inputsActions.setQuery({ - inputId: 'global', - id: ALL_TIMELINE_QUERY_ID, - loading: false, - refetch: fetchData, - inspect: null, - }) - ); - setAllTimelines({ + const variables: GetAllTimelineVariables = { + onlyUserFavorite, + pageInfo, + search, + sort, + status, + timelineType, + }; + const getAllTimelineResponse = await getAllTimelines(variables, abortCtrl.signal); + const totalCount = getAllTimelineResponse?.totalCount ?? 0; + const timelines = getAllTimelineResponse?.timeline ?? []; + const customTemplateTimelineCount = + getAllTimelineResponse?.customTemplateTimelineCount ?? 0; + const defaultTimelineCount = getAllTimelineResponse?.defaultTimelineCount ?? 0; + const elasticTemplateTimelineCount = + getAllTimelineResponse?.elasticTemplateTimelineCount ?? 0; + const templateTimelineCount = getAllTimelineResponse?.templateTimelineCount ?? 0; + const favoriteCount = getAllTimelineResponse?.favoriteCount ?? 0; + if (!didCancel) { + dispatch( + inputsActions.setQuery({ + inputId: 'global', + id: ALL_TIMELINE_QUERY_ID, loading: false, - totalCount, - timelines: getAllTimeline(JSON.stringify(variables), timelines as TimelineResult[]), - customTemplateTimelineCount, - defaultTimelineCount, - elasticTemplateTimelineCount, - templateTimelineCount, - favoriteCount, - }); - } + refetch: fetchData, + inspect: null, + }) + ); + setAllTimelines({ + loading: false, + totalCount, + timelines: getAllTimeline(JSON.stringify(variables), timelines as TimelineResult[]), + customTemplateTimelineCount, + defaultTimelineCount, + elasticTemplateTimelineCount, + templateTimelineCount, + favoriteCount, + }); } } catch (error) { if (!didCancel) { @@ -212,7 +193,7 @@ export const useGetAllTimeline = (): AllTimelinesArgs => { abortCtrl.abort(); }; }, - [apolloClient, dispatch, dispatchToaster] + [dispatch, dispatchToaster] ); useEffect(() => { diff --git a/x-pack/plugins/security_solution/public/timelines/containers/api.ts b/x-pack/plugins/security_solution/public/timelines/containers/api.ts index 01a85f6309c3f..a6c2126f95e8d 100644 --- a/x-pack/plugins/security_solution/public/timelines/containers/api.ts +++ b/x-pack/plugins/security_solution/public/timelines/containers/api.ts @@ -21,14 +21,23 @@ import { TimelineErrorResponse, ImportTimelineResultSchema, importTimelineResultSchema, + ResponseFavoriteTimeline, + AllTimelinesResponse, + SingleTimelineResponse, + allTimelinesResponse, + responseFavoriteTimeline, + GetTimelinesArgs, + SingleTimelineResponseType, + TimelineType, } from '../../../common/types/timeline'; -import { TimelineInput, TimelineType } from '../../graphql/types'; import { TIMELINE_URL, TIMELINE_DRAFT_URL, TIMELINE_IMPORT_URL, TIMELINE_EXPORT_URL, TIMELINE_PREPACKAGED_URL, + TIMELINES_URL, + TIMELINE_FAVORITE_URL, } from '../../../common/constants'; import { KibanaServices } from '../../common/lib/kibana'; @@ -39,6 +48,7 @@ import { ImportDataProps, ImportDataResponse, } from '../../detections/containers/detection_engine/rules'; +import { TimelineInput } from '../../../common/search_strategy'; interface RequestPostTimeline { timeline: TimelineInput; @@ -52,12 +62,24 @@ interface RequestPatchTimeline extends RequestPostTimeline { type RequestPersistTimeline = RequestPostTimeline & Partial>; -const decodeTimelineResponse = (respTimeline?: TimelineResponse) => +const decodeTimelineResponse = (respTimeline?: TimelineResponse | TimelineErrorResponse) => pipe( TimelineResponseType.decode(respTimeline), fold(throwErrors(createToasterPlainError), identity) ); +const decodeSingleTimelineResponse = (respTimeline?: SingleTimelineResponse) => + pipe( + SingleTimelineResponseType.decode(respTimeline), + fold(throwErrors(createToasterPlainError), identity) + ); + +const decodeAllTimelinesResponse = (respTimeline: AllTimelinesResponse) => + pipe( + allTimelinesResponse.decode(respTimeline), + fold(throwErrors(createToasterPlainError), identity) + ); + const decodeTimelineErrorResponse = (respTimeline?: TimelineErrorResponse) => pipe( TimelineErrorResponseType.decode(respTimeline), @@ -70,10 +92,25 @@ const decodePrepackedTimelineResponse = (respTimeline?: ImportTimelineResultSche fold(throwErrors(createToasterPlainError), identity) ); -const postTimeline = async ({ timeline }: RequestPostTimeline): Promise => { +const decodeResponseFavoriteTimeline = (respTimeline?: ResponseFavoriteTimeline) => + pipe( + responseFavoriteTimeline.decode(respTimeline), + fold(throwErrors(createToasterPlainError), identity) + ); + +const postTimeline = async ({ + timeline, +}: RequestPostTimeline): Promise => { + let requestBody; + try { + requestBody = JSON.stringify({ timeline }); + } catch (err) { + return Promise.reject(new Error(`Failed to stringify query: ${JSON.stringify(err)}`)); + } + const response = await KibanaServices.get().http.post(TIMELINE_URL, { method: 'POST', - body: JSON.stringify({ timeline }), + body: requestBody, }); return decodeTimelineResponse(response); @@ -85,10 +122,16 @@ const patchTimeline = async ({ version, }: RequestPatchTimeline): Promise => { let response = null; + let requestBody = null; + try { + requestBody = JSON.stringify({ timeline, timelineId, version }); + } catch (err) { + return Promise.reject(new Error(`Failed to stringify query: ${JSON.stringify(err)}`)); + } try { response = await KibanaServices.get().http.patch(TIMELINE_URL, { method: 'PATCH', - body: JSON.stringify({ timeline, timelineId, version }), + body: requestBody, }); } catch (err) { // For Future developer @@ -106,12 +149,13 @@ export const persistTimeline = async ({ }: RequestPersistTimeline): Promise => { try { if (isEmpty(timelineId) && timeline.status === TimelineStatus.draft && timeline) { - const draftTimeline = await cleanDraftTimeline({ + const temp: TimelineResponse | TimelineErrorResponse = await cleanDraftTimeline({ timelineType: timeline.timelineType!, templateTimelineId: timeline.templateTimelineId ?? undefined, templateTimelineVersion: timeline.templateTimelineVersion ?? undefined, }); + const draftTimeline = decodeTimelineResponse(temp); const templateTimelineInfo = timeline.timelineType! === TimelineType.template ? { @@ -182,11 +226,16 @@ export const exportSelectedTimeline: ExportSelectedData = ({ filename = `timelines_export.ndjson`, ids = [], signal, -}): Promise => { - const body = ids.length > 0 ? JSON.stringify({ ids }) : undefined; +}): Promise => { + let requestBody; + try { + requestBody = ids.length > 0 ? JSON.stringify({ ids }) : undefined; + } catch (err) { + return Promise.reject(new Error(`Failed to stringify query: ${JSON.stringify(err)}`)); + } return KibanaServices.get().http.fetch(`${TIMELINE_EXPORT_URL}`, { method: 'POST', - body, + body: requestBody, query: { file_name: filename, }, @@ -216,7 +265,8 @@ export const cleanDraftTimeline = async ({ timelineType: TimelineType; templateTimelineId?: string; templateTimelineVersion?: number; -}): Promise => { +}): Promise => { + let requestBody; const templateTimelineInfo = timelineType === TimelineType.template ? { @@ -224,11 +274,16 @@ export const cleanDraftTimeline = async ({ templateTimelineVersion, } : {}; - const response = await KibanaServices.get().http.post(TIMELINE_DRAFT_URL, { - body: JSON.stringify({ + try { + requestBody = JSON.stringify({ timelineType, ...templateTimelineInfo, - }), + }); + } catch (err) { + return Promise.reject(new Error(`Failed to stringify query: ${JSON.stringify(err)}`)); + } + const response = await KibanaServices.get().http.post(TIMELINE_DRAFT_URL, { + body: requestBody, }); return decodeTimelineResponse(response); @@ -242,3 +297,94 @@ export const installPrepackedTimelines = async (): Promise { + const response = await KibanaServices.get().http.get(TIMELINE_URL, { + query: { + id, + }, + }); + + return decodeSingleTimelineResponse(response); +}; + +export const getTimelineTemplate = async (templateTimelineId: string) => { + const response = await KibanaServices.get().http.get(TIMELINE_URL, { + query: { + template_timeline_id: templateTimelineId, + }, + }); + + return decodeSingleTimelineResponse(response); +}; + +export const getAllTimelines = async (args: GetTimelinesArgs, abortSignal: AbortSignal) => { + const response = await KibanaServices.get().http.fetch(TIMELINES_URL, { + method: 'GET', + query: { + ...(args.onlyUserFavorite ? { only_user_favorite: args.onlyUserFavorite } : {}), + ...(args?.pageInfo?.pageSize ? { page_size: args.pageInfo.pageSize } : {}), + ...(args?.pageInfo?.pageIndex ? { page_index: args.pageInfo.pageIndex } : {}), + ...(args.search ? { search: args.search } : {}), + ...(args?.sort?.sortField ? { sort_field: args?.sort?.sortField } : {}), + ...(args?.sort?.sortOrder ? { sort_order: args?.sort?.sortOrder } : {}), + ...(args.status ? { status: args.status } : {}), + ...(args.timelineType ? { timeline_type: args.timelineType } : {}), + }, + signal: abortSignal, + }); + + return decodeAllTimelinesResponse(response); +}; + +export const persistFavorite = async ({ + timelineId, + templateTimelineId, + templateTimelineVersion, + timelineType, +}: { + timelineId?: string | null; + templateTimelineId?: string | null; + templateTimelineVersion?: number | null; + timelineType: TimelineType; +}) => { + let requestBody; + + try { + requestBody = JSON.stringify({ + timelineId, + templateTimelineId, + templateTimelineVersion, + timelineType, + }); + } catch (err) { + return Promise.reject(new Error(`Failed to stringify query: ${JSON.stringify(err)}`)); + } + + const response = await KibanaServices.get().http.patch( + TIMELINE_FAVORITE_URL, + { + method: 'PATCH', + body: requestBody, + } + ); + + return decodeResponseFavoriteTimeline(response); +}; + +export const deleteTimelinesByIds = async (savedObjectIds: string[]) => { + let requestBody; + + try { + requestBody = JSON.stringify({ + savedObjectIds, + }); + } catch (err) { + return Promise.reject(new Error(`Failed to stringify query: ${JSON.stringify(err)}`)); + } + const response = await KibanaServices.get().http.delete(TIMELINE_URL, { + method: 'DELETE', + body: requestBody, + }); + return response; +}; diff --git a/x-pack/plugins/security_solution/public/timelines/containers/delete/persist.gql_query.ts b/x-pack/plugins/security_solution/public/timelines/containers/delete/persist.gql_query.ts deleted file mode 100644 index 8312988d61e33..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/containers/delete/persist.gql_query.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const deleteTimelineMutation = gql` - mutation DeleteTimelineMutation($id: [ID!]!) { - deleteTimeline(id: $id) - } -`; diff --git a/x-pack/plugins/security_solution/public/timelines/containers/favorite/persist.gql_query.ts b/x-pack/plugins/security_solution/public/timelines/containers/favorite/persist.gql_query.ts deleted file mode 100644 index f0e31b43af038..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/containers/favorite/persist.gql_query.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const persistTimelineFavoriteMutation = gql` - mutation PersistTimelineFavoriteMutation( - $timelineId: ID - $templateTimelineId: String - $templateTimelineVersion: Int - $timelineType: TimelineType! - ) { - persistFavorite( - timelineId: $timelineId - templateTimelineId: $templateTimelineId - templateTimelineVersion: $templateTimelineVersion - timelineType: $timelineType - ) { - savedObjectId - version - favorite { - fullName - userName - favoriteDate - } - templateTimelineId - templateTimelineVersion - timelineType - } - } -`; diff --git a/x-pack/plugins/security_solution/public/timelines/containers/index.tsx b/x-pack/plugins/security_solution/public/timelines/containers/index.tsx index 5f464b5ed943f..83b511f95bc2a 100644 --- a/x-pack/plugins/security_solution/public/timelines/containers/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/containers/index.tsx @@ -16,7 +16,6 @@ import { isCompleteResponse, isErrorResponse } from '../../../../../../src/plugi import { inputsModel, KueryFilterQueryKind } from '../../common/store'; import { useKibana } from '../../common/lib/kibana'; import { createFilter } from '../../common/containers/helpers'; -import { DocValueFields } from '../../common/containers/query_template'; import { timelineActions } from '../../timelines/store/timeline'; import { detectionsTimelineIds, skipQueryForDetectionsPage } from './helpers'; import { getInspectResponse } from '../../helpers'; @@ -29,6 +28,7 @@ import { TimelineEdges, TimelineItem, TimelineRequestSortField, + DocValueFields, } from '../../../common/search_strategy'; import { InspectResponse } from '../../types'; import * as i18n from './translations'; diff --git a/x-pack/plugins/security_solution/public/timelines/containers/notes/api.ts b/x-pack/plugins/security_solution/public/timelines/containers/notes/api.ts new file mode 100644 index 0000000000000..53c54f915cb8a --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/containers/notes/api.ts @@ -0,0 +1,35 @@ +/* + * 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 { NOTE_URL } from '../../../../common/constants'; +import { NoteSavedObject, SavedNote } from '../../../../common/types/timeline/note'; +import { KibanaServices } from '../../../common/lib/kibana'; + +export const persistNote = async ({ + note, + noteId, + version, + overrideOwner, +}: { + note: SavedNote; + noteId?: string | null; + version?: string | null; + overrideOwner?: boolean; +}) => { + let requestBody; + + try { + requestBody = JSON.stringify({ noteId, version, note, overrideOwner }); + } catch (err) { + return Promise.reject(new Error(`Failed to stringify query: ${JSON.stringify(err)}`)); + } + const response = await KibanaServices.get().http.patch(NOTE_URL, { + method: 'PATCH', + body: requestBody, + }); + return response; +}; diff --git a/x-pack/plugins/security_solution/public/timelines/containers/notes/persist.gql_query.ts b/x-pack/plugins/security_solution/public/timelines/containers/notes/persist.gql_query.ts deleted file mode 100644 index 5fa0d213cbd89..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/containers/notes/persist.gql_query.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const persistTimelineNoteMutation = gql` - mutation PersistTimelineNoteMutation($noteId: ID, $version: String, $note: NoteInput!) { - persistNote(noteId: $noteId, version: $version, note: $note) { - code - message - note { - eventId - note - timelineId - timelineVersion - noteId - created - createdBy - updated - updatedBy - version - } - } - } -`; diff --git a/x-pack/plugins/security_solution/public/timelines/containers/one/index.gql_query.ts b/x-pack/plugins/security_solution/public/timelines/containers/one/index.gql_query.ts deleted file mode 100644 index 97bae5717c7d6..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/containers/one/index.gql_query.ts +++ /dev/null @@ -1,157 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const oneTimelineQuery = gql` - query GetOneTimeline($id: ID!, $timelineType: TimelineType) { - getOneTimeline(id: $id, timelineType: $timelineType) { - savedObjectId - columns { - aggregatable - category - columnHeaderType - description - example - indexes - id - name - searchable - type - } - dataProviders { - id - name - enabled - excluded - kqlQuery - type - queryMatch { - field - displayField - value - displayValue - operator - } - and { - id - name - enabled - excluded - kqlQuery - type - queryMatch { - field - displayField - value - displayValue - operator - } - } - } - dateRange { - start - end - } - description - eqlOptions { - eventCategoryField - tiebreakerField - timestampField - query - size - } - eventType - eventIdToNoteIds { - eventId - note - timelineId - noteId - created - createdBy - timelineVersion - updated - updatedBy - version - } - excludedRowRendererIds - favorite { - fullName - userName - favoriteDate - } - filters { - meta { - alias - controlledBy - disabled - field - formattedValue - index - key - negate - params - type - value - } - query - exists - match_all - missing - range - script - } - kqlMode - kqlQuery { - filterQuery { - kuery { - kind - expression - } - serializedQuery - } - } - indexNames - notes { - eventId - note - timelineId - timelineVersion - noteId - created - createdBy - updated - updatedBy - version - } - noteIds - pinnedEventIds - pinnedEventsSaveObject { - pinnedEventId - eventId - timelineId - created - createdBy - updated - updatedBy - version - } - status - title - timelineType - templateTimelineId - templateTimelineVersion - savedQueryId - sort - created - createdBy - updated - updatedBy - version - } - } -`; diff --git a/x-pack/plugins/security_solution/public/timelines/containers/persist.gql_query.ts b/x-pack/plugins/security_solution/public/timelines/containers/persist.gql_query.ts deleted file mode 100644 index ef050d806a9f2..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/containers/persist.gql_query.ts +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const persistTimelineMutation = gql` - mutation PersistTimelineMutation($timelineId: ID, $version: String, $timeline: TimelineInput!) { - persistTimeline(id: $timelineId, version: $version, timeline: $timeline) { - code - message - timeline { - savedObjectId - version - columns { - aggregatable - category - columnHeaderType - description - example - indexes - id - name - searchable - type - } - dataProviders { - id - name - enabled - excluded - kqlQuery - type - queryMatch { - field - displayField - value - displayValue - operator - } - and { - id - name - enabled - excluded - kqlQuery - type - queryMatch { - field - displayField - value - displayValue - operator - } - } - } - description - eventType - excludedRowRendererIds - favorite { - fullName - userName - favoriteDate - } - filters { - meta { - alias - controlledBy - disabled - field - formattedValue - index - key - negate - params - type - value - } - query - exists - match_all - missing - range - script - } - kqlMode - kqlQuery { - filterQuery { - kuery { - kind - expression - } - serializedQuery - } - } - indexNames - title - dateRange { - start - end - } - savedQueryId - sort - created - createdBy - updated - updatedBy - } - } - } -`; diff --git a/x-pack/plugins/security_solution/public/timelines/containers/pinned_event/api.ts b/x-pack/plugins/security_solution/public/timelines/containers/pinned_event/api.ts new file mode 100644 index 0000000000000..c43a16df09062 --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/containers/pinned_event/api.ts @@ -0,0 +1,31 @@ +/* + * 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 { PINNED_EVENT_URL } from '../../../../common/constants'; +import { PinnedEvent } from '../../../../common/types/timeline/pinned_event'; +import { KibanaServices } from '../../../common/lib/kibana'; + +export const persistPinnedEvent = async ({ + eventId, + pinnedEventId, + timelineId, +}: { + eventId: string; + pinnedEventId?: string | null; + timelineId?: string | null; +}) => { + let requestBody; + try { + requestBody = JSON.stringify({ eventId, pinnedEventId, timelineId }); + } catch (err) { + return Promise.reject(new Error(`Failed to stringify query: ${JSON.stringify(err)}`)); + } + const response = await KibanaServices.get().http.patch(PINNED_EVENT_URL, { + method: 'PATCH', + body: requestBody, + }); + return response; +}; diff --git a/x-pack/plugins/security_solution/public/timelines/containers/pinned_event/persist.gql_query.ts b/x-pack/plugins/security_solution/public/timelines/containers/pinned_event/persist.gql_query.ts deleted file mode 100644 index 5ac2e367a7ab4..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/containers/pinned_event/persist.gql_query.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const persistTimelinePinnedEventMutation = gql` - mutation PersistTimelinePinnedEventMutation($pinnedEventId: ID, $eventId: ID!, $timelineId: ID) { - persistPinnedEventOnTimeline( - pinnedEventId: $pinnedEventId - eventId: $eventId - timelineId: $timelineId - ) { - pinnedEventId - eventId - timelineId - timelineVersion - created - createdBy - updated - updatedBy - version - } - } -`; diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/defaults.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/defaults.ts index df79ff1d2b309..7e76f6035f8b5 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/defaults.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/defaults.ts @@ -7,10 +7,10 @@ import { TimelineType, TimelineStatus, TimelineTabs } from '../../../../common/types/timeline'; -import { Direction } from '../../../graphql/types'; import { defaultHeaders } from '../../components/timeline/body/column_headers/default_headers'; import { normalizeTimeRange } from '../../../common/components/url_state/normalize_time_range'; import { SubsetTimelineModel, TimelineModel } from './model'; +import { Direction } from '../../../../common/search_strategy'; // normalizeTimeRange uses getTimeRangeSettings which cannot be used outside Kibana context if the uiSettings is not false const { from: start, to: end } = normalizeTimeRange({ from: '', to: '' }, false); diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.test.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.test.ts index 0bc1c5d57fa33..c8e8e00caf530 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.test.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.test.ts @@ -6,8 +6,8 @@ */ import { Filter, esFilters } from '../../../../../../../src/plugins/data/public'; +import { Direction } from '../../../../common/search_strategy'; import { TimelineType, TimelineStatus, TimelineTabs } from '../../../../common/types/timeline'; -import { Direction } from '../../../graphql/types'; import { convertTimelineAsInput } from './epic'; import { TimelineModel } from './model'; diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts index ac510401fc186..30d09da2f736d 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic.ts @@ -35,14 +35,14 @@ import { Filter, MatchAllFilter, } from '../../../../../../.../../../src/plugins/data/public'; -import { TimelineStatus, TimelineErrorResponse } from '../../../../common/types/timeline'; -import { inputsModel } from '../../../common/store/inputs'; import { + TimelineStatus, + TimelineErrorResponse, TimelineType, - TimelineInput, ResponseTimeline, TimelineResult, -} from '../../../graphql/types'; +} from '../../../../common/types/timeline'; +import { inputsModel } from '../../../common/store/inputs'; import { addError } from '../../../common/store/app/actions'; import { persistTimeline } from '../../containers/api'; @@ -89,6 +89,7 @@ import { isNotNull } from './helpers'; import { dispatcherTimelinePersistQueue } from './epic_dispatcher_timeline_persistence_queue'; import { myEpicTimelineId } from './my_epic_timeline_id'; import { ActionTimeline, TimelineEpicDependencies } from './types'; +import { TimelineInput } from '../../../../common/search_strategy'; const timelineActionsType = [ applyKqlFilterQuery.type, @@ -133,7 +134,6 @@ export const createTimelineEpic = (): Epic< selectNotesByIdSelector, timelineByIdSelector, timelineTimeRangeSelector, - apolloClient$, kibana$, } ) => { @@ -195,8 +195,8 @@ export const createTimelineEpic = (): Epic< ), dispatcherTimelinePersistQueue.pipe( delay(500), - withLatestFrom(timeline$, apolloClient$, notes$, timelineTimeRange$), - concatMap(([objAction, timeline, apolloClient, notes, timelineTimeRange]) => { + withLatestFrom(timeline$, notes$, timelineTimeRange$), + concatMap(([objAction, timeline, notes, timelineTimeRange]) => { const action: ActionTimeline = get('action', objAction); const timelineId = myEpicTimelineId.getTimelineId(); const version = myEpicTimelineId.getTimelineVersion(); @@ -205,7 +205,6 @@ export const createTimelineEpic = (): Epic< if (timelineNoteActionsType.includes(action.type)) { return epicPersistNote( - apolloClient, action, timeline, notes, @@ -215,17 +214,9 @@ export const createTimelineEpic = (): Epic< allTimelineQuery$ ); } else if (timelinePinnedEventActionsType.includes(action.type)) { - return epicPersistPinnedEvent( - apolloClient, - action, - timeline, - action$, - timeline$, - allTimelineQuery$ - ); + return epicPersistPinnedEvent(action, timeline, action$, timeline$, allTimelineQuery$); } else if (timelineFavoriteActionsType.includes(action.type)) { return epicPersistTimelineFavorite( - apolloClient, action, timeline, action$, diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_favorite.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_favorite.ts index 0e1ebf6b246e2..ae314f54715cd 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_favorite.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_favorite.ts @@ -5,16 +5,12 @@ * 2.0. */ -import { NormalizedCacheObject } from 'apollo-cache-inmemory'; -import { ApolloClient } from 'apollo-client'; import { get } from 'lodash/fp'; import { Action } from 'redux'; import { Epic } from 'redux-observable'; import { from, Observable, empty } from 'rxjs'; import { filter, mergeMap, withLatestFrom, startWith, takeUntil } from 'rxjs/operators'; -import { persistTimelineFavoriteMutation } from '../../containers/favorite/persist.gql_query'; -import { PersistTimelineFavoriteMutation, ResponseFavoriteTimeline } from '../../../graphql/types'; import { addError } from '../../../common/store/app/actions'; import { endTimelineSaving, @@ -24,16 +20,15 @@ import { showCallOutUnauthorizedMsg, } from './actions'; import { dispatcherTimelinePersistQueue } from './epic_dispatcher_timeline_persistence_queue'; -import { refetchQueries } from './refetch_queries'; import { myEpicTimelineId } from './my_epic_timeline_id'; import { ActionTimeline, TimelineById } from './types'; import { inputsModel } from '../../../common/store/inputs'; -import { TimelineType } from '../../../../common/types/timeline'; +import { ResponseFavoriteTimeline, TimelineType } from '../../../../common/types/timeline'; +import { persistFavorite } from '../../containers/api'; export const timelineFavoriteActionsType = [updateIsFavorite.type]; export const epicPersistTimelineFavorite = ( - apolloClient: ApolloClient, action: ActionTimeline, timeline: TimelineById, action$: Observable, @@ -42,19 +37,11 @@ export const epicPersistTimelineFavorite = ( // eslint-disable-next-line @typescript-eslint/no-explicit-any ): Observable => from( - apolloClient.mutate< - PersistTimelineFavoriteMutation.Mutation, - PersistTimelineFavoriteMutation.Variables - >({ - mutation: persistTimelineFavoriteMutation, - fetchPolicy: 'no-cache', - variables: { - timelineId: myEpicTimelineId.getTimelineId(), - templateTimelineId: timeline[action.payload.id].templateTimelineId, - templateTimelineVersion: timeline[action.payload.id].templateTimelineVersion, - timelineType: timeline[action.payload.id].timelineType ?? TimelineType.default, - }, - refetchQueries, + persistFavorite({ + timelineId: myEpicTimelineId.getTimelineId(), + templateTimelineId: timeline[action.payload.id].templateTimelineId, + templateTimelineVersion: timeline[action.payload.id].templateTimelineVersion, + timelineType: timeline[action.payload.id].timelineType ?? TimelineType.default, }) ).pipe( withLatestFrom(timeline$, allTimelineQuery$), diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_local_storage.test.tsx b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_local_storage.test.tsx index 0b70ba8991686..01bc589393d2e 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_local_storage.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_local_storage.test.tsx @@ -14,7 +14,6 @@ import '../../../common/mock/match_media'; import { mockGlobalState, SUB_PLUGINS_REDUCER, - apolloClientObservable, TestProviders, defaultHeaders, createSecuritySolutionStorageMock, @@ -38,11 +37,11 @@ import { import { defaultRowRenderers } from '../../components/timeline/body/renderers'; import { mockDataProviders } from '../../components/timeline/data_providers/mock/mock_data_providers'; import { Sort } from '../../components/timeline/body/sort'; -import { Direction } from '../../../graphql/types'; import { addTimelineInStorage } from '../../containers/local_storage'; import { isPageTimeline } from './epic_local_storage'; import { TimelineId, TimelineStatus, TimelineTabs } from '../../../../common/types/timeline'; +import { Direction } from '../../../../common/search_strategy'; jest.mock('../../containers/local_storage'); @@ -51,13 +50,7 @@ const addTimelineInStorageMock = addTimelineInStorage as jest.Mock; describe('epicLocalStorage', () => { const state: State = mockGlobalState; const { storage } = createSecuritySolutionStorageMock(); - let store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + let store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); let props = {} as QueryTabContentComponentProps; const sort: Sort[] = [ @@ -71,13 +64,7 @@ describe('epicLocalStorage', () => { const endDate = '2018-03-24T03:33:52.253Z'; beforeEach(() => { - store = createStore( - state, - SUB_PLUGINS_REDUCER, - apolloClientObservable, - kibanaObservable, - storage - ); + store = createStore(state, SUB_PLUGINS_REDUCER, kibanaObservable, storage); props = { columns: defaultHeaders, dataProviders: mockDataProviders, diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_note.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_note.ts index a2d64deb4c66c..974bd9d998c0a 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_note.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_note.ts @@ -5,16 +5,12 @@ * 2.0. */ -import { ApolloClient } from 'apollo-client'; -import { NormalizedCacheObject } from 'apollo-cache-inmemory'; import { get } from 'lodash/fp'; import { Action } from 'redux'; import { Epic } from 'redux-observable'; import { from, empty, Observable } from 'rxjs'; import { filter, mergeMap, switchMap, withLatestFrom, startWith, takeUntil } from 'rxjs/operators'; -import { persistTimelineNoteMutation } from '../../../timelines/containers/notes/persist.gql_query'; -import { PersistTimelineNoteMutation, ResponseNote } from '../../../graphql/types'; import { updateNote, addError } from '../../../common/store/app/actions'; import { NotesById } from '../../../common/store/app/model'; import { inputsModel } from '../../../common/store/inputs'; @@ -28,14 +24,14 @@ import { showCallOutUnauthorizedMsg, } from './actions'; import { myEpicTimelineId } from './my_epic_timeline_id'; -import { refetchQueries } from './refetch_queries'; import { dispatcherTimelinePersistQueue } from './epic_dispatcher_timeline_persistence_queue'; import { ActionTimeline, TimelineById } from './types'; +import { persistNote } from '../../containers/notes/api'; +import { ResponseNote } from '../../../../common/types/timeline/note'; export const timelineNoteActionsType = [addNote.type, addNoteToEvent.type]; export const epicPersistNote = ( - apolloClient: ApolloClient, action: ActionTimeline, timeline: TimelineById, notes: NotesById, @@ -46,22 +42,14 @@ export const epicPersistNote = ( // eslint-disable-next-line @typescript-eslint/no-explicit-any ): Observable => from( - apolloClient.mutate< - PersistTimelineNoteMutation.Mutation, - PersistTimelineNoteMutation.Variables - >({ - mutation: persistTimelineNoteMutation, - fetchPolicy: 'no-cache', - variables: { - noteId: null, - version: null, - note: { - eventId: action.payload.eventId, - note: getNote(action.payload.noteId, notes), - timelineId: myEpicTimelineId.getTimelineId(), - }, + persistNote({ + noteId: null, + version: null, + note: { + eventId: action.payload.eventId, + note: getNote(action.payload.noteId, notes), + timelineId: myEpicTimelineId.getTimelineId(), }, - refetchQueries, }) ).pipe( withLatestFrom(timeline$, notes$, allTimelineQuery$), diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_pinned_event.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_pinned_event.ts index bd5cf879d47ef..c6c348615af27 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_pinned_event.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/epic_pinned_event.ts @@ -5,19 +5,15 @@ * 2.0. */ -import { NormalizedCacheObject } from 'apollo-cache-inmemory'; -import { ApolloClient } from 'apollo-client'; import { get, omit } from 'lodash/fp'; import { Action } from 'redux'; import { Epic } from 'redux-observable'; import { from, Observable, empty } from 'rxjs'; import { filter, mergeMap, startWith, withLatestFrom, takeUntil } from 'rxjs/operators'; -import { persistTimelinePinnedEventMutation } from '../../../timelines/containers/pinned_event/persist.gql_query'; -import { PersistTimelinePinnedEventMutation, PinnedEvent } from '../../../graphql/types'; import { addError } from '../../../common/store/app/actions'; import { inputsModel } from '../../../common/store/inputs'; - +import { PinnedEvent } from '../../../../common/types/timeline/pinned_event'; import { pinEvent, endTimelineSaving, @@ -27,14 +23,13 @@ import { showCallOutUnauthorizedMsg, } from './actions'; import { myEpicTimelineId } from './my_epic_timeline_id'; -import { refetchQueries } from './refetch_queries'; import { dispatcherTimelinePersistQueue } from './epic_dispatcher_timeline_persistence_queue'; import { ActionTimeline, TimelineById } from './types'; +import { persistPinnedEvent } from '../../containers/pinned_event/api'; export const timelinePinnedEventActionsType = [pinEvent.type, unPinEvent.type]; export const epicPersistPinnedEvent = ( - apolloClient: ApolloClient, action: ActionTimeline, timeline: TimelineById, action$: Observable, @@ -43,22 +38,13 @@ export const epicPersistPinnedEvent = ( // eslint-disable-next-line @typescript-eslint/no-explicit-any ): Observable => from( - apolloClient.mutate< - PersistTimelinePinnedEventMutation.Mutation, - PersistTimelinePinnedEventMutation.Variables - >({ - mutation: persistTimelinePinnedEventMutation, - fetchPolicy: 'no-cache', - variables: { - pinnedEventId: - timeline[action.payload.id].pinnedEventsSaveObject[action.payload.eventId] != null - ? timeline[action.payload.id].pinnedEventsSaveObject[action.payload.eventId] - .pinnedEventId - : null, - eventId: action.payload.eventId, - timelineId: myEpicTimelineId.getTimelineId(), - }, - refetchQueries, + persistPinnedEvent({ + pinnedEventId: + timeline[action.payload.id].pinnedEventsSaveObject[action.payload.eventId] != null + ? timeline[action.payload.id].pinnedEventsSaveObject[action.payload.eventId].pinnedEventId + : null, + eventId: action.payload.eventId, + timelineId: myEpicTimelineId.getTimelineId(), }) ).pipe( withLatestFrom(timeline$, allTimelineQuery$), diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts index a899994ad4aab..faece61cf9b7e 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/model.ts @@ -9,7 +9,6 @@ import { Filter, IFieldSubType } from '../../../../../../../src/plugins/data/pub import { DataProvider } from '../../components/timeline/data_providers/data_provider'; import { Sort } from '../../components/timeline/body/sort'; -import { PinnedEvent } from '../../../graphql/types'; import { EqlOptionsSelected, TimelineNonEcsData, @@ -23,6 +22,7 @@ import type { RowRendererId, TimelineTabs, } from '../../../../common/types/timeline'; +import { PinnedEvent } from '../../../../common/types/timeline/pinned_event'; export const DEFAULT_PAGE_COUNT = 2; // Eui Pager will not render unless this is a minimum of 2 pages export type KqlMode = 'filter' | 'search'; diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/reducer.test.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/reducer.test.ts index e464637c469f8..d467747346b8b 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/reducer.test.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/reducer.test.ts @@ -22,7 +22,6 @@ import { import { defaultColumnHeaderType } from '../../../timelines/components/timeline/body/column_headers/default_headers'; import { DEFAULT_COLUMN_MIN_WIDTH } from '../../../timelines/components/timeline/body/constants'; import { getColumnWidthFromType } from '../../../timelines/components/timeline/body/column_headers/helpers'; -import { Direction } from '../../../graphql/types'; import { defaultHeaders } from '../../../common/mock'; import { @@ -49,6 +48,7 @@ import { import { ColumnHeaderOptions, TimelineModel } from './model'; import { timelineDefaults } from './defaults'; import { TimelineById } from './types'; +import { Direction } from '../../../../common/search_strategy'; jest.mock('../../../common/components/url_state/normalize_time_range.ts'); jest.mock('../../../common/utils/default_date_settings', () => { diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/refetch_queries.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/refetch_queries.ts deleted file mode 100644 index 962b809caf884..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/refetch_queries.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * 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 { allTimelinesQuery } from '../../../timelines/containers/all/index.gql_query'; -import { Direction } from '../../../graphql/types'; -import { DEFAULT_SORT_FIELD } from '../../../timelines/components/open_timeline/constants'; - -export const refetchQueries = [ - { - query: allTimelinesQuery, - variables: { - search: '', - pageInfo: { - pageIndex: 1, - pageSize: 10, - }, - sort: { sortField: DEFAULT_SORT_FIELD, sortOrder: Direction.desc }, - onlyUserFavorite: false, - }, - }, -]; diff --git a/x-pack/plugins/security_solution/public/timelines/store/timeline/types.ts b/x-pack/plugins/security_solution/public/timelines/store/timeline/types.ts index d227c496610c3..d4a96d036bd5f 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/timeline/types.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/timeline/types.ts @@ -9,7 +9,6 @@ import { Action } from 'redux'; import { Observable } from 'rxjs'; import { Storage } from '../../../../../../../src/plugins/kibana_utils/public'; -import { AppApolloClient } from '../../../common/lib/lib'; import { inputsModel } from '../../../common/store/inputs'; import { NotesById } from '../../../common/store/app/model'; @@ -56,7 +55,6 @@ export interface TimelineEpicDependencies { timelineTimeRangeSelector: (state: State) => inputsModel.TimeRange; selectAllTimelineQuery: () => (state: State, id: string) => inputsModel.GlobalQuery; selectNotesByIdSelector: (state: State) => NotesById; - apolloClient$: Observable; kibana$: Observable; storage: Storage; } diff --git a/x-pack/plugins/security_solution/public/types.ts b/x-pack/plugins/security_solution/public/types.ts index e88077679e1b6..7b9cd2f6e1db5 100644 --- a/x-pack/plugins/security_solution/public/types.ts +++ b/x-pack/plugins/security_solution/public/types.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { AppFrontendLibs } from './common/lib/lib'; import { CoreStart } from '../../../../src/core/public'; import { HomePublicPluginSetup } from '../../../../src/plugins/home/public'; import { DataPublicPluginStart } from '../../../../src/plugins/data/public'; @@ -71,7 +70,7 @@ export interface PluginSetup { // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface PluginStart {} -export interface AppObservableLibs extends AppFrontendLibs { +export interface AppObservableLibs { kibana: CoreStart; } diff --git a/x-pack/plugins/security_solution/scripts/combined_schema.ts b/x-pack/plugins/security_solution/scripts/combined_schema.ts deleted file mode 100644 index d6b401f58c853..0000000000000 --- a/x-pack/plugins/security_solution/scripts/combined_schema.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * 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 { buildSchemaFromTypeDefinitions } from 'graphql-tools'; - -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { schemas as serverSchemas } from '../server/graphql'; - -export const schemas = [...serverSchemas]; - -// this default export is used to feed the combined types to the gql-gen tool -// which generates the corresponding typescript types -// eslint-disable-next-line import/no-default-export -export default buildSchemaFromTypeDefinitions(schemas); diff --git a/x-pack/plugins/security_solution/scripts/generate_types_from_graphql.js b/x-pack/plugins/security_solution/scripts/generate_types_from_graphql.js deleted file mode 100644 index 3d371333eea8e..0000000000000 --- a/x-pack/plugins/security_solution/scripts/generate_types_from_graphql.js +++ /dev/null @@ -1,146 +0,0 @@ -/* - * 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. - */ - -require('../../../../src/setup_node_env'); - -const { join, resolve } = require('path'); -// eslint-disable-next-line import/no-extraneous-dependencies, import/no-unresolved -const { generate } = require('graphql-code-generator'); - -const GRAPHQL_GLOBS = [ - join('public', '**', '*.gql_query.ts{,x}'), - join('common', 'graphql', '**', '*.gql_query.ts{,x}'), -]; -const OUTPUT_INTROSPECTION_PATH = resolve('public', 'graphql', 'introspection.json'); -const OUTPUT_CLIENT_TYPES_PATH = resolve('public', 'graphql', 'types.ts'); -const OUTPUT_SERVER_TYPES_PATH = resolve('server', 'graphql', 'types.ts'); -const SCHEMA_PATH = resolve(__dirname, 'combined_schema.ts'); - -async function main() { - await generate( - { - schema: SCHEMA_PATH, - overwrite: true, - generates: { - [OUTPUT_INTROSPECTION_PATH]: { - documents: GRAPHQL_GLOBS, - primitives: { - String: 'string', - Int: 'number', - Float: 'number', - Boolean: 'boolean', - ID: 'string', - }, - config: { - namingConvention: { - typeNames: 'change-case#pascalCase', - enumValues: 'keep', - }, - contextType: 'SiemContext', - scalars: { - ToStringArray: 'string[] | string', - ToNumberArray: 'number[] | number', - ToDateArray: 'string[] | string', - ToBooleanArray: 'boolean[] | boolean', - Date: 'string', - }, - }, - plugins: ['introspection'], - }, - [OUTPUT_CLIENT_TYPES_PATH]: { - documents: GRAPHQL_GLOBS, - primitives: { - String: 'string', - Int: 'number', - Float: 'number', - Boolean: 'boolean', - ID: 'string', - }, - config: { - avoidOptionals: false, - namingConvention: { - typeNames: 'change-case#pascalCase', - enumValues: 'keep', - }, - contextType: 'SiemContext', - scalars: { - ToStringArray: 'string[]', - ToNumberArray: 'number[]', - ToDateArray: 'string[]', - ToBooleanArray: 'boolean[]', - Date: 'string', - }, - }, - plugins: [ - { - add: `/* tslint:disable */ - /* eslint-disable */ - /* - * 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. - */ - `, - }, - 'typescript-common', - 'typescript-server', - 'typescript-client', - ], - }, - [OUTPUT_SERVER_TYPES_PATH]: { - primitives: { - String: 'string', - Int: 'number', - Float: 'number', - Boolean: 'boolean', - ID: 'string', - }, - config: { - avoidOptionals: false, - namingConvention: { - typeNames: 'change-case#pascalCase', - enumValues: 'keep', - }, - contextType: 'SiemContext', - scalars: { - ToStringArray: 'string[] | string', - ToNumberArray: 'number[] | number', - ToDateArray: 'string[] | string', - ToBooleanArray: 'boolean[] | boolean', - Date: 'string', - }, - }, - plugins: [ - { - add: ` - /* tslint:disable */ - /* eslint-disable */ - /* - * 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 { SiemContext } from '../lib/types'; - `, - }, - 'typescript-common', - 'typescript-server', - 'typescript-resolvers', - ], - }, - }, - }, - true - ); -} - -if (require.main === module) { - main(); -} diff --git a/x-pack/plugins/security_solution/server/graphql/ecs/index.ts b/x-pack/plugins/security_solution/server/graphql/ecs/index.ts deleted file mode 100644 index 2c534d979a925..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/ecs/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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. - */ - -export { ecsSchema } from './schema.gql'; -export { createScalarToStringArrayValueResolvers } from './resolvers'; diff --git a/x-pack/plugins/security_solution/server/graphql/ecs/resolvers.ts b/x-pack/plugins/security_solution/server/graphql/ecs/resolvers.ts deleted file mode 100644 index de9daf1178ad2..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/ecs/resolvers.ts +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 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 { GraphQLScalarType, Kind } from 'graphql'; -import { isBoolean, isNumber, isObject } from 'lodash/fp'; - -/* - * serialize: gets invoked when serializing the result to send it back to a client. - * - * parseValue: gets invoked to parse client input that was passed through variables. - * - * parseLiteral: gets invoked to parse client input that was passed inline in the query. - */ - -export const toStringArrayScalar = new GraphQLScalarType({ - name: 'StringArray', - description: 'Represents value in detail item from the timeline who wants to more than one type', - serialize(value): string[] | null { - if (value == null) { - return null; - } else if (Array.isArray(value)) { - return convertArrayToString(value) as string[]; - } else if (isBoolean(value) || isNumber(value) || isObject(value)) { - return [convertToString(value)]; - } - return [value]; - }, - parseValue(value) { - return value; - }, - parseLiteral(ast) { - switch (ast.kind) { - case Kind.INT: - return parseInt(ast.value, 10); - case Kind.FLOAT: - return parseFloat(ast.value); - case Kind.STRING: - return ast.value; - case Kind.LIST: - return ast.values; - case Kind.OBJECT: - return ast.fields; - } - return null; - }, -}); -export const toStringArrayNoNullableScalar = new GraphQLScalarType({ - name: 'StringArray', - description: 'Represents value in detail item from the timeline who wants to more than one type', - serialize(value): string[] | undefined { - if (value == null) { - return undefined; - } else if (Array.isArray(value)) { - return convertArrayToString(value) as string[]; - } else if (isBoolean(value) || isNumber(value) || isObject(value)) { - return [convertToString(value)]; - } - return [value]; - }, - parseValue(value) { - return value; - }, - parseLiteral(ast) { - switch (ast.kind) { - case Kind.INT: - return parseInt(ast.value, 10); - case Kind.FLOAT: - return parseFloat(ast.value); - case Kind.STRING: - return ast.value; - case Kind.LIST: - return ast.values; - case Kind.OBJECT: - return ast.fields; - } - return undefined; - }, -}); -export const createScalarToStringArrayValueResolvers = () => ({ - ToStringArray: toStringArrayScalar, - ToStringArrayNoNullable: toStringArrayNoNullableScalar, -}); - -const convertToString = (value: object | number | boolean | string): string => { - if (isObject(value)) { - try { - return JSON.stringify(value); - } catch (_) { - return 'Invalid Object'; - } - } - return value.toString(); -}; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const convertArrayToString = (values: any[]): string[] | string => { - if (Array.isArray(values)) { - return values - .filter((item) => item != null) - .map((item) => convertArrayToString(item)) as string[]; - } - return convertToString(values); -}; diff --git a/x-pack/plugins/security_solution/server/graphql/ecs/schema.gql.ts b/x-pack/plugins/security_solution/server/graphql/ecs/schema.gql.ts deleted file mode 100644 index 3ae501c5a167d..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/ecs/schema.gql.ts +++ /dev/null @@ -1,468 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const ecsSchema = gql` - scalar ToStringArray - scalar ToStringArrayNoNullable - - type EventEcsFields { - action: ToStringArray - category: ToStringArray - code: ToStringArray - created: ToDateArray - dataset: ToStringArray - duration: ToNumberArray - end: ToDateArray - hash: ToStringArray - id: ToStringArray - kind: ToStringArray - module: ToStringArray - original: ToStringArray - outcome: ToStringArray - risk_score: ToNumberArray - risk_score_norm: ToNumberArray - severity: ToNumberArray - start: ToDateArray - timezone: ToStringArray - type: ToStringArray - } - - type Location { - lon: ToNumberArray - lat: ToNumberArray - } - - type GeoEcsFields { - city_name: ToStringArray - continent_name: ToStringArray - country_iso_code: ToStringArray - country_name: ToStringArray - location: Location - region_iso_code: ToStringArray - region_name: ToStringArray - } - - type PrimarySecondary { - primary: ToStringArray - secondary: ToStringArray - type: ToStringArray - } - - type Summary { - actor: PrimarySecondary - object: PrimarySecondary - how: ToStringArray - message_type: ToStringArray - sequence: ToStringArray - } - - type AgentEcsField { - type: ToStringArray - } - - type AuditdData { - acct: ToStringArray - terminal: ToStringArray - op: ToStringArray - } - - type AuditdEcsFields { - result: ToStringArray - session: ToStringArray - data: AuditdData - summary: Summary - sequence: ToStringArray - } - - type OsEcsFields { - platform: ToStringArray - name: ToStringArray - full: ToStringArray - family: ToStringArray - version: ToStringArray - kernel: ToStringArray - } - - type HostEcsFields { - architecture: ToStringArray - id: ToStringArray - ip: ToStringArray - mac: ToStringArray - name: ToStringArray - os: OsEcsFields - type: ToStringArray - } - - type Thread { - id: ToNumberArray - start: ToStringArray - } - - type ProcessHashData { - md5: ToStringArray - sha1: ToStringArray - sha256: ToStringArray - } - - type ProcessEcsFields { - hash: ProcessHashData - pid: ToNumberArray - name: ToStringArray - ppid: ToNumberArray - args: ToStringArray - entity_id: ToStringArray - executable: ToStringArray - title: ToStringArray - thread: Thread - working_directory: ToStringArray - } - - type SourceEcsFields { - bytes: ToNumberArray - ip: ToStringArray - port: ToNumberArray - domain: ToStringArray - geo: GeoEcsFields - packets: ToNumberArray - } - - type DestinationEcsFields { - bytes: ToNumberArray - ip: ToStringArray - port: ToNumberArray - domain: ToStringArray - geo: GeoEcsFields - packets: ToNumberArray - } - - type DnsQuestionData { - name: ToStringArray - type: ToStringArray - } - - type DnsEcsFields { - question: DnsQuestionData - resolved_ip: ToStringArray - response_code: ToStringArray - } - - type EndgameEcsFields { - exit_code: ToNumberArray - file_name: ToStringArray - file_path: ToStringArray - logon_type: ToNumberArray - parent_process_name: ToStringArray - pid: ToNumberArray - process_name: ToStringArray - subject_domain_name: ToStringArray - subject_logon_id: ToStringArray - subject_user_name: ToStringArray - target_domain_name: ToStringArray - target_logon_id: ToStringArray - target_user_name: ToStringArray - } - - type SuricataAlertData { - signature: ToStringArray - signature_id: ToNumberArray - } - - type SuricataEveData { - alert: SuricataAlertData - flow_id: ToNumberArray - proto: ToStringArray - } - - type SuricataEcsFields { - eve: SuricataEveData - } - - type TlsJa3Data { - hash: ToStringArray - } - - type FingerprintData { - sha1: ToStringArray - } - - type TlsClientCertificateData { - fingerprint: FingerprintData - } - - type TlsServerCertificateData { - fingerprint: FingerprintData - } - - type TlsFingerprintsData { - ja3: TlsJa3Data - } - - type TlsEcsFields { - client_certificate: TlsClientCertificateData - fingerprints: TlsFingerprintsData - server_certificate: TlsServerCertificateData - } - - type ZeekConnectionData { - local_resp: ToBooleanArray - local_orig: ToBooleanArray - missed_bytes: ToNumberArray - state: ToStringArray - history: ToStringArray - } - - type ZeekNoticeData { - suppress_for: ToNumberArray - msg: ToStringArray - note: ToStringArray - sub: ToStringArray - dst: ToStringArray - dropped: ToBooleanArray - peer_descr: ToStringArray - } - - type ZeekDnsData { - AA: ToBooleanArray - qclass_name: ToStringArray - RD: ToBooleanArray - qtype_name: ToStringArray - rejected: ToBooleanArray - qtype: ToStringArray - query: ToStringArray - trans_id: ToNumberArray - qclass: ToStringArray - RA: ToBooleanArray - TC: ToBooleanArray - } - - type FileFields { - name: ToStringArray - path: ToStringArray - target_path: ToStringArray - extension: ToStringArray - type: ToStringArray - device: ToStringArray - inode: ToStringArray - uid: ToStringArray - owner: ToStringArray - gid: ToStringArray - group: ToStringArray - mode: ToStringArray - size: ToNumberArray - mtime: ToDateArray - ctime: ToDateArray - } - - type ZeekHttpData { - resp_mime_types: ToStringArray - trans_depth: ToStringArray - status_msg: ToStringArray - resp_fuids: ToStringArray - tags: ToStringArray - } - - type HttpBodyData { - content: ToStringArray - bytes: ToNumberArray - } - - type HttpRequestData { - method: ToStringArray - body: HttpBodyData - referrer: ToStringArray - bytes: ToNumberArray - } - - type HttpResponseData { - status_code: ToNumberArray - body: HttpBodyData - bytes: ToNumberArray - } - - type HttpEcsFields { - version: ToStringArray - request: HttpRequestData - response: HttpResponseData - } - - type UrlEcsFields { - domain: ToStringArray - original: ToStringArray - username: ToStringArray - password: ToStringArray - } - - type ZeekFileData { - session_ids: ToStringArray - timedout: ToBooleanArray - local_orig: ToBooleanArray - tx_host: ToStringArray - source: ToStringArray - is_orig: ToBooleanArray - overflow_bytes: ToNumberArray - sha1: ToStringArray - duration: ToNumberArray - depth: ToNumberArray - analyzers: ToStringArray - mime_type: ToStringArray - rx_host: ToStringArray - total_bytes: ToNumberArray - fuid: ToStringArray - seen_bytes: ToNumberArray - missing_bytes: ToNumberArray - md5: ToStringArray - } - - type ZeekSslData { - cipher: ToStringArray - established: ToBooleanArray - resumed: ToBooleanArray - version: ToStringArray - } - - type ZeekEcsFields { - session_id: ToStringArray - connection: ZeekConnectionData - notice: ZeekNoticeData - dns: ZeekDnsData - http: ZeekHttpData - files: ZeekFileData - ssl: ZeekSslData - } - - type UserEcsFields { - domain: ToStringArray - id: ToStringArray - name: ToStringArray - full_name: ToStringArray - email: ToStringArray - hash: ToStringArray - group: ToStringArray - } - - type WinlogEcsFields { - event_id: ToNumberArray - } - - type NetworkEcsField { - bytes: ToNumberArray - community_id: ToStringArray - direction: ToStringArray - packets: ToNumberArray - protocol: ToStringArray - transport: ToStringArray - } - - type PackageEcsFields { - arch: ToStringArray - entity_id: ToStringArray - name: ToStringArray - size: ToNumberArray - summary: ToStringArray - version: ToStringArray - } - - type AuditEcsFields { - package: PackageEcsFields - } - - type SshEcsFields { - method: ToStringArray - signature: ToStringArray - } - - type AuthEcsFields { - ssh: SshEcsFields - } - - type SystemEcsField { - audit: AuditEcsFields - auth: AuthEcsFields - } - - type RuleField { - id: ToStringArray - rule_id: ToStringArray - false_positives: [String!]! - saved_id: ToStringArray - timeline_id: ToStringArray - timeline_title: ToStringArray - max_signals: ToNumberArray - risk_score: ToStringArray - output_index: ToStringArray - description: ToStringArray - from: ToStringArray - immutable: ToBooleanArray - index: ToStringArray - interval: ToStringArray - language: ToStringArray - query: ToStringArray - references: ToStringArray - severity: ToStringArray - tags: ToStringArray - threat: ToAny - type: ToStringArray - size: ToStringArray - to: ToStringArray - enabled: ToBooleanArray - filters: ToAny - created_at: ToStringArray - updated_at: ToStringArray - created_by: ToStringArray - updated_by: ToStringArray - version: ToStringArray - note: ToStringArray - threshold: ToAny - exceptions_list: ToAny - } - - type SignalField { - rule: RuleField - original_time: ToStringArray - status: ToStringArray - } - - type RuleEcsField { - reference: ToStringArray - } - - type ECS { - _id: String! - _index: String - agent: AgentEcsField - auditd: AuditdEcsFields - destination: DestinationEcsFields - dns: DnsEcsFields - endgame: EndgameEcsFields - event: EventEcsFields - geo: GeoEcsFields - host: HostEcsFields - network: NetworkEcsField - rule: RuleEcsField - signal: SignalField - source: SourceEcsFields - suricata: SuricataEcsFields - tls: TlsEcsFields - zeek: ZeekEcsFields - http: HttpEcsFields - url: UrlEcsFields - timestamp: Date - message: ToStringArray - user: UserEcsFields - winlog: WinlogEcsFields - process: ProcessEcsFields - file: FileFields - system: SystemEcsField - } - - type EcsEdges { - node: ECS! - cursor: CursorType! - } -`; diff --git a/x-pack/plugins/security_solution/server/graphql/hosts/schema.gql.ts b/x-pack/plugins/security_solution/server/graphql/hosts/schema.gql.ts deleted file mode 100644 index c3a5c4e3b23cf..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/hosts/schema.gql.ts +++ /dev/null @@ -1,124 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const hostsSchema = gql` - type OsFields { - platform: String - name: String - full: String - family: String - version: String - kernel: String - } - - type HostFields { - architecture: String - id: String - ip: [String] - mac: [String] - name: String - os: OsFields - type: String - } - - type AgentFields { - id: String - } - - type CloudInstance { - id: [String] - } - - type CloudMachine { - type: [String] - } - - type CloudFields { - instance: CloudInstance - machine: CloudMachine - provider: [String] - region: [String] - } - - enum HostPolicyResponseActionStatus { - success - failure - warning - unsupported - } - - type EndpointFields { - endpointPolicy: String - sensorVersion: String - policyStatus: HostPolicyResponseActionStatus - } - - type HostItem { - _id: String - agent: AgentFields - cloud: CloudFields - endpoint: EndpointFields - host: HostEcsFields - inspect: Inspect - lastSeen: Date - } - - type HostsEdges { - node: HostItem! - cursor: CursorType! - } - - type HostsData { - edges: [HostsEdges!]! - totalCount: Float! - pageInfo: PageInfoPaginated! - inspect: Inspect - } - - type FirstLastSeenHost { - inspect: Inspect - firstSeen: Date - lastSeen: Date - } - - enum HostsFields { - hostName - lastSeen - } - - input HostsSortField { - field: HostsFields! - direction: Direction! - } - - extend type Source { - "Gets Hosts based on timerange and specified criteria, or all events in the timerange if no criteria is specified" - Hosts( - id: String - timerange: TimerangeInput! - pagination: PaginationInputPaginated! - sort: HostsSortField! - filterQuery: String - defaultIndex: [String!]! - docValueFields: [docValueFieldsInput!]! - ): HostsData! - HostOverview( - id: String - hostName: String! - timerange: TimerangeInput! - defaultIndex: [String!]! - ): HostItem! - HostFirstLastSeen( - id: String - hostName: String! - defaultIndex: [String!]! - docValueFields: [docValueFieldsInput!]! - ): FirstLastSeenHost! - } -`; diff --git a/x-pack/plugins/security_solution/server/graphql/index.ts b/x-pack/plugins/security_solution/server/graphql/index.ts deleted file mode 100644 index ba3a1371f1829..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 { rootSchema } from '../../common/graphql/root'; -import { sharedSchema } from '../../common/graphql/shared'; - -import { ecsSchema } from './ecs'; -import { dateSchema } from './scalar_date'; -import { noteSchema } from './note'; -import { pinnedEventSchema } from './pinned_event'; -import { toAnySchema } from './scalar_to_any'; -import { toBooleanSchema } from './scalar_to_boolean_array'; -import { toDateSchema } from './scalar_to_date_array'; -import { toNumberSchema } from './scalar_to_number_array'; -import { sourceStatusSchema } from './source_status'; -import { sourcesSchema } from './sources'; -import { timelineSchema } from './timeline'; -export const schemas = [ - ecsSchema, - dateSchema, - toAnySchema, - toNumberSchema, - toDateSchema, - toBooleanSchema, - noteSchema, - pinnedEventSchema, - rootSchema, - sourcesSchema, - sourceStatusSchema, - sharedSchema, - timelineSchema, -]; diff --git a/x-pack/plugins/security_solution/server/graphql/note/index.ts b/x-pack/plugins/security_solution/server/graphql/note/index.ts deleted file mode 100644 index f15ab97ca7676..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/note/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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. - */ - -export { createNoteResolvers } from './resolvers'; -export { noteSchema } from './schema.gql'; diff --git a/x-pack/plugins/security_solution/server/graphql/note/resolvers.ts b/x-pack/plugins/security_solution/server/graphql/note/resolvers.ts deleted file mode 100644 index 383522bc06bdd..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/note/resolvers.ts +++ /dev/null @@ -1,93 +0,0 @@ -/* - * 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 { AppResolverWithFields, AppResolverOf } from '../../lib/framework'; -import { MutationResolvers, QueryResolvers } from '../types'; -import { Notes } from '../../lib/timeline/saved_object/notes'; - -export type QueryNoteResolver = AppResolverOf; - -export type QueryAllNoteResolver = AppResolverWithFields< - QueryResolvers.GetAllNotesResolver, - 'totalCount' | 'Note' ->; - -export type QueryNotesByTimelineIdResolver = AppResolverOf; - -export type QueryNotesByEventIdResolver = AppResolverOf; - -export type MutationNoteResolver = AppResolverOf< - MutationResolvers.PersistNoteResolver ->; - -export type MutationDeleteNoteResolver = AppResolverOf; - -export type MutationDeleteNoteByTimelineIdResolver = AppResolverOf; - -interface NoteResolversDeps { - note: Notes; -} - -export const createNoteResolvers = ( - libs: NoteResolversDeps -): { - Query: { - getNote: QueryNoteResolver; - getAllNotes: QueryAllNoteResolver; - getNotesByEventId: QueryNotesByEventIdResolver; - getNotesByTimelineId: QueryNotesByTimelineIdResolver; - }; - Mutation: { - deleteNote: MutationDeleteNoteResolver; - deleteNoteByTimelineId: MutationDeleteNoteByTimelineIdResolver; - persistNote: MutationNoteResolver; - }; -} => ({ - Query: { - async getNote(root, args, { req }) { - return libs.note.getNote(req, args.id); - }, - async getAllNotes(root, args, { req }) { - return libs.note.getAllNotes( - req, - args.pageInfo || null, - args.search || null, - args.sort || null - ); - }, - async getNotesByEventId(root, args, { req }) { - return libs.note.getNotesByEventId(req, args.eventId); - }, - async getNotesByTimelineId(root, args, { req }) { - return libs.note.getNotesByTimelineId(req, args.timelineId); - }, - }, - Mutation: { - async deleteNote(root, args, { req }) { - await libs.note.deleteNote(req, args.id); - - return true; - }, - async deleteNoteByTimelineId(root, args, { req }) { - await libs.note.deleteNoteByTimelineId(req, args.timelineId); - - return true; - }, - async persistNote(root, args, { req }) { - return libs.note.persistNote( - req, - args.noteId || null, - args.version || null, - { - ...args.note, - timelineId: args.note.timelineId || null, - }, - true - ); - }, - }, -}); diff --git a/x-pack/plugins/security_solution/server/graphql/note/schema.gql.ts b/x-pack/plugins/security_solution/server/graphql/note/schema.gql.ts deleted file mode 100644 index bd791b734ff24..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/note/schema.gql.ts +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -const note = ` - eventId: String - note: String - timelineId: String -`; - -export const noteSchema = gql` - ############### - #### INPUT #### - ############### - - input NoteInput { - ${note} - } - - input PageInfoNote { - pageIndex: Float! - pageSize: Float! - } - - enum SortFieldNote { - updatedBy - updated - } - - input SortNote { - sortField: SortFieldNote! - sortOrder: Direction! - } - - ############### - #### QUERY #### - ############### - type NoteResult { - ${note} - noteId: String! - created: Float - createdBy: String - timelineVersion: String - updated: Float - updatedBy: String - version: String - } - - type ResponseNote { - code: Float - message: String - note: NoteResult! - } - - type ResponseNotes { - notes: [NoteResult!]! - totalCount: Float - } - - ######################### - #### Mutation/Query #### - ######################### - - extend type Query { - getNote(id: ID!): NoteResult! - getNotesByTimelineId(timelineId: ID!): [NoteResult!]! - getNotesByEventId(eventId: ID!): [NoteResult!]! - getAllNotes(pageInfo: PageInfoNote, search: String, sort: SortNote): ResponseNotes! - } - - extend type Mutation { - "Persists a note" - persistNote(noteId: ID, version: String, note: NoteInput!): ResponseNote! - deleteNote(id: [ID!]!):Boolean - deleteNoteByTimelineId(timelineId: ID!, version: String):Boolean - } -`; diff --git a/x-pack/plugins/security_solution/server/graphql/pinned_event/index.ts b/x-pack/plugins/security_solution/server/graphql/pinned_event/index.ts deleted file mode 100644 index b1018025b3d73..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/pinned_event/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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. - */ - -export { createPinnedEventResolvers } from './resolvers'; -export { pinnedEventSchema } from './schema.gql'; diff --git a/x-pack/plugins/security_solution/server/graphql/pinned_event/resolvers.ts b/x-pack/plugins/security_solution/server/graphql/pinned_event/resolvers.ts deleted file mode 100644 index de1a40d9118c7..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/pinned_event/resolvers.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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 { AppResolverOf } from '../../lib/framework'; -import { MutationResolvers, QueryResolvers } from '../types'; -import { PinnedEvent } from '../../lib/timeline/saved_object/pinned_events'; - -export type QueryAllPinnedEventsByTimelineIdResolver = AppResolverOf; - -export type MutationPinnedEventResolver = AppResolverOf; - -export type MutationDeletePinnedEventOnTimelineResolver = AppResolverOf; - -export type MutationDeleteAllPinnedEventsOnTimelineResolver = AppResolverOf; - -interface TimelineResolversDeps { - pinnedEvent: PinnedEvent; -} - -export const createPinnedEventResolvers = ( - libs: TimelineResolversDeps -): { - Query: { - getAllPinnedEventsByTimelineId: QueryAllPinnedEventsByTimelineIdResolver; - }; - Mutation: { - persistPinnedEventOnTimeline: MutationPinnedEventResolver; - deletePinnedEventOnTimeline: MutationDeletePinnedEventOnTimelineResolver; - deleteAllPinnedEventsOnTimeline: MutationDeleteAllPinnedEventsOnTimelineResolver; - }; -} => ({ - Query: { - async getAllPinnedEventsByTimelineId(root, args, { req }) { - return libs.pinnedEvent.getAllPinnedEventsByTimelineId(req, args.timelineId); - }, - }, - Mutation: { - async persistPinnedEventOnTimeline(root, args, { req }) { - return libs.pinnedEvent.persistPinnedEventOnTimeline( - req, - args.pinnedEventId || null, - args.eventId, - args.timelineId || null - ); - }, - async deletePinnedEventOnTimeline(root, args, { req }) { - await libs.pinnedEvent.deletePinnedEventOnTimeline(req, args.id); - return true; - }, - async deleteAllPinnedEventsOnTimeline(root, args, { req }) { - await libs.pinnedEvent.deleteAllPinnedEventsOnTimeline(req, args.timelineId); - return true; - }, - }, -}); diff --git a/x-pack/plugins/security_solution/server/graphql/pinned_event/schema.gql.ts b/x-pack/plugins/security_solution/server/graphql/pinned_event/schema.gql.ts deleted file mode 100644 index 2e1cb29cf9d78..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/pinned_event/schema.gql.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const pinnedEventSchema = gql` - ######################### - #### Mutation/Query #### - ######################### - - type PinnedEvent { - code: Float - message: String - pinnedEventId: ID! - eventId: ID - timelineId: ID - timelineVersion: String - created: Float - createdBy: String - updated: Float - updatedBy: String - version: String - } - - extend type Query { - getAllPinnedEventsByTimelineId(timelineId: ID!): [PinnedEvent!]! - } - - extend type Mutation { - "Persists a pinned event in a timeline" - persistPinnedEventOnTimeline(pinnedEventId: ID, eventId: ID!, timelineId: ID): PinnedEvent - "Remove a pinned events in a timeline" - deletePinnedEventOnTimeline(id: [ID!]!): Boolean! - "Remove all pinned events in a timeline" - deleteAllPinnedEventsOnTimeline(timelineId: ID!): Boolean! - } -`; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_date/index.ts b/x-pack/plugins/security_solution/server/graphql/scalar_date/index.ts deleted file mode 100644 index 6e3fb5adbb687..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_date/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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. - */ - -export { createScalarDateResolvers } from './resolvers'; -export { dateSchema } from './schema.gql'; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_date/resolvers.test.ts b/x-pack/plugins/security_solution/server/graphql/scalar_date/resolvers.test.ts deleted file mode 100644 index 4c421af560180..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_date/resolvers.test.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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 { IntValueNode, StringValueNode } from 'graphql'; - -import { dateScalar } from './resolvers'; - -describe('Test ScalarDate Resolver', () => { - describe('#serialize', () => { - test('Make sure that an epoch date number is serialized', () => { - const date = dateScalar.serialize(1514782800000); - expect(date).toEqual('2018-01-01T05:00:00.000Z'); - }); - - test('Make sure that a date string is serialized', () => { - const date = dateScalar.serialize('2018-01-01T05:00:00.000Z'); - expect(date).toEqual('2018-01-01T05:00:00.000Z'); - }); - }); - - describe('#parseValue', () => { - test('Make sure that an epoch date number passes through parseValue', () => { - const date = dateScalar.parseValue(1514782800000); - expect(date).toEqual(1514782800000); - }); - - test('Make sure that a date string passes through parseValue', () => { - const date = dateScalar.parseValue('2018-01-01T05:00:00.000Z'); - expect(date).toEqual('2018-01-01T05:00:00.000Z'); - }); - }); - - describe('#parseLiteral', () => { - test('Make sure that an epoch date string passes through parseLiteral', () => { - const valueNode: IntValueNode = { - kind: 'IntValue', - value: '1514782800000', - }; - const date = dateScalar.parseLiteral(valueNode); - expect(date).toEqual(1514782800000); - }); - - test('Make sure that a date string passes through parseLiteral', () => { - const valueNode: StringValueNode = { - kind: 'StringValue', - value: '2018-01-01T05:00:00.000Z', - }; - const date = dateScalar.parseLiteral(valueNode); - expect(date).toEqual('2018-01-01T05:00:00.000Z'); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_date/resolvers.ts b/x-pack/plugins/security_solution/server/graphql/scalar_date/resolvers.ts deleted file mode 100644 index fe55cc949af48..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_date/resolvers.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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 { GraphQLScalarType, Kind } from 'graphql'; - -export const dateScalar = new GraphQLScalarType({ - name: 'Date', - description: - 'Represents a Date for either an ES formatted date string or epoch string ISO8601 formatted', - serialize(value): string { - return Number.isNaN(Date.parse(value)) ? new Date(value).toISOString() : value; - }, - parseValue(value) { - return value; - }, - parseLiteral(ast) { - switch (ast.kind) { - case Kind.INT: - return parseInt(ast.value, 10); - case Kind.STRING: - return ast.value; - } - return null; - }, -}); - -export const createScalarDateResolvers = () => ({ - Date: dateScalar, -}); diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_any/index.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_any/index.ts deleted file mode 100644 index 0a26a1a59816a..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_any/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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. - */ - -export { createScalarToAnyValueResolvers } from './resolvers'; -export { toAnySchema } from './schema.gql'; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_any/resolvers.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_any/resolvers.ts deleted file mode 100644 index 37903617989e6..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_any/resolvers.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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 { isObject } from 'lodash/fp'; -import { GraphQLScalarType, Kind } from 'graphql'; - -/* - * serialize: gets invoked when serializing the result to send it back to a client. - * - * parseValue: gets invoked to parse client input that was passed through variables. - * - * parseLiteral: gets invoked to parse client input that was passed inline in the query. - */ - -export const toAnyScalar = new GraphQLScalarType({ - name: 'Any', - description: 'Represents any type', - serialize(value): unknown { - if (value == null) { - return null; - } - try { - const maybeObj = JSON.parse(value); - if (isObject(maybeObj)) { - return maybeObj; - } else { - return value; - } - } catch (e) { - return value; - } - }, - parseValue(value) { - return value; - }, - parseLiteral(ast) { - switch (ast.kind) { - case Kind.BOOLEAN: - return ast.value; - case Kind.INT: - return ast.value; - case Kind.FLOAT: - return ast.value; - case Kind.STRING: - return ast.value; - case Kind.LIST: - return ast.values; - case Kind.OBJECT: - return ast.fields; - } - return null; - }, -}); - -export const createScalarToAnyValueResolvers = () => ({ - ToAny: toAnyScalar, -}); diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_any/schema.gql.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_any/schema.gql.ts deleted file mode 100644 index 79c4a881c10b9..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_any/schema.gql.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const toAnySchema = gql` - scalar ToAny -`; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/index.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/index.ts deleted file mode 100644 index df362871fd5a6..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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. - */ - -export { createScalarToBooleanArrayValueResolvers } from './resolvers'; -export { toBooleanSchema } from './schema.gql'; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/resolvers.test.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/resolvers.test.ts deleted file mode 100644 index 247ed3a0d0911..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/resolvers.test.ts +++ /dev/null @@ -1,119 +0,0 @@ -/* - * 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 { toBooleanArrayScalar } from './resolvers'; - -describe('Test ToBooleanArray Scalar Resolver', () => { - describe('#serialize', () => { - test('Test Null Boolean', () => { - expect(toBooleanArrayScalar.serialize(null)).toEqual(null); - }); - - test('Test Undefined Boolean', () => { - expect(toBooleanArrayScalar.serialize(undefined)).toEqual(null); - }); - - test('Test NaN Number', () => { - expect(toBooleanArrayScalar.serialize(NaN)).toEqual([false]); - }); - - test('Test Basic false Boolean', () => { - expect(toBooleanArrayScalar.serialize(false)).toEqual([false]); - }); - - test('Test Basic true Boolean', () => { - expect(toBooleanArrayScalar.serialize(true)).toEqual([true]); - }); - - test('Test Basic false Boolean string', () => { - expect(toBooleanArrayScalar.serialize('false')).toEqual([false]); - }); - - test('Test Basic true Boolean string', () => { - expect(toBooleanArrayScalar.serialize('true')).toEqual([true]); - }); - - test('Test Basic true Boolean string with weird letters', () => { - expect(toBooleanArrayScalar.serialize('tRuE')).toEqual([true]); - }); - - test('Test Basic true Boolean string with just the letter T', () => { - expect(toBooleanArrayScalar.serialize('T')).toEqual([true]); - }); - - test('Test Basic true Boolean string with just the letter t', () => { - expect(toBooleanArrayScalar.serialize('t')).toEqual([true]); - }); - - test('Test string with gibberish returning false', () => { - expect(toBooleanArrayScalar.serialize('some gibberish')).toEqual([false]); - }); - - test('Test Basic false Boolean in array', () => { - expect(toBooleanArrayScalar.serialize([false])).toEqual([false]); - }); - - test('Test Basic true Boolean in array', () => { - expect(toBooleanArrayScalar.serialize([true])).toEqual([true]); - }); - - test('Test Basic false Boolean string in array', () => { - expect(toBooleanArrayScalar.serialize(['false'])).toEqual([false]); - }); - - test('Test Basic true Boolean string in array', () => { - expect(toBooleanArrayScalar.serialize(['true'])).toEqual([true]); - }); - - test('Test number with 0 returning false', () => { - expect(toBooleanArrayScalar.serialize(0)).toEqual([false]); - }); - - test('Test number with 1 returning returning true', () => { - expect(toBooleanArrayScalar.serialize(1)).toEqual([true]); - }); - - test('Test array with 0 and 1 returning true and false', () => { - expect(toBooleanArrayScalar.serialize([0, 1, 1, 0, 1])).toEqual([ - false, - true, - true, - false, - true, - ]); - }); - - test('Test Simple Object returning false', () => { - expect(toBooleanArrayScalar.serialize({})).toEqual([false]); - }); - - test('Test Simple Circular Reference returning false', () => { - const circularReference = { myself: {} }; - circularReference.myself = circularReference; - expect(toBooleanArrayScalar.serialize(circularReference)).toEqual([false]); - }); - - test('Test Array of Strings with some numbers, a null, and some text and a boolean', () => { - expect( - toBooleanArrayScalar.serialize([ - 5, - 'you', - '1', - 'he', - '20', - 'we', - null, - '22', - 'they', - 'True', - 'T', - 't', - ]) - ).toEqual([true, false, false, false, false, false, false, false, true, true, true]); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/resolvers.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/resolvers.ts deleted file mode 100644 index b1aefd3188ef6..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/resolvers.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 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 { GraphQLScalarType, Kind } from 'graphql'; -import { isNumber, isObject, isString } from 'lodash/fp'; - -/* - * serialize: gets invoked when serializing the result to send it back to a client. - * - * parseValue: gets invoked to parse client input that was passed through variables. - * - * parseLiteral: gets invoked to parse client input that was passed inline in the query. - */ - -export const toBooleanArrayScalar = new GraphQLScalarType({ - name: 'BooleanArray', - description: 'Represents value in detail item from the timeline who wants to more than one type', - serialize(value): boolean[] | null { - if (value == null) { - return null; - } else if (Array.isArray(value)) { - return convertArrayToBoolean(value) as boolean[]; - } else if (isString(value) || isObject(value) || isNumber(value)) { - return [convertToBoolean(value)]; - } - return [value]; - }, - parseValue(value) { - return value; - }, - parseLiteral(ast) { - switch (ast.kind) { - case Kind.BOOLEAN: - return ast.value; - case Kind.INT: - return ast.value; - case Kind.FLOAT: - return ast.value; - case Kind.STRING: - return ast.value; - case Kind.LIST: - return ast.values; - case Kind.OBJECT: - return ast.fields; - } - return null; - }, -}); - -export const createScalarToBooleanArrayValueResolvers = () => ({ - ToBooleanArray: toBooleanArrayScalar, -}); - -const convertToBoolean = (value: object | number | boolean | string): boolean => { - if (isObject(value)) { - return false; - } else if (isString(value)) { - return value.toLowerCase() === 'true' || value.toLowerCase() === 't' ? true : false; - } else { - return Boolean(value); - } -}; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const convertArrayToBoolean = (values: any[]): boolean[] | boolean => { - if (Array.isArray(values)) { - return values - .filter((item) => item != null) - .map((item) => convertArrayToBoolean(item)) as boolean[]; - } - return convertToBoolean(values); -}; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/schema.gql.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/schema.gql.ts deleted file mode 100644 index d8717ebfdee02..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_boolean_array/schema.gql.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const toBooleanSchema = gql` - scalar ToBooleanArray -`; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/index.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/index.ts deleted file mode 100644 index 53b8c2c4caa0c..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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. - */ - -export { createScalarToDateArrayValueResolvers } from './resolvers'; -export { toDateSchema } from './schema.gql'; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/resolvers.test.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/resolvers.test.ts deleted file mode 100644 index 109fbb9e42005..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/resolvers.test.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* - * 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 { toDateArrayScalar } from './resolvers'; - -describe('Test ToDateArray Scalar Resolver', () => { - describe('#serialize', () => { - test('Test Null Number', () => { - expect(toDateArrayScalar.serialize(null)).toEqual(null); - }); - - test('Test Undefined Number', () => { - expect(toDateArrayScalar.serialize(undefined)).toEqual(null); - }); - - test('Test NaN Number', () => { - expect(toDateArrayScalar.serialize(NaN)).toEqual([NaN]); - }); - - test('Test Basic Date String', () => { - expect(toDateArrayScalar.serialize('2019-04-16T03:14:13.704Z')).toEqual([ - '2019-04-16T03:14:13.704Z', - ]); - }); - - test('Test Basic Date Number as String', () => { - expect(toDateArrayScalar.serialize('1555384642768')).toEqual(['2019-04-16T03:17:22.768Z']); - }); - - test('Test Basic Date String in an array', () => { - expect(toDateArrayScalar.serialize(['2019-04-16T03:14:13.704Z'])).toEqual([ - '2019-04-16T03:14:13.704Z', - ]); - }); - - test('Test Two Basic Date Strings in an array', () => { - expect( - toDateArrayScalar.serialize(['2019-04-16T03:14:13.704Z', '2019-05-16T03:14:13.704Z']) - ).toEqual(['2019-04-16T03:14:13.704Z', '2019-05-16T03:14:13.704Z']); - }); - - test('Test Basic Numbers in an array', () => { - expect(toDateArrayScalar.serialize([1555384642768, 1555384453704])).toEqual([ - '2019-04-16T03:17:22.768Z', - '2019-04-16T03:14:13.704Z', - ]); - }); - - test('Mix of Basic Numbers and strings in an array', () => { - expect( - toDateArrayScalar.serialize([1555384642768, '2019-05-16T03:14:13.704Z', 1555384453704]) - ).toEqual([ - '2019-04-16T03:17:22.768Z', - '2019-05-16T03:14:13.704Z', - '2019-04-16T03:14:13.704Z', - ]); - }); - - test('Test Simple Object', () => { - expect(toDateArrayScalar.serialize({})).toEqual(['invalid date']); - }); - - test('Test Simple Circular Reference', () => { - const circularReference = { myself: {} }; - circularReference.myself = circularReference; - expect(toDateArrayScalar.serialize(circularReference)).toEqual(['invalid date']); - }); - - test('Test Array of Strings with some numbers, a null, and some text', () => { - expect( - toDateArrayScalar.serialize([ - '1555384453704', - 'you', - 1555384642768, - 'he', - 'we', - null, - 'they', - ]) - ).toEqual([ - '2019-04-16T03:14:13.704Z', - 'you', - '2019-04-16T03:17:22.768Z', - 'he', - 'we', - 'they', - ]); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/resolvers.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/resolvers.ts deleted file mode 100644 index 532e520e4045e..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/resolvers.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 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 { GraphQLScalarType, Kind } from 'graphql'; -import { isBoolean, isNumber, isObject, isString } from 'lodash/fp'; - -/* - * serialize: gets invoked when serializing the result to send it back to a client. - * - * parseValue: gets invoked to parse client input that was passed through variables. - * - * parseLiteral: gets invoked to parse client input that was passed inline in the query. - */ - -export const toDateArrayScalar = new GraphQLScalarType({ - name: 'DateArray', - description: 'Represents value in detail item from the timeline who wants to more than one type', - serialize(value): string[] | null { - if (value == null) { - return null; - } else if (Array.isArray(value)) { - return convertArrayToDate(value) as string[]; - } else if (isBoolean(value) || isString(value) || isObject(value)) { - return [convertToDate(value)]; - } - return [value]; - }, - parseValue(value) { - return value; - }, - parseLiteral(ast) { - switch (ast.kind) { - case Kind.INT: - return parseInt(ast.value, 10); - case Kind.STRING: - return ast.value; - } - return null; - }, -}); - -export const createScalarToDateArrayValueResolvers = () => ({ - ToDateArray: toDateArrayScalar, -}); - -const convertToDate = (value: object | number | boolean | string): string => { - if (isNumber(value)) { - return new Date(value).toISOString(); - } else if (isObject(value)) { - return 'invalid date'; - } else if (isString(value) && !isNaN(+value)) { - return new Date(+value).toISOString(); - } else { - return String(value); - } -}; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const convertArrayToDate = (values: any[]): string[] | string => { - if (Array.isArray(values)) { - return values - .filter((item) => item != null) - .map((item) => convertArrayToDate(item)) as string[]; - } - return convertToDate(values); -}; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/schema.gql.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/schema.gql.ts deleted file mode 100644 index 7238e975c4c25..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_date_array/schema.gql.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const toDateSchema = gql` - scalar ToDateArray -`; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/index.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/index.ts deleted file mode 100644 index 070c09181c2c5..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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. - */ - -export { createScalarToNumberArrayValueResolvers } from './resolvers'; -export { toNumberSchema } from './schema.gql'; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/resolvers.test.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/resolvers.test.ts deleted file mode 100644 index a37ae25ec5e04..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/resolvers.test.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 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 { toNumberArrayScalar } from './resolvers'; - -describe('Test ToNumberArray Scalar Resolver', () => { - describe('#serialize', () => { - test('Test Null Number', () => { - expect(toNumberArrayScalar.serialize(null)).toEqual(null); - }); - - test('Test Undefined Number', () => { - expect(toNumberArrayScalar.serialize(undefined)).toEqual(null); - }); - - test('Test NaN Number', () => { - expect(toNumberArrayScalar.serialize(NaN)).toEqual([NaN]); - }); - - test('Test Basic Number', () => { - expect(toNumberArrayScalar.serialize(5)).toEqual([5]); - }); - - test('Test Basic Number in an array', () => { - expect(toNumberArrayScalar.serialize([5])).toEqual([5]); - }); - - test('Test Two Basic Numbers in an array', () => { - expect(toNumberArrayScalar.serialize([5, 3])).toEqual([5, 3]); - }); - - test('Test Basic String', () => { - expect(toNumberArrayScalar.serialize('33')).toEqual([33]); - }); - - test('Test Two Basic Strings in an array', () => { - expect(toNumberArrayScalar.serialize(['33', '44'])).toEqual([33, 44]); - }); - - test('Test Two Basic Strings and a piece of text in an array', () => { - expect(toNumberArrayScalar.serialize(['33', 'orange', '44'])).toEqual([33, NaN, 44]); - }); - - test('Test Basic Object to return NaN', () => { - expect(toNumberArrayScalar.serialize({ hello: 'test' })).toEqual([NaN]); - }); - - test('Test more complicated Object to return NaN', () => { - expect( - toNumberArrayScalar.serialize({ - hello: 'test', - me: 40, - you: ['32', '34', null], - others: [{ age: 78, name: 'unknown', lucky: true }], - isNull: null, - }) - ).toEqual([NaN]); - }); - - test('Test Array of Strings with some numbers, a null, and some text', () => { - expect( - toNumberArrayScalar.serialize(['5', 'you', '3', 'he', '20', 'we', null, '22', 'they']) - ).toEqual([5, NaN, 3, NaN, 20, NaN, 22, NaN]); - }); - - test('Test Simple Circular Reference', () => { - const circularReference = { myself: {} }; - circularReference.myself = circularReference; - expect(toNumberArrayScalar.serialize(circularReference)).toEqual([NaN]); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/resolvers.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/resolvers.ts deleted file mode 100644 index 9ec6de45ae48b..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/resolvers.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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 { GraphQLScalarType, Kind } from 'graphql'; -import { isBoolean, isNumber, isObject, isString } from 'lodash/fp'; - -/* - * serialize: gets invoked when serializing the result to send it back to a client. - * - * parseValue: gets invoked to parse client input that was passed through variables. - * - * parseLiteral: gets invoked to parse client input that was passed inline in the query. - */ - -export const toNumberArrayScalar = new GraphQLScalarType({ - name: 'NumberArray', - description: 'Represents value in detail item from the timeline who wants to more than one type', - serialize(value): number[] | null { - if (value == null) { - return null; - } else if (Array.isArray(value)) { - return convertArrayToNumber(value) as number[]; - } else if (isBoolean(value) || isString(value) || isObject(value)) { - return [convertToNumber(value)]; - } - return [value]; - }, - parseValue(value) { - return value; - }, - parseLiteral(ast) { - switch (ast.kind) { - case Kind.INT: - return ast.value; - case Kind.FLOAT: - return ast.value; - case Kind.STRING: - return parseFloat(ast.value); - case Kind.LIST: - return ast.values; - case Kind.OBJECT: - return ast.fields; - } - return null; - }, -}); - -export const createScalarToNumberArrayValueResolvers = () => ({ - ToNumberArray: toNumberArrayScalar, -}); - -const convertToNumber = (value: object | number | boolean | string): number => { - if (isNumber(value)) { - return value; - } else if (isString(value)) { - return parseFloat(value); - } else { - return NaN; - } -}; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const convertArrayToNumber = (values: any[]): number[] | number => { - if (Array.isArray(values)) { - return values - .filter((item) => item != null) - .map((item) => convertArrayToNumber(item)) as number[]; - } - return convertToNumber(values); -}; diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/schema.gql.ts b/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/schema.gql.ts deleted file mode 100644 index 514af67f109e6..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/scalar_to_number_array/schema.gql.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const toNumberSchema = gql` - scalar ToNumberArray -`; diff --git a/x-pack/plugins/security_solution/server/graphql/source_status/index.ts b/x-pack/plugins/security_solution/server/graphql/source_status/index.ts deleted file mode 100644 index fef667075145a..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/source_status/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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. - */ - -export { createSourceStatusResolvers } from './resolvers'; -export { sourceStatusSchema } from './schema.gql'; diff --git a/x-pack/plugins/security_solution/server/graphql/source_status/resolvers.test.ts b/x-pack/plugins/security_solution/server/graphql/source_status/resolvers.test.ts deleted file mode 100644 index 86c641dfb13b6..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/source_status/resolvers.test.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 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 { filterIndexes } from './resolvers'; - -describe('resolvers', () => { - test('it should filter single index that has an empty string', () => { - const emptyArray = filterIndexes(['']); - expect(emptyArray).toEqual([]); - }); - - test('it should filter single index that has blanks within it', () => { - const emptyArray = filterIndexes([' ']); - expect(emptyArray).toEqual([]); - }); - - test('it should filter indexes that has an empty string and a valid index', () => { - const emptyArray = filterIndexes(['', 'valid-index']); - expect(emptyArray).toEqual(['valid-index']); - }); - - test('it should filter indexes that have blanks within them and a valid index', () => { - const emptyArray = filterIndexes([' ', 'valid-index']); - expect(emptyArray).toEqual(['valid-index']); - }); - - test('it should filter single index that has _all within it', () => { - const emptyArray = filterIndexes(['_all']); - expect(emptyArray).toEqual([]); - }); - - test('it should filter single index that has _all within it surrounded by spaces', () => { - const emptyArray = filterIndexes([' _all ']); - expect(emptyArray).toEqual([]); - }); - - test('it should filter indexes that _all within them and a valid index', () => { - const emptyArray = filterIndexes(['_all', 'valid-index']); - expect(emptyArray).toEqual(['valid-index']); - }); - - test('it should filter indexes that _all surrounded with spaces within them and a valid index', () => { - const emptyArray = filterIndexes([' _all ', 'valid-index']); - expect(emptyArray).toEqual(['valid-index']); - }); -}); diff --git a/x-pack/plugins/security_solution/server/graphql/source_status/resolvers.ts b/x-pack/plugins/security_solution/server/graphql/source_status/resolvers.ts deleted file mode 100644 index 038f981a2f389..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/source_status/resolvers.ts +++ /dev/null @@ -1,99 +0,0 @@ -/* - * 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 { GraphQLScalarType, Kind } from 'graphql'; -import { SourceStatusResolvers } from '../../graphql/types'; -import { AppResolverOf, ChildResolverOf } from '../../lib/framework'; -import { IndexFields } from '../../lib/index_fields'; -import { SourceStatus } from '../../lib/source_status'; -import { QuerySourceResolver } from '../sources/resolvers'; -import { IFieldSubType } from '../../../../../../src/plugins/data/common/index_patterns/types'; - -export type SourceStatusIndicesExistResolver = ChildResolverOf< - AppResolverOf, - QuerySourceResolver ->; - -export type SourceStatusIndexFieldsResolver = ChildResolverOf< - AppResolverOf, - QuerySourceResolver ->; - -export const createSourceStatusResolvers = (libs: { - sourceStatus: SourceStatus; - fields: IndexFields; -}): { - SourceStatus: { - indicesExist: SourceStatusIndicesExistResolver; - indexFields: SourceStatusIndexFieldsResolver; - }; -} => ({ - SourceStatus: { - async indicesExist(_, args, { req }) { - const indexes = filterIndexes(args.defaultIndex); - if (indexes.length !== 0) { - return libs.sourceStatus.hasIndices(req, indexes); - } else { - return false; - } - }, - async indexFields(_, args, { req }) { - const indexes = filterIndexes(args.defaultIndex); - if (indexes.length !== 0) { - return libs.fields.getFields(req, indexes); - } else { - return []; - } - }, - }, -}); - -/** - * Given a set of indexes this will remove anything that is: - * - blank or empty strings are removed as not valid indexes - * - _all is removed as that is not a valid index - * @param indexes Indexes with invalid values removed - */ -export const filterIndexes = (indexes: string[]): string[] => - indexes.filter((index) => index.trim() !== '' && index.trim() !== '_all'); - -export const toIFieldSubTypeNonNullableScalar = new GraphQLScalarType({ - name: 'IFieldSubType', - description: 'Represents value in index pattern field item', - serialize(value): IFieldSubType | undefined { - if (value == null) { - return undefined; - } - - return { - multi: value.multi ?? undefined, - nested: value.nested ?? undefined, - }; - }, - parseValue(value) { - return value; - }, - parseLiteral(ast) { - switch (ast.kind) { - case Kind.INT: - return undefined; - case Kind.FLOAT: - return undefined; - case Kind.STRING: - return undefined; - case Kind.LIST: - return undefined; - case Kind.OBJECT: - return ast; - } - return undefined; - }, -}); - -export const createScalarToIFieldSubTypeNonNullableScalarResolvers = () => ({ - ToIFieldSubTypeNonNullable: toIFieldSubTypeNonNullableScalar, -}); diff --git a/x-pack/plugins/security_solution/server/graphql/source_status/schema.gql.ts b/x-pack/plugins/security_solution/server/graphql/source_status/schema.gql.ts deleted file mode 100644 index c1fd7b24e6dcb..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/source_status/schema.gql.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const sourceStatusSchema = gql` - scalar ToIFieldSubTypeNonNullable - - "A descriptor of a field in an index" - type IndexField { - "Where the field belong" - category: String! - "Example of field's value" - example: String - "whether the field's belong to an alias index" - indexes: [String]! - "The name of the field" - name: String! - "The type of the field's values as recognized by Kibana" - type: String! - "Whether the field's values can be efficiently searched for" - searchable: Boolean! - "Whether the field's values can be aggregated" - aggregatable: Boolean! - "Description of the field" - description: String - format: String - "the elastic type as mapped in the index" - esTypes: ToStringArrayNoNullable - subType: ToIFieldSubTypeNonNullable - } - - extend type SourceStatus { - "Whether the configured alias or wildcard pattern resolve to any auditbeat indices" - indicesExist(defaultIndex: [String!]!): Boolean! - "The list of fields defined in the index mappings" - indexFields(defaultIndex: [String!]!): [String!]! - } -`; diff --git a/x-pack/plugins/security_solution/server/graphql/sources/index.ts b/x-pack/plugins/security_solution/server/graphql/sources/index.ts deleted file mode 100644 index 583918fa014c7..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/sources/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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. - */ - -export { createSourcesResolvers } from './resolvers'; -export { sourcesSchema } from './schema.gql'; diff --git a/x-pack/plugins/security_solution/server/graphql/sources/resolvers.ts b/x-pack/plugins/security_solution/server/graphql/sources/resolvers.ts deleted file mode 100644 index 8ae30c17560f0..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/sources/resolvers.ts +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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 { QueryResolvers, SourceResolvers } from '../../graphql/types'; -import { - AppResolverOf, - AppResolverWithFields, - ChildResolverOf, - ResultOf, -} from '../../lib/framework'; -import { SourceStatus } from '../../lib/source_status'; -import { Sources } from '../../lib/sources'; - -export type QuerySourceResolver = AppResolverWithFields< - QueryResolvers.SourceResolver, - 'id' | 'configuration' ->; - -export type QueryAllSourcesResolver = AppResolverWithFields< - QueryResolvers.AllSourcesResolver, - 'id' | 'configuration' ->; - -export type SourceStatusResolver = ChildResolverOf< - AppResolverOf>>, - QuerySourceResolver ->; - -export interface SourcesResolversDeps { - sources: Sources; - sourceStatus: SourceStatus; -} - -export const createSourcesResolvers = ( - libs: SourcesResolversDeps -): { - Query: { - source: QuerySourceResolver; - allSources: QueryAllSourcesResolver; - }; - Source: { - status: SourceStatusResolver; - }; -} => ({ - Query: { - async source(root, args) { - const requestedSourceConfiguration = await libs.sources.getConfiguration(args.id); - - return { - id: args.id, - configuration: requestedSourceConfiguration, - }; - }, - async allSources() { - const sourceConfigurations = await libs.sources.getAllConfigurations(); - - return Object.entries(sourceConfigurations).map(([sourceName, sourceConfiguration]) => ({ - id: sourceName, - configuration: sourceConfiguration, - })); - }, - }, - Source: { - async status(source) { - return source; - }, - }, -}); diff --git a/x-pack/plugins/security_solution/server/graphql/sources/schema.gql.ts b/x-pack/plugins/security_solution/server/graphql/sources/schema.gql.ts deleted file mode 100644 index 6b5b12a1e92a4..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/sources/schema.gql.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -export const sourcesSchema = gql` - extend type Query { - "Get a security data source by id" - source("The id of the source" id: ID!): Source! - "Get a list of all security data sources" - allSources: [Source!]! - } - - type Source { - "The id of the source" - id: ID! - "The raw configuration of the source" - configuration: SourceConfiguration! - "The status of the source" - status: SourceStatus! - } - - "The status of an infrastructure data source" - type SourceStatus - - "A set of configuration options for a security data source" - type SourceConfiguration { - "The field mapping to use for this source" - fields: SourceFields! - } - - "A mapping of semantic fields to their document counterparts" - type SourceFields { - "The field to identify a container by" - container: String! - "The fields to identify a host by" - host: String! - "The fields that may contain the log event message. The first field found win." - message: [String!]! - "The field to identify a pod by" - pod: String! - "The field to use as a tiebreaker for log events that have identical timestamps" - tiebreaker: String! - "The field to use as a timestamp for metrics and logs" - timestamp: String! - } -`; diff --git a/x-pack/plugins/security_solution/server/graphql/timeline/index.ts b/x-pack/plugins/security_solution/server/graphql/timeline/index.ts deleted file mode 100644 index ef78a0e8b8bdd..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/timeline/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * 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. - */ - -export { createTimelineResolvers } from './resolvers'; -export { timelineSchema } from './schema.gql'; diff --git a/x-pack/plugins/security_solution/server/graphql/timeline/resolvers.ts b/x-pack/plugins/security_solution/server/graphql/timeline/resolvers.ts deleted file mode 100644 index 8aa08eda95923..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/timeline/resolvers.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* - * 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 { AppResolverWithFields, AppResolverOf } from '../../lib/framework'; -import { MutationResolvers, QueryResolvers } from '../types'; -import { Timeline } from '../../lib/timeline/saved_object/timelines'; -import { TimelineType } from '../../../common/types/timeline'; - -export type QueryTimelineResolver = AppResolverOf; - -export type QueryAllTimelineResolver = AppResolverWithFields< - QueryResolvers.GetAllTimelineResolver, - 'totalCount' | 'timeline' ->; - -export type MutationTimelineResolver = AppResolverOf< - MutationResolvers.PersistTimelineResolver ->; - -export type MutationDeleteTimelineResolver = AppResolverOf; - -export type MutationFavoriteResolver = AppResolverOf; - -interface TimelineResolversDeps { - timeline: Timeline; -} - -export const createTimelineResolvers = ( - libs: TimelineResolversDeps -): { - Query: { - getOneTimeline: QueryTimelineResolver; - getAllTimeline: QueryAllTimelineResolver; - }; - Mutation: { - deleteTimeline: MutationDeleteTimelineResolver; - persistTimeline: MutationTimelineResolver; - persistFavorite: MutationFavoriteResolver; - }; -} => ({ - Query: { - async getOneTimeline(root, args, { req }) { - return libs.timeline.getTimeline(req, args.id, args.timelineType); - }, - async getAllTimeline(root, args, { req }) { - return libs.timeline.getAllTimeline( - req, - args.onlyUserFavorite || null, - args.pageInfo, - args.search || null, - args.sort || null, - args.status || null, - args.timelineType || null - ); - }, - }, - Mutation: { - async deleteTimeline(root, args, { req }) { - await libs.timeline.deleteTimeline(req, args.id); - - return true; - }, - async persistFavorite(root, args, { req }) { - return libs.timeline.persistFavorite( - req, - args.timelineId || null, - args.templateTimelineId || null, - args.templateTimelineVersion || null, - args.timelineType || TimelineType.default - ); - }, - async persistTimeline(root, args, { req }) { - return libs.timeline.persistTimeline( - req, - args.id || null, - args.version || null, - args.timeline - ); - }, - }, -}); diff --git a/x-pack/plugins/security_solution/server/graphql/timeline/schema.gql.ts b/x-pack/plugins/security_solution/server/graphql/timeline/schema.gql.ts deleted file mode 100644 index 98e7103e61224..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/timeline/schema.gql.ts +++ /dev/null @@ -1,352 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; - -const columnHeader = ` - aggregatable: Boolean - category: String - columnHeaderType: String - description: String - example: String - indexes: [String!] - id: String - name: String - placeholder: String - searchable: Boolean - type: String -`; - -const eqlOptions = ` - eventCategoryField: String - tiebreakerField: String - timestampField: String - query: String - size: ToAny -`; - -const queryMatch = ` - field: String - displayField: String - value: String - displayValue: String - operator: String -`; - -const kueryFilterQuery = ` - kind: String - expression: String -`; - -const dateRange = ` - start: ToAny - end: ToAny -`; - -const favoriteTimeline = ` - fullName: String - userName: String - favoriteDate: Float -`; - -const sortTimeline = ` - columnId: String - sortDirection: String -`; - -const filtersMetaTimeline = ` - alias: String - controlledBy: String - disabled: Boolean - field: String - formattedValue: String - index: String - key: String - negate: Boolean - params: String - type: String - value: String -`; - -export const timelineSchema = gql` - ############### - #### INPUT #### - ############### - - input ColumnHeaderInput { - ${columnHeader} - } - - input QueryMatchInput { - ${queryMatch} - } - - input DataProviderInput { - id: String - name: String - enabled: Boolean - excluded: Boolean - kqlQuery: String - queryMatch: QueryMatchInput - and: [DataProviderInput!] - type: DataProviderType - } - - enum DataProviderType { - default - template - } - - input KueryFilterQueryInput { - ${kueryFilterQuery} - } - - input SerializedKueryQueryInput { - kuery: KueryFilterQueryInput - serializedQuery: String - } - - input SerializedFilterQueryInput { - filterQuery: SerializedKueryQueryInput - } - - input DateRangePickerInput { - ${dateRange} - } - - input FavoriteTimelineInput { - ${favoriteTimeline} - } - - input SortTimelineInput { - ${sortTimeline} - } - - input FilterMetaTimelineInput { - ${filtersMetaTimeline} - } - - input EqlOptionsInput { - ${eqlOptions} - } - - input FilterTimelineInput { - exists: String - meta: FilterMetaTimelineInput - match_all: String - missing: String - query: String - range: String - script: String - } - - enum TimelineType { - default - template - } - - enum TimelineStatus { - active - draft - immutable - } - - enum RowRendererId { - alerts - auditd - auditd_file - library - netflow - plain - registry - suricata - system - system_dns - system_endgame_process - system_file - system_fim - system_security_event - system_socket - threat_match - zeek - } - - input TimelineInput { - columns: [ColumnHeaderInput!] - dataProviders: [DataProviderInput!] - description: String - eqlOptions: EqlOptionsInput - eventType: String - excludedRowRendererIds: [RowRendererId!] - filters: [FilterTimelineInput!] - kqlMode: String - kqlQuery: SerializedFilterQueryInput - indexNames: [String!] - title: String - templateTimelineId: String - templateTimelineVersion: Int - timelineType: TimelineType - dateRange: DateRangePickerInput - savedQueryId: String - sort: [SortTimelineInput!] - status: TimelineStatus - } - - input PageInfoTimeline { - pageIndex: Float! - pageSize: Float! - } - - enum SortFieldTimeline { - title - description - updated - created - } - - input SortTimeline { - sortField: SortFieldTimeline! - sortOrder: Direction! - } - - ############### - #### QUERY #### - ############### - type ColumnHeaderResult { - ${columnHeader} - } - - type QueryMatchResult { - ${queryMatch} - } - - type DataProviderResult { - id: String - name: String - enabled: Boolean - excluded: Boolean - kqlQuery: String - queryMatch: QueryMatchResult - type: DataProviderType - and: [DataProviderResult!] - } - - type KueryFilterQueryResult { - ${kueryFilterQuery} - } - - type SerializedKueryQueryResult { - kuery: KueryFilterQueryResult - serializedQuery: String - } - - type SerializedFilterQueryResult { - filterQuery: SerializedKueryQueryResult - } - - type DateRangePickerResult { - ${dateRange} - } - - type FavoriteTimelineResult { - ${favoriteTimeline} - } - - type FilterMetaTimelineResult { - ${filtersMetaTimeline} - } - - type EqlOptionsResult { - ${eqlOptions} - } - - type FilterTimelineResult { - exists: String - meta: FilterMetaTimelineResult - match_all: String - missing: String - query: String - range: String - script: String - } - - type TimelineResult { - columns: [ColumnHeaderResult!] - created: Float - createdBy: String - dataProviders: [DataProviderResult!] - dateRange: DateRangePickerResult - description: String - eqlOptions: EqlOptionsResult - eventIdToNoteIds: [NoteResult!] - eventType: String - excludedRowRendererIds: [RowRendererId!] - favorite: [FavoriteTimelineResult!] - filters: [FilterTimelineResult!] - kqlMode: String - kqlQuery: SerializedFilterQueryResult - indexNames: [String!] - notes: [NoteResult!] - noteIds: [String!] - pinnedEventIds: [String!] - pinnedEventsSaveObject: [PinnedEvent!] - savedQueryId: String - savedObjectId: String! - sort: ToAny - status: TimelineStatus - title: String - templateTimelineId: String - templateTimelineVersion: Int - timelineType: TimelineType - updated: Float - updatedBy: String - version: String! - } - - type ResponseTimeline { - code: Float - message: String - timeline: TimelineResult! - } - - type ResponseFavoriteTimeline { - code: Float - message: String - savedObjectId: String! - templateTimelineId: String - templateTimelineVersion: Int - timelineType: TimelineType - version: String! - favorite: [FavoriteTimelineResult!] - } - - type ResponseTimelines { - timeline: [TimelineResult]! - totalCount: Float - defaultTimelineCount: Float - templateTimelineCount: Float - elasticTemplateTimelineCount: Float - customTemplateTimelineCount: Float - favoriteCount: Float - } - - ######################### - #### Mutation/Query #### - ######################### - - extend type Query { - getOneTimeline(id: ID!, timelineType: TimelineType): TimelineResult! - getAllTimeline(pageInfo: PageInfoTimeline!, search: String, sort: SortTimeline, onlyUserFavorite: Boolean, timelineType: TimelineType, status: TimelineStatus): ResponseTimelines! - } - - extend type Mutation { - "Persists a timeline" - persistTimeline(id: ID, version: String, timeline: TimelineInput!): ResponseTimeline! - persistFavorite(timelineId: ID, templateTimelineId: String, templateTimelineVersion: Int, timelineType: TimelineType): ResponseFavoriteTimeline! - deleteTimeline(id: [ID!]!): Boolean! - } -`; diff --git a/x-pack/plugins/security_solution/server/graphql/types.ts b/x-pack/plugins/security_solution/server/graphql/types.ts deleted file mode 100644 index a60a6dd6093d1..0000000000000 --- a/x-pack/plugins/security_solution/server/graphql/types.ts +++ /dev/null @@ -1,5706 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/* - * 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 { SiemContext } from '../lib/types'; - -export type Maybe = T | null; - -export interface PageInfoNote { - pageIndex: number; - - pageSize: number; -} - -export interface SortNote { - sortField: SortFieldNote; - - sortOrder: Direction; -} - -export interface PageInfoTimeline { - pageIndex: number; - - pageSize: number; -} - -export interface SortTimeline { - sortField: SortFieldTimeline; - - sortOrder: Direction; -} - -export interface NoteInput { - eventId?: Maybe; - - note?: Maybe; - - timelineId?: Maybe; -} - -export interface TimelineInput { - columns?: Maybe; - - dataProviders?: Maybe; - - description?: Maybe; - - eqlOptions?: Maybe; - - eventType?: Maybe; - - excludedRowRendererIds?: Maybe; - - filters?: Maybe; - - kqlMode?: Maybe; - - kqlQuery?: Maybe; - - indexNames?: Maybe; - - title?: Maybe; - - templateTimelineId?: Maybe; - - templateTimelineVersion?: Maybe; - - timelineType?: Maybe; - - dateRange?: Maybe; - - savedQueryId?: Maybe; - - sort?: Maybe; - - status?: Maybe; -} - -export interface ColumnHeaderInput { - aggregatable?: Maybe; - - category?: Maybe; - - columnHeaderType?: Maybe; - - description?: Maybe; - - example?: Maybe; - - indexes?: Maybe; - - id?: Maybe; - - name?: Maybe; - - placeholder?: Maybe; - - searchable?: Maybe; - - type?: Maybe; -} - -export interface DataProviderInput { - id?: Maybe; - - name?: Maybe; - - enabled?: Maybe; - - excluded?: Maybe; - - kqlQuery?: Maybe; - - queryMatch?: Maybe; - - and?: Maybe; - - type?: Maybe; -} - -export interface QueryMatchInput { - field?: Maybe; - - displayField?: Maybe; - - value?: Maybe; - - displayValue?: Maybe; - - operator?: Maybe; -} - -export interface EqlOptionsInput { - eventCategoryField?: Maybe; - - tiebreakerField?: Maybe; - - timestampField?: Maybe; - - query?: Maybe; - - size?: Maybe; -} - -export interface FilterTimelineInput { - exists?: Maybe; - - meta?: Maybe; - - match_all?: Maybe; - - missing?: Maybe; - - query?: Maybe; - - range?: Maybe; - - script?: Maybe; -} - -export interface FilterMetaTimelineInput { - alias?: Maybe; - - controlledBy?: Maybe; - - disabled?: Maybe; - - field?: Maybe; - - formattedValue?: Maybe; - - index?: Maybe; - - key?: Maybe; - - negate?: Maybe; - - params?: Maybe; - - type?: Maybe; - - value?: Maybe; -} - -export interface SerializedFilterQueryInput { - filterQuery?: Maybe; -} - -export interface SerializedKueryQueryInput { - kuery?: Maybe; - - serializedQuery?: Maybe; -} - -export interface KueryFilterQueryInput { - kind?: Maybe; - - expression?: Maybe; -} - -export interface DateRangePickerInput { - start?: Maybe; - - end?: Maybe; -} - -export interface SortTimelineInput { - columnId?: Maybe; - - sortDirection?: Maybe; -} - -export interface TimerangeInput { - /** The interval string to use for last bucket. The format is '{value}{unit}'. For example '5m' would return the metrics for the last 5 minutes of the timespan. */ - interval: string; - /** The end of the timerange */ - to: string; - /** The beginning of the timerange */ - from: string; -} - -export interface DocValueFieldsInput { - field: string; - - format: string; -} - -export interface PaginationInput { - /** The limit parameter allows you to configure the maximum amount of items to be returned */ - limit: number; - /** The cursor parameter defines the next result you want to fetch */ - cursor?: Maybe; - /** The tiebreaker parameter allow to be more precise to fetch the next item */ - tiebreaker?: Maybe; -} - -export interface PaginationInputPaginated { - /** The activePage parameter defines the page of results you want to fetch */ - activePage: number; - /** The cursorStart parameter defines the start of the results to be displayed */ - cursorStart: number; - /** The fakePossibleCount parameter determines the total count in order to show 5 additional pages */ - fakePossibleCount: number; - /** The querySize parameter is the number of items to be returned */ - querySize: number; -} - -export interface SortField { - sortFieldId: string; - - direction: Direction; -} - -export interface FavoriteTimelineInput { - fullName?: Maybe; - - userName?: Maybe; - - favoriteDate?: Maybe; -} - -export enum SortFieldNote { - updatedBy = 'updatedBy', - updated = 'updated', -} - -export enum Direction { - asc = 'asc', - desc = 'desc', -} - -export enum TimelineType { - default = 'default', - template = 'template', -} - -export enum DataProviderType { - default = 'default', - template = 'template', -} - -export enum RowRendererId { - alerts = 'alerts', - auditd = 'auditd', - auditd_file = 'auditd_file', - library = 'library', - netflow = 'netflow', - plain = 'plain', - registry = 'registry', - suricata = 'suricata', - system = 'system', - system_dns = 'system_dns', - system_endgame_process = 'system_endgame_process', - system_file = 'system_file', - system_fim = 'system_fim', - system_security_event = 'system_security_event', - system_socket = 'system_socket', - threat_match = 'threat_match', - zeek = 'zeek', -} - -export enum TimelineStatus { - active = 'active', - draft = 'draft', - immutable = 'immutable', -} - -export enum SortFieldTimeline { - title = 'title', - description = 'description', - updated = 'updated', - created = 'created', -} - -export enum FlowTarget { - client = 'client', - destination = 'destination', - server = 'server', - source = 'source', -} - -export enum FlowTargetSourceDest { - destination = 'destination', - source = 'source', -} - -export enum FlowDirection { - uniDirectional = 'uniDirectional', - biDirectional = 'biDirectional', -} - -export type ToAny = any; - -export type ToStringArray = string[] | string; - -export type ToStringArrayNoNullable = any; - -export type ToDateArray = string[] | string; - -export type ToNumberArray = number[] | number; - -export type ToBooleanArray = boolean[] | boolean; - -export type Date = string; - -export type ToIFieldSubTypeNonNullable = any; - -// ==================================================== -// Scalars -// ==================================================== - -// ==================================================== -// Types -// ==================================================== - -export interface Query { - getNote: NoteResult; - - getNotesByTimelineId: NoteResult[]; - - getNotesByEventId: NoteResult[]; - - getAllNotes: ResponseNotes; - - getAllPinnedEventsByTimelineId: PinnedEvent[]; - /** Get a security data source by id */ - source: Source; - /** Get a list of all security data sources */ - allSources: Source[]; - - getOneTimeline: TimelineResult; - - getAllTimeline: ResponseTimelines; -} - -export interface NoteResult { - eventId?: Maybe; - - note?: Maybe; - - timelineId?: Maybe; - - noteId: string; - - created?: Maybe; - - createdBy?: Maybe; - - timelineVersion?: Maybe; - - updated?: Maybe; - - updatedBy?: Maybe; - - version?: Maybe; -} - -export interface ResponseNotes { - notes: NoteResult[]; - - totalCount?: Maybe; -} - -export interface PinnedEvent { - code?: Maybe; - - message?: Maybe; - - pinnedEventId: string; - - eventId?: Maybe; - - timelineId?: Maybe; - - timelineVersion?: Maybe; - - created?: Maybe; - - createdBy?: Maybe; - - updated?: Maybe; - - updatedBy?: Maybe; - - version?: Maybe; -} - -export interface Source { - /** The id of the source */ - id: string; - /** The raw configuration of the source */ - configuration: SourceConfiguration; - /** The status of the source */ - status: SourceStatus; -} - -/** A set of configuration options for a security data source */ -export interface SourceConfiguration { - /** The field mapping to use for this source */ - fields: SourceFields; -} - -/** A mapping of semantic fields to their document counterparts */ -export interface SourceFields { - /** The field to identify a container by */ - container: string; - /** The fields to identify a host by */ - host: string; - /** The fields that may contain the log event message. The first field found win. */ - message: string[]; - /** The field to identify a pod by */ - pod: string; - /** The field to use as a tiebreaker for log events that have identical timestamps */ - tiebreaker: string; - /** The field to use as a timestamp for metrics and logs */ - timestamp: string; -} - -/** The status of an infrastructure data source */ -export interface SourceStatus { - /** Whether the configured alias or wildcard pattern resolve to any auditbeat indices */ - indicesExist: boolean; - /** The list of fields defined in the index mappings */ - indexFields: string[]; -} - -export interface TimelineResult { - columns?: Maybe; - - created?: Maybe; - - createdBy?: Maybe; - - dataProviders?: Maybe; - - dateRange?: Maybe; - - description?: Maybe; - - eqlOptions?: Maybe; - - eventIdToNoteIds?: Maybe; - - eventType?: Maybe; - - excludedRowRendererIds?: Maybe; - - favorite?: Maybe; - - filters?: Maybe; - - kqlMode?: Maybe; - - kqlQuery?: Maybe; - - indexNames?: Maybe; - - notes?: Maybe; - - noteIds?: Maybe; - - pinnedEventIds?: Maybe; - - pinnedEventsSaveObject?: Maybe; - - savedQueryId?: Maybe; - - savedObjectId: string; - - sort?: Maybe; - - status?: Maybe; - - title?: Maybe; - - templateTimelineId?: Maybe; - - templateTimelineVersion?: Maybe; - - timelineType?: Maybe; - - updated?: Maybe; - - updatedBy?: Maybe; - - version: string; -} - -export interface ColumnHeaderResult { - aggregatable?: Maybe; - - category?: Maybe; - - columnHeaderType?: Maybe; - - description?: Maybe; - - example?: Maybe; - - indexes?: Maybe; - - id?: Maybe; - - name?: Maybe; - - placeholder?: Maybe; - - searchable?: Maybe; - - type?: Maybe; -} - -export interface DataProviderResult { - id?: Maybe; - - name?: Maybe; - - enabled?: Maybe; - - excluded?: Maybe; - - kqlQuery?: Maybe; - - queryMatch?: Maybe; - - type?: Maybe; - - and?: Maybe; -} - -export interface QueryMatchResult { - field?: Maybe; - - displayField?: Maybe; - - value?: Maybe; - - displayValue?: Maybe; - - operator?: Maybe; -} - -export interface DateRangePickerResult { - start?: Maybe; - - end?: Maybe; -} - -export interface EqlOptionsResult { - eventCategoryField?: Maybe; - - tiebreakerField?: Maybe; - - timestampField?: Maybe; - - query?: Maybe; - - size?: Maybe; -} - -export interface FavoriteTimelineResult { - fullName?: Maybe; - - userName?: Maybe; - - favoriteDate?: Maybe; -} - -export interface FilterTimelineResult { - exists?: Maybe; - - meta?: Maybe; - - match_all?: Maybe; - - missing?: Maybe; - - query?: Maybe; - - range?: Maybe; - - script?: Maybe; -} - -export interface FilterMetaTimelineResult { - alias?: Maybe; - - controlledBy?: Maybe; - - disabled?: Maybe; - - field?: Maybe; - - formattedValue?: Maybe; - - index?: Maybe; - - key?: Maybe; - - negate?: Maybe; - - params?: Maybe; - - type?: Maybe; - - value?: Maybe; -} - -export interface SerializedFilterQueryResult { - filterQuery?: Maybe; -} - -export interface SerializedKueryQueryResult { - kuery?: Maybe; - - serializedQuery?: Maybe; -} - -export interface KueryFilterQueryResult { - kind?: Maybe; - - expression?: Maybe; -} - -export interface ResponseTimelines { - timeline: (Maybe)[]; - - totalCount?: Maybe; - - defaultTimelineCount?: Maybe; - - templateTimelineCount?: Maybe; - - elasticTemplateTimelineCount?: Maybe; - - customTemplateTimelineCount?: Maybe; - - favoriteCount?: Maybe; -} - -export interface Mutation { - /** Persists a note */ - persistNote: ResponseNote; - - deleteNote?: Maybe; - - deleteNoteByTimelineId?: Maybe; - /** Persists a pinned event in a timeline */ - persistPinnedEventOnTimeline?: Maybe; - /** Remove a pinned events in a timeline */ - deletePinnedEventOnTimeline: boolean; - /** Remove all pinned events in a timeline */ - deleteAllPinnedEventsOnTimeline: boolean; - /** Persists a timeline */ - persistTimeline: ResponseTimeline; - - persistFavorite: ResponseFavoriteTimeline; - - deleteTimeline: boolean; -} - -export interface ResponseNote { - code?: Maybe; - - message?: Maybe; - - note: NoteResult; -} - -export interface ResponseTimeline { - code?: Maybe; - - message?: Maybe; - - timeline: TimelineResult; -} - -export interface ResponseFavoriteTimeline { - code?: Maybe; - - message?: Maybe; - - savedObjectId: string; - - templateTimelineId?: Maybe; - - templateTimelineVersion?: Maybe; - - timelineType?: Maybe; - - version: string; - - favorite?: Maybe; -} - -export interface EventEcsFields { - action?: Maybe; - - category?: Maybe; - - code?: Maybe; - - created?: Maybe; - - dataset?: Maybe; - - duration?: Maybe; - - end?: Maybe; - - hash?: Maybe; - - id?: Maybe; - - kind?: Maybe; - - module?: Maybe; - - original?: Maybe; - - outcome?: Maybe; - - risk_score?: Maybe; - - risk_score_norm?: Maybe; - - severity?: Maybe; - - start?: Maybe; - - timezone?: Maybe; - - type?: Maybe; -} - -export interface Location { - lon?: Maybe; - - lat?: Maybe; -} - -export interface GeoEcsFields { - city_name?: Maybe; - - continent_name?: Maybe; - - country_iso_code?: Maybe; - - country_name?: Maybe; - - location?: Maybe; - - region_iso_code?: Maybe; - - region_name?: Maybe; -} - -export interface PrimarySecondary { - primary?: Maybe; - - secondary?: Maybe; - - type?: Maybe; -} - -export interface Summary { - actor?: Maybe; - - object?: Maybe; - - how?: Maybe; - - message_type?: Maybe; - - sequence?: Maybe; -} - -export interface AgentEcsField { - type?: Maybe; -} - -export interface AuditdData { - acct?: Maybe; - - terminal?: Maybe; - - op?: Maybe; -} - -export interface AuditdEcsFields { - result?: Maybe; - - session?: Maybe; - - data?: Maybe; - - summary?: Maybe; - - sequence?: Maybe; -} - -export interface OsEcsFields { - platform?: Maybe; - - name?: Maybe; - - full?: Maybe; - - family?: Maybe; - - version?: Maybe; - - kernel?: Maybe; -} - -export interface HostEcsFields { - architecture?: Maybe; - - id?: Maybe; - - ip?: Maybe; - - mac?: Maybe; - - name?: Maybe; - - os?: Maybe; - - type?: Maybe; -} - -export interface Thread { - id?: Maybe; - - start?: Maybe; -} - -export interface ProcessHashData { - md5?: Maybe; - - sha1?: Maybe; - - sha256?: Maybe; -} - -export interface ProcessEcsFields { - hash?: Maybe; - - pid?: Maybe; - - name?: Maybe; - - ppid?: Maybe; - - args?: Maybe; - - entity_id?: Maybe; - - executable?: Maybe; - - title?: Maybe; - - thread?: Maybe; - - working_directory?: Maybe; -} - -export interface SourceEcsFields { - bytes?: Maybe; - - ip?: Maybe; - - port?: Maybe; - - domain?: Maybe; - - geo?: Maybe; - - packets?: Maybe; -} - -export interface DestinationEcsFields { - bytes?: Maybe; - - ip?: Maybe; - - port?: Maybe; - - domain?: Maybe; - - geo?: Maybe; - - packets?: Maybe; -} - -export interface DnsQuestionData { - name?: Maybe; - - type?: Maybe; -} - -export interface DnsEcsFields { - question?: Maybe; - - resolved_ip?: Maybe; - - response_code?: Maybe; -} - -export interface EndgameEcsFields { - exit_code?: Maybe; - - file_name?: Maybe; - - file_path?: Maybe; - - logon_type?: Maybe; - - parent_process_name?: Maybe; - - pid?: Maybe; - - process_name?: Maybe; - - subject_domain_name?: Maybe; - - subject_logon_id?: Maybe; - - subject_user_name?: Maybe; - - target_domain_name?: Maybe; - - target_logon_id?: Maybe; - - target_user_name?: Maybe; -} - -export interface SuricataAlertData { - signature?: Maybe; - - signature_id?: Maybe; -} - -export interface SuricataEveData { - alert?: Maybe; - - flow_id?: Maybe; - - proto?: Maybe; -} - -export interface SuricataEcsFields { - eve?: Maybe; -} - -export interface TlsJa3Data { - hash?: Maybe; -} - -export interface FingerprintData { - sha1?: Maybe; -} - -export interface TlsClientCertificateData { - fingerprint?: Maybe; -} - -export interface TlsServerCertificateData { - fingerprint?: Maybe; -} - -export interface TlsFingerprintsData { - ja3?: Maybe; -} - -export interface TlsEcsFields { - client_certificate?: Maybe; - - fingerprints?: Maybe; - - server_certificate?: Maybe; -} - -export interface ZeekConnectionData { - local_resp?: Maybe; - - local_orig?: Maybe; - - missed_bytes?: Maybe; - - state?: Maybe; - - history?: Maybe; -} - -export interface ZeekNoticeData { - suppress_for?: Maybe; - - msg?: Maybe; - - note?: Maybe; - - sub?: Maybe; - - dst?: Maybe; - - dropped?: Maybe; - - peer_descr?: Maybe; -} - -export interface ZeekDnsData { - AA?: Maybe; - - qclass_name?: Maybe; - - RD?: Maybe; - - qtype_name?: Maybe; - - rejected?: Maybe; - - qtype?: Maybe; - - query?: Maybe; - - trans_id?: Maybe; - - qclass?: Maybe; - - RA?: Maybe; - - TC?: Maybe; -} - -export interface FileFields { - name?: Maybe; - - path?: Maybe; - - target_path?: Maybe; - - extension?: Maybe; - - type?: Maybe; - - device?: Maybe; - - inode?: Maybe; - - uid?: Maybe; - - owner?: Maybe; - - gid?: Maybe; - - group?: Maybe; - - mode?: Maybe; - - size?: Maybe; - - mtime?: Maybe; - - ctime?: Maybe; -} - -export interface ZeekHttpData { - resp_mime_types?: Maybe; - - trans_depth?: Maybe; - - status_msg?: Maybe; - - resp_fuids?: Maybe; - - tags?: Maybe; -} - -export interface HttpBodyData { - content?: Maybe; - - bytes?: Maybe; -} - -export interface HttpRequestData { - method?: Maybe; - - body?: Maybe; - - referrer?: Maybe; - - bytes?: Maybe; -} - -export interface HttpResponseData { - status_code?: Maybe; - - body?: Maybe; - - bytes?: Maybe; -} - -export interface HttpEcsFields { - version?: Maybe; - - request?: Maybe; - - response?: Maybe; -} - -export interface UrlEcsFields { - domain?: Maybe; - - original?: Maybe; - - username?: Maybe; - - password?: Maybe; -} - -export interface ZeekFileData { - session_ids?: Maybe; - - timedout?: Maybe; - - local_orig?: Maybe; - - tx_host?: Maybe; - - source?: Maybe; - - is_orig?: Maybe; - - overflow_bytes?: Maybe; - - sha1?: Maybe; - - duration?: Maybe; - - depth?: Maybe; - - analyzers?: Maybe; - - mime_type?: Maybe; - - rx_host?: Maybe; - - total_bytes?: Maybe; - - fuid?: Maybe; - - seen_bytes?: Maybe; - - missing_bytes?: Maybe; - - md5?: Maybe; -} - -export interface ZeekSslData { - cipher?: Maybe; - - established?: Maybe; - - resumed?: Maybe; - - version?: Maybe; -} - -export interface ZeekEcsFields { - session_id?: Maybe; - - connection?: Maybe; - - notice?: Maybe; - - dns?: Maybe; - - http?: Maybe; - - files?: Maybe; - - ssl?: Maybe; -} - -export interface UserEcsFields { - domain?: Maybe; - - id?: Maybe; - - name?: Maybe; - - full_name?: Maybe; - - email?: Maybe; - - hash?: Maybe; - - group?: Maybe; -} - -export interface WinlogEcsFields { - event_id?: Maybe; -} - -export interface NetworkEcsField { - bytes?: Maybe; - - community_id?: Maybe; - - direction?: Maybe; - - packets?: Maybe; - - protocol?: Maybe; - - transport?: Maybe; -} - -export interface PackageEcsFields { - arch?: Maybe; - - entity_id?: Maybe; - - name?: Maybe; - - size?: Maybe; - - summary?: Maybe; - - version?: Maybe; -} - -export interface AuditEcsFields { - package?: Maybe; -} - -export interface SshEcsFields { - method?: Maybe; - - signature?: Maybe; -} - -export interface AuthEcsFields { - ssh?: Maybe; -} - -export interface SystemEcsField { - audit?: Maybe; - - auth?: Maybe; -} - -export interface RuleField { - id?: Maybe; - - rule_id?: Maybe; - - false_positives: string[]; - - saved_id?: Maybe; - - timeline_id?: Maybe; - - timeline_title?: Maybe; - - max_signals?: Maybe; - - risk_score?: Maybe; - - output_index?: Maybe; - - description?: Maybe; - - from?: Maybe; - - immutable?: Maybe; - - index?: Maybe; - - interval?: Maybe; - - language?: Maybe; - - query?: Maybe; - - references?: Maybe; - - severity?: Maybe; - - tags?: Maybe; - - threat?: Maybe; - - type?: Maybe; - - size?: Maybe; - - to?: Maybe; - - enabled?: Maybe; - - filters?: Maybe; - - created_at?: Maybe; - - updated_at?: Maybe; - - created_by?: Maybe; - - updated_by?: Maybe; - - version?: Maybe; - - note?: Maybe; - - threshold?: Maybe; - - exceptions_list?: Maybe; -} - -export interface SignalField { - rule?: Maybe; - - original_time?: Maybe; - - status?: Maybe; -} - -export interface RuleEcsField { - reference?: Maybe; -} - -export interface Ecs { - _id: string; - - _index?: Maybe; - - agent?: Maybe; - - auditd?: Maybe; - - destination?: Maybe; - - dns?: Maybe; - - endgame?: Maybe; - - event?: Maybe; - - geo?: Maybe; - - host?: Maybe; - - network?: Maybe; - - rule?: Maybe; - - signal?: Maybe; - - source?: Maybe; - - suricata?: Maybe; - - tls?: Maybe; - - zeek?: Maybe; - - http?: Maybe; - - url?: Maybe; - - timestamp?: Maybe; - - message?: Maybe; - - user?: Maybe; - - winlog?: Maybe; - - process?: Maybe; - - file?: Maybe; - - system?: Maybe; -} - -export interface EcsEdges { - node: Ecs; - - cursor: CursorType; -} - -export interface CursorType { - value?: Maybe; - - tiebreaker?: Maybe; -} - -/** A descriptor of a field in an index */ -export interface IndexField { - /** Where the field belong */ - category: string; - /** Example of field's value */ - example?: Maybe; - /** whether the field's belong to an alias index */ - indexes: (Maybe)[]; - /** The name of the field */ - name: string; - /** The type of the field's values as recognized by Kibana */ - type: string; - /** Whether the field's values can be efficiently searched for */ - searchable: boolean; - /** Whether the field's values can be aggregated */ - aggregatable: boolean; - /** Description of the field */ - description?: Maybe; - - format?: Maybe; - /** the elastic type as mapped in the index */ - esTypes?: Maybe; - - subType?: Maybe; -} - -export interface PageInfo { - endCursor?: Maybe; - - hasNextPage?: Maybe; -} - -export interface Inspect { - dsl: string[]; - - response: string[]; -} - -export interface PageInfoPaginated { - activePage: number; - - fakeTotalCount: number; - - showMorePagesIndicator: boolean; -} - -// ==================================================== -// Arguments -// ==================================================== - -export interface GetNoteQueryArgs { - id: string; -} -export interface GetNotesByTimelineIdQueryArgs { - timelineId: string; -} -export interface GetNotesByEventIdQueryArgs { - eventId: string; -} -export interface GetAllNotesQueryArgs { - pageInfo?: Maybe; - - search?: Maybe; - - sort?: Maybe; -} -export interface GetAllPinnedEventsByTimelineIdQueryArgs { - timelineId: string; -} -export interface SourceQueryArgs { - /** The id of the source */ - id: string; -} -export interface GetOneTimelineQueryArgs { - id: string; - - timelineType?: Maybe; -} -export interface GetAllTimelineQueryArgs { - pageInfo: PageInfoTimeline; - - search?: Maybe; - - sort?: Maybe; - - onlyUserFavorite?: Maybe; - - timelineType?: Maybe; - - status?: Maybe; -} -export interface IndicesExistSourceStatusArgs { - defaultIndex: string[]; -} -export interface IndexFieldsSourceStatusArgs { - defaultIndex: string[]; -} -export interface PersistNoteMutationArgs { - noteId?: Maybe; - - version?: Maybe; - - note: NoteInput; -} -export interface DeleteNoteMutationArgs { - id: string[]; -} -export interface DeleteNoteByTimelineIdMutationArgs { - timelineId: string; - - version?: Maybe; -} -export interface PersistPinnedEventOnTimelineMutationArgs { - pinnedEventId?: Maybe; - - eventId: string; - - timelineId?: Maybe; -} -export interface DeletePinnedEventOnTimelineMutationArgs { - id: string[]; -} -export interface DeleteAllPinnedEventsOnTimelineMutationArgs { - timelineId: string; -} -export interface PersistTimelineMutationArgs { - id?: Maybe; - - version?: Maybe; - - timeline: TimelineInput; -} -export interface PersistFavoriteMutationArgs { - timelineId?: Maybe; - - templateTimelineId?: Maybe; - - templateTimelineVersion?: Maybe; - - timelineType?: Maybe; -} -export interface DeleteTimelineMutationArgs { - id: string[]; -} - -import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql'; - -export type Resolver = ( - parent: Parent, - args: Args, - context: TContext, - info: GraphQLResolveInfo -) => Promise | Result; - -export interface ISubscriptionResolverObject { - subscribe( - parent: P, - args: Args, - context: TContext, - info: GraphQLResolveInfo - ): AsyncIterator | Promise>; - resolve?( - parent: P, - args: Args, - context: TContext, - info: GraphQLResolveInfo - ): R | Result | Promise; -} - -export type SubscriptionResolver = - | ((...args: any[]) => ISubscriptionResolverObject) - | ISubscriptionResolverObject; - -export type TypeResolveFn = ( - parent: Parent, - context: TContext, - info: GraphQLResolveInfo -) => Maybe; - -export type NextResolverFn = () => Promise; - -export type DirectiveResolverFn = ( - next: NextResolverFn, - source: any, - args: TArgs, - context: TContext, - info: GraphQLResolveInfo -) => TResult | Promise; - -export namespace QueryResolvers { - export interface Resolvers { - getNote?: GetNoteResolver; - - getNotesByTimelineId?: GetNotesByTimelineIdResolver; - - getNotesByEventId?: GetNotesByEventIdResolver; - - getAllNotes?: GetAllNotesResolver; - - getAllPinnedEventsByTimelineId?: GetAllPinnedEventsByTimelineIdResolver< - PinnedEvent[], - TypeParent, - TContext - >; - /** Get a security data source by id */ - source?: SourceResolver; - /** Get a list of all security data sources */ - allSources?: AllSourcesResolver; - - getOneTimeline?: GetOneTimelineResolver; - - getAllTimeline?: GetAllTimelineResolver; - } - - export type GetNoteResolver = Resolver< - R, - Parent, - TContext, - GetNoteArgs - >; - export interface GetNoteArgs { - id: string; - } - - export type GetNotesByTimelineIdResolver< - R = NoteResult[], - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface GetNotesByTimelineIdArgs { - timelineId: string; - } - - export type GetNotesByEventIdResolver< - R = NoteResult[], - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface GetNotesByEventIdArgs { - eventId: string; - } - - export type GetAllNotesResolver< - R = ResponseNotes, - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface GetAllNotesArgs { - pageInfo?: Maybe; - - search?: Maybe; - - sort?: Maybe; - } - - export type GetAllPinnedEventsByTimelineIdResolver< - R = PinnedEvent[], - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface GetAllPinnedEventsByTimelineIdArgs { - timelineId: string; - } - - export type SourceResolver = Resolver< - R, - Parent, - TContext, - SourceArgs - >; - export interface SourceArgs { - /** The id of the source */ - id: string; - } - - export type AllSourcesResolver = Resolver< - R, - Parent, - TContext - >; - export type GetOneTimelineResolver< - R = TimelineResult, - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface GetOneTimelineArgs { - id: string; - - timelineType?: Maybe; - } - - export type GetAllTimelineResolver< - R = ResponseTimelines, - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface GetAllTimelineArgs { - pageInfo: PageInfoTimeline; - - search?: Maybe; - - sort?: Maybe; - - onlyUserFavorite?: Maybe; - - timelineType?: Maybe; - - status?: Maybe; - } -} - -export namespace NoteResultResolvers { - export interface Resolvers { - eventId?: EventIdResolver, TypeParent, TContext>; - - note?: NoteResolver, TypeParent, TContext>; - - timelineId?: TimelineIdResolver, TypeParent, TContext>; - - noteId?: NoteIdResolver; - - created?: CreatedResolver, TypeParent, TContext>; - - createdBy?: CreatedByResolver, TypeParent, TContext>; - - timelineVersion?: TimelineVersionResolver, TypeParent, TContext>; - - updated?: UpdatedResolver, TypeParent, TContext>; - - updatedBy?: UpdatedByResolver, TypeParent, TContext>; - - version?: VersionResolver, TypeParent, TContext>; - } - - export type EventIdResolver< - R = Maybe, - Parent = NoteResult, - TContext = SiemContext - > = Resolver; - export type NoteResolver< - R = Maybe, - Parent = NoteResult, - TContext = SiemContext - > = Resolver; - export type TimelineIdResolver< - R = Maybe, - Parent = NoteResult, - TContext = SiemContext - > = Resolver; - export type NoteIdResolver = Resolver< - R, - Parent, - TContext - >; - export type CreatedResolver< - R = Maybe, - Parent = NoteResult, - TContext = SiemContext - > = Resolver; - export type CreatedByResolver< - R = Maybe, - Parent = NoteResult, - TContext = SiemContext - > = Resolver; - export type TimelineVersionResolver< - R = Maybe, - Parent = NoteResult, - TContext = SiemContext - > = Resolver; - export type UpdatedResolver< - R = Maybe, - Parent = NoteResult, - TContext = SiemContext - > = Resolver; - export type UpdatedByResolver< - R = Maybe, - Parent = NoteResult, - TContext = SiemContext - > = Resolver; - export type VersionResolver< - R = Maybe, - Parent = NoteResult, - TContext = SiemContext - > = Resolver; -} - -export namespace ResponseNotesResolvers { - export interface Resolvers { - notes?: NotesResolver; - - totalCount?: TotalCountResolver, TypeParent, TContext>; - } - - export type NotesResolver< - R = NoteResult[], - Parent = ResponseNotes, - TContext = SiemContext - > = Resolver; - export type TotalCountResolver< - R = Maybe, - Parent = ResponseNotes, - TContext = SiemContext - > = Resolver; -} - -export namespace PinnedEventResolvers { - export interface Resolvers { - code?: CodeResolver, TypeParent, TContext>; - - message?: MessageResolver, TypeParent, TContext>; - - pinnedEventId?: PinnedEventIdResolver; - - eventId?: EventIdResolver, TypeParent, TContext>; - - timelineId?: TimelineIdResolver, TypeParent, TContext>; - - timelineVersion?: TimelineVersionResolver, TypeParent, TContext>; - - created?: CreatedResolver, TypeParent, TContext>; - - createdBy?: CreatedByResolver, TypeParent, TContext>; - - updated?: UpdatedResolver, TypeParent, TContext>; - - updatedBy?: UpdatedByResolver, TypeParent, TContext>; - - version?: VersionResolver, TypeParent, TContext>; - } - - export type CodeResolver< - R = Maybe, - Parent = PinnedEvent, - TContext = SiemContext - > = Resolver; - export type MessageResolver< - R = Maybe, - Parent = PinnedEvent, - TContext = SiemContext - > = Resolver; - export type PinnedEventIdResolver< - R = string, - Parent = PinnedEvent, - TContext = SiemContext - > = Resolver; - export type EventIdResolver< - R = Maybe, - Parent = PinnedEvent, - TContext = SiemContext - > = Resolver; - export type TimelineIdResolver< - R = Maybe, - Parent = PinnedEvent, - TContext = SiemContext - > = Resolver; - export type TimelineVersionResolver< - R = Maybe, - Parent = PinnedEvent, - TContext = SiemContext - > = Resolver; - export type CreatedResolver< - R = Maybe, - Parent = PinnedEvent, - TContext = SiemContext - > = Resolver; - export type CreatedByResolver< - R = Maybe, - Parent = PinnedEvent, - TContext = SiemContext - > = Resolver; - export type UpdatedResolver< - R = Maybe, - Parent = PinnedEvent, - TContext = SiemContext - > = Resolver; - export type UpdatedByResolver< - R = Maybe, - Parent = PinnedEvent, - TContext = SiemContext - > = Resolver; - export type VersionResolver< - R = Maybe, - Parent = PinnedEvent, - TContext = SiemContext - > = Resolver; -} - -export namespace SourceResolvers { - export interface Resolvers { - /** The id of the source */ - id?: IdResolver; - /** The raw configuration of the source */ - configuration?: ConfigurationResolver; - /** The status of the source */ - status?: StatusResolver; - } - - export type IdResolver = Resolver< - R, - Parent, - TContext - >; - export type ConfigurationResolver< - R = SourceConfiguration, - Parent = Source, - TContext = SiemContext - > = Resolver; - export type StatusResolver = Resolver< - R, - Parent, - TContext - >; -} -/** A set of configuration options for a security data source */ -export namespace SourceConfigurationResolvers { - export interface Resolvers { - /** The field mapping to use for this source */ - fields?: FieldsResolver; - } - - export type FieldsResolver< - R = SourceFields, - Parent = SourceConfiguration, - TContext = SiemContext - > = Resolver; -} -/** A mapping of semantic fields to their document counterparts */ -export namespace SourceFieldsResolvers { - export interface Resolvers { - /** The field to identify a container by */ - container?: ContainerResolver; - /** The fields to identify a host by */ - host?: HostResolver; - /** The fields that may contain the log event message. The first field found win. */ - message?: MessageResolver; - /** The field to identify a pod by */ - pod?: PodResolver; - /** The field to use as a tiebreaker for log events that have identical timestamps */ - tiebreaker?: TiebreakerResolver; - /** The field to use as a timestamp for metrics and logs */ - timestamp?: TimestampResolver; - } - - export type ContainerResolver< - R = string, - Parent = SourceFields, - TContext = SiemContext - > = Resolver; - export type HostResolver = Resolver< - R, - Parent, - TContext - >; - export type MessageResolver< - R = string[], - Parent = SourceFields, - TContext = SiemContext - > = Resolver; - export type PodResolver = Resolver< - R, - Parent, - TContext - >; - export type TiebreakerResolver< - R = string, - Parent = SourceFields, - TContext = SiemContext - > = Resolver; - export type TimestampResolver< - R = string, - Parent = SourceFields, - TContext = SiemContext - > = Resolver; -} -/** The status of an infrastructure data source */ -export namespace SourceStatusResolvers { - export interface Resolvers { - /** Whether the configured alias or wildcard pattern resolve to any auditbeat indices */ - indicesExist?: IndicesExistResolver; - /** The list of fields defined in the index mappings */ - indexFields?: IndexFieldsResolver; - } - - export type IndicesExistResolver< - R = boolean, - Parent = SourceStatus, - TContext = SiemContext - > = Resolver; - export interface IndicesExistArgs { - defaultIndex: string[]; - } - - export type IndexFieldsResolver< - R = string[], - Parent = SourceStatus, - TContext = SiemContext - > = Resolver; - export interface IndexFieldsArgs { - defaultIndex: string[]; - } -} - -export namespace TimelineResultResolvers { - export interface Resolvers { - columns?: ColumnsResolver, TypeParent, TContext>; - - created?: CreatedResolver, TypeParent, TContext>; - - createdBy?: CreatedByResolver, TypeParent, TContext>; - - dataProviders?: DataProvidersResolver, TypeParent, TContext>; - - dateRange?: DateRangeResolver, TypeParent, TContext>; - - description?: DescriptionResolver, TypeParent, TContext>; - - eqlOptions?: EqlOptionsResolver, TypeParent, TContext>; - - eventIdToNoteIds?: EventIdToNoteIdsResolver, TypeParent, TContext>; - - eventType?: EventTypeResolver, TypeParent, TContext>; - - excludedRowRendererIds?: ExcludedRowRendererIdsResolver< - Maybe, - TypeParent, - TContext - >; - - favorite?: FavoriteResolver, TypeParent, TContext>; - - filters?: FiltersResolver, TypeParent, TContext>; - - kqlMode?: KqlModeResolver, TypeParent, TContext>; - - kqlQuery?: KqlQueryResolver, TypeParent, TContext>; - - indexNames?: IndexNamesResolver, TypeParent, TContext>; - - notes?: NotesResolver, TypeParent, TContext>; - - noteIds?: NoteIdsResolver, TypeParent, TContext>; - - pinnedEventIds?: PinnedEventIdsResolver, TypeParent, TContext>; - - pinnedEventsSaveObject?: PinnedEventsSaveObjectResolver< - Maybe, - TypeParent, - TContext - >; - - savedQueryId?: SavedQueryIdResolver, TypeParent, TContext>; - - savedObjectId?: SavedObjectIdResolver; - - sort?: SortResolver, TypeParent, TContext>; - - status?: StatusResolver, TypeParent, TContext>; - - title?: TitleResolver, TypeParent, TContext>; - - templateTimelineId?: TemplateTimelineIdResolver, TypeParent, TContext>; - - templateTimelineVersion?: TemplateTimelineVersionResolver, TypeParent, TContext>; - - timelineType?: TimelineTypeResolver, TypeParent, TContext>; - - updated?: UpdatedResolver, TypeParent, TContext>; - - updatedBy?: UpdatedByResolver, TypeParent, TContext>; - - version?: VersionResolver; - } - - export type ColumnsResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type CreatedResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type CreatedByResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type DataProvidersResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type DateRangeResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type DescriptionResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type EqlOptionsResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type EventIdToNoteIdsResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type EventTypeResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type ExcludedRowRendererIdsResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type FavoriteResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type FiltersResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type KqlModeResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type KqlQueryResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type IndexNamesResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type NotesResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type NoteIdsResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type PinnedEventIdsResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type PinnedEventsSaveObjectResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type SavedQueryIdResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type SavedObjectIdResolver< - R = string, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type SortResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type StatusResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type TitleResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type TemplateTimelineIdResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type TemplateTimelineVersionResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type TimelineTypeResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type UpdatedResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type UpdatedByResolver< - R = Maybe, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; - export type VersionResolver< - R = string, - Parent = TimelineResult, - TContext = SiemContext - > = Resolver; -} - -export namespace ColumnHeaderResultResolvers { - export interface Resolvers { - aggregatable?: AggregatableResolver, TypeParent, TContext>; - - category?: CategoryResolver, TypeParent, TContext>; - - columnHeaderType?: ColumnHeaderTypeResolver, TypeParent, TContext>; - - description?: DescriptionResolver, TypeParent, TContext>; - - example?: ExampleResolver, TypeParent, TContext>; - - indexes?: IndexesResolver, TypeParent, TContext>; - - id?: IdResolver, TypeParent, TContext>; - - name?: NameResolver, TypeParent, TContext>; - - placeholder?: PlaceholderResolver, TypeParent, TContext>; - - searchable?: SearchableResolver, TypeParent, TContext>; - - type?: TypeResolver, TypeParent, TContext>; - } - - export type AggregatableResolver< - R = Maybe, - Parent = ColumnHeaderResult, - TContext = SiemContext - > = Resolver; - export type CategoryResolver< - R = Maybe, - Parent = ColumnHeaderResult, - TContext = SiemContext - > = Resolver; - export type ColumnHeaderTypeResolver< - R = Maybe, - Parent = ColumnHeaderResult, - TContext = SiemContext - > = Resolver; - export type DescriptionResolver< - R = Maybe, - Parent = ColumnHeaderResult, - TContext = SiemContext - > = Resolver; - export type ExampleResolver< - R = Maybe, - Parent = ColumnHeaderResult, - TContext = SiemContext - > = Resolver; - export type IndexesResolver< - R = Maybe, - Parent = ColumnHeaderResult, - TContext = SiemContext - > = Resolver; - export type IdResolver< - R = Maybe, - Parent = ColumnHeaderResult, - TContext = SiemContext - > = Resolver; - export type NameResolver< - R = Maybe, - Parent = ColumnHeaderResult, - TContext = SiemContext - > = Resolver; - export type PlaceholderResolver< - R = Maybe, - Parent = ColumnHeaderResult, - TContext = SiemContext - > = Resolver; - export type SearchableResolver< - R = Maybe, - Parent = ColumnHeaderResult, - TContext = SiemContext - > = Resolver; - export type TypeResolver< - R = Maybe, - Parent = ColumnHeaderResult, - TContext = SiemContext - > = Resolver; -} - -export namespace DataProviderResultResolvers { - export interface Resolvers { - id?: IdResolver, TypeParent, TContext>; - - name?: NameResolver, TypeParent, TContext>; - - enabled?: EnabledResolver, TypeParent, TContext>; - - excluded?: ExcludedResolver, TypeParent, TContext>; - - kqlQuery?: KqlQueryResolver, TypeParent, TContext>; - - queryMatch?: QueryMatchResolver, TypeParent, TContext>; - - type?: TypeResolver, TypeParent, TContext>; - - and?: AndResolver, TypeParent, TContext>; - } - - export type IdResolver< - R = Maybe, - Parent = DataProviderResult, - TContext = SiemContext - > = Resolver; - export type NameResolver< - R = Maybe, - Parent = DataProviderResult, - TContext = SiemContext - > = Resolver; - export type EnabledResolver< - R = Maybe, - Parent = DataProviderResult, - TContext = SiemContext - > = Resolver; - export type ExcludedResolver< - R = Maybe, - Parent = DataProviderResult, - TContext = SiemContext - > = Resolver; - export type KqlQueryResolver< - R = Maybe, - Parent = DataProviderResult, - TContext = SiemContext - > = Resolver; - export type QueryMatchResolver< - R = Maybe, - Parent = DataProviderResult, - TContext = SiemContext - > = Resolver; - export type TypeResolver< - R = Maybe, - Parent = DataProviderResult, - TContext = SiemContext - > = Resolver; - export type AndResolver< - R = Maybe, - Parent = DataProviderResult, - TContext = SiemContext - > = Resolver; -} - -export namespace QueryMatchResultResolvers { - export interface Resolvers { - field?: FieldResolver, TypeParent, TContext>; - - displayField?: DisplayFieldResolver, TypeParent, TContext>; - - value?: ValueResolver, TypeParent, TContext>; - - displayValue?: DisplayValueResolver, TypeParent, TContext>; - - operator?: OperatorResolver, TypeParent, TContext>; - } - - export type FieldResolver< - R = Maybe, - Parent = QueryMatchResult, - TContext = SiemContext - > = Resolver; - export type DisplayFieldResolver< - R = Maybe, - Parent = QueryMatchResult, - TContext = SiemContext - > = Resolver; - export type ValueResolver< - R = Maybe, - Parent = QueryMatchResult, - TContext = SiemContext - > = Resolver; - export type DisplayValueResolver< - R = Maybe, - Parent = QueryMatchResult, - TContext = SiemContext - > = Resolver; - export type OperatorResolver< - R = Maybe, - Parent = QueryMatchResult, - TContext = SiemContext - > = Resolver; -} - -export namespace DateRangePickerResultResolvers { - export interface Resolvers { - start?: StartResolver, TypeParent, TContext>; - - end?: EndResolver, TypeParent, TContext>; - } - - export type StartResolver< - R = Maybe, - Parent = DateRangePickerResult, - TContext = SiemContext - > = Resolver; - export type EndResolver< - R = Maybe, - Parent = DateRangePickerResult, - TContext = SiemContext - > = Resolver; -} - -export namespace EqlOptionsResultResolvers { - export interface Resolvers { - eventCategoryField?: EventCategoryFieldResolver, TypeParent, TContext>; - - tiebreakerField?: TiebreakerFieldResolver, TypeParent, TContext>; - - timestampField?: TimestampFieldResolver, TypeParent, TContext>; - - query?: QueryResolver, TypeParent, TContext>; - - size?: SizeResolver, TypeParent, TContext>; - } - - export type EventCategoryFieldResolver< - R = Maybe, - Parent = EqlOptionsResult, - TContext = SiemContext - > = Resolver; - export type TiebreakerFieldResolver< - R = Maybe, - Parent = EqlOptionsResult, - TContext = SiemContext - > = Resolver; - export type TimestampFieldResolver< - R = Maybe, - Parent = EqlOptionsResult, - TContext = SiemContext - > = Resolver; - export type QueryResolver< - R = Maybe, - Parent = EqlOptionsResult, - TContext = SiemContext - > = Resolver; - export type SizeResolver< - R = Maybe, - Parent = EqlOptionsResult, - TContext = SiemContext - > = Resolver; -} - -export namespace FavoriteTimelineResultResolvers { - export interface Resolvers { - fullName?: FullNameResolver, TypeParent, TContext>; - - userName?: UserNameResolver, TypeParent, TContext>; - - favoriteDate?: FavoriteDateResolver, TypeParent, TContext>; - } - - export type FullNameResolver< - R = Maybe, - Parent = FavoriteTimelineResult, - TContext = SiemContext - > = Resolver; - export type UserNameResolver< - R = Maybe, - Parent = FavoriteTimelineResult, - TContext = SiemContext - > = Resolver; - export type FavoriteDateResolver< - R = Maybe, - Parent = FavoriteTimelineResult, - TContext = SiemContext - > = Resolver; -} - -export namespace FilterTimelineResultResolvers { - export interface Resolvers { - exists?: ExistsResolver, TypeParent, TContext>; - - meta?: MetaResolver, TypeParent, TContext>; - - match_all?: MatchAllResolver, TypeParent, TContext>; - - missing?: MissingResolver, TypeParent, TContext>; - - query?: QueryResolver, TypeParent, TContext>; - - range?: RangeResolver, TypeParent, TContext>; - - script?: ScriptResolver, TypeParent, TContext>; - } - - export type ExistsResolver< - R = Maybe, - Parent = FilterTimelineResult, - TContext = SiemContext - > = Resolver; - export type MetaResolver< - R = Maybe, - Parent = FilterTimelineResult, - TContext = SiemContext - > = Resolver; - export type MatchAllResolver< - R = Maybe, - Parent = FilterTimelineResult, - TContext = SiemContext - > = Resolver; - export type MissingResolver< - R = Maybe, - Parent = FilterTimelineResult, - TContext = SiemContext - > = Resolver; - export type QueryResolver< - R = Maybe, - Parent = FilterTimelineResult, - TContext = SiemContext - > = Resolver; - export type RangeResolver< - R = Maybe, - Parent = FilterTimelineResult, - TContext = SiemContext - > = Resolver; - export type ScriptResolver< - R = Maybe, - Parent = FilterTimelineResult, - TContext = SiemContext - > = Resolver; -} - -export namespace FilterMetaTimelineResultResolvers { - export interface Resolvers { - alias?: AliasResolver, TypeParent, TContext>; - - controlledBy?: ControlledByResolver, TypeParent, TContext>; - - disabled?: DisabledResolver, TypeParent, TContext>; - - field?: FieldResolver, TypeParent, TContext>; - - formattedValue?: FormattedValueResolver, TypeParent, TContext>; - - index?: IndexResolver, TypeParent, TContext>; - - key?: KeyResolver, TypeParent, TContext>; - - negate?: NegateResolver, TypeParent, TContext>; - - params?: ParamsResolver, TypeParent, TContext>; - - type?: TypeResolver, TypeParent, TContext>; - - value?: ValueResolver, TypeParent, TContext>; - } - - export type AliasResolver< - R = Maybe, - Parent = FilterMetaTimelineResult, - TContext = SiemContext - > = Resolver; - export type ControlledByResolver< - R = Maybe, - Parent = FilterMetaTimelineResult, - TContext = SiemContext - > = Resolver; - export type DisabledResolver< - R = Maybe, - Parent = FilterMetaTimelineResult, - TContext = SiemContext - > = Resolver; - export type FieldResolver< - R = Maybe, - Parent = FilterMetaTimelineResult, - TContext = SiemContext - > = Resolver; - export type FormattedValueResolver< - R = Maybe, - Parent = FilterMetaTimelineResult, - TContext = SiemContext - > = Resolver; - export type IndexResolver< - R = Maybe, - Parent = FilterMetaTimelineResult, - TContext = SiemContext - > = Resolver; - export type KeyResolver< - R = Maybe, - Parent = FilterMetaTimelineResult, - TContext = SiemContext - > = Resolver; - export type NegateResolver< - R = Maybe, - Parent = FilterMetaTimelineResult, - TContext = SiemContext - > = Resolver; - export type ParamsResolver< - R = Maybe, - Parent = FilterMetaTimelineResult, - TContext = SiemContext - > = Resolver; - export type TypeResolver< - R = Maybe, - Parent = FilterMetaTimelineResult, - TContext = SiemContext - > = Resolver; - export type ValueResolver< - R = Maybe, - Parent = FilterMetaTimelineResult, - TContext = SiemContext - > = Resolver; -} - -export namespace SerializedFilterQueryResultResolvers { - export interface Resolvers { - filterQuery?: FilterQueryResolver, TypeParent, TContext>; - } - - export type FilterQueryResolver< - R = Maybe, - Parent = SerializedFilterQueryResult, - TContext = SiemContext - > = Resolver; -} - -export namespace SerializedKueryQueryResultResolvers { - export interface Resolvers { - kuery?: KueryResolver, TypeParent, TContext>; - - serializedQuery?: SerializedQueryResolver, TypeParent, TContext>; - } - - export type KueryResolver< - R = Maybe, - Parent = SerializedKueryQueryResult, - TContext = SiemContext - > = Resolver; - export type SerializedQueryResolver< - R = Maybe, - Parent = SerializedKueryQueryResult, - TContext = SiemContext - > = Resolver; -} - -export namespace KueryFilterQueryResultResolvers { - export interface Resolvers { - kind?: KindResolver, TypeParent, TContext>; - - expression?: ExpressionResolver, TypeParent, TContext>; - } - - export type KindResolver< - R = Maybe, - Parent = KueryFilterQueryResult, - TContext = SiemContext - > = Resolver; - export type ExpressionResolver< - R = Maybe, - Parent = KueryFilterQueryResult, - TContext = SiemContext - > = Resolver; -} - -export namespace ResponseTimelinesResolvers { - export interface Resolvers { - timeline?: TimelineResolver<(Maybe)[], TypeParent, TContext>; - - totalCount?: TotalCountResolver, TypeParent, TContext>; - - defaultTimelineCount?: DefaultTimelineCountResolver, TypeParent, TContext>; - - templateTimelineCount?: TemplateTimelineCountResolver, TypeParent, TContext>; - - elasticTemplateTimelineCount?: ElasticTemplateTimelineCountResolver< - Maybe, - TypeParent, - TContext - >; - - customTemplateTimelineCount?: CustomTemplateTimelineCountResolver< - Maybe, - TypeParent, - TContext - >; - - favoriteCount?: FavoriteCountResolver, TypeParent, TContext>; - } - - export type TimelineResolver< - R = (Maybe)[], - Parent = ResponseTimelines, - TContext = SiemContext - > = Resolver; - export type TotalCountResolver< - R = Maybe, - Parent = ResponseTimelines, - TContext = SiemContext - > = Resolver; - export type DefaultTimelineCountResolver< - R = Maybe, - Parent = ResponseTimelines, - TContext = SiemContext - > = Resolver; - export type TemplateTimelineCountResolver< - R = Maybe, - Parent = ResponseTimelines, - TContext = SiemContext - > = Resolver; - export type ElasticTemplateTimelineCountResolver< - R = Maybe, - Parent = ResponseTimelines, - TContext = SiemContext - > = Resolver; - export type CustomTemplateTimelineCountResolver< - R = Maybe, - Parent = ResponseTimelines, - TContext = SiemContext - > = Resolver; - export type FavoriteCountResolver< - R = Maybe, - Parent = ResponseTimelines, - TContext = SiemContext - > = Resolver; -} - -export namespace MutationResolvers { - export interface Resolvers { - /** Persists a note */ - persistNote?: PersistNoteResolver; - - deleteNote?: DeleteNoteResolver, TypeParent, TContext>; - - deleteNoteByTimelineId?: DeleteNoteByTimelineIdResolver, TypeParent, TContext>; - /** Persists a pinned event in a timeline */ - persistPinnedEventOnTimeline?: PersistPinnedEventOnTimelineResolver< - Maybe, - TypeParent, - TContext - >; - /** Remove a pinned events in a timeline */ - deletePinnedEventOnTimeline?: DeletePinnedEventOnTimelineResolver< - boolean, - TypeParent, - TContext - >; - /** Remove all pinned events in a timeline */ - deleteAllPinnedEventsOnTimeline?: DeleteAllPinnedEventsOnTimelineResolver< - boolean, - TypeParent, - TContext - >; - /** Persists a timeline */ - persistTimeline?: PersistTimelineResolver; - - persistFavorite?: PersistFavoriteResolver; - - deleteTimeline?: DeleteTimelineResolver; - } - - export type PersistNoteResolver = Resolver< - R, - Parent, - TContext, - PersistNoteArgs - >; - export interface PersistNoteArgs { - noteId?: Maybe; - - version?: Maybe; - - note: NoteInput; - } - - export type DeleteNoteResolver< - R = Maybe, - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface DeleteNoteArgs { - id: string[]; - } - - export type DeleteNoteByTimelineIdResolver< - R = Maybe, - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface DeleteNoteByTimelineIdArgs { - timelineId: string; - - version?: Maybe; - } - - export type PersistPinnedEventOnTimelineResolver< - R = Maybe, - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface PersistPinnedEventOnTimelineArgs { - pinnedEventId?: Maybe; - - eventId: string; - - timelineId?: Maybe; - } - - export type DeletePinnedEventOnTimelineResolver< - R = boolean, - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface DeletePinnedEventOnTimelineArgs { - id: string[]; - } - - export type DeleteAllPinnedEventsOnTimelineResolver< - R = boolean, - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface DeleteAllPinnedEventsOnTimelineArgs { - timelineId: string; - } - - export type PersistTimelineResolver< - R = ResponseTimeline, - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface PersistTimelineArgs { - id?: Maybe; - - version?: Maybe; - - timeline: TimelineInput; - } - - export type PersistFavoriteResolver< - R = ResponseFavoriteTimeline, - Parent = {}, - TContext = SiemContext - > = Resolver; - export interface PersistFavoriteArgs { - timelineId?: Maybe; - - templateTimelineId?: Maybe; - - templateTimelineVersion?: Maybe; - - timelineType?: Maybe; - } - - export type DeleteTimelineResolver = Resolver< - R, - Parent, - TContext, - DeleteTimelineArgs - >; - export interface DeleteTimelineArgs { - id: string[]; - } -} - -export namespace ResponseNoteResolvers { - export interface Resolvers { - code?: CodeResolver, TypeParent, TContext>; - - message?: MessageResolver, TypeParent, TContext>; - - note?: NoteResolver; - } - - export type CodeResolver< - R = Maybe, - Parent = ResponseNote, - TContext = SiemContext - > = Resolver; - export type MessageResolver< - R = Maybe, - Parent = ResponseNote, - TContext = SiemContext - > = Resolver; - export type NoteResolver< - R = NoteResult, - Parent = ResponseNote, - TContext = SiemContext - > = Resolver; -} - -export namespace ResponseTimelineResolvers { - export interface Resolvers { - code?: CodeResolver, TypeParent, TContext>; - - message?: MessageResolver, TypeParent, TContext>; - - timeline?: TimelineResolver; - } - - export type CodeResolver< - R = Maybe, - Parent = ResponseTimeline, - TContext = SiemContext - > = Resolver; - export type MessageResolver< - R = Maybe, - Parent = ResponseTimeline, - TContext = SiemContext - > = Resolver; - export type TimelineResolver< - R = TimelineResult, - Parent = ResponseTimeline, - TContext = SiemContext - > = Resolver; -} - -export namespace ResponseFavoriteTimelineResolvers { - export interface Resolvers { - code?: CodeResolver, TypeParent, TContext>; - - message?: MessageResolver, TypeParent, TContext>; - - savedObjectId?: SavedObjectIdResolver; - - templateTimelineId?: TemplateTimelineIdResolver, TypeParent, TContext>; - - templateTimelineVersion?: TemplateTimelineVersionResolver, TypeParent, TContext>; - - timelineType?: TimelineTypeResolver, TypeParent, TContext>; - - version?: VersionResolver; - - favorite?: FavoriteResolver, TypeParent, TContext>; - } - - export type CodeResolver< - R = Maybe, - Parent = ResponseFavoriteTimeline, - TContext = SiemContext - > = Resolver; - export type MessageResolver< - R = Maybe, - Parent = ResponseFavoriteTimeline, - TContext = SiemContext - > = Resolver; - export type SavedObjectIdResolver< - R = string, - Parent = ResponseFavoriteTimeline, - TContext = SiemContext - > = Resolver; - export type TemplateTimelineIdResolver< - R = Maybe, - Parent = ResponseFavoriteTimeline, - TContext = SiemContext - > = Resolver; - export type TemplateTimelineVersionResolver< - R = Maybe, - Parent = ResponseFavoriteTimeline, - TContext = SiemContext - > = Resolver; - export type TimelineTypeResolver< - R = Maybe, - Parent = ResponseFavoriteTimeline, - TContext = SiemContext - > = Resolver; - export type VersionResolver< - R = string, - Parent = ResponseFavoriteTimeline, - TContext = SiemContext - > = Resolver; - export type FavoriteResolver< - R = Maybe, - Parent = ResponseFavoriteTimeline, - TContext = SiemContext - > = Resolver; -} - -export namespace EventEcsFieldsResolvers { - export interface Resolvers { - action?: ActionResolver, TypeParent, TContext>; - - category?: CategoryResolver, TypeParent, TContext>; - - code?: CodeResolver, TypeParent, TContext>; - - created?: CreatedResolver, TypeParent, TContext>; - - dataset?: DatasetResolver, TypeParent, TContext>; - - duration?: DurationResolver, TypeParent, TContext>; - - end?: EndResolver, TypeParent, TContext>; - - hash?: HashResolver, TypeParent, TContext>; - - id?: IdResolver, TypeParent, TContext>; - - kind?: KindResolver, TypeParent, TContext>; - - module?: ModuleResolver, TypeParent, TContext>; - - original?: OriginalResolver, TypeParent, TContext>; - - outcome?: OutcomeResolver, TypeParent, TContext>; - - risk_score?: RiskScoreResolver, TypeParent, TContext>; - - risk_score_norm?: RiskScoreNormResolver, TypeParent, TContext>; - - severity?: SeverityResolver, TypeParent, TContext>; - - start?: StartResolver, TypeParent, TContext>; - - timezone?: TimezoneResolver, TypeParent, TContext>; - - type?: TypeResolver, TypeParent, TContext>; - } - - export type ActionResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type CategoryResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type CodeResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type CreatedResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type DatasetResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type DurationResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type EndResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type HashResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type IdResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type KindResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type ModuleResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type OriginalResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type OutcomeResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type RiskScoreResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type RiskScoreNormResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type SeverityResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type StartResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type TimezoneResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; - export type TypeResolver< - R = Maybe, - Parent = EventEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace LocationResolvers { - export interface Resolvers { - lon?: LonResolver, TypeParent, TContext>; - - lat?: LatResolver, TypeParent, TContext>; - } - - export type LonResolver< - R = Maybe, - Parent = Location, - TContext = SiemContext - > = Resolver; - export type LatResolver< - R = Maybe, - Parent = Location, - TContext = SiemContext - > = Resolver; -} - -export namespace GeoEcsFieldsResolvers { - export interface Resolvers { - city_name?: CityNameResolver, TypeParent, TContext>; - - continent_name?: ContinentNameResolver, TypeParent, TContext>; - - country_iso_code?: CountryIsoCodeResolver, TypeParent, TContext>; - - country_name?: CountryNameResolver, TypeParent, TContext>; - - location?: LocationResolver, TypeParent, TContext>; - - region_iso_code?: RegionIsoCodeResolver, TypeParent, TContext>; - - region_name?: RegionNameResolver, TypeParent, TContext>; - } - - export type CityNameResolver< - R = Maybe, - Parent = GeoEcsFields, - TContext = SiemContext - > = Resolver; - export type ContinentNameResolver< - R = Maybe, - Parent = GeoEcsFields, - TContext = SiemContext - > = Resolver; - export type CountryIsoCodeResolver< - R = Maybe, - Parent = GeoEcsFields, - TContext = SiemContext - > = Resolver; - export type CountryNameResolver< - R = Maybe, - Parent = GeoEcsFields, - TContext = SiemContext - > = Resolver; - export type LocationResolver< - R = Maybe, - Parent = GeoEcsFields, - TContext = SiemContext - > = Resolver; - export type RegionIsoCodeResolver< - R = Maybe, - Parent = GeoEcsFields, - TContext = SiemContext - > = Resolver; - export type RegionNameResolver< - R = Maybe, - Parent = GeoEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace PrimarySecondaryResolvers { - export interface Resolvers { - primary?: PrimaryResolver, TypeParent, TContext>; - - secondary?: SecondaryResolver, TypeParent, TContext>; - - type?: TypeResolver, TypeParent, TContext>; - } - - export type PrimaryResolver< - R = Maybe, - Parent = PrimarySecondary, - TContext = SiemContext - > = Resolver; - export type SecondaryResolver< - R = Maybe, - Parent = PrimarySecondary, - TContext = SiemContext - > = Resolver; - export type TypeResolver< - R = Maybe, - Parent = PrimarySecondary, - TContext = SiemContext - > = Resolver; -} - -export namespace SummaryResolvers { - export interface Resolvers { - actor?: ActorResolver, TypeParent, TContext>; - - object?: ObjectResolver, TypeParent, TContext>; - - how?: HowResolver, TypeParent, TContext>; - - message_type?: MessageTypeResolver, TypeParent, TContext>; - - sequence?: SequenceResolver, TypeParent, TContext>; - } - - export type ActorResolver< - R = Maybe, - Parent = Summary, - TContext = SiemContext - > = Resolver; - export type ObjectResolver< - R = Maybe, - Parent = Summary, - TContext = SiemContext - > = Resolver; - export type HowResolver< - R = Maybe, - Parent = Summary, - TContext = SiemContext - > = Resolver; - export type MessageTypeResolver< - R = Maybe, - Parent = Summary, - TContext = SiemContext - > = Resolver; - export type SequenceResolver< - R = Maybe, - Parent = Summary, - TContext = SiemContext - > = Resolver; -} - -export namespace AgentEcsFieldResolvers { - export interface Resolvers { - type?: TypeResolver, TypeParent, TContext>; - } - - export type TypeResolver< - R = Maybe, - Parent = AgentEcsField, - TContext = SiemContext - > = Resolver; -} - -export namespace AuditdDataResolvers { - export interface Resolvers { - acct?: AcctResolver, TypeParent, TContext>; - - terminal?: TerminalResolver, TypeParent, TContext>; - - op?: OpResolver, TypeParent, TContext>; - } - - export type AcctResolver< - R = Maybe, - Parent = AuditdData, - TContext = SiemContext - > = Resolver; - export type TerminalResolver< - R = Maybe, - Parent = AuditdData, - TContext = SiemContext - > = Resolver; - export type OpResolver< - R = Maybe, - Parent = AuditdData, - TContext = SiemContext - > = Resolver; -} - -export namespace AuditdEcsFieldsResolvers { - export interface Resolvers { - result?: ResultResolver, TypeParent, TContext>; - - session?: SessionResolver, TypeParent, TContext>; - - data?: DataResolver, TypeParent, TContext>; - - summary?: SummaryResolver, TypeParent, TContext>; - - sequence?: SequenceResolver, TypeParent, TContext>; - } - - export type ResultResolver< - R = Maybe, - Parent = AuditdEcsFields, - TContext = SiemContext - > = Resolver; - export type SessionResolver< - R = Maybe, - Parent = AuditdEcsFields, - TContext = SiemContext - > = Resolver; - export type DataResolver< - R = Maybe, - Parent = AuditdEcsFields, - TContext = SiemContext - > = Resolver; - export type SummaryResolver< - R = Maybe, - Parent = AuditdEcsFields, - TContext = SiemContext - > = Resolver; - export type SequenceResolver< - R = Maybe, - Parent = AuditdEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace OsEcsFieldsResolvers { - export interface Resolvers { - platform?: PlatformResolver, TypeParent, TContext>; - - name?: NameResolver, TypeParent, TContext>; - - full?: FullResolver, TypeParent, TContext>; - - family?: FamilyResolver, TypeParent, TContext>; - - version?: VersionResolver, TypeParent, TContext>; - - kernel?: KernelResolver, TypeParent, TContext>; - } - - export type PlatformResolver< - R = Maybe, - Parent = OsEcsFields, - TContext = SiemContext - > = Resolver; - export type NameResolver< - R = Maybe, - Parent = OsEcsFields, - TContext = SiemContext - > = Resolver; - export type FullResolver< - R = Maybe, - Parent = OsEcsFields, - TContext = SiemContext - > = Resolver; - export type FamilyResolver< - R = Maybe, - Parent = OsEcsFields, - TContext = SiemContext - > = Resolver; - export type VersionResolver< - R = Maybe, - Parent = OsEcsFields, - TContext = SiemContext - > = Resolver; - export type KernelResolver< - R = Maybe, - Parent = OsEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace HostEcsFieldsResolvers { - export interface Resolvers { - architecture?: ArchitectureResolver, TypeParent, TContext>; - - id?: IdResolver, TypeParent, TContext>; - - ip?: IpResolver, TypeParent, TContext>; - - mac?: MacResolver, TypeParent, TContext>; - - name?: NameResolver, TypeParent, TContext>; - - os?: OsResolver, TypeParent, TContext>; - - type?: TypeResolver, TypeParent, TContext>; - } - - export type ArchitectureResolver< - R = Maybe, - Parent = HostEcsFields, - TContext = SiemContext - > = Resolver; - export type IdResolver< - R = Maybe, - Parent = HostEcsFields, - TContext = SiemContext - > = Resolver; - export type IpResolver< - R = Maybe, - Parent = HostEcsFields, - TContext = SiemContext - > = Resolver; - export type MacResolver< - R = Maybe, - Parent = HostEcsFields, - TContext = SiemContext - > = Resolver; - export type NameResolver< - R = Maybe, - Parent = HostEcsFields, - TContext = SiemContext - > = Resolver; - export type OsResolver< - R = Maybe, - Parent = HostEcsFields, - TContext = SiemContext - > = Resolver; - export type TypeResolver< - R = Maybe, - Parent = HostEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace ThreadResolvers { - export interface Resolvers { - id?: IdResolver, TypeParent, TContext>; - - start?: StartResolver, TypeParent, TContext>; - } - - export type IdResolver< - R = Maybe, - Parent = Thread, - TContext = SiemContext - > = Resolver; - export type StartResolver< - R = Maybe, - Parent = Thread, - TContext = SiemContext - > = Resolver; -} - -export namespace ProcessHashDataResolvers { - export interface Resolvers { - md5?: Md5Resolver, TypeParent, TContext>; - - sha1?: Sha1Resolver, TypeParent, TContext>; - - sha256?: Sha256Resolver, TypeParent, TContext>; - } - - export type Md5Resolver< - R = Maybe, - Parent = ProcessHashData, - TContext = SiemContext - > = Resolver; - export type Sha1Resolver< - R = Maybe, - Parent = ProcessHashData, - TContext = SiemContext - > = Resolver; - export type Sha256Resolver< - R = Maybe, - Parent = ProcessHashData, - TContext = SiemContext - > = Resolver; -} - -export namespace ProcessEcsFieldsResolvers { - export interface Resolvers { - hash?: HashResolver, TypeParent, TContext>; - - pid?: PidResolver, TypeParent, TContext>; - - name?: NameResolver, TypeParent, TContext>; - - ppid?: PpidResolver, TypeParent, TContext>; - - args?: ArgsResolver, TypeParent, TContext>; - - entity_id?: EntityIdResolver, TypeParent, TContext>; - - executable?: ExecutableResolver, TypeParent, TContext>; - - title?: TitleResolver, TypeParent, TContext>; - - thread?: ThreadResolver, TypeParent, TContext>; - - working_directory?: WorkingDirectoryResolver, TypeParent, TContext>; - } - - export type HashResolver< - R = Maybe, - Parent = ProcessEcsFields, - TContext = SiemContext - > = Resolver; - export type PidResolver< - R = Maybe, - Parent = ProcessEcsFields, - TContext = SiemContext - > = Resolver; - export type NameResolver< - R = Maybe, - Parent = ProcessEcsFields, - TContext = SiemContext - > = Resolver; - export type PpidResolver< - R = Maybe, - Parent = ProcessEcsFields, - TContext = SiemContext - > = Resolver; - export type ArgsResolver< - R = Maybe, - Parent = ProcessEcsFields, - TContext = SiemContext - > = Resolver; - export type EntityIdResolver< - R = Maybe, - Parent = ProcessEcsFields, - TContext = SiemContext - > = Resolver; - export type ExecutableResolver< - R = Maybe, - Parent = ProcessEcsFields, - TContext = SiemContext - > = Resolver; - export type TitleResolver< - R = Maybe, - Parent = ProcessEcsFields, - TContext = SiemContext - > = Resolver; - export type ThreadResolver< - R = Maybe, - Parent = ProcessEcsFields, - TContext = SiemContext - > = Resolver; - export type WorkingDirectoryResolver< - R = Maybe, - Parent = ProcessEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace SourceEcsFieldsResolvers { - export interface Resolvers { - bytes?: BytesResolver, TypeParent, TContext>; - - ip?: IpResolver, TypeParent, TContext>; - - port?: PortResolver, TypeParent, TContext>; - - domain?: DomainResolver, TypeParent, TContext>; - - geo?: GeoResolver, TypeParent, TContext>; - - packets?: PacketsResolver, TypeParent, TContext>; - } - - export type BytesResolver< - R = Maybe, - Parent = SourceEcsFields, - TContext = SiemContext - > = Resolver; - export type IpResolver< - R = Maybe, - Parent = SourceEcsFields, - TContext = SiemContext - > = Resolver; - export type PortResolver< - R = Maybe, - Parent = SourceEcsFields, - TContext = SiemContext - > = Resolver; - export type DomainResolver< - R = Maybe, - Parent = SourceEcsFields, - TContext = SiemContext - > = Resolver; - export type GeoResolver< - R = Maybe, - Parent = SourceEcsFields, - TContext = SiemContext - > = Resolver; - export type PacketsResolver< - R = Maybe, - Parent = SourceEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace DestinationEcsFieldsResolvers { - export interface Resolvers { - bytes?: BytesResolver, TypeParent, TContext>; - - ip?: IpResolver, TypeParent, TContext>; - - port?: PortResolver, TypeParent, TContext>; - - domain?: DomainResolver, TypeParent, TContext>; - - geo?: GeoResolver, TypeParent, TContext>; - - packets?: PacketsResolver, TypeParent, TContext>; - } - - export type BytesResolver< - R = Maybe, - Parent = DestinationEcsFields, - TContext = SiemContext - > = Resolver; - export type IpResolver< - R = Maybe, - Parent = DestinationEcsFields, - TContext = SiemContext - > = Resolver; - export type PortResolver< - R = Maybe, - Parent = DestinationEcsFields, - TContext = SiemContext - > = Resolver; - export type DomainResolver< - R = Maybe, - Parent = DestinationEcsFields, - TContext = SiemContext - > = Resolver; - export type GeoResolver< - R = Maybe, - Parent = DestinationEcsFields, - TContext = SiemContext - > = Resolver; - export type PacketsResolver< - R = Maybe, - Parent = DestinationEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace DnsQuestionDataResolvers { - export interface Resolvers { - name?: NameResolver, TypeParent, TContext>; - - type?: TypeResolver, TypeParent, TContext>; - } - - export type NameResolver< - R = Maybe, - Parent = DnsQuestionData, - TContext = SiemContext - > = Resolver; - export type TypeResolver< - R = Maybe, - Parent = DnsQuestionData, - TContext = SiemContext - > = Resolver; -} - -export namespace DnsEcsFieldsResolvers { - export interface Resolvers { - question?: QuestionResolver, TypeParent, TContext>; - - resolved_ip?: ResolvedIpResolver, TypeParent, TContext>; - - response_code?: ResponseCodeResolver, TypeParent, TContext>; - } - - export type QuestionResolver< - R = Maybe, - Parent = DnsEcsFields, - TContext = SiemContext - > = Resolver; - export type ResolvedIpResolver< - R = Maybe, - Parent = DnsEcsFields, - TContext = SiemContext - > = Resolver; - export type ResponseCodeResolver< - R = Maybe, - Parent = DnsEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace EndgameEcsFieldsResolvers { - export interface Resolvers { - exit_code?: ExitCodeResolver, TypeParent, TContext>; - - file_name?: FileNameResolver, TypeParent, TContext>; - - file_path?: FilePathResolver, TypeParent, TContext>; - - logon_type?: LogonTypeResolver, TypeParent, TContext>; - - parent_process_name?: ParentProcessNameResolver, TypeParent, TContext>; - - pid?: PidResolver, TypeParent, TContext>; - - process_name?: ProcessNameResolver, TypeParent, TContext>; - - subject_domain_name?: SubjectDomainNameResolver, TypeParent, TContext>; - - subject_logon_id?: SubjectLogonIdResolver, TypeParent, TContext>; - - subject_user_name?: SubjectUserNameResolver, TypeParent, TContext>; - - target_domain_name?: TargetDomainNameResolver, TypeParent, TContext>; - - target_logon_id?: TargetLogonIdResolver, TypeParent, TContext>; - - target_user_name?: TargetUserNameResolver, TypeParent, TContext>; - } - - export type ExitCodeResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type FileNameResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type FilePathResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type LogonTypeResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type ParentProcessNameResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type PidResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type ProcessNameResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type SubjectDomainNameResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type SubjectLogonIdResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type SubjectUserNameResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type TargetDomainNameResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type TargetLogonIdResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; - export type TargetUserNameResolver< - R = Maybe, - Parent = EndgameEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace SuricataAlertDataResolvers { - export interface Resolvers { - signature?: SignatureResolver, TypeParent, TContext>; - - signature_id?: SignatureIdResolver, TypeParent, TContext>; - } - - export type SignatureResolver< - R = Maybe, - Parent = SuricataAlertData, - TContext = SiemContext - > = Resolver; - export type SignatureIdResolver< - R = Maybe, - Parent = SuricataAlertData, - TContext = SiemContext - > = Resolver; -} - -export namespace SuricataEveDataResolvers { - export interface Resolvers { - alert?: AlertResolver, TypeParent, TContext>; - - flow_id?: FlowIdResolver, TypeParent, TContext>; - - proto?: ProtoResolver, TypeParent, TContext>; - } - - export type AlertResolver< - R = Maybe, - Parent = SuricataEveData, - TContext = SiemContext - > = Resolver; - export type FlowIdResolver< - R = Maybe, - Parent = SuricataEveData, - TContext = SiemContext - > = Resolver; - export type ProtoResolver< - R = Maybe, - Parent = SuricataEveData, - TContext = SiemContext - > = Resolver; -} - -export namespace SuricataEcsFieldsResolvers { - export interface Resolvers { - eve?: EveResolver, TypeParent, TContext>; - } - - export type EveResolver< - R = Maybe, - Parent = SuricataEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace TlsJa3DataResolvers { - export interface Resolvers { - hash?: HashResolver, TypeParent, TContext>; - } - - export type HashResolver< - R = Maybe, - Parent = TlsJa3Data, - TContext = SiemContext - > = Resolver; -} - -export namespace FingerprintDataResolvers { - export interface Resolvers { - sha1?: Sha1Resolver, TypeParent, TContext>; - } - - export type Sha1Resolver< - R = Maybe, - Parent = FingerprintData, - TContext = SiemContext - > = Resolver; -} - -export namespace TlsClientCertificateDataResolvers { - export interface Resolvers { - fingerprint?: FingerprintResolver, TypeParent, TContext>; - } - - export type FingerprintResolver< - R = Maybe, - Parent = TlsClientCertificateData, - TContext = SiemContext - > = Resolver; -} - -export namespace TlsServerCertificateDataResolvers { - export interface Resolvers { - fingerprint?: FingerprintResolver, TypeParent, TContext>; - } - - export type FingerprintResolver< - R = Maybe, - Parent = TlsServerCertificateData, - TContext = SiemContext - > = Resolver; -} - -export namespace TlsFingerprintsDataResolvers { - export interface Resolvers { - ja3?: Ja3Resolver, TypeParent, TContext>; - } - - export type Ja3Resolver< - R = Maybe, - Parent = TlsFingerprintsData, - TContext = SiemContext - > = Resolver; -} - -export namespace TlsEcsFieldsResolvers { - export interface Resolvers { - client_certificate?: ClientCertificateResolver< - Maybe, - TypeParent, - TContext - >; - - fingerprints?: FingerprintsResolver, TypeParent, TContext>; - - server_certificate?: ServerCertificateResolver< - Maybe, - TypeParent, - TContext - >; - } - - export type ClientCertificateResolver< - R = Maybe, - Parent = TlsEcsFields, - TContext = SiemContext - > = Resolver; - export type FingerprintsResolver< - R = Maybe, - Parent = TlsEcsFields, - TContext = SiemContext - > = Resolver; - export type ServerCertificateResolver< - R = Maybe, - Parent = TlsEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace ZeekConnectionDataResolvers { - export interface Resolvers { - local_resp?: LocalRespResolver, TypeParent, TContext>; - - local_orig?: LocalOrigResolver, TypeParent, TContext>; - - missed_bytes?: MissedBytesResolver, TypeParent, TContext>; - - state?: StateResolver, TypeParent, TContext>; - - history?: HistoryResolver, TypeParent, TContext>; - } - - export type LocalRespResolver< - R = Maybe, - Parent = ZeekConnectionData, - TContext = SiemContext - > = Resolver; - export type LocalOrigResolver< - R = Maybe, - Parent = ZeekConnectionData, - TContext = SiemContext - > = Resolver; - export type MissedBytesResolver< - R = Maybe, - Parent = ZeekConnectionData, - TContext = SiemContext - > = Resolver; - export type StateResolver< - R = Maybe, - Parent = ZeekConnectionData, - TContext = SiemContext - > = Resolver; - export type HistoryResolver< - R = Maybe, - Parent = ZeekConnectionData, - TContext = SiemContext - > = Resolver; -} - -export namespace ZeekNoticeDataResolvers { - export interface Resolvers { - suppress_for?: SuppressForResolver, TypeParent, TContext>; - - msg?: MsgResolver, TypeParent, TContext>; - - note?: NoteResolver, TypeParent, TContext>; - - sub?: SubResolver, TypeParent, TContext>; - - dst?: DstResolver, TypeParent, TContext>; - - dropped?: DroppedResolver, TypeParent, TContext>; - - peer_descr?: PeerDescrResolver, TypeParent, TContext>; - } - - export type SuppressForResolver< - R = Maybe, - Parent = ZeekNoticeData, - TContext = SiemContext - > = Resolver; - export type MsgResolver< - R = Maybe, - Parent = ZeekNoticeData, - TContext = SiemContext - > = Resolver; - export type NoteResolver< - R = Maybe, - Parent = ZeekNoticeData, - TContext = SiemContext - > = Resolver; - export type SubResolver< - R = Maybe, - Parent = ZeekNoticeData, - TContext = SiemContext - > = Resolver; - export type DstResolver< - R = Maybe, - Parent = ZeekNoticeData, - TContext = SiemContext - > = Resolver; - export type DroppedResolver< - R = Maybe, - Parent = ZeekNoticeData, - TContext = SiemContext - > = Resolver; - export type PeerDescrResolver< - R = Maybe, - Parent = ZeekNoticeData, - TContext = SiemContext - > = Resolver; -} - -export namespace ZeekDnsDataResolvers { - export interface Resolvers { - AA?: AaResolver, TypeParent, TContext>; - - qclass_name?: QclassNameResolver, TypeParent, TContext>; - - RD?: RdResolver, TypeParent, TContext>; - - qtype_name?: QtypeNameResolver, TypeParent, TContext>; - - rejected?: RejectedResolver, TypeParent, TContext>; - - qtype?: QtypeResolver, TypeParent, TContext>; - - query?: QueryResolver, TypeParent, TContext>; - - trans_id?: TransIdResolver, TypeParent, TContext>; - - qclass?: QclassResolver, TypeParent, TContext>; - - RA?: RaResolver, TypeParent, TContext>; - - TC?: TcResolver, TypeParent, TContext>; - } - - export type AaResolver< - R = Maybe, - Parent = ZeekDnsData, - TContext = SiemContext - > = Resolver; - export type QclassNameResolver< - R = Maybe, - Parent = ZeekDnsData, - TContext = SiemContext - > = Resolver; - export type RdResolver< - R = Maybe, - Parent = ZeekDnsData, - TContext = SiemContext - > = Resolver; - export type QtypeNameResolver< - R = Maybe, - Parent = ZeekDnsData, - TContext = SiemContext - > = Resolver; - export type RejectedResolver< - R = Maybe, - Parent = ZeekDnsData, - TContext = SiemContext - > = Resolver; - export type QtypeResolver< - R = Maybe, - Parent = ZeekDnsData, - TContext = SiemContext - > = Resolver; - export type QueryResolver< - R = Maybe, - Parent = ZeekDnsData, - TContext = SiemContext - > = Resolver; - export type TransIdResolver< - R = Maybe, - Parent = ZeekDnsData, - TContext = SiemContext - > = Resolver; - export type QclassResolver< - R = Maybe, - Parent = ZeekDnsData, - TContext = SiemContext - > = Resolver; - export type RaResolver< - R = Maybe, - Parent = ZeekDnsData, - TContext = SiemContext - > = Resolver; - export type TcResolver< - R = Maybe, - Parent = ZeekDnsData, - TContext = SiemContext - > = Resolver; -} - -export namespace FileFieldsResolvers { - export interface Resolvers { - name?: NameResolver, TypeParent, TContext>; - - path?: PathResolver, TypeParent, TContext>; - - target_path?: TargetPathResolver, TypeParent, TContext>; - - extension?: ExtensionResolver, TypeParent, TContext>; - - type?: TypeResolver, TypeParent, TContext>; - - device?: DeviceResolver, TypeParent, TContext>; - - inode?: InodeResolver, TypeParent, TContext>; - - uid?: UidResolver, TypeParent, TContext>; - - owner?: OwnerResolver, TypeParent, TContext>; - - gid?: GidResolver, TypeParent, TContext>; - - group?: GroupResolver, TypeParent, TContext>; - - mode?: ModeResolver, TypeParent, TContext>; - - size?: SizeResolver, TypeParent, TContext>; - - mtime?: MtimeResolver, TypeParent, TContext>; - - ctime?: CtimeResolver, TypeParent, TContext>; - } - - export type NameResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type PathResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type TargetPathResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type ExtensionResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type TypeResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type DeviceResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type InodeResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type UidResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type OwnerResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type GidResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type GroupResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type ModeResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type SizeResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type MtimeResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; - export type CtimeResolver< - R = Maybe, - Parent = FileFields, - TContext = SiemContext - > = Resolver; -} - -export namespace ZeekHttpDataResolvers { - export interface Resolvers { - resp_mime_types?: RespMimeTypesResolver, TypeParent, TContext>; - - trans_depth?: TransDepthResolver, TypeParent, TContext>; - - status_msg?: StatusMsgResolver, TypeParent, TContext>; - - resp_fuids?: RespFuidsResolver, TypeParent, TContext>; - - tags?: TagsResolver, TypeParent, TContext>; - } - - export type RespMimeTypesResolver< - R = Maybe, - Parent = ZeekHttpData, - TContext = SiemContext - > = Resolver; - export type TransDepthResolver< - R = Maybe, - Parent = ZeekHttpData, - TContext = SiemContext - > = Resolver; - export type StatusMsgResolver< - R = Maybe, - Parent = ZeekHttpData, - TContext = SiemContext - > = Resolver; - export type RespFuidsResolver< - R = Maybe, - Parent = ZeekHttpData, - TContext = SiemContext - > = Resolver; - export type TagsResolver< - R = Maybe, - Parent = ZeekHttpData, - TContext = SiemContext - > = Resolver; -} - -export namespace HttpBodyDataResolvers { - export interface Resolvers { - content?: ContentResolver, TypeParent, TContext>; - - bytes?: BytesResolver, TypeParent, TContext>; - } - - export type ContentResolver< - R = Maybe, - Parent = HttpBodyData, - TContext = SiemContext - > = Resolver; - export type BytesResolver< - R = Maybe, - Parent = HttpBodyData, - TContext = SiemContext - > = Resolver; -} - -export namespace HttpRequestDataResolvers { - export interface Resolvers { - method?: MethodResolver, TypeParent, TContext>; - - body?: BodyResolver, TypeParent, TContext>; - - referrer?: ReferrerResolver, TypeParent, TContext>; - - bytes?: BytesResolver, TypeParent, TContext>; - } - - export type MethodResolver< - R = Maybe, - Parent = HttpRequestData, - TContext = SiemContext - > = Resolver; - export type BodyResolver< - R = Maybe, - Parent = HttpRequestData, - TContext = SiemContext - > = Resolver; - export type ReferrerResolver< - R = Maybe, - Parent = HttpRequestData, - TContext = SiemContext - > = Resolver; - export type BytesResolver< - R = Maybe, - Parent = HttpRequestData, - TContext = SiemContext - > = Resolver; -} - -export namespace HttpResponseDataResolvers { - export interface Resolvers { - status_code?: StatusCodeResolver, TypeParent, TContext>; - - body?: BodyResolver, TypeParent, TContext>; - - bytes?: BytesResolver, TypeParent, TContext>; - } - - export type StatusCodeResolver< - R = Maybe, - Parent = HttpResponseData, - TContext = SiemContext - > = Resolver; - export type BodyResolver< - R = Maybe, - Parent = HttpResponseData, - TContext = SiemContext - > = Resolver; - export type BytesResolver< - R = Maybe, - Parent = HttpResponseData, - TContext = SiemContext - > = Resolver; -} - -export namespace HttpEcsFieldsResolvers { - export interface Resolvers { - version?: VersionResolver, TypeParent, TContext>; - - request?: RequestResolver, TypeParent, TContext>; - - response?: ResponseResolver, TypeParent, TContext>; - } - - export type VersionResolver< - R = Maybe, - Parent = HttpEcsFields, - TContext = SiemContext - > = Resolver; - export type RequestResolver< - R = Maybe, - Parent = HttpEcsFields, - TContext = SiemContext - > = Resolver; - export type ResponseResolver< - R = Maybe, - Parent = HttpEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace UrlEcsFieldsResolvers { - export interface Resolvers { - domain?: DomainResolver, TypeParent, TContext>; - - original?: OriginalResolver, TypeParent, TContext>; - - username?: UsernameResolver, TypeParent, TContext>; - - password?: PasswordResolver, TypeParent, TContext>; - } - - export type DomainResolver< - R = Maybe, - Parent = UrlEcsFields, - TContext = SiemContext - > = Resolver; - export type OriginalResolver< - R = Maybe, - Parent = UrlEcsFields, - TContext = SiemContext - > = Resolver; - export type UsernameResolver< - R = Maybe, - Parent = UrlEcsFields, - TContext = SiemContext - > = Resolver; - export type PasswordResolver< - R = Maybe, - Parent = UrlEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace ZeekFileDataResolvers { - export interface Resolvers { - session_ids?: SessionIdsResolver, TypeParent, TContext>; - - timedout?: TimedoutResolver, TypeParent, TContext>; - - local_orig?: LocalOrigResolver, TypeParent, TContext>; - - tx_host?: TxHostResolver, TypeParent, TContext>; - - source?: SourceResolver, TypeParent, TContext>; - - is_orig?: IsOrigResolver, TypeParent, TContext>; - - overflow_bytes?: OverflowBytesResolver, TypeParent, TContext>; - - sha1?: Sha1Resolver, TypeParent, TContext>; - - duration?: DurationResolver, TypeParent, TContext>; - - depth?: DepthResolver, TypeParent, TContext>; - - analyzers?: AnalyzersResolver, TypeParent, TContext>; - - mime_type?: MimeTypeResolver, TypeParent, TContext>; - - rx_host?: RxHostResolver, TypeParent, TContext>; - - total_bytes?: TotalBytesResolver, TypeParent, TContext>; - - fuid?: FuidResolver, TypeParent, TContext>; - - seen_bytes?: SeenBytesResolver, TypeParent, TContext>; - - missing_bytes?: MissingBytesResolver, TypeParent, TContext>; - - md5?: Md5Resolver, TypeParent, TContext>; - } - - export type SessionIdsResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type TimedoutResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type LocalOrigResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type TxHostResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type SourceResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type IsOrigResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type OverflowBytesResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type Sha1Resolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type DurationResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type DepthResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type AnalyzersResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type MimeTypeResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type RxHostResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type TotalBytesResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type FuidResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type SeenBytesResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type MissingBytesResolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; - export type Md5Resolver< - R = Maybe, - Parent = ZeekFileData, - TContext = SiemContext - > = Resolver; -} - -export namespace ZeekSslDataResolvers { - export interface Resolvers { - cipher?: CipherResolver, TypeParent, TContext>; - - established?: EstablishedResolver, TypeParent, TContext>; - - resumed?: ResumedResolver, TypeParent, TContext>; - - version?: VersionResolver, TypeParent, TContext>; - } - - export type CipherResolver< - R = Maybe, - Parent = ZeekSslData, - TContext = SiemContext - > = Resolver; - export type EstablishedResolver< - R = Maybe, - Parent = ZeekSslData, - TContext = SiemContext - > = Resolver; - export type ResumedResolver< - R = Maybe, - Parent = ZeekSslData, - TContext = SiemContext - > = Resolver; - export type VersionResolver< - R = Maybe, - Parent = ZeekSslData, - TContext = SiemContext - > = Resolver; -} - -export namespace ZeekEcsFieldsResolvers { - export interface Resolvers { - session_id?: SessionIdResolver, TypeParent, TContext>; - - connection?: ConnectionResolver, TypeParent, TContext>; - - notice?: NoticeResolver, TypeParent, TContext>; - - dns?: DnsResolver, TypeParent, TContext>; - - http?: HttpResolver, TypeParent, TContext>; - - files?: FilesResolver, TypeParent, TContext>; - - ssl?: SslResolver, TypeParent, TContext>; - } - - export type SessionIdResolver< - R = Maybe, - Parent = ZeekEcsFields, - TContext = SiemContext - > = Resolver; - export type ConnectionResolver< - R = Maybe, - Parent = ZeekEcsFields, - TContext = SiemContext - > = Resolver; - export type NoticeResolver< - R = Maybe, - Parent = ZeekEcsFields, - TContext = SiemContext - > = Resolver; - export type DnsResolver< - R = Maybe, - Parent = ZeekEcsFields, - TContext = SiemContext - > = Resolver; - export type HttpResolver< - R = Maybe, - Parent = ZeekEcsFields, - TContext = SiemContext - > = Resolver; - export type FilesResolver< - R = Maybe, - Parent = ZeekEcsFields, - TContext = SiemContext - > = Resolver; - export type SslResolver< - R = Maybe, - Parent = ZeekEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace UserEcsFieldsResolvers { - export interface Resolvers { - domain?: DomainResolver, TypeParent, TContext>; - - id?: IdResolver, TypeParent, TContext>; - - name?: NameResolver, TypeParent, TContext>; - - full_name?: FullNameResolver, TypeParent, TContext>; - - email?: EmailResolver, TypeParent, TContext>; - - hash?: HashResolver, TypeParent, TContext>; - - group?: GroupResolver, TypeParent, TContext>; - } - - export type DomainResolver< - R = Maybe, - Parent = UserEcsFields, - TContext = SiemContext - > = Resolver; - export type IdResolver< - R = Maybe, - Parent = UserEcsFields, - TContext = SiemContext - > = Resolver; - export type NameResolver< - R = Maybe, - Parent = UserEcsFields, - TContext = SiemContext - > = Resolver; - export type FullNameResolver< - R = Maybe, - Parent = UserEcsFields, - TContext = SiemContext - > = Resolver; - export type EmailResolver< - R = Maybe, - Parent = UserEcsFields, - TContext = SiemContext - > = Resolver; - export type HashResolver< - R = Maybe, - Parent = UserEcsFields, - TContext = SiemContext - > = Resolver; - export type GroupResolver< - R = Maybe, - Parent = UserEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace WinlogEcsFieldsResolvers { - export interface Resolvers { - event_id?: EventIdResolver, TypeParent, TContext>; - } - - export type EventIdResolver< - R = Maybe, - Parent = WinlogEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace NetworkEcsFieldResolvers { - export interface Resolvers { - bytes?: BytesResolver, TypeParent, TContext>; - - community_id?: CommunityIdResolver, TypeParent, TContext>; - - direction?: DirectionResolver, TypeParent, TContext>; - - packets?: PacketsResolver, TypeParent, TContext>; - - protocol?: ProtocolResolver, TypeParent, TContext>; - - transport?: TransportResolver, TypeParent, TContext>; - } - - export type BytesResolver< - R = Maybe, - Parent = NetworkEcsField, - TContext = SiemContext - > = Resolver; - export type CommunityIdResolver< - R = Maybe, - Parent = NetworkEcsField, - TContext = SiemContext - > = Resolver; - export type DirectionResolver< - R = Maybe, - Parent = NetworkEcsField, - TContext = SiemContext - > = Resolver; - export type PacketsResolver< - R = Maybe, - Parent = NetworkEcsField, - TContext = SiemContext - > = Resolver; - export type ProtocolResolver< - R = Maybe, - Parent = NetworkEcsField, - TContext = SiemContext - > = Resolver; - export type TransportResolver< - R = Maybe, - Parent = NetworkEcsField, - TContext = SiemContext - > = Resolver; -} - -export namespace PackageEcsFieldsResolvers { - export interface Resolvers { - arch?: ArchResolver, TypeParent, TContext>; - - entity_id?: EntityIdResolver, TypeParent, TContext>; - - name?: NameResolver, TypeParent, TContext>; - - size?: SizeResolver, TypeParent, TContext>; - - summary?: SummaryResolver, TypeParent, TContext>; - - version?: VersionResolver, TypeParent, TContext>; - } - - export type ArchResolver< - R = Maybe, - Parent = PackageEcsFields, - TContext = SiemContext - > = Resolver; - export type EntityIdResolver< - R = Maybe, - Parent = PackageEcsFields, - TContext = SiemContext - > = Resolver; - export type NameResolver< - R = Maybe, - Parent = PackageEcsFields, - TContext = SiemContext - > = Resolver; - export type SizeResolver< - R = Maybe, - Parent = PackageEcsFields, - TContext = SiemContext - > = Resolver; - export type SummaryResolver< - R = Maybe, - Parent = PackageEcsFields, - TContext = SiemContext - > = Resolver; - export type VersionResolver< - R = Maybe, - Parent = PackageEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace AuditEcsFieldsResolvers { - export interface Resolvers { - package?: PackageResolver, TypeParent, TContext>; - } - - export type PackageResolver< - R = Maybe, - Parent = AuditEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace SshEcsFieldsResolvers { - export interface Resolvers { - method?: MethodResolver, TypeParent, TContext>; - - signature?: SignatureResolver, TypeParent, TContext>; - } - - export type MethodResolver< - R = Maybe, - Parent = SshEcsFields, - TContext = SiemContext - > = Resolver; - export type SignatureResolver< - R = Maybe, - Parent = SshEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace AuthEcsFieldsResolvers { - export interface Resolvers { - ssh?: SshResolver, TypeParent, TContext>; - } - - export type SshResolver< - R = Maybe, - Parent = AuthEcsFields, - TContext = SiemContext - > = Resolver; -} - -export namespace SystemEcsFieldResolvers { - export interface Resolvers { - audit?: AuditResolver, TypeParent, TContext>; - - auth?: AuthResolver, TypeParent, TContext>; - } - - export type AuditResolver< - R = Maybe, - Parent = SystemEcsField, - TContext = SiemContext - > = Resolver; - export type AuthResolver< - R = Maybe, - Parent = SystemEcsField, - TContext = SiemContext - > = Resolver; -} - -export namespace RuleFieldResolvers { - export interface Resolvers { - id?: IdResolver, TypeParent, TContext>; - - rule_id?: RuleIdResolver, TypeParent, TContext>; - - false_positives?: FalsePositivesResolver; - - saved_id?: SavedIdResolver, TypeParent, TContext>; - - timeline_id?: TimelineIdResolver, TypeParent, TContext>; - - timeline_title?: TimelineTitleResolver, TypeParent, TContext>; - - max_signals?: MaxSignalsResolver, TypeParent, TContext>; - - risk_score?: RiskScoreResolver, TypeParent, TContext>; - - output_index?: OutputIndexResolver, TypeParent, TContext>; - - description?: DescriptionResolver, TypeParent, TContext>; - - from?: FromResolver, TypeParent, TContext>; - - immutable?: ImmutableResolver, TypeParent, TContext>; - - index?: IndexResolver, TypeParent, TContext>; - - interval?: IntervalResolver, TypeParent, TContext>; - - language?: LanguageResolver, TypeParent, TContext>; - - query?: QueryResolver, TypeParent, TContext>; - - references?: ReferencesResolver, TypeParent, TContext>; - - severity?: SeverityResolver, TypeParent, TContext>; - - tags?: TagsResolver, TypeParent, TContext>; - - threat?: ThreatResolver, TypeParent, TContext>; - - type?: TypeResolver, TypeParent, TContext>; - - size?: SizeResolver, TypeParent, TContext>; - - to?: ToResolver, TypeParent, TContext>; - - enabled?: EnabledResolver, TypeParent, TContext>; - - filters?: FiltersResolver, TypeParent, TContext>; - - created_at?: CreatedAtResolver, TypeParent, TContext>; - - updated_at?: UpdatedAtResolver, TypeParent, TContext>; - - created_by?: CreatedByResolver, TypeParent, TContext>; - - updated_by?: UpdatedByResolver, TypeParent, TContext>; - - version?: VersionResolver, TypeParent, TContext>; - - note?: NoteResolver, TypeParent, TContext>; - - threshold?: ThresholdResolver, TypeParent, TContext>; - - exceptions_list?: ExceptionsListResolver, TypeParent, TContext>; - } - - export type IdResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type RuleIdResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type FalsePositivesResolver< - R = string[], - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type SavedIdResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type TimelineIdResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type TimelineTitleResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type MaxSignalsResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type RiskScoreResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type OutputIndexResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type DescriptionResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type FromResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type ImmutableResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type IndexResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type IntervalResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type LanguageResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type QueryResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type ReferencesResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type SeverityResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type TagsResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type ThreatResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type TypeResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type SizeResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type ToResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type EnabledResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type FiltersResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type CreatedAtResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type UpdatedAtResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type CreatedByResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type UpdatedByResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type VersionResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type NoteResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type ThresholdResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; - export type ExceptionsListResolver< - R = Maybe, - Parent = RuleField, - TContext = SiemContext - > = Resolver; -} - -export namespace SignalFieldResolvers { - export interface Resolvers { - rule?: RuleResolver, TypeParent, TContext>; - - original_time?: OriginalTimeResolver, TypeParent, TContext>; - - status?: StatusResolver, TypeParent, TContext>; - } - - export type RuleResolver< - R = Maybe, - Parent = SignalField, - TContext = SiemContext - > = Resolver; - export type OriginalTimeResolver< - R = Maybe, - Parent = SignalField, - TContext = SiemContext - > = Resolver; - export type StatusResolver< - R = Maybe, - Parent = SignalField, - TContext = SiemContext - > = Resolver; -} - -export namespace RuleEcsFieldResolvers { - export interface Resolvers { - reference?: ReferenceResolver, TypeParent, TContext>; - } - - export type ReferenceResolver< - R = Maybe, - Parent = RuleEcsField, - TContext = SiemContext - > = Resolver; -} - -export namespace EcsResolvers { - export interface Resolvers { - _id?: _IdResolver; - - _index?: _IndexResolver, TypeParent, TContext>; - - agent?: AgentResolver, TypeParent, TContext>; - - auditd?: AuditdResolver, TypeParent, TContext>; - - destination?: DestinationResolver, TypeParent, TContext>; - - dns?: DnsResolver, TypeParent, TContext>; - - endgame?: EndgameResolver, TypeParent, TContext>; - - event?: EventResolver, TypeParent, TContext>; - - geo?: GeoResolver, TypeParent, TContext>; - - host?: HostResolver, TypeParent, TContext>; - - network?: NetworkResolver, TypeParent, TContext>; - - rule?: RuleResolver, TypeParent, TContext>; - - signal?: SignalResolver, TypeParent, TContext>; - - source?: SourceResolver, TypeParent, TContext>; - - suricata?: SuricataResolver, TypeParent, TContext>; - - tls?: TlsResolver, TypeParent, TContext>; - - zeek?: ZeekResolver, TypeParent, TContext>; - - http?: HttpResolver, TypeParent, TContext>; - - url?: UrlResolver, TypeParent, TContext>; - - timestamp?: TimestampResolver, TypeParent, TContext>; - - message?: MessageResolver, TypeParent, TContext>; - - user?: UserResolver, TypeParent, TContext>; - - winlog?: WinlogResolver, TypeParent, TContext>; - - process?: ProcessResolver, TypeParent, TContext>; - - file?: FileResolver, TypeParent, TContext>; - - system?: SystemResolver, TypeParent, TContext>; - } - - export type _IdResolver = Resolver< - R, - Parent, - TContext - >; - export type _IndexResolver, Parent = Ecs, TContext = SiemContext> = Resolver< - R, - Parent, - TContext - >; - export type AgentResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type AuditdResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type DestinationResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type DnsResolver, Parent = Ecs, TContext = SiemContext> = Resolver< - R, - Parent, - TContext - >; - export type EndgameResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type EventResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type GeoResolver, Parent = Ecs, TContext = SiemContext> = Resolver< - R, - Parent, - TContext - >; - export type HostResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type NetworkResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type RuleResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type SignalResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type SourceResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type SuricataResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type TlsResolver, Parent = Ecs, TContext = SiemContext> = Resolver< - R, - Parent, - TContext - >; - export type ZeekResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type HttpResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type UrlResolver, Parent = Ecs, TContext = SiemContext> = Resolver< - R, - Parent, - TContext - >; - export type TimestampResolver, Parent = Ecs, TContext = SiemContext> = Resolver< - R, - Parent, - TContext - >; - export type MessageResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type UserResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type WinlogResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type ProcessResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; - export type FileResolver, Parent = Ecs, TContext = SiemContext> = Resolver< - R, - Parent, - TContext - >; - export type SystemResolver< - R = Maybe, - Parent = Ecs, - TContext = SiemContext - > = Resolver; -} - -export namespace EcsEdgesResolvers { - export interface Resolvers { - node?: NodeResolver; - - cursor?: CursorResolver; - } - - export type NodeResolver = Resolver< - R, - Parent, - TContext - >; - export type CursorResolver = Resolver< - R, - Parent, - TContext - >; -} - -export namespace CursorTypeResolvers { - export interface Resolvers { - value?: ValueResolver, TypeParent, TContext>; - - tiebreaker?: TiebreakerResolver, TypeParent, TContext>; - } - - export type ValueResolver< - R = Maybe, - Parent = CursorType, - TContext = SiemContext - > = Resolver; - export type TiebreakerResolver< - R = Maybe, - Parent = CursorType, - TContext = SiemContext - > = Resolver; -} -/** A descriptor of a field in an index */ -export namespace IndexFieldResolvers { - export interface Resolvers { - /** Where the field belong */ - category?: CategoryResolver; - /** Example of field's value */ - example?: ExampleResolver, TypeParent, TContext>; - /** whether the field's belong to an alias index */ - indexes?: IndexesResolver<(Maybe)[], TypeParent, TContext>; - /** The name of the field */ - name?: NameResolver; - /** The type of the field's values as recognized by Kibana */ - type?: TypeResolver; - /** Whether the field's values can be efficiently searched for */ - searchable?: SearchableResolver; - /** Whether the field's values can be aggregated */ - aggregatable?: AggregatableResolver; - /** Description of the field */ - description?: DescriptionResolver, TypeParent, TContext>; - - format?: FormatResolver, TypeParent, TContext>; - /** the elastic type as mapped in the index */ - esTypes?: EsTypesResolver, TypeParent, TContext>; - - subType?: SubTypeResolver, TypeParent, TContext>; - } - - export type CategoryResolver = Resolver< - R, - Parent, - TContext - >; - export type ExampleResolver< - R = Maybe, - Parent = IndexField, - TContext = SiemContext - > = Resolver; - export type IndexesResolver< - R = (Maybe)[], - Parent = IndexField, - TContext = SiemContext - > = Resolver; - export type NameResolver = Resolver< - R, - Parent, - TContext - >; - export type TypeResolver = Resolver< - R, - Parent, - TContext - >; - export type SearchableResolver< - R = boolean, - Parent = IndexField, - TContext = SiemContext - > = Resolver; - export type AggregatableResolver< - R = boolean, - Parent = IndexField, - TContext = SiemContext - > = Resolver; - export type DescriptionResolver< - R = Maybe, - Parent = IndexField, - TContext = SiemContext - > = Resolver; - export type FormatResolver< - R = Maybe, - Parent = IndexField, - TContext = SiemContext - > = Resolver; - export type EsTypesResolver< - R = Maybe, - Parent = IndexField, - TContext = SiemContext - > = Resolver; - export type SubTypeResolver< - R = Maybe, - Parent = IndexField, - TContext = SiemContext - > = Resolver; -} - -export namespace PageInfoResolvers { - export interface Resolvers { - endCursor?: EndCursorResolver, TypeParent, TContext>; - - hasNextPage?: HasNextPageResolver, TypeParent, TContext>; - } - - export type EndCursorResolver< - R = Maybe, - Parent = PageInfo, - TContext = SiemContext - > = Resolver; - export type HasNextPageResolver< - R = Maybe, - Parent = PageInfo, - TContext = SiemContext - > = Resolver; -} - -export namespace InspectResolvers { - export interface Resolvers { - dsl?: DslResolver; - - response?: ResponseResolver; - } - - export type DslResolver = Resolver< - R, - Parent, - TContext - >; - export type ResponseResolver = Resolver< - R, - Parent, - TContext - >; -} - -export namespace PageInfoPaginatedResolvers { - export interface Resolvers { - activePage?: ActivePageResolver; - - fakeTotalCount?: FakeTotalCountResolver; - - showMorePagesIndicator?: ShowMorePagesIndicatorResolver; - } - - export type ActivePageResolver< - R = number, - Parent = PageInfoPaginated, - TContext = SiemContext - > = Resolver; - export type FakeTotalCountResolver< - R = number, - Parent = PageInfoPaginated, - TContext = SiemContext - > = Resolver; - export type ShowMorePagesIndicatorResolver< - R = boolean, - Parent = PageInfoPaginated, - TContext = SiemContext - > = Resolver; -} - -/** Directs the executor to skip this field or fragment when the `if` argument is true. */ -export type SkipDirectiveResolver = DirectiveResolverFn< - Result, - SkipDirectiveArgs, - SiemContext ->; -export interface SkipDirectiveArgs { - /** Skipped when true. */ - if: boolean; -} - -/** Directs the executor to include this field or fragment only when the `if` argument is true. */ -export type IncludeDirectiveResolver = DirectiveResolverFn< - Result, - IncludeDirectiveArgs, - SiemContext ->; -export interface IncludeDirectiveArgs { - /** Included when true. */ - if: boolean; -} - -/** Marks an element of a GraphQL schema as no longer supported. */ -export type DeprecatedDirectiveResolver = DirectiveResolverFn< - Result, - DeprecatedDirectiveArgs, - SiemContext ->; -export interface DeprecatedDirectiveArgs { - /** Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/). */ - reason?: string; -} - -export interface ToAnyScalarConfig extends GraphQLScalarTypeConfig { - name: 'ToAny'; -} -export interface ToStringArrayScalarConfig extends GraphQLScalarTypeConfig { - name: 'ToStringArray'; -} -export interface ToStringArrayNoNullableScalarConfig - extends GraphQLScalarTypeConfig { - name: 'ToStringArrayNoNullable'; -} -export interface ToDateArrayScalarConfig extends GraphQLScalarTypeConfig { - name: 'ToDateArray'; -} -export interface ToNumberArrayScalarConfig extends GraphQLScalarTypeConfig { - name: 'ToNumberArray'; -} -export interface ToBooleanArrayScalarConfig extends GraphQLScalarTypeConfig { - name: 'ToBooleanArray'; -} -export interface DateScalarConfig extends GraphQLScalarTypeConfig { - name: 'Date'; -} -export interface ToIFieldSubTypeNonNullableScalarConfig - extends GraphQLScalarTypeConfig { - name: 'ToIFieldSubTypeNonNullable'; -} - -export type IResolvers = { - Query?: QueryResolvers.Resolvers; - NoteResult?: NoteResultResolvers.Resolvers; - ResponseNotes?: ResponseNotesResolvers.Resolvers; - PinnedEvent?: PinnedEventResolvers.Resolvers; - Source?: SourceResolvers.Resolvers; - SourceConfiguration?: SourceConfigurationResolvers.Resolvers; - SourceFields?: SourceFieldsResolvers.Resolvers; - SourceStatus?: SourceStatusResolvers.Resolvers; - TimelineResult?: TimelineResultResolvers.Resolvers; - ColumnHeaderResult?: ColumnHeaderResultResolvers.Resolvers; - DataProviderResult?: DataProviderResultResolvers.Resolvers; - QueryMatchResult?: QueryMatchResultResolvers.Resolvers; - DateRangePickerResult?: DateRangePickerResultResolvers.Resolvers; - EqlOptionsResult?: EqlOptionsResultResolvers.Resolvers; - FavoriteTimelineResult?: FavoriteTimelineResultResolvers.Resolvers; - FilterTimelineResult?: FilterTimelineResultResolvers.Resolvers; - FilterMetaTimelineResult?: FilterMetaTimelineResultResolvers.Resolvers; - SerializedFilterQueryResult?: SerializedFilterQueryResultResolvers.Resolvers; - SerializedKueryQueryResult?: SerializedKueryQueryResultResolvers.Resolvers; - KueryFilterQueryResult?: KueryFilterQueryResultResolvers.Resolvers; - ResponseTimelines?: ResponseTimelinesResolvers.Resolvers; - Mutation?: MutationResolvers.Resolvers; - ResponseNote?: ResponseNoteResolvers.Resolvers; - ResponseTimeline?: ResponseTimelineResolvers.Resolvers; - ResponseFavoriteTimeline?: ResponseFavoriteTimelineResolvers.Resolvers; - EventEcsFields?: EventEcsFieldsResolvers.Resolvers; - Location?: LocationResolvers.Resolvers; - GeoEcsFields?: GeoEcsFieldsResolvers.Resolvers; - PrimarySecondary?: PrimarySecondaryResolvers.Resolvers; - Summary?: SummaryResolvers.Resolvers; - AgentEcsField?: AgentEcsFieldResolvers.Resolvers; - AuditdData?: AuditdDataResolvers.Resolvers; - AuditdEcsFields?: AuditdEcsFieldsResolvers.Resolvers; - OsEcsFields?: OsEcsFieldsResolvers.Resolvers; - HostEcsFields?: HostEcsFieldsResolvers.Resolvers; - Thread?: ThreadResolvers.Resolvers; - ProcessHashData?: ProcessHashDataResolvers.Resolvers; - ProcessEcsFields?: ProcessEcsFieldsResolvers.Resolvers; - SourceEcsFields?: SourceEcsFieldsResolvers.Resolvers; - DestinationEcsFields?: DestinationEcsFieldsResolvers.Resolvers; - DnsQuestionData?: DnsQuestionDataResolvers.Resolvers; - DnsEcsFields?: DnsEcsFieldsResolvers.Resolvers; - EndgameEcsFields?: EndgameEcsFieldsResolvers.Resolvers; - SuricataAlertData?: SuricataAlertDataResolvers.Resolvers; - SuricataEveData?: SuricataEveDataResolvers.Resolvers; - SuricataEcsFields?: SuricataEcsFieldsResolvers.Resolvers; - TlsJa3Data?: TlsJa3DataResolvers.Resolvers; - FingerprintData?: FingerprintDataResolvers.Resolvers; - TlsClientCertificateData?: TlsClientCertificateDataResolvers.Resolvers; - TlsServerCertificateData?: TlsServerCertificateDataResolvers.Resolvers; - TlsFingerprintsData?: TlsFingerprintsDataResolvers.Resolvers; - TlsEcsFields?: TlsEcsFieldsResolvers.Resolvers; - ZeekConnectionData?: ZeekConnectionDataResolvers.Resolvers; - ZeekNoticeData?: ZeekNoticeDataResolvers.Resolvers; - ZeekDnsData?: ZeekDnsDataResolvers.Resolvers; - FileFields?: FileFieldsResolvers.Resolvers; - ZeekHttpData?: ZeekHttpDataResolvers.Resolvers; - HttpBodyData?: HttpBodyDataResolvers.Resolvers; - HttpRequestData?: HttpRequestDataResolvers.Resolvers; - HttpResponseData?: HttpResponseDataResolvers.Resolvers; - HttpEcsFields?: HttpEcsFieldsResolvers.Resolvers; - UrlEcsFields?: UrlEcsFieldsResolvers.Resolvers; - ZeekFileData?: ZeekFileDataResolvers.Resolvers; - ZeekSslData?: ZeekSslDataResolvers.Resolvers; - ZeekEcsFields?: ZeekEcsFieldsResolvers.Resolvers; - UserEcsFields?: UserEcsFieldsResolvers.Resolvers; - WinlogEcsFields?: WinlogEcsFieldsResolvers.Resolvers; - NetworkEcsField?: NetworkEcsFieldResolvers.Resolvers; - PackageEcsFields?: PackageEcsFieldsResolvers.Resolvers; - AuditEcsFields?: AuditEcsFieldsResolvers.Resolvers; - SshEcsFields?: SshEcsFieldsResolvers.Resolvers; - AuthEcsFields?: AuthEcsFieldsResolvers.Resolvers; - SystemEcsField?: SystemEcsFieldResolvers.Resolvers; - RuleField?: RuleFieldResolvers.Resolvers; - SignalField?: SignalFieldResolvers.Resolvers; - RuleEcsField?: RuleEcsFieldResolvers.Resolvers; - Ecs?: EcsResolvers.Resolvers; - EcsEdges?: EcsEdgesResolvers.Resolvers; - CursorType?: CursorTypeResolvers.Resolvers; - IndexField?: IndexFieldResolvers.Resolvers; - PageInfo?: PageInfoResolvers.Resolvers; - Inspect?: InspectResolvers.Resolvers; - PageInfoPaginated?: PageInfoPaginatedResolvers.Resolvers; - ToAny?: GraphQLScalarType; - ToStringArray?: GraphQLScalarType; - ToStringArrayNoNullable?: GraphQLScalarType; - ToDateArray?: GraphQLScalarType; - ToNumberArray?: GraphQLScalarType; - ToBooleanArray?: GraphQLScalarType; - Date?: GraphQLScalarType; - ToIFieldSubTypeNonNullable?: GraphQLScalarType; -} & { [typeName: string]: never }; - -export type IDirectiveResolvers = { - skip?: SkipDirectiveResolver; - include?: IncludeDirectiveResolver; - deprecated?: DeprecatedDirectiveResolver; -} & { [directiveName: string]: never }; diff --git a/x-pack/plugins/security_solution/server/init_server.ts b/x-pack/plugins/security_solution/server/init_server.ts deleted file mode 100644 index d2810bf71f8ae..0000000000000 --- a/x-pack/plugins/security_solution/server/init_server.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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 { IResolvers, makeExecutableSchema } from 'graphql-tools'; - -import { schemas } from './graphql'; -import { createScalarToStringArrayValueResolvers } from './graphql/ecs'; -import { createNoteResolvers } from './graphql/note'; -import { createPinnedEventResolvers } from './graphql/pinned_event'; -import { createScalarDateResolvers } from './graphql/scalar_date'; -import { createScalarToAnyValueResolvers } from './graphql/scalar_to_any'; -import { createScalarToBooleanArrayValueResolvers } from './graphql/scalar_to_boolean_array'; -import { createScalarToDateArrayValueResolvers } from './graphql/scalar_to_date_array'; -import { createScalarToNumberArrayValueResolvers } from './graphql/scalar_to_number_array'; -import { createSourceStatusResolvers } from './graphql/source_status'; -import { createSourcesResolvers } from './graphql/sources'; -import { createTimelineResolvers } from './graphql/timeline'; -import { AppBackendLibs } from './lib/types'; - -export const initServer = (libs: AppBackendLibs) => { - const schema = makeExecutableSchema({ - resolvers: [ - createNoteResolvers(libs) as IResolvers, - createPinnedEventResolvers(libs) as IResolvers, - createSourcesResolvers(libs) as IResolvers, - createScalarToStringArrayValueResolvers() as IResolvers, - createScalarDateResolvers() as IResolvers, - createScalarToDateArrayValueResolvers() as IResolvers, - createScalarToAnyValueResolvers() as IResolvers, - createScalarToBooleanArrayValueResolvers() as IResolvers, - createScalarToNumberArrayValueResolvers() as IResolvers, - createSourcesResolvers(libs) as IResolvers, - createSourceStatusResolvers(libs) as IResolvers, - createTimelineResolvers(libs) as IResolvers, - ], - typeDefs: schemas, - }); - - libs.framework.registerGraphQLEndpoint('/api/solutions/security/graphql', schema); -}; diff --git a/x-pack/plugins/security_solution/server/lib/compose/kibana.ts b/x-pack/plugins/security_solution/server/lib/compose/kibana.ts index 01318c87f8b3f..9be922ecf8db2 100644 --- a/x-pack/plugins/security_solution/server/lib/compose/kibana.ts +++ b/x-pack/plugins/security_solution/server/lib/compose/kibana.ts @@ -23,7 +23,7 @@ export function compose( plugins: SetupPlugins, endpointContext: EndpointAppContext ): AppBackendLibs { - const framework = new KibanaBackendFrameworkAdapter(core, plugins); + const framework = new KibanaBackendFrameworkAdapter(); const sources = new Sources(new ConfigurationSourcesAdapter()); const sourceStatus = new SourceStatus(new ElasticsearchSourceStatusAdapter(framework)); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_timeline_by_timeline_id.sh b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_timeline_by_timeline_id.sh index 6271fd69cca5e..844ff61c4cd89 100755 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_timeline_by_timeline_id.sh +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_timeline_by_timeline_id.sh @@ -17,6 +17,6 @@ curl -s -k \ -H "Content-Type: application/json" \ -H 'kbn-xsrf: 123' \ -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ - -X POST "${KIBANA_URL}${SPACE_URL}/api/solutions/security/graphql" \ - -d '{"operationName":"DeleteTimelineMutation","variables":{"id":["'$1'"]},"query":"mutation DeleteTimelineMutation($id: [ID!]!) {\n deleteTimeline(id: $id)\n}\n"}' + -X DELETE "${KIBANA_URL}${SPACE_URL}/api/timeline" \ + -d '{"savedObjectIds": ["'$1'"]}' diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/find_timeline_by_filter.sh b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/find_timeline_by_filter.sh index 721f3d888727e..d3b67120772f4 100755 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/find_timeline_by_filter.sh +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/find_timeline_by_filter.sh @@ -15,7 +15,7 @@ STATUS=${1:-active} TIMELINE_TYPE=${2:-default} # Example get all timelines: -# sh ./timelines/find_timeline_by_filter.sh active +# sh ./timelines/find_timeline_by_filter.sh active default # Example get all prepackaged timeline templates: # ./timelines/find_timeline_by_filter.sh immutable template @@ -27,8 +27,7 @@ curl -s -k \ -H "Content-Type: application/json" \ -H 'kbn-xsrf: 123' \ -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ - -X POST "${KIBANA_URL}${SPACE_URL}/api/solutions/security/graphql" \ - -d '{"operationName":"GetAllTimeline","variables":{"onlyUserFavorite":false,"pageInfo":{"pageIndex":1,"pageSize":10},"search":"","sort":{"sortField":"updated","sortOrder":"desc"},"status":"'$STATUS'","timelineType":"'$TIMELINE_TYPE'"},"query":"query GetAllTimeline($pageInfo: PageInfoTimeline!, $search: String, $sort: SortTimeline, $onlyUserFavorite: Boolean, $timelineType: TimelineType, $status: TimelineStatus) {\n getAllTimeline(pageInfo: $pageInfo, search: $search, sort: $sort, onlyUserFavorite: $onlyUserFavorite, timelineType: $timelineType, status: $status) {\n totalCount\n defaultTimelineCount\n templateTimelineCount\n elasticTemplateTimelineCount\n customTemplateTimelineCount\n favoriteCount\n timeline {\n savedObjectId\n description\n favorite {\n fullName\n userName\n favoriteDate\n __typename\n }\n eventIdToNoteIds {\n eventId\n note\n timelineId\n noteId\n created\n createdBy\n timelineVersion\n updated\n updatedBy\n version\n __typename\n }\n notes {\n eventId\n note\n timelineId\n timelineVersion\n noteId\n created\n createdBy\n updated\n updatedBy\n version\n __typename\n }\n noteIds\n pinnedEventIds\n status\n title\n timelineType\n templateTimelineId\n templateTimelineVersion\n created\n createdBy\n updated\n updatedBy\n version\n __typename\n }\n __typename\n }\n}\n"}' \ + -X GET "${KIBANA_URL}${SPACE_URL}/api/timelines?only_user_favorite=false&status=$STATUS&timeline_type=$TIMELINE_TYPE" \ | jq . diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_all_timelines.sh b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_all_timelines.sh index fdf3488ab7c9d..d07f47db6b3a4 100755 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_all_timelines.sh +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_all_timelines.sh @@ -16,5 +16,5 @@ curl -s -k \ -H "Content-Type: application/json" \ -H 'kbn-xsrf: 123' \ -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ - -X GET "${KIBANA_URL}${SPACE_URL}/api/timeline" \ + -X GET "${KIBANA_URL}${SPACE_URL}/api/timelines" \ | jq . diff --git a/x-pack/plugins/security_solution/server/lib/framework/kibana_framework_adapter.ts b/x-pack/plugins/security_solution/server/lib/framework/kibana_framework_adapter.ts index 6306b26161b38..56c1c802fdd68 100644 --- a/x-pack/plugins/security_solution/server/lib/framework/kibana_framework_adapter.ts +++ b/x-pack/plugins/security_solution/server/lib/framework/kibana_framework_adapter.ts @@ -5,21 +5,10 @@ * 2.0. */ -import { GraphQLSchema } from 'graphql'; -import { runHttpQuery } from 'apollo-server-core'; -import { schema as configSchema } from '@kbn/config-schema'; -import type { - CoreSetup, - KibanaResponseFactory, - KibanaRequest, -} from '../../../../../../src/core/server'; +import type { KibanaRequest } from '../../../../../../src/core/server'; import { IndexPatternsFetcher, UI_SETTINGS } from '../../../../../../src/plugins/data/server'; import { AuthenticatedUser } from '../../../../security/common/model'; -import { SetupPlugins } from '../../plugin'; -import type { - SecuritySolutionRequestHandlerContext, - SecuritySolutionPluginRouter, -} from '../../types'; +import type { SecuritySolutionRequestHandlerContext } from '../../types'; import { FrameworkAdapter, @@ -27,17 +16,8 @@ import { FrameworkRequest, internalFrameworkRequest, } from './types'; -import { buildSiemResponse } from '../detection_engine/routes/utils'; export class KibanaBackendFrameworkAdapter implements FrameworkAdapter { - private router: SecuritySolutionPluginRouter; - private security: SetupPlugins['security']; - - constructor(core: CoreSetup, plugins: SetupPlugins) { - this.router = core.http.createRouter(); - this.security = plugins.security; - } - public async callWithRequest( req: FrameworkRequest, endpoint: string, @@ -60,67 +40,6 @@ export class KibanaBackendFrameworkAdapter implements FrameworkAdapter { }); } - public registerGraphQLEndpoint(routePath: string, schema: GraphQLSchema): void { - this.router.post( - { - path: routePath, - validate: { body: configSchema.object({}, { unknowns: 'allow' }) }, - options: { - tags: ['access:securitySolution'], - }, - }, - async (context, request, response) => { - try { - const user = await this.getCurrentUserInfo(request); - const gqlResponse = await runHttpQuery([request], { - method: 'POST', - options: (req: KibanaRequest) => ({ - context: { req: wrapRequest(req, context, user) }, - schema, - }), - query: request.body, - }); - - return response.ok({ - body: gqlResponse, - headers: { - 'content-type': 'application/json', - }, - }); - } catch (error) { - return this.handleError(error, response); - } - } - ); - } - - private async getCurrentUserInfo(request: KibanaRequest): Promise { - try { - const user = (await this.security?.authc.getCurrentUser(request)) ?? null; - return user; - } catch { - return null; - } - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - private handleError(error: any, response: KibanaResponseFactory) { - const siemResponse = buildSiemResponse(response); - - if (error.name === 'HttpQueryError') { - return siemResponse.error({ - statusCode: error.statusCode, - headers: error.headers, - body: error.message, - }); - } - - return siemResponse.error({ - statusCode: 500, - body: error.message, - }); - } - public getIndexPatternsService(request: FrameworkRequest): FrameworkIndexPatternsService { return new IndexPatternsFetcher(request.context.core.elasticsearch.client.asCurrentUser, true); } diff --git a/x-pack/plugins/security_solution/server/lib/framework/types.ts b/x-pack/plugins/security_solution/server/lib/framework/types.ts index b3f55a7a0ffa2..34012f8f15d16 100644 --- a/x-pack/plugins/security_solution/server/lib/framework/types.ts +++ b/x-pack/plugins/security_solution/server/lib/framework/types.ts @@ -6,27 +6,25 @@ */ import { IndicesGetMappingParams } from 'elasticsearch'; -import { GraphQLSchema } from 'graphql'; import { KibanaRequest } from '../../../../../../src/core/server'; import { AuthenticatedUser } from '../../../../security/common/model'; import { ESQuery } from '../../../common/typed_json'; import type { SecuritySolutionRequestHandlerContext } from '../../types'; import { + DocValueFieldsInput, PaginationInput, PaginationInputPaginated, SortField, - SourceConfiguration, TimerangeInput, - DocValueFieldsInput, -} from '../../graphql/types'; +} from '../../../common/search_strategy'; +import { SourceConfiguration } from '../sources'; export * from '../../utils/typed_resolvers'; export const internalFrameworkRequest = Symbol('internalFrameworkRequest'); export interface FrameworkAdapter { - registerGraphQLEndpoint(routePath: string, schema: GraphQLSchema): void; callWithRequest( req: FrameworkRequest, method: 'search', diff --git a/x-pack/plugins/security_solution/server/lib/timeline/__mocks__/request_responses.ts b/x-pack/plugins/security_solution/server/lib/timeline/__mocks__/request_responses.ts index 2cdcb92baed08..cda97954563f3 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/__mocks__/request_responses.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/__mocks__/request_responses.ts @@ -19,11 +19,7 @@ import { SavedTimeline, TimelineType, TimelineStatus } from '../../../../common/ import { requestMock } from '../../detection_engine/routes/__mocks__'; -import { - patchTimelineSchema, - createTimelineSchema, - GetTimelineByIdSchemaQuery, -} from '../schemas/timelines'; +import { patchTimelineSchema, createTimelineSchema, GetTimelineQuery } from '../schemas/timelines'; import { getReadables } from '../utils/common'; @@ -185,7 +181,7 @@ export const cleanDraftTimelinesRequest = (timelineType: TimelineType) => }, }); -export const getTimelineRequest = (query?: GetTimelineByIdSchemaQuery) => +export const getTimelineRequest = (query?: GetTimelineQuery) => requestMock.create({ method: 'get', path: TIMELINE_URL, diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/README.md b/x-pack/plugins/security_solution/server/lib/timeline/routes/README.md index ee57d5bb3d031..defbf8be8b7c3 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/README.md +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/README.md @@ -619,5 +619,817 @@ kbn-version: 8.0.0 } ``` +## Get timelines / timeline templates api + +#### GET /api/timelines + + +##### Authorization + +Type: Basic Auth +username: Your Kibana username +password: Your Kibana password + + +##### Request header + +``` +Content-Type: application/json +kbn-version: 8.0.0 +``` + +##### Query params + +optional: +only_user_favorite={boolean} +page_index={number} +page_size={number} +search={string} +sort_field={title|description|updated|created} +sort_order={asc|desc} +status={active|draft|immutable} +timeline_type={default|template} + +##### example +api/timelines?page_size=10&page_index=1&sort_field=updated&sort_order=desc&timeline_type=default + +##### Response + +```json +{ + "totalCount": 2, + "timeline": [ + { + "savedObjectId": "de9a3620-8e23-11eb-ad8a-a192243e45e8", + "version": "WzM1NzQ4NywzXQ==", + "columns": [ + { + "columnHeaderType": "not-filtered", + "id": "@timestamp", + "type": "number" + }, + { + "columnHeaderType": "not-filtered", + "id": "message" + }, + { + "columnHeaderType": "not-filtered", + "id": "event.category" + }, + { + "columnHeaderType": "not-filtered", + "id": "event.action" + }, + { + "columnHeaderType": "not-filtered", + "id": "host.name" + }, + { + "columnHeaderType": "not-filtered", + "id": "source.ip" + }, + { + "columnHeaderType": "not-filtered", + "id": "destination.ip" + }, + { + "columnHeaderType": "not-filtered", + "id": "user.name" + } + ], + "dataProviders": [ + { + "excluded": false, + "and": [], + "kqlQuery": "", + "name": "", + "queryMatch": { + "field": "host.name", + "value": "", + "operator": ":*" + }, + "id": "timeline-1-db9f4fc8-9420-420e-8e67-b12dd36691f6", + "type": "default", + "enabled": true + } + ], + "description": "", + "eqlOptions": { + "tiebreakerField": "", + "size": 100, + "query": "", + "eventCategoryField": "event.category", + "timestampField": "@timestamp" + }, + "eventType": "all", + "excludedRowRendererIds": [], + "filters": [], + "kqlMode": "filter", + "kqlQuery": { + "filterQuery": null + }, + "indexNames": [ + ".siem-signals-angelachuang-default", + "auditbeat-*", + "endgame-*", + "filebeat-*", + "logs-*", + "packetbeat-*", + "winlogbeat-*" + ], + "title": "timeline - Duplicate", + "timelineType": "default", + "templateTimelineVersion": null, + "templateTimelineId": null, + "dateRange": { + "start": "2021-03-25T05:38:55.593Z", + "end": "2021-03-26T15:59:59.999Z" + }, + "savedQueryId": null, + "sort": [ + { + "columnType": "number", + "sortDirection": "desc", + "columnId": "@timestamp" + } + ], + "status": "active", + "created": 1616757027458, + "createdBy": "angela", + "updated": 1616758738320, + "updatedBy": "angela", + "favorite": [], + "eventIdToNoteIds": [ + { + "noteId": "e6f3a9a0-8e23-11eb-ad8a-a192243e45e8", + "version": "WzM1NzQ4MywzXQ==", + "eventId": "QN84bngBYJMSg9tnAi1V", + "note": "note!", + "timelineId": "de9a3620-8e23-11eb-ad8a-a192243e45e8", + "created": 1616757041466, + "createdBy": "angela", + "updated": 1616757041466, + "updatedBy": "angela" + } + ], + "noteIds": [ + "221524f0-8e24-11eb-ad8a-a192243e45e8" + ], + "notes": [ + { + "noteId": "e6f3a9a0-8e23-11eb-ad8a-a192243e45e8", + "version": "WzM1NzQ4MywzXQ==", + "eventId": "QN84bngBYJMSg9tnAi1V", + "note": "note!", + "timelineId": "de9a3620-8e23-11eb-ad8a-a192243e45e8", + "created": 1616757041466, + "createdBy": "angela", + "updated": 1616757041466, + "updatedBy": "angela" + }, + { + "noteId": "221524f0-8e24-11eb-ad8a-a192243e45e8", + "version": "WzM1NzQ4NiwzXQ==", + "note": "global note!", + "timelineId": "de9a3620-8e23-11eb-ad8a-a192243e45e8", + "created": 1616757140671, + "createdBy": "angela", + "updated": 1616757140671, + "updatedBy": "angela" + } + ], + "pinnedEventIds": [ + "QN84bngBYJMSg9tnAi1V", + "P984bngBYJMSg9tnAi1V" + ], + "pinnedEventsSaveObject": [ + { + "pinnedEventId": "e85339a0-8e23-11eb-ad8a-a192243e45e8", + "version": "WzM1NzQ4NCwzXQ==", + "eventId": "QN84bngBYJMSg9tnAi1V", + "timelineId": "de9a3620-8e23-11eb-ad8a-a192243e45e8", + "created": 1616757043770, + "createdBy": "angela", + "updated": 1616757043770, + "updatedBy": "angela" + }, + { + "pinnedEventId": "2945cfe0-8e24-11eb-ad8a-a192243e45e8", + "version": "WzM1NzQ4NSwzXQ==", + "eventId": "P984bngBYJMSg9tnAi1V", + "timelineId": "de9a3620-8e23-11eb-ad8a-a192243e45e8", + "created": 1616757152734, + "createdBy": "angela", + "updated": 1616757152734, + "updatedBy": "angela" + } + ] + }, + { + "savedObjectId": "48870270-8e1f-11eb-9cbd-7f6324a02fb7", + "version": "WzM1NzQ4MiwzXQ==", + "columns": [ + { + "columnHeaderType": "not-filtered", + "id": "@timestamp", + "type": "number" + }, + { + "columnHeaderType": "not-filtered", + "id": "message" + }, + { + "columnHeaderType": "not-filtered", + "id": "event.category" + }, + { + "columnHeaderType": "not-filtered", + "id": "event.action" + }, + { + "columnHeaderType": "not-filtered", + "id": "host.name" + }, + { + "columnHeaderType": "not-filtered", + "id": "source.ip" + }, + { + "columnHeaderType": "not-filtered", + "id": "destination.ip" + }, + { + "columnHeaderType": "not-filtered", + "id": "user.name" + } + ], + "dataProviders": [ + { + "excluded": false, + "and": [], + "kqlQuery": "", + "name": "", + "queryMatch": { + "field": "host.name", + "value": "", + "operator": ":*" + }, + "id": "timeline-1-db9f4fc8-9420-420e-8e67-b12dd36691f6", + "type": "default", + "enabled": true + } + ], + "description": "", + "eventType": "all", + "filters": [], + "kqlMode": "filter", + "timelineType": "default", + "kqlQuery": { + "filterQuery": null + }, + "title": "timeline", + "sort": [ + { + "columnType": "number", + "sortDirection": "desc", + "columnId": "@timestamp" + } + ], + "status": "active", + "created": 1616755057686, + "createdBy": "angela", + "updated": 1616756755376, + "updatedBy": "angela", + "templateTimelineId": null, + "templateTimelineVersion": null, + "excludedRowRendererIds": [], + "dateRange": { + "start": "2021-03-25T16:00:00.000Z", + "end": "2021-03-26T15:59:59.999Z" + }, + "indexNames": [ + "auditbeat-*", + "endgame-*", + "filebeat-*", + "logs-*", + "packetbeat-*", + "winlogbeat-*", + ".siem-signals-angelachuang-default" + ], + "eqlOptions": { + "tiebreakerField": "", + "size": 100, + "query": "", + "eventCategoryField": "event.category", + "timestampField": "@timestamp" + }, + "savedQueryId": null, + "favorite": [ + { + "favoriteDate": 1616756755376, + "keySearch": "YW5nZWxh", + "fullName": "Angela", + "userName": "angela" + } + ], + "eventIdToNoteIds": [], + "noteIds": [], + "notes": [], + "pinnedEventIds": [], + "pinnedEventsSaveObject": [] + } + ], + "defaultTimelineCount": 2, + "templateTimelineCount": 4, + "elasticTemplateTimelineCount": 3, + "customTemplateTimelineCount": 1, + "favoriteCount": 1 +} +``` + +## Get timeline api + +#### GET /api/id?id={savedObjectId} + +##### Authorization + +Type: Basic Auth +username: Your Kibana username +password: Your Kibana password + + +##### Request header + +``` +Content-Type: application/json +kbn-version: 8.0.0 +``` + +##### Response +```json +{ + "data": { + "getOneTimeline": { + "savedObjectId": "48870270-8e1f-11eb-9cbd-7f6324a02fb7", + "version": "WzM1NzQ4MiwzXQ==", + "columns": [ + { + "columnHeaderType": "not-filtered", + "id": "@timestamp", + "type": "number" + }, + { + "columnHeaderType": "not-filtered", + "id": "message" + }, + { + "columnHeaderType": "not-filtered", + "id": "event.category" + }, + { + "columnHeaderType": "not-filtered", + "id": "event.action" + }, + { + "columnHeaderType": "not-filtered", + "id": "host.name" + }, + { + "columnHeaderType": "not-filtered", + "id": "source.ip" + }, + { + "columnHeaderType": "not-filtered", + "id": "destination.ip" + }, + { + "columnHeaderType": "not-filtered", + "id": "user.name" + } + ], + "dataProviders": [ + { + "excluded": false, + "and": [], + "kqlQuery": "", + "name": "", + "queryMatch": { + "field": "host.name", + "value": "", + "operator": ":*" + }, + "id": "timeline-1-db9f4fc8-9420-420e-8e67-b12dd36691f6", + "type": "default", + "enabled": true + } + ], + "description": "", + "eventType": "all", + "filters": [], + "kqlMode": "filter", + "timelineType": "default", + "kqlQuery": { + "filterQuery": null + }, + "title": "timeline", + "sort": [ + { + "columnType": "number", + "sortDirection": "desc", + "columnId": "@timestamp" + } + ], + "status": "active", + "created": 1616755057686, + "createdBy": "angela", + "updated": 1616756755376, + "updatedBy": "angela", + "templateTimelineId": null, + "templateTimelineVersion": null, + "excludedRowRendererIds": [], + "dateRange": { + "start": "2021-03-25T16:00:00.000Z", + "end": "2021-03-26T15:59:59.999Z" + }, + "indexNames": [ + "auditbeat-*", + "endgame-*", + "filebeat-*", + "logs-*", + "packetbeat-*", + "winlogbeat-*", + ".siem-signals-angelachuang-default" + ], + "eqlOptions": { + "tiebreakerField": "", + "size": 100, + "query": "", + "eventCategoryField": "event.category", + "timestampField": "@timestamp" + }, + "savedQueryId": null, + "favorite": [ + { + "favoriteDate": 1616756755376, + "keySearch": "YW5nZWxh", + "fullName": "Angela", + "userName": "angela" + } + ], + "eventIdToNoteIds": [], + "noteIds": [], + "notes": [], + "pinnedEventIds": [], + "pinnedEventsSaveObject": [] + } + } +} +``` + + +## Get timeline template api + +#### GET /api/timeline?template_timeline_id={templateTimelineId} + +##### Authorization + +Type: Basic Auth +username: Your Kibana username +password: Your Kibana password + + +##### Request header + +``` +Content-Type: application/json +kbn-version: 8.0.0 +``` + +##### Response +```json +{ + "data": { + "getOneTimeline": { + "savedObjectId": "bf662160-9788-11eb-8277-3516cc4109c3", + "version": "WzM1NzU2MCwzXQ==", + "columns": [ + { + "columnHeaderType": "not-filtered", + "id": "@timestamp" + }, + { + "columnHeaderType": "not-filtered", + "id": "signal.rule.description" + }, + { + "columnHeaderType": "not-filtered", + "id": "event.action" + }, + { + "columnHeaderType": "not-filtered", + "id": "process.name" + }, + { + "aggregatable": true, + "description": "The working directory of the process.", + "columnHeaderType": "not-filtered", + "id": "process.working_directory", + "category": "process", + "type": "string", + "example": "/home/alice" + }, + { + "aggregatable": true, + "description": "Array of process arguments, starting with the absolute path to\nthe executable.\n\nMay be filtered to protect sensitive information.", + "columnHeaderType": "not-filtered", + "id": "process.args", + "category": "process", + "type": "string", + "example": "[\"/usr/bin/ssh\",\"-l\",\"user\",\"10.0.0.16\"]" + }, + { + "columnHeaderType": "not-filtered", + "id": "process.pid" + }, + { + "aggregatable": true, + "description": "Absolute path to the process executable.", + "columnHeaderType": "not-filtered", + "id": "process.parent.executable", + "category": "process", + "type": "string", + "example": "/usr/bin/ssh" + }, + { + "aggregatable": true, + "description": "Array of process arguments.\n\nMay be filtered to protect sensitive information.", + "columnHeaderType": "not-filtered", + "id": "process.parent.args", + "category": "process", + "type": "string", + "example": "[\"ssh\",\"-l\",\"user\",\"10.0.0.16\"]" + }, + { + "aggregatable": true, + "description": "Process id.", + "columnHeaderType": "not-filtered", + "id": "process.parent.pid", + "category": "process", + "type": "number", + "example": "4242" + }, + { + "aggregatable": true, + "description": "Short name or login of the user.", + "columnHeaderType": "not-filtered", + "id": "user.name", + "category": "user", + "type": "string", + "example": "albert" + }, + { + "aggregatable": true, + "description": "Name of the host.\n\nIt can contain what `hostname` returns on Unix systems, the fully qualified\ndomain name, or a name specified by the user. The sender decides which value\nto use.", + "columnHeaderType": "not-filtered", + "id": "host.name", + "category": "host", + "type": "string" + } + ], + "dataProviders": [ + { + "excluded": false, + "and": [], + "kqlQuery": "", + "name": "{process.name}", + "queryMatch": { + "displayValue": null, + "field": "process.name", + "displayField": null, + "value": "{process.name}", + "operator": ":" + }, + "id": "timeline-1-8622010a-61fb-490d-b162-beac9c36a853", + "type": "template", + "enabled": true + } + ], + "description": "", + "eqlOptions": { + "eventCategoryField": "event.category", + "tiebreakerField": "", + "timestampField": "@timestamp", + "query": "", + "size": 100 + }, + "eventType": "all", + "excludedRowRendererIds": [], + "filters": [], + "kqlMode": "filter", + "kqlQuery": { + "filterQuery": { + "kuery": { + "kind": "kuery", + "expression": "" + }, + "serializedQuery": "" + } + }, + "indexNames": [], + "title": "Generic Process Timeline - Duplicate", + "timelineType": "template", + "templateTimelineVersion": 1, + "templateTimelineId": "94dd7443-97ea-4461-864d-fa96803ec111", + "dateRange": { + "start": "2021-04-06T07:57:57.922Z", + "end": "2021-04-07T07:57:57.922Z" + }, + "savedQueryId": null, + "sort": [ + { + "sortDirection": "desc", + "columnId": "@timestamp" + } + ], + "status": "active", + "created": 1617789914742, + "createdBy": "angela", + "updated": 1617790158569, + "updatedBy": "angela", + "favorite": [ + { + "favoriteDate": 1617790158569, + "keySearch": "YW5nZWxh", + "fullName": "Angela", + "userName": "angela" + } + ], + "eventIdToNoteIds": [], + "noteIds": [], + "notes": [], + "pinnedEventIds": [], + "pinnedEventsSaveObject": [] + } + } +} +``` + +## Delete timeline api + +#### DELETE /api/timeline + +##### Authorization + +Type: Basic Auth +username: Your Kibana username +password: Your Kibana password + + +##### Request header + +``` + +Content-Type: application/json + +kbn-version: 8.0.0 + +``` + +##### Request body + +```json +{ + "savedObjectIds": [savedObjectId1, savedObjectId2] +} +``` + +##### Response +```json +{"data":{"deleteTimeline":true}} +``` + +## Persist note api + +#### POST /api/note + +##### Authorization + +Type: Basic Auth +username: Your Kibana username +password: Your Kibana password + + +##### Request header + +``` +Content-Type: application/json +kbn-version: 8.0.0 +``` + +##### Request body + +```json +{ + "note": { + "timelineId": {timeline id that the note is linked to}, + "eventId" (optional): {event id the note is linked to. Not available is it is a global note}, + "note"(optional): {note content}, + }, + "noteId"(optional): note savedObjectId, + "version" (optional): note savedObjectVersion +} +``` +##### Example +```json +{ + "noteId": null, + "version": null, + "note": { + "eventId": "Q9tqqXgBc4D54_cxJnHV", + "note": "note", + "timelineId": "1ec3b430-908e-11eb-94fa-c9122cbc0213" + } +} +``` + +##### Response +``` +{ + "data": { + "persistNote": { + "code": 200, + "message": "success", + "note": { + "noteId": "fe8f6980-97ad-11eb-862e-850f4426d3d0", + "version": "WzM1MDAyNSwzXQ==", + "eventId": "UNtqqXgBc4D54_cxIGi-", + "note": "event note", + "timelineId": "1ec3b430-908e-11eb-94fa-c9122cbc0213", + "created": 1617805912088, + "createdBy": "angela", + "updated": 1617805912088, + "updatedBy": "angela" + } + } + } +} +``` + +## Persist pinned event api + +#### POST /api/pinned_event + +##### Authorization + +Type: Basic Auth +username: Your Kibana username +password: Your Kibana password + + +##### Request header + +``` +Content-Type: application/json +kbn-version: 8.0.0 +``` + +##### Request body + +```json +{ + "eventId": {event which is pinned} + "pinnedEventId" (optional): {pinned event savedObjectId} + "timelineId": {timeline which this pinned event is linked to} +} +``` + +##### example + +``` +{ + "eventId":"UdtqqXgBc4D54_cxIGi", + "pinnedEventId":null, + "timelineId":"1ec3b430-908e-11eb-94fa-c9122cbc0213" +} +``` + +##### Response +```json +{ + "data": { + "persistPinnedEventOnTimeline": { + "pinnedEventId": "5b8f1720-97ae-11eb-862e-850f4426d3d0", + "version": "WzM1MDA1OSwzXQ==", + "eventId": "UdtqqXgBc4D54_cxIGi-", + "timelineId": "1ec3b430-908e-11eb-94fa-c9122cbc0213", + "created": 1617806068114, + "createdBy": "angela", + "updated": 1617806068114, + "updatedBy": "angela" + } + } +} +``` + diff --git a/x-pack/plugins/security_solution/common/graphql/root/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/index.ts similarity index 83% rename from x-pack/plugins/security_solution/common/graphql/root/index.ts rename to x-pack/plugins/security_solution/server/lib/timeline/routes/notes/index.ts index 194a6bc1a12c9..2b8b6eb55fd94 100644 --- a/x-pack/plugins/security_solution/common/graphql/root/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export { rootSchema } from './schema.gql'; +export { persistNoteRoute } from './persist_note'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts new file mode 100644 index 0000000000000..cb7d984ade40b --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts @@ -0,0 +1,69 @@ +/* + * 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 type { SecuritySolutionPluginRouter } from '../../../../types'; + +import { NOTE_URL } from '../../../../../common/constants'; + +import { SetupPlugins } from '../../../../plugin'; +import { buildRouteValidationWithExcess } from '../../../../utils/build_validation/route_validation'; +import { ConfigType } from '../../../..'; + +import { transformError, buildSiemResponse } from '../../../detection_engine/routes/utils'; + +import { buildFrameworkRequest } from '../../utils/common'; +import { persistNoteSchema } from '../../schemas/notes'; +import { persistNote } from '../../saved_object/notes'; + +export const persistNoteRoute = ( + router: SecuritySolutionPluginRouter, + config: ConfigType, + security: SetupPlugins['security'] +) => { + router.patch( + { + path: NOTE_URL, + validate: { + body: buildRouteValidationWithExcess(persistNoteSchema), + }, + options: { + tags: ['access:securitySolution'], + }, + }, + async (context, request, response) => { + const siemResponse = buildSiemResponse(response); + + try { + const frameworkRequest = await buildFrameworkRequest(context, security, request); + const { note } = request.body; + const noteId = request.body?.noteId ?? null; + const version = request.body?.version ?? null; + + const res = await persistNote( + frameworkRequest, + noteId, + version, + { + ...note, + timelineId: note.timelineId || null, + }, + true + ); + + return response.ok({ + body: { data: { persistNote: res } }, + }); + } catch (err) { + const error = transformError(err); + return siemResponse.error({ + body: error.message, + statusCode: error.statusCode, + }); + } + } + ); +}; diff --git a/x-pack/plugins/security_solution/common/graphql/shared/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/index.ts similarity index 79% rename from x-pack/plugins/security_solution/common/graphql/shared/index.ts rename to x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/index.ts index 4cf18cd629d62..448906196e34a 100644 --- a/x-pack/plugins/security_solution/common/graphql/shared/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export * from './schema.gql'; +export { persistPinnedEventRoute } from './persist_pinned_event'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts new file mode 100644 index 0000000000000..53ac002721c6e --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts @@ -0,0 +1,65 @@ +/* + * 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 type { SecuritySolutionPluginRouter } from '../../../../types'; + +import { PINNED_EVENT_URL } from '../../../../../common/constants'; + +import { SetupPlugins } from '../../../../plugin'; +import { buildRouteValidationWithExcess } from '../../../../utils/build_validation/route_validation'; +import { ConfigType } from '../../../..'; + +import { transformError, buildSiemResponse } from '../../../detection_engine/routes/utils'; + +import { buildFrameworkRequest } from '../../utils/common'; +import { persistPinnedEventSchema } from '../../schemas/pinned_events'; +import { persistPinnedEventOnTimeline } from '../../saved_object/pinned_events'; + +export const persistPinnedEventRoute = ( + router: SecuritySolutionPluginRouter, + config: ConfigType, + security: SetupPlugins['security'] +) => { + router.patch( + { + path: PINNED_EVENT_URL, + validate: { + body: buildRouteValidationWithExcess(persistPinnedEventSchema), + }, + options: { + tags: ['access:securitySolution'], + }, + }, + async (context, request, response) => { + const siemResponse = buildSiemResponse(response); + + try { + const frameworkRequest = await buildFrameworkRequest(context, security, request); + const { eventId } = request.body; + const pinnedEventId = request.body?.pinnedEventId ?? null; + const timelineId = request.body?.timelineId ?? null; + + const res = await persistPinnedEventOnTimeline( + frameworkRequest, + pinnedEventId, + eventId, + timelineId + ); + + return response.ok({ + body: { data: { persistPinnedEventOnTimeline: res } }, + }); + } catch (err) { + const error = transformError(err); + return siemResponse.error({ + body: error.message, + statusCode: error.statusCode, + }); + } + } + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.ts index 626f3cbed5b77..e202230bf5cce 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.ts @@ -10,9 +10,9 @@ import { isEmpty } from 'lodash/fp'; import moment from 'moment'; import { timeline as timelineLib, pinnedEvent as pinnedEventLib } from '../../../saved_object'; import { FrameworkRequest } from '../../../../framework'; -import { SavedTimeline } from '../../../../../../common/types/timeline'; -import { NoteResult, ResponseTimeline } from '../../../../../graphql/types'; +import { ResponseTimeline, SavedTimeline } from '../../../../../../common/types/timeline'; import { persistNotes } from '../../../saved_object/notes/persist_notes'; +import { NoteResult } from '../../../../../../common/types/timeline/note'; interface CreateTimelineProps { frameworkRequest: FrameworkRequest; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts new file mode 100644 index 0000000000000..7617881b90b7f --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts @@ -0,0 +1,51 @@ +/* + * 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 { buildRouteValidationWithExcess } from '../../../../../utils/build_validation/route_validation'; +import { ConfigType } from '../../../../..'; +import { deleteTimelinesSchema } from '../../../schemas/timelines/delete_timelines_schema'; +import { SecuritySolutionPluginRouter } from '../../../../../types'; +import { SetupPlugins } from '../../../../../plugin'; +import { TIMELINE_URL } from '../../../../../../common/constants'; +import { transformError, buildSiemResponse } from '../../../../detection_engine/routes/utils'; +import { buildFrameworkRequest } from '../../../utils/common'; +import { deleteTimeline } from '../../../saved_object/timelines'; + +export const deleteTimelinesRoute = ( + router: SecuritySolutionPluginRouter, + config: ConfigType, + security: SetupPlugins['security'] +) => { + router.delete( + { + path: TIMELINE_URL, + validate: { + body: buildRouteValidationWithExcess(deleteTimelinesSchema), + }, + options: { + tags: ['access:securitySolution'], + }, + }, + async (context, request, response) => { + const siemResponse = buildSiemResponse(response); + + try { + const frameworkRequest = await buildFrameworkRequest(context, security, request); + const { savedObjectIds } = request.body; + + await deleteTimeline(frameworkRequest, savedObjectIds); + return response.ok({ body: { data: { deleteTimeline: true } } }); + } catch (err) { + const error = transformError(err); + return siemResponse.error({ + body: error.message, + statusCode: error.statusCode, + }); + } + } + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.test.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.test.ts index 8c559daa93da9..13a3a3909095a 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.test.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.test.ts @@ -12,11 +12,7 @@ import { requestContextMock, createMockConfig, } from '../../../../detection_engine/routes/__mocks__'; -import { - getTimelineOrNull, - getTimelineTemplateOrNull, - getAllTimeline, -} from '../../../saved_object/timelines'; +import { getTimelineOrNull, getTimelineTemplateOrNull } from '../../../saved_object/timelines'; import { mockGetCurrentUser } from '../../../__mocks__/import_timelines'; import { getTimelineRequest } from '../../../__mocks__/request_responses'; @@ -66,11 +62,8 @@ describe('get timeline', () => { expect((getTimelineOrNull as jest.Mock).mock.calls[0][1]).toEqual(id); }); - test('should call getAllTimeline if nither templateTimelineId nor id is given', async () => { - (getAllTimeline as jest.Mock).mockResolvedValue({ totalCount: 3 }); - - await server.inject(getTimelineRequest(), context); - - expect(getAllTimeline as jest.Mock).toHaveBeenCalledTimes(2); + test('should throw error message if nither templateTimelineId nor id is given', async () => { + const res = await server.inject(getTimelineRequest(), context); + expect(res.body.message).toEqual('please provide id or template_timeline_id'); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts index f49110d105765..8d94cd2ef2cce 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts @@ -16,13 +16,8 @@ import { buildRouteValidationWithExcess } from '../../../../../utils/build_valid import { buildSiemResponse, transformError } from '../../../../detection_engine/routes/utils'; import { buildFrameworkRequest } from '../../../utils/common'; -import { getTimelineByIdSchemaQuery } from '../../../schemas/timelines'; -import { - getTimelineTemplateOrNull, - getTimelineOrNull, - getAllTimeline, -} from '../../../saved_object/timelines'; -import { TimelineStatus } from '../../../../../../common/types/timeline'; +import { getTimelineQuerySchema } from '../../../schemas/timelines'; +import { getTimelineTemplateOrNull, getTimelineOrNull } from '../../../saved_object/timelines'; export const getTimelineRoute = ( router: SecuritySolutionPluginRouter, @@ -31,8 +26,10 @@ export const getTimelineRoute = ( ) => { router.get( { - path: `${TIMELINE_URL}`, - validate: { query: buildRouteValidationWithExcess(getTimelineByIdSchemaQuery) }, + path: TIMELINE_URL, + validate: { + query: buildRouteValidationWithExcess(getTimelineQuerySchema), + }, options: { tags: ['access:securitySolution'], }, @@ -42,34 +39,18 @@ export const getTimelineRoute = ( const frameworkRequest = await buildFrameworkRequest(context, security, request); const query = request.query ?? {}; const { template_timeline_id: templateTimelineId, id } = query; + let res = null; + if (templateTimelineId != null && id == null) { res = await getTimelineTemplateOrNull(frameworkRequest, templateTimelineId); } else if (templateTimelineId == null && id != null) { res = await getTimelineOrNull(frameworkRequest, id); - } else if (templateTimelineId == null && id == null) { - const tempResult = await getAllTimeline( - frameworkRequest, - false, - { pageSize: 1, pageIndex: 1 }, - null, - null, - TimelineStatus.active, - null - ); - - res = await getAllTimeline( - frameworkRequest, - false, - { pageSize: tempResult?.totalCount ?? 0, pageIndex: 1 }, - null, - null, - TimelineStatus.active, - null - ); + } else { + throw new Error('please provide id or template_timeline_id'); } - return response.ok({ body: res ?? {} }); + return response.ok({ body: res ? { data: { getOneTimeline: res } } : {} }); } catch (err) { const error = transformError(err); const siemResponse = buildSiemResponse(response); diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.test.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.test.ts new file mode 100644 index 0000000000000..a29902934172f --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.test.ts @@ -0,0 +1,58 @@ +/* + * 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 { SecurityPluginSetup } from '../../../../../../../security/server'; + +import { + serverMock, + requestContextMock, + createMockConfig, +} from '../../../../detection_engine/routes/__mocks__'; +import { getAllTimeline } from '../../../saved_object/timelines'; + +import { mockGetCurrentUser } from '../../../__mocks__/import_timelines'; +import { getTimelineRequest } from '../../../__mocks__/request_responses'; + +import { getTimelinesRoute } from '.'; + +jest.mock('../../../saved_object/timelines', () => ({ + getAllTimeline: jest.fn(), +})); + +describe('get all timelines', () => { + let server: ReturnType; + let securitySetup: SecurityPluginSetup; + let { context } = requestContextMock.createTools(); + + beforeEach(() => { + jest.resetModules(); + jest.resetAllMocks(); + + server = serverMock.create(); + context = requestContextMock.createTools().context; + + securitySetup = ({ + authc: { + getCurrentUser: jest.fn().mockReturnValue(mockGetCurrentUser), + }, + authz: {}, + } as unknown) as SecurityPluginSetup; + + getTimelinesRoute(server.router, createMockConfig(), securitySetup); + }); + + test('should get the total count', async () => { + await server.inject(getTimelineRequest(), context); + expect((getAllTimeline as jest.Mock).mock.calls[0][2]).toEqual({ pageSize: 1, pageIndex: 1 }); + }); + + test('should get all timelines with total count', async () => { + (getAllTimeline as jest.Mock).mockResolvedValue({ totalCount: 100 }); + await server.inject(getTimelineRequest(), context); + expect((getAllTimeline as jest.Mock).mock.calls[1][2]).toEqual({ pageSize: 100, pageIndex: 1 }); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts new file mode 100644 index 0000000000000..51a02db681b0c --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts @@ -0,0 +1,103 @@ +/* + * 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 Boom from '@hapi/boom'; + +import { pipe } from 'fp-ts/lib/pipeable'; +import { fold } from 'fp-ts/lib/Either'; +import { identity } from 'fp-ts/lib/function'; + +import type { SecuritySolutionPluginRouter } from '../../../../../types'; +import { TIMELINES_URL } from '../../../../../../common/constants'; + +import { ConfigType } from '../../../../..'; +import { SetupPlugins } from '../../../../../plugin'; + +import { buildSiemResponse, transformError } from '../../../../detection_engine/routes/utils'; + +import { buildFrameworkRequest, escapeHatch, throwErrors } from '../../../utils/common'; +import { getAllTimeline } from '../../../saved_object/timelines'; +import { getTimelinesQuerySchema } from '../../../schemas/timelines'; + +export const getTimelinesRoute = ( + router: SecuritySolutionPluginRouter, + config: ConfigType, + security: SetupPlugins['security'] +) => { + router.get( + { + path: TIMELINES_URL, + validate: { + query: escapeHatch, + }, + options: { + tags: ['access:securitySolution'], + }, + }, + async (context, request, response) => { + try { + const frameworkRequest = await buildFrameworkRequest(context, security, request); + const queryParams = pipe( + getTimelinesQuerySchema.decode(request.query), + fold(throwErrors(Boom.badRequest), identity) + ); + const onlyUserFavorite = queryParams?.only_user_favorite === 'true' ? true : false; + const pageSize = queryParams?.page_size ? parseInt(queryParams.page_size, 10) : null; + const pageIndex = queryParams?.page_index ? parseInt(queryParams.page_index, 10) : null; + const search = queryParams?.search ?? null; + const sortField = queryParams?.sort_field ?? null; + const sortOrder = queryParams?.sort_order ?? null; + const status = queryParams?.status ?? null; + const timelineType = queryParams?.timeline_type ?? null; + const sort = + sortField && sortOrder + ? { + sortField, + sortOrder, + } + : null; + let res = null; + let totalCount = null; + + if (pageSize == null && pageIndex == null) { + const allActiveTimelines = await getAllTimeline( + frameworkRequest, + false, + { pageSize: 1, pageIndex: 1 }, + null, + null, + null, + null + ); + totalCount = allActiveTimelines.totalCount; + } + + res = await getAllTimeline( + frameworkRequest, + onlyUserFavorite, + { + pageSize: pageSize ?? totalCount ?? 1, + pageIndex: pageIndex ?? 1, + }, + search, + sort, + status, + timelineType + ); + + return response.ok({ body: res ?? {} }); + } catch (err) { + const error = transformError(err); + const siemResponse = buildSiemResponse(response); + + return siemResponse.error({ + body: error.message, + statusCode: error.statusCode, + }); + } + } + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts index 1184629e47e87..aeb7463377b1f 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts @@ -9,7 +9,6 @@ import * as rt from 'io-ts'; import { Transform } from 'stream'; import { pipe } from 'fp-ts/lib/pipeable'; import { fold } from 'fp-ts/lib/Either'; -import { failure } from 'io-ts/lib/PathReporter'; import { identity } from 'fp-ts/lib/function'; import { createConcatStream, createSplitStream, createMapStream } from '@kbn/utils'; import { @@ -21,15 +20,12 @@ import { import { ImportTimelineResponse } from './types'; import { ImportTimelinesSchemaRt } from '../../../schemas/timelines/import_timelines_schema'; import { BadRequestError } from '../../../../detection_engine/errors/bad_request_error'; +import { throwErrors } from '../../../utils/common'; type ErrorFactory = (message: string) => Error; export const createPlainError = (message: string) => new Error(message); -export const throwErrors = (createError: ErrorFactory) => (errors: rt.Errors) => { - throw createError(failure(errors).join('\n')); -}; - export const decodeOrThrow = ( runtimeType: rt.Type, createError: ErrorFactory = createPlainError diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts index 21ff77e1edbdd..a19276652e78b 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts @@ -131,6 +131,7 @@ export const importTimelines = async ( timelineType, version, } = parsedTimeline; + const parsedTimelineObject = omit(timelineSavedObjectOmittedFields, parsedTimeline); let newTimeline = null; try { diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/types.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/types.ts index cc4221cba1098..2cec338555b30 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/types.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/types.ts @@ -7,9 +7,9 @@ import { BulkError } from '../../../../detection_engine/routes/utils'; import { SavedTimeline } from '../../../../../../common/types/timeline'; -import { NoteResult } from '../../../../../graphql/types'; import { HapiReadableStream } from '../../../../detection_engine/rules/types'; import { TimelineStatusActions } from '../../../utils/common'; +import { NoteResult } from '../../../../../../common/types/timeline/note'; export type ImportedTimeline = SavedTimeline & { savedObjectId: string | null; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/index.ts new file mode 100644 index 0000000000000..ebd0dbba7d197 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/index.ts @@ -0,0 +1,14 @@ +/* + * 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. + */ +export { createTimelinesRoute } from './create_timelines'; +export { deleteTimelinesRoute } from './delete_timelines'; +export { exportTimelinesRoute } from './export_timelines'; +export { getTimelineRoute } from './get_timeline'; +export { getTimelinesRoute } from './get_timelines'; +export { importTimelinesRoute } from './import_timelines'; +export { patchTimelinesRoute } from './patch_timelines'; +export { persistFavoriteRoute } from './persist_favorite'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.test.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.test.ts index 8f583dbcc05a8..e0cd1a166dd43 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.test.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.test.ts @@ -86,8 +86,8 @@ describe('update timelines', () => { }; }); - const updateTimelinesRoute = jest.requireActual('./index').updateTimelinesRoute; - updateTimelinesRoute(server.router, createMockConfig(), securitySetup); + const patchTimelinesRoute = jest.requireActual('./index').patchTimelinesRoute; + patchTimelinesRoute(server.router, createMockConfig(), securitySetup); const mockRequest = getUpdateTimelinesRequest(updateTimelineWithTimelineId); await server.inject(mockRequest, context); @@ -150,8 +150,8 @@ describe('update timelines', () => { }; }); - const updateTimelinesRoute = jest.requireActual('./index').updateTimelinesRoute; - updateTimelinesRoute(server.router, createMockConfig(), securitySetup); + const patchTimelinesRoute = jest.requireActual('./index').patchTimelinesRoute; + patchTimelinesRoute(server.router, createMockConfig(), securitySetup); }); test('returns error message', async () => { @@ -194,8 +194,8 @@ describe('update timelines', () => { }; }); - const updateTimelinesRoute = jest.requireActual('./index').updateTimelinesRoute; - updateTimelinesRoute(server.router, createMockConfig(), securitySetup); + const patchTimelinesRoute = jest.requireActual('./index').patchTimelinesRoute; + patchTimelinesRoute(server.router, createMockConfig(), securitySetup); const mockRequest = getUpdateTimelinesRequest(updateTemplateTimelineWithTimelineId); await server.inject(mockRequest, context); @@ -270,8 +270,8 @@ describe('update timelines', () => { }; }); - const updateTimelinesRoute = jest.requireActual('./index').updateTimelinesRoute; - updateTimelinesRoute(server.router, createMockConfig(), securitySetup); + const patchTimelinesRoute = jest.requireActual('./index').patchTimelinesRoute; + patchTimelinesRoute(server.router, createMockConfig(), securitySetup); }); test('returns error message', async () => { diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts index 61880789eca84..b0142625f5e08 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts @@ -20,7 +20,7 @@ import { buildFrameworkRequest, TimelineStatusActions } from '../../../utils/com import { createTimelines } from '../create_timelines'; import { CompareTimelinesStatus } from '../../../utils/compare_timelines_status'; -export const updateTimelinesRoute = ( +export const patchTimelinesRoute = ( router: SecuritySolutionPluginRouter, config: ConfigType, security: SetupPlugins['security'] diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts new file mode 100644 index 0000000000000..2cc3888696248 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts @@ -0,0 +1,74 @@ +/* + * 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 type { SecuritySolutionPluginRouter } from '../../../../../types'; + +import { TIMELINE_FAVORITE_URL } from '../../../../../../common/constants'; + +import { SetupPlugins } from '../../../../../plugin'; +import { buildRouteValidationWithExcess } from '../../../../../utils/build_validation/route_validation'; +import { ConfigType } from '../../../../..'; + +import { transformError, buildSiemResponse } from '../../../../detection_engine/routes/utils'; + +import { buildFrameworkRequest } from '../../../utils/common'; +import { persistFavorite } from '../../../saved_object/timelines'; +import { TimelineType } from '../../../../../../common/types/timeline'; +import { persistFavoriteSchema } from '../../../schemas/timelines/persist_favorite_schema'; + +export const persistFavoriteRoute = ( + router: SecuritySolutionPluginRouter, + config: ConfigType, + security: SetupPlugins['security'] +) => { + router.patch( + { + path: TIMELINE_FAVORITE_URL, + validate: { + body: buildRouteValidationWithExcess(persistFavoriteSchema), + }, + options: { + tags: ['access:securitySolution'], + }, + }, + async (context, request, response) => { + const siemResponse = buildSiemResponse(response); + + try { + const frameworkRequest = await buildFrameworkRequest(context, security, request); + const { + timelineId, + templateTimelineId, + templateTimelineVersion, + timelineType, + } = request.body; + + const timeline = await persistFavorite( + frameworkRequest, + timelineId || null, + templateTimelineId || null, + templateTimelineVersion || null, + timelineType || TimelineType.default + ); + + return response.ok({ + body: { + data: { + persistFavorite: timeline, + }, + }, + }); + } catch (err) { + const error = transformError(err); + return siemResponse.error({ + body: error.message, + statusCode: error.statusCode, + }); + } + } + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/get_overridable_note.ts b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/get_overridable_note.ts index 1ff1c37a16357..6feca76ff53a9 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/get_overridable_note.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/get_overridable_note.ts @@ -5,11 +5,15 @@ * 2.0. */ -import { SavedNote } from '../../../../../common/types/timeline/note'; -import { NoteResult } from '../../../../graphql/types'; +import { NoteResult, SavedNote } from '../../../../../common/types/timeline/note'; import { FrameworkRequest } from '../../../framework'; import { getNote } from './saved_object'; +/** + * When importing timeline with an existing note by others, we don't want override the owner. + * In this case we can set overrideOwner to false to keep the original author + */ + export const getOverridableNote = async ( frameworkRequest: FrameworkRequest, note: NoteResult, diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/index.ts index 9addf0f80e124..34914517da683 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/index.ts @@ -6,8 +6,14 @@ */ import { FrameworkRequest } from '../../../framework'; -import { PageInfoNote, ResponseNote, ResponseNotes, SortNote } from '../../../../graphql/types'; -import { SavedNote, NoteSavedObject } from '../../../../../common/types/timeline/note'; +import { + SavedNote, + NoteSavedObject, + PageInfoNote, + SortNote, + ResponseNotes, + ResponseNote, +} from '../../../../../common/types/timeline/note'; export * from './saved_object'; export interface Notes { diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/persist_notes.ts b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/persist_notes.ts index 7f6a355f43df0..58b4e33444d94 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/persist_notes.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/persist_notes.ts @@ -6,9 +6,9 @@ */ import { FrameworkRequest } from '../../../framework'; -import { NoteResult } from '../../../../graphql/types'; import { persistNote } from './saved_object'; import { getOverridableNote } from './get_overridable_note'; +import { NoteResult } from '../../../../../common/types/timeline/note'; export const persistNotes = async ( frameworkRequest: FrameworkRequest, diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts index 8016fdf12881d..91caaa8cc8a8b 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts @@ -20,14 +20,12 @@ import { SavedNote, NoteSavedObjectRuntimeType, NoteSavedObject, -} from '../../../../../common/types/timeline/note'; -import { PageInfoNote, - ResponseNote, - ResponseNotes, SortNote, NoteResult, -} from '../../../../graphql/types'; + ResponseNotes, + ResponseNote, +} from '../../../../../common/types/timeline/note'; import { FrameworkRequest } from '../../../framework'; import { noteSavedObjectType } from '../../saved_object_mappings/notes'; import { convertSavedObjectToSavedTimeline, pickSavedTimeline } from '../timelines'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.ts index 6467d1d43d807..b3d262b13cbf3 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.ts @@ -18,14 +18,11 @@ import { PinnedEventSavedObject, PinnedEventSavedObjectRuntimeType, SavedPinnedEvent, + PinnedEvent as PinnedEventResponse, } from '../../../../../common/types/timeline/pinned_event'; +import { PageInfoNote, SortNote } from '../../../../../common/types/timeline/note'; import { FrameworkRequest } from '../../../framework'; -import { - PageInfoNote, - SortNote, - PinnedEvent as PinnedEventResponse, -} from '../../../../graphql/types'; import { pickSavedTimeline } from '../../saved_object/timelines'; import { convertSavedObjectToSavedTimeline } from '../timelines'; import { pinnedEventSavedObjectType } from '../../saved_object_mappings/pinned_events'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts index 61e25d419a0e4..1136753bc8316 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts @@ -8,15 +8,11 @@ import { FrameworkRequest } from '../../../framework'; import { mockGetTimelineValue, mockSavedObject } from '../../__mocks__/import_timelines'; -import { - convertStringToBase64, - getExistingPrepackagedTimelines, - getAllTimeline, - AllTimelinesResponse, -} from '.'; +import { convertStringToBase64, getExistingPrepackagedTimelines, getAllTimeline } from '.'; import { convertSavedObjectToSavedTimeline } from './convert_saved_object_to_savedtimeline'; import { getNotesByTimelineId } from '../notes/saved_object'; import { getAllPinnedEventsByTimelineId } from '../pinned_events'; +import { AllTimelinesResponse } from '../../../../../common/types/timeline'; jest.mock('./convert_saved_object_to_savedtimeline', () => ({ convertSavedObjectToSavedTimeline: jest.fn(), diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts index 0f624ef5420bc..8904a9103bc02 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts @@ -12,22 +12,21 @@ import { UNAUTHENTICATED_USER } from '../../../../../common/constants'; import { NoteSavedObject } from '../../../../../common/types/timeline/note'; import { PinnedEventSavedObject } from '../../../../../common/types/timeline/pinned_event'; import { + AllTimelinesResponse, + ExportTimelineNotFoundError, + PageInfoTimeline, + ResponseTimelines, + ResponseFavoriteTimeline, + ResponseTimeline, SavedTimeline, + SortTimeline, TimelineSavedObject, TimelineTypeLiteralWithNull, - ExportTimelineNotFoundError, TimelineStatusLiteralWithNull, -} from '../../../../../common/types/timeline'; -import { - ResponseTimeline, - PageInfoTimeline, - SortTimeline, - ResponseFavoriteTimeline, - TimelineResult, TimelineType, TimelineStatus, - Maybe, -} from '../../../../graphql/types'; + TimelineResult, +} from '../../../../../common/types/timeline'; import { FrameworkRequest } from '../../../framework'; import * as note from '../notes/saved_object'; import * as pinnedEvent from '../pinned_events'; @@ -36,22 +35,10 @@ import { pickSavedTimeline } from './pick_saved_timeline'; import { timelineSavedObjectType } from '../../saved_object_mappings/'; import { draftTimelineDefaults } from '../../utils/default_timeline'; import { AuthenticatedUser } from '../../../../../../security/server'; +import { Maybe } from '../../../../../common/search_strategy'; export { pickSavedTimeline } from './pick_saved_timeline'; export { convertSavedObjectToSavedTimeline } from './convert_saved_object_to_savedtimeline'; -interface ResponseTimelines { - timeline: TimelineSavedObject[]; - totalCount: number; -} - -export interface AllTimelinesResponse extends ResponseTimelines { - defaultTimelineCount: number; - templateTimelineCount: number; - elasticTemplateTimelineCount: number; - customTemplateTimelineCount: number; - favoriteCount: number; -} - export interface ResponseTemplateTimeline { code?: Maybe; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/schemas/notes/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/schemas/notes/index.ts index de1e357896353..b2fc7a0beb065 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/schemas/notes/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/schemas/notes/index.ts @@ -11,3 +11,14 @@ import { SavedNoteRuntimeType } from '../../../../../common/types/timeline/note' export const eventNotes = unionWithNullType(runtimeTypes.array(SavedNoteRuntimeType)); export const globalNotes = unionWithNullType(runtimeTypes.array(SavedNoteRuntimeType)); + +export const persistNoteSchema = runtimeTypes.intersection([ + runtimeTypes.type({ + note: SavedNoteRuntimeType, + }), + runtimeTypes.partial({ + overrideOwner: unionWithNullType(runtimeTypes.boolean), + noteId: unionWithNullType(runtimeTypes.string), + version: unionWithNullType(runtimeTypes.string), + }), +]); diff --git a/x-pack/plugins/security_solution/server/lib/timeline/schemas/pinned_events/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/schemas/pinned_events/index.ts index 29afda10dce80..e0bd1f95f5953 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/schemas/pinned_events/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/schemas/pinned_events/index.ts @@ -9,3 +9,12 @@ import * as runtimeTypes from 'io-ts'; import { unionWithNullType } from '../../../../../common/utility_types'; export const pinnedEventIds = unionWithNullType(runtimeTypes.array(runtimeTypes.string)); +export const persistPinnedEventSchema = runtimeTypes.intersection([ + runtimeTypes.type({ + eventId: runtimeTypes.string, + }), + runtimeTypes.partial({ + pinnedEventId: unionWithNullType(runtimeTypes.string), + timelineId: unionWithNullType(runtimeTypes.string), + }), +]); diff --git a/x-pack/plugins/security_solution/server/graphql/scalar_date/schema.gql.ts b/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/delete_timelines_schema.ts similarity index 68% rename from x-pack/plugins/security_solution/server/graphql/scalar_date/schema.gql.ts rename to x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/delete_timelines_schema.ts index 3c1ba4fedcf36..4aadb73283676 100644 --- a/x-pack/plugins/security_solution/server/graphql/scalar_date/schema.gql.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/delete_timelines_schema.ts @@ -5,8 +5,8 @@ * 2.0. */ -import gql from 'graphql-tag'; +import * as rt from 'io-ts'; -export const dateSchema = gql` - scalar Date -`; +export const deleteTimelinesSchema = rt.type({ + savedObjectIds: rt.array(rt.string), +}); diff --git a/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/get_timeline_by_id_schema.ts b/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/get_timeline_schema.ts similarity index 70% rename from x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/get_timeline_by_id_schema.ts rename to x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/get_timeline_schema.ts index 4e6102e2d87e4..cca6886f42025 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/get_timeline_by_id_schema.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/get_timeline_schema.ts @@ -7,9 +7,9 @@ import * as rt from 'io-ts'; -export const getTimelineByIdSchemaQuery = rt.partial({ +export const getTimelineQuerySchema = rt.partial({ template_timeline_id: rt.string, id: rt.string, }); -export type GetTimelineByIdSchemaQuery = rt.TypeOf; +export type GetTimelineQuery = rt.TypeOf; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/get_timelines_schema.ts b/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/get_timelines_schema.ts new file mode 100644 index 0000000000000..7353741128435 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/get_timelines_schema.ts @@ -0,0 +1,41 @@ +/* + * 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 * as rt from 'io-ts'; +import { + direction, + sortFieldTimeline, + TimelineStatusLiteralRt, + TimelineTypeLiteralRt, +} from '../../../../../common/types/timeline'; +import { unionWithNullType } from '../../../../../common/utility_types'; + +const BoolFromString = rt.union([rt.literal('true'), rt.literal('false')]); + +export const getTimelinesQuerySchema = rt.partial({ + only_user_favorite: unionWithNullType(BoolFromString), + page_index: unionWithNullType(rt.string), + page_size: unionWithNullType(rt.string), + search: unionWithNullType(rt.string), + sort_field: sortFieldTimeline, + sort_order: direction, + status: unionWithNullType(TimelineStatusLiteralRt), + timeline_type: unionWithNullType(TimelineTypeLiteralRt), +}); + +export const getTimelinesArgsSchema = rt.partial({ + onlyUserFavorite: unionWithNullType(BoolFromString), + pageIndex: unionWithNullType(rt.string), + pageSize: unionWithNullType(rt.string), + search: unionWithNullType(rt.string), + sortField: sortFieldTimeline, + sortOrder: direction, + status: unionWithNullType(TimelineStatusLiteralRt), + timelineType: unionWithNullType(TimelineTypeLiteralRt), +}); + +export type GetTimelinesArgs = rt.TypeOf; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/index.ts index e85ae2ab4ae86..a88d6a6741517 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/index.ts @@ -6,5 +6,6 @@ */ export * from './create_timelines_schema'; export * from './export_timelines_schema'; -export * from './get_timeline_by_id_schema'; +export * from './get_timeline_schema'; +export * from './get_timelines_schema'; export * from './patch_timelines_schema'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/persist_favorite_schema.ts b/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/persist_favorite_schema.ts new file mode 100644 index 0000000000000..9b96e8ce0ca18 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/timeline/schemas/timelines/persist_favorite_schema.ts @@ -0,0 +1,18 @@ +/* + * 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 * as rt from 'io-ts'; + +import { TimelineTypeLiteralRt } from '../../../../../common/types/timeline'; +import { unionWithNullType } from '../../../../../common/utility_types'; + +export const persistFavoriteSchema = rt.type({ + timelineId: unionWithNullType(rt.string), + templateTimelineId: unionWithNullType(rt.string), + templateTimelineVersion: unionWithNullType(rt.number), + timelineType: unionWithNullType(TimelineTypeLiteralRt), +}); diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts b/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts index 443742ae88f0d..18fa84c9cf3ae 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts @@ -4,12 +4,14 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - +import * as rt from 'io-ts'; import { set } from '@elastic/safer-lodash-set/fp'; import readline from 'readline'; import fs from 'fs'; import { Readable } from 'stream'; import { createListStream } from '@kbn/utils'; +import { schema } from '@kbn/config-schema'; +import { isObject } from 'lodash/fp'; import { KibanaRequest } from 'src/core/server'; import { SetupPlugins } from '../../../plugin'; @@ -36,6 +38,37 @@ export const buildFrameworkRequest = async ( ); }; +export const escapeHatch = schema.object({}, { unknowns: 'allow' }); + +export const formatErrors = (errors: rt.Errors): string[] => { + const err = errors.map((error) => { + if (error.message != null) { + return error.message; + } else { + const keyContext = error.context + .filter( + (entry) => entry.key != null && !Number.isInteger(+entry.key) && entry.key.trim() !== '' + ) + .map((entry) => entry.key) + .join(','); + + const nameContext = error.context.find((entry) => entry.type?.name?.length > 0); + const suppliedValue = + keyContext !== '' ? keyContext : nameContext != null ? nameContext.type.name : ''; + const value = isObject(error.value) ? JSON.stringify(error.value) : error.value; + return `Invalid value "${value}" supplied to "${suppliedValue}"`; + } + }); + + return [...new Set(err)]; +}; + +type ErrorFactory = (message: string) => Error; + +export const throwErrors = (createError: ErrorFactory) => (errors: rt.Errors) => { + throw createError(formatErrors(errors).join('\n')); +}; + export const getReadables = (dataPath: string): Promise => new Promise((resolved, reject) => { const contents: string[] = []; diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts index 003ba4c8cf190..d0b7e6500c42b 100644 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ b/x-pack/plugins/security_solution/server/plugin.ts @@ -36,7 +36,6 @@ import { SpacesPluginSetup as SpacesSetup } from '../../spaces/server'; import { ILicense, LicensingPluginStart } from '../../licensing/server'; import { FleetStartContract } from '../../fleet/server'; import { TaskManagerSetupContract, TaskManagerStartContract } from '../../task_manager/server'; -import { initServer } from './init_server'; import { compose } from './lib/compose/kibana'; import { initRoutes } from './routes'; import { isAlertExecutor } from './lib/detection_engine/signals/types'; @@ -300,8 +299,7 @@ export class Plugin implements IPlugin { const securitySolutionSearchStrategy = securitySolutionSearchStrategyProvider(depsStart.data); diff --git a/x-pack/plugins/security_solution/server/routes/index.ts b/x-pack/plugins/security_solution/server/routes/index.ts index 488816cc6ad90..54090dc886ceb 100644 --- a/x-pack/plugins/security_solution/server/routes/index.ts +++ b/x-pack/plugins/security_solution/server/routes/index.ts @@ -33,16 +33,26 @@ import { importRulesRoute } from '../lib/detection_engine/routes/rules/import_ru import { exportRulesRoute } from '../lib/detection_engine/routes/rules/export_rules_route'; import { findRulesStatusesRoute } from '../lib/detection_engine/routes/rules/find_rules_status_route'; import { getPrepackagedRulesStatusRoute } from '../lib/detection_engine/routes/rules/get_prepackaged_rules_status_route'; -import { importTimelinesRoute } from '../lib/timeline/routes/timelines/import_timelines'; -import { exportTimelinesRoute } from '../lib/timeline/routes/timelines/export_timelines'; -import { createTimelinesRoute } from '../lib/timeline/routes/timelines/create_timelines'; -import { updateTimelinesRoute } from '../lib/timeline/routes/timelines/patch_timelines'; +import { + createTimelinesRoute, + deleteTimelinesRoute, + exportTimelinesRoute, + getTimelineRoute, + getTimelinesRoute, + importTimelinesRoute, + patchTimelinesRoute, + persistFavoriteRoute, +} from '../lib/timeline/routes/timelines'; import { getDraftTimelinesRoute } from '../lib/timeline/routes/draft_timelines/get_draft_timelines'; import { cleanDraftTimelinesRoute } from '../lib/timeline/routes/draft_timelines/clean_draft_timelines'; + +import { persistNoteRoute } from '../lib/timeline/routes/notes'; + +import { persistPinnedEventRoute } from '../lib/timeline/routes/pinned_events'; + import { SetupPlugins } from '../plugin'; import { ConfigType } from '../config'; import { installPrepackedTimelinesRoute } from '../lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines'; -import { getTimelineRoute } from '../lib/timeline/routes/timelines/get_timeline'; export const initRoutes = ( router: SecuritySolutionPluginRouter, @@ -68,7 +78,7 @@ export const initRoutes = ( deleteRulesBulkRoute(router); createTimelinesRoute(router, config, security); - updateTimelinesRoute(router, config, security); + patchTimelinesRoute(router, config, security); importRulesRoute(router, config, ml); exportRulesRoute(router, config); @@ -76,10 +86,16 @@ export const initRoutes = ( exportTimelinesRoute(router, config, security); getDraftTimelinesRoute(router, config, security); getTimelineRoute(router, config, security); + getTimelinesRoute(router, config, security); cleanDraftTimelinesRoute(router, config, security); + deleteTimelinesRoute(router, config, security); + persistFavoriteRoute(router, config, security); installPrepackedTimelinesRoute(router, config, security); + persistNoteRoute(router, config, security); + persistPinnedEventRoute(router, config, security); + findRulesStatusesRoute(router); // Detection Engine Signals routes that have the REST endpoints of /api/detection_engine/signals diff --git a/x-pack/plugins/security_solution/server/utils/build_query/create_options.test.ts b/x-pack/plugins/security_solution/server/utils/build_query/create_options.test.ts deleted file mode 100644 index 4697f02ad5486..0000000000000 --- a/x-pack/plugins/security_solution/server/utils/build_query/create_options.test.ts +++ /dev/null @@ -1,176 +0,0 @@ -/* - * 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 { omit } from 'lodash/fp'; - -import { DEFAULT_INDEX_PATTERN } from '../../../common/constants'; -import { Direction } from '../../graphql/types'; -import { RequestOptions } from '../../lib/framework'; - -import { Args, Configuration, createOptions, FieldNodes } from './create_options'; - -describe('createOptions', () => { - let source: Configuration; - let args: Args; - let info: FieldNodes; - beforeEach(() => { - source = { - configuration: { - fields: { - host: 'host-1', - container: 'container-1', - message: ['message-1'], - pod: 'pod-1', - tiebreaker: 'tiebreaker', - timestamp: 'timestamp-1', - }, - }, - }; - args = { - defaultIndex: DEFAULT_INDEX_PATTERN, - pagination: { - limit: 5, - }, - docValueFields: [ - { - field: '@timestamp', - format: 'date_time', - }, - { - field: 'event.end', - format: 'date_time', - }, - ], - timerange: { - from: '2020-07-08T08:00:00.000Z', - to: '2020-07-08T20:00:00.000Z', - interval: '12 hours ago', - }, - sortField: { sortFieldId: 'sort-1', direction: Direction.asc }, - }; - info = { - fieldNodes: [ - { - name: { - kind: 'Name', - value: 'value-1', - }, - kind: 'Field', - }, - ], - }; - }); - - test('should create options given all input including sort field', () => { - const options = createOptions(source, args, info); - const expected: RequestOptions = { - defaultIndex: DEFAULT_INDEX_PATTERN, - sourceConfiguration: { - fields: { - host: 'host-1', - container: 'container-1', - message: ['message-1'], - pod: 'pod-1', - tiebreaker: 'tiebreaker', - timestamp: 'timestamp-1', - }, - }, - sortField: { sortFieldId: 'sort-1', direction: Direction.asc }, - pagination: { - limit: 5, - }, - filterQuery: {}, - docValueFields: [ - { - field: '@timestamp', - format: 'date_time', - }, - { - field: 'event.end', - format: 'date_time', - }, - ], - fields: [], - timerange: { - from: '2020-07-08T08:00:00.000Z', - to: '2020-07-08T20:00:00.000Z', - interval: '12 hours ago', - }, - }; - expect(options).toEqual(expected); - }); - - test('should create options given all input except sorting', () => { - const argsWithoutSort: Args = omit('sortField', args); - const options = createOptions(source, argsWithoutSort, info); - const expected: RequestOptions = { - defaultIndex: DEFAULT_INDEX_PATTERN, - sourceConfiguration: { - fields: { - host: 'host-1', - container: 'container-1', - message: ['message-1'], - pod: 'pod-1', - tiebreaker: 'tiebreaker', - timestamp: 'timestamp-1', - }, - }, - pagination: { - limit: 5, - }, - filterQuery: {}, - docValueFields: [ - { - field: '@timestamp', - format: 'date_time', - }, - { - field: 'event.end', - format: 'date_time', - }, - ], - fields: [], - timerange: { - from: '2020-07-08T08:00:00.000Z', - to: '2020-07-08T20:00:00.000Z', - interval: '12 hours ago', - }, - }; - expect(options).toEqual(expected); - }); - - test('should create options given all input except docValueFields', () => { - const argsWithoutSort: Args = omit('docValueFields', args); - const options = createOptions(source, argsWithoutSort, info); - const expected: RequestOptions = { - defaultIndex: DEFAULT_INDEX_PATTERN, - sourceConfiguration: { - fields: { - host: 'host-1', - container: 'container-1', - message: ['message-1'], - pod: 'pod-1', - tiebreaker: 'tiebreaker', - timestamp: 'timestamp-1', - }, - }, - sortField: { sortFieldId: 'sort-1', direction: Direction.asc }, - pagination: { - limit: 5, - }, - filterQuery: {}, - docValueFields: [], - fields: [], - timerange: { - from: '2020-07-08T08:00:00.000Z', - to: '2020-07-08T20:00:00.000Z', - interval: '12 hours ago', - }, - }; - expect(options).toEqual(expected); - }); -}); diff --git a/x-pack/plugins/security_solution/server/utils/build_query/create_options.ts b/x-pack/plugins/security_solution/server/utils/build_query/create_options.ts deleted file mode 100644 index a882b20f59f47..0000000000000 --- a/x-pack/plugins/security_solution/server/utils/build_query/create_options.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* - * 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 { GraphQLResolveInfo } from 'graphql'; -import { getOr } from 'lodash/fp'; - -import { - PaginationInput, - PaginationInputPaginated, - SortField, - Source, - TimerangeInput, - DocValueFieldsInput, -} from '../../graphql/types'; -import { RequestOptions, RequestOptionsPaginated } from '../../lib/framework'; -import { parseFilterQuery } from '../serialized_query'; - -import { getFields } from '.'; - -export type Configuration = Pick; - -export type FieldNodes = Pick; - -// TODO: Once all the widgets are using sortField, this will be swapped out -// for a generic type Similar to EventsSourceArgs that all GraphQL is using -// and sortField won't be optional and might support multi-sort -export interface Args { - timerange?: TimerangeInput | null; - pagination?: PaginationInput | null; - filterQuery?: string | null; - sortField?: SortField | null; - defaultIndex: string[]; - docValueFields?: DocValueFieldsInput[]; -} -export interface ArgsPaginated { - timerange?: TimerangeInput | null; - pagination?: PaginationInputPaginated | null; - filterQuery?: string | null; - sortField?: SortField | null; - defaultIndex: string[]; - docValueFields?: DocValueFieldsInput[]; -} - -export const createOptions = ( - source: Configuration, - args: Args, - info: FieldNodes, - fieldReplacement: string = 'edges.node.' -): RequestOptions => { - const fields = getFields(getOr([], 'fieldNodes[0]', info)); - return { - defaultIndex: args.defaultIndex, - docValueFields: args.docValueFields ?? [], - sourceConfiguration: source.configuration, - timerange: args.timerange!, - pagination: args.pagination!, - sortField: args.sortField!, - filterQuery: parseFilterQuery(args.filterQuery || ''), - fields: fields - .filter((field) => !field.includes('__typename')) - .map((field) => field.replace(fieldReplacement, '')), - }; -}; - -export const createOptionsPaginated = ( - source: Configuration, - args: ArgsPaginated, - info: FieldNodes, - fieldReplacement: string = 'edges.node.' -): RequestOptionsPaginated => { - const fields = getFields(getOr([], 'fieldNodes[0]', info)); - return { - defaultIndex: args.defaultIndex, - docValueFields: args.docValueFields ?? [], - sourceConfiguration: source.configuration, - timerange: args.timerange!, - pagination: args.pagination!, - sortField: args.sortField!, - filterQuery: parseFilterQuery(args.filterQuery || ''), - fields: fields - .filter((field) => !field.includes('__typename')) - .map((field) => field.replace(fieldReplacement, '')), - }; -}; diff --git a/x-pack/plugins/security_solution/server/utils/serialized_query.ts b/x-pack/plugins/security_solution/server/utils/serialized_query.ts index d323e4a8ed8f5..fb5009eefa318 100644 --- a/x-pack/plugins/security_solution/server/utils/serialized_query.ts +++ b/x-pack/plugins/security_solution/server/utils/serialized_query.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { UserInputError } from 'apollo-server-errors'; import { isEmpty, isPlainObject, isString } from 'lodash/fp'; import { JsonObject } from '../../../../../src/plugins/kibana_utils/common'; @@ -25,9 +24,8 @@ export const parseFilterQuery = (filterQuery: string): JsonObject => { } return {}; } catch (err) { - throw new UserInputError(`Failed to parse query: ${err}`, { - query: filterQuery, - originalError: err, - }); + throw new Error( + `Failed to parse query: ${JSON.stringify(err)}, query: ${JSON.stringify(filterQuery)}` + ); } }; diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 496452f68aa34..ac2e95c47fc27 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -18341,8 +18341,6 @@ "xpack.securitySolution.containers.detectionEngine.createPrePackagedTimelineSuccesDescription": "Elasticから事前にパッケージ化されているタイムラインテンプレートをインストールしました", "xpack.securitySolution.containers.detectionEngine.rulesAndTimelines": "ルールとタイムラインを取得できませんでした", "xpack.securitySolution.containers.detectionEngine.tagFetchFailDescription": "タグを取得できませんでした", - "xpack.securitySolution.containers.errors.dataFetchFailureTitle": "データの取得に失敗", - "xpack.securitySolution.containers.errors.networkFailureTitle": "ネットワーク障害", "xpack.securitySolution.containers.errors.stopJobFailureTitle": "ジョブ停止エラー", "xpack.securitySolution.customizeEventRenderers.customizeEventRenderersDescription": "イベントレンダラーは、イベントで最も関連性が高い詳細情報を自動的に表示し、ストーリーを明らかにします", "xpack.securitySolution.customizeEventRenderers.customizeEventRenderersTitle": "イベントレンダラーのカスタマイズ", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index d2fe57c6b5add..b7645db3b8435 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -18604,8 +18604,6 @@ "xpack.securitySolution.containers.detectionEngine.createPrePackagedTimelineSuccesDescription": "安装 Elastic 预先打包的时间线模板", "xpack.securitySolution.containers.detectionEngine.rulesAndTimelines": "无法提取规则和时间线", "xpack.securitySolution.containers.detectionEngine.tagFetchFailDescription": "无法提取标签", - "xpack.securitySolution.containers.errors.dataFetchFailureTitle": "数据提取失败", - "xpack.securitySolution.containers.errors.networkFailureTitle": "网络故障", "xpack.securitySolution.containers.errors.stopJobFailureTitle": "停止作业失败", "xpack.securitySolution.customizeEventRenderers.customizeEventRenderersDescription": "事件呈现器自动在事件中传送最相关的详情,以揭示其故事", "xpack.securitySolution.customizeEventRenderers.customizeEventRenderersTitle": "定制事件呈现器", diff --git a/x-pack/test/api_integration/apis/security_solution/feature_controls.ts b/x-pack/test/api_integration/apis/security_solution/feature_controls.ts deleted file mode 100644 index da28e28dae769..0000000000000 --- a/x-pack/test/api_integration/apis/security_solution/feature_controls.ts +++ /dev/null @@ -1,203 +0,0 @@ -/* - * 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 gql from 'graphql-tag'; -import { FtrProviderContext } from '../../ftr_provider_context'; - -const introspectionQuery = gql` - query Schema { - __schema { - queryType { - name - } - } - } -`; - -export default function ({ getService }: FtrProviderContext) { - const security = getService('security'); - const spaces = getService('spaces'); - const clientFactory = getService('securitySolutionGraphQLClientFactory'); - - const expectGraphQL403 = (result: any) => { - expect(result.response).to.be(undefined); - expect(result.error).not.to.be(undefined); - expect(result.error).to.have.property('networkError'); - expect(result.error.networkError).to.have.property('statusCode', 403); - }; - - const expectGraphQLResponse = (result: any) => { - expect(result.error).to.be(undefined); - expect(result.response).to.have.property('data'); - expect(result.response.data).to.be.an('object'); - }; - - const executeGraphQLQuery = async (username: string, password: string, spaceId?: string) => { - const queryOptions = { - query: introspectionQuery, - }; - - const basePath = spaceId ? `/s/${spaceId}` : ''; - - const client = clientFactory({ username, password, basePath }); - let error; - let response; - try { - response = await client.query(queryOptions); - } catch (err) { - error = err; - } - return { - error, - response, - }; - }; - - // FLAKY: https://github.com/elastic/kibana/issues/97355 - describe.skip('feature controls', () => { - it(`APIs can't be accessed by user with no privileges`, async () => { - const username = 'logstash_read'; - const roleName = 'logstash_read'; - const password = `${username}-password`; - try { - await security.role.create(roleName, {}); - - await security.user.create(username, { - password, - roles: [roleName], - full_name: 'a kibana user', - }); - - const graphQLResult = await executeGraphQLQuery(username, password); - expectGraphQL403(graphQLResult); - } finally { - await security.role.delete(roleName); - await security.user.delete(username); - } - }); - - it('APIs can be accessed user with global "all" privileges', async () => { - const username = 'global_all'; - const roleName = 'global_all'; - const password = `${username}-password`; - try { - await security.role.create(roleName, { - kibana: [ - { - base: ['all'], - spaces: ['*'], - }, - ], - }); - - await security.user.create(username, { - password, - roles: [roleName], - full_name: 'a kibana user', - }); - - const graphQLResult = await executeGraphQLQuery(username, password); - expectGraphQLResponse(graphQLResult); - } finally { - await security.role.delete(roleName); - await security.user.delete(username); - } - }); - - // this could be any role which doesn't have access to the siem feature - it(`APIs can't be accessed by user with dashboard "all" privileges`, async () => { - const username = 'dashboard_all'; - const roleName = 'dashboard_all'; - const password = `${username}-password`; - try { - await security.role.create(roleName, { - kibana: [ - { - feature: { - dashboard: ['all'], - }, - spaces: ['*'], - }, - ], - }); - - await security.user.create(username, { - password, - roles: [roleName], - full_name: 'a kibana user', - }); - - const graphQLResult = await executeGraphQLQuery(username, password); - expectGraphQL403(graphQLResult); - } finally { - await security.role.delete(roleName); - await security.user.delete(username); - } - }); - - describe('spaces', () => { - // the following tests create a user_1 which has siem read access to space_1 and dashboard all access to space_2 - const space1Id = 'space_1'; - const space2Id = 'space_2'; - - const roleName = 'user_1'; - const username = 'user_1'; - const password = 'user_1-password'; - - before(async () => { - await spaces.create({ - id: space1Id, - name: space1Id, - disabledFeatures: [], - }); - await spaces.create({ - id: space2Id, - name: space2Id, - disabledFeatures: [], - }); - await security.role.create(roleName, { - kibana: [ - { - feature: { - siem: ['read'], - }, - spaces: [space1Id], - }, - { - feature: { - dashboard: ['all'], - }, - spaces: [space2Id], - }, - ], - }); - await security.user.create(username, { - password, - roles: [roleName], - }); - }); - - after(async () => { - await spaces.delete(space1Id); - await spaces.delete(space2Id); - await security.role.delete(roleName); - await security.user.delete(username); - }); - - it('user_1 can access APIs in space_1', async () => { - const graphQLResult = await executeGraphQLQuery(username, password, space1Id); - expectGraphQLResponse(graphQLResult); - }); - - it(`user_1 can't access APIs in space_2`, async () => { - const graphQLResult = await executeGraphQLQuery(username, password, space2Id); - expectGraphQL403(graphQLResult); - }); - }); - }); -} diff --git a/x-pack/test/api_integration/apis/security_solution/index.js b/x-pack/test/api_integration/apis/security_solution/index.js index 57fc712549859..18c315a3b8c3d 100644 --- a/x-pack/test/api_integration/apis/security_solution/index.js +++ b/x-pack/test/api_integration/apis/security_solution/index.js @@ -22,11 +22,10 @@ export default function ({ loadTestFile }) { loadTestFile(require.resolve('./saved_objects/pinned_events')); loadTestFile(require.resolve('./saved_objects/timeline')); loadTestFile(require.resolve('./sources')); - // loadTestFile(require.resolve('./timeline')); + loadTestFile(require.resolve('./timeline')); loadTestFile(require.resolve('./timeline_details')); loadTestFile(require.resolve('./uncommon_processes')); loadTestFile(require.resolve('./users')); loadTestFile(require.resolve('./tls')); - loadTestFile(require.resolve('./feature_controls')); }); } diff --git a/x-pack/test/api_integration/apis/security_solution/saved_objects/helpers.ts b/x-pack/test/api_integration/apis/security_solution/saved_objects/helpers.ts new file mode 100644 index 0000000000000..7265a2caf7dd8 --- /dev/null +++ b/x-pack/test/api_integration/apis/security_solution/saved_objects/helpers.ts @@ -0,0 +1,44 @@ +/* + * 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 Supertest from 'supertest'; +import supertestAsPromised from 'supertest-as-promised'; +import uuid from 'uuid'; +import { TimelineType } from '../../../../../plugins/security_solution/common/types/timeline'; + +export const createBasicTimeline = async ( + supertest: Supertest.SuperTest, + titleToSaved: string +) => + await supertest + .post('/api/timeline') + .set('kbn-xsrf', 'true') + .send({ + timelineId: null, + version: null, + timeline: { + title: titleToSaved, + }, + }); + +export const createBasicTimelineTemplate = async ( + supertest: Supertest.SuperTest, + titleToSaved: string +) => + await supertest + .post('/api/timeline') + .set('kbn-xsrf', 'true') + .send({ + timelineId: null, + version: null, + timeline: { + title: titleToSaved, + templateTimelineId: uuid.v4(), + templateTimelineVersion: 1, + timelineType: TimelineType.template, + }, + }); diff --git a/x-pack/test/api_integration/apis/security_solution/saved_objects/notes.ts b/x-pack/test/api_integration/apis/security_solution/saved_objects/notes.ts index c2ec448c5b5c9..0d4f3a4fb9ea9 100644 --- a/x-pack/test/api_integration/apis/security_solution/saved_objects/notes.ts +++ b/x-pack/test/api_integration/apis/security_solution/saved_objects/notes.ts @@ -6,14 +6,12 @@ */ import expect from '@kbn/expect'; -import gql from 'graphql-tag'; import { FtrProviderContext } from '../../../ftr_provider_context'; -import { persistTimelineNoteMutation } from '../../../../../plugins/security_solution/public/timelines/containers/notes/persist.gql_query'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); - const client = getService('securitySolutionGraphQLClient'); + const supertest = getService('supertest'); describe('Note - Saved Objects', () => { beforeEach(() => esArchiver.load('empty_kibana')); @@ -22,16 +20,17 @@ export default function ({ getService }: FtrProviderContext) { describe('create a note', () => { it('should return a timelineId, timelineVersion, noteId and version', async () => { const myNote = 'world test'; - const response = await client.mutate({ - mutation: persistTimelineNoteMutation, - variables: { + const response = await supertest + .patch('/api/note') + .set('kbn-xsrf', 'true') + .send({ noteId: null, version: null, note: { note: myNote, timelineId: null }, - }, - }); + }); + const { note, noteId, timelineId, timelineVersion, version } = - response.data && response.data.persistNote.note; + response.body.data && response.body.data.persistNote.note; expect(note).to.be(myNote); expect(noteId).to.not.be.empty(); @@ -42,62 +41,32 @@ export default function ({ getService }: FtrProviderContext) { it('if noteId exist update note and return existing noteId and new version', async () => { const myNote = 'world test'; - const response = await client.mutate({ - mutation: persistTimelineNoteMutation, - variables: { + const response = await supertest + .patch('/api/note') + .set('kbn-xsrf', 'true') + .send({ noteId: null, version: null, note: { note: myNote, timelineId: null }, - }, - }); + }); - const { noteId, timelineId, version } = response.data && response.data.persistNote.note; + const { noteId, timelineId, version } = + response.body.data && response.body.data.persistNote.note; const myNewNote = 'new world test'; - const responseToTest = await client.mutate({ - mutation: persistTimelineNoteMutation, - variables: { + const responseToTest = await supertest + .patch('/api/note') + .set('kbn-xsrf', 'true') + .send({ noteId, version, note: { note: myNewNote, timelineId }, - }, - }); - - expect(responseToTest.data!.persistNote.note.note).to.be(myNewNote); - expect(responseToTest.data!.persistNote.note.noteId).to.be(noteId); - expect(responseToTest.data!.persistNote.note.version).to.not.be.eql(version); - }); - }); - - describe('Delete a note', () => { - it('one note', async () => { - const myNote = 'world test'; - const response = await client.mutate({ - mutation: persistTimelineNoteMutation, - variables: { - noteId: null, - version: null, - note: { note: myNote, timelineId: null }, - }, - }); + }); - const { noteId } = response.data && response.data.persistNote.note; - - const responseToTest = await client.mutate({ - mutation: deleteNoteMutation, - variables: { - id: [noteId], - }, - }); - - expect(responseToTest.data!.deleteNote).to.be(true); + expect(responseToTest.body.data!.persistNote.note.note).to.be(myNewNote); + expect(responseToTest.body.data!.persistNote.note.noteId).to.be(noteId); + expect(responseToTest.body.data!.persistNote.note.version).to.not.be.eql(version); }); }); }); } - -const deleteNoteMutation = gql` - mutation DeleteNoteMutation($id: [ID!]!) { - deleteNote(id: $id) - } -`; diff --git a/x-pack/test/api_integration/apis/security_solution/saved_objects/pinned_events.ts b/x-pack/test/api_integration/apis/security_solution/saved_objects/pinned_events.ts index 3f5bf9df7f06f..b77c654b038c2 100644 --- a/x-pack/test/api_integration/apis/security_solution/saved_objects/pinned_events.ts +++ b/x-pack/test/api_integration/apis/security_solution/saved_objects/pinned_events.ts @@ -8,11 +8,10 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; -import { persistTimelinePinnedEventMutation } from '../../../../../plugins/security_solution/public/timelines/containers/pinned_event/persist.gql_query'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); - const client = getService('securitySolutionGraphQLClient'); + const supertest = getService('supertest'); describe('Pinned Events - Saved Objects', () => { beforeEach(() => esArchiver.load('empty_kibana')); @@ -20,15 +19,12 @@ export default function ({ getService }: FtrProviderContext) { describe('Pinned an event', () => { it('return a timelineId, timelineVersion, pinnedEventId and version', async () => { - const response = await client.mutate({ - mutation: persistTimelinePinnedEventMutation, - variables: { - pinnedEventId: null, - eventId: 'bv4QSGsB9v5HJNSH-7fi', - }, + const response = await supertest.patch('/api/pinned_event').set('kbn-xsrf', 'true').send({ + pinnedEventId: null, + eventId: 'bv4QSGsB9v5HJNSH-7fi', }); const { eventId, pinnedEventId, timelineId, timelineVersion, version } = - response.data && response.data.persistPinnedEventOnTimeline; + response.body.data && response.body.data.persistPinnedEventOnTimeline; expect(eventId).to.be('bv4QSGsB9v5HJNSH-7fi'); expect(pinnedEventId).to.not.be.empty(); @@ -40,25 +36,21 @@ export default function ({ getService }: FtrProviderContext) { describe('Unpinned an event', () => { it('return null', async () => { - const response = await client.mutate({ - mutation: persistTimelinePinnedEventMutation, - variables: { - pinnedEventId: null, - eventId: 'bv4QSGsB9v5HJNSH-7fi', - }, + const response = await supertest.patch('/api/pinned_event').set('kbn-xsrf', 'true').send({ + pinnedEventId: null, + eventId: 'bv4QSGsB9v5HJNSH-7fi', }); const { eventId, pinnedEventId } = - response.data && response.data.persistPinnedEventOnTimeline; + response.body.data && response.body.data.persistPinnedEventOnTimeline; - const responseToTest = await client.mutate({ - mutation: persistTimelinePinnedEventMutation, - variables: { + const responseToTest = await supertest + .patch('/api/pinned_event') + .set('kbn-xsrf', 'true') + .send({ pinnedEventId, eventId, - }, - }); - - expect(responseToTest.data!.persistPinnedEventOnTimeline).to.be(null); + }); + expect(responseToTest.body.data!.persistPinnedEventOnTimeline).to.be(null); }); }); }); diff --git a/x-pack/test/api_integration/apis/security_solution/saved_objects/timeline.ts b/x-pack/test/api_integration/apis/security_solution/saved_objects/timeline.ts index c5e9cfbf936ed..ed1d4719b9073 100644 --- a/x-pack/test/api_integration/apis/security_solution/saved_objects/timeline.ts +++ b/x-pack/test/api_integration/apis/security_solution/saved_objects/timeline.ts @@ -6,19 +6,18 @@ */ import expect from '@kbn/expect'; -import ApolloClient from 'apollo-client'; - import { FtrProviderContext } from '../../../ftr_provider_context'; -import { deleteTimelineMutation } from '../../../../../plugins/security_solution/public/timelines/containers/delete/persist.gql_query'; -import { persistTimelineFavoriteMutation } from '../../../../../plugins/security_solution/public/timelines/containers/favorite/persist.gql_query'; -import { persistTimelineMutation } from '../../../../../plugins/security_solution/public/timelines/containers/persist.gql_query'; -import { TimelineResult } from '../../../../../plugins/security_solution/public/graphql/types'; -import { TimelineType } from '../../../../../plugins/security_solution/common/types/timeline'; +import { + TimelineResult, + TimelineType, +} from '../../../../../plugins/security_solution/common/types/timeline'; + +import { createBasicTimeline } from './helpers'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); - const client = getService('securitySolutionGraphQLClient'); + const supertest = getService('supertest'); describe('Timeline - Saved Objects', () => { beforeEach(() => esArchiver.load('empty_kibana')); @@ -27,9 +26,9 @@ export default function ({ getService }: FtrProviderContext) { describe('Persist a timeline', () => { it('Create a timeline just with a title', async () => { const titleToSaved = 'hello title'; - const response = await createBasicTimeline(client, titleToSaved); + const response = await createBasicTimeline(supertest, titleToSaved); const { savedObjectId, title, version } = - response.data && response.data.persistTimeline.timeline; + response.body.data && response.body.data.persistTimeline.timeline; expect(title).to.be(titleToSaved); expect(savedObjectId).to.not.be.empty(); @@ -137,13 +136,11 @@ export default function ({ getService }: FtrProviderContext) { dateRange: { start: '2019-06-10T19:43:20.755Z', end: '2019-06-11T19:43:20.756Z' }, sort: { columnId: '@timestamp', sortDirection: 'desc' }, }; - const response = await client.mutate({ - mutation: persistTimelineMutation, - variables: { - timelineId: null, - version: null, - timeline: timelineObject, - }, + + const response = await supertest.post('/api/timeline').set('kbn-xsrf', 'true').send({ + timelineId: null, + version: null, + timeline: timelineObject, }); const { columns, @@ -156,7 +153,8 @@ export default function ({ getService }: FtrProviderContext) { sort, title, version, - } = response.data && omitTypenameInTimeline(response.data.persistTimeline.timeline); + } = + response.body.data && omitTypenameInTimeline(response.body.data.persistTimeline.timeline); expect(columns.map((col: { id: string }) => col.id)).to.eql( timelineObject.columns.map((col) => col.id) @@ -174,235 +172,245 @@ export default function ({ getService }: FtrProviderContext) { it('Update a timeline with a new title', async () => { const titleToSaved = 'hello title'; - const response = await createBasicTimeline(client, titleToSaved); - const { savedObjectId, version } = response.data && response.data.persistTimeline.timeline; + const response = await createBasicTimeline(supertest, titleToSaved); + const { savedObjectId, version } = + response.body.data && response.body.data.persistTimeline.timeline; const newTitle = 'new title'; - const responseToTest = await client.mutate({ - mutation: persistTimelineMutation, - variables: { + + const responseToTest = await supertest + .patch('/api/timeline') + .set('kbn-xsrf', 'true') + .send({ timelineId: savedObjectId, version, timeline: { title: newTitle, }, - }, - }); - - expect(responseToTest.data!.persistTimeline.timeline.savedObjectId).to.eql(savedObjectId); - expect(responseToTest.data!.persistTimeline.timeline.title).to.be(newTitle); - expect(responseToTest.data!.persistTimeline.timeline.version).to.not.be.eql(version); + }); + expect(responseToTest.body.data!.persistTimeline.timeline.savedObjectId).to.eql( + savedObjectId + ); + expect(responseToTest.body.data!.persistTimeline.timeline.title).to.be(newTitle); + expect(responseToTest.body.data!.persistTimeline.timeline.version).to.not.be.eql(version); }); }); describe('Persist favorite', () => { it('to an existing timeline', async () => { const titleToSaved = 'hello title'; - const response = await createBasicTimeline(client, titleToSaved); - const { savedObjectId, version } = response.data && response.data.persistTimeline.timeline; + const response = await createBasicTimeline(supertest, titleToSaved); - const responseToTest = await client.mutate({ - mutation: persistTimelineFavoriteMutation, - variables: { + const { savedObjectId, version } = + response.body.data && response.body.data.persistTimeline.timeline; + + const responseToTest = await supertest + .patch('/api/timeline/_favorite') + .set('kbn-xsrf', 'true') + .send({ timelineId: savedObjectId, templateTimelineId: null, templateTimelineVersion: null, timelineType: TimelineType.default, - }, - }); - - expect(responseToTest.data!.persistFavorite.savedObjectId).to.be(savedObjectId); - expect(responseToTest.data!.persistFavorite.favorite.length).to.be(1); - expect(responseToTest.data!.persistFavorite.version).to.not.be.eql(version); - expect(responseToTest.data!.persistFavorite.templateTimelineId).to.be.eql(null); - expect(responseToTest.data!.persistFavorite.templateTimelineVersion).to.be.eql(null); - expect(responseToTest.data!.persistFavorite.timelineType).to.be.eql(TimelineType.default); + }); + + expect(responseToTest.body.data!.persistFavorite.savedObjectId).to.be(savedObjectId); + expect(responseToTest.body.data!.persistFavorite.favorite.length).to.be(1); + expect(responseToTest.body.data!.persistFavorite.version).to.not.be.eql(version); + expect(responseToTest.body.data!.persistFavorite.templateTimelineId).to.be.eql(null); + expect(responseToTest.body.data!.persistFavorite.templateTimelineVersion).to.be.eql(null); + expect(responseToTest.body.data!.persistFavorite.timelineType).to.be.eql( + TimelineType.default + ); }); it('to an existing timeline template', async () => { const titleToSaved = 'hello title'; const templateTimelineIdFromStore = 'f4a90a2d-365c-407b-9fef-c1dcb33a6ab3'; const templateTimelineVersionFromStore = 1; - const response = await createBasicTimeline(client, titleToSaved); - const { savedObjectId, version } = response.data && response.data.persistTimeline.timeline; - - const responseToTest = await client.mutate({ - mutation: persistTimelineFavoriteMutation, - variables: { + const response = await createBasicTimeline(supertest, titleToSaved); + const { savedObjectId, version } = + response.body.data && response.body.data.persistTimeline.timeline; + + const responseToTest = await supertest + .patch('/api/timeline/_favorite') + .set('kbn-xsrf', 'true') + .send({ timelineId: savedObjectId, templateTimelineId: templateTimelineIdFromStore, templateTimelineVersion: templateTimelineVersionFromStore, timelineType: TimelineType.template, - }, - }); - - expect(responseToTest.data!.persistFavorite.savedObjectId).to.be(savedObjectId); - expect(responseToTest.data!.persistFavorite.favorite.length).to.be(1); - expect(responseToTest.data!.persistFavorite.version).to.not.be.eql(version); - expect(responseToTest.data!.persistFavorite.templateTimelineId).to.be.eql( + }); + expect(responseToTest.body.data!.persistFavorite.savedObjectId).to.be(savedObjectId); + expect(responseToTest.body.data!.persistFavorite.favorite.length).to.be(1); + expect(responseToTest.body.data!.persistFavorite.version).to.not.be.eql(version); + expect(responseToTest.body.data!.persistFavorite.templateTimelineId).to.be.eql( templateTimelineIdFromStore ); - expect(responseToTest.data!.persistFavorite.templateTimelineVersion).to.be.eql( + expect(responseToTest.body.data!.persistFavorite.templateTimelineVersion).to.be.eql( templateTimelineVersionFromStore ); - expect(responseToTest.data!.persistFavorite.timelineType).to.be.eql(TimelineType.template); + expect(responseToTest.body.data!.persistFavorite.timelineType).to.be.eql( + TimelineType.template + ); }); it('to Unfavorite an existing timeline', async () => { const titleToSaved = 'hello title'; - const response = await createBasicTimeline(client, titleToSaved); - const { savedObjectId, version } = response.data && response.data.persistTimeline.timeline; - - await client.mutate({ - mutation: persistTimelineFavoriteMutation, - variables: { - timelineId: savedObjectId, - templateTimelineId: null, - templateTimelineVersion: null, - timelineType: TimelineType.default, - }, + const response = await createBasicTimeline(supertest, titleToSaved); + const { savedObjectId, version } = + response.body.data && response.body.data.persistTimeline.timeline; + + await supertest.patch('/api/timeline/_favorite').set('kbn-xsrf', 'true').send({ + timelineId: savedObjectId, + templateTimelineId: null, + templateTimelineVersion: null, + timelineType: TimelineType.default, }); - const responseToTest = await client.mutate({ - mutation: persistTimelineFavoriteMutation, - variables: { + const responseToTest = await supertest + .patch('/api/timeline/_favorite') + .set('kbn-xsrf', 'true') + .send({ timelineId: savedObjectId, templateTimelineId: null, templateTimelineVersion: null, timelineType: TimelineType.default, - }, - }); - - expect(responseToTest.data!.persistFavorite.savedObjectId).to.be(savedObjectId); - expect(responseToTest.data!.persistFavorite.favorite).to.be.empty(); - expect(responseToTest.data!.persistFavorite.version).to.not.be.eql(version); - expect(responseToTest.data!.persistFavorite.templateTimelineId).to.be.eql(null); - expect(responseToTest.data!.persistFavorite.templateTimelineVersion).to.be.eql(null); - expect(responseToTest.data!.persistFavorite.timelineType).to.be.eql(TimelineType.default); + }); + + expect(responseToTest.body.data!.persistFavorite.savedObjectId).to.be(savedObjectId); + expect(responseToTest.body.data!.persistFavorite.favorite).to.be.empty(); + expect(responseToTest.body.data!.persistFavorite.version).to.not.be.eql(version); + expect(responseToTest.body.data!.persistFavorite.templateTimelineId).to.be.eql(null); + expect(responseToTest.body.data!.persistFavorite.templateTimelineVersion).to.be.eql(null); + expect(responseToTest.body.data!.persistFavorite.timelineType).to.be.eql( + TimelineType.default + ); }); it('to Unfavorite an existing timeline template', async () => { const titleToSaved = 'hello title'; const templateTimelineIdFromStore = 'f4a90a2d-365c-407b-9fef-c1dcb33a6ab3'; const templateTimelineVersionFromStore = 1; - const response = await createBasicTimeline(client, titleToSaved); - const { savedObjectId, version } = response.data && response.data.persistTimeline.timeline; - - await client.mutate({ - mutation: persistTimelineFavoriteMutation, - variables: { - timelineId: savedObjectId, - templateTimelineId: templateTimelineIdFromStore, - templateTimelineVersion: templateTimelineVersionFromStore, - timelineType: TimelineType.template, - }, + const response = await createBasicTimeline(supertest, titleToSaved); + const { savedObjectId, version } = + response.body.data && response.body.data.persistTimeline.timeline; + + await supertest.patch('/api/timeline/_favorite').set('kbn-xsrf', 'true').send({ + timelineId: savedObjectId, + templateTimelineId: templateTimelineIdFromStore, + templateTimelineVersion: templateTimelineVersionFromStore, + timelineType: TimelineType.template, }); - const responseToTest = await client.mutate({ - mutation: persistTimelineFavoriteMutation, - variables: { + const responseToTest = await supertest + .patch('/api/timeline/_favorite') + .set('kbn-xsrf', 'true') + .send({ timelineId: savedObjectId, templateTimelineId: templateTimelineIdFromStore, templateTimelineVersion: templateTimelineVersionFromStore, timelineType: TimelineType.template, - }, - }); + }); - expect(responseToTest.data!.persistFavorite.savedObjectId).to.be(savedObjectId); - expect(responseToTest.data!.persistFavorite.favorite).to.be.empty(); - expect(responseToTest.data!.persistFavorite.version).to.not.be.eql(version); - expect(responseToTest.data!.persistFavorite.templateTimelineId).to.be.eql( + expect(responseToTest.body.data!.persistFavorite.savedObjectId).to.be(savedObjectId); + expect(responseToTest.body.data!.persistFavorite.favorite).to.be.empty(); + expect(responseToTest.body.data!.persistFavorite.version).to.not.be.eql(version); + expect(responseToTest.body.data!.persistFavorite.templateTimelineId).to.be.eql( templateTimelineIdFromStore ); - expect(responseToTest.data!.persistFavorite.templateTimelineVersion).to.be.eql( + expect(responseToTest.body.data!.persistFavorite.templateTimelineVersion).to.be.eql( templateTimelineVersionFromStore ); - expect(responseToTest.data!.persistFavorite.timelineType).to.be.eql(TimelineType.template); + expect(responseToTest.body.data!.persistFavorite.timelineType).to.be.eql( + TimelineType.template + ); }); it('to a timeline without a timelineId', async () => { - const response = await client.mutate({ - mutation: persistTimelineFavoriteMutation, - variables: { + const response = await supertest + .patch('/api/timeline/_favorite') + .set('kbn-xsrf', 'true') + .send({ timelineId: null, templateTimelineId: null, templateTimelineVersion: null, timelineType: TimelineType.default, - }, - }); - - expect(response.data!.persistFavorite.savedObjectId).to.not.be.empty(); - expect(response.data!.persistFavorite.favorite.length).to.be(1); - expect(response.data!.persistFavorite.version).to.not.be.empty(); - expect(response.data!.persistFavorite.templateTimelineId).to.be.eql(null); - expect(response.data!.persistFavorite.templateTimelineVersion).to.be.eql(null); - expect(response.data!.persistFavorite.timelineType).to.be.eql(TimelineType.default); + }); + + expect(response.body.data!.persistFavorite.savedObjectId).to.not.be.empty(); + expect(response.body.data!.persistFavorite.favorite.length).to.be(1); + expect(response.body.data!.persistFavorite.version).to.not.be.empty(); + expect(response.body.data!.persistFavorite.templateTimelineId).to.be.eql(null); + expect(response.body.data!.persistFavorite.templateTimelineVersion).to.be.eql(null); + expect(response.body.data!.persistFavorite.timelineType).to.be.eql(TimelineType.default); }); it('to a timeline template without a timelineId', async () => { const templateTimelineIdFromStore = 'f4a90a2d-365c-407b-9fef-c1dcb33a6ab3'; const templateTimelineVersionFromStore = 1; - const response = await client.mutate({ - mutation: persistTimelineFavoriteMutation, - variables: { + + const response = await supertest + .patch('/api/timeline/_favorite') + .set('kbn-xsrf', 'true') + .send({ timelineId: null, templateTimelineId: templateTimelineIdFromStore, templateTimelineVersion: templateTimelineVersionFromStore, timelineType: TimelineType.template, - }, - }); + }); - expect(response.data!.persistFavorite.savedObjectId).to.not.be.empty(); - expect(response.data!.persistFavorite.favorite.length).to.be(1); - expect(response.data!.persistFavorite.version).to.not.be.empty(); - expect(response.data!.persistFavorite.templateTimelineId).to.be.eql( + expect(response.body.data!.persistFavorite.savedObjectId).to.not.be.empty(); + expect(response.body.data!.persistFavorite.favorite.length).to.be(1); + expect(response.body.data!.persistFavorite.version).to.not.be.empty(); + expect(response.body.data!.persistFavorite.templateTimelineId).to.be.eql( templateTimelineIdFromStore ); - expect(response.data!.persistFavorite.templateTimelineVersion).to.be.eql( + expect(response.body.data!.persistFavorite.templateTimelineVersion).to.be.eql( templateTimelineVersionFromStore ); - expect(response.data!.persistFavorite.timelineType).to.be.eql(TimelineType.template); + expect(response.body.data!.persistFavorite.timelineType).to.be.eql(TimelineType.template); }); }); describe('Delete', () => { it('one timeline', async () => { const titleToSaved = 'hello title'; - const response = await createBasicTimeline(client, titleToSaved); - const { savedObjectId } = response.data && response.data.persistTimeline.timeline; + const response = await createBasicTimeline(supertest, titleToSaved); + const { savedObjectId } = response.body.data && response.body.data.persistTimeline.timeline; - const responseToTest = await client.mutate({ - mutation: deleteTimelineMutation, - variables: { - id: [savedObjectId], - }, - }); + const responseToTest = await supertest + .delete('/api/timeline') + .set('kbn-xsrf', 'true') + .send({ + savedObjectIds: [savedObjectId], + }); - expect(responseToTest.data!.deleteTimeline).to.be(true); + expect(responseToTest.body.data!.deleteTimeline).to.be(true); }); - it('multiple timeline', async () => { + it('multiple timelines', async () => { const titleToSaved = 'hello title'; - const response1 = await createBasicTimeline(client, titleToSaved); + const response1 = await createBasicTimeline(supertest, titleToSaved); const savedObjectId1 = - response1.data && response1.data.persistTimeline.timeline - ? response1.data.persistTimeline.timeline.savedObjectId + response1.body.data && response1.body.data.persistTimeline.timeline + ? response1.body.data.persistTimeline.timeline.savedObjectId : ''; - const response2 = await createBasicTimeline(client, titleToSaved); + const response2 = await createBasicTimeline(supertest, titleToSaved); const savedObjectId2 = - response2.data && response2.data.persistTimeline.timeline - ? response2.data.persistTimeline.timeline.savedObjectId + response2.body.data && response2.body.data.persistTimeline.timeline + ? response2.body.data.persistTimeline.timeline.savedObjectId : ''; - const responseToTest = await client.mutate({ - mutation: deleteTimelineMutation, - variables: { - id: [savedObjectId1, savedObjectId2], - }, - }); + const responseToTest = await supertest + .delete('/api/timeline') + .set('kbn-xsrf', 'true') + .send({ + savedObjectIds: [savedObjectId1, savedObjectId2], + }); - expect(responseToTest.data!.deleteTimeline).to.be(true); + expect(responseToTest.body.data!.deleteTimeline).to.be(true); }); }); }); @@ -413,15 +421,3 @@ const omitTypename = (key: string, value: keyof TimelineResult) => const omitTypenameInTimeline = (timeline: TimelineResult) => JSON.parse(JSON.stringify(timeline), omitTypename); - -const createBasicTimeline = async (client: ApolloClient, titleToSaved: string) => - await client.mutate({ - mutation: persistTimelineMutation, - variables: { - timelineId: null, - version: null, - timeline: { - title: titleToSaved, - }, - }, - }); diff --git a/x-pack/test/api_integration/apis/security_solution/timeline.ts b/x-pack/test/api_integration/apis/security_solution/timeline.ts index 11de9dbff324c..10e082cf44004 100644 --- a/x-pack/test/api_integration/apis/security_solution/timeline.ts +++ b/x-pack/test/api_integration/apis/security_solution/timeline.ts @@ -6,135 +6,54 @@ */ import expect from '@kbn/expect'; +import { + SavedTimeline, + TimelineType, +} from '../../../../plugins/security_solution/common/types/timeline'; -import { Direction } from '../../../../plugins/security_solution/common/search_strategy'; -// @ts-expect-error -import { timelineQuery } from '../../../../plugins/security_solution/public/timelines/containers/index.gql_query'; -// @ts-expect-error -import { GetTimelineQuery } from '../../../../plugins/security_solution/public/graphql/types'; import { FtrProviderContext } from '../../ftr_provider_context'; +import { createBasicTimeline, createBasicTimelineTemplate } from './saved_objects/helpers'; -const TO = '3000-01-01T00:00:00.000Z'; -const FROM = '2000-01-01T00:00:00.000Z'; +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); -// typical values that have to change after an update from "scripts/es_archiver" -const DATA_COUNT = 2; -const HOST_NAME = 'suricata-sensor-amsterdam'; -const TOTAL_COUNT = 96; -const EDGE_LENGTH = 2; -const CURSOR_ID = '1550608949681'; + describe('Timeline', () => { + it('Make sure that we get Timeline data', async () => { + const titleToSaved = 'hello timeline'; + await createBasicTimeline(supertest, titleToSaved); -const FILTER_VALUE = { - bool: { - filter: [ - { - bool: { - should: [{ match_phrase: { 'host.name': HOST_NAME } }], - minimum_should_match: 1, - }, - }, - { - bool: { - filter: [ - { - bool: { - should: [{ range: { '@timestamp': { gte: FROM } } }], - minimum_should_match: 1, - }, - }, - { - bool: { - should: [{ range: { '@timestamp': { lte: TO } } }], - minimum_should_match: 1, - }, - }, - ], - }, - }, - ], - }, -}; + const resp = await supertest.get('/api/timelines').set('kbn-xsrf', 'true'); -export default function ({ getService }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); - const client = getService('securitySolutionGraphQLClient'); + const timelines = resp.body.timeline; - describe('Timeline', () => { - before(() => esArchiver.load('auditbeat/hosts')); - after(() => esArchiver.unload('auditbeat/hosts')); + expect(timelines.length).to.greaterThan(0); + }); + + it('Make sure that pagination is working in Timeline query', async () => { + const titleToSaved = 'hello timeline'; + await createBasicTimeline(supertest, titleToSaved); - it('Make sure that we get Timeline data', () => { - return client - .query({ - query: timelineQuery, - variables: { - sourceId: 'default', - filterQuery: JSON.stringify(FILTER_VALUE), - pagination: { - limit: 2, - cursor: null, - tiebreaker: null, - }, - sortField: { - sortFieldId: 'timestamp', - direction: Direction.desc, - }, - fieldRequested: ['@timestamp', 'host.name'], - defaultIndex: ['auditbeat-*'], - docValueFields: [], - inspect: false, - timerange: { - from: FROM, - to: TO, - interval: '12h', - }, - wait_for_completion_timeout: '10s', - }, - }) - .then((resp) => { - const timeline = resp.data.source.Timeline; - expect(timeline.edges.length).to.be(EDGE_LENGTH); - expect(timeline.edges[0].node.data.length).to.be(DATA_COUNT); - expect(timeline.totalCount).to.be(TOTAL_COUNT); - expect(timeline.pageInfo.endCursor!.value).to.equal(CURSOR_ID); - }); + const resp = await supertest + .get('/api/timelines?page_size=1&page_index=1') + .set('kbn-xsrf', 'true'); + + const timelines = resp.body.timeline; + + expect(timelines.length).to.equal(1); }); - it('Make sure that pagination is working in Timeline query', () => { - return client - .query({ - query: timelineQuery, - variables: { - sourceId: 'default', - filterQuery: JSON.stringify(FILTER_VALUE), - pagination: { - limit: 2, - cursor: CURSOR_ID, - tiebreaker: '191', - }, - sortField: { - sortFieldId: 'timestamp', - direction: Direction.desc, - }, - fieldRequested: ['@timestamp', 'host.name'], - defaultIndex: ['auditbeat-*', 'filebeat-*', 'packetbeat-*', 'winlogbeat-*'], - docValueFields: [], - inspect: false, - timerange: { - from: FROM, - to: TO, - interval: '12h', - }, - wait_for_completion_timeout: '10s', - }, - }) - .then((resp) => { - const timeline = resp.data.source.Timeline; - expect(timeline.edges.length).to.be(EDGE_LENGTH); - expect(timeline.totalCount).to.be(TOTAL_COUNT); - expect(timeline.edges[0].node.data.length).to.be(DATA_COUNT); - expect(timeline.edges[0]!.node.ecs.host!.name).to.eql([HOST_NAME]); - }); + it('Make sure that we get Timeline template data', async () => { + const titleToSaved = 'hello timeline template'; + await createBasicTimelineTemplate(supertest, titleToSaved); + + const resp = await supertest + .get('/api/timelines?timeline_type=template') + .set('kbn-xsrf', 'true'); + + const templates: SavedTimeline[] = resp.body.timeline; + + expect(templates.length).to.greaterThan(0); + expect(templates.filter((t) => t.timelineType === TimelineType.default).length).to.equal(0); }); }); } diff --git a/x-pack/test/api_integration/services/index.ts b/x-pack/test/api_integration/services/index.ts index 39215d3da673a..bf5eaf9618414 100644 --- a/x-pack/test/api_integration/services/index.ts +++ b/x-pack/test/api_integration/services/index.ts @@ -16,10 +16,7 @@ import { EsSupertestWithoutAuthProvider } from './es_supertest_without_auth'; import { SupertestWithoutAuthProvider } from './supertest_without_auth'; import { UsageAPIProvider } from './usage_api'; -import { - SecuritySolutionGraphQLClientProvider, - SecuritySolutionGraphQLClientFactoryProvider, -} from './security_solution_graphql_client'; + import { InfraOpsSourceConfigurationProvider } from './infraops_source_configuration'; import { InfraLogSourceConfigurationProvider } from './infra_log_source_configuration'; import { MachineLearningProvider } from './ml'; @@ -36,8 +33,6 @@ export const services = { esSupertestWithoutAuth: EsSupertestWithoutAuthProvider, infraOpsSourceConfiguration: InfraOpsSourceConfigurationProvider, infraLogSourceConfiguration: InfraLogSourceConfigurationProvider, - securitySolutionGraphQLClient: SecuritySolutionGraphQLClientProvider, - securitySolutionGraphQLClientFactory: SecuritySolutionGraphQLClientFactoryProvider, supertestWithoutAuth: SupertestWithoutAuthProvider, usageAPI: UsageAPIProvider, ml: MachineLearningProvider, diff --git a/x-pack/test/api_integration/services/security_solution_graphql_client.ts b/x-pack/test/api_integration/services/security_solution_graphql_client.ts deleted file mode 100644 index 35514804f56cf..0000000000000 --- a/x-pack/test/api_integration/services/security_solution_graphql_client.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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 { format as formatUrl } from 'url'; -import fetch from 'node-fetch'; -import { InMemoryCache, IntrospectionFragmentMatcher } from 'apollo-cache-inmemory'; -import { ApolloClient } from 'apollo-client'; -import { HttpLink } from 'apollo-link-http'; - -import { FtrProviderContext } from '../ftr_provider_context'; -import introspectionQueryResultData from '../../../plugins/security_solution/public/graphql/introspection.json'; - -interface SecuritySolutionGraphQLClientFactoryOptions { - username?: string; - password?: string; - basePath?: string; -} - -export function SecuritySolutionGraphQLClientProvider(context: FtrProviderContext) { - return SecuritySolutionGraphQLClientFactoryProvider(context)(); -} - -export function SecuritySolutionGraphQLClientFactoryProvider({ getService }: FtrProviderContext) { - const config = getService('config'); - const superAuth: string = config.get('servers.elasticsearch.auth'); - const [superUsername, superPassword] = superAuth.split(':'); - - return function (options?: SecuritySolutionGraphQLClientFactoryOptions) { - const { username = superUsername, password = superPassword, basePath = null } = options || {}; - - const kbnURLWithoutAuth = formatUrl({ ...config.get('servers.kibana'), auth: false }); - - const httpLink = new HttpLink({ - credentials: 'same-origin', - fetch: fetch as any, - headers: { - 'kbn-xsrf': 'xxx', - authorization: `Basic ${Buffer.from(`${username}:${password}`).toString('base64')}`, - }, - uri: `${kbnURLWithoutAuth}${basePath || ''}/api/solutions/security/graphql`, - }); - - return new ApolloClient({ - cache: new InMemoryCache({ - fragmentMatcher: new IntrospectionFragmentMatcher({ - // @ts-expect-error apollo-cache-inmemory types don't match actual introspection data - introspectionQueryResultData, - }), - }), - link: httpLink, - }); - }; -} diff --git a/yarn.lock b/yarn.lock index 528d7f682ac74..bdc6f78f1e860 100644 --- a/yarn.lock +++ b/yarn.lock @@ -326,7 +326,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.12.7", "@babel/parser@^7.13.0", "@babel/parser@^7.2.0", "@babel/parser@^7.4.5", "@babel/parser@^7.7.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.12.7", "@babel/parser@^7.13.0", "@babel/parser@^7.4.5", "@babel/parser@^7.7.0": version "7.13.9" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.9.tgz#ca34cb95e1c2dd126863a84465ae8ef66114be99" integrity sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw== @@ -1163,7 +1163,7 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.12", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.12", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== @@ -1178,7 +1178,7 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.13", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.13", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== @@ -4536,16 +4536,6 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== -"@types/async@2.0.49": - version "2.0.49" - resolved "https://registry.yarnpkg.com/@types/async/-/async-2.0.49.tgz#92e33d13f74c895cb9a7f38ba97db8431ed14bc0" - integrity sha512-Benr3i5odUkvpFkOpzGqrltGdbSs+EVCkEBGXbuR7uT0VzhXKIkhem6PDzHdx5EonA+rfbB3QvP6aDOw5+zp5Q== - -"@types/babel-types@*": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.4.tgz#bfd5b0d0d1ba13e351dff65b6e52783b816826c8" - integrity sha512-WiZhq3SVJHFRgRYLXvpf65XnV6ipVHhnNaNvE8yCimejrGglkg38kEj0JcizqwSHxmPSjcTlig/6JouxLGEhGw== - "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.10" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.10.tgz#ca58fc195dd9734e77e57c6f2df565623636ab40" @@ -4590,13 +4580,6 @@ dependencies: "@babel/types" "^7.3.0" -"@types/babylon@6.16.5": - version "6.16.5" - resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz#1c5641db69eb8cdf378edd25b4be7754beeb48b4" - integrity sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w== - dependencies: - "@types/babel-types" "*" - "@types/base64-js@^1.2.5": version "1.2.5" resolved "https://registry.yarnpkg.com/@types/base64-js/-/base64-js-1.2.5.tgz#582b2476169a6cba460a214d476c744441d873d5" @@ -5052,11 +5035,6 @@ resolved "https://registry.yarnpkg.com/@types/is-function/-/is-function-1.0.0.tgz#1b0b819b1636c7baf0d6785d030d12edf70c3e83" integrity sha512-iTs9HReBu7evG77Q4EC8hZnqRt57irBDkK9nvmHroiOIVwYMQc4IvYvdRgwKfYepunIY7Oh/dBuuld+Gj9uo6w== -"@types/is-glob@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/is-glob/-/is-glob-4.0.0.tgz#fb8a2bff539025d4dcd6d5efe7689e03341b876d" - integrity sha512-zC/2EmD8scdsGIeE+Xg7kP7oi9VP90zgMQtm9Cr25av4V+a+k8slQyiT60qSw8KORYrOKlPXfHwoa1bQbRzskQ== - "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -5398,7 +5376,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@12.12.50", "@types/node@14.14.14", "@types/node@8.10.54", "@types/node@>= 8", "@types/node@>=8.9.0", "@types/node@^10.1.0", "@types/node@^12.0.2": +"@types/node@*", "@types/node@12.12.50", "@types/node@14.14.14", "@types/node@8.10.54", "@types/node@>= 8", "@types/node@>=8.9.0", "@types/node@^10.1.0": version "14.14.14" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.14.tgz#f7fd5f3cc8521301119f63910f0fb965c7d761ae" integrity sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ== @@ -5505,11 +5483,6 @@ dependencies: "@types/node" "*" -"@types/prettier@1.16.1": - version "1.16.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.16.1.tgz#328d1c9b54402e44119398bcb6a31b7bbd606d59" - integrity sha512-db6pZL5QY3JrlCHBhYQzYDci0xnoDuxfseUuguLRr3JNk+bnCfpkK6p8quiUDyO8A0vbpBKkk59Fw125etrNeA== - "@types/prettier@^2.0.0": version "2.0.2" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.2.tgz#5bb52ee68d0f8efa9cc0099920e56be6cc4e37f3" @@ -5954,11 +5927,6 @@ dependencies: "@types/node" "*" -"@types/valid-url@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/valid-url/-/valid-url-1.0.2.tgz#60fa435ce24bfd5ba107b8d2a80796aeaf3a8f45" - integrity sha1-YPpDXOJL/VuhB7jSqAeWrq86j0U= - "@types/vfile-message@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" @@ -6349,21 +6317,6 @@ resolved "https://registry.yarnpkg.com/@wildpeaks/snapshot-dom/-/snapshot-dom-1.6.0.tgz#83297612bf93b97983beafbe6ae71672642ac884" integrity sha512-fCM5tYK6VZ1nhbk3Q11lkf6UOJlOCRU0oScQ8NV8OYBPC58wQmQaOF9g+rk+yhNYf3beybOBr+ZuiNen3B0Bxw== -"@wry/context@^0.4.0": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.4.1.tgz#b3e23ca036035cbad0bd9711269352dd03a6fe3c" - integrity sha512-ZpIrDGek+IU9wkID/TYSgcYeLXsSM2VkbfAxO4NjWBGeM/OrA9KyNmy8msYlAEKPmKxi3mIbXg3jcb3f6pqnaQ== - dependencies: - "@types/node" "^12.0.2" - tslib "^1.9.3" - -"@wry/equality@^0.1.2": - version "0.1.9" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.9.tgz#b13e18b7a8053c6858aa6c85b54911fb31e3a909" - integrity sha512-mB6ceGjpMGz1ZTza8HYnrPGos2mC6So4NhS1PtZ8s4Qt0K7fBiIGhpSxUbQmhwcSWE3no+bYxmI2OL6KuXYmoQ== - dependencies: - tslib "^1.9.3" - "@xobotyi/scrollbar-width@1.9.5": version "1.9.5" resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" @@ -6531,14 +6484,6 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" -aggregate-error@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-2.1.0.tgz#051a9a733ad2e95ab503d84fb81989e6419b8f09" - integrity sha512-rIZJqC4XACGWwmPpi18IhDjIzXTJ93KQwYHXuyMCa0Ak9mtzLIbykuei+0i5EnGDy6ts8JVnSyRnZc2cVIMvVg== - dependencies: - clean-stack "^2.0.0" - indent-string "^3.0.0" - aggregate-error@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" @@ -6729,7 +6674,7 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^3.0.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.0.0, ansi-escapes@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -6909,201 +6854,6 @@ apidoc@^0.25.0: nodemon "^2.0.4" winston "^3.3.3" -apollo-cache-control@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.1.1.tgz#173d14ceb3eb9e7cb53de7eb8b61bee6159d4171" - integrity sha512-XJQs167e9u+e5ybSi51nGYr70NPBbswdvTEHtbtXbwkZ+n9t0SLPvUcoqceayOSwjK1XYOdU/EKPawNdb3rLQA== - dependencies: - graphql-extensions "^0.0.x" - -apollo-cache-inmemory@1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.2.tgz#bbf2e4e1eacdf82b2d526f5c2f3b37e5acee3c5e" - integrity sha512-AyCl3PGFv5Qv1w4N9vlg63GBPHXgMCekZy5mhlS042ji0GW84uTySX+r3F61ZX3+KM1vA4m9hQyctrEGiv5XjQ== - dependencies: - apollo-cache "^1.3.2" - apollo-utilities "^1.3.2" - optimism "^0.9.0" - ts-invariant "^0.4.0" - tslib "^1.9.3" - -apollo-cache@^1.1.14: - version "1.1.14" - resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.1.14.tgz#c7d54cdbc7f544161f78fa5e4bae56650e22f7ad" - integrity sha512-Zmo9nVqpWFogki2QyulX6Xx6KYXMyYWX74grwgsYYUOukl4pIAdtYyK8e874o0QDgzSOq5AYPXjtfkoVpqhCRw== - dependencies: - apollo-utilities "^1.0.18" - -apollo-cache@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.3.2.tgz#df4dce56240d6c95c613510d7e409f7214e6d26a" - integrity sha512-+KA685AV5ETEJfjZuviRTEImGA11uNBp/MJGnaCvkgr+BYRrGLruVKBv6WvyFod27WEB2sp7SsG8cNBKANhGLg== - dependencies: - apollo-utilities "^1.3.2" - tslib "^1.9.3" - -apollo-client@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.3.8.tgz#0384a7210eb601ab88b1c13750da076fc9255b95" - integrity sha512-X5wsBD1be1P/mScGsH5H+2hIE8d78WAfqOvFvBpP+C+jzJ9387uHLyFmYYMLRRqDQ3ihjI4iSID7KEOW2gyCcQ== - dependencies: - "@types/zen-observable" "^0.8.0" - apollo-cache "^1.1.14" - apollo-link "^1.0.0" - apollo-link-dedup "^1.0.0" - apollo-utilities "^1.0.18" - symbol-observable "^1.0.2" - zen-observable "^0.8.0" - optionalDependencies: - "@types/async" "2.0.49" - -apollo-link-dedup@^1.0.0: - version "1.0.9" - resolved "https://registry.yarnpkg.com/apollo-link-dedup/-/apollo-link-dedup-1.0.9.tgz#3c4e4af88ef027cbddfdb857c043fd0574051dad" - integrity sha512-RbuEKpmSHVMtoREMPh2wUFTeh65q+0XPVeqgaOP/rGEAfvLyOMvX0vT2nVaejMohoMxuUnfZwpldXaDFWnlVbg== - dependencies: - apollo-link "^1.2.2" - -apollo-link-error@^1.1.7: - version "1.1.10" - resolved "https://registry.yarnpkg.com/apollo-link-error/-/apollo-link-error-1.1.10.tgz#ce57f0793f0923b598655de5bf5e028d4cf4fba6" - integrity sha512-itG5UV7mQqaalmRkuRsF0cUS4zW2ja8XCbxkMZnIEeN24X3yoJi5hpJeAaEkXf0KgYNsR0+rmtCQNruWyxDnZQ== - dependencies: - apollo-link "^1.2.11" - apollo-link-http-common "^0.2.13" - tslib "^1.9.3" - -apollo-link-http-common@^0.2.13: - version "0.2.13" - resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.13.tgz#c688f6baaffdc7b269b2db7ae89dae7c58b5b350" - integrity sha512-Uyg1ECQpTTA691Fwx5e6Rc/6CPSu4TB4pQRTGIpwZ4l5JDOQ+812Wvi/e3IInmzOZpwx5YrrOfXrtN8BrsDXoA== - dependencies: - apollo-link "^1.2.11" - ts-invariant "^0.3.2" - tslib "^1.9.3" - -apollo-link-http-common@^0.2.15: - version "0.2.15" - resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.15.tgz#304e67705122bf69a9abaded4351b10bc5efd6d9" - integrity sha512-+Heey4S2IPsPyTf8Ag3PugUupASJMW894iVps6hXbvwtg1aHSNMXUYO5VG7iRHkPzqpuzT4HMBanCTXPjtGzxg== - dependencies: - apollo-link "^1.2.13" - ts-invariant "^0.4.0" - tslib "^1.9.3" - -apollo-link-http@^1.5.16: - version "1.5.16" - resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.16.tgz#44fe760bcc2803b8a7f57fc9269173afb00f3814" - integrity sha512-IA3xA/OcrOzINRZEECI6IdhRp/Twom5X5L9jMehfzEo2AXdeRwAMlH5LuvTZHgKD8V1MBnXdM6YXawXkTDSmJw== - dependencies: - apollo-link "^1.2.13" - apollo-link-http-common "^0.2.15" - tslib "^1.9.3" - -apollo-link-schema@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/apollo-link-schema/-/apollo-link-schema-1.1.0.tgz#033fda26ffdbfc809d04892de554867f50e2af8e" - integrity sha512-sqWjse5RfrMAhrXecv0WdSLLdF1R5lI4YpbfkioIeJAkB7VB2o+mgA/+onATYKp214MSjloCDWzkvnVpRPFoBw== - dependencies: - apollo-link "^1.2.2" - -apollo-link-state@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/apollo-link-state/-/apollo-link-state-0.4.1.tgz#65e9e0e12c67936b8c4b12b8438434f393104579" - integrity sha512-69/til4ENfl/Fvf7br2xSsLSBcxcXPbOHVNkzLLejvUZickl93HLO4/fO+uvoBi4dCYRgN17Zr8FwI41ueRx0g== - dependencies: - apollo-utilities "^1.0.8" - graphql-anywhere "^4.1.0-alpha.0" - -apollo-link@^1.0.0, apollo-link@^1.2.2, apollo-link@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.3.tgz#9bd8d5fe1d88d31dc91dae9ecc22474d451fb70d" - integrity sha512-iL9yS2OfxYhigme5bpTbmRyC+Htt6tyo2fRMHT3K1XRL/C5IQDDz37OjpPy4ndx7WInSvfSZaaOTKFja9VWqSw== - dependencies: - apollo-utilities "^1.0.0" - zen-observable-ts "^0.8.10" - -apollo-link@^1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.11.tgz#493293b747ad3237114ccd22e9f559e5e24a194d" - integrity sha512-PQvRCg13VduLy3X/0L79M6uOpTh5iHdxnxYuo8yL7sJlWybKRJwsv4IcRBJpMFbChOOaHY7Og9wgPo6DLKDKDA== - dependencies: - apollo-utilities "^1.2.1" - ts-invariant "^0.3.2" - tslib "^1.9.3" - zen-observable-ts "^0.8.18" - -apollo-link@^1.2.13: - version "1.2.13" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.13.tgz#dff00fbf19dfcd90fddbc14b6a3f9a771acac6c4" - integrity sha512-+iBMcYeevMm1JpYgwDEIDt/y0BB7VWyvlm/7x+TIPNLHCTCMgcEgDuW5kH86iQZWo0I7mNwQiTOz+/3ShPFmBw== - dependencies: - apollo-utilities "^1.3.0" - ts-invariant "^0.4.0" - tslib "^1.9.3" - zen-observable-ts "^0.8.20" - -apollo-server-core@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-1.3.6.tgz#08636243c2de56fa8c267d68dd602cb1fbd323e3" - integrity sha1-CGNiQ8LeVvqMJn1o3WAssfvTI+M= - dependencies: - apollo-cache-control "^0.1.0" - apollo-tracing "^0.1.0" - graphql-extensions "^0.0.x" - -apollo-server-errors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.0.2.tgz#e9cbb1b74d2cd78aed23cd886ca2d0c186323b2b" - integrity sha512-zyWDqAVDCkj9espVsoUpZr9PwDznM8UW6fBfhV+i1br//s2AQb07N6ektZ9pRIEvkhykDZW+8tQbDwAO0vUROg== - -apollo-server-hapi@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/apollo-server-hapi/-/apollo-server-hapi-1.3.6.tgz#44dea128b64c1c10fdd35ac8307896a57ba1f4a8" - integrity sha1-RN6hKLZMHBD901rIMHiWpXuh9Kg= - dependencies: - apollo-server-core "^1.3.6" - apollo-server-module-graphiql "^1.3.4" - boom "^7.1.0" - -apollo-server-module-graphiql@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.3.4.tgz#50399b7c51b7267d0c841529f5173e5fc7304de4" - integrity sha1-UDmbfFG3Jn0MhBUp9Rc+X8cwTeQ= - -apollo-tracing@^0.1.0: - version "0.1.4" - resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.1.4.tgz#5b8ae1b01526b160ee6e552a7f131923a9aedcc7" - integrity sha512-Uv+1nh5AsNmC3m130i2u3IqbS+nrxyVV3KYimH5QKsdPjxxIQB3JAT+jJmpeDxBel8gDVstNmCh82QSLxLSIdQ== - dependencies: - graphql-extensions "~0.0.9" - -apollo-utilities@^1.0.0, apollo-utilities@^1.0.1, apollo-utilities@^1.0.18, apollo-utilities@^1.0.8: - version "1.0.18" - resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.18.tgz#e4ee91534283fde2b744a26caaea120fe6a94f67" - integrity sha512-hHrmsoMYzzzfUlTOPpxr0qRpTLotMkBIQ93Ub7ki2SWdLfYYKrp6/KB8YOUkbCwXxSFvYSV24ccuwUEqZIaHIA== - dependencies: - fast-json-stable-stringify "^2.0.0" - -apollo-utilities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.2.1.tgz#1c3a1ebf5607d7c8efe7636daaf58e7463b41b3c" - integrity sha512-Zv8Udp9XTSFiN8oyXOjf6PMHepD4yxxReLsl6dPUy5Ths7jti3nmlBzZUOxuTWRwZn0MoclqL7RQ5UEJN8MAxg== - dependencies: - fast-json-stable-stringify "^2.0.0" - ts-invariant "^0.2.1" - tslib "^1.9.3" - -apollo-utilities@^1.3.0, apollo-utilities@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.2.tgz#8cbdcf8b012f664cd6cb5767f6130f5aed9115c9" - integrity sha512-JWNHj8XChz7S4OZghV6yc9FNnzEXj285QYp/nLNh943iObycI5GTDO3NGR9Dth12LRrSFMeDOConPfPln+WGfg== - dependencies: - "@wry/equality" "^0.1.2" - fast-json-stable-stringify "^2.0.0" - ts-invariant "^0.4.0" - tslib "^1.9.3" - app-root-dir@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" @@ -7568,7 +7318,7 @@ async@^1.4.2, async@~1.5.2: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.1.4, async@^2.6.1, async@^2.6.2: +async@^2.1.4, async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== @@ -8168,15 +7918,6 @@ babel-traverse@^6.18.0, babel-traverse@^6.26.0: invariant "^2.2.2" lodash "^4.17.4" -babel-types@7.0.0-beta.3: - version "7.0.0-beta.3" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-beta.3.tgz#cd927ca70e0ae8ab05f4aab83778cfb3e6eb20b4" - integrity sha512-36k8J+byAe181OmCMawGhw+DtKO7AwexPVtsPXoMfAkjtZgoCX3bEuHWfdE5sYxRM8dojvtG/+O08M0Z/YDC6w== - dependencies: - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^2.0.0" - babel-types@^6.18.0, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" @@ -8192,11 +7933,6 @@ babelify@10.0.0: resolved "https://registry.yarnpkg.com/babelify/-/babelify-10.0.0.tgz#fe73b1a22583f06680d8d072e25a1e0d1d1d7fb5" integrity sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg== -babylon@7.0.0-beta.47: - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80" - integrity sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ== - babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -8436,7 +8172,7 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -boom@7.x.x, boom@^7.1.0: +boom@7.x.x: version "7.2.2" resolved "https://registry.yarnpkg.com/boom/-/boom-7.2.2.tgz#ac92101451aa5cea901aed07d881dd32b4f08345" integrity sha512-IFUbOa8PS7xqmhIjpeStwT3d09hGkNYQ6aj2iELSTxcVs2u0aKn1NzhkdUQSzsRg1FVkj3uit3I6mXQCBixw+A== @@ -9108,7 +8844,7 @@ callsites@^3.1.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@3.0.x, camel-case@^3.0.0: +camel-case@3.0.x: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= @@ -9316,30 +9052,6 @@ chance@1.0.18: resolved "https://registry.yarnpkg.com/chance/-/chance-1.0.18.tgz#79788fe6fca4c338bf404321c347eecc80f969ee" integrity sha512-g9YLQVHVZS/3F+zIicfB58vjcxopvYQRp7xHzvyDFDhXH1aRZI/JhwSAO0X5qYiQluoGnaNAU6wByD2KTxJN1A== -change-case@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.1.0.tgz#0e611b7edc9952df2e8513b27b42de72647dd17e" - integrity sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw== - dependencies: - camel-case "^3.0.0" - constant-case "^2.0.0" - dot-case "^2.1.0" - header-case "^1.0.0" - is-lower-case "^1.1.0" - is-upper-case "^1.1.0" - lower-case "^1.1.1" - lower-case-first "^1.0.0" - no-case "^2.3.2" - param-case "^2.1.0" - pascal-case "^2.0.0" - path-case "^2.1.0" - sentence-case "^2.1.0" - snake-case "^2.1.0" - swap-case "^1.1.0" - title-case "^2.1.0" - upper-case "^1.1.1" - upper-case-first "^1.1.0" - change-emitter@^0.1.2: version "0.1.6" resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" @@ -9429,7 +9141,7 @@ cheerio@^1.0.0-rc.3: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@2.1.2, chokidar@3.4.3, chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.1, chokidar@^2.1.2, chokidar@^2.1.8, chokidar@^3.2.2, chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.4.3: +chokidar@3.4.3, chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.1, chokidar@^2.1.2, chokidar@^2.1.8, chokidar@^3.2.2, chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== @@ -9629,11 +9341,6 @@ cli-ux@^4.9.0: treeify "^1.1.0" tslib "^1.9.3" -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= - cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" @@ -9898,11 +9605,6 @@ colorette@^1.2.0, colorette@^1.2.1: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== -colornames@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/colornames/-/colornames-1.1.1.tgz#f8889030685c7c4ff9e2a559f5077eb76a816f96" - integrity sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y= - colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -9968,11 +9670,6 @@ commander@2.17.x, commander@~2.17.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - commander@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" @@ -9993,7 +9690,7 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -common-tags@1.8.0, common-tags@^1.8.0: +common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== @@ -10169,14 +9866,6 @@ console-log-level@^1.4.1: resolved "https://registry.yarnpkg.com/console-log-level/-/console-log-level-1.4.1.tgz#9c5a6bb9ef1ef65b05aba83028b0ff894cdf630a" integrity sha512-VZzbIORbP+PPcN/gg3DXClTLPLg5Slwd5fL2MIc+o1qZ4BXBvWyc6QxPk6T/Mkr6IVjRpoAGf32XxP3ZWMVRcQ== -constant-case@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" - integrity sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY= - dependencies: - snake-case "^2.1.0" - upper-case "^1.1.1" - constants-browserify@^1.0.0, constants-browserify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -10323,7 +10012,7 @@ core-js@^1.0.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3, core-js@^2.6.9: +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== @@ -10513,14 +10202,6 @@ cross-env@^6.0.3: dependencies: cross-spawn "^7.0.0" -cross-fetch@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.2.tgz#a47ff4f7fc712daba8f6a695a11c948440d45723" - integrity sha1-pH/09/xxLauo9qaVoRyUhEDUVyM= - dependencies: - node-fetch "2.1.2" - whatwg-fetch "2.0.4" - cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -11768,11 +11449,6 @@ dependency-check@^4.1.0: read-package-json "^2.0.10" resolve "^1.1.7" -deprecated-decorator@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37" - integrity sha1-AJZjF7ehL+kvPMgx91g68ym4bDc= - deprecation@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-1.0.1.tgz#2df79b79005752180816b7b6e079cbd80490d711" @@ -11818,11 +11494,6 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-indent@5.0.0, detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -11830,6 +11501,11 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= + detect-newline@2.X: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -11898,15 +11574,6 @@ diacritics@^1.3.0: resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1" integrity sha1-PvqHMj67hj5mls67AILUj/PW96E= -diagnostics@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.1.tgz#cab6ac33df70c9d9a727490ae43ac995a769b22a" - integrity sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ== - dependencies: - colorspace "1.1.x" - enabled "1.0.x" - kuler "1.0.x" - diff-match-patch@^1.0.0, diff-match-patch@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" @@ -12121,13 +11788,6 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" -dot-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" - integrity sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4= - dependencies: - no-case "^2.2.0" - dot-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" @@ -12478,13 +12138,6 @@ emotion@^9.1.2: babel-plugin-emotion "^9.2.11" create-emotion "^9.2.12" -enabled@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-1.0.2.tgz#965f6513d2c2d1c5f4652b64a2e3396467fc2f93" - integrity sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M= - dependencies: - env-variable "0.0.x" - enabled@2.0.x: version "2.0.0" resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" @@ -12544,11 +12197,6 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== -env-variable@0.0.x: - version "0.0.5" - resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.5.tgz#913dd830bef11e96a039c038d4130604eba37f88" - integrity sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA== - enzyme-adapter-react-16@^1.15.2: version "1.15.2" resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.2.tgz#b16db2f0ea424d58a808f9df86ab6212895a4501" @@ -13722,7 +13370,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs@^0.8.1, fbjs@^0.8.16, fbjs@^0.8.9: +fbjs@^0.8.1, fbjs@^0.8.9: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= @@ -14721,18 +14369,6 @@ glob-watcher@5.0.3, glob-watcher@^5.0.3: just-debounce "^1.0.0" object.defaults "^1.1.0" -glob@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" @@ -15048,219 +14684,11 @@ graphlib@^2.1.8: dependencies: lodash "^4.17.15" -graphql-anywhere@^4.1.0-alpha.0: - version "4.1.16" - resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-4.1.16.tgz#82bb59643e30183cfb7b485ed4262a7b39d8a6c1" - integrity sha512-DNQGxrh2p8w4vQwHIW1Sw65ZDbOr6ktQCeol6itH3LeWy1a3IoZ67jxrhgrHM+Upg8oiazvteSr64VRxJ8n5+g== - dependencies: - apollo-utilities "^1.0.18" - -graphql-code-generator@^0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/graphql-code-generator/-/graphql-code-generator-0.18.2.tgz#080d91f8b44d26d7c69069118ac9f775f3fd5971" - integrity sha512-9ifA5T6hM6qo3RVQz7oYld1R6XYyglT/TanYDoweVEX+6iLxgi0rvGFjFcQ45bPDgLyVkQ9LEsEJuL1YxFmrDw== - dependencies: - "@types/babylon" "6.16.5" - "@types/is-glob" "4.0.0" - "@types/prettier" "1.16.1" - "@types/valid-url" "1.0.2" - babel-types "7.0.0-beta.3" - babylon "7.0.0-beta.47" - chalk "2.4.2" - change-case "3.1.0" - chokidar "2.1.2" - commander "2.19.0" - common-tags "1.8.0" - detect-indent "5.0.0" - glob "7.1.3" - graphql-codegen-core "0.18.2" - graphql-config "2.2.1" - graphql-import "0.7.1" - graphql-tag-pluck "0.6.0" - graphql-toolkit "0.2.0" - graphql-tools "4.0.4" - indent-string "3.2.0" - inquirer "6.2.2" - is-glob "4.0.0" - is-valid-path "0.1.1" - js-yaml "3.13.1" - json-to-pretty-yaml "1.2.2" - listr "0.14.3" - listr-update-renderer "0.5.0" - log-symbols "2.2.0" - log-update "2.3.0" - mkdirp "0.5.1" - prettier "1.16.4" - request "2.88.0" - valid-url "1.0.9" - -graphql-codegen-add@^0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/graphql-codegen-add/-/graphql-codegen-add-0.18.2.tgz#27625f6b6bcfe29076b5f8b02496425eeb360b46" - integrity sha512-X8i3WEjfI2YYS6giE3BZ0LlOlTnae2btuyjU1TAN7Cec+dOI5XzRz25cPRi6D1Y0++j2h480e60tgXwMORW9pA== - dependencies: - graphql-codegen-core "0.18.2" - -graphql-codegen-core@0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/graphql-codegen-core/-/graphql-codegen-core-0.18.2.tgz#205b25d2bdb20a35b986495b60d219a8d02ef266" - integrity sha512-fjfIUrDx0KDdr/jYjUs51+07DvcEc5w9tdid/bNezNzT2iJLtmnnmYLR62an3/PKUnKSOAIKLYxFIBOzsFJH9A== - dependencies: - chalk "2.4.2" - change-case "3.1.0" - common-tags "1.8.0" - graphql-tag "2.10.1" - graphql-toolkit "0.2.0" - graphql-tools "4.0.4" - ts-log "2.1.4" - winston "3.2.1" - -graphql-codegen-introspection@^0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/graphql-codegen-introspection/-/graphql-codegen-introspection-0.18.2.tgz#1e749e342aebe219271dcf4c5c56357ad300921a" - integrity sha512-L71rDI9gFQdcGNHsOnlW8nOtUXsZCFnXvC+faEwNse4P/OGrRm4jLQU/6/EUk92okFCbLytKWNcq1uxD8fiY1Q== - -graphql-codegen-plugin-helpers@0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/graphql-codegen-plugin-helpers/-/graphql-codegen-plugin-helpers-0.18.2.tgz#ce03d02ced0bc28ef2f61e0a5205d85ee7e9ccdb" - integrity sha512-WZahfp95RdePwwPWxnxAHgfkXXEQXNrgX9sGrB//uGfj8lygcf7m/rNZQ4iooUzoqBEkTtJpi7bezWCieNcq2A== - dependencies: - graphql-codegen-core "0.18.2" - import-from "2.1.0" - -graphql-codegen-typescript-client@^0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/graphql-codegen-typescript-client/-/graphql-codegen-typescript-client-0.18.2.tgz#5478f8af83fac8063362fe2905dac20fe02d5548" - integrity sha512-HffKYPrT5jGIRTiWCTst/X3EBpuOHsheI5tKUEf9NfrR8ySWs6PfqZO5fKCFWZOqC9xn7Y75jFXaeH8tgV5y1g== - dependencies: - graphql-codegen-core "0.18.2" - graphql-codegen-plugin-helpers "0.18.2" - graphql-codegen-typescript-common "0.18.2" - -graphql-codegen-typescript-common@0.18.2, graphql-codegen-typescript-common@^0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/graphql-codegen-typescript-common/-/graphql-codegen-typescript-common-0.18.2.tgz#1ccbb3bfa1aeb8664127f881db27c658636465da" - integrity sha512-uGGHd/vgwMlnCNOMQkvMxW8Xz0fqPGjPHROsniRNP1ragsa6KfFBrGu9toHgxv8m3MzC6ZPeoUa3wtwtS9oVnA== - dependencies: - change-case "3.1.0" - common-tags "1.8.0" - graphql-codegen-core "0.18.2" - graphql-codegen-plugin-helpers "0.18.2" - -graphql-codegen-typescript-resolvers@^0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/graphql-codegen-typescript-resolvers/-/graphql-codegen-typescript-resolvers-0.18.2.tgz#fa44b2668285184d2976116c2982c17bc6866a23" - integrity sha512-BlS286ap2hsOjx2a7H6WKcwxfQtjRay9d+P/0u4t6zUkjpFSpHWWYgymVopfckrjHCo/8g+THPFCmUgFg34vKQ== - dependencies: - graphql-codegen-plugin-helpers "0.18.2" - graphql-codegen-typescript-common "0.18.2" - -graphql-codegen-typescript-server@^0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/graphql-codegen-typescript-server/-/graphql-codegen-typescript-server-0.18.2.tgz#2e11607512bdf77b152c554afc18f5210c1785ba" - integrity sha512-1marSv3TCry6IsQd+Hdarq/AhDpgJ3Yg+e9Or3Urv7Fkw4YbhtyGp6AkpBK+DMKlyKFPjpLnmjAaHS3hjrCp3Q== - dependencies: - graphql-codegen-typescript-common "0.18.2" - -graphql-config@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-2.2.1.tgz#5fd0ec77ac7428ca5fb2026cf131be10151a0cb2" - integrity sha512-U8+1IAhw9m6WkZRRcyj8ZarK96R6lQBQ0an4lp76Ps9FyhOXENC5YQOxOFGm5CxPrX2rD0g3Je4zG5xdNJjwzQ== - dependencies: - graphql-import "^0.7.1" - graphql-request "^1.5.0" - js-yaml "^3.10.0" - lodash "^4.17.4" - minimatch "^3.0.4" - -graphql-extensions@^0.0.x, graphql-extensions@~0.0.9: - version "0.0.10" - resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.0.10.tgz#34bdb2546d43f6a5bc89ab23c295ec0466c6843d" - integrity sha512-TnQueqUDCYzOSrpQb3q1ngDSP2otJSF+9yNLrQGPzkMsvnQ+v6e2d5tl+B35D4y+XpmvVnAn4T3ZK28mkILveA== - dependencies: - core-js "^2.5.3" - source-map-support "^0.5.1" - -graphql-fields@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/graphql-fields/-/graphql-fields-1.2.1.tgz#3777112af0bd6f55cc3c7b8f6d7748ab7a1b23bb" - integrity sha512-ufg/dxb78IjQUblNfiaEMkZWD1CwcZjdK0nTEW0dBQyNArxKZI7N+zohZdIdqVJcihPWJod1yymx4NM+1bZjTw== - -graphql-import@0.7.1, graphql-import@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/graphql-import/-/graphql-import-0.7.1.tgz#4add8d91a5f752d764b0a4a7a461fcd93136f223" - integrity sha512-YpwpaPjRUVlw2SN3OPljpWbVRWAhMAyfSba5U47qGMOSsPLi2gYeJtngGpymjm9nk57RFWEpjqwh4+dpYuFAPw== - dependencies: - lodash "^4.17.4" - resolve-from "^4.0.0" - -graphql-request@^1.5.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-1.8.2.tgz#398d10ae15c585676741bde3fc01d5ca948f8fbe" - integrity sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg== - dependencies: - cross-fetch "2.2.2" - -graphql-tag-pluck@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/graphql-tag-pluck/-/graphql-tag-pluck-0.6.0.tgz#d03ab981cd8d31e564d37f8b9bac94a523dc29dd" - integrity sha512-C1SRw5zZtl7CN7mv6Q0abFVSJwG8M+FniFCPqWD+AjQMj9igNPthraMUQ02KSo+j19khR60mksqmFN3BwboFaw== - dependencies: - "@babel/parser" "^7.2.0" - "@babel/traverse" "^7.1.6" - "@babel/types" "^7.2.0" - source-map-support "^0.5.9" - typescript "^3.2.2" - -graphql-tag@2.10.1: - version "2.10.1" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.1.tgz#10aa41f1cd8fae5373eaf11f1f67260a3cad5e02" - integrity sha512-jApXqWBzNXQ8jYa/HLkZJaVw9jgwNqZkywa2zfFn16Iv1Zb7ELNHkJaXHR7Quvd5SIGsy6Ny7SUKATgnu05uEg== - graphql-tag@^2.10.3: version "2.10.3" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.3.tgz#ea1baba5eb8fc6339e4c4cf049dabe522b0edf03" integrity sha512-4FOv3ZKfA4WdOKJeHdz6B3F/vxBLSgmBcGeAFPf4n1F64ltJUvOOerNj0rsJxONQGdhUMynQIvd6LzB+1J5oKA== -graphql-toolkit@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/graphql-toolkit/-/graphql-toolkit-0.2.0.tgz#91364b69911d51bc915269a37963f4ea2d5f335c" - integrity sha512-dMwb+V2u6vwJF70tWuqSxgNal9fK1xcB8JtmCJUStVUh+PjfNrlKH1X5e17vJlN+lRPz1hatr8jH+Q6lTW0jLw== - dependencies: - aggregate-error "2.1.0" - deepmerge "3.2.0" - glob "7.1.3" - graphql-import "0.7.1" - graphql-tag-pluck "0.6.0" - is-glob "4.0.0" - is-valid-path "0.1.1" - lodash "4.17.11" - request "2.88.0" - tslib "^1.9.3" - valid-url "1.0.9" - -graphql-tools@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.4.tgz#ca08a63454221fdde825fe45fbd315eb2a6d566b" - integrity sha512-chF12etTIGVVGy3fCTJ1ivJX2KB7OSG4c6UOJQuqOHCmBQwTyNgCDuejZKvpYxNZiEx7bwIjrodDgDe9RIkjlw== - dependencies: - apollo-link "^1.2.3" - apollo-utilities "^1.0.1" - deprecated-decorator "^0.1.6" - iterall "^1.1.3" - uuid "^3.1.0" - -graphql-tools@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-3.1.1.tgz#d593358f01e7c8b1671a17b70ddb034dea9dbc50" - integrity sha512-yHvPkweUB0+Q/GWH5wIG60bpt8CTwBklCSzQdEHmRUgAdEQKxw+9B7zB3dG7wB3Ym7M7lfrS4Ej+jtDZfA2UXg== - dependencies: - apollo-link "^1.2.2" - apollo-utilities "^1.0.1" - deprecated-decorator "^0.1.6" - iterall "^1.1.3" - uuid "^3.1.0" - graphql@^0.13.2: version "0.13.2" resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.13.2.tgz#4c740ae3c222823e7004096f832e7b93b2108270" @@ -15752,14 +15180,6 @@ he@1.2.0, he@1.2.x, he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -header-case@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d" - integrity sha1-lTWXMZfBRLCWE81l0xfvGZY70C0= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.3" - heap@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" @@ -15821,7 +15241,7 @@ hoek@6.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.0.3.tgz#7884360426d927865a0a1251fc9c59313af5b798" integrity sha512-TU6RyZ/XaQCTWRLrdqZZtZqwxUVr6PDMfi6MlWNURZ7A6czanQqX4pFE1mdOUQR9FdPCsZ0UzL8jI/izZ+eBSQ== -hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0, hoist-non-react-statics@^2.5.5, hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.5, hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -16275,7 +15695,7 @@ import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@2.1.0, import-from@^2.1.0: +import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" integrity sha1-M1238qev/VOqpHHUuAId7ja387E= @@ -16318,11 +15738,6 @@ in-publish@^2.0.0: resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= -indent-string@3.2.0, indent-string@^3.0.0, indent-string@^3.1.0, indent-string@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= - indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" @@ -16330,6 +15745,11 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" +indent-string@^3.0.0, indent-string@^3.1.0, indent-string@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -16405,25 +15825,6 @@ inline-style@^2.0.0: dependencies: dashify "^0.1.0" -inquirer@6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" - integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.0.0" - through "^2.3.6" - inquirer@^7.0.0, inquirer@^7.3.3: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" @@ -16828,13 +16229,6 @@ is-generator@^1.0.2: resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" integrity sha1-wUwhBX7TbjKNuANHlmxpP4hjifM= -is-glob@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" - integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= - dependencies: - is-extglob "^2.1.1" - is-glob@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -16881,20 +16275,6 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-invalid-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-invalid-path/-/is-invalid-path-0.1.0.tgz#307a855b3cf1a938b44ea70d2c61106053714f34" - integrity sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ= - dependencies: - is-glob "^2.0.0" - -is-lower-case@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" - integrity sha1-fhR75HaNxGbbO/shzGCzHmrWk5M= - dependencies: - lower-case "^1.1.0" - is-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" @@ -17142,13 +16522,6 @@ is-unc-path@^1.0.0: dependencies: unc-path-regex "^0.1.2" -is-upper-case@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" - integrity sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8= - dependencies: - upper-case "^1.1.0" - is-url@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" @@ -17164,13 +16537,6 @@ is-valid-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= -is-valid-path@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-valid-path/-/is-valid-path-0.1.1.tgz#110f9ff74c37f663e1ec7915eb451f2db93ac9df" - integrity sha1-EQ+f90w39mPh7HkV60UfLbk6yd8= - dependencies: - is-invalid-path "^0.1.0" - is-weakmap@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" @@ -17383,10 +16749,10 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -iterall@^1.1.3, iterall@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" - integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA== +iterall@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== iterate-iterator@^1.0.1: version "1.0.1" @@ -18109,7 +17475,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.13.1, js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.9.0, js-yaml@~3.13.1: +js-yaml@3.13.1, js-yaml@^3.13.1, js-yaml@^3.9.0, js-yaml@~3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -18268,14 +17634,6 @@ json-stringify-safe@5.0.1, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0. resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json-to-pretty-yaml@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz#f4cd0bd0a5e8fe1df25aaf5ba118b099fd992d5b" - integrity sha1-9M0L0KXo/h3yWq9boRiwmf2ZLVs= - dependencies: - remedial "^1.0.7" - remove-trailing-spaces "^1.0.6" - json2module@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/json2module/-/json2module-0.0.3.tgz#00fb5f4a9b7adfc3f0647c29cb17bcd1979be9b2" @@ -18531,13 +17889,6 @@ knuth-shuffle-seeded@^1.0.6: dependencies: seed-random "~2.2.0" -kuler@1.0.x: - version "1.0.1" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-1.0.1.tgz#ef7c784f36c9fb6e16dd3150d152677b2b0228a6" - integrity sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ== - dependencies: - colornames "^1.1.1" - kuler@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" @@ -18753,7 +18104,7 @@ listr-silent-renderer@^1.1.1: resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= -listr-update-renderer@0.5.0, listr-update-renderer@^0.5.0: +listr-update-renderer@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== @@ -18777,7 +18128,7 @@ listr-verbose-renderer@^0.5.0: date-fns "^1.27.2" figures "^2.0.0" -listr@0.14.3, listr@^0.14.1, listr@^0.14.3: +listr@^0.14.1, listr@^0.14.3: version "0.14.3" resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== @@ -19178,7 +18529,7 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.11, lodash@4.17.15, lodash@>4.17.4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.10.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.2.0, lodash@~4.17.10, lodash@~4.17.15, lodash@~4.17.19, lodash@~4.17.20: +lodash@4.17.15, lodash@>4.17.4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.10.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@~4.17.10, lodash@~4.17.15, lodash@~4.17.19, lodash@~4.17.20: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -19191,13 +18542,6 @@ log-ok@^0.1.1: ansi-green "^0.1.1" success-symbol "^0.1.0" -log-symbols@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - log-symbols@4.0.0, log-symbols@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" @@ -19219,7 +18563,7 @@ log-symbols@^3.0.0: dependencies: chalk "^2.4.2" -log-update@2.3.0, log-update@^2.3.0: +log-update@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= @@ -19228,7 +18572,7 @@ log-update@2.3.0, log-update@^2.3.0: cli-cursor "^2.0.0" wrap-ansi "^3.0.1" -logform@^2.1.1, logform@^2.2.0: +logform@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/logform/-/logform-2.2.0.tgz#40f036d19161fc76b68ab50fdc7fe495544492f2" integrity sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg== @@ -19286,14 +18630,7 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lower-case-first@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" - integrity sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E= - dependencies: - lower-case "^1.1.2" - -lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: +lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= @@ -20383,11 +19720,6 @@ mute-stdout@^1.0.0: resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -20577,7 +19909,7 @@ nise@^1.5.2: lolex "^5.0.1" path-to-regexp "^1.7.0" -no-case@^2.2.0, no-case@^2.3.2: +no-case@^2.2.0: version "2.3.2" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== @@ -20621,7 +19953,7 @@ node-emoji@^1.10.0: dependencies: lodash.toarray "^4.4.0" -node-fetch@2.1.2, node-fetch@^1.0.1, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1: +node-fetch@^1.0.1, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -21244,11 +20576,6 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: dependencies: wrappy "1" -one-time@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-0.0.4.tgz#f8cdf77884826fe4dff93e3a9cc37b1e4480742e" - integrity sha1-+M33eISCb+Tf+T46nMN7HkSAdC4= - one-time@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" @@ -21307,13 +20634,6 @@ oppsy@^2.0.0: dependencies: hoek "5.x.x" -optimism@^0.9.0: - version "0.9.5" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.9.5.tgz#b8b5dc9150e97b79ddbf2d2c6c0e44de4d255527" - integrity sha512-lNvmuBgONAGrUbj/xpH69FjMOz1d0jvMNoOCKyVynUPzq2jgVlGL4jFYJqrUHzUfBv+jAFSCP61x5UkfbduYJA== - dependencies: - "@wry/context" "^0.4.0" - optional-js@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/optional-js/-/optional-js-2.1.1.tgz#c2dc519ad119648510b4d241dbb60b1167c36a46" @@ -21645,7 +20965,7 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -param-case@2.1.x, param-case@^2.1.0: +param-case@2.1.x: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= @@ -21845,14 +21165,6 @@ parseurl@~1.3.2, parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -pascal-case@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e" - integrity sha1-LVeNNFX2YNpl7KGO+VtODekSdh4= - dependencies: - camel-case "^3.0.0" - upper-case-first "^1.1.0" - pascal-case@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" @@ -21879,13 +21191,6 @@ path-browserify@0.0.1, path-browserify@~0.0.0: resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== -path-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" - integrity sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU= - dependencies: - no-case "^2.2.0" - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -22707,11 +22012,6 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@1.16.4: - version "1.16.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" - integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== - prettier@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.0.tgz#8a03c7777883b29b37fb2c4348c66a78e980418b" @@ -23350,17 +22650,6 @@ react-ace@^7.0.5: lodash.isequal "^4.5.0" prop-types "^15.7.2" -react-apollo@^2.1.4: - version "2.1.8" - resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-2.1.8.tgz#ebac0d9bee0f0906df3ce29207f94df337009887" - integrity sha512-HBz9WDhvaqNxahKvBvW915a9MYSbarJ2Nrwh2pCeDctFiZ/bhixX1xJE/Ea0aU6gU5tGDEl+aWjxzx852FXHoA== - dependencies: - fbjs "^0.8.16" - hoist-non-react-statics "^2.5.0" - invariant "^2.2.2" - lodash "^4.17.10" - prop-types "^15.6.0" - react-beautiful-dnd@^13.0.0: version "13.0.0" resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz#f70cc8ff82b84bc718f8af157c9f95757a6c3b40" @@ -24697,11 +23986,6 @@ remark@^13.0.0: remark-stringify "^9.0.0" unified "^9.1.0" -remedial@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/remedial/-/remedial-1.0.8.tgz#a5e4fd52a0e4956adbaf62da63a5a46a78c578a0" - integrity sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg== - remove-accents@0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.4.2.tgz#0a43d3aaae1e80db919e07ae254b285d9e1c7bb5" @@ -24729,11 +24013,6 @@ remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= -remove-trailing-spaces@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/remove-trailing-spaces/-/remove-trailing-spaces-1.0.7.tgz#491f04e11d98880714d12429b0d0938cbe030ae6" - integrity sha512-wjM17CJ2kk0SgoGyJ7ZMzRRCuTq+V8YhMwpZ5XEWX0uaked2OUq6utvHXGNBQrfkUzUUABFMyxlKn+85hMv4dg== - renderkid@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.2.tgz#12d310f255360c07ad8fde253f6c9e9de372d2aa" @@ -24823,7 +24102,7 @@ request-promise@^4.2.2: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@2.81.0, request@2.88.0, request@^2.44.0, request@^2.87.0, request@^2.88.0, request@^2.88.2: +request@2.81.0, request@^2.44.0, request@^2.87.0, request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -25181,7 +24460,7 @@ rtl-css-js@^1.9.0: dependencies: "@babel/runtime" "^7.1.2" -run-async@^2.2.0, run-async@^2.4.0: +run-async@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== @@ -25517,14 +24796,6 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -sentence-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4" - integrity sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ= - dependencies: - no-case "^2.2.0" - upper-case-first "^1.1.2" - serialize-error@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" @@ -25833,13 +25104,6 @@ slide@^1.1.5, slide@~1.1.3: resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -snake-case@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" - integrity sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8= - dependencies: - no-case "^2.2.0" - snap-shot-compare@2.8.3: version "2.8.3" resolved "https://registry.yarnpkg.com/snap-shot-compare/-/snap-shot-compare-2.8.3.tgz#b4982fb7b4e9cd4fa0b03a40a100b5f005b2d515" @@ -25975,7 +25239,7 @@ source-map-support@^0.3.2: dependencies: source-map "0.1.32" -source-map-support@^0.5.1, source-map-support@^0.5.16, source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.12: +source-map-support@^0.5.16, source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.12: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -26515,7 +25779,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -27039,15 +26303,7 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" -swap-case@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" - integrity sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM= - dependencies: - lower-case "^1.1.1" - upper-case "^1.1.1" - -symbol-observable@^1.0.2, symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: +symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -27518,7 +26774,7 @@ tinyqueue@^2.0.3: resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== -title-case@^2.1.0, title-case@^2.1.1: +title-case@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" integrity sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o= @@ -27810,27 +27066,6 @@ ts-essentials@^2.0.3: resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== -ts-invariant@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.2.1.tgz#3d587f9d6e3bded97bf9ec17951dd9814d5a9d3f" - integrity sha512-Z/JSxzVmhTo50I+LKagEISFJW3pvPCqsMWLamCTX8Kr3N5aMrnGOqcflbe5hLUzwjvgPfnLzQtHZv0yWQ+FIHg== - dependencies: - tslib "^1.9.3" - -ts-invariant@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.3.3.tgz#b5742b1885ecf9e29c31a750307480f045ec0b16" - integrity sha512-UReOKsrJFGC9tUblgSRWo+BsVNbEd77Cl6WiV/XpMlkifXwNIJbknViCucHvVZkXSC/mcWeRnIGdY7uprcwvdQ== - dependencies: - tslib "^1.9.3" - -ts-invariant@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.2.tgz#8685131b8083e67c66d602540e78763408be9113" - integrity sha512-PTAAn8lJPEdRBJJEs4ig6MVZWfO12yrFzV7YaPslmyhG7+4MA279y4BXT3f72gXeVl0mC1aAWq2rMX4eKTWU/Q== - dependencies: - tslib "^1.9.3" - ts-loader@^7.0.5: version "7.0.5" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-7.0.5.tgz#789338fb01cb5dc0a33c54e50558b34a73c9c4c5" @@ -27842,11 +27077,6 @@ ts-loader@^7.0.5: micromatch "^4.0.0" semver "^6.0.0" -ts-log@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.4.tgz#063c5ad1cbab5d49d258d18015963489fb6fb59a" - integrity sha512-P1EJSoyV+N3bR/IWFeAqXzKPZwHpnLY6j7j58mAvewHRipo+BQM2Y1f9Y9BjEQznKwgqqZm7H8iuixmssU7tYQ== - ts-morph@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-9.1.0.tgz#10d2088387c71f3c674f82492a3cec1e3538f0dd" @@ -28062,7 +27292,7 @@ typescript-tuple@^2.2.1: dependencies: typescript-compare "^0.0.2" -typescript@4.1.3, typescript@^3.2.2, typescript@^3.3.3333, typescript@^3.5.3, typescript@~3.7.2, typescript@~4.1.2: +typescript@4.1.3, typescript@^3.3.3333, typescript@^3.5.3, typescript@~3.7.2, typescript@~4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== @@ -28596,14 +27826,7 @@ update-notifier@^4.1.1: semver-diff "^3.1.1" xdg-basedir "^4.0.0" -upper-case-first@^1.1.0, upper-case-first@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" - integrity sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU= - dependencies: - upper-case "^1.1.1" - -upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: +upper-case@^1.0.3, upper-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= @@ -28827,7 +28050,7 @@ uuid@^2.0.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= -uuid@^3.1.0, uuid@^3.3.2, uuid@^3.3.3, uuid@^3.4.0: +uuid@^3.3.2, uuid@^3.3.3, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -28880,11 +28103,6 @@ val-loader@^1.1.1: loader-utils "^1.0.0" schema-utils "^0.4.5" -valid-url@1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" - integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= - validate-npm-package-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" @@ -29739,11 +28957,6 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" - integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== - whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" @@ -29876,7 +29089,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -winston-transport@^4.3.0, winston-transport@^4.4.0: +winston-transport@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59" integrity sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw== @@ -29884,21 +29097,6 @@ winston-transport@^4.3.0, winston-transport@^4.4.0: readable-stream "^2.3.7" triple-beam "^1.2.0" -winston@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.2.1.tgz#63061377976c73584028be2490a1846055f77f07" - integrity sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw== - dependencies: - async "^2.6.1" - diagnostics "^1.1.1" - is-stream "^1.1.0" - logform "^2.1.1" - one-time "0.0.4" - readable-stream "^3.1.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.3.0" - winston@^3.0.0, winston@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170" @@ -30360,27 +29558,6 @@ z-schema@~3.18.3: optionalDependencies: commander "^2.7.1" -zen-observable-ts@^0.8.10, zen-observable-ts@^0.8.18: - version "0.8.21" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" - integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - -zen-observable-ts@^0.8.20: - version "0.8.20" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.20.tgz#44091e335d3fcbc97f6497e63e7f57d5b516b163" - integrity sha512-2rkjiPALhOtRaDX6pWyNqK1fnP5KkJJybYebopNSn6wDG1lxBoFs2+nwwXKoA6glHIrtwrfBBy6da0stkKtTAA== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - -zen-observable@^0.8.0: - version "0.8.8" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.8.tgz#1ea93995bf098754a58215a1e0a7309e5749ec42" - integrity sha512-HnhhyNnwTFzS48nihkCZIJGsWGFcYUz+XPDlPK5W84Ifji8SksC6m7sQWOf8zdCGhzQ4tDYuMYGu5B0N1dXTtg== - zip-stream@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.0.4.tgz#3a8f100b73afaa7d1ae9338d910b321dec77ff3a" From 9bfa1050fb852ac77d132d7818dc343ddb3ecfc4 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Mon, 19 Apr 2021 21:15:18 -0400 Subject: [PATCH 32/56] [Fleet] Fix condition to show fleet server migration modal (#97570) --- .../server/services/fleet_server/saved_object_migrations.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts b/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts index e9a73783e32fc..82fd937092477 100644 --- a/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts +++ b/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts @@ -67,8 +67,10 @@ async function migrateAgents() { if (res.total === 0) { hasMore = false; + } else { + hasAgents = true; } - hasAgents = true; + for (const so of res.saved_objects) { try { const { From 1fc1bcdb088acacacc4cc2b83bb4e87d34c0d44d Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Mon, 19 Apr 2021 19:27:17 -0600 Subject: [PATCH 33/56] Skips flaky test Open timeline (#97547) ## Summary See: https://github.com/elastic/kibana/issues/97544 A test failed: ``` Timed out retrying after 60000ms: Expected to find element: `[data-test-subj="title-eb8e97f0-a0ce-11eb-9e0c-db238893b7ff"]`, but never found it. Because this error occurred during a `before all` hook we are skipping the remaining tests in the current suite: `Open timeline` Although you have test retries enabled, we do not retry tests when `before all` or `after all` hooks fail ``` --- .../cypress/integration/timelines/open_timeline.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/cypress/integration/timelines/open_timeline.spec.ts b/x-pack/plugins/security_solution/cypress/integration/timelines/open_timeline.spec.ts index 5d5d125082b8b..320d5979cb070 100644 --- a/x-pack/plugins/security_solution/cypress/integration/timelines/open_timeline.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/timelines/open_timeline.spec.ts @@ -33,7 +33,8 @@ import { waitForTimelinesPanelToBeLoaded } from '../../tasks/timelines'; import { TIMELINES_URL } from '../../urls/navigation'; -describe('Open timeline', () => { +// FLAKY: https://github.com/elastic/kibana/issues/97544 +describe.skip('Open timeline', () => { let timelineId: string | null = null; before(() => { cleanKibana(); From 042fa1a2cea473aa6051ed9da4cc60204257427c Mon Sep 17 00:00:00 2001 From: Nathan L Smith Date: Mon, 19 Apr 2021 22:09:51 -0500 Subject: [PATCH 34/56] Remove alerting feature flag from advanced settings (#97265) * Remove alerting feature flag from advanced settings Make it so the alerting UI in Observability can only be turned on and off in kibana.yml with `xpack.observability.enableAlertingExperience`. We no longer: * Allow turning this on and off for the current space in the advanced settings in Kibana * Allow turning this on on cloud * Send telemetry on whether or not the flag is enabled Add some docs in READMEs as well. --- .../resources/base/bin/kibana-docker | 2 ++ .../server/collectors/management/schema.ts | 4 ---- .../server/collectors/management/types.ts | 1 - src/plugins/telemetry/schema/oss_plugins.json | 6 ----- x-pack/plugins/observability/README.md | 22 +++++++++++++++++ .../observability/common/ui_settings_keys.ts | 1 - .../public/application/application.test.tsx | 2 ++ .../public/application/index.tsx | 5 +++- .../components/app/section/alerts/index.tsx | 6 ++--- .../components/app/section/apm/index.test.tsx | 1 + .../components/app/section/ux/index.test.tsx | 1 + .../public/context/plugin_context.tsx | 2 ++ .../public/hooks/use_time_range.test.ts | 2 ++ x-pack/plugins/observability/public/index.ts | 6 ++++- .../pages/overview/overview.stories.tsx | 1 + x-pack/plugins/observability/public/plugin.ts | 9 +++++-- .../public/utils/test_helper.tsx | 4 +++- x-pack/plugins/observability/server/index.ts | 6 +++++ .../observability/server/ui_settings.ts | 17 +------------ x-pack/plugins/rule_registry/README.md | 24 ++++++++++++++----- x-pack/plugins/rule_registry/server/index.ts | 4 +++- x-pack/plugins/rule_registry/server/plugin.ts | 2 +- .../test/apm_api_integration/configs/index.ts | 2 +- 23 files changed, 84 insertions(+), 46 deletions(-) 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 93e9ba52dce28..c3c8c480f77f2 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 @@ -229,6 +229,7 @@ kibana_vars=( xpack.maps.enabled xpack.maps.showMapVisualizationTypes xpack.ml.enabled + xpack.observability.unsafe.alertingExperience.enabled xpack.reporting.capture.browser.autoDownload xpack.reporting.capture.browser.chromium.disableSandbox xpack.reporting.capture.browser.chromium.inspect @@ -273,6 +274,7 @@ kibana_vars=( xpack.reporting.queue.timeout xpack.reporting.roles.allow xpack.rollup.enabled + xpack.ruleRegistry.unsafe.write.enabled xpack.searchprofiler.enabled xpack.security.audit.enabled xpack.security.audit.appender.type diff --git a/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts b/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts index 142bcef521c15..dfe31b1da3643 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/management/schema.ts @@ -432,10 +432,6 @@ export const stackManagementSchema: MakeSchemaFrom = { type: 'text', _meta: { description: 'Non-default value of setting.' }, }, - 'observability:enableAlertingExperience': { - type: 'boolean', - _meta: { description: 'Non-default value of setting.' }, - }, 'labs:presentation:unifiedToolbar': { type: 'boolean', _meta: { description: 'Non-default value of setting.' }, diff --git a/src/plugins/kibana_usage_collection/server/collectors/management/types.ts b/src/plugins/kibana_usage_collection/server/collectors/management/types.ts index b457adecc1a79..b8bc06d8a6a29 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/management/types.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/management/types.ts @@ -32,7 +32,6 @@ export interface UsageStats { 'securitySolution:rulesTableRefresh': string; 'apm:enableSignificantTerms': boolean; 'apm:enableServiceOverview': boolean; - 'observability:enableAlertingExperience': boolean; 'observability:enableInspectEsQueries': boolean; 'visualize:enableLabs': boolean; 'visualization:heatmap:maxBuckets': number; diff --git a/src/plugins/telemetry/schema/oss_plugins.json b/src/plugins/telemetry/schema/oss_plugins.json index af2c7330c6a4d..6099b3efa803e 100644 --- a/src/plugins/telemetry/schema/oss_plugins.json +++ b/src/plugins/telemetry/schema/oss_plugins.json @@ -8200,12 +8200,6 @@ "description": "Non-default value of setting." } }, - "observability:enableAlertingExperience": { - "type": "boolean", - "_meta": { - "description": "Non-default value of setting." - } - }, "labs:presentation:unifiedToolbar": { "type": "boolean", "_meta": { diff --git a/x-pack/plugins/observability/README.md b/x-pack/plugins/observability/README.md index 0ef0543c2922e..b882891921cde 100644 --- a/x-pack/plugins/observability/README.md +++ b/x-pack/plugins/observability/README.md @@ -2,6 +2,28 @@ This plugin provides shared components and services for use across observability solutions, as well as the observability landing page UI. +## Rules, Alerts, and Cases + +The Observability plugin contains experimental support for improved alerting and +case management. + +If you have: + +```yaml +xpack.observability.unsafe.alertingExperience.enabled: true +``` + +In your Kibana configuration, the Alerts and Cases pages will be available. + +This will only enable the UI for these pages. In order to have alert data indexed +you'll need to enable writing in the [Rule Registry plugin](../rule_registry/README.md): + +```yaml +xpack.ruleRegistry.unsafe.write.enabled: true +``` + +When both of the these are set to `true`, your alerts should show on the alerts page. + ## Unit testing Note: Run the following commands from `kibana/x-pack/plugins/observability`. diff --git a/x-pack/plugins/observability/common/ui_settings_keys.ts b/x-pack/plugins/observability/common/ui_settings_keys.ts index cb6ea799078a2..bd53647488256 100644 --- a/x-pack/plugins/observability/common/ui_settings_keys.ts +++ b/x-pack/plugins/observability/common/ui_settings_keys.ts @@ -5,5 +5,4 @@ * 2.0. */ -export const enableAlertingExperience = 'observability:enableAlertingExperience'; export const enableInspectEsQueries = 'observability:enableInspectEsQueries'; diff --git a/x-pack/plugins/observability/public/application/application.test.tsx b/x-pack/plugins/observability/public/application/application.test.tsx index 34ee22e89e66b..c0b51652a7d0e 100644 --- a/x-pack/plugins/observability/public/application/application.test.tsx +++ b/x-pack/plugins/observability/public/application/application.test.tsx @@ -45,6 +45,7 @@ describe('renderApp', () => { uiSettings: { get: () => false }, http: { basePath: { prepend: (path: string) => path } }, } as unknown) as CoreStart; + const config = { unsafe: { alertingExperience: { enabled: true } } }; const params = ({ element: window.document.createElement('div'), history: createMemoryHistory(), @@ -53,6 +54,7 @@ describe('renderApp', () => { expect(() => { const unmount = renderApp({ + config, core, plugins, appMountParameters: params, diff --git a/x-pack/plugins/observability/public/application/index.tsx b/x-pack/plugins/observability/public/application/index.tsx index aa7d1d037d7b7..8607b57b42666 100644 --- a/x-pack/plugins/observability/public/application/index.tsx +++ b/x-pack/plugins/observability/public/application/index.tsx @@ -22,6 +22,7 @@ import { ObservabilityPublicPluginsStart, ObservabilityRuleRegistry } from '../p import { HasDataContextProvider } from '../context/has_data_context'; import { Breadcrumbs, routes } from '../routes'; import { Storage } from '../../../../../src/plugins/kibana_utils/public'; +import { ConfigSchema } from '..'; function getTitleFromBreadCrumbs(breadcrumbs: Breadcrumbs) { return breadcrumbs.map(({ text }) => text).reverse(); @@ -67,11 +68,13 @@ function App() { } export const renderApp = ({ + config, core, plugins, appMountParameters, observabilityRuleRegistry, }: { + config: ConfigSchema; core: CoreStart; plugins: ObservabilityPublicPluginsStart; observabilityRuleRegistry: ObservabilityRuleRegistry; @@ -91,7 +94,7 @@ export const renderApp = ({ ReactDOM.render( diff --git a/x-pack/plugins/observability/public/components/app/section/alerts/index.tsx b/x-pack/plugins/observability/public/components/app/section/alerts/index.tsx index adc6a0208dc42..0adb9ceb6e9f8 100644 --- a/x-pack/plugins/observability/public/components/app/section/alerts/index.tsx +++ b/x-pack/plugins/observability/public/components/app/section/alerts/index.tsx @@ -21,7 +21,6 @@ import React, { useState } from 'react'; import { EuiSelect } from '@elastic/eui'; import { uniqBy } from 'lodash'; import { Alert } from '../../../../../../alerting/common'; -import { enableAlertingExperience } from '../../../../../common/ui_settings_keys'; import { usePluginContext } from '../../../../hooks/use_plugin_context'; import { SectionContainer } from '..'; @@ -38,10 +37,9 @@ interface Props { } export function AlertsSection({ alerts }: Props) { - const { core } = usePluginContext(); + const { config, core } = usePluginContext(); const [filter, setFilter] = useState(ALL_TYPES); - - const href = core.uiSettings.get(enableAlertingExperience) + const href = config.unsafe.alertingExperience.enabled ? '/app/observability/alerts' : '/app/management/insightsAndAlerting/triggersActions/alerts'; diff --git a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx index 8ff68a0466054..d41f131ef521b 100644 --- a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx +++ b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx @@ -40,6 +40,7 @@ describe('APMSection', () => { http: { basePath: { prepend: jest.fn() } }, } as unknown) as CoreStart, appMountParameters: {} as AppMountParameters, + config: { unsafe: { alertingExperience: { enabled: true } } }, observabilityRuleRegistry: ({ registerType: jest.fn(), getTypeByRuleId: jest.fn(), diff --git a/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx index 290990a5c05a5..fa4d1a744e3ea 100644 --- a/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx +++ b/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx @@ -40,6 +40,7 @@ describe('UXSection', () => { http: { basePath: { prepend: jest.fn() } }, } as unknown) as CoreStart, appMountParameters: {} as AppMountParameters, + config: { unsafe: { alertingExperience: { enabled: true } } }, plugins: ({ data: { query: { diff --git a/x-pack/plugins/observability/public/context/plugin_context.tsx b/x-pack/plugins/observability/public/context/plugin_context.tsx index 7a6daca6e7923..eea259b36d5b9 100644 --- a/x-pack/plugins/observability/public/context/plugin_context.tsx +++ b/x-pack/plugins/observability/public/context/plugin_context.tsx @@ -8,9 +8,11 @@ import { createContext } from 'react'; import { AppMountParameters, CoreStart } from 'kibana/public'; import { ObservabilityPublicPluginsStart, ObservabilityRuleRegistry } from '../plugin'; +import { ConfigSchema } from '..'; export interface PluginContextValue { appMountParameters: AppMountParameters; + config: ConfigSchema; core: CoreStart; plugins: ObservabilityPublicPluginsStart; observabilityRuleRegistry: ObservabilityRuleRegistry; diff --git a/x-pack/plugins/observability/public/hooks/use_time_range.test.ts b/x-pack/plugins/observability/public/hooks/use_time_range.test.ts index 61505d4850dc4..43fbc18062b75 100644 --- a/x-pack/plugins/observability/public/hooks/use_time_range.test.ts +++ b/x-pack/plugins/observability/public/hooks/use_time_range.test.ts @@ -24,6 +24,7 @@ describe('useTimeRange', () => { jest.spyOn(pluginContext, 'usePluginContext').mockImplementation(() => ({ core: {} as CoreStart, appMountParameters: {} as AppMountParameters, + config: { unsafe: { alertingExperience: { enabled: true } } }, plugins: ({ data: { query: { @@ -65,6 +66,7 @@ describe('useTimeRange', () => { jest.spyOn(pluginContext, 'usePluginContext').mockImplementation(() => ({ core: {} as CoreStart, appMountParameters: {} as AppMountParameters, + config: { unsafe: { alertingExperience: { enabled: true } } }, plugins: ({ data: { query: { diff --git a/x-pack/plugins/observability/public/index.ts b/x-pack/plugins/observability/public/index.ts index ee2df9369aa39..b34b1f81467d9 100644 --- a/x-pack/plugins/observability/public/index.ts +++ b/x-pack/plugins/observability/public/index.ts @@ -21,12 +21,16 @@ export type { }; export { enableInspectEsQueries } from '../common/ui_settings_keys'; +export interface ConfigSchema { + unsafe: { alertingExperience: { enabled: boolean } }; +} + export const plugin: PluginInitializer< ObservabilityPublicSetup, ObservabilityPublicStart, ObservabilityPublicPluginsSetup, ObservabilityPublicPluginsStart -> = (context: PluginInitializerContext) => { +> = (context: PluginInitializerContext) => { return new Plugin(context); }; diff --git a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx index 6fc573b11109a..68c39a888692b 100644 --- a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx +++ b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx @@ -45,6 +45,7 @@ const withCore = makeDecorator({ appMountParameters: ({ setHeaderActionMenu: () => {}, } as unknown) as AppMountParameters, + config: { unsafe: { alertingExperience: { enabled: true } } }, core: options as CoreStart, plugins: ({ data: { diff --git a/x-pack/plugins/observability/public/plugin.ts b/x-pack/plugins/observability/public/plugin.ts index 1f56bdebbbb9b..4f9f69a22a6bf 100644 --- a/x-pack/plugins/observability/public/plugin.ts +++ b/x-pack/plugins/observability/public/plugin.ts @@ -32,6 +32,7 @@ import { registerDataHandler } from './data_handler'; import { FormatterRuleRegistry } from './rules/formatter_rule_registry'; import { createCallObservabilityApi } from './services/call_observability_api'; import { toggleOverviewLinkInNav } from './toggle_overview_link_in_nav'; +import { ConfigSchema } from '.'; export type ObservabilityPublicSetup = ReturnType; export type ObservabilityRuleRegistry = ObservabilityPublicSetup['ruleRegistry']; @@ -60,7 +61,9 @@ export class Plugin > { private readonly appUpdater$ = new BehaviorSubject(() => ({})); - constructor(context: PluginInitializerContext) {} + constructor(private readonly initializerContext: PluginInitializerContext) { + this.initializerContext = initializerContext; + } public setup( coreSetup: CoreSetup, @@ -68,6 +71,7 @@ export class Plugin ) { const category = DEFAULT_APP_CATEGORIES.observability; const euiIconType = 'logoObservability'; + const config = this.initializerContext.config.get(); createCallObservabilityApi(coreSetup.http); @@ -84,6 +88,7 @@ export class Plugin const [coreStart, pluginsStart] = await coreSetup.getStartServices(); return renderApp({ + config, core: coreStart, plugins: pluginsStart, appMountParameters: params, @@ -104,7 +109,7 @@ export class Plugin updater$, }); - if (coreSetup.uiSettings.get('observability:enableAlertingExperience')) { + if (config.unsafe.alertingExperience.enabled) { coreSetup.application.register({ id: 'observability-alerts', title: 'Alerts', diff --git a/x-pack/plugins/observability/public/utils/test_helper.tsx b/x-pack/plugins/observability/public/utils/test_helper.tsx index 97916b414330f..63e34b018aed0 100644 --- a/x-pack/plugins/observability/public/utils/test_helper.tsx +++ b/x-pack/plugins/observability/public/utils/test_helper.tsx @@ -31,6 +31,8 @@ export const core = ({ }, } as unknown) as CoreStart; +const config = { unsafe: { alertingExperience: { enabled: true } } }; + const plugins = ({ data: { query: { timefilter: { timefilter: { setTime: jest.fn() } } } }, } as unknown) as ObservabilityPublicPluginsStart; @@ -42,7 +44,7 @@ export const render = (component: React.ReactNode) => { {component} diff --git a/x-pack/plugins/observability/server/index.ts b/x-pack/plugins/observability/server/index.ts index 6785436042f97..ec471df164fe1 100644 --- a/x-pack/plugins/observability/server/index.ts +++ b/x-pack/plugins/observability/server/index.ts @@ -16,12 +16,18 @@ export { rangeQuery, kqlQuery } from './utils/queries'; export * from './types'; export const config = { + exposeToBrowser: { + unsafe: { alertingExperience: { enabled: true } }, + }, schema: schema.object({ enabled: schema.boolean({ defaultValue: true }), annotations: schema.object({ enabled: schema.boolean({ defaultValue: true }), index: schema.string({ defaultValue: 'observability-annotations' }), }), + unsafe: schema.object({ + alertingExperience: schema.object({ enabled: schema.boolean({ defaultValue: false }) }), + }), }), }; diff --git a/x-pack/plugins/observability/server/ui_settings.ts b/x-pack/plugins/observability/server/ui_settings.ts index 43041280d0282..46ae106efe6bc 100644 --- a/x-pack/plugins/observability/server/ui_settings.ts +++ b/x-pack/plugins/observability/server/ui_settings.ts @@ -8,27 +8,12 @@ import { schema } from '@kbn/config-schema'; import { i18n } from '@kbn/i18n'; import { UiSettingsParams } from '../../../../src/core/types'; -import { enableAlertingExperience, enableInspectEsQueries } from '../common/ui_settings_keys'; +import { enableInspectEsQueries } from '../common/ui_settings_keys'; /** * uiSettings definitions for Observability. */ export const uiSettings: Record> = { - [enableAlertingExperience]: { - category: ['observability'], - name: i18n.translate('xpack.observability.enableAlertingExperienceExperimentName', { - defaultMessage: 'Observability alerting experience', - }), - value: false, - description: i18n.translate( - 'xpack.observability.enableAlertingExperienceExperimentDescription', - { - defaultMessage: - 'Enable the experimental alerting experience for Observability. Adds the Alerts and Cases pages.', - } - ), - schema: schema.boolean(), - }, [enableInspectEsQueries]: { category: ['observability'], name: i18n.translate('xpack.observability.enableInspectEsQueriesExperimentName', { diff --git a/x-pack/plugins/rule_registry/README.md b/x-pack/plugins/rule_registry/README.md index 17fe2b20f74fa..2c8f534a63d6b 100644 --- a/x-pack/plugins/rule_registry/README.md +++ b/x-pack/plugins/rule_registry/README.md @@ -1,3 +1,5 @@ +# Rule Registry + The rule registry plugin aims to make it easy for rule type producers to have their rules produce the data that they need to build rich experiences on top of a unified experience, without the risk of mapping conflicts. A rule registry creates a template, an ILM policy, and an alias. The template mappings can be configured. It also injects a client scoped to these indices. @@ -6,7 +8,17 @@ It also supports inheritance, which means that producers can create a registry s The rule registry plugin creates a root rule registry, with the mappings defined needed to create a unified experience. Rule type producers can use the plugin to access the root rule registry, and create their own registry that branches off of the root rule registry. The rule registry client sees data from its own registry, and all registries that branches off of it. It does not see data from its parents. -Creating a rule registry +## Enabling writing + +Set + +```yaml +xpack.ruleRegistry.unsafe.write.enabled: true +``` + +in your Kibana configuration to allow the Rule Registry to write events to the alert indices. + +## Creating a rule registry To create a rule registry, producers should add the `ruleRegistry` plugin to their dependencies. They can then use the `ruleRegistry.create` method to create a child registry, with the additional mappings that should be used by specifying `fieldMap`: @@ -16,7 +28,7 @@ const observabilityRegistry = plugins.ruleRegistry.create({ fieldMap: { ...pickWithPatterns(ecsFieldMap, 'host.name', 'service.name'), }, -}) +}); ``` `fieldMap` is a key-value map of field names and mapping options: @@ -37,13 +49,13 @@ To pick many fields, you can use `pickWithPatterns`, which supports wildcards wi If a registry is created, it will initialise as soon as the core services needed become available. It will create a (versioned) template, alias, and ILM policy, but only if these do not exist yet. -### Rule registry client +## Rule registry client The rule registry client can either be injected in the executor, or created in the scope of a request. It exposes a `search` method and a `bulkIndex` method. When `search` is called, it first gets all the rules the current user has access to, and adds these ids to the search request that it executes. This means that the user can only see data from rules they have access to. Both `search` and `bulkIndex` are fully typed, in the sense that they reflect the mappings defined for the registry. -### Schema +## Schema The following fields are available in the root rule registry: @@ -60,8 +72,8 @@ The following fields are available in the root rule registry: - `kibana.rac.alert.uuid`: the unique identifier for the alert during its lifespan. If an alert recovers (or closes), this identifier is re-generated when it is opened again. - `kibana.rac.alert.status`: the status of the alert. Can be `open` or `closed`. - `kibana.rac.alert.start`: the ISO timestamp of the time at which the alert started. -- `kibana.rac.alert.end`: the ISO timestamp of the time at which the alert recovered. -- `kibana.rac.alert.duration.us`: the duration of the alert, in microseconds. This is always the difference between either the current time, or the time when the alert recovered. +- `kibana.rac.alert.end`: the ISO timestamp of the time at which the alert recovered. +- `kibana.rac.alert.duration.us`: the duration of the alert, in microseconds. This is always the difference between either the current time, or the time when the alert recovered. - `kibana.rac.alert.severity.level`: the severity of the alert, as a keyword (e.g. critical). - `kibana.rac.alert.severity.value`: the severity of the alert, as a numerical value, which allows sorting. diff --git a/x-pack/plugins/rule_registry/server/index.ts b/x-pack/plugins/rule_registry/server/index.ts index 3d492bb690b05..9fd1408fcdb21 100644 --- a/x-pack/plugins/rule_registry/server/index.ts +++ b/x-pack/plugins/rule_registry/server/index.ts @@ -17,7 +17,9 @@ export { ScopedRuleRegistryClient } from './rule_registry/create_scoped_rule_reg export const config = { schema: schema.object({ enabled: schema.boolean({ defaultValue: true }), - writeEnabled: schema.boolean({ defaultValue: false }), + unsafe: schema.object({ + write: schema.object({ enabled: schema.boolean({ defaultValue: false }) }), + }), }), }; diff --git a/x-pack/plugins/rule_registry/server/plugin.ts b/x-pack/plugins/rule_registry/server/plugin.ts index dabedc2849d07..09df47c40a394 100644 --- a/x-pack/plugins/rule_registry/server/plugin.ts +++ b/x-pack/plugins/rule_registry/server/plugin.ts @@ -37,7 +37,7 @@ export class RuleRegistryPlugin implements Plugin Date: Tue, 20 Apr 2021 05:56:18 +0200 Subject: [PATCH 35/56] [Discover] Display toast when adding columns and filters from document flyout (#97270) --- .../discover_grid/discover_grid_flyout.tsx | 20 +++++++++++--- .../components/table/table.test.tsx | 2 +- .../components/table/table_row.tsx | 6 ++++- .../table/table_row_btn_toggle_column.tsx | 10 +++++-- .../apps/discover/_data_grid_doc_table.ts | 26 +++++++++++++++++++ 5 files changed, 57 insertions(+), 7 deletions(-) diff --git a/src/plugins/discover/public/application/components/discover_grid/discover_grid_flyout.tsx b/src/plugins/discover/public/application/components/discover_grid/discover_grid_flyout.tsx index f31399793c0da..3894127891041 100644 --- a/src/plugins/discover/public/application/components/discover_grid/discover_grid_flyout.tsx +++ b/src/plugins/discover/public/application/components/discover_grid/discover_grid_flyout.tsx @@ -178,15 +178,29 @@ export function DiscoverGridFlyout({ indexPattern={indexPattern} filter={(mapping, value, mode) => { onFilter(mapping, value, mode); - onClose(); + services.toastNotifications.addSuccess( + i18n.translate('discover.grid.flyout.toastFilterAdded', { + defaultMessage: `Filter was added`, + }) + ); }} onRemoveColumn={(columnName: string) => { onRemoveColumn(columnName); - onClose(); + services.toastNotifications.addSuccess( + i18n.translate('discover.grid.flyout.toastColumnRemoved', { + defaultMessage: `Column '{columnName}' was removed`, + values: { columnName }, + }) + ); }} onAddColumn={(columnName: string) => { onAddColumn(columnName); - onClose(); + services.toastNotifications.addSuccess( + i18n.translate('discover.grid.flyout.toastColumnAdded', { + defaultMessage: `Column '{columnName}' was added`, + values: { columnName }, + }) + ); }} /> diff --git a/src/plugins/discover/public/application/components/table/table.test.tsx b/src/plugins/discover/public/application/components/table/table.test.tsx index 8997c1d13a474..7539f29c1ec9d 100644 --- a/src/plugins/discover/public/application/components/table/table.test.tsx +++ b/src/plugins/discover/public/application/components/table/table.test.tsx @@ -155,7 +155,7 @@ describe('DocViewTable at Discover', () => { const elementExist = check[element]; if (typeof elementExist === 'boolean') { - const btn = findTestSubject(rowComponent, element); + const btn = findTestSubject(rowComponent, element, '^='); it(`renders ${element} for '${check._property}' correctly`, () => { const disabled = btn.length ? btn.props().disabled : true; diff --git a/src/plugins/discover/public/application/components/table/table_row.tsx b/src/plugins/discover/public/application/components/table/table_row.tsx index 5c6ae49770bc7..e8977fda8576a 100644 --- a/src/plugins/discover/public/application/components/table/table_row.tsx +++ b/src/plugins/discover/public/application/components/table/table_row.tsx @@ -65,7 +65,11 @@ export function DocViewTableRow({ onClick={() => onFilter(fieldMapping, valueRaw, '-')} /> {typeof onToggleColumn === 'function' && ( - + )} void; + fieldname: string; } -export function DocViewTableRowBtnToggleColumn({ onClick, active, disabled = false }: Props) { +export function DocViewTableRowBtnToggleColumn({ + onClick, + active, + disabled = false, + fieldname = '', +}: Props) { if (disabled) { return ( diff --git a/test/functional/apps/discover/_data_grid_doc_table.ts b/test/functional/apps/discover/_data_grid_doc_table.ts index 5499f0250eb73..f8406f4c8a8a9 100644 --- a/test/functional/apps/discover/_data_grid_doc_table.ts +++ b/test/functional/apps/discover/_data_grid_doc_table.ts @@ -22,6 +22,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { defaultIndex: 'logstash-*', 'doc_table:legacy': false, }; + const testSubjects = getService('testSubjects'); describe('discover data grid doc table', function describeIndexTests() { before(async function () { @@ -102,6 +103,31 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await dataGrid.closeFlyout(); }); }); + + it('should show allow adding columns from the detail panel', async function () { + await retry.try(async function () { + await dataGrid.clickRowToggle({ isAnchorRow: false, rowIndex: rowToInspect - 1 }); + + // add columns + const fields = ['_id', '_index', 'agent']; + for (const field of fields) { + await testSubjects.click(`toggleColumnButton_${field}`); + } + + const headerWithFields = await dataGrid.getHeaderFields(); + expect(headerWithFields.join(' ')).to.contain(fields.join(' ')); + + // remove columns + for (const field of fields) { + await testSubjects.click(`toggleColumnButton_${field}`); + } + + const headerWithoutFields = await dataGrid.getHeaderFields(); + expect(headerWithoutFields.join(' ')).not.to.contain(fields.join(' ')); + + await dataGrid.closeFlyout(); + }); + }); }); describe('add and remove columns', function () { From bd5e9ba10a56dce21c61fcfccd92df1edb5a13bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yulia=20=C4=8Cech?= <6585477+yuliacech@users.noreply.github.com> Date: Tue, 20 Apr 2021 08:51:28 +0200 Subject: [PATCH 36/56] [Remote Clusters] Added a11y tests and fixed violations (#96989) * Added a11y tests for Remote Clusters plugin and fixed discovered violations * Added an a11y test for a delete modal * Updated payload type casting Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../common/lib/cluster_serialization.ts | 2 +- .../remote_clusters/common/lib/index.ts | 1 + .../remote_cluster_form.tsx | 4 +- .../remote_cluster_form/request_flyout.tsx | 2 +- .../connection_status/connection_status.js | 10 +- .../detail_panel/detail_panel.js | 114 +++------- .../accessibility/apps/remote_clusters.ts | 204 ++++++++++++++++++ x-pack/test/accessibility/config.ts | 1 + 8 files changed, 247 insertions(+), 91 deletions(-) create mode 100644 x-pack/test/accessibility/apps/remote_clusters.ts diff --git a/x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts b/x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts index 8d3b1b895651a..bf0fc11e882cc 100644 --- a/x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts +++ b/x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts @@ -45,7 +45,7 @@ export interface Cluster { hasDeprecatedProxySetting?: boolean; } -interface ClusterPayloadEs { +export interface ClusterPayloadEs { skip_unavailable?: boolean | null; mode?: 'sniff' | 'proxy' | null; proxy_address?: string | null; diff --git a/x-pack/plugins/remote_clusters/common/lib/index.ts b/x-pack/plugins/remote_clusters/common/lib/index.ts index 7afba67d3622d..b17283511b8b7 100644 --- a/x-pack/plugins/remote_clusters/common/lib/index.ts +++ b/x-pack/plugins/remote_clusters/common/lib/index.ts @@ -10,4 +10,5 @@ export { serializeCluster, Cluster, ClusterInfoEs, + ClusterPayloadEs, } from './cluster_serialization'; diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx index 9f6eee757c755..766f12fedc81c 100644 --- a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx +++ b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx @@ -47,8 +47,8 @@ import { convertCloudUrlToProxyConnection, convertProxyConnectionToCloudUrl, validateCluster, + isCloudUrlEnabled, } from './validators'; -import { isCloudUrlEnabled } from './validators/validate_cloud_url'; const defaultClusterValues: Cluster = { name: '', @@ -369,7 +369,7 @@ export class RemoteClusterForm extends Component { - + {isRequestVisible ? ( { return ( - +

    {name ? ( - - {icon} + {icon} + - - {message} - - + + {message} {!isConnected && mode === SNIFF_MODE && ( diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js b/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js index c25be664896c3..6969f98e5f092 100644 --- a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js +++ b/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js @@ -183,9 +183,9 @@ export class DetailPanel extends Component { mode, }) { return ( - - - + + + - - - - {connectedNodesCount} - - - - - - - {seeds.map((seed) => ( @@ -236,9 +225,11 @@ export class DetailPanel extends Component { ))} - + + - + + - {this.renderSkipUnavailableValue(skipUnavailable)} - - - - - - - {maxConnectionsPerCluster} - - - {initialConnectTimeout} - - - + + + ); } @@ -302,9 +282,9 @@ export class DetailPanel extends Component { serverName, }) { return ( - - - + + + - - - - {connectedSocketsCount ? connectedSocketsCount : '-'} - - - - - - - {proxyAddress} - - + + + + + + + {serverName ? serverName : '-'} + + + + + - {this.renderSkipUnavailableValue(skipUnavailable)} - - - - - - - {proxySocketConnections ? proxySocketConnections : '-'} - - - {initialConnectTimeout} - - - - - - - - - - - - - - - {serverName ? serverName : '-'} - - - - + + + ); } renderCluster(cluster) { return (
    - +

    + ({ + persistent: { + cluster: { + remote: {}, + }, + }, + } as Payload); + +const getPayloadClusterProxyMode = (name: string): Payload => { + const payload = getEmptyPayload(); + payload.persistent.cluster.remote[name] = { + mode: 'proxy', + proxy_address: '127.0.0.1:9302', + server_name: 'test_server', + }; + return payload; +}; + +const getPayloadClusterSniffMode = (name: string): Payload => { + const payload = getEmptyPayload(); + payload.persistent.cluster.remote[name] = { + mode: 'sniff', + seeds: ['127.0.0.1:9301'], + }; + return payload; +}; + +const getDeleteClusterPayload = (name: string): Payload => { + const payload = getEmptyPayload(); + payload.persistent.cluster.remote[name] = { + skip_unavailable: null, + mode: null, + proxy_address: null, + proxy_socket_connections: null, + server_name: null, + seeds: null, + node_connections: null, + proxy: null, + }; + return payload; +}; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['common', 'security']); + const testSubjects = getService('testSubjects'); + const esClient = getService('es'); + const a11y = getService('a11y'); + const retry = getService('retry'); + + describe('Remote Clusters', () => { + beforeEach(async () => { + await PageObjects.common.navigateToApp('remoteClusters'); + }); + + describe('Add remote cluster', () => { + it('renders the list view with empty prompt', async () => { + await retry.waitFor('empty prompt to be rendered', async () => { + return testSubjects.isDisplayed(emptyPrompt); + }); + await a11y.testAppSnapshot(); + }); + + it('renders add remote cluster form', async () => { + await retry.waitFor('add remote cluster button to be rendered', async () => { + return testSubjects.isDisplayed(createButton); + }); + + await testSubjects.click(createButton); + await retry.waitFor('add remote cluster form to be rendered', async () => { + return (await testSubjects.getVisibleText(pageTitle)) === 'Add remote cluster'; + }); + + await a11y.testAppSnapshot(); + }); + + it('renders request flyout', async () => { + await retry.waitFor('add remote cluster button to be rendered', async () => { + return testSubjects.isDisplayed(createButton); + }); + + await testSubjects.click(createButton); + await retry.waitFor('add remote cluster form to be rendered', async () => { + return (await testSubjects.getVisibleText(pageTitle)) === 'Add remote cluster'; + }); + + await testSubjects.click(requestButton); + await retry.waitFor('request flyout to be rendered', async () => { + return (await testSubjects.getVisibleText(requestTitle)) === 'Request'; + }); + + await a11y.testAppSnapshot(); + }); + }); + + const modes = ['sniff', 'proxy']; + + modes.forEach((mode: string) => { + describe(`Edit remote cluster (${mode} mode)`, () => { + const clusterName = mode === 'sniff' ? 'clusterSniffMode' : 'clusterProxyMode'; + const body = + mode === 'sniff' + ? getPayloadClusterSniffMode(clusterName) + : getPayloadClusterProxyMode(clusterName); + before(async () => { + await esClient.cluster.putSettings({ body }); + }); + + after(async () => { + await esClient.cluster.putSettings({ body: getDeleteClusterPayload(clusterName) }); + }); + + it('renders the list view with remote clusters', async () => { + await retry.waitFor('remote clusters list to be rendered', async () => { + return testSubjects.isDisplayed(nameLink); + }); + await a11y.testAppSnapshot(); + }); + + it(`renders remote cluster details flyout (${mode} mode)`, async () => { + await retry.waitFor('remote clusters list to be rendered', async () => { + return testSubjects.isDisplayed(nameLink); + }); + + await testSubjects.click(nameLink); + + await retry.waitFor('remote cluster details to be rendered', async () => { + return (await testSubjects.getVisibleText(detailsTitle)) === clusterName; + }); + + await a11y.testAppSnapshot(); + }); + + it(`renders delete cluster modal (${mode} mode)`, async () => { + await retry.waitFor('remote clusters list to be rendered', async () => { + return testSubjects.isDisplayed(nameLink); + }); + + await testSubjects.click(deleteButton); + + await retry.waitFor('delete cluster modal to be rendered', async () => { + return ( + (await testSubjects.getVisibleText(deleteModalTitle)) === + `Remove remote cluster '${clusterName}'?` + ); + }); + + await a11y.testAppSnapshot(); + }); + + it(`renders edit remote cluster form and request flyout (${mode} mode)`, async () => { + await retry.waitFor('edit remote cluster button to be rendered', async () => { + return testSubjects.isDisplayed(editButton); + }); + + await testSubjects.click(editButton); + await retry.waitFor('edit remote cluster form to be rendered', async () => { + return (await testSubjects.getVisibleText(pageTitle)) === 'Edit remote cluster'; + }); + + await testSubjects.click(requestButton); + await retry.waitFor('request flyout to be rendered', async () => { + return ( + (await testSubjects.getVisibleText(requestTitle)) === `Request for '${clusterName}'` + ); + }); + + await a11y.testAppSnapshot(); + }); + }); + }); + }); +} diff --git a/x-pack/test/accessibility/config.ts b/x-pack/test/accessibility/config.ts index 289247beb4771..5b46e7de1efa4 100644 --- a/x-pack/test/accessibility/config.ts +++ b/x-pack/test/accessibility/config.ts @@ -36,6 +36,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('./apps/canvas'), require.resolve('./apps/security_solution'), require.resolve('./apps/ml_embeddables_in_dashboard'), + require.resolve('./apps/remote_clusters'), ], pageObjects, From 6173583b09a87e26774b1920c314a698c531f41d Mon Sep 17 00:00:00 2001 From: Shahzad Date: Tue, 20 Apr 2021 09:10:14 +0200 Subject: [PATCH 37/56] [Exploratory View] Add monitor duration link for exploratory view (#97418) --- .../monitor_duration/monitor_duration.tsx | 11 ++++++++-- .../monitor_duration_container.tsx | 20 +++++++++++++++++++ .../contexts/uptime_settings_context.tsx | 4 +++- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/monitor/monitor_duration/monitor_duration.tsx b/x-pack/plugins/uptime/public/components/monitor/monitor_duration/monitor_duration.tsx index 9c059441b050e..8066458dfde1a 100644 --- a/x-pack/plugins/uptime/public/components/monitor/monitor_duration/monitor_duration.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/monitor_duration/monitor_duration.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiTitle, EuiSpacer } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiTitle, EuiSpacer, EuiButton } from '@elastic/eui'; import { LocationDurationLine } from '../../../../common/types'; import { MLIntegrationComponent } from '../ml/ml_integeration'; import { AnomalyRecords } from '../../../state/actions'; @@ -18,6 +18,7 @@ interface DurationChartProps { hasMLJob: boolean; anomalies: AnomalyRecords | null; locationDurationLines: LocationDurationLine[]; + exploratoryViewLink: string; } /** @@ -27,6 +28,7 @@ interface DurationChartProps { * @param props The props required for this component to render properly */ export const MonitorDurationComponent = ({ + exploratoryViewLink, locationDurationLines, anomalies, loading, @@ -34,7 +36,7 @@ export const MonitorDurationComponent = ({ }: DurationChartProps) => { return ( - +

    @@ -56,6 +58,11 @@ export const MonitorDurationComponent = ({ + + + + + = ({ monitorId }) => { const { @@ -49,6 +51,23 @@ export const MonitorDuration: React.FC = ({ monitorId }) => { const { lastRefresh } = useContext(UptimeRefreshContext); + const { basePath } = useUptimeSettingsContext(); + + const exploratoryViewLink = createExploratoryViewUrl( + { + [`monitor-duration`]: { + reportType: 'upd', + time: { from: dateRangeStart, to: dateRangeEnd }, + reportDefinitions: { + 'monitor.id': monitorId as string, + }, + breakdown: 'observer.geo.name', + operationType: 'average', + }, + }, + basePath + ); + useEffect(() => { if (isMLAvailable) { const anomalyParams = { @@ -77,6 +96,7 @@ export const MonitorDuration: React.FC = ({ monitorId }) => { anomalies={anomalies} hasMLJob={hasMLJob} loading={loading || jobsLoading} + exploratoryViewLink={exploratoryViewLink} locationDurationLines={durationLines?.locationDurationLines ?? []} /> ); diff --git a/x-pack/plugins/uptime/public/contexts/uptime_settings_context.tsx b/x-pack/plugins/uptime/public/contexts/uptime_settings_context.tsx index 37ee7021eb19f..dacaeb89a5cc5 100644 --- a/x-pack/plugins/uptime/public/contexts/uptime_settings_context.tsx +++ b/x-pack/plugins/uptime/public/contexts/uptime_settings_context.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { createContext, useMemo } from 'react'; +import React, { createContext, useContext, useMemo } from 'react'; import { UptimeAppProps } from '../apps/uptime_app'; import { CLIENT_DEFAULTS, CONTEXT_DEFAULTS } from '../../common/constants'; import { CommonlyUsedRange } from '../components/common/uptime_date_picker'; @@ -66,3 +66,5 @@ export const UptimeSettingsContextProvider: React.FC = ({ childr return ; }; + +export const useUptimeSettingsContext = () => useContext(UptimeSettingsContext); From 0876fce6b9821cf0f4669ce97e30c424124a5257 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Tue, 20 Apr 2021 09:11:44 +0200 Subject: [PATCH 38/56] [ Exploratory view] Add page load dist link for exploratory view (#97352) --- .../ResetPercentileZoom.tsx | 17 ++---- .../PageLoadDistribution/index.tsx | 58 +++++++++++++++---- 2 files changed, 54 insertions(+), 21 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/ResetPercentileZoom.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/ResetPercentileZoom.tsx index 0dd59654f477d..96b0198a870a5 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/ResetPercentileZoom.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/ResetPercentileZoom.tsx @@ -11,6 +11,7 @@ import { EuiHideFor, EuiShowFor, EuiButtonIcon, + EuiFlexItem, } from '@elastic/eui'; import { I18LABELS } from '../translations'; import { PercentileRange } from './index'; @@ -28,27 +29,21 @@ export function ResetPercentileZoom({ const onClick = () => { setPercentileRange({ min: null, max: null }); }; - return ( - <> + return !isDisabled ? ( + - + {I18LABELS.resetZoom} - - ); + + ) : null; } diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx index 050d3b54a200f..b2e8ca5fda805 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx @@ -6,7 +6,14 @@ */ import React, { useState } from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { + EuiButton, + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiTitle, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { useFetcher } from '../../../../hooks/use_fetcher'; import { I18LABELS } from '../translations'; @@ -14,6 +21,8 @@ import { BreakdownFilter } from '../Breakdowns/BreakdownFilter'; import { PageLoadDistChart } from '../Charts/PageLoadDistChart'; import { BreakdownItem } from '../../../../../typings/ui_filters'; import { ResetPercentileZoom } from './ResetPercentileZoom'; +import { createExploratoryViewUrl } from '../../../../../../observability/public'; +import { useKibana } from '../../../../../../../../src/plugins/kibana_react/public'; export interface PercentileRange { min?: number | null; @@ -21,9 +30,15 @@ export interface PercentileRange { } export function PageLoadDistribution() { + const { + services: { http }, + } = useKibana(); + const { urlParams, uiFilters } = useUrlParams(); - const { start, end, searchTerm } = urlParams; + const { start, end, rangeFrom, rangeTo, searchTerm } = urlParams; + + const { serviceName } = uiFilters; const [percentileRange, setPercentileRange] = useState({ min: null, @@ -34,8 +49,6 @@ export function PageLoadDistribution() { const { data, status } = useFetcher( (callApmApi) => { - const { serviceName } = uiFilters; - if (start && end && serviceName) { return callApmApi({ endpoint: 'GET /api/apm/rum-client/page-load-distribution', @@ -64,6 +77,7 @@ export function PageLoadDistribution() { percentileRange.min, percentileRange.max, searchTerm, + serviceName, ] ); @@ -71,6 +85,20 @@ export function PageLoadDistribution() { setPercentileRange({ min, max }); }; + const exploratoryViewLink = createExploratoryViewUrl( + { + [`${serviceName}-page-views`]: { + reportType: 'pld', + time: { from: rangeFrom!, to: rangeTo! }, + reportDefinitions: { + 'service.name': serviceName?.[0] as string, + }, + ...(breakdown ? { breakdown: breakdown.fieldName } : {}), + }, + }, + http?.basePath.get() + ); + return (
    @@ -79,12 +107,10 @@ export function PageLoadDistribution() {

    {I18LABELS.pageLoadDistribution}

    - - - + + + + + +
    Date: Tue, 20 Apr 2021 10:37:58 +0300 Subject: [PATCH 39/56] Visualize data table: Summary row is detached and jumps in Firefox (#97083) * Use display: flex for footer in table * Update table_visualization.scss * Update table_visualization.scss Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../public/components/table_visualization.scss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/plugins/vis_type_table/public/components/table_visualization.scss b/src/plugins/vis_type_table/public/components/table_visualization.scss index 28dbf17b18739..21c235adf6db2 100644 --- a/src/plugins/vis_type_table/public/components/table_visualization.scss +++ b/src/plugins/vis_type_table/public/components/table_visualization.scss @@ -12,6 +12,15 @@ overflow: auto; @include euiScrollBar; + + // Sticky footer doesn't correct work with inline-flex in Firefox. + // As footer the last element I don't see any reason to use inline-flex for this element. + // Display: flex fixes jumping on hover in Firefox. + // Created issue on EUI (https://github.com/elastic/eui/issues/4729). + // Once addressed, we can remove this local fix. + .euiDataGrid--stickyFooter .euiDataGridFooter { + display: flex; + } } .tbvChart__split { From 2e7e6820234cd2486228d4b81a11f2a4a289e9a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Kopyci=C5=84ski?= Date: Tue, 20 Apr 2021 10:20:08 +0200 Subject: [PATCH 40/56] [Asset Management] Enable osquery plugin (#97422) --- .../collectors/application_usage/schema.ts | 1 + src/plugins/telemetry/schema/oss_plugins.json | 131 ++++++++++++++++++ .../public/routes/live_queries/new/index.tsx | 2 +- .../form/queries_field.tsx | 2 +- x-pack/plugins/osquery/server/config.ts | 2 +- x-pack/plugins/osquery/server/plugin.ts | 36 ----- 6 files changed, 135 insertions(+), 39 deletions(-) diff --git a/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts b/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts index 693e9132fe536..e033da875080f 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/application_usage/schema.ts @@ -148,6 +148,7 @@ export const applicationUsageSchema = { ml: commonSchema, monitoring: commonSchema, 'observability-overview': commonSchema, + osquery: commonSchema, security_account: commonSchema, security_access_agreement: commonSchema, security_capture_url: commonSchema, // It's a forward app so we'll likely never report it diff --git a/src/plugins/telemetry/schema/oss_plugins.json b/src/plugins/telemetry/schema/oss_plugins.json index 6099b3efa803e..dc653062931c2 100644 --- a/src/plugins/telemetry/schema/oss_plugins.json +++ b/src/plugins/telemetry/schema/oss_plugins.json @@ -3954,6 +3954,137 @@ } } }, + "osquery": { + "properties": { + "appId": { + "type": "keyword", + "_meta": { + "description": "The application being tracked" + } + }, + "viewId": { + "type": "keyword", + "_meta": { + "description": "Always `main`" + } + }, + "clicks_total": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application since we started counting them" + } + }, + "clicks_7_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application over the last 7 days" + } + }, + "clicks_30_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application over the last 30 days" + } + }, + "clicks_90_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application over the last 90 days" + } + }, + "minutes_on_screen_total": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen since we started counting them." + } + }, + "minutes_on_screen_7_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen over the last 7 days" + } + }, + "minutes_on_screen_30_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen over the last 30 days" + } + }, + "minutes_on_screen_90_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen over the last 90 days" + } + }, + "views": { + "type": "array", + "items": { + "properties": { + "appId": { + "type": "keyword", + "_meta": { + "description": "The application being tracked" + } + }, + "viewId": { + "type": "keyword", + "_meta": { + "description": "The application view being tracked" + } + }, + "clicks_total": { + "type": "long", + "_meta": { + "description": "General number of clicks in the application sub view since we started counting them" + } + }, + "clicks_7_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the active application sub view over the last 7 days" + } + }, + "clicks_30_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the active application sub view over the last 30 days" + } + }, + "clicks_90_days": { + "type": "long", + "_meta": { + "description": "General number of clicks in the active application sub view over the last 90 days" + } + }, + "minutes_on_screen_total": { + "type": "float", + "_meta": { + "description": "Minutes the application sub view is active and on-screen since we started counting them." + } + }, + "minutes_on_screen_7_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen active application sub view over the last 7 days" + } + }, + "minutes_on_screen_30_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen active application sub view over the last 30 days" + } + }, + "minutes_on_screen_90_days": { + "type": "float", + "_meta": { + "description": "Minutes the application is active and on-screen active application sub view over the last 90 days" + } + } + } + } + } + } + }, "security_account": { "properties": { "appId": { diff --git a/x-pack/plugins/osquery/public/routes/live_queries/new/index.tsx b/x-pack/plugins/osquery/public/routes/live_queries/new/index.tsx index 78304d4b29196..9967eb97cddf2 100644 --- a/x-pack/plugins/osquery/public/routes/live_queries/new/index.tsx +++ b/x-pack/plugins/osquery/public/routes/live_queries/new/index.tsx @@ -57,8 +57,8 @@ const NewLiveQueryPageComponent = () => { id="xpack.osquery.newLiveQuery.pageTitle" defaultMessage="New live query" /> -

    +
    diff --git a/x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx b/x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx index 2074c38e20fe9..7d5a2c5ac99ce 100644 --- a/x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx +++ b/x-pack/plugins/osquery/public/scheduled_query_groups/form/queries_field.tsx @@ -39,8 +39,8 @@ const getNewStream = ({ id, interval, query, scheduledQueryGroupId }: GetNewStre : null, vars: { id: { type: 'text', value: id }, - type: 'integer', interval: { + type: 'integer', value: interval, }, query: { type: 'text', value: query }, diff --git a/x-pack/plugins/osquery/server/config.ts b/x-pack/plugins/osquery/server/config.ts index 58b9a8bf910c2..56d67400a47d9 100644 --- a/x-pack/plugins/osquery/server/config.ts +++ b/x-pack/plugins/osquery/server/config.ts @@ -8,7 +8,7 @@ import { TypeOf, schema } from '@kbn/config-schema'; export const ConfigSchema = schema.object({ - enabled: schema.boolean({ defaultValue: false }), + enabled: schema.boolean({ defaultValue: true }), actionEnabled: schema.boolean({ defaultValue: false }), savedQueries: schema.boolean({ defaultValue: false }), packs: schema.boolean({ defaultValue: false }), diff --git a/x-pack/plugins/osquery/server/plugin.ts b/x-pack/plugins/osquery/server/plugin.ts index 2a6e4dc5b1f48..31f611c5f1d31 100644 --- a/x-pack/plugins/osquery/server/plugin.ts +++ b/x-pack/plugins/osquery/server/plugin.ts @@ -5,9 +5,7 @@ * 2.0. */ -import { i18n } from '@kbn/i18n'; import { - DEFAULT_APP_CATEGORIES, PluginInitializerContext, CoreSetup, CoreStart, @@ -49,40 +47,6 @@ export class OsqueryPlugin implements Plugin config, }; - plugins.features.registerKibanaFeature({ - id: 'osquery', - name: i18n.translate('xpack.osquery.featureRegistry.osqueryFeatureName', { - defaultMessage: 'Osquery', - }), - order: 4000, - category: DEFAULT_APP_CATEGORIES.management, - app: ['osquery', 'kibana'], - catalogue: ['osquery'], - // see x-pack/plugins/features/common/feature_kibana_privileges.ts - privileges: { - all: { - app: ['osquery', 'kibana'], - api: ['osquery', 'osquery_write'], - catalogue: ['osquery'], - savedObject: { - all: [], - read: [], - }, - ui: ['show', 'save'], - }, - read: { - app: ['osquery', 'kibana'], - api: ['osquery'], - catalogue: ['osquery'], - savedObject: { - all: [], - read: [], - }, - ui: ['show'], - }, - }, - }); - initSavedObjects(core.savedObjects, osqueryContext); defineRoutes(router, osqueryContext); From 13411882eb7b964d70625f2c0a6d513ea6ebdd03 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Tue, 20 Apr 2021 11:47:22 +0300 Subject: [PATCH 41/56] [TSVB] Fix validation for Data time range mode combo-box (#97475) --- .../application/components/index_pattern.js | 43 ++++++++++++++----- .../server/lib/vis_data/get_series_data.ts | 1 + .../server/lib/vis_data/get_table_data.ts | 1 + 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/plugins/vis_type_timeseries/public/application/components/index_pattern.js b/src/plugins/vis_type_timeseries/public/application/components/index_pattern.js index e7a34c6e6596d..c5b3d86f61b5d 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/index_pattern.js +++ b/src/plugins/vis_type_timeseries/public/application/components/index_pattern.js @@ -18,7 +18,6 @@ import { EuiComboBox, EuiRange, EuiIconTip, - EuiText, EuiFormLabel, } from '@elastic/eui'; import { FieldSelect } from './aggs/field_select'; @@ -126,6 +125,9 @@ export const IndexPattern = ({ ({ value }) => model[TIME_RANGE_MODE_KEY] === value ); const isTimeSeries = model.type === PANEL_TYPES.TIMESERIES; + const isDataTimerangeModeInvalid = + selectedTimeRangeOption && + !isTimerangeModeEnabled(selectedTimeRangeOption.value, uiRestrictions); useEffect(() => { updateControlValidity(intervalName, intervalValidation.isValid); @@ -143,13 +145,38 @@ export const IndexPattern = ({ + {' '} + + } + type="questionInCircle" + /> + + } + isInvalid={isDataTimerangeModeInvalid} + error={i18n.translate('visTypeTimeseries.indexPattern.timeRange.error', { + defaultMessage: 'You cannot use "{mode}" with the current index type.', + values: { + mode: selectedTimeRangeOption?.label, + }, })} > - - {i18n.translate('visTypeTimeseries.indexPattern.timeRange.hint', { - defaultMessage: `This setting controls the timespan used for matching documents. - "Entire timerange" will match all the documents selected in the timepicker. - "Last value" will match only the documents for the specified interval from the end of the timerange.`, - })} -
    )} diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/get_series_data.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/get_series_data.ts index 6d165d3343eaa..1d910dab5a786 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/get_series_data.ts +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/get_series_data.ts @@ -105,5 +105,6 @@ export async function getSeriesData( ...handleErrorResponse(panel)(err), }; } + return meta; } } diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/get_table_data.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/get_table_data.ts index 00d23ee45e6da..075e90762f151 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/get_table_data.ts +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/get_table_data.ts @@ -115,5 +115,6 @@ export async function getTableData( ...handleErrorResponse(panel)(err), }; } + return meta; } } From 20b585d12225fd4cee27936762f967dbd2838636 Mon Sep 17 00:00:00 2001 From: Dima Arnautov Date: Tue, 20 Apr 2021 10:52:54 +0200 Subject: [PATCH 42/56] [ML] Anomaly detection rule lookback interval improvements (#97370) * [ML] add advanced settings * [ML] default advanced settings * [ML] advanced settings validators * [ML] range control for top n buckets * [ML] execute rule with a new query for most recent anomalies * [ML] find most anomalous bucket from the top N * Revert "[ML] range control for top n buckets" This reverts commit e039f250 * [ML] validate check interval against the lookback interval * [ML] update descriptions * [ML] fix test subjects * [ML] update warning message * [ML] add functional tests * [ML] adjust unit tests, mark getLookbackInterval * [ML] update lookback interval description and warning message * [ML] update fetchResult tsDoc * [ML] cleanup * [ML] fix imports to reduce bundle size * [ML] round up lookback interval * [ML] update functional test assertion * [ML] async import for validator --- x-pack/plugins/ml/common/constants/alerts.ts | 2 + x-pack/plugins/ml/common/types/alerts.ts | 7 + x-pack/plugins/ml/common/util/alerts.test.ts | 78 ++++++++ x-pack/plugins/ml/common/util/alerts.ts | 53 ++++++ .../plugins/ml/common/util/job_utils.test.ts | 7 +- x-pack/plugins/ml/common/util/job_utils.ts | 12 +- x-pack/plugins/ml/common/util/validators.ts | 34 ++++ .../ml/public/alerting/advanced_settings.tsx | 117 ++++++++++++ .../ml/public/alerting/config_validator.tsx | 27 ++- .../alerting/ml_anomaly_alert_trigger.tsx | 47 ++++- .../ml/public/alerting/register_ml_alerts.ts | 31 ++- .../severity_control/severity_control.tsx | 2 +- .../public/alerting/time_interval_control.tsx | 49 +++++ .../plugins/ml/public/alerting/validators.ts | 11 ++ .../ml/server/lib/alerts/alerting_service.ts | 180 ++++++++++++++++-- .../ml/server/models/job_service/datafeeds.ts | 52 +++-- x-pack/plugins/ml/server/routes/alerting.ts | 6 +- .../server/routes/schemas/alerting_schema.ts | 8 +- .../providers/alerting_service.ts | 9 +- .../test/functional/services/ml/alerting.ts | 43 +++++ .../apps/ml/alert_flyout.ts | 11 +- 21 files changed, 718 insertions(+), 68 deletions(-) create mode 100644 x-pack/plugins/ml/common/util/alerts.test.ts create mode 100644 x-pack/plugins/ml/common/util/alerts.ts create mode 100644 x-pack/plugins/ml/public/alerting/advanced_settings.tsx create mode 100644 x-pack/plugins/ml/public/alerting/time_interval_control.tsx create mode 100644 x-pack/plugins/ml/public/alerting/validators.ts diff --git a/x-pack/plugins/ml/common/constants/alerts.ts b/x-pack/plugins/ml/common/constants/alerts.ts index 53b8fa7d5fea7..30daf0d45c3ac 100644 --- a/x-pack/plugins/ml/common/constants/alerts.ts +++ b/x-pack/plugins/ml/common/constants/alerts.ts @@ -47,3 +47,5 @@ export const ML_ALERT_TYPES_CONFIG: Record< }; export const ALERT_PREVIEW_SAMPLE_SIZE = 5; + +export const TOP_N_BUCKETS_COUNT = 1; diff --git a/x-pack/plugins/ml/common/types/alerts.ts b/x-pack/plugins/ml/common/types/alerts.ts index bbbb260409bd0..f2c3385c1fbc7 100644 --- a/x-pack/plugins/ml/common/types/alerts.ts +++ b/x-pack/plugins/ml/common/types/alerts.ts @@ -93,4 +93,11 @@ export type MlAnomalyDetectionAlertParams = { severity: number; resultType: AnomalyResultType; includeInterim: boolean; + lookbackInterval: string | null | undefined; + topNBuckets: number | null | undefined; } & AlertTypeParams; + +export type MlAnomalyDetectionAlertAdvancedSettings = Pick< + MlAnomalyDetectionAlertParams, + 'lookbackInterval' | 'topNBuckets' +>; diff --git a/x-pack/plugins/ml/common/util/alerts.test.ts b/x-pack/plugins/ml/common/util/alerts.test.ts new file mode 100644 index 0000000000000..d9896c967165b --- /dev/null +++ b/x-pack/plugins/ml/common/util/alerts.test.ts @@ -0,0 +1,78 @@ +/* + * 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 { getLookbackInterval, resolveLookbackInterval } from './alerts'; +import type { CombinedJobWithStats, Datafeed, Job } from '../types/anomaly_detection_jobs'; + +describe('resolveLookbackInterval', () => { + test('resolves interval for bucket spans bigger than 1m', () => { + const testJobs = [ + { + analysis_config: { + bucket_span: '15m', + }, + }, + ] as Job[]; + + const testDatafeeds = [ + { + query_delay: '65630ms', + }, + ] as Datafeed[]; + + expect(resolveLookbackInterval(testJobs, testDatafeeds)).toBe('32m'); + }); + + test('resolves interval for bucket spans smaller than 1m', () => { + const testJobs = [ + { + analysis_config: { + bucket_span: '50s', + }, + }, + ] as Job[]; + + const testDatafeeds = [ + { + query_delay: '20s', + }, + ] as Datafeed[]; + + expect(resolveLookbackInterval(testJobs, testDatafeeds)).toBe('3m'); + }); + + test('resolves interval for bucket spans smaller than 1m without query dealay', () => { + const testJobs = [ + { + analysis_config: { + bucket_span: '59s', + }, + }, + ] as Job[]; + + const testDatafeeds = [{}] as Datafeed[]; + + expect(resolveLookbackInterval(testJobs, testDatafeeds)).toBe('3m'); + }); +}); + +describe('getLookbackInterval', () => { + test('resolves interval for bucket spans bigger than 1m', () => { + const testJobs = [ + { + analysis_config: { + bucket_span: '15m', + }, + datafeed_config: { + query_delay: '65630ms', + }, + }, + ] as CombinedJobWithStats[]; + + expect(getLookbackInterval(testJobs)).toBe('32m'); + }); +}); diff --git a/x-pack/plugins/ml/common/util/alerts.ts b/x-pack/plugins/ml/common/util/alerts.ts new file mode 100644 index 0000000000000..5d68677d4fb97 --- /dev/null +++ b/x-pack/plugins/ml/common/util/alerts.ts @@ -0,0 +1,53 @@ +/* + * 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 { CombinedJobWithStats, Datafeed, Job } from '../types/anomaly_detection_jobs'; +import { resolveMaxTimeInterval } from './job_utils'; +import { isDefined } from '../types/guards'; +import { parseInterval } from './parse_interval'; + +const narrowBucketLength = 60; + +/** + * Resolves the lookback interval for the rule + * using the formula max(2m, 2 * bucket_span) + query_delay + 1s. + * and rounds up to a whole number of minutes. + */ +export function resolveLookbackInterval(jobs: Job[], datafeeds: Datafeed[]): string { + const bucketSpanInSeconds = Math.ceil( + resolveMaxTimeInterval(jobs.map((v) => v.analysis_config.bucket_span)) ?? 0 + ); + const queryDelayInSeconds = Math.ceil( + resolveMaxTimeInterval(datafeeds.map((v) => v.query_delay).filter(isDefined)) ?? 0 + ); + + const result = + Math.max(2 * narrowBucketLength, 2 * bucketSpanInSeconds) + queryDelayInSeconds + 1; + + return `${Math.ceil(result / 60)}m`; +} + +/** + * @deprecated We should avoid using {@link CombinedJobWithStats}. Replace usages with {@link resolveLookbackInterval} when + * Kibana API returns mapped job and the datafeed configs. + */ +export function getLookbackInterval(jobs: CombinedJobWithStats[]): string { + return resolveLookbackInterval( + jobs, + jobs.map((v) => v.datafeed_config) + ); +} + +export function getTopNBuckets(job: Job): number { + const bucketSpan = parseInterval(job.analysis_config.bucket_span); + + if (bucketSpan === null) { + throw new Error('Unable to resolve a bucket span length'); + } + + return Math.ceil(narrowBucketLength / bucketSpan.asSeconds()); +} diff --git a/x-pack/plugins/ml/common/util/job_utils.test.ts b/x-pack/plugins/ml/common/util/job_utils.test.ts index 59f8c8a4dae3a..4f5877703b8e3 100644 --- a/x-pack/plugins/ml/common/util/job_utils.test.ts +++ b/x-pack/plugins/ml/common/util/job_utils.test.ts @@ -20,7 +20,7 @@ import { getSafeAggregationName, getLatestDataOrBucketTimestamp, getEarliestDatafeedStartTime, - resolveBucketSpanInSeconds, + resolveMaxTimeInterval, } from './job_utils'; import { CombinedJob, Job } from '../types/anomaly_detection_jobs'; import moment from 'moment'; @@ -606,7 +606,10 @@ describe('ML - job utils', () => { describe('resolveBucketSpanInSeconds', () => { test('should resolve maximum bucket interval', () => { - expect(resolveBucketSpanInSeconds(['15m', '1h', '6h', '90s'])).toBe(21600); + expect(resolveMaxTimeInterval(['15m', '1h', '6h', '90s'])).toBe(21600); + }); + test('returns undefined for an empty array', () => { + expect(resolveMaxTimeInterval([])).toBe(undefined); }); }); }); diff --git a/x-pack/plugins/ml/common/util/job_utils.ts b/x-pack/plugins/ml/common/util/job_utils.ts index da340d4413849..78e565a491386 100644 --- a/x-pack/plugins/ml/common/util/job_utils.ts +++ b/x-pack/plugins/ml/common/util/job_utils.ts @@ -831,14 +831,16 @@ export function splitIndexPatternNames(indexPatternName: string): string[] { } /** - * Resolves the longest bucket span from the list. - * @param bucketSpans Collection of bucket spans + * Resolves the longest time interval from the list. + * @param timeIntervals Collection of the strings representing time intervals, e.g. ['15m', '1h', '2d'] */ -export function resolveBucketSpanInSeconds(bucketSpans: string[]): number { - return Math.max( - ...bucketSpans +export function resolveMaxTimeInterval(timeIntervals: string[]): number | undefined { + const result = Math.max( + ...timeIntervals .map((b) => parseInterval(b)) .filter(isDefined) .map((v) => v.asSeconds()) ); + + return Number.isFinite(result) ? result : undefined; } diff --git a/x-pack/plugins/ml/common/util/validators.ts b/x-pack/plugins/ml/common/util/validators.ts index b52e82495a76c..0936efbcb00fc 100644 --- a/x-pack/plugins/ml/common/util/validators.ts +++ b/x-pack/plugins/ml/common/util/validators.ts @@ -7,6 +7,7 @@ import { ALLOWED_DATA_UNITS } from '../constants/validation'; import { parseInterval } from './parse_interval'; +import { isPopulatedObject } from './object_utils'; /** * Provides a validator function for maximum allowed input length. @@ -85,6 +86,10 @@ export function memoryInputValidator(allowedUnits = ALLOWED_DATA_UNITS) { export function timeIntervalInputValidator() { return (value: string) => { + if (value === '') { + return null; + } + const r = parseInterval(value); if (r === null) { return { @@ -95,3 +100,32 @@ export function timeIntervalInputValidator() { return null; }; } + +export interface NumberValidationResult { + min: boolean; + max: boolean; +} + +export function numberValidator(conditions?: { min?: number; max?: number }) { + if ( + conditions?.min !== undefined && + conditions.max !== undefined && + conditions.min > conditions.max + ) { + throw new Error('Invalid validator conditions'); + } + + return (value: number): NumberValidationResult | null => { + const result = {} as NumberValidationResult; + if (conditions?.min !== undefined && value < conditions.min) { + result.min = true; + } + if (conditions?.max !== undefined && value > conditions.max) { + result.max = true; + } + if (isPopulatedObject(result)) { + return result; + } + return null; + }; +} diff --git a/x-pack/plugins/ml/public/alerting/advanced_settings.tsx b/x-pack/plugins/ml/public/alerting/advanced_settings.tsx new file mode 100644 index 0000000000000..05ce3c13215b3 --- /dev/null +++ b/x-pack/plugins/ml/public/alerting/advanced_settings.tsx @@ -0,0 +1,117 @@ +/* + * 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 React, { FC } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { + EuiAccordion, + EuiDescribedFormGroup, + EuiFieldNumber, + EuiFormRow, + EuiHorizontalRule, + EuiSpacer, + EuiText, +} from '@elastic/eui'; +import { MlAnomalyDetectionAlertAdvancedSettings } from '../../common/types/alerts'; +import { TimeIntervalControl } from './time_interval_control'; +import { TOP_N_BUCKETS_COUNT } from '../../common/constants/alerts'; + +interface AdvancedSettingsProps { + value: MlAnomalyDetectionAlertAdvancedSettings; + onChange: (update: Partial) => void; +} + +export const AdvancedSettings: FC = React.memo(({ value, onChange }) => { + return ( + + } + data-test-subj={'mlAnomalyAlertAdvancedSettingsTrigger'} + > + + + +

    + } + description={ + + + + } + > + + } + onChange={(update) => { + onChange({ lookbackInterval: update }); + }} + data-test-subj={'mlAnomalyAlertLookbackInterval'} + /> + + + + +

    + } + description={ + + + + } + > + + } + > + { + onChange({ topNBuckets: Number(e.target.value) }); + }} + data-test-subj={'mlAnomalyAlertTopNBuckets'} + /> + + + + + ); +}); diff --git a/x-pack/plugins/ml/public/alerting/config_validator.tsx b/x-pack/plugins/ml/public/alerting/config_validator.tsx index 5881a3b36dcbd..5a834ab14dd35 100644 --- a/x-pack/plugins/ml/public/alerting/config_validator.tsx +++ b/x-pack/plugins/ml/public/alerting/config_validator.tsx @@ -5,40 +5,35 @@ * 2.0. */ -import React, { FC, useMemo } from 'react'; +import React, { FC } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiCallOut, EuiSpacer } from '@elastic/eui'; import { parseInterval } from '../../common/util/parse_interval'; import { CombinedJobWithStats } from '../../common/types/anomaly_detection_jobs'; import { DATAFEED_STATE } from '../../common/constants/states'; -import { resolveBucketSpanInSeconds } from '../../common/util/job_utils'; +import { MlAnomalyDetectionAlertParams } from '../../common/types/alerts'; interface ConfigValidatorProps { alertInterval: string; jobConfigs: CombinedJobWithStats[]; + alertParams: MlAnomalyDetectionAlertParams; } /** * Validated alert configuration */ export const ConfigValidator: FC = React.memo( - ({ jobConfigs = [], alertInterval }) => { - const resultBucketSpanInSeconds = useMemo( - () => resolveBucketSpanInSeconds(jobConfigs.map((v) => v.analysis_config.bucket_span)), - [jobConfigs] - ); - - const resultBucketSpanString = - resultBucketSpanInSeconds % 60 === 0 - ? `${resultBucketSpanInSeconds / 60}m` - : `${resultBucketSpanInSeconds}s`; - + ({ jobConfigs = [], alertInterval, alertParams }) => { if (jobConfigs.length === 0) return null; const alertIntervalInSeconds = parseInterval(alertInterval)!.asSeconds(); - const isAlertIntervalTooHigh = resultBucketSpanInSeconds < alertIntervalInSeconds; + const lookbackIntervalInSeconds = + !!alertParams.lookbackInterval && parseInterval(alertParams.lookbackInterval)?.asSeconds(); + + const isAlertIntervalTooHigh = + lookbackIntervalInSeconds && lookbackIntervalInSeconds < alertIntervalInSeconds; const jobWithoutStartedDatafeed = jobConfigs .filter((job) => job.datafeed_config.state !== DATAFEED_STATE.STARTED) @@ -66,9 +61,9 @@ export const ConfigValidator: FC = React.memo(
  1. diff --git a/x-pack/plugins/ml/public/alerting/ml_anomaly_alert_trigger.tsx b/x-pack/plugins/ml/public/alerting/ml_anomaly_alert_trigger.tsx index 89804813a4eda..3c8ee6bf4899f 100644 --- a/x-pack/plugins/ml/public/alerting/ml_anomaly_alert_trigger.tsx +++ b/x-pack/plugins/ml/public/alerting/ml_anomaly_alert_trigger.tsx @@ -18,11 +18,17 @@ import { ResultTypeSelector } from './result_type_selector'; import { alertingApiProvider } from '../application/services/ml_api_service/alerting'; import { PreviewAlertCondition } from './preview_alert_condition'; import { ANOMALY_THRESHOLD } from '../../common'; -import { MlAnomalyDetectionAlertParams } from '../../common/types/alerts'; +import { + MlAnomalyDetectionAlertAdvancedSettings, + MlAnomalyDetectionAlertParams, +} from '../../common/types/alerts'; import { ANOMALY_RESULT_TYPE } from '../../common/constants/anomalies'; import { InterimResultsControl } from './interim_results_control'; import { ConfigValidator } from './config_validator'; import { CombinedJobWithStats } from '../../common/types/anomaly_detection_jobs'; +import { AdvancedSettings } from './advanced_settings'; +import { getLookbackInterval, getTopNBuckets } from '../../common/util/alerts'; +import { isDefined } from '../../common/types/guards'; interface MlAnomalyAlertTriggerProps { alertParams: MlAnomalyDetectionAlertParams; @@ -114,6 +120,28 @@ const MlAnomalyAlertTrigger: FC = ({ } }); + const advancedSettings = useMemo(() => { + let { lookbackInterval, topNBuckets } = alertParams; + + if (!isDefined(lookbackInterval) && jobConfigs.length > 0) { + lookbackInterval = getLookbackInterval(jobConfigs); + } + if (!isDefined(topNBuckets) && jobConfigs.length > 0) { + topNBuckets = getTopNBuckets(jobConfigs[0]); + } + return { + lookbackInterval, + topNBuckets, + }; + }, [alertParams.lookbackInterval, alertParams.topNBuckets, jobConfigs]); + + const resultParams = useMemo(() => { + return { + ...alertParams, + ...advancedSettings, + }; + }, [alertParams, advancedSettings]); + return ( @@ -139,7 +167,11 @@ const MlAnomalyAlertTrigger: FC = ({ errors={errors.jobSelection} /> - + = ({ /> + { + Object.keys(update).forEach((k) => { + setAlertParams(k, update[k as keyof MlAnomalyDetectionAlertAdvancedSettings]); + }); + }, [])} + /> + + + diff --git a/x-pack/plugins/ml/public/alerting/register_ml_alerts.ts b/x-pack/plugins/ml/public/alerting/register_ml_alerts.ts index 5bb9df74b6f61..92a5343380cdd 100644 --- a/x-pack/plugins/ml/public/alerting/register_ml_alerts.ts +++ b/x-pack/plugins/ml/public/alerting/register_ml_alerts.ts @@ -11,7 +11,10 @@ import { ML_ALERT_TYPES } from '../../common/constants/alerts'; import { MlAnomalyDetectionAlertParams } from '../../common/types/alerts'; import { TriggersAndActionsUIPublicPluginSetup } from '../../../triggers_actions_ui/public'; -export function registerMlAlerts(triggersActionsUi: TriggersAndActionsUIPublicPluginSetup) { +export async function registerMlAlerts(triggersActionsUi: TriggersAndActionsUIPublicPluginSetup) { + // async import validators to reduce initial bundle size + const { validateLookbackInterval, validateTopNBucket } = await import('./validators'); + triggersActionsUi.alertTypeRegistry.register({ id: ML_ALERT_TYPES.ANOMALY_DETECTION, description: i18n.translate('xpack.ml.alertTypes.anomalyDetection.description', { @@ -28,7 +31,9 @@ export function registerMlAlerts(triggersActionsUi: TriggersAndActionsUIPublicPl jobSelection: new Array(), severity: new Array(), resultType: new Array(), - }, + topNBuckets: new Array(), + lookbackInterval: new Array(), + } as Record, }; if ( @@ -58,6 +63,28 @@ export function registerMlAlerts(triggersActionsUi: TriggersAndActionsUIPublicPl ); } + if ( + !!alertParams.lookbackInterval && + validateLookbackInterval(alertParams.lookbackInterval) + ) { + validationResult.errors.lookbackInterval.push( + i18n.translate('xpack.ml.alertTypes.anomalyDetection.lookbackInterval.errorMessage', { + defaultMessage: 'Lookback interval is invalid', + }) + ); + } + + if ( + typeof alertParams.topNBuckets === 'number' && + validateTopNBucket(alertParams.topNBuckets) + ) { + validationResult.errors.topNBuckets.push( + i18n.translate('xpack.ml.alertTypes.anomalyDetection.topNBuckets.errorMessage', { + defaultMessage: 'Number of buckets is invalid', + }) + ); + } + return validationResult; }, requiresAppContext: false, diff --git a/x-pack/plugins/ml/public/alerting/severity_control/severity_control.tsx b/x-pack/plugins/ml/public/alerting/severity_control/severity_control.tsx index 26a53882535b6..b1cd808643ca2 100644 --- a/x-pack/plugins/ml/public/alerting/severity_control/severity_control.tsx +++ b/x-pack/plugins/ml/public/alerting/severity_control/severity_control.tsx @@ -67,7 +67,7 @@ export const SeverityControl: FC = React.memo(({ value, o value={value ?? ANOMALY_THRESHOLD.LOW} onChange={(e) => { // @ts-ignore Property 'value' does not exist on type 'EventTarget' | (EventTarget & HTMLInputElement) - onChange(e.target.value); + onChange(Number(e.target.value)); }} showLabels showValue diff --git a/x-pack/plugins/ml/public/alerting/time_interval_control.tsx b/x-pack/plugins/ml/public/alerting/time_interval_control.tsx new file mode 100644 index 0000000000000..8030d340a3774 --- /dev/null +++ b/x-pack/plugins/ml/public/alerting/time_interval_control.tsx @@ -0,0 +1,49 @@ +/* + * 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 { EuiFieldText, EuiFormRow, EuiFieldTextProps } from '@elastic/eui'; +import React, { FC, ReactNode, useMemo } from 'react'; +import { invalidTimeIntervalMessage } from '../application/jobs/new_job/common/job_validator/util'; +import { composeValidators } from '../../common'; +import { timeIntervalInputValidator } from '../../common/util/validators'; + +type TimeIntervalControlProps = Omit & { + label: string | ReactNode; + value: string | null | undefined; + onChange: (update: string) => void; +}; + +export const TimeIntervalControl: FC = ({ + value, + onChange, + label, + ...fieldTextProps +}) => { + const validators = useMemo(() => composeValidators(timeIntervalInputValidator()), []); + + const validationErrors = useMemo(() => validators(value), [value]); + + const isInvalid = value !== undefined && !!validationErrors; + + return ( + + { + onChange(e.target.value); + }} + isInvalid={isInvalid} + /> + + ); +}; diff --git a/x-pack/plugins/ml/public/alerting/validators.ts b/x-pack/plugins/ml/public/alerting/validators.ts new file mode 100644 index 0000000000000..0c76e049b6da9 --- /dev/null +++ b/x-pack/plugins/ml/public/alerting/validators.ts @@ -0,0 +1,11 @@ +/* + * 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 { numberValidator, timeIntervalInputValidator } from '../../common/util/validators'; + +export const validateLookbackInterval = timeIntervalInputValidator(); +export const validateTopNBucket = numberValidator({ min: 1 }); diff --git a/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts b/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts index 81529669749bc..04d9fcfce7d61 100644 --- a/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts +++ b/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts @@ -7,8 +7,6 @@ import Boom from '@hapi/boom'; import rison from 'rison-node'; -import { ElasticsearchClient } from 'kibana/server'; -import moment from 'moment'; import { Duration } from 'moment/moment'; import { MlClient } from '../ml_client'; import { @@ -27,8 +25,10 @@ import { } from '../../../common/types/alerts'; import { AnomalyDetectionAlertContext } from './register_anomaly_detection_alert_type'; import { MlJobsResponse } from '../../../common/types/job_service'; -import { resolveBucketSpanInSeconds } from '../../../common/util/job_utils'; +import { resolveMaxTimeInterval } from '../../../common/util/job_utils'; import { isDefined } from '../../../common/types/guards'; +import { getTopNBuckets, resolveLookbackInterval } from '../../../common/util/alerts'; +import type { DatafeedsService } from '../../models/job_service/datafeeds'; type AggResultsResponse = { key?: number } & { [key in PreviewResultsKeys]: { @@ -40,12 +40,21 @@ type AggResultsResponse = { key?: number } & { }; }; +/** + * Mapping for result types and corresponding score fields. + */ +const resultTypeScoreMapping = { + [ANOMALY_RESULT_TYPE.BUCKET]: 'anomaly_score', + [ANOMALY_RESULT_TYPE.RECORD]: 'record_score', + [ANOMALY_RESULT_TYPE.INFLUENCER]: 'influencer_score', +}; + /** * Alerting related server-side methods * @param mlClient - * @param esClient + * @param datafeedsService */ -export function alertingServiceProvider(mlClient: MlClient, esClient: ElasticsearchClient) { +export function alertingServiceProvider(mlClient: MlClient, datafeedsService: DatafeedsService) { const getAggResultsLabel = (resultType: AnomalyResultType) => { return { aggGroupLabel: `${resultType}_results` as PreviewResultsKeys, @@ -332,7 +341,16 @@ export function alertingServiceProvider(mlClient: MlClient, esClient: Elasticsea if (jobsResponse.length === 0) { // Probably assigned groups don't contain any jobs anymore. - return; + throw new Error("Couldn't find the job with provided id"); + } + + const maxBucket = resolveMaxTimeInterval( + jobsResponse.map((v) => v.analysis_config.bucket_span) + ); + + if (maxBucket === undefined) { + // Technically it's not possible, just in case. + throw new Error('Unable to resolve a valid bucket length'); } /** @@ -341,9 +359,7 @@ export function alertingServiceProvider(mlClient: MlClient, esClient: Elasticsea */ const lookBackTimeInterval = `${Math.max( // Double the max bucket span - Math.round( - resolveBucketSpanInSeconds(jobsResponse.map((v) => v.analysis_config.bucket_span)) * 2 - ), + Math.round(maxBucket * 2), checkIntervalGap ? Math.round(checkIntervalGap.asSeconds()) : 0 )}s`; @@ -368,7 +384,7 @@ export function alertingServiceProvider(mlClient: MlClient, esClient: Elasticsea }, { terms: { - result_type: Object.values(ANOMALY_RESULT_TYPE), + result_type: Object.values(ANOMALY_RESULT_TYPE) as string[], }, }, ...(params.includeInterim @@ -431,6 +447,139 @@ export function alertingServiceProvider(mlClient: MlClient, esClient: Elasticsea ).filter(isDefined); }; + /** + * Fetches the most recent anomaly according the top N buckets within the lookback interval + * that satisfies a rule criteria. + * + * @param params - Alert params + */ + const fetchResult = async ( + params: MlAnomalyDetectionAlertParams + ): Promise => { + const jobAndGroupIds = [ + ...(params.jobSelection.jobIds ?? []), + ...(params.jobSelection.groupIds ?? []), + ]; + + // Extract jobs from group ids and make sure provided jobs assigned to a current space + const jobsResponse = ( + await mlClient.getJobs({ job_id: jobAndGroupIds.join(',') }) + ).body.jobs; + + if (jobsResponse.length === 0) { + // Probably assigned groups don't contain any jobs anymore. + return; + } + + const jobIds = jobsResponse.map((v) => v.job_id); + + const dataFeeds = await datafeedsService.getDatafeedByJobId(jobIds); + + const maxBucketInSeconds = resolveMaxTimeInterval( + jobsResponse.map((v) => v.analysis_config.bucket_span) + ); + + if (maxBucketInSeconds === undefined) { + // Technically it's not possible, just in case. + throw new Error('Unable to resolve a valid bucket length'); + } + + const lookBackTimeInterval: string = + params.lookbackInterval ?? resolveLookbackInterval(jobsResponse, dataFeeds ?? []); + + const topNBuckets: number = params.topNBuckets ?? getTopNBuckets(jobsResponse[0]); + + const requestBody = { + size: 0, + query: { + bool: { + filter: [ + { + terms: { job_id: jobIds }, + }, + { + terms: { + result_type: Object.values(ANOMALY_RESULT_TYPE) as string[], + }, + }, + { + range: { + timestamp: { + gte: `now-${lookBackTimeInterval}`, + }, + }, + }, + ...(params.includeInterim + ? [] + : [ + { + term: { is_interim: false }, + }, + ]), + ], + }, + }, + aggs: { + alerts_over_time: { + date_histogram: { + field: 'timestamp', + fixed_interval: `${maxBucketInSeconds}s`, + order: { + _key: 'desc' as const, + }, + }, + aggs: { + max_score: { + max: { + field: resultTypeScoreMapping[params.resultType], + }, + }, + ...getResultTypeAggRequest(params.resultType, params.severity), + truncate: { + bucket_sort: { + size: topNBuckets, + }, + }, + }, + }, + }, + }; + + const response = await mlClient.anomalySearch( + { + // @ts-expect-error + body: requestBody, + }, + jobIds + ); + + const result = response.body.aggregations as { + alerts_over_time: { + buckets: Array< + { + doc_count: number; + key: number; + key_as_string: string; + max_score: { + value: number; + }; + } & AggResultsResponse + >; + }; + }; + + if (result.alerts_over_time.buckets.length === 0) { + return; + } + + // Find the most anomalous result from the top N buckets + const topResult = result.alerts_over_time.buckets.reduce((prev, current) => + prev.max_score.value > current.max_score.value ? prev : current + ); + + return getResultsFormatter(params.resultType)(topResult); + }; + /** * TODO Replace with URL generator when https://github.com/elastic/kibana/issues/59453 is resolved * @param r @@ -520,17 +669,8 @@ export function alertingServiceProvider(mlClient: MlClient, esClient: Elasticsea startedAt: Date, previousStartedAt: Date | null ): Promise => { - const checkIntervalGap = previousStartedAt - ? moment.duration(moment(startedAt).diff(previousStartedAt)) - : undefined; - - const res = await fetchAnomalies(params, undefined, checkIntervalGap); - - if (!res) { - throw new Error('No results found'); - } + const result = await fetchResult(params); - const result = res[0]; if (!result) return; const anomalyExplorerUrl = buildExplorerUrl(result, params.resultType); diff --git a/x-pack/plugins/ml/server/models/job_service/datafeeds.ts b/x-pack/plugins/ml/server/models/job_service/datafeeds.ts index 8279571adbae2..72255e168249a 100644 --- a/x-pack/plugins/ml/server/models/job_service/datafeeds.ts +++ b/x-pack/plugins/ml/server/models/job_service/datafeeds.ts @@ -34,6 +34,8 @@ interface Results { }; } +export type DatafeedsService = ReturnType; + export function datafeedsProvider(client: IScopedClusterClient, mlClient: MlClient) { async function forceStartDatafeeds(datafeedIds: string[], start?: number, end?: number) { const jobIds = await getJobIdsByDatafeedId(); @@ -168,25 +170,39 @@ export function datafeedsProvider(client: IScopedClusterClient, mlClient: MlClie }, {} as { [id: string]: string }); } + async function getDatafeedByJobId( + jobId: string[], + excludeGenerated?: boolean + ): Promise; + async function getDatafeedByJobId( jobId: string, excludeGenerated?: boolean - ): Promise { + ): Promise; + + async function getDatafeedByJobId( + jobId: string | string[], + excludeGenerated?: boolean + ): Promise { + const jobIds = Array.isArray(jobId) ? jobId : [jobId]; + async function findDatafeed() { // if the job was doesn't use the standard datafeedId format // get all the datafeeds and match it with the jobId const { body: { datafeeds }, - } = await mlClient.getDatafeeds(excludeGenerated ? { exclude_generated: true } : {}); // - for (const result of datafeeds) { - if (result.job_id === jobId) { - return result; - } + } = await mlClient.getDatafeeds(excludeGenerated ? { exclude_generated: true } : {}); + if (typeof jobId === 'string') { + return datafeeds.find((v) => v.job_id === jobId); + } + + if (Array.isArray(jobId)) { + return datafeeds.filter((v) => jobIds.includes(v.job_id)); } } // if the job was created by the wizard, // then we can assume it uses the standard format of the datafeedId - const assumedDefaultDatafeedId = `datafeed-${jobId}`; + const assumedDefaultDatafeedId = jobIds.map((v) => `datafeed-${v}`).join(','); try { const { body: { datafeeds: datafeedsResults }, @@ -194,12 +210,22 @@ export function datafeedsProvider(client: IScopedClusterClient, mlClient: MlClie datafeed_id: assumedDefaultDatafeedId, ...(excludeGenerated ? { exclude_generated: true } : {}), }); - if ( - Array.isArray(datafeedsResults) && - datafeedsResults.length === 1 && - datafeedsResults[0].job_id === jobId - ) { - return datafeedsResults[0]; + if (Array.isArray(datafeedsResults)) { + const result = datafeedsResults.filter((d) => jobIds.includes(d.job_id)); + + if (typeof jobId === 'string') { + if (datafeedsResults.length === 1 && datafeedsResults[0].job_id === jobId) { + return datafeedsResults[0]; + } else { + return await findDatafeed(); + } + } + + if (result.length === jobIds.length) { + return datafeedsResults; + } else { + return await findDatafeed(); + } } else { return await findDatafeed(); } diff --git a/x-pack/plugins/ml/server/routes/alerting.ts b/x-pack/plugins/ml/server/routes/alerting.ts index a268a5200b35e..15b7fb6fb4e96 100644 --- a/x-pack/plugins/ml/server/routes/alerting.ts +++ b/x-pack/plugins/ml/server/routes/alerting.ts @@ -9,6 +9,7 @@ import { RouteInitialization } from '../types'; import { wrapError } from '../client/error_wrapper'; import { alertingServiceProvider } from '../lib/alerts/alerting_service'; import { mlAnomalyDetectionAlertPreviewRequest } from './schemas/alerting_schema'; +import { datafeedsProvider } from '../models/job_service/datafeeds'; export function alertingRoutes({ router, routeGuard }: RouteInitialization) { /** @@ -32,7 +33,10 @@ export function alertingRoutes({ router, routeGuard }: RouteInitialization) { }, routeGuard.fullLicenseAPIGuard(async ({ mlClient, request, response, client }) => { try { - const alertingService = alertingServiceProvider(mlClient, client.asInternalUser); + const alertingService = alertingServiceProvider( + mlClient, + datafeedsProvider(client, mlClient) + ); const result = await alertingService.preview(request.body); diff --git a/x-pack/plugins/ml/server/routes/schemas/alerting_schema.ts b/x-pack/plugins/ml/server/routes/schemas/alerting_schema.ts index faf70f42e427e..df22ccfe20821 100644 --- a/x-pack/plugins/ml/server/routes/schemas/alerting_schema.ts +++ b/x-pack/plugins/ml/server/routes/schemas/alerting_schema.ts @@ -26,13 +26,19 @@ export const mlAnomalyDetectionAlertParams = schema.object({ }, } ), - severity: schema.number(), + /** Anomaly score threshold */ + severity: schema.number({ min: 0, max: 100 }), + /** Result type to alert upon */ resultType: schema.oneOf([ schema.literal(ANOMALY_RESULT_TYPE.RECORD), schema.literal(ANOMALY_RESULT_TYPE.BUCKET), schema.literal(ANOMALY_RESULT_TYPE.INFLUENCER), ]), includeInterim: schema.boolean({ defaultValue: true }), + /** User's override for the lookback interval */ + lookbackInterval: schema.nullable(schema.string()), + /** User's override for the top N buckets */ + topNBuckets: schema.nullable(schema.number({ min: 1 })), }); export const mlAnomalyDetectionAlertPreviewRequest = schema.object({ diff --git a/x-pack/plugins/ml/server/shared_services/providers/alerting_service.ts b/x-pack/plugins/ml/server/shared_services/providers/alerting_service.ts index cbe22478e12d6..fa08cdf81fe1c 100644 --- a/x-pack/plugins/ml/server/shared_services/providers/alerting_service.ts +++ b/x-pack/plugins/ml/server/shared_services/providers/alerting_service.ts @@ -8,6 +8,7 @@ import { KibanaRequest, SavedObjectsClientContract } from 'kibana/server'; import { GetGuards } from '../shared_services'; import { alertingServiceProvider, MlAlertingService } from '../../lib/alerts/alerting_service'; +import { datafeedsProvider } from '../../models/job_service/datafeeds'; export function getAlertingServiceProvider(getGuards: GetGuards) { return { @@ -21,7 +22,9 @@ export function getAlertingServiceProvider(getGuards: GetGuards) { .isFullLicense() .hasMlCapabilities(['canGetJobs']) .ok(({ mlClient, scopedClient }) => - alertingServiceProvider(mlClient, scopedClient.asInternalUser).preview(...args) + alertingServiceProvider(mlClient, datafeedsProvider(scopedClient, mlClient)).preview( + ...args + ) ); }, execute: async ( @@ -31,7 +34,9 @@ export function getAlertingServiceProvider(getGuards: GetGuards) { .isFullLicense() .hasMlCapabilities(['canGetJobs']) .ok(({ mlClient, scopedClient }) => - alertingServiceProvider(mlClient, scopedClient.asInternalUser).execute(...args) + alertingServiceProvider(mlClient, datafeedsProvider(scopedClient, mlClient)).execute( + ...args + ) ); }, }; diff --git a/x-pack/test/functional/services/ml/alerting.ts b/x-pack/test/functional/services/ml/alerting.ts index 82f6a86d09199..8d27a75b7b485 100644 --- a/x-pack/test/functional/services/ml/alerting.ts +++ b/x-pack/test/functional/services/ml/alerting.ts @@ -16,6 +16,7 @@ export function MachineLearningAlertingProvider( const retry = getService('retry'); const comboBox = getService('comboBox'); const testSubjects = getService('testSubjects'); + const find = getService('find'); return { async selectAnomalyDetectionAlertType() { @@ -100,5 +101,47 @@ export function MachineLearningAlertingProvider( await testSubjects.existOrFail(`mlAnomalyAlertPreviewCallout`); }); }, + + async assertLookbackInterval(expectedValue: string) { + const actualValue = await testSubjects.getAttribute( + 'mlAnomalyAlertLookbackInterval', + 'value' + ); + expect(actualValue).to.eql( + expectedValue, + `Expected lookback interval to equal ${expectedValue}, got ${actualValue}` + ); + }, + + async assertTopNBuckets(expectedNumberOfBuckets: number) { + const actualValue = await testSubjects.getAttribute('mlAnomalyAlertTopNBuckets', 'value'); + expect(actualValue).to.eql( + expectedNumberOfBuckets, + `Expected number of buckets to equal ${expectedNumberOfBuckets}, got ${actualValue}` + ); + }, + + async setLookbackInterval(interval: string) { + await this.ensureAdvancedSectionOpen(); + await testSubjects.setValue('mlAnomalyAlertLookbackInterval', interval); + await this.assertLookbackInterval(interval); + }, + + async setTopNBuckets(numberOfBuckets: number) { + await this.ensureAdvancedSectionOpen(); + await testSubjects.setValue('mlAnomalyAlertTopNBuckets', numberOfBuckets.toString()); + await this.assertTopNBuckets(numberOfBuckets); + }, + + async ensureAdvancedSectionOpen() { + await retry.tryForTime(5000, async () => { + const isVisible = await find.existsByDisplayedByCssSelector( + '#mlAnomalyAlertAdvancedSettings' + ); + if (!isVisible) { + await testSubjects.click('mlAnomalyAlertAdvancedSettingsTrigger'); + } + }); + }, }; } diff --git a/x-pack/test/functional_with_es_ssl/apps/ml/alert_flyout.ts b/x-pack/test/functional_with_es_ssl/apps/ml/alert_flyout.ts index 8fcf8be9fa493..cc0dcff528663 100644 --- a/x-pack/test/functional_with_es_ssl/apps/ml/alert_flyout.ts +++ b/x-pack/test/functional_with_es_ssl/apps/ml/alert_flyout.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { Datafeed } from '@elastic/elasticsearch/api/types'; import { FtrProviderContext } from '../../ftr_provider_context'; import { DATAFEED_STATE } from '../../../../plugins/ml/common/constants/states'; @@ -39,7 +40,7 @@ function createTestJobAndDatafeed() { categorization_examples_limit: 4, }, }, - datafeed: { + datafeed: ({ datafeed_id: `datafeed-${jobId}`, job_id: jobId, query: { @@ -53,8 +54,9 @@ function createTestJobAndDatafeed() { must_not: [], }, }, + query_delay: '120s', indices: ['ft_ecommerce'], - }, + } as unknown) as Datafeed, }; } @@ -83,7 +85,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { // @ts-expect-error not full interface await ml.api.createAnomalyDetectionJob(job); await ml.api.openAnomalyDetectionJob(job.job_id); - // @ts-expect-error not full interface await ml.api.createDatafeed(datafeed); await ml.api.startDatafeed(datafeed.datafeed_id); await ml.api.waitForDatafeedState(datafeed.datafeed_id, DATAFEED_STATE.STARTED); @@ -109,6 +110,10 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await ml.alerting.selectResultType('record'); await ml.alerting.setSeverity(10); + await ml.testExecution.logTestStep('should populate advanced settings with default values'); + await ml.alerting.assertTopNBuckets(1); + await ml.alerting.assertLookbackInterval('123m'); + await ml.testExecution.logTestStep('should preview the alert condition'); await ml.alerting.assertPreviewButtonState(false); await ml.alerting.setTestInterval('2y'); From 9ae605af93dbf5aebb891258bb32f0b0007bbaf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20St=C3=BCrmer?= Date: Tue, 20 Apr 2021 11:22:14 +0200 Subject: [PATCH 43/56] [Logs UI] Display and query runtime fields from KIPs in the log stream and entry flyout (#97467) This enhances the queries such that they pass runtime fields defined on Kibana index patterns as `runtime_mappings` in the log entry search strategies. --- .../common/dependency_mocks/index_patterns.ts | 100 ++++++++++++++++++ .../resolved_log_source_configuration.ts | 36 ++++++- .../utils/logs_overview_fetches.test.ts | 37 ++++++- .../log_entries/kibana_log_entries_adapter.ts | 2 + .../log_entries_search_strategy.test.ts | 46 +++++++- .../log_entries_search_strategy.ts | 3 +- .../log_entry_search_strategy.test.ts | 69 ++++++++++-- .../log_entries/log_entry_search_strategy.ts | 10 +- .../server/services/log_entries/mocks.ts | 37 ------- .../log_entries/queries/log_entries.ts | 2 + .../services/log_entries/queries/log_entry.ts | 4 +- 11 files changed, 291 insertions(+), 55 deletions(-) create mode 100644 x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts delete mode 100644 x-pack/plugins/infra/server/services/log_entries/mocks.ts diff --git a/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts b/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts new file mode 100644 index 0000000000000..14215c1539473 --- /dev/null +++ b/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts @@ -0,0 +1,100 @@ +/* + * 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 { from, of } from 'rxjs'; +import { delay } from 'rxjs/operators'; +import { + fieldList, + FieldSpec, + IIndexPattern, + IndexPattern, + IndexPatternsContract, + RuntimeField, +} from 'src/plugins/data/common'; + +type IndexPatternMock = Pick< + IndexPattern, + | 'fields' + | 'getComputedFields' + | 'getFieldByName' + | 'getTimeField' + | 'id' + | 'isTimeBased' + | 'title' + | 'type' +>; +type IndexPatternMockSpec = Pick & { + fields: FieldSpec[]; +}; + +export const createIndexPatternMock = ({ + id, + title, + type = undefined, + fields, + timeFieldName, +}: IndexPatternMockSpec): IndexPatternMock => { + const indexPatternFieldList = fieldList(fields); + + return { + id, + title, + type, + fields: indexPatternFieldList, + getTimeField: () => indexPatternFieldList.find(({ name }) => name === timeFieldName), + isTimeBased: () => timeFieldName != null, + getFieldByName: (fieldName) => indexPatternFieldList.find(({ name }) => name === fieldName), + getComputedFields: () => ({ + runtimeFields: indexPatternFieldList.reduce>( + (accumulatedFields, { name, runtimeField }) => ({ + ...accumulatedFields, + ...(runtimeField != null + ? { + [name]: runtimeField, + } + : {}), + }), + {} + ), + scriptFields: {}, + storedFields: [], + docvalueFields: [], + }), + }; +}; + +export const createIndexPatternsMock = ( + asyncDelay: number, + indexPatterns: IndexPatternMock[] +): { + getIdsWithTitle: IndexPatternsContract['getIdsWithTitle']; + get: (...args: Parameters) => Promise; +} => { + return { + async getIdsWithTitle(_refresh?: boolean) { + const indexPatterns$ = of( + indexPatterns.map(({ id = 'unknown_id', title }) => ({ id, title })) + ); + return await indexPatterns$.pipe(delay(asyncDelay)).toPromise(); + }, + async get(indexPatternId: string) { + const indexPatterns$ = from( + indexPatterns.filter((indexPattern) => indexPattern.id === indexPatternId) + ); + return await indexPatterns$.pipe(delay(asyncDelay)).toPromise(); + }, + }; +}; + +export const createIndexPatternsStartMock = ( + asyncDelay: number, + indexPatterns: IndexPatternMock[] +): any => { + return { + indexPatternsServiceFactory: async () => createIndexPatternsMock(asyncDelay, indexPatterns), + }; +}; diff --git a/x-pack/plugins/infra/common/log_sources/resolved_log_source_configuration.ts b/x-pack/plugins/infra/common/log_sources/resolved_log_source_configuration.ts index 8bc7eee7d4eb6..daac7f6a138eb 100644 --- a/x-pack/plugins/infra/common/log_sources/resolved_log_source_configuration.ts +++ b/x-pack/plugins/infra/common/log_sources/resolved_log_source_configuration.ts @@ -5,11 +5,13 @@ * 2.0. */ +import { estypes } from '@elastic/elasticsearch'; +import { IndexPattern, IndexPatternsContract } from '../../../../../src/plugins/data/common'; +import { ObjectEntries } from '../utility_types'; import { - LogSourceConfigurationProperties, LogSourceColumnConfiguration, + LogSourceConfigurationProperties, } from './log_source_configuration'; -import { IndexPatternsContract, IndexPattern } from '../../../../../src/plugins/data/common'; export interface ResolvedLogSourceConfiguration { name: string; @@ -19,6 +21,7 @@ export interface ResolvedLogSourceConfiguration { tiebreakerField: string; messageField: string[]; fields: IndexPattern['fields']; + runtimeMappings: estypes.RuntimeFields; columns: LogSourceColumnConfiguration[]; } @@ -52,6 +55,7 @@ const resolveLegacyReference = async ( tiebreakerField: sourceConfiguration.fields.tiebreaker, messageField: sourceConfiguration.fields.message, fields, + runtimeMappings: {}, columns: sourceConfiguration.logColumns, name: sourceConfiguration.name, description: sourceConfiguration.description, @@ -76,8 +80,36 @@ const resolveKibanaIndexPatternReference = async ( tiebreakerField: '_doc', messageField: ['message'], fields: indexPattern.fields, + runtimeMappings: resolveRuntimeMappings(indexPattern), columns: sourceConfiguration.logColumns, name: sourceConfiguration.name, description: sourceConfiguration.description, }; }; + +// this might take other sources of runtime fields into account in the future +const resolveRuntimeMappings = (indexPattern: IndexPattern): estypes.RuntimeFields => { + const { runtimeFields } = indexPattern.getComputedFields(); + + const runtimeMappingsFromIndexPattern = (Object.entries(runtimeFields) as ObjectEntries< + typeof runtimeFields + >).reduce( + (accumulatedMappings, [runtimeFieldName, runtimeFieldSpec]) => ({ + ...accumulatedMappings, + [runtimeFieldName]: { + type: runtimeFieldSpec.type, + ...(runtimeFieldSpec.script != null + ? { + script: { + lang: 'painless', // required in the es types + source: runtimeFieldSpec.script.source, + }, + } + : {}), + }, + }), + {} + ); + + return runtimeMappingsFromIndexPattern; +}; diff --git a/x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts b/x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts index 3d08d4fc270bc..8d51f54e3f55a 100644 --- a/x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts +++ b/x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts @@ -8,11 +8,12 @@ import { CoreStart } from 'kibana/public'; import { coreMock } from 'src/core/public/mocks'; import { dataPluginMock } from 'src/plugins/data/public/mocks'; -import { callFetchLogSourceStatusAPI } from '../containers/logs/log_source/api/fetch_log_source_status'; +import { createIndexPatternMock } from '../../common/dependency_mocks/index_patterns'; +import { GetLogSourceConfigurationSuccessResponsePayload } from '../../common/http_api/log_sources/get_log_source_configuration'; import { callFetchLogSourceConfigurationAPI } from '../containers/logs/log_source/api/fetch_log_source_configuration'; +import { callFetchLogSourceStatusAPI } from '../containers/logs/log_source/api/fetch_log_source_status'; import { InfraClientStartDeps, InfraClientStartExports } from '../types'; import { getLogsHasDataFetcher, getLogsOverviewDataFetcher } from './logs_overview_fetchers'; -import { GetLogSourceConfigurationSuccessResponsePayload } from '../../common/http_api/log_sources/get_log_source_configuration'; jest.mock('../containers/logs/log_source/api/fetch_log_source_status'); const mockedCallFetchLogSourceStatusAPI = callFetchLogSourceStatusAPI as jest.MockedFunction< @@ -41,6 +42,36 @@ function setup() { // const dataResponder = jest.fn(); + (data.indexPatterns.get as jest.Mock).mockResolvedValue( + createIndexPatternMock({ + id: 'test-index-pattern', + title: 'log-indices-*', + timeFieldName: '@timestamp', + fields: [ + { + name: 'event.dataset', + type: 'string', + esTypes: ['keyword'], + aggregatable: true, + searchable: true, + }, + { + name: 'runtime_field', + type: 'string', + runtimeField: { + type: 'keyword', + script: { + source: 'emit("runtime value")', + }, + }, + esTypes: ['keyword'], + aggregatable: true, + searchable: true, + }, + ], + }) + ); + (data.search.search as jest.Mock).mockReturnValue({ subscribe: (progress: Function, error: Function, finish: Function) => { progress(dataResponder()); @@ -114,7 +145,7 @@ describe('Logs UI Observability Homepage Functions', () => { configuration: { logIndices: { type: 'index_pattern', - indexPatternId: 'some-test-id', + indexPatternId: 'test-index-pattern', }, fields: { timestamp: '@timestamp', tiebreaker: '_doc' }, }, diff --git a/x-pack/plugins/infra/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts b/x-pack/plugins/infra/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts index 33df2b4d55d22..3aaa747b945a8 100644 --- a/x-pack/plugins/infra/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts +++ b/x-pack/plugins/infra/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts @@ -93,6 +93,7 @@ export class InfraKibanaLogEntriesAdapter implements LogEntriesAdapter { ], }, }, + runtime_mappings: resolvedLogSourceConfiguration.runtimeMappings, sort, ...highlightClause, ...searchAfterClause, @@ -182,6 +183,7 @@ export class InfraKibanaLogEntriesAdapter implements LogEntriesAdapter { ], }, }, + runtime_mappings: resolvedLogSourceConfiguration.runtimeMappings, size: 0, track_total_hits: false, }, diff --git a/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.test.ts b/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.test.ts index 7c7417d038e2e..3cda019359caf 100644 --- a/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.test.ts +++ b/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.test.ts @@ -19,13 +19,16 @@ import { SearchStrategyDependencies, } from 'src/plugins/data/server'; import { createSearchSessionsClientMock } from '../../../../../../src/plugins/data/server/search/mocks'; +import { + createIndexPatternMock, + createIndexPatternsStartMock, +} from '../../../common/dependency_mocks/index_patterns'; import { InfraSource } from '../../lib/sources'; import { createInfraSourcesMock } from '../../lib/sources/mocks'; import { logEntriesSearchRequestStateRT, logEntriesSearchStrategyProvider, } from './log_entries_search_strategy'; -import { getIndexPatternsMock } from './mocks'; describe('LogEntries search strategy', () => { it('handles initial search requests', async () => { @@ -72,6 +75,15 @@ describe('LogEntries search strategy', () => { index: 'log-indices-*', body: expect.objectContaining({ fields: expect.arrayContaining(['event.dataset', 'message']), + runtime_mappings: { + runtime_field: { + type: 'keyword', + script: { + lang: 'painless', + source: 'emit("runtime value")', + }, + }, + }, }), }), }), @@ -258,7 +270,7 @@ const createSourceConfigurationMock = (): InfraSource => ({ description: 'SOURCE_DESCRIPTION', logIndices: { type: 'index_pattern', - indexPatternId: 'some-test-id', + indexPatternId: 'test-index-pattern', }, metricAlias: 'metric-indices-*', inventoryDefaultView: 'DEFAULT_VIEW', @@ -323,5 +335,33 @@ const createDataPluginMock = (esSearchStrategyMock: ISearchStrategy): any => ({ search: { getSearchStrategy: jest.fn().mockReturnValue(esSearchStrategyMock), }, - indexPatterns: getIndexPatternsMock(), + indexPatterns: createIndexPatternsStartMock(0, [ + createIndexPatternMock({ + id: 'test-index-pattern', + title: 'log-indices-*', + timeFieldName: '@timestamp', + fields: [ + { + name: 'event.dataset', + type: 'string', + esTypes: ['keyword'], + aggregatable: true, + searchable: true, + }, + { + name: 'runtime_field', + type: 'string', + runtimeField: { + type: 'keyword', + script: { + source: 'emit("runtime value")', + }, + }, + esTypes: ['keyword'], + aggregatable: true, + searchable: true, + }, + ], + }), + ]), }); diff --git a/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.ts b/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.ts index fc5dab9006df6..c47a1c163f9ec 100644 --- a/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.ts +++ b/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.ts @@ -109,7 +109,7 @@ export const logEntriesSearchStrategyProvider = ({ forkJoin([resolvedSourceConfiguration$, messageFormattingRules$]).pipe( map( ([ - { indices, timestampField, tiebreakerField, columns }, + { indices, timestampField, tiebreakerField, columns, runtimeMappings }, messageFormattingRules, ]): IEsSearchRequest => { return { @@ -123,6 +123,7 @@ export const logEntriesSearchStrategyProvider = ({ timestampField, tiebreakerField, getRequiredFields(params.columns ?? columns, messageFormattingRules), + runtimeMappings, params.query, params.highlightPhrase ), diff --git a/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.test.ts b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.test.ts index 785a4414a984c..f220c8913a2e6 100644 --- a/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.test.ts +++ b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.test.ts @@ -18,14 +18,17 @@ import { ISearchStrategy, SearchStrategyDependencies, } from 'src/plugins/data/server'; -import { getIndexPatternsMock } from './mocks'; +import { createSearchSessionsClientMock } from '../../../../../../src/plugins/data/server/search/mocks'; +import { + createIndexPatternMock, + createIndexPatternsStartMock, +} from '../../../common/dependency_mocks/index_patterns'; +import { InfraSource } from '../../../common/source_configuration/source_configuration'; import { createInfraSourcesMock } from '../../lib/sources/mocks'; import { logEntrySearchRequestStateRT, logEntrySearchStrategyProvider, } from './log_entry_search_strategy'; -import { createSearchSessionsClientMock } from '../../../../../../src/plugins/data/server/search/mocks'; -import { InfraSource } from '../../../common/source_configuration/source_configuration'; describe('LogEntry search strategy', () => { it('handles initial search requests', async () => { @@ -61,7 +64,33 @@ describe('LogEntry search strategy', () => { .toPromise(); expect(sourcesMock.getSourceConfiguration).toHaveBeenCalled(); - expect(esSearchStrategyMock.search).toHaveBeenCalled(); + expect(esSearchStrategyMock.search).toHaveBeenCalledWith( + { + params: expect.objectContaining({ + index: 'log-indices-*', + body: expect.objectContaining({ + query: { + ids: { + values: ['LOG_ENTRY_ID'], + }, + }, + runtime_mappings: { + runtime_field: { + type: 'keyword', + script: { + lang: 'painless', + source: 'emit("runtime value")', + }, + }, + }, + }), + terminate_after: 1, + track_total_hits: false, + }), + }, + expect.anything(), + expect.anything() + ); expect(response.id).toEqual(expect.any(String)); expect(response.isRunning).toBe(true); }); @@ -207,7 +236,7 @@ const createSourceConfigurationMock = (): InfraSource => ({ description: 'SOURCE_DESCRIPTION', logIndices: { type: 'index_pattern', - indexPatternId: 'some-test-id', + indexPatternId: 'test-index-pattern', }, metricAlias: 'metric-indices-*', inventoryDefaultView: 'DEFAULT_VIEW', @@ -261,5 +290,33 @@ const createDataPluginMock = (esSearchStrategyMock: ISearchStrategy): any => ({ search: { getSearchStrategy: jest.fn().mockReturnValue(esSearchStrategyMock), }, - indexPatterns: getIndexPatternsMock(), + indexPatterns: createIndexPatternsStartMock(0, [ + createIndexPatternMock({ + id: 'test-index-pattern', + title: 'log-indices-*', + timeFieldName: '@timestamp', + fields: [ + { + name: 'event.dataset', + type: 'string', + esTypes: ['keyword'], + aggregatable: true, + searchable: true, + }, + { + name: 'runtime_field', + type: 'string', + runtimeField: { + type: 'keyword', + script: { + source: 'emit("runtime value")', + }, + }, + esTypes: ['keyword'], + aggregatable: true, + searchable: true, + }, + ], + }), + ]), }); diff --git a/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.ts b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.ts index c35c05d947da0..aa34204b9fb44 100644 --- a/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.ts +++ b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.ts @@ -78,13 +78,19 @@ export const logEntrySearchStrategyProvider = ({ concatMap(({ params }) => resolvedSourceConfiguration$.pipe( map( - ({ indices, timestampField, tiebreakerField }): IEsSearchRequest => ({ + ({ + indices, + timestampField, + tiebreakerField, + runtimeMappings, + }): IEsSearchRequest => ({ // @ts-expect-error @elastic/elasticsearch declares indices_boost as Record params: createGetLogEntryQuery( indices, params.logEntryId, timestampField, - tiebreakerField + tiebreakerField, + runtimeMappings ), }) ) diff --git a/x-pack/plugins/infra/server/services/log_entries/mocks.ts b/x-pack/plugins/infra/server/services/log_entries/mocks.ts deleted file mode 100644 index 7c508b98554ec..0000000000000 --- a/x-pack/plugins/infra/server/services/log_entries/mocks.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 { IIndexPattern, IFieldType, IndexPatternsContract } from 'src/plugins/data/common'; - -const indexPatternFields: IFieldType[] = [ - { - name: 'event.dataset', - type: 'string', - esTypes: ['keyword'], - aggregatable: true, - filterable: true, - searchable: true, - }, -]; - -const indexPattern: IIndexPattern = { - id: '1234', - title: 'log-indices-*', - timeFieldName: '@timestamp', - fields: indexPatternFields, -}; - -export const getIndexPatternsMock = (): any => { - return { - indexPatternsServiceFactory: async () => { - return { - get: async (id) => indexPattern, - getFieldsForWildcard: async (options) => indexPatternFields, - } as Pick; - }, - }; -}; diff --git a/x-pack/plugins/infra/server/services/log_entries/queries/log_entries.ts b/x-pack/plugins/infra/server/services/log_entries/queries/log_entries.ts index 6ae7232d77a17..6df17dbfd7bfd 100644 --- a/x-pack/plugins/infra/server/services/log_entries/queries/log_entries.ts +++ b/x-pack/plugins/infra/server/services/log_entries/queries/log_entries.ts @@ -29,6 +29,7 @@ export const createGetLogEntriesQuery = ( timestampField: string, tiebreakerField: string, fields: string[], + runtimeMappings?: estypes.RuntimeFields, query?: JsonObject, highlightTerm?: string ): estypes.AsyncSearchSubmitRequest => { @@ -53,6 +54,7 @@ export const createGetLogEntriesQuery = ( }, // @ts-expect-error @elastic/elasticsearch doesn't declare body.fields on AsyncSearchSubmitRequest fields, + runtime_mappings: runtimeMappings, _source: false, ...createSortClause(sortDirection, timestampField, tiebreakerField), ...createSearchAfterClause(cursor), diff --git a/x-pack/plugins/infra/server/services/log_entries/queries/log_entry.ts b/x-pack/plugins/infra/server/services/log_entries/queries/log_entry.ts index 85af8b92fe080..6bef317d96ada 100644 --- a/x-pack/plugins/infra/server/services/log_entries/queries/log_entry.ts +++ b/x-pack/plugins/infra/server/services/log_entries/queries/log_entry.ts @@ -17,7 +17,8 @@ export const createGetLogEntryQuery = ( logEntryIndex: string, logEntryId: string, timestampField: string, - tiebreakerField: string + tiebreakerField: string, + runtimeMappings?: estypes.RuntimeFields ): estypes.AsyncSearchSubmitRequest => ({ index: logEntryIndex, terminate_after: 1, @@ -32,6 +33,7 @@ export const createGetLogEntryQuery = ( }, // @ts-expect-error @elastic/elasticsearch doesn't declare body.fields on AsyncSearchSubmitRequest fields: ['*'], + runtime_mappings: runtimeMappings, sort: [{ [timestampField]: 'desc' }, { [tiebreakerField]: 'desc' }], _source: false, }, From e4bbdda1297d4172edb14c8d0f9fe7ee043b7515 Mon Sep 17 00:00:00 2001 From: Angela Chuang <6295984+angorayc@users.noreply.github.com> Date: Tue, 20 Apr 2021 10:30:30 +0100 Subject: [PATCH 44/56] use smaller piece of mock data (#96953) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../apis/security_solution/kpi_hosts.ts | 349 +- .../es_archives/auditbeat/default/data.json | 110231 +++++++++++++++ .../es_archives/auditbeat/kpi_hosts/data.json | 194 + .../auditbeat/kpi_hosts/mappings.json | 1903 + .../es_archives/filebeat/kpi_hosts/data.json | 133 + .../filebeat/kpi_hosts/mappings.json | 5940 + 6 files changed, 118564 insertions(+), 186 deletions(-) create mode 100644 x-pack/test/functional/es_archives/auditbeat/default/data.json create mode 100644 x-pack/test/functional/es_archives/auditbeat/kpi_hosts/data.json create mode 100644 x-pack/test/functional/es_archives/auditbeat/kpi_hosts/mappings.json create mode 100644 x-pack/test/functional/es_archives/filebeat/kpi_hosts/data.json create mode 100644 x-pack/test/functional/es_archives/filebeat/kpi_hosts/mappings.json diff --git a/x-pack/test/api_integration/apis/security_solution/kpi_hosts.ts b/x-pack/test/api_integration/apis/security_solution/kpi_hosts.ts index f2e597912c4e1..ff395f056354e 100644 --- a/x-pack/test/api_integration/apis/security_solution/kpi_hosts.ts +++ b/x-pack/test/api_integration/apis/security_solution/kpi_hosts.ts @@ -10,13 +10,14 @@ import { HostsKpiQueries } from '../../../../plugins/security_solution/common/se import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { + const retry = getService('retry'); const esArchiver = getService('esArchiver'); const supertest = getService('supertest'); describe('Kpi Hosts', () => { describe('With filebeat', () => { - before(() => esArchiver.load('filebeat/default')); - after(() => esArchiver.unload('filebeat/default')); + before(() => esArchiver.load('filebeat/kpi_hosts')); + after(() => esArchiver.unload('filebeat/kpi_hosts')); const FROM = '2000-01-01T00:00:00.000Z'; const TO = '3000-01-01T00:00:00.000Z'; @@ -24,19 +25,7 @@ export default function ({ getService }: FtrProviderContext) { hosts: 1, hostsHistogram: [ { - x: new Date('2019-02-09T16:00:00.000Z').valueOf(), - y: 1, - }, - { - x: new Date('2019-02-09T19:00:00.000Z').valueOf(), - y: 0, - }, - { - x: new Date('2019-02-09T22:00:00.000Z').valueOf(), - y: 1, - }, - { - x: new Date('2019-02-10T01:00:00.000Z').valueOf(), + x: new Date('2019-02-09T16:45:06.000Z').valueOf(), y: 1, }, ], @@ -44,246 +33,234 @@ export default function ({ getService }: FtrProviderContext) { authSuccessHistogram: null, authFailure: 0, authFailureHistogram: null, - uniqueSourceIps: 121, + uniqueSourceIps: 1, uniqueSourceIpsHistogram: [ { - x: new Date('2019-02-09T16:00:00.000Z').valueOf(), - y: 52, - }, - { - x: new Date('2019-02-09T19:00:00.000Z').valueOf(), - y: 0, - }, - { - x: new Date('2019-02-09T22:00:00.000Z').valueOf(), - y: 31, - }, - { - x: new Date('2019-02-10T01:00:00.000Z').valueOf(), - y: 88, + x: new Date('2019-02-09T16:45:06.000Z').valueOf(), + y: 1, }, ], - uniqueDestinationIps: 154, + uniqueDestinationIps: 1, uniqueDestinationIpsHistogram: [ { - x: new Date('2019-02-09T16:00:00.000Z').valueOf(), - y: 61, - }, - { - x: new Date('2019-02-09T19:00:00.000Z').valueOf(), - y: 0, - }, - { - x: new Date('2019-02-09T22:00:00.000Z').valueOf(), - y: 45, - }, - { - x: new Date('2019-02-10T01:00:00.000Z').valueOf(), - y: 114, + x: new Date('2019-02-09T16:45:06.000Z').valueOf(), + y: 1, }, ], }; it('Make sure that we get KpiHosts data', async () => { - const { body: kpiHosts } = await supertest - .post('/internal/search/securitySolutionSearchStrategy/') - .set('kbn-xsrf', 'true') - .send({ - factoryQueryType: HostsKpiQueries.kpiHosts, - timerange: { - interval: '12h', - to: TO, - from: FROM, - }, - defaultIndex: ['filebeat-*'], - docValueFields: [], - inspect: false, - wait_for_completion_timeout: '10s', - }) - .expect(200); + await retry.try(async () => { + const { body: kpiHosts } = await supertest + .post('/internal/search/securitySolutionSearchStrategy/') + .set('kbn-xsrf', 'true') + .send({ + factoryQueryType: HostsKpiQueries.kpiHosts, + timerange: { + interval: '12h', + to: TO, + from: FROM, + }, + defaultIndex: ['filebeat-*'], + docValueFields: [], + inspect: false, + wait_for_completion_timeout: '10s', + }) + .expect(200); - expect(kpiHosts.hostsHistogram!).to.eql(expectedResult.hostsHistogram); - expect(kpiHosts.hosts!).to.eql(expectedResult.hosts); + expect(kpiHosts.hostsHistogram!).to.eql(expectedResult.hostsHistogram); + expect(kpiHosts.hosts!).to.eql(expectedResult.hosts); + }); }); it('Make sure that we get KpiAuthentications data', async () => { - const { body } = await supertest - .post('/internal/search/securitySolutionSearchStrategy/') - .set('kbn-xsrf', 'true') - .send({ - factoryQueryType: HostsKpiQueries.kpiAuthentications, - timerange: { - interval: '12h', - to: TO, - from: FROM, - }, - defaultIndex: ['filebeat-*'], - docValueFields: [], - inspect: false, - /* We need a very long timeout to avoid returning just partial data. - ** https://github.com/elastic/kibana/blob/master/x-pack/test/api_integration/apis/search/search.ts#L18 - */ - wait_for_completion_timeout: '10s', - }) - .expect(200); - expect(body.authenticationsSuccess!).to.eql(expectedResult.authSuccess); - expect(body.authenticationsSuccessHistogram!).to.eql(expectedResult.authSuccessHistogram); - expect(body.authenticationsFailure!).to.eql(expectedResult.authFailure); - expect(body.authenticationsFailureHistogram!).to.eql(expectedResult.authFailureHistogram); + await retry.try(async () => { + const { body } = await supertest + .post('/internal/search/securitySolutionSearchStrategy/') + .set('kbn-xsrf', 'true') + .send({ + factoryQueryType: HostsKpiQueries.kpiAuthentications, + timerange: { + interval: '12h', + to: TO, + from: FROM, + }, + defaultIndex: ['filebeat-*'], + docValueFields: [], + inspect: false, + /* We need a very long timeout to avoid returning just partial data. + ** https://github.com/elastic/kibana/blob/master/x-pack/test/api_integration/apis/search/search.ts#L18 + */ + wait_for_completion_timeout: '10s', + }) + .expect(200); + expect(body.authenticationsSuccess!).to.eql(expectedResult.authSuccess); + expect(body.authenticationsSuccessHistogram!).to.eql(expectedResult.authSuccessHistogram); + expect(body.authenticationsFailure!).to.eql(expectedResult.authFailure); + expect(body.authenticationsFailureHistogram!).to.eql(expectedResult.authFailureHistogram); + }); }); it('Make sure that we get KpiUniqueIps data', async () => { - const { body } = await supertest - .post('/internal/search/securitySolutionSearchStrategy/') - .set('kbn-xsrf', 'true') - .send({ - factoryQueryType: HostsKpiQueries.kpiUniqueIps, - timerange: { - interval: '12h', - to: TO, - from: FROM, - }, - defaultIndex: ['filebeat-*'], - docValueFields: [], - inspect: false, - wait_for_completion_timeout: '10s', - }) - .expect(200); - expect(body.uniqueDestinationIps!).to.eql(expectedResult.uniqueDestinationIps); - expect(body.uniqueDestinationIpsHistogram!).to.eql( - expectedResult.uniqueDestinationIpsHistogram - ); - expect(body.uniqueSourceIps!).to.eql(expectedResult.uniqueSourceIps); - expect(body.uniqueSourceIpsHistogram!).to.eql(expectedResult.uniqueSourceIpsHistogram); + await retry.try(async () => { + const { body } = await supertest + .post('/internal/search/securitySolutionSearchStrategy/') + .set('kbn-xsrf', 'true') + .send({ + factoryQueryType: HostsKpiQueries.kpiUniqueIps, + timerange: { + interval: '12h', + to: TO, + from: FROM, + }, + defaultIndex: ['filebeat-*'], + docValueFields: [], + inspect: false, + wait_for_completion_timeout: '10s', + }) + .expect(200); + expect(body.uniqueDestinationIps!).to.eql(expectedResult.uniqueDestinationIps); + expect(body.uniqueDestinationIpsHistogram!).to.eql( + expectedResult.uniqueDestinationIpsHistogram + ); + expect(body.uniqueSourceIps!).to.eql(expectedResult.uniqueSourceIps); + expect(body.uniqueSourceIpsHistogram!).to.eql(expectedResult.uniqueSourceIpsHistogram); + }); }); }); describe('With auditbeat', () => { - before(() => esArchiver.load('auditbeat/default')); - after(() => esArchiver.unload('auditbeat/default')); + before(() => esArchiver.load('auditbeat/kpi_hosts')); + after(() => esArchiver.unload('auditbeat/kpi_hosts')); const FROM = '2000-01-01T00:00:00.000Z'; const TO = '3000-01-01T00:00:00.000Z'; const expectedResult = { - hosts: 6, + hosts: 3, hostsHistogram: [ { x: new Date('2018-11-27T00:00:00.000Z').valueOf(), - y: 6, + y: 1, }, { x: new Date('2018-11-27T00:30:00.000Z').valueOf(), - y: 6, + y: 0, }, { x: new Date('2018-11-27T01:00:00.000Z').valueOf(), - y: 6, + y: 0, }, { x: new Date('2018-11-27T01:30:00.000Z').valueOf(), - y: 6, + y: 0, }, { x: new Date('2018-11-27T02:00:00.000Z').valueOf(), - y: 6, + y: 1, }, { x: new Date('2018-11-27T02:30:00.000Z').valueOf(), - y: 6, + y: 1, }, ], authSuccess: 0, authSuccessHistogram: null, authFailure: 0, authFailureHistogram: null, - uniqueSourceIps: 370, + uniqueSourceIps: 3, uniqueSourceIpsHistogram: [ - { x: 1543276800000, y: 74 }, - { x: 1543278600000, y: 52 }, - { x: 1543280400000, y: 71 }, - { x: 1543282200000, y: 76 }, - { x: 1543284000000, y: 71 }, - { x: 1543285800000, y: 89 }, + { x: 1543276800000, y: 1 }, + { x: 1543278600000, y: 0 }, + { x: 1543280400000, y: 0 }, + { x: 1543282200000, y: 0 }, + { x: 1543284000000, y: 1 }, + { x: 1543285800000, y: 1 }, ], - uniqueDestinationIps: 1, + uniqueDestinationIps: 0, uniqueDestinationIpsHistogram: [ { x: 1543276800000, y: 0 }, { x: 1543278600000, y: 0 }, { x: 1543280400000, y: 0 }, { x: 1543282200000, y: 0 }, { x: 1543284000000, y: 0 }, - { x: 1543285800000, y: 1 }, + { x: 1543285800000, y: 0 }, ], }; it('Make sure that we get KpiHosts data', async () => { - const { body: kpiHosts } = await supertest - .post('/internal/search/securitySolutionSearchStrategy/') - .set('kbn-xsrf', 'true') - .send({ - factoryQueryType: HostsKpiQueries.kpiHosts, - timerange: { - interval: '12h', - to: TO, - from: FROM, - }, - defaultIndex: ['auditbeat-*'], - docValueFields: [], - inspect: false, - wait_for_completion_timeout: '10s', - }) - .expect(200); + await retry.try(async () => { + const { body: kpiHosts } = await supertest + .post('/internal/search/securitySolutionSearchStrategy/') + .set('kbn-xsrf', 'true') + .send({ + factoryQueryType: HostsKpiQueries.kpiHosts, + timerange: { + interval: '12h', + to: TO, + from: FROM, + }, + defaultIndex: ['auditbeat-*'], + docValueFields: [], + inspect: false, + wait_for_completion_timeout: '10s', + }) + .expect(200); - expect(kpiHosts.hostsHistogram!).to.eql(expectedResult.hostsHistogram); - expect(kpiHosts.hosts!).to.eql(expectedResult.hosts); + expect(kpiHosts.hostsHistogram!).to.eql(expectedResult.hostsHistogram); + expect(kpiHosts.hosts!).to.eql(expectedResult.hosts); + }); }); it('Make sure that we get KpiAuthentications data', async () => { - const { body } = await supertest - .post('/internal/search/securitySolutionSearchStrategy/') - .set('kbn-xsrf', 'true') - .send({ - factoryQueryType: HostsKpiQueries.kpiAuthentications, - timerange: { - interval: '12h', - to: TO, - from: FROM, - }, - defaultIndex: ['auditbeat-*'], - docValueFields: [], - inspect: false, - wait_for_completion_timeout: '10s', - }) - .expect(200); - expect(body.authenticationsSuccess!).to.eql(expectedResult.authSuccess); - expect(body.authenticationsSuccessHistogram!).to.eql(expectedResult.authSuccessHistogram); - expect(body.authenticationsFailure!).to.eql(expectedResult.authFailure); - expect(body.authenticationsFailureHistogram!).to.eql(expectedResult.authFailureHistogram); + await retry.try(async () => { + const { body } = await supertest + .post('/internal/search/securitySolutionSearchStrategy/') + .set('kbn-xsrf', 'true') + .send({ + factoryQueryType: HostsKpiQueries.kpiAuthentications, + timerange: { + interval: '12h', + to: TO, + from: FROM, + }, + defaultIndex: ['auditbeat-*'], + docValueFields: [], + inspect: false, + wait_for_completion_timeout: '10s', + }) + .expect(200); + expect(body.authenticationsSuccess!).to.eql(expectedResult.authSuccess); + expect(body.authenticationsSuccessHistogram!).to.eql(expectedResult.authSuccessHistogram); + expect(body.authenticationsFailure!).to.eql(expectedResult.authFailure); + expect(body.authenticationsFailureHistogram!).to.eql(expectedResult.authFailureHistogram); + }); }); it('Make sure that we get KpiUniqueIps data', async () => { - const { body } = await supertest - .post('/internal/search/securitySolutionSearchStrategy/') - .set('kbn-xsrf', 'true') - .send({ - factoryQueryType: HostsKpiQueries.kpiUniqueIps, - timerange: { - interval: '12h', - to: TO, - from: FROM, - }, - defaultIndex: ['auditbeat-*'], - docValueFields: [], - inspect: false, - wait_for_completion_timeout: '10s', - }) - .expect(200); - expect(body.uniqueDestinationIps!).to.eql(expectedResult.uniqueDestinationIps); - expect(body.uniqueDestinationIpsHistogram!).to.eql( - expectedResult.uniqueDestinationIpsHistogram - ); - expect(body.uniqueSourceIps!).to.eql(expectedResult.uniqueSourceIps); - expect(body.uniqueSourceIpsHistogram!).to.eql(expectedResult.uniqueSourceIpsHistogram); + await retry.try(async () => { + const { body } = await supertest + .post('/internal/search/securitySolutionSearchStrategy/') + .set('kbn-xsrf', 'true') + .send({ + factoryQueryType: HostsKpiQueries.kpiUniqueIps, + timerange: { + interval: '12h', + to: TO, + from: FROM, + }, + defaultIndex: ['auditbeat-*'], + docValueFields: [], + inspect: false, + wait_for_completion_timeout: '10s', + }) + .expect(200); + expect(body.uniqueDestinationIps!).to.eql(expectedResult.uniqueDestinationIps); + expect(body.uniqueDestinationIpsHistogram!).to.eql( + expectedResult.uniqueDestinationIpsHistogram + ); + expect(body.uniqueSourceIps!).to.eql(expectedResult.uniqueSourceIps); + expect(body.uniqueSourceIpsHistogram!).to.eql(expectedResult.uniqueSourceIpsHistogram); + }); }); }); }); diff --git a/x-pack/test/functional/es_archives/auditbeat/default/data.json b/x-pack/test/functional/es_archives/auditbeat/default/data.json new file mode 100644 index 0000000000000..b10f3cc73ec6a --- /dev/null +++ b/x-pack/test/functional/es_archives/auditbeat/default/data.json @@ -0,0 +1,110231 @@ +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Rs93UmcBTFzn_XoLWT6M", + "source": { + "@timestamp": "2018-11-27T00:00:11.544Z", + "process": { + "pid": "31964", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.87.213" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "128.199.87.213", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "128.199.87.213", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192383, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "R893UmcBTFzn_XoLWT6M", + "source": { + "@timestamp": "2018-11-27T00:00:12.110Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "31966", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.40.116.98" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "89.40.116.98", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192384, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SM93UmcBTFzn_XoLWT6M", + "source": { + "@timestamp": "2018-11-27T00:00:12.111Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31966", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.40.116.98" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "89.40.116.98", + "type": "user-session" + } + }, + "sequence": 192385, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Sc93UmcBTFzn_XoLWT6M", + "source": { + "@timestamp": "2018-11-27T00:00:12.224Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31966" + }, + "source": { + "ip": "89.40.116.98" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "sequence": 192386, + "result": "fail", + "session": "unset", + "data": { + "hostname": "89.40.116.98", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "89.40.116.98" + } + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "A89-UmcBTFzn_XoLj91w", + "source": { + "@timestamp": "2018-11-27T00:08:04.229Z", + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "187.188.146.35", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142249, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19190", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "187.188.146.35" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BM9-UmcBTFzn_XoLj91w", + "source": { + "@timestamp": "2018-11-27T00:08:04.231Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19190", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "187.188.146.35" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142250, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "187.188.146.35" + } + } + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Bc9-UmcBTFzn_XoLj91w", + "source": { + "@timestamp": "2018-11-27T00:08:04.295Z", + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "187.188.146.35", + "type": "user-session" + } + }, + "sequence": 142251, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "187.188.146.35" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19190", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "187.188.146.35" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3M99UmcBTFzn_XoL9c8q", + "source": { + "@timestamp": "2018-11-27T00:07:24.736Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31771" + }, + "source": { + "ip": "185.66.213.116" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "185.66.213.116", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186194 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3c99UmcBTFzn_XoL9c8q", + "source": { + "@timestamp": "2018-11-27T00:07:24.738Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186195, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "185.66.213.116", + "type": "user-session", + "primary": "sshd" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "31771", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "185.66.213.116" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3s99UmcBTFzn_XoL9c8q", + "source": { + "@timestamp": "2018-11-27T00:07:24.872Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "31771", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.66.213.116" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "185.66.213.116", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 186196, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "185.66.213.116" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cNCAUmcBTFzn_XoLVQS1", + "source": { + "@timestamp": "2018-11-27T00:10:00.521Z", + "source": { + "ip": "202.138.233.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142255, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "202.138.233.92", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19202", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cdCAUmcBTFzn_XoLVQS1", + "source": { + "@timestamp": "2018-11-27T00:10:00.523Z", + "process": { + "pid": "19202", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.138.233.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142256, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "202.138.233.92", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ctCAUmcBTFzn_XoLVQS1", + "source": { + "@timestamp": "2018-11-27T00:10:00.758Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19202", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.138.233.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "202.138.233.92", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "202.138.233.92", + "type": "user-session" + } + }, + "sequence": 142257, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Lc9_UmcBTFzn_XoL2_og", + "source": { + "@timestamp": "2018-11-27T00:09:29.142Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "183.6.176.182" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "183.6.176.182" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142252, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19199", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ls9_UmcBTFzn_XoL2_og", + "source": { + "@timestamp": "2018-11-27T00:09:29.143Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142253, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "183.6.176.182" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19199", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "183.6.176.182" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "L89_UmcBTFzn_XoL2_og", + "source": { + "@timestamp": "2018-11-27T00:09:29.337Z", + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "183.6.176.182", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "183.6.176.182", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 142254 + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19199", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "183.6.176.182" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0c9_UmcBTFzn_XoL8Ptt", + "source": { + "@timestamp": "2018-11-27T00:09:34.595Z", + "source": { + "ip": "82.165.64.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "82.165.64.156", + "type": "user-session" + } + }, + "sequence": 186200, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31787" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0s9_UmcBTFzn_XoL8Ptt", + "source": { + "@timestamp": "2018-11-27T00:09:34.596Z", + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "82.165.64.156" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186201 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31787", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.165.64.156" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "089_UmcBTFzn_XoL8Ptt", + "source": { + "@timestamp": "2018-11-27T00:09:34.710Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31787", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.165.64.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "82.165.64.156", + "type": "user-session" + } + }, + "sequence": 186202, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "82.165.64.156", + "terminal": "ssh" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ns9_UmcBTFzn_XoLYe_m", + "source": { + "@timestamp": "2018-11-27T00:08:58.109Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31779", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186197, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "46.148.18.163" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "n89_UmcBTFzn_XoLYe_m", + "source": { + "@timestamp": "2018-11-27T00:08:58.110Z", + "auditd": { + "sequence": 186198, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31779", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "oM9_UmcBTFzn_XoLYe_m", + "source": { + "@timestamp": "2018-11-27T00:08:58.253Z", + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "46.148.18.163", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "46.148.18.163" + } + }, + "sequence": 186199, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31779", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "hM-AUmcBTFzn_XoLEf64", + "source": { + "@timestamp": "2018-11-27T00:09:43.118Z", + "source": { + "ip": "74.208.43.208" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186203, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "74.208.43.208", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31789", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "hc-AUmcBTFzn_XoLEf64", + "source": { + "@timestamp": "2018-11-27T00:09:43.119Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "74.208.43.208", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186204, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "31789", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "74.208.43.208" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "hs-AUmcBTFzn_XoLEf64", + "source": { + "@timestamp": "2018-11-27T00:09:43.146Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186205, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "74.208.43.208", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "74.208.43.208", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31789", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "74.208.43.208" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "m89-UmcBTFzn_XoL1OLk", + "source": { + "@timestamp": "2018-11-27T00:08:22.009Z", + "source": { + "ip": "201.75.60.100" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "201.75.60.100" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184237, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "24759", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "nM9-UmcBTFzn_XoL1OLk", + "source": { + "@timestamp": "2018-11-27T00:08:22.011Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "24759", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "201.75.60.100" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184238, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "201.75.60.100", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "nc9-UmcBTFzn_XoL1OLk", + "source": { + "@timestamp": "2018-11-27T00:08:22.241Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24759" + }, + "source": { + "ip": "201.75.60.100" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184239, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "201.75.60.100" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "201.75.60.100", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Vc9_UmcBTFzn_XoLb_AH", + "source": { + "@timestamp": "2018-11-27T00:09:01.469Z", + "auditd": { + "session": "unset", + "data": { + "op": "PAM:accounting", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184240, + "result": "success" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_acct", + "action": "was-authorized" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "24768", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Vs9_UmcBTFzn_XoLb_AH", + "source": { + "@timestamp": "2018-11-27T00:09:01.469Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "24768", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 184241, + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "op": "PAM:setcred", + "terminal": "cron" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "V89_UmcBTFzn_XoLb_AH", + "source": { + "@timestamp": "2018-11-27T00:09:01.471Z", + "user": { + "auid": "0", + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + } + }, + "process": { + "pid": "24768", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "9854", + "data": { + "terminal": "cron", + "op": "PAM:session_open", + "acct": "root" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184243 + }, + "event": { + "action": "started-session", + "module": "auditd", + "category": "user-login", + "type": "user_start" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WM9_UmcBTFzn_XoLb_AH", + "source": { + "@timestamp": "2018-11-27T00:09:01.574Z", + "auditd": { + "result": "success", + "session": "9854", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184244 + }, + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root", + "auid": "root" + }, + "auid": "0", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "24768" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Wc9_UmcBTFzn_XoLb_AH", + "source": { + "@timestamp": "2018-11-27T00:09:01.575Z", + "auditd": { + "session": "9854", + "data": { + "acct": "root", + "op": "PAM:session_close", + "terminal": "cron" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + } + }, + "sequence": 184245, + "result": "success" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0", + "auid": "0" + }, + "process": { + "pid": "24768", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "W89_UmcBTFzn_XoLb_DG", + "source": { + "@timestamp": "2018-11-27T00:09:01.660Z", + "auditd": { + "sequence": 192396, + "result": "success", + "session": "unset", + "data": { + "terminal": "cron", + "op": "PAM:accounting", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_acct", + "action": "was-authorized", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "32020" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XM9_UmcBTFzn_XoLb_DG", + "source": { + "@timestamp": "2018-11-27T00:09:01.660Z", + "auditd": { + "sequence": 192397, + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "op": "PAM:setcred", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "32020" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Xc9_UmcBTFzn_XoLb_DG", + "source": { + "@timestamp": "2018-11-27T00:09:01.661Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_start", + "action": "started-session", + "module": "auditd" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0", + "auid": "0" + }, + "process": { + "pid": "32020", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "9858", + "data": { + "terminal": "cron", + "op": "PAM:session_open", + "acct": "root" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "root" + } + }, + "sequence": 192399 + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Xs9_UmcBTFzn_XoLb_DG", + "source": { + "@timestamp": "2018-11-27T00:09:01.756Z", + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "32020", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 192400, + "result": "success", + "session": "9858" + }, + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "X89_UmcBTFzn_XoLb_DG", + "source": { + "@timestamp": "2018-11-27T00:09:01.757Z", + "auditd": { + "sequence": 192401, + "result": "success", + "session": "9858", + "data": { + "terminal": "cron", + "op": "PAM:session_close", + "acct": "root" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_end", + "action": "ended-session" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "32020", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "tNCGUmcBTFzn_XoLwJHN", + "source": { + "@timestamp": "2018-11-27T00:17:01.150Z", + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "28080", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "op": "PAM:setcred", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 44083, + "result": "success", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "tdCGUmcBTFzn_XoLwJHN", + "source": { + "@timestamp": "2018-11-27T00:17:01.150Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28080", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:accounting" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 44082 + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_acct", + "action": "was-authorized", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ttCGUmcBTFzn_XoLwJHN", + "source": { + "@timestamp": "2018-11-27T00:17:01.150Z", + "process": { + "pid": "28080", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 44085, + "result": "success", + "session": "1442", + "data": { + "terminal": "cron", + "op": "PAM:session_open", + "acct": "root" + } + }, + "event": { + "category": "user-login", + "type": "user_start", + "action": "started-session", + "module": "auditd" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "t9CGUmcBTFzn_XoLwJHN", + "source": { + "@timestamp": "2018-11-27T00:17:01.154Z", + "event": { + "action": "disposed-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_disp" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "process": { + "pid": "28080", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 44086, + "result": "success", + "session": "1442", + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "uNCGUmcBTFzn_XoLwJHN", + "source": { + "@timestamp": "2018-11-27T00:17:01.154Z", + "auditd": { + "session": "1442", + "data": { + "op": "PAM:session_close", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 44087, + "result": "success" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "ended-session", + "module": "auditd", + "category": "user-login", + "type": "user_end" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "28080", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "udCGUmcBTFzn_XoLwJHb", + "source": { + "@timestamp": "2018-11-27T00:17:01.168Z", + "auditd": { + "sequence": 142264, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + } + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_acct", + "action": "was-authorized", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19244", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "utCGUmcBTFzn_XoLwJHb", + "source": { + "@timestamp": "2018-11-27T00:17:01.169Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19244", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 142265, + "result": "success" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "u9CGUmcBTFzn_XoLwJHb", + "source": { + "@timestamp": "2018-11-27T00:17:01.171Z", + "event": { + "type": "user_start", + "action": "started-session", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "19244", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "terminal": "cron", + "op": "PAM:session_open", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 142267, + "result": "success", + "session": "3502" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vNCGUmcBTFzn_XoLwJHb", + "source": { + "@timestamp": "2018-11-27T00:17:01.174Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "disposed-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_disp" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0", + "auid": "0" + }, + "process": { + "pid": "19244", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "3502", + "data": { + "op": "PAM:setcred", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + }, + "sequence": 142268, + "result": "success" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vdCGUmcBTFzn_XoLwJHb", + "source": { + "@timestamp": "2018-11-27T00:17:01.175Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_end", + "action": "ended-session" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root", + "auid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "19244", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "root" + } + }, + "sequence": 142269, + "result": "success", + "session": "3502", + "data": { + "acct": "root", + "op": "PAM:session_close", + "terminal": "cron" + } + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vtCGUmcBTFzn_XoLwJH4", + "source": { + "@timestamp": "2018-11-27T00:17:01.195Z", + "event": { + "type": "user_acct", + "action": "was-authorized", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12297", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:accounting" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 43110, + "result": "success" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "v9CGUmcBTFzn_XoLwJH4", + "source": { + "@timestamp": "2018-11-27T00:17:01.195Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12297", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "cron", + "op": "PAM:setcred", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 43111, + "result": "success" + }, + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wNCGUmcBTFzn_XoLwJH4", + "source": { + "@timestamp": "2018-11-27T00:17:01.195Z", + "event": { + "action": "started-session", + "module": "auditd", + "category": "user-login", + "type": "user_start" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "12297", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 43113, + "result": "success", + "session": "1251", + "data": { + "terminal": "cron", + "op": "PAM:session_open", + "acct": "root" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wdCGUmcBTFzn_XoLwJH4", + "source": { + "@timestamp": "2018-11-27T00:17:01.195Z", + "auditd": { + "session": "1251", + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + }, + "sequence": 43114, + "result": "success" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "process": { + "pid": "12297", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wtCGUmcBTFzn_XoLwJH4", + "source": { + "@timestamp": "2018-11-27T00:17:01.199Z", + "process": { + "pid": "12297", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "1251", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:session_close" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 43115, + "result": "success" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_end", + "action": "ended-session" + }, + "user": { + "uid": "0", + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2dCGUmcBTFzn_XoLwpF3", + "source": { + "@timestamp": "2018-11-27T00:17:01.580Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "was-authorized", + "module": "auditd", + "category": "user-login", + "type": "user_acct" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "24860", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "op": "PAM:accounting", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184252 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2tCGUmcBTFzn_XoLwpF3", + "source": { + "@timestamp": "2018-11-27T00:17:01.581Z", + "process": { + "pid": "24860", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 184253, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "29CGUmcBTFzn_XoLwpF3", + "source": { + "@timestamp": "2018-11-27T00:17:01.582Z", + "auditd": { + "sequence": 184255, + "result": "success", + "session": "9855", + "data": { + "terminal": "cron", + "op": "PAM:session_open", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + } + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "type": "user_start", + "action": "started-session", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "24860" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3NCGUmcBTFzn_XoLwpF3", + "source": { + "@timestamp": "2018-11-27T00:17:01.585Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials" + }, + "user": { + "auid": "0", + "name_map": { + "uid": "root", + "auid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "24860", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "9855", + "data": { + "terminal": "cron", + "op": "PAM:setcred", + "acct": "root" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "root" + } + }, + "sequence": 184256, + "result": "success" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3dCGUmcBTFzn_XoLwpF3", + "source": { + "@timestamp": "2018-11-27T00:17:01.586Z", + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "24860", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "9855", + "data": { + "terminal": "cron", + "op": "PAM:session_close", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 184257 + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7dCGUmcBTFzn_XoLw5Er", + "source": { + "@timestamp": "2018-11-27T00:17:01.761Z", + "process": { + "pid": "32105", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 192405, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "action": "was-authorized", + "module": "auditd", + "category": "user-login", + "type": "user_acct" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7tCGUmcBTFzn_XoLw5Er", + "source": { + "@timestamp": "2018-11-27T00:17:01.762Z", + "auditd": { + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "op": "PAM:setcred", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192406 + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32105", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "79CGUmcBTFzn_XoLw5Er", + "source": { + "@timestamp": "2018-11-27T00:17:01.763Z", + "event": { + "type": "user_start", + "action": "started-session", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32105", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192408, + "result": "success", + "session": "9859", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:session_open" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8NCGUmcBTFzn_XoLw5Er", + "source": { + "@timestamp": "2018-11-27T00:17:01.766Z", + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "32105" + }, + "auditd": { + "sequence": 192409, + "result": "success", + "session": "9859", + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8dCGUmcBTFzn_XoLw5Er", + "source": { + "@timestamp": "2018-11-27T00:17:01.767Z", + "event": { + "action": "ended-session", + "module": "auditd", + "category": "user-login", + "type": "user_end" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32105", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "9859", + "data": { + "op": "PAM:session_close", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192410, + "result": "success" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-tCGUmcBTFzn_XoLw5GT", + "source": { + "@timestamp": "2018-11-27T00:17:01.863Z", + "event": { + "type": "user_acct", + "action": "was-authorized", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "31840", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "op": "PAM:accounting", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 186230, + "result": "success", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-9CGUmcBTFzn_XoLw5GT", + "source": { + "@timestamp": "2018-11-27T00:17:01.864Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_acq" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31840", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "acct": "root", + "op": "PAM:setcred", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 186231, + "result": "success", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_NCGUmcBTFzn_XoLw5GT", + "source": { + "@timestamp": "2018-11-27T00:17:01.866Z", + "process": { + "pid": "31840", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 186233, + "result": "success", + "session": "3510", + "data": { + "op": "PAM:session_open", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "started-session", + "module": "auditd", + "category": "user-login", + "type": "user_start" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_dCGUmcBTFzn_XoLw5GT", + "source": { + "@timestamp": "2018-11-27T00:17:01.868Z", + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "31840", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 186234, + "result": "success", + "session": "3510" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_tCGUmcBTFzn_XoLw5GT", + "source": { + "@timestamp": "2018-11-27T00:17:01.869Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "31840" + }, + "auditd": { + "sequence": 186235, + "result": "success", + "session": "3510", + "data": { + "terminal": "cron", + "op": "PAM:session_close", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rdCFUmcBTFzn_XoLNW-m", + "source": { + "@timestamp": "2018-11-27T00:15:19.990Z", + "source": { + "ip": "181.58.119.34" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43101, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "181.58.119.34", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12279", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rtCFUmcBTFzn_XoLNW-m", + "source": { + "@timestamp": "2018-11-27T00:15:19.990Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "181.58.119.34", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43102 + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12279", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "181.58.119.34" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "r9CFUmcBTFzn_XoLNW-m", + "source": { + "@timestamp": "2018-11-27T00:15:20.098Z", + "source": { + "ip": "181.58.119.34" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "181.58.119.34", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "181.58.119.34", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43103, + "result": "fail" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12279" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9dCFUmcBTFzn_XoLPm_6", + "source": { + "@timestamp": "2018-11-27T00:15:22.384Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24844" + }, + "source": { + "ip": "78.217.134.141" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184246, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "78.217.134.141" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9tCFUmcBTFzn_XoLPm_6", + "source": { + "@timestamp": "2018-11-27T00:15:22.385Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24844" + }, + "source": { + "ip": "78.217.134.141" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184247, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "78.217.134.141", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "99CFUmcBTFzn_XoLPm_6", + "source": { + "@timestamp": "2018-11-27T00:15:22.546Z", + "process": { + "pid": "24844", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "78.217.134.141" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "78.217.134.141", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "78.217.134.141", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184248, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZdCGUmcBTFzn_XoLhYxL", + "source": { + "@timestamp": "2018-11-27T00:16:45.917Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "212.144.234.165" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 43104 + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12288", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "212.144.234.165" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZtCGUmcBTFzn_XoLhYxL", + "source": { + "@timestamp": "2018-11-27T00:16:45.917Z", + "source": { + "ip": "212.144.234.165" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "212.144.234.165", + "type": "user-session" + } + }, + "sequence": 43105, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "12288", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9CGUmcBTFzn_XoLhYxL", + "source": { + "@timestamp": "2018-11-27T00:16:46.029Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "12288", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "212.144.234.165" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "sequence": 43106, + "result": "fail", + "session": "unset", + "data": { + "hostname": "212.144.234.165", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "212.144.234.165" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CtCGUmcBTFzn_XoLj44z", + "source": { + "@timestamp": "2018-11-27T00:16:48.454Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12290", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.165.64.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "82.165.64.156", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43107, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "C9CGUmcBTFzn_XoLj44z", + "source": { + "@timestamp": "2018-11-27T00:16:48.458Z", + "process": { + "pid": "12290", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.165.64.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "82.165.64.156" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43108, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DNCGUmcBTFzn_XoLj44z", + "source": { + "@timestamp": "2018-11-27T00:16:48.574Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "82.165.64.156", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43109, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "82.165.64.156" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12290" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "82.165.64.156" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XdCGUmcBTFzn_XoLspGv", + "source": { + "@timestamp": "2018-11-27T00:16:57.541Z", + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "24857", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "90.63.218.214" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "90.63.218.214", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184249, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XtCGUmcBTFzn_XoLspGv", + "source": { + "@timestamp": "2018-11-27T00:16:57.542Z", + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "90.63.218.214" + } + }, + "sequence": 184250, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "24857", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "90.63.218.214" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "X9CGUmcBTFzn_XoLspGv", + "source": { + "@timestamp": "2018-11-27T00:16:57.654Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "24857", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "90.63.218.214" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184251, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "90.63.218.214", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "90.63.218.214", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gNCDUmcBTFzn_XoLe0qz", + "source": { + "@timestamp": "2018-11-27T00:13:26.761Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31815", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.128.221.237" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186221, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "178.128.221.237" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gdCDUmcBTFzn_XoLe0qz", + "source": { + "@timestamp": "2018-11-27T00:13:26.762Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "178.128.221.237", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186222, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "31815", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.128.221.237" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gtCDUmcBTFzn_XoLe0qz", + "source": { + "@timestamp": "2018-11-27T00:13:26.955Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "31815", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.128.221.237" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186223, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "178.128.221.237", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "178.128.221.237", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "oNCFUmcBTFzn_XoLinbC", + "source": { + "@timestamp": "2018-11-27T00:15:41.783Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31832" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186227, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "odCFUmcBTFzn_XoLinbC", + "source": { + "@timestamp": "2018-11-27T00:15:41.784Z", + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186228 + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31832", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "otCFUmcBTFzn_XoLinbC", + "source": { + "@timestamp": "2018-11-27T00:15:41.927Z", + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "46.148.18.163", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "46.148.18.163" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186229, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "31832", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5tCEUmcBTFzn_XoLU1tS", + "source": { + "@timestamp": "2018-11-27T00:14:22.056Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31823" + }, + "source": { + "ip": "185.241.4.160" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "185.241.4.160", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 186224, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "59CEUmcBTFzn_XoLU1tS", + "source": { + "@timestamp": "2018-11-27T00:14:22.061Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31823", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.241.4.160" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186225, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "secondary": "185.241.4.160", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6NCEUmcBTFzn_XoLU1tS", + "source": { + "@timestamp": "2018-11-27T00:14:22.221Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31823" + }, + "source": { + "ip": "185.241.4.160" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "185.241.4.160", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "185.241.4.160", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186226, + "result": "fail" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "D9CFUmcBTFzn_XoL031l", + "source": { + "@timestamp": "2018-11-27T00:16:00.377Z", + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "117.102.68.188", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44076, + "result": "fail" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28053" + }, + "source": { + "ip": "117.102.68.188" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ENCFUmcBTFzn_XoL031l", + "source": { + "@timestamp": "2018-11-27T00:16:00.377Z", + "source": { + "ip": "117.102.68.188" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44077, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "117.102.68.188" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "28053", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "EdCFUmcBTFzn_XoL031l", + "source": { + "@timestamp": "2018-11-27T00:16:00.581Z", + "auditd": { + "sequence": 44078, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "117.102.68.188", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "117.102.68.188", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "28053", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "117.102.68.188" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "19CGUmcBTFzn_XoLC4FO", + "source": { + "@timestamp": "2018-11-27T00:16:14.690Z", + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "91.183.42.58", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 44079, + "result": "fail" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28062", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.183.42.58" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2NCGUmcBTFzn_XoLC4FO", + "source": { + "@timestamp": "2018-11-27T00:16:14.690Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28062", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.183.42.58" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44080, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "91.183.42.58", + "type": "user-session" + } + } + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2dCGUmcBTFzn_XoLC4FO", + "source": { + "@timestamp": "2018-11-27T00:16:14.802Z", + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28062", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.183.42.58" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "sequence": 44081, + "result": "fail", + "session": "unset", + "data": { + "hostname": "91.183.42.58", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "91.183.42.58" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dtCJUmcBTFzn_XoL_tm6", + "source": { + "@timestamp": "2018-11-27T00:20:33.614Z", + "auditd": { + "sequence": 44091, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "209.59.65.109" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "28150", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "209.59.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "d9CJUmcBTFzn_XoL_tm6", + "source": { + "@timestamp": "2018-11-27T00:20:33.614Z", + "auditd": { + "sequence": 44092, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "209.59.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28150", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "209.59.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "eNCJUmcBTFzn_XoL_tm6", + "source": { + "@timestamp": "2018-11-27T00:20:33.698Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28150" + }, + "source": { + "ip": "209.59.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44093, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "209.59.65.109", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "209.59.65.109", + "type": "user-session" + } + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ptCKUmcBTFzn_XoLDtsd", + "source": { + "@timestamp": "2018-11-27T00:20:37.550Z", + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "106.51.72.37", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44094, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "28153", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "106.51.72.37" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "p9CKUmcBTFzn_XoLDtsd", + "source": { + "@timestamp": "2018-11-27T00:20:37.550Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28153" + }, + "source": { + "ip": "106.51.72.37" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44095, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "106.51.72.37", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qNCKUmcBTFzn_XoLDtsd", + "source": { + "@timestamp": "2018-11-27T00:20:37.782Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "28153", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "106.51.72.37" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44096, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "106.51.72.37" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "106.51.72.37", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5tGMUmcBTFzn_XoLPwqH", + "source": { + "@timestamp": "2018-11-27T00:23:01.275Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31880", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.105.123.11" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186254, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "46.105.123.11", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "59GMUmcBTFzn_XoLPwqH", + "source": { + "@timestamp": "2018-11-27T00:23:01.276Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "46.105.123.11" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186255 + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31880", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.105.123.11" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6NGMUmcBTFzn_XoLPwqH", + "source": { + "@timestamp": "2018-11-27T00:23:01.383Z", + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "31880", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.105.123.11" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186256, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "46.105.123.11" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "46.105.123.11" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtCKUmcBTFzn_XoL0uxn", + "source": { + "@timestamp": "2018-11-27T00:21:27.805Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "213.143.97.179", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 142270, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19271", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "213.143.97.179" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "F9CKUmcBTFzn_XoL0uxn", + "source": { + "@timestamp": "2018-11-27T00:21:27.807Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142271, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "213.143.97.179" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19271", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "213.143.97.179" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GNCKUmcBTFzn_XoL0uxn", + "source": { + "@timestamp": "2018-11-27T00:21:27.937Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142272, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "213.143.97.179" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "213.143.97.179", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19271", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "213.143.97.179" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZtCLUmcBTFzn_XoLLPOM", + "source": { + "@timestamp": "2018-11-27T00:21:50.882Z", + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "24899", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "192.99.252.97" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "192.99.252.97", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184273, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9CLUmcBTFzn_XoLLPOM", + "source": { + "@timestamp": "2018-11-27T00:21:50.883Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24899" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "192.99.252.97" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184274, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "192.99.252.97" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aNCLUmcBTFzn_XoLLPOM", + "source": { + "@timestamp": "2018-11-27T00:21:50.926Z", + "process": { + "pid": "24899", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "source": { + "ip": "192.99.252.97" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "192.99.252.97", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 184275, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "192.99.252.97" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "A9CKUmcBTFzn_XoLrulM", + "source": { + "@timestamp": "2018-11-27T00:21:18.562Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186251, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "163.172.35.93" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31872" + }, + "source": { + "ip": "163.172.35.93" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BNCKUmcBTFzn_XoLrulM", + "source": { + "@timestamp": "2018-11-27T00:21:18.563Z", + "source": { + "ip": "163.172.35.93" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "163.172.35.93", + "type": "user-session" + } + }, + "sequence": 186252 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "31872", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BdCKUmcBTFzn_XoLrulM", + "source": { + "@timestamp": "2018-11-27T00:21:18.669Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31872", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "163.172.35.93" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186253, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "163.172.35.93" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "163.172.35.93", + "type": "user-session" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VtCKUmcBTFzn_XoLLt0C", + "source": { + "@timestamp": "2018-11-27T00:20:45.720Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "24889", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "122.175.55.196" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "122.175.55.196", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184270, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "V9CKUmcBTFzn_XoLLt0C", + "source": { + "@timestamp": "2018-11-27T00:20:45.721Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "24889", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "122.175.55.196" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184271, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "122.175.55.196", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WNCKUmcBTFzn_XoLLt0C", + "source": { + "@timestamp": "2018-11-27T00:20:45.977Z", + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "122.175.55.196" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "122.175.55.196", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "122.175.55.196", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184272 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "24889", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FNGNUmcBTFzn_XoLiyd2", + "source": { + "@timestamp": "2018-11-27T00:24:26.252Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "145.239.137.89" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "145.239.137.89", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192426, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32155", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FdGNUmcBTFzn_XoLiyd2", + "source": { + "@timestamp": "2018-11-27T00:24:26.253Z", + "source": { + "ip": "145.239.137.89" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192427, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "145.239.137.89", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32155" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtGNUmcBTFzn_XoLiyd2", + "source": { + "@timestamp": "2018-11-27T00:24:26.370Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32155" + }, + "source": { + "ip": "145.239.137.89" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "145.239.137.89", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192428, + "result": "fail", + "session": "unset", + "data": { + "hostname": "145.239.137.89", + "terminal": "ssh", + "op": "PAM:bad_ident" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QNGLUmcBTFzn_XoL7gTu", + "source": { + "@timestamp": "2018-11-27T00:22:40.643Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32146", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "52.189.217.7" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "52.189.217.7", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192423 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QdGLUmcBTFzn_XoL7gTu", + "source": { + "@timestamp": "2018-11-27T00:22:40.644Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32146", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "52.189.217.7" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "52.189.217.7", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192424, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QtGLUmcBTFzn_XoL7gTu", + "source": { + "@timestamp": "2018-11-27T00:22:40.849Z", + "process": { + "pid": "32146", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "52.189.217.7" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "52.189.217.7" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "52.189.217.7", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192425, + "result": "fail" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_9GMUmcBTFzn_XoL1xdJ", + "source": { + "@timestamp": "2018-11-27T00:23:40.121Z", + "process": { + "pid": "28213", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.59.133.18" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44097, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "139.59.133.18", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ANGMUmcBTFzn_XoL1xhJ", + "source": { + "@timestamp": "2018-11-27T00:23:40.125Z", + "process": { + "pid": "28213", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.59.133.18" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "sequence": 44098, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "139.59.133.18", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AdGMUmcBTFzn_XoL1xhJ", + "source": { + "@timestamp": "2018-11-27T00:23:40.237Z", + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "139.59.133.18", + "type": "user-session" + } + }, + "sequence": 44099, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "139.59.133.18" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "28213", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.59.133.18" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ydGRUmcBTFzn_XoL6IZr", + "source": { + "@timestamp": "2018-11-27T00:29:12.188Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "54.37.154.254" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "54.37.154.254", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43119, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12362", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ytGRUmcBTFzn_XoL6IZr", + "source": { + "@timestamp": "2018-11-27T00:29:12.188Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12362", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.37.154.254" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "54.37.154.254", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43120, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "y9GRUmcBTFzn_XoL6IZr", + "source": { + "@timestamp": "2018-11-27T00:29:12.300Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43121, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "54.37.154.254" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "54.37.154.254", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12362", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "54.37.154.254" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UtGRUmcBTFzn_XoL7YcV", + "source": { + "@timestamp": "2018-11-27T00:29:13.387Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "24953", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "86.104.220.26" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "86.104.220.26", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184288 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "U9GRUmcBTFzn_XoL7YcV", + "source": { + "@timestamp": "2018-11-27T00:29:13.388Z", + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24953" + }, + "source": { + "ip": "86.104.220.26" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "86.104.220.26", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 184289, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VNGRUmcBTFzn_XoL7YcV", + "source": { + "@timestamp": "2018-11-27T00:29:13.531Z", + "process": { + "pid": "24953", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "86.104.220.26" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184290, + "result": "fail", + "session": "unset", + "data": { + "hostname": "86.104.220.26", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "86.104.220.26" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QdGPUmcBTFzn_XoLtVea", + "source": { + "@timestamp": "2018-11-27T00:26:48.111Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "19304", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "121.162.29.165" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "121.162.29.165", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142276, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QtGPUmcBTFzn_XoLtVea", + "source": { + "@timestamp": "2018-11-27T00:26:48.112Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19304" + }, + "source": { + "ip": "121.162.29.165" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "121.162.29.165", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142277, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Q9GPUmcBTFzn_XoLtVea", + "source": { + "@timestamp": "2018-11-27T00:26:48.273Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "19304", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "121.162.29.165" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "121.162.29.165", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "121.162.29.165", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 142278, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "1tGPUmcBTFzn_XoL8FvF", + "source": { + "@timestamp": "2018-11-27T00:27:03.259Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142279, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "103.56.207.96", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19306", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.56.207.96" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "19GPUmcBTFzn_XoL8FvF", + "source": { + "@timestamp": "2018-11-27T00:27:03.260Z", + "process": { + "pid": "19306", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.56.207.96" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "103.56.207.96" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 142280 + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2NGPUmcBTFzn_XoL8FvF", + "source": { + "@timestamp": "2018-11-27T00:27:03.463Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19306", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.56.207.96" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "103.56.207.96", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "103.56.207.96" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142281, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "l9GQUmcBTFzn_XoL0m8i", + "source": { + "@timestamp": "2018-11-27T00:28:00.952Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31904" + }, + "source": { + "ip": "122.152.225.120" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186260, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "122.152.225.120", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mNGQUmcBTFzn_XoL0m8i", + "source": { + "@timestamp": "2018-11-27T00:28:00.954Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31904" + }, + "source": { + "ip": "122.152.225.120" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186261, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "122.152.225.120", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mdGQUmcBTFzn_XoL0m8i", + "source": { + "@timestamp": "2018-11-27T00:28:01.157Z", + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "122.152.225.120" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "122.152.225.120" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186262, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31904" + }, + "source": { + "ip": "122.152.225.120" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "nNGTUmcBTFzn_XoLCp-5", + "source": { + "@timestamp": "2018-11-27T00:30:26.511Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32530" + }, + "source": { + "ip": "173.167.200.227" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "173.167.200.227" + } + }, + "sequence": 192434 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ndGTUmcBTFzn_XoLCp-5", + "source": { + "@timestamp": "2018-11-27T00:30:26.512Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32530", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "173.167.200.227" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "173.167.200.227", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192435, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ntGTUmcBTFzn_XoLCp-5", + "source": { + "@timestamp": "2018-11-27T00:30:26.557Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32530", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "173.167.200.227" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "173.167.200.227", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192436, + "result": "fail", + "session": "unset", + "data": { + "hostname": "173.167.200.227", + "terminal": "ssh", + "op": "PAM:bad_ident" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zdGQUmcBTFzn_XoLtmz7", + "source": { + "@timestamp": "2018-11-27T00:27:54.000Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "31902", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "184.170.7.230" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186257, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "184.170.7.230", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ztGQUmcBTFzn_XoLtmz7", + "source": { + "@timestamp": "2018-11-27T00:27:54.002Z", + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "31902", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "184.170.7.230" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "184.170.7.230", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186258, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "z9GQUmcBTFzn_XoLtmz7", + "source": { + "@timestamp": "2018-11-27T00:27:54.541Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31902", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "184.170.7.230" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "184.170.7.230" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "184.170.7.230", + "type": "user-session" + } + }, + "sequence": 186259, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QdGSUmcBTFzn_XoLx5oM", + "source": { + "@timestamp": "2018-11-27T00:30:09.185Z", + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12372" + }, + "source": { + "ip": "86.229.8.199" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "86.229.8.199", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43125, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QtGSUmcBTFzn_XoLx5oM", + "source": { + "@timestamp": "2018-11-27T00:30:09.185Z", + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "86.229.8.199" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43126, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12372", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "86.229.8.199" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Q9GSUmcBTFzn_XoLx5oM", + "source": { + "@timestamp": "2018-11-27T00:30:09.329Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12372" + }, + "source": { + "ip": "86.229.8.199" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "86.229.8.199", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43127, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "86.229.8.199", + "op": "PAM:bad_ident" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6tGSUmcBTFzn_XoLe5Pk", + "source": { + "@timestamp": "2018-11-27T00:29:49.943Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12370", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.197.44.25" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43122, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "138.197.44.25", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "69GSUmcBTFzn_XoLe5Pk", + "source": { + "@timestamp": "2018-11-27T00:29:49.943Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "12370", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.197.44.25" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "138.197.44.25", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43123, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + } + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7NGSUmcBTFzn_XoLe5Pk", + "source": { + "@timestamp": "2018-11-27T00:29:49.975Z", + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "138.197.44.25", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "138.197.44.25", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43124, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12370", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.197.44.25" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "59GRUmcBTFzn_XoLFXXo", + "source": { + "@timestamp": "2018-11-27T00:28:18.298Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28318" + }, + "source": { + "ip": "200.35.110.58" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "200.35.110.58" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 44112 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6NGRUmcBTFzn_XoLFXXo", + "source": { + "@timestamp": "2018-11-27T00:28:18.298Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28318" + }, + "source": { + "ip": "200.35.110.58" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44113, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "200.35.110.58", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dGRUmcBTFzn_XoLFXXo", + "source": { + "@timestamp": "2018-11-27T00:28:18.414Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "200.35.110.58", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "200.35.110.58", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44114 + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28318", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "200.35.110.58" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "r9KXUmcBTFzn_XoLtQab", + "source": { + "@timestamp": "2018-11-27T00:35:32.401Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31943", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.43.198" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "164.132.43.198" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186269, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sNKXUmcBTFzn_XoLtQab", + "source": { + "@timestamp": "2018-11-27T00:35:32.402Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186270, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "164.132.43.198", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31943" + }, + "source": { + "ip": "164.132.43.198" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sdKXUmcBTFzn_XoLtQab", + "source": { + "@timestamp": "2018-11-27T00:35:32.510Z", + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31943", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.43.198" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186271, + "result": "fail", + "session": "unset", + "data": { + "hostname": "164.132.43.198", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "164.132.43.198", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNKXUmcBTFzn_XoLxggy", + "source": { + "@timestamp": "2018-11-27T00:35:36.648Z", + "process": { + "pid": "19353", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.55.214.3" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.55.214.3", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142285 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CdKXUmcBTFzn_XoLxggy", + "source": { + "@timestamp": "2018-11-27T00:35:36.650Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142286, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "46.55.214.3" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19353", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.55.214.3" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CtKXUmcBTFzn_XoLxggy", + "source": { + "@timestamp": "2018-11-27T00:35:36.800Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "46.55.214.3" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 142287, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "46.55.214.3" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19353", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.55.214.3" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "S9KYUmcBTFzn_XoL9yJk", + "source": { + "@timestamp": "2018-11-27T00:36:54.778Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "125.63.92.170", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142288 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19361" + }, + "source": { + "ip": "125.63.92.170" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TNKYUmcBTFzn_XoL9yJk", + "source": { + "@timestamp": "2018-11-27T00:36:54.779Z", + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "125.63.92.170", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142289, + "result": "fail" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "19361", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "125.63.92.170" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TdKYUmcBTFzn_XoL9yJk", + "source": { + "@timestamp": "2018-11-27T00:36:55.043Z", + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19361", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "125.63.92.170" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "125.63.92.170", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142290, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "125.63.92.170" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8tKZUmcBTFzn_XoLZyud", + "source": { + "@timestamp": "2018-11-27T00:37:23.507Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "180.151.228.58", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186272 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31951" + }, + "source": { + "ip": "180.151.228.58" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "89KZUmcBTFzn_XoLZyud", + "source": { + "@timestamp": "2018-11-27T00:37:23.508Z", + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "180.151.228.58", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186273, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31951", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "180.151.228.58" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9NKZUmcBTFzn_XoLZyud", + "source": { + "@timestamp": "2018-11-27T00:37:23.776Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31951", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "180.151.228.58" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "180.151.228.58", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186274, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "180.151.228.58" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BtGWUmcBTFzn_XoLwfK7", + "source": { + "@timestamp": "2018-11-27T00:34:29.968Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32558", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "211.24.100.205" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "211.24.100.205", + "type": "user-session" + } + }, + "sequence": 192440, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "B9GWUmcBTFzn_XoLwfK7", + "source": { + "@timestamp": "2018-11-27T00:34:29.969Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "32558", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "211.24.100.205" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "211.24.100.205", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192441, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNGWUmcBTFzn_XoLwfK7", + "source": { + "@timestamp": "2018-11-27T00:34:30.179Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32558" + }, + "source": { + "ip": "211.24.100.205" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "211.24.100.205" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "211.24.100.205", + "type": "user-session" + } + }, + "sequence": 192442 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "pdKaUmcBTFzn_XoL802l", + "source": { + "@timestamp": "2018-11-27T00:39:04.878Z", + "process": { + "pid": "31959", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.251.239.72" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "46.251.239.72" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186275, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ptKaUmcBTFzn_XoL802l", + "source": { + "@timestamp": "2018-11-27T00:39:04.879Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "31959", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.251.239.72" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186276, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.251.239.72", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "p9KaUmcBTFzn_XoL802l", + "source": { + "@timestamp": "2018-11-27T00:39:04.990Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31959", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.251.239.72" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "46.251.239.72", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186277, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "46.251.239.72" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "r9KXUmcBTFzn_XoLowUZ", + "source": { + "@timestamp": "2018-11-27T00:35:27.663Z", + "source": { + "ip": "185.254.97.113" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "185.254.97.113", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186266, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31941", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sNKXUmcBTFzn_XoLowUZ", + "source": { + "@timestamp": "2018-11-27T00:35:27.664Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "185.254.97.113" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "185.254.97.113" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186267, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31941", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sdKXUmcBTFzn_XoLowUZ", + "source": { + "@timestamp": "2018-11-27T00:35:27.773Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31941", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.254.97.113" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "185.254.97.113", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186268, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "185.254.97.113" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "h9GWUmcBTFzn_XoL7_UK", + "source": { + "@timestamp": "2018-11-27T00:34:41.567Z", + "process": { + "pid": "19345", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.84.76.146" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "202.84.76.146", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142282 + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "iNGWUmcBTFzn_XoL7_UK", + "source": { + "@timestamp": "2018-11-27T00:34:41.568Z", + "process": { + "pid": "19345", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.84.76.146" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "202.84.76.146", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 142283 + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "idGWUmcBTFzn_XoL7_UK", + "source": { + "@timestamp": "2018-11-27T00:34:41.795Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "process": { + "pid": "19345", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.84.76.146" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "202.84.76.146" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "202.84.76.146", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142284, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "StKaUmcBTFzn_XoL5kzE", + "source": { + "@timestamp": "2018-11-27T00:39:01.594Z", + "auditd": { + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:accounting" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 184300 + }, + "event": { + "category": "user-login", + "type": "user_acct", + "action": "was-authorized", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "25011" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "S9KaUmcBTFzn_XoL5kzE", + "source": { + "@timestamp": "2018-11-27T00:39:01.594Z", + "process": { + "pid": "25011", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 184301, + "result": "success", + "session": "unset", + "data": { + "terminal": "cron", + "op": "PAM:setcred", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TNKaUmcBTFzn_XoL5kzE", + "source": { + "@timestamp": "2018-11-27T00:39:01.596Z", + "event": { + "type": "user_start", + "action": "started-session", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "25011", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "9856", + "data": { + "acct": "root", + "op": "PAM:session_open", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184303 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TdKaUmcBTFzn_XoL5kzE", + "source": { + "@timestamp": "2018-11-27T00:39:01.697Z", + "auditd": { + "session": "9856", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:setcred" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + } + }, + "sequence": 184304, + "result": "success" + }, + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25011", + "exe": "/usr/sbin/cron" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TtKaUmcBTFzn_XoL5kzE", + "source": { + "@timestamp": "2018-11-27T00:39:01.698Z", + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25011", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "terminal": "cron", + "op": "PAM:session_close", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 184305, + "result": "success", + "session": "9856" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "V9KaUmcBTFzn_XoL50x5", + "source": { + "@timestamp": "2018-11-27T00:39:01.774Z", + "auditd": { + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:accounting" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192443, + "result": "success", + "session": "unset" + }, + "event": { + "type": "user_acct", + "action": "was-authorized", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32579", + "exe": "/usr/sbin/cron" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WNKaUmcBTFzn_XoL50x5", + "source": { + "@timestamp": "2018-11-27T00:39:01.774Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "32579" + }, + "auditd": { + "sequence": 192444, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:setcred", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WdKaUmcBTFzn_XoL50x5", + "source": { + "@timestamp": "2018-11-27T00:39:01.776Z", + "process": { + "pid": "32579", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "9860", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:session_open" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192446, + "result": "success" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_start", + "action": "started-session", + "module": "auditd" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WtKaUmcBTFzn_XoL50x5", + "source": { + "@timestamp": "2018-11-27T00:39:01.873Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 192447, + "result": "success", + "session": "9860", + "data": { + "op": "PAM:setcred", + "acct": "root", + "terminal": "cron" + } + }, + "event": { + "action": "disposed-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_disp" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32579", + "exe": "/usr/sbin/cron" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "W9KaUmcBTFzn_XoL50x5", + "source": { + "@timestamp": "2018-11-27T00:39:01.874Z", + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "32579", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "terminal": "cron", + "op": "PAM:session_close", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192448, + "result": "success", + "session": "9860" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "W9KbUmcBTFzn_XoLP1QB", + "source": { + "@timestamp": "2018-11-27T00:39:24.137Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "138.68.111.27", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44121, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "28526", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.68.111.27" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XNKbUmcBTFzn_XoLP1QB", + "source": { + "@timestamp": "2018-11-27T00:39:24.137Z", + "source": { + "ip": "138.68.111.27" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "138.68.111.27", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44122, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28526", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XdKbUmcBTFzn_XoLP1QB", + "source": { + "@timestamp": "2018-11-27T00:39:24.241Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28526", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.68.111.27" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "138.68.111.27" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "138.68.111.27", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44123 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNKiUmcBTFzn_XoLvfm3", + "source": { + "@timestamp": "2018-11-27T00:47:35.372Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19424", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "137.74.114.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142300, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "137.74.114.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CdKiUmcBTFzn_XoLvfm3", + "source": { + "@timestamp": "2018-11-27T00:47:35.374Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19424" + }, + "source": { + "ip": "137.74.114.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "secondary": "137.74.114.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142301, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CtKiUmcBTFzn_XoLvfm3", + "source": { + "@timestamp": "2018-11-27T00:47:35.480Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19424" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "137.74.114.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "137.74.114.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142302, + "result": "fail", + "session": "unset", + "data": { + "hostname": "137.74.114.109", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qdOkUmcBTFzn_XoLDBVT", + "source": { + "@timestamp": "2018-11-27T00:49:01.033Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25113", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "121.67.246.139" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "121.67.246.139", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184309, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qtOkUmcBTFzn_XoLDBVT", + "source": { + "@timestamp": "2018-11-27T00:49:01.034Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184310, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "121.67.246.139", + "type": "user-session" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "25113", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "121.67.246.139" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "q9OkUmcBTFzn_XoLDBVT", + "source": { + "@timestamp": "2018-11-27T00:49:01.224Z", + "auditd": { + "data": { + "hostname": "121.67.246.139", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "121.67.246.139", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184311, + "result": "fail", + "session": "unset" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "25113", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "121.67.246.139" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qNOkUmcBTFzn_XoLgx_7", + "source": { + "@timestamp": "2018-11-27T00:49:31.664Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "25115", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "179.228.242.120" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "179.228.242.120", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184312, + "result": "fail" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qdOkUmcBTFzn_XoLgx_7", + "source": { + "@timestamp": "2018-11-27T00:49:31.665Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25115", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "179.228.242.120" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "179.228.242.120", + "type": "user-session" + } + }, + "sequence": 184313, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qtOkUmcBTFzn_XoLgx_7", + "source": { + "@timestamp": "2018-11-27T00:49:31.831Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "25115", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "179.228.242.120" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "179.228.242.120", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184314, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "179.228.242.120" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BtKiUmcBTFzn_XoL-P7X", + "source": { + "@timestamp": "2018-11-27T00:47:50.509Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19431", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "39.110.219.91" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "39.110.219.91", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142303, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "B9KiUmcBTFzn_XoL-P7X", + "source": { + "@timestamp": "2018-11-27T00:47:50.511Z", + "source": { + "ip": "39.110.219.91" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142304, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "39.110.219.91", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19431", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNKiUmcBTFzn_XoL-P7X", + "source": { + "@timestamp": "2018-11-27T00:47:50.642Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19431", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "39.110.219.91" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "39.110.219.91", + "type": "user-session" + } + }, + "sequence": 142305, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "39.110.219.91" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "X9OkUmcBTFzn_XoLABX7", + "source": { + "@timestamp": "2018-11-27T00:48:58.129Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19439", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "41.89.47.14" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142306, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "41.89.47.14", + "type": "user-session" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YNOkUmcBTFzn_XoLABX7", + "source": { + "@timestamp": "2018-11-27T00:48:58.130Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "41.89.47.14", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142307, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19439", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "41.89.47.14" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YdOkUmcBTFzn_XoLABX7", + "source": { + "@timestamp": "2018-11-27T00:48:58.365Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "41.89.47.14", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "object": { + "secondary": "41.89.47.14", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 142308 + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19439", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "41.89.47.14" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gNOkUmcBTFzn_XoL8ilB", + "source": { + "@timestamp": "2018-11-27T00:49:59.894Z", + "process": { + "pid": "32019", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "105.16.153.210" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "105.16.153.210", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186284 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gdOkUmcBTFzn_XoL8ilB", + "source": { + "@timestamp": "2018-11-27T00:49:59.895Z", + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32019", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "105.16.153.210" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "105.16.153.210", + "type": "user-session" + } + }, + "sequence": 186285, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gtOkUmcBTFzn_XoL8ilB", + "source": { + "@timestamp": "2018-11-27T00:50:00.158Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32019", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "105.16.153.210" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186286, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "105.16.153.210", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "105.16.153.210" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FdOlUmcBTFzn_XoLkjc2", + "source": { + "@timestamp": "2018-11-27T00:50:40.838Z", + "source": { + "ip": "188.166.243.150" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44130, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "188.166.243.150", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "28746", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtOlUmcBTFzn_XoLkjc2", + "source": { + "@timestamp": "2018-11-27T00:50:40.842Z", + "source": { + "ip": "188.166.243.150" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "188.166.243.150", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 44131 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28746" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "F9OlUmcBTFzn_XoLkjc2", + "source": { + "@timestamp": "2018-11-27T00:50:41.034Z", + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "188.166.243.150", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "188.166.243.150" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44132, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "28746", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "188.166.243.150" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JdOmUmcBTFzn_XoLCEHk", + "source": { + "@timestamp": "2018-11-27T00:51:11.223Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43140, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "194.35.114.10" + } + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12495", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "194.35.114.10" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JtOmUmcBTFzn_XoLCEHk", + "source": { + "@timestamp": "2018-11-27T00:51:11.223Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12495" + }, + "source": { + "ip": "194.35.114.10" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "194.35.114.10" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43141, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "J9OmUmcBTFzn_XoLCEHk", + "source": { + "@timestamp": "2018-11-27T00:51:11.503Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12495" + }, + "source": { + "ip": "194.35.114.10" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "194.35.114.10", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "194.35.114.10", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43142 + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0dOlUmcBTFzn_XoLvzre", + "source": { + "@timestamp": "2018-11-27T00:50:52.531Z", + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "104.131.178.223", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44133, + "result": "fail" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28750", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.131.178.223" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0tOlUmcBTFzn_XoLvzre", + "source": { + "@timestamp": "2018-11-27T00:50:52.531Z", + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "104.131.178.223", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 44134, + "result": "fail" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28750" + }, + "source": { + "ip": "104.131.178.223" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "09OlUmcBTFzn_XoLvzre", + "source": { + "@timestamp": "2018-11-27T00:50:52.559Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "28750", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.131.178.223" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "104.131.178.223" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "104.131.178.223", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44135 + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7NSvUmcBTFzn_XoL9Rog", + "source": { + "@timestamp": "2018-11-27T01:02:01.525Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "25194", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "211.219.52.136" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "211.219.52.136" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184321, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7dSvUmcBTFzn_XoL9Rog", + "source": { + "@timestamp": "2018-11-27T01:02:01.526Z", + "auditd": { + "sequence": 184322, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "211.219.52.136", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25194", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "211.219.52.136" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7tSvUmcBTFzn_XoL9Rog", + "source": { + "@timestamp": "2018-11-27T01:02:01.686Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25194", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "211.219.52.136" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "211.219.52.136", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184323, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "211.219.52.136" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "btOsUmcBTFzn_XoLdc7t", + "source": { + "@timestamp": "2018-11-27T00:58:12.354Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19491", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.234.241.55" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "91.234.241.55", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142312, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "b9OsUmcBTFzn_XoLdc7t", + "source": { + "@timestamp": "2018-11-27T00:58:12.355Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19491" + }, + "source": { + "ip": "91.234.241.55" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "91.234.241.55", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 142313, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cNOsUmcBTFzn_XoLdc7t", + "source": { + "@timestamp": "2018-11-27T00:58:12.497Z", + "source": { + "ip": "91.234.241.55" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "91.234.241.55", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 142314, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "91.234.241.55" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19491" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VtOsUmcBTFzn_XoLGcfx", + "source": { + "@timestamp": "2018-11-27T00:57:48.807Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19483", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.0.121.168" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142309, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "128.0.121.168", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "V9OsUmcBTFzn_XoLGcfx", + "source": { + "@timestamp": "2018-11-27T00:57:48.808Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19483", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.0.121.168" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "128.0.121.168", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142310 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WNOsUmcBTFzn_XoLGcfx", + "source": { + "@timestamp": "2018-11-27T00:57:48.917Z", + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19483", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.0.121.168" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142311, + "result": "fail", + "session": "unset", + "data": { + "hostname": "128.0.121.168", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "128.0.121.168", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "p9SvUmcBTFzn_XoLTQyw", + "source": { + "@timestamp": "2018-11-27T01:01:18.662Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "220.135.55.172", + "type": "user-session" + } + }, + "sequence": 192458, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32763", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "220.135.55.172" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qNSvUmcBTFzn_XoLTQyw", + "source": { + "@timestamp": "2018-11-27T01:01:18.663Z", + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "220.135.55.172", + "type": "user-session" + } + }, + "sequence": 192459, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32763", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "220.135.55.172" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qdSvUmcBTFzn_XoLTQyw", + "source": { + "@timestamp": "2018-11-27T01:01:18.839Z", + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "220.135.55.172" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "220.135.55.172" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192460, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32763", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "220.135.55.172" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ztOuUmcBTFzn_XoLCvAK", + "source": { + "@timestamp": "2018-11-27T00:59:55.808Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19499", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "13.77.75.153" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "13.77.75.153", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142315 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "z9OuUmcBTFzn_XoLCvAK", + "source": { + "@timestamp": "2018-11-27T00:59:55.809Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19499" + }, + "source": { + "ip": "13.77.75.153" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "13.77.75.153", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142316, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0NOuUmcBTFzn_XoLCvAK", + "source": { + "@timestamp": "2018-11-27T00:59:55.852Z", + "process": { + "pid": "19499", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "13.77.75.153" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "13.77.75.153", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142317, + "result": "fail", + "session": "unset", + "data": { + "hostname": "13.77.75.153", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "59SwUmcBTFzn_XoLmSiw", + "source": { + "@timestamp": "2018-11-27T01:02:43.654Z", + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186290, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32075", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6NSwUmcBTFzn_XoLmSiw", + "source": { + "@timestamp": "2018-11-27T01:02:43.655Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32075", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186291, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dSwUmcBTFzn_XoLmSiw", + "source": { + "@timestamp": "2018-11-27T01:02:43.688Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32075", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186292, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ANSwUmcBTFzn_XoL0C7C", + "source": { + "@timestamp": "2018-11-27T01:02:57.752Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32082", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186293, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AdSwUmcBTFzn_XoL0C7C", + "source": { + "@timestamp": "2018-11-27T01:02:57.754Z", + "process": { + "pid": "32082", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 186294, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AtSwUmcBTFzn_XoL0C7C", + "source": { + "@timestamp": "2018-11-27T01:02:57.784Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32082" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186295 + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "t9OuUmcBTFzn_XoLHfKW", + "source": { + "@timestamp": "2018-11-27T01:00:00.805Z", + "source": { + "ip": "178.128.127.228" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "178.128.127.228", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 44145, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28933", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "uNOuUmcBTFzn_XoLHfKW", + "source": { + "@timestamp": "2018-11-27T01:00:00.809Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "28933", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.128.127.228" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44146, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.128.127.228", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "udOuUmcBTFzn_XoLHfKW", + "source": { + "@timestamp": "2018-11-27T01:00:01.001Z", + "auditd": { + "sequence": 44147, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "178.128.127.228" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "178.128.127.228", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "28933", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.128.127.228" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bNOtUmcBTFzn_XoL8u_M", + "source": { + "@timestamp": "2018-11-27T00:59:49.852Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "164.132.197.108", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44142, + "result": "fail" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28930" + }, + "source": { + "ip": "164.132.197.108" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bdOtUmcBTFzn_XoL8u_M", + "source": { + "@timestamp": "2018-11-27T00:59:49.852Z", + "auditd": { + "sequence": 44143, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "164.132.197.108", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "28930", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.197.108" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "btOtUmcBTFzn_XoL8u_M", + "source": { + "@timestamp": "2018-11-27T00:59:49.964Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28930", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.197.108" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44144, + "result": "fail", + "session": "unset", + "data": { + "hostname": "164.132.197.108", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "164.132.197.108" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ptS1UmcBTFzn_XoL0JuA", + "source": { + "@timestamp": "2018-11-27T01:08:25.366Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "345" + }, + "source": { + "ip": "5.186.77.221" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "5.186.77.221", + "type": "user-session" + } + }, + "sequence": 192473 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "p9S1UmcBTFzn_XoL0JuA", + "source": { + "@timestamp": "2018-11-27T01:08:25.367Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192474, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "5.186.77.221" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "345" + }, + "source": { + "ip": "5.186.77.221" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qNS1UmcBTFzn_XoL0JuA", + "source": { + "@timestamp": "2018-11-27T01:08:25.506Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "345" + }, + "source": { + "ip": "5.186.77.221" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192475, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "5.186.77.221", + "terminal": "ssh" + }, + "summary": { + "object": { + "secondary": "5.186.77.221", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-NS1UmcBTFzn_XoL2Jxv", + "source": { + "@timestamp": "2018-11-27T01:08:27.396Z", + "source": { + "ip": "24.37.251.196" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186326, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "24.37.251.196", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32127", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-dS1UmcBTFzn_XoL2Jxv", + "source": { + "@timestamp": "2018-11-27T01:08:27.397Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32127" + }, + "source": { + "ip": "24.37.251.196" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "24.37.251.196", + "type": "user-session" + } + }, + "sequence": 186327 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-tS1UmcBTFzn_XoL2Jxv", + "source": { + "@timestamp": "2018-11-27T01:08:27.453Z", + "source": { + "ip": "24.37.251.196" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "24.37.251.196" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "24.37.251.196", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186328 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32127", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ydSzUmcBTFzn_XoLp2tF", + "source": { + "@timestamp": "2018-11-27T01:06:03.738Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "secondary": "178.128.124.241", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 186311, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32108" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "178.128.124.241" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ytSzUmcBTFzn_XoLp2tF", + "source": { + "@timestamp": "2018-11-27T01:06:03.739Z", + "process": { + "pid": "32108", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.128.124.241" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "178.128.124.241", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186312, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "y9SzUmcBTFzn_XoLp2tF", + "source": { + "@timestamp": "2018-11-27T01:06:03.933Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32108", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "source": { + "ip": "178.128.124.241" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186313, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "178.128.124.241", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "secondary": "178.128.124.241", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UtSzUmcBTFzn_XoLrWwF", + "source": { + "@timestamp": "2018-11-27T01:06:05.210Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32110" + }, + "source": { + "ip": "191.92.71.194" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186314, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "191.92.71.194", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "U9SzUmcBTFzn_XoLrWwF", + "source": { + "@timestamp": "2018-11-27T01:06:05.211Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32110" + }, + "source": { + "ip": "191.92.71.194" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "191.92.71.194", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186315 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VNSzUmcBTFzn_XoLrWwF", + "source": { + "@timestamp": "2018-11-27T01:06:05.347Z", + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "191.92.71.194" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186316, + "result": "fail", + "session": "unset", + "data": { + "hostname": "191.92.71.194", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "191.92.71.194", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32110", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ztS0UmcBTFzn_XoLK3fA", + "source": { + "@timestamp": "2018-11-27T01:06:37.654Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "327", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "106.241.53.82" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192467, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "106.241.53.82" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "z9S0UmcBTFzn_XoLK3fA", + "source": { + "@timestamp": "2018-11-27T01:06:37.655Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "106.241.53.82", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192468, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "327", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "106.241.53.82" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0NS0UmcBTFzn_XoLK3fA", + "source": { + "@timestamp": "2018-11-27T01:06:37.861Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "327", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "106.241.53.82" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "106.241.53.82", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "106.241.53.82" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192469 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "k9S0UmcBTFzn_XoLPHgu", + "source": { + "@timestamp": "2018-11-27T01:06:41.860Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "330" + }, + "source": { + "ip": "170.210.88.50" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "170.210.88.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192470, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "lNS0UmcBTFzn_XoLPHgu", + "source": { + "@timestamp": "2018-11-27T01:06:41.861Z", + "auditd": { + "sequence": 192471, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "170.210.88.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "330", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "170.210.88.50" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ldS0UmcBTFzn_XoLPHgu", + "source": { + "@timestamp": "2018-11-27T01:06:42.073Z", + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "170.210.88.50", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "170.210.88.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192472, + "result": "fail" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "330", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "170.210.88.50" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bdS1UmcBTFzn_XoLo5cq", + "source": { + "@timestamp": "2018-11-27T01:08:13.760Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186323, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32125", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "btS1UmcBTFzn_XoLo5cq", + "source": { + "@timestamp": "2018-11-27T01:08:13.761Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32125" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 186324 + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "b9S1UmcBTFzn_XoLo5cq", + "source": { + "@timestamp": "2018-11-27T01:08:13.791Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32125" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186325, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9S0UmcBTFzn_XoLsoI4", + "source": { + "@timestamp": "2018-11-27T01:07:12.077Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186320, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32117", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dNS0UmcBTFzn_XoLsoI4", + "source": { + "@timestamp": "2018-11-27T01:07:12.079Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186321, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32117", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ddS0UmcBTFzn_XoLsoI4", + "source": { + "@timestamp": "2018-11-27T01:07:12.110Z", + "auditd": { + "sequence": 186322, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32117", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "U9SzUmcBTFzn_XoLw27K", + "source": { + "@timestamp": "2018-11-27T01:06:11.040Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186317, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32112", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VNSzUmcBTFzn_XoLw27K", + "source": { + "@timestamp": "2018-11-27T01:06:11.041Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186318, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32112", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VdSzUmcBTFzn_XoLw27K", + "source": { + "@timestamp": "2018-11-27T01:06:11.071Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32112", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186319, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "o9S0UmcBTFzn_XoL1YXV", + "source": { + "@timestamp": "2018-11-27T01:07:21.191Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "104.234.223.14", + "type": "user-session" + } + }, + "sequence": 44148, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "29074", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "104.234.223.14" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "pNS0UmcBTFzn_XoL1YXV", + "source": { + "@timestamp": "2018-11-27T01:07:21.195Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "104.234.223.14", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 44149, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "29074", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.234.223.14" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "pdS0UmcBTFzn_XoL1YXV", + "source": { + "@timestamp": "2018-11-27T01:07:21.243Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "104.234.223.14", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "104.234.223.14" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44150 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29074" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "104.234.223.14" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dtS2UmcBTFzn_XoLXqd2", + "source": { + "@timestamp": "2018-11-27T01:09:01.707Z", + "auditd": { + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184324 + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_acct", + "action": "was-authorized", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "25243", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "d9S2UmcBTFzn_XoLXqd2", + "source": { + "@timestamp": "2018-11-27T01:09:01.708Z", + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "event": { + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_acq" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "25243", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184325, + "result": "success" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "eNS2UmcBTFzn_XoLXqd2", + "source": { + "@timestamp": "2018-11-27T01:09:01.710Z", + "process": { + "pid": "25243", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 184327, + "result": "success", + "session": "9857", + "data": { + "terminal": "cron", + "op": "PAM:session_open", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "action": "started-session", + "module": "auditd", + "category": "user-login", + "type": "user_start" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "edS2UmcBTFzn_XoLXqd2", + "source": { + "@timestamp": "2018-11-27T01:09:01.806Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "25243", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184328, + "result": "success", + "session": "9857", + "data": { + "terminal": "cron", + "op": "PAM:setcred", + "acct": "root" + } + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "etS2UmcBTFzn_XoLXqd2", + "source": { + "@timestamp": "2018-11-27T01:09:01.808Z", + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "auid": "0", + "name_map": { + "uid": "root", + "auid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25243", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 184329, + "result": "success", + "session": "9857", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:session_close" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "t9S2UmcBTFzn_XoLX6cl", + "source": { + "@timestamp": "2018-11-27T01:09:01.883Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_acct", + "action": "was-authorized", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "348", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 192476, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "uNS2UmcBTFzn_XoLX6cl", + "source": { + "@timestamp": "2018-11-27T01:09:01.884Z", + "event": { + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "348", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 192477, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:setcred", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "unset" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "udS2UmcBTFzn_XoLX6cl", + "source": { + "@timestamp": "2018-11-27T01:09:01.885Z", + "auditd": { + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + } + }, + "sequence": 192479, + "result": "success", + "session": "9861", + "data": { + "terminal": "cron", + "op": "PAM:session_open", + "acct": "root" + } + }, + "event": { + "category": "user-login", + "type": "user_start", + "action": "started-session", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + } + }, + "process": { + "pid": "348", + "exe": "/usr/sbin/cron" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "utS2UmcBTFzn_XoLX6cl", + "source": { + "@timestamp": "2018-11-27T01:09:01.981Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192480, + "result": "success", + "session": "9861", + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + } + }, + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "348", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "u9S2UmcBTFzn_XoLX6cl", + "source": { + "@timestamp": "2018-11-27T01:09:01.982Z", + "event": { + "type": "user_end", + "action": "ended-session", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "0", + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + } + }, + "process": { + "pid": "348", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "9861", + "data": { + "terminal": "cron", + "op": "PAM:session_close", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + } + }, + "sequence": 192481, + "result": "success" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ItS2UmcBTFzn_XoLBKBn", + "source": { + "@timestamp": "2018-11-27T01:08:38.649Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.33.228.67", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44151, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "29096", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.228.67" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "I9S2UmcBTFzn_XoLBKBn", + "source": { + "@timestamp": "2018-11-27T01:08:38.649Z", + "source": { + "ip": "178.33.228.67" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.33.228.67", + "type": "user-session" + } + }, + "sequence": 44152 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "29096", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JNS2UmcBTFzn_XoLBKBn", + "source": { + "@timestamp": "2018-11-27T01:08:38.757Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "29096", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.228.67" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "178.33.228.67", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "178.33.228.67", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44153, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LNS4UmcBTFzn_XoLIM6c", + "source": { + "@timestamp": "2018-11-27T01:10:56.938Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184333, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "91.230.8.194" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "91.230.8.194" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25299", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.230.8.194" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2NS4UmcBTFzn_XoLMc9n", + "source": { + "@timestamp": "2018-11-27T01:11:01.244Z", + "process": { + "pid": "29148", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "85.234.34.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "85.234.34.92", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44158, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2dS4UmcBTFzn_XoLMc9n", + "source": { + "@timestamp": "2018-11-27T01:11:01.244Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "29148", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "85.234.34.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "85.234.34.92" + } + }, + "sequence": 44159, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2tS4UmcBTFzn_XoLMc9n", + "source": { + "@timestamp": "2018-11-27T01:11:01.400Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29148" + }, + "source": { + "ip": "85.234.34.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44160, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "85.234.34.92", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "85.234.34.92" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ctS3UmcBTFzn_XoLgcD-", + "source": { + "@timestamp": "2018-11-27T01:10:16.337Z", + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "79.137.64.132", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186333, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32141", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "79.137.64.132" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9S3UmcBTFzn_XoLgcD-", + "source": { + "@timestamp": "2018-11-27T01:10:16.339Z", + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "79.137.64.132" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186334, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "79.137.64.132", + "type": "user-session" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32141" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dNS3UmcBTFzn_XoLgcD-", + "source": { + "@timestamp": "2018-11-27T01:10:16.445Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "79.137.64.132" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186335, + "result": "fail", + "session": "unset", + "data": { + "hostname": "79.137.64.132", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "79.137.64.132", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32141", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "u9S3UmcBTFzn_XoLh8GC", + "source": { + "@timestamp": "2018-11-27T01:10:17.752Z", + "auditd": { + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186336, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32148", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9S2UmcBTFzn_XoLtK-X", + "source": { + "@timestamp": "2018-11-27T01:09:23.757Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192482, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "109.202.18.235", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "397", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "109.202.18.235" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aNS2UmcBTFzn_XoLtK-X", + "source": { + "@timestamp": "2018-11-27T01:09:23.758Z", + "process": { + "pid": "397", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "109.202.18.235" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "109.202.18.235", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192483, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "adS2UmcBTFzn_XoLtK-X", + "source": { + "@timestamp": "2018-11-27T01:09:23.948Z", + "source": { + "ip": "109.202.18.235" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192484, + "result": "fail", + "session": "unset", + "data": { + "hostname": "109.202.18.235", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "109.202.18.235" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "397" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BdS4UmcBTFzn_XoLFs5k", + "source": { + "@timestamp": "2018-11-27T01:10:54.329Z", + "auditd": { + "sequence": 184330, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "188.68.54.39", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "25297", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "188.68.54.39" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BtS4UmcBTFzn_XoLFs5k", + "source": { + "@timestamp": "2018-11-27T01:10:54.330Z", + "auditd": { + "sequence": 184331, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "188.68.54.39", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "25297", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "188.68.54.39" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "B9S4UmcBTFzn_XoLFs5k", + "source": { + "@timestamp": "2018-11-27T01:10:54.443Z", + "source": { + "ip": "188.68.54.39" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184332, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "188.68.54.39", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "188.68.54.39", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25297", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "F9S2UmcBTFzn_XoLf6s6", + "source": { + "@timestamp": "2018-11-27T01:09:10.091Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186329 + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32135", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GNS2UmcBTFzn_XoLf6s6", + "source": { + "@timestamp": "2018-11-27T01:09:10.092Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32135", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186330, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GdS2UmcBTFzn_XoLf6s6", + "source": { + "@timestamp": "2018-11-27T01:09:10.235Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32135" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "46.148.18.163" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "46.148.18.163", + "type": "user-session" + } + }, + "sequence": 186331, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "l9S2UmcBTFzn_XoLxbHN", + "source": { + "@timestamp": "2018-11-27T01:09:28.162Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "399", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.68.38.86" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192485, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "103.68.38.86", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mNS2UmcBTFzn_XoLxbHN", + "source": { + "@timestamp": "2018-11-27T01:09:28.163Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "103.68.38.86" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192486 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "399" + }, + "source": { + "ip": "103.68.38.86" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mdS2UmcBTFzn_XoLxbHN", + "source": { + "@timestamp": "2018-11-27T01:09:28.435Z", + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "103.68.38.86", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192487, + "result": "fail", + "session": "unset", + "data": { + "hostname": "103.68.38.86", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "399", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "103.68.38.86" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KdS3UmcBTFzn_XoL-8sa", + "source": { + "@timestamp": "2018-11-27T01:10:47.311Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "29142", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.38.37.69" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44155, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.38.37.69", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KtS3UmcBTFzn_XoL-8sa", + "source": { + "@timestamp": "2018-11-27T01:10:47.315Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "29142", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.38.37.69" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "51.38.37.69", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44156, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "K9S3UmcBTFzn_XoL-8sa", + "source": { + "@timestamp": "2018-11-27T01:10:47.419Z", + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "51.38.37.69", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "51.38.37.69" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44157, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29142" + }, + "source": { + "ip": "51.38.37.69" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "itS2UmcBTFzn_XoLlayd", + "source": { + "@timestamp": "2018-11-27T01:09:15.827Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32137", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186332 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "I9S3UmcBTFzn_XoLlcLB", + "source": { + "@timestamp": "2018-11-27T01:10:21.397Z", + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "29135", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "142.93.31.198" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "142.93.31.198" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "142.93.31.198", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44154, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PdW9UmcBTFzn_XoLr0tl", + "source": { + "@timestamp": "2018-11-27T01:17:01.176Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "29271" + }, + "auditd": { + "sequence": 44173, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "unset" + } + } + }, + "event": { + "type": "user_acct", + "action": "was-authorized", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PtW9UmcBTFzn_XoLr0tl", + "source": { + "@timestamp": "2018-11-27T01:17:01.176Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "29271", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44174, + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "op": "PAM:setcred", + "terminal": "cron" + } + }, + "event": { + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "P9W9UmcBTFzn_XoLr0tl", + "source": { + "@timestamp": "2018-11-27T01:17:01.180Z", + "process": { + "pid": "29271", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 44176, + "result": "success", + "session": "1444", + "data": { + "op": "PAM:session_open", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "type": "user_start", + "action": "started-session", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QNW9UmcBTFzn_XoLr0tl", + "source": { + "@timestamp": "2018-11-27T01:17:01.180Z", + "process": { + "pid": "29271", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 44177, + "result": "success", + "session": "1444", + "data": { + "op": "PAM:setcred", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "disposed-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_disp" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0", + "auid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QdW9UmcBTFzn_XoLr0tl", + "source": { + "@timestamp": "2018-11-27T01:17:01.180Z", + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "29271", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 44178, + "result": "success", + "session": "1444", + "data": { + "op": "PAM:session_close", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "root" + } + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_end", + "action": "ended-session" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QtW9UmcBTFzn_XoLr0ty", + "source": { + "@timestamp": "2018-11-27T01:17:01.191Z", + "event": { + "category": "user-login", + "type": "user_acct", + "action": "was-authorized", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "19593", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 142321, + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "op": "PAM:accounting", + "terminal": "cron" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Q9W9UmcBTFzn_XoLr0ty", + "source": { + "@timestamp": "2018-11-27T01:17:01.191Z", + "process": { + "pid": "19593", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "terminal": "cron", + "op": "PAM:setcred", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 142322, + "result": "success", + "session": "unset" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_acq" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RNW9UmcBTFzn_XoLr0ty", + "source": { + "@timestamp": "2018-11-27T01:17:01.193Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_start", + "action": "started-session" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0", + "auid": "0" + }, + "process": { + "pid": "19593", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 142324, + "result": "success", + "session": "3503", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:session_open" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RdW9UmcBTFzn_XoLr0ty", + "source": { + "@timestamp": "2018-11-27T01:17:01.196Z", + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19593", + "exe": "/usr/sbin/cron" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 142325, + "result": "success", + "session": "3503", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:setcred" + } + }, + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RtW9UmcBTFzn_XoLr0ty", + "source": { + "@timestamp": "2018-11-27T01:17:01.196Z", + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19593", + "exe": "/usr/sbin/cron" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "data": { + "op": "PAM:session_close", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + }, + "sequence": 142326, + "result": "success", + "session": "3503" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WdW9UmcBTFzn_XoLr0uP", + "source": { + "@timestamp": "2018-11-27T01:17:01.214Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12641", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "terminal": "cron", + "op": "PAM:accounting", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 43155, + "result": "success", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_acct", + "action": "was-authorized", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WtW9UmcBTFzn_XoLr0uP", + "source": { + "@timestamp": "2018-11-27T01:17:01.214Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "12641", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "unset", + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 43156 + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "W9W9UmcBTFzn_XoLr0uP", + "source": { + "@timestamp": "2018-11-27T01:17:01.218Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_start", + "action": "started-session", + "module": "auditd" + }, + "user": { + "auid": "0", + "uid": "0", + "name_map": { + "uid": "root", + "auid": "root" + } + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "12641" + }, + "auditd": { + "data": { + "op": "PAM:session_open", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 43158, + "result": "success", + "session": "1252" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XNW9UmcBTFzn_XoLr0uP", + "source": { + "@timestamp": "2018-11-27T01:17:01.218Z", + "auditd": { + "sequence": 43159, + "result": "success", + "session": "1252", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials" + }, + "user": { + "uid": "0", + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + } + }, + "process": { + "pid": "12641", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XdW9UmcBTFzn_XoLr0uP", + "source": { + "@timestamp": "2018-11-27T01:17:01.222Z", + "process": { + "pid": "12641", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "1252", + "data": { + "terminal": "cron", + "op": "PAM:session_close", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 43160, + "result": "success" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "ended-session", + "module": "auditd", + "category": "user-login", + "type": "user_end" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "adW9UmcBTFzn_XoLsUvf", + "source": { + "@timestamp": "2018-11-27T01:17:01.812Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_acct", + "action": "was-authorized" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "25339", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 184337, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "atW9UmcBTFzn_XoLsUvf", + "source": { + "@timestamp": "2018-11-27T01:17:01.813Z", + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_acq" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "25339", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184338, + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "op": "PAM:setcred", + "terminal": "cron" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "a9W9UmcBTFzn_XoLsUvf", + "source": { + "@timestamp": "2018-11-27T01:17:01.814Z", + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25339", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "terminal": "cron", + "op": "PAM:session_open", + "acct": "root" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + }, + "sequence": 184340, + "result": "success", + "session": "9858" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_start", + "action": "started-session" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bNW9UmcBTFzn_XoLsUvf", + "source": { + "@timestamp": "2018-11-27T01:17:01.817Z", + "process": { + "pid": "25339", + "exe": "/usr/sbin/cron" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "result": "success", + "session": "9858", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184341 + }, + "event": { + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bdW9UmcBTFzn_XoLsUvf", + "source": { + "@timestamp": "2018-11-27T01:17:01.818Z", + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "25339" + }, + "auditd": { + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184342, + "result": "success", + "session": "9858", + "data": { + "acct": "root", + "op": "PAM:session_close", + "terminal": "cron" + } + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "a9W-UmcBTFzn_XoL5GZq", + "source": { + "@timestamp": "2018-11-27T01:18:20.287Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19602", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "209.59.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "209.59.65.109" + } + }, + "sequence": 142327, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bNW-UmcBTFzn_XoL5GZq", + "source": { + "@timestamp": "2018-11-27T01:18:20.288Z", + "source": { + "ip": "209.59.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142328, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "209.59.65.109" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19602", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bdW-UmcBTFzn_XoL5GZq", + "source": { + "@timestamp": "2018-11-27T01:18:20.382Z", + "auditd": { + "sequence": 142329, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "209.59.65.109", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "209.59.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19602", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "209.59.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "h9W-UmcBTFzn_XoL6WZS", + "source": { + "@timestamp": "2018-11-27T01:18:21.543Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "95.156.31.74" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "95.156.31.74" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142330, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19604", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "iNW-UmcBTFzn_XoL6WZS", + "source": { + "@timestamp": "2018-11-27T01:18:21.545Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "19604", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "95.156.31.74" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142331, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "95.156.31.74", + "type": "user-session", + "primary": "sshd" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "idW-UmcBTFzn_XoL6WZS", + "source": { + "@timestamp": "2018-11-27T01:18:21.689Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19604", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "95.156.31.74" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "95.156.31.74" + }, + "summary": { + "object": { + "secondary": "95.156.31.74", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 142332 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "39W_UmcBTFzn_XoLD2nn", + "source": { + "@timestamp": "2018-11-27T01:18:31.420Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32215", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186386, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4NW_UmcBTFzn_XoLD2nn", + "source": { + "@timestamp": "2018-11-27T01:18:31.421Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32215", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186387, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4dW_UmcBTFzn_XoLD2nn", + "source": { + "@timestamp": "2018-11-27T01:18:31.453Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32215" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186388, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "adW_UmcBTFzn_XoLeXOw", + "source": { + "@timestamp": "2018-11-27T01:18:58.502Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32217", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186389, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "46.148.18.163", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "atW_UmcBTFzn_XoLeXOw", + "source": { + "@timestamp": "2018-11-27T01:18:58.503Z", + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "secondary": "46.148.18.163", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 186390, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32217", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "a9W_UmcBTFzn_XoLeXOw", + "source": { + "@timestamp": "2018-11-27T01:18:58.645Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32217", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "46.148.18.163" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186391, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ctW-UmcBTFzn_XoLJVU7", + "source": { + "@timestamp": "2018-11-27T01:17:31.345Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32207", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186383, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9W-UmcBTFzn_XoLJVU7", + "source": { + "@timestamp": "2018-11-27T01:17:31.346Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32207", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186384, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dNW-UmcBTFzn_XoLJVU7", + "source": { + "@timestamp": "2018-11-27T01:17:31.378Z", + "process": { + "pid": "32207", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186385, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rdW9UmcBTFzn_XoLfkeK", + "source": { + "@timestamp": "2018-11-27T01:16:48.669Z", + "source": { + "ip": "115.146.127.132" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "115.146.127.132", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43152, + "result": "fail", + "session": "unset" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12639", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rtW9UmcBTFzn_XoLfkeK", + "source": { + "@timestamp": "2018-11-27T01:16:48.669Z", + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "115.146.127.132", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43153, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12639", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "115.146.127.132" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "r9W9UmcBTFzn_XoLfkeK", + "source": { + "@timestamp": "2018-11-27T01:16:48.873Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43154, + "result": "fail", + "session": "unset", + "data": { + "hostname": "115.146.127.132", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "115.146.127.132" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12639", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "115.146.127.132" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "y9W9UmcBTFzn_XoLUUI6", + "source": { + "@timestamp": "2018-11-27T01:16:37.072Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32202" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186374, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zNW9UmcBTFzn_XoLUUI6", + "source": { + "@timestamp": "2018-11-27T01:16:37.073Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32202" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186375, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zdW9UmcBTFzn_XoLUUI6", + "source": { + "@timestamp": "2018-11-27T01:16:37.104Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186376, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32202" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "btW9UmcBTFzn_XoLskuL", + "source": { + "@timestamp": "2018-11-27T01:17:01.885Z", + "auditd": { + "data": { + "op": "PAM:accounting", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 186377, + "result": "success", + "session": "unset" + }, + "event": { + "type": "user_acct", + "action": "was-authorized", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32204", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "b9W9UmcBTFzn_XoLskuL", + "source": { + "@timestamp": "2018-11-27T01:17:01.886Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "32204" + }, + "auditd": { + "result": "success", + "session": "unset", + "data": { + "op": "PAM:setcred", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 186378 + }, + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cNW9UmcBTFzn_XoLskuL", + "source": { + "@timestamp": "2018-11-27T01:17:01.887Z", + "auditd": { + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "root" + } + }, + "sequence": 186380, + "result": "success", + "session": "3511", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:session_open" + } + }, + "event": { + "category": "user-login", + "type": "user_start", + "action": "started-session", + "module": "auditd" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0", + "auid": "0" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32204", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cdW9UmcBTFzn_XoLskuL", + "source": { + "@timestamp": "2018-11-27T01:17:01.890Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32204", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 186381, + "result": "success", + "session": "3511", + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ctW9UmcBTFzn_XoLskuL", + "source": { + "@timestamp": "2018-11-27T01:17:01.891Z", + "process": { + "pid": "32204", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "acct": "root", + "op": "PAM:session_close", + "terminal": "cron" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 186382, + "result": "success", + "session": "3511" + }, + "event": { + "type": "user_end", + "action": "ended-session", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9W9UmcBTFzn_XoLskuR", + "source": { + "@timestamp": "2018-11-27T01:17:01.987Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "458" + }, + "auditd": { + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 192494, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "acct": "root", + "terminal": "cron" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_acct", + "action": "was-authorized" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dNW9UmcBTFzn_XoLskuR", + "source": { + "@timestamp": "2018-11-27T01:17:01.988Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "458", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 192495, + "result": "success", + "session": "unset", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:setcred" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + } + } + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ddW9UmcBTFzn_XoLskuR", + "source": { + "@timestamp": "2018-11-27T01:17:01.989Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_start", + "action": "started-session", + "module": "auditd" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "458", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "9862", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:session_open" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "root" + } + }, + "sequence": 192497, + "result": "success" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dtW9UmcBTFzn_XoLskuR", + "source": { + "@timestamp": "2018-11-27T01:17:01.992Z", + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0", + "auid": "0" + }, + "process": { + "pid": "458", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "9862", + "data": { + "acct": "root", + "op": "PAM:setcred", + "terminal": "cron" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192498, + "result": "success" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "d9W9UmcBTFzn_XoLskuR", + "source": { + "@timestamp": "2018-11-27T01:17:01.993Z", + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "process": { + "pid": "458", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + }, + "sequence": 192499, + "result": "success", + "session": "9862", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:session_close" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "p9W_UmcBTFzn_XoLs3cF", + "source": { + "@timestamp": "2018-11-27T01:19:13.179Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "file_integrity", + "action": [ + "created" + ] + }, + "file": { + "uid": 0, + "owner": "root", + "inode": "121", + "mtime": "2018-11-27T01:19:13.174Z", + "size": 20, + "type": "file", + "gid": 0, + "mode": "0000", + "path": "/etc/sed4Tvfpv", + "ctime": "2018-11-27T01:19:13.174Z", + "group": "root" + }, + "hash": { + "sha1": "c7f9a550b77ece79052aa1a630098b911883abde" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qNW_UmcBTFzn_XoLs3cF", + "source": { + "@timestamp": "2018-11-27T01:19:13.180Z", + "event": { + "module": "file_integrity", + "action": [ + "updated" + ] + }, + "file": { + "group": "root", + "inode": "121", + "gid": 0, + "type": "file", + "mtime": "2018-11-27T01:19:13.178Z", + "ctime": "2018-11-27T01:19:13.178Z", + "uid": 0, + "mode": "0000", + "owner": "root", + "path": "/etc/sed4Tvfpv", + "size": 51 + }, + "hash": { + "sha1": "4dac5cd40b12d209e8a87bf8089fadab9edfca00" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qdW_UmcBTFzn_XoLs3cF", + "source": { + "@timestamp": "2018-11-27T01:19:13.187Z", + "file": { + "path": "/etc/sed4Tvfpv" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "file_integrity", + "action": [ + "attributes_modified" + ] + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qtW_UmcBTFzn_XoLs3cF", + "source": { + "@timestamp": "2018-11-27T01:19:13.188Z", + "event": { + "action": [ + "moved" + ], + "module": "file_integrity" + }, + "file": { + "path": "/etc/sed4Tvfpv" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "q9W_UmcBTFzn_XoLs3cF", + "source": { + "@timestamp": "2018-11-27T01:19:13.195Z", + "event": { + "module": "file_integrity", + "action": [ + "created" + ] + }, + "file": { + "type": "file", + "owner": "root", + "mtime": "2018-11-27T01:19:13.178Z", + "ctime": "2018-11-27T01:19:13.178Z", + "group": "root", + "path": "/etc/hosts", + "gid": 0, + "uid": 0, + "inode": "121", + "mode": "0644", + "size": 209 + }, + "hash": { + "sha1": "ac0139feba2533b2670370c22551547341fde295" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XNbJUmcBTFzn_XoL6leU", + "source": { + "@timestamp": "2018-11-27T01:30:22.705Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25784", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "152.245.204.82" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "152.245.204.82", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 184359 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XdbJUmcBTFzn_XoL6leU", + "source": { + "@timestamp": "2018-11-27T01:30:22.707Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25784", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "152.245.204.82" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "152.245.204.82", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184360, + "result": "fail" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XtbJUmcBTFzn_XoL6leU", + "source": { + "@timestamp": "2018-11-27T01:30:22.717Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25783" + }, + "source": { + "ip": "152.245.204.82" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184361, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "152.245.204.82", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "X9bJUmcBTFzn_XoL6leU", + "source": { + "@timestamp": "2018-11-27T01:30:22.719Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "sequence": 184362, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "152.245.204.82" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "25783", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "152.245.204.82" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YNbJUmcBTFzn_XoL6leU", + "source": { + "@timestamp": "2018-11-27T01:30:22.897Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "25784", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "152.245.204.82" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "152.245.204.82", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "152.245.204.82", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184363, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YdbJUmcBTFzn_XoL6leU", + "source": { + "@timestamp": "2018-11-27T01:30:22.918Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "152.245.204.82" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "152.245.204.82" + } + }, + "sequence": 184364 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25783" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "152.245.204.82" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DNbKUmcBTFzn_XoLGlxF", + "source": { + "@timestamp": "2018-11-27T01:30:34.971Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32299", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186434 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DdbKUmcBTFzn_XoLGlxF", + "source": { + "@timestamp": "2018-11-27T01:30:34.972Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32299" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186435, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DtbKUmcBTFzn_XoLGlxF", + "source": { + "@timestamp": "2018-11-27T01:30:35.002Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32299", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186436, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "r9bJUmcBTFzn_XoLAkOP", + "source": { + "@timestamp": "2018-11-27T01:29:23.365Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32290", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186431, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sNbJUmcBTFzn_XoLAkOP", + "source": { + "@timestamp": "2018-11-27T01:29:23.366Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32290" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186432 + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sdbJUmcBTFzn_XoLAkOP", + "source": { + "@timestamp": "2018-11-27T01:29:23.397Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186433, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32290" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KtbLUmcBTFzn_XoLIXLc", + "source": { + "@timestamp": "2018-11-27T01:31:42.449Z", + "auditd": { + "sequence": 186437, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32307", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "K9bLUmcBTFzn_XoLIXLc", + "source": { + "@timestamp": "2018-11-27T01:31:42.450Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32307" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 186438, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LNbLUmcBTFzn_XoLIXLc", + "source": { + "@timestamp": "2018-11-27T01:31:42.481Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32307" + }, + "source": { + "ip": "107.170.65.109" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186439, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "udbLUmcBTFzn_XoLfHlZ", + "source": { + "@timestamp": "2018-11-27T01:32:05.615Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "173.167.200.227", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192532, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "562" + }, + "source": { + "ip": "173.167.200.227" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "utbLUmcBTFzn_XoLfHlZ", + "source": { + "@timestamp": "2018-11-27T01:32:05.616Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "562" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "173.167.200.227" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192533, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "173.167.200.227" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "u9bLUmcBTFzn_XoLfHlZ", + "source": { + "@timestamp": "2018-11-27T01:32:05.661Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "562", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "173.167.200.227" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "173.167.200.227", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "173.167.200.227", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192534, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KtbJUmcBTFzn_XoLK0dG", + "source": { + "@timestamp": "2018-11-27T01:29:33.789Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "548", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.68.50.250" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "138.68.50.250", + "type": "user-session" + } + }, + "sequence": 192529, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "K9bJUmcBTFzn_XoLK0dG", + "source": { + "@timestamp": "2018-11-27T01:29:33.789Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "548" + }, + "source": { + "ip": "138.68.50.250" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192530, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "138.68.50.250" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LNbJUmcBTFzn_XoLK0dG", + "source": { + "@timestamp": "2018-11-27T01:29:33.830Z", + "auditd": { + "sequence": 192531, + "result": "fail", + "session": "unset", + "data": { + "hostname": "138.68.50.250", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "138.68.50.250", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "548", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.68.50.250" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZtbKUmcBTFzn_XoLRF8K", + "source": { + "@timestamp": "2018-11-27T01:30:45.664Z", + "process": { + "pid": "29595", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.68.249.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44189, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "138.68.249.156", + "type": "user-session", + "primary": "sshd" + } + } + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9bKUmcBTFzn_XoLRF8K", + "source": { + "@timestamp": "2018-11-27T01:30:45.664Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29595" + }, + "source": { + "ip": "138.68.249.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "138.68.249.156", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44190 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aNbKUmcBTFzn_XoLRF8K", + "source": { + "@timestamp": "2018-11-27T01:30:45.708Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "29595", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.68.249.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44191, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "138.68.249.156" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "138.68.249.156", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gNbKUmcBTFzn_XoL3Gzp", + "source": { + "@timestamp": "2018-11-27T01:31:24.795Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "200.160.115.234", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 44192, + "result": "fail" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "29609", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "200.160.115.234" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gdbKUmcBTFzn_XoL3Gzp", + "source": { + "@timestamp": "2018-11-27T01:31:24.795Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "200.160.115.234", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 44193 + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "29609", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "200.160.115.234" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gtbKUmcBTFzn_XoL3Gzp", + "source": { + "@timestamp": "2018-11-27T01:31:24.971Z", + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "sequence": 44194, + "result": "fail", + "session": "unset", + "data": { + "hostname": "200.160.115.234", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "200.160.115.234", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "29609", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "200.160.115.234" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNbKUmcBTFzn_XoLLl55", + "source": { + "@timestamp": "2018-11-27T01:30:40.139Z", + "process": { + "pid": "29592", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.197.108" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44188, + "result": "fail", + "session": "unset", + "data": { + "hostname": "164.132.197.108", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "164.132.197.108", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YdbNUmcBTFzn_XoLn6nH", + "source": { + "@timestamp": "2018-11-27T01:34:25.758Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 186449, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32327", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YtbNUmcBTFzn_XoLn6nH", + "source": { + "@timestamp": "2018-11-27T01:34:25.759Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32327", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186450 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Y9bNUmcBTFzn_XoLn6nH", + "source": { + "@timestamp": "2018-11-27T01:34:25.789Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32327", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "107.170.65.109" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186451 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "adbNUmcBTFzn_XoLo6mE", + "source": { + "@timestamp": "2018-11-27T01:34:26.614Z", + "process": { + "pid": "12750", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "101.89.114.94" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43176, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "101.89.114.94", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "atbNUmcBTFzn_XoLo6mE", + "source": { + "@timestamp": "2018-11-27T01:34:26.614Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12750", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "101.89.114.94" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43177, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "101.89.114.94", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "a9bNUmcBTFzn_XoLo6mE", + "source": { + "@timestamp": "2018-11-27T01:34:26.814Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12750", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "101.89.114.94" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "101.89.114.94", + "type": "user-session" + } + }, + "sequence": 43178, + "result": "fail", + "session": "unset", + "data": { + "hostname": "101.89.114.94", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2tbPUmcBTFzn_XoLbtDN", + "source": { + "@timestamp": "2018-11-27T01:36:24.291Z", + "process": { + "pid": "32340", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186458, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "29bPUmcBTFzn_XoLbtDN", + "source": { + "@timestamp": "2018-11-27T01:36:24.292Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186459, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32340", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3NbPUmcBTFzn_XoLbtDN", + "source": { + "@timestamp": "2018-11-27T01:36:24.322Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "process": { + "pid": "32340", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186460, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "EtbOUmcBTFzn_XoLf7xx", + "source": { + "@timestamp": "2018-11-27T01:35:22.989Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186455, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32333" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "E9bOUmcBTFzn_XoLf7xx", + "source": { + "@timestamp": "2018-11-27T01:35:22.990Z", + "process": { + "pid": "32333", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186456, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FNbOUmcBTFzn_XoLf7xx", + "source": { + "@timestamp": "2018-11-27T01:35:23.020Z", + "process": { + "pid": "32333", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186457, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6tbMUmcBTFzn_XoLzZY6", + "source": { + "@timestamp": "2018-11-27T01:33:31.856Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32317", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186443, + "result": "fail", + "session": "unset" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "69bMUmcBTFzn_XoLzZY6", + "source": { + "@timestamp": "2018-11-27T01:33:31.857Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32317", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 186444, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7NbMUmcBTFzn_XoLzZY6", + "source": { + "@timestamp": "2018-11-27T01:33:31.887Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32317", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 186445, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "EdbMUmcBTFzn_XoLAYZs", + "source": { + "@timestamp": "2018-11-27T01:32:39.681Z", + "auditd": { + "sequence": 186440, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32315", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "EtbMUmcBTFzn_XoLAYZs", + "source": { + "@timestamp": "2018-11-27T01:32:39.682Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32315", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186441, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "E9bMUmcBTFzn_XoLAYZs", + "source": { + "@timestamp": "2018-11-27T01:32:39.713Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32315", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186442 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dbOUmcBTFzn_XoLD7I4", + "source": { + "@timestamp": "2018-11-27T01:34:54.285Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32330", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.228.67" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186452, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "178.33.228.67" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6tbOUmcBTFzn_XoLD7I4", + "source": { + "@timestamp": "2018-11-27T01:34:54.286Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32330", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "178.33.228.67" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "178.33.228.67", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186453, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "69bOUmcBTFzn_XoLD7I4", + "source": { + "@timestamp": "2018-11-27T01:34:54.394Z", + "process": { + "pid": "32330", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "178.33.228.67" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186454, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "178.33.228.67", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "178.33.228.67", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-tbOUmcBTFzn_XoL_cbV", + "source": { + "@timestamp": "2018-11-27T01:35:55.371Z", + "source": { + "ip": "85.113.39.134" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "85.113.39.134", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192535, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "583" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-9bOUmcBTFzn_XoL_cbV", + "source": { + "@timestamp": "2018-11-27T01:35:55.372Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "583" + }, + "source": { + "ip": "85.113.39.134" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "sequence": 192536, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "85.113.39.134" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_NbOUmcBTFzn_XoL_cbV", + "source": { + "@timestamp": "2018-11-27T01:35:55.530Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192537, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "85.113.39.134", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "85.113.39.134" + } + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "583", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "85.113.39.134" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xdbMUmcBTFzn_XoLx5bh", + "source": { + "@timestamp": "2018-11-27T01:33:30.481Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12742", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "131.72.141.34" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "131.72.141.34" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43173, + "result": "fail" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xtbMUmcBTFzn_XoLx5bh", + "source": { + "@timestamp": "2018-11-27T01:33:30.485Z", + "process": { + "pid": "12742", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "131.72.141.34" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43174, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "131.72.141.34", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "x9bMUmcBTFzn_XoLx5bh", + "source": { + "@timestamp": "2018-11-27T01:33:30.637Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "131.72.141.34", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "131.72.141.34", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43175, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12742", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "131.72.141.34" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WtbNUmcBTFzn_XoLcqUk", + "source": { + "@timestamp": "2018-11-27T01:34:14.073Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32325", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.38.33.178" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "51.38.33.178", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186446, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "W9bNUmcBTFzn_XoLcqUk", + "source": { + "@timestamp": "2018-11-27T01:34:14.075Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32325" + }, + "source": { + "ip": "51.38.33.178" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "51.38.33.178", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 186447 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XNbNUmcBTFzn_XoLcqUk", + "source": { + "@timestamp": "2018-11-27T01:34:14.182Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32325" + }, + "source": { + "ip": "51.38.33.178" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "51.38.33.178", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186448, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "51.38.33.178" + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "W9bQUmcBTFzn_XoLRuMO", + "source": { + "@timestamp": "2018-11-27T01:37:19.393Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12766", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "117.172.59.127" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "117.172.59.127" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 43182 + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XNbQUmcBTFzn_XoLRuMO", + "source": { + "@timestamp": "2018-11-27T01:37:19.393Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12766" + }, + "source": { + "ip": "117.172.59.127" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "117.172.59.127", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43183, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XdbQUmcBTFzn_XoLRuMO", + "source": { + "@timestamp": "2018-11-27T01:37:19.649Z", + "process": { + "pid": "12766", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "117.172.59.127" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "117.172.59.127" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "117.172.59.127" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43184, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "otbQUmcBTFzn_XoLVOSA", + "source": { + "@timestamp": "2018-11-27T01:37:23.093Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12773", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "193.70.85.206" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43185, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "193.70.85.206" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "193.70.85.206", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BtbQUmcBTFzn_XoLaudn", + "source": { + "@timestamp": "2018-11-27T01:37:28.701Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32348" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186461, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "B9bQUmcBTFzn_XoLaudn", + "source": { + "@timestamp": "2018-11-27T01:37:28.702Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 186462, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32348" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNbQUmcBTFzn_XoLaudn", + "source": { + "@timestamp": "2018-11-27T01:37:28.734Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32348" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186463, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "E9bRUmcBTFzn_XoLKPdd", + "source": { + "@timestamp": "2018-11-27T01:38:17.330Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19716" + }, + "source": { + "ip": "93.157.241.40" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "93.157.241.40", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142343, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FNbRUmcBTFzn_XoLKPdd", + "source": { + "@timestamp": "2018-11-27T01:38:17.331Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19716", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "93.157.241.40" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "93.157.241.40", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142344, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FdbRUmcBTFzn_XoLKPdd", + "source": { + "@timestamp": "2018-11-27T01:38:17.539Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19716", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "93.157.241.40" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "93.157.241.40", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "93.157.241.40", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142345, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qNbPUmcBTFzn_XoL8dwD", + "source": { + "@timestamp": "2018-11-27T01:36:57.625Z", + "process": { + "pid": "25824", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "94.23.0.13" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "94.23.0.13", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184365, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qdbPUmcBTFzn_XoL8dwD", + "source": { + "@timestamp": "2018-11-27T01:36:57.626Z", + "source": { + "ip": "94.23.0.13" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "94.23.0.13" + } + }, + "sequence": 184366, + "result": "fail" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25824", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qtbPUmcBTFzn_XoL8dwD", + "source": { + "@timestamp": "2018-11-27T01:36:57.733Z", + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25824" + }, + "source": { + "ip": "94.23.0.13" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184367, + "result": "fail", + "session": "unset", + "data": { + "hostname": "94.23.0.13", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "94.23.0.13", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "T9bQUmcBTFzn_XoLQeNm", + "source": { + "@timestamp": "2018-11-27T01:37:18.204Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "159.203.185.59", + "type": "user-session" + } + }, + "sequence": 192544 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "595", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.203.185.59" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UNbQUmcBTFzn_XoLQeNm", + "source": { + "@timestamp": "2018-11-27T01:37:18.205Z", + "process": { + "pid": "595", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.203.185.59" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192545, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "159.203.185.59" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UdbQUmcBTFzn_XoLQeNm", + "source": { + "@timestamp": "2018-11-27T01:37:18.237Z", + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "159.203.185.59", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192546, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "159.203.185.59" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "595", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.203.185.59" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RdbQUmcBTFzn_XoLGOA5", + "source": { + "@timestamp": "2018-11-27T01:37:07.663Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "593", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.242.169.217" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "82.242.169.217", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192541, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RtbQUmcBTFzn_XoLGOA5", + "source": { + "@timestamp": "2018-11-27T01:37:07.664Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "82.242.169.217", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192542, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "593", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.242.169.217" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "R9bQUmcBTFzn_XoLGOA5", + "source": { + "@timestamp": "2018-11-27T01:37:08.073Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "593", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.242.169.217" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192543, + "result": "fail", + "session": "unset", + "data": { + "hostname": "82.242.169.217", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "82.242.169.217", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtbPUmcBTFzn_XoL29qM", + "source": { + "@timestamp": "2018-11-27T01:36:52.130Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "91.230.8.194", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 192538 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "591" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "91.230.8.194" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "F9bPUmcBTFzn_XoL29qM", + "source": { + "@timestamp": "2018-11-27T01:36:52.131Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "591", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.230.8.194" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "91.230.8.194", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192539 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GNbPUmcBTFzn_XoL29qM", + "source": { + "@timestamp": "2018-11-27T01:36:52.258Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "91.230.8.194", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "91.230.8.194", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192540 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "591", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.230.8.194" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vtbQUmcBTFzn_XoLKeAA", + "source": { + "@timestamp": "2018-11-27T01:37:11.956Z", + "source": { + "ip": "51.254.201.64" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "51.254.201.64" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 43179, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "12764", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "v9bQUmcBTFzn_XoLKeAA", + "source": { + "@timestamp": "2018-11-27T01:37:11.956Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "12764", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.254.201.64" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.254.201.64", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43180, + "result": "fail" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wNbQUmcBTFzn_XoLKeAA", + "source": { + "@timestamp": "2018-11-27T01:37:12.064Z", + "process": { + "pid": "12764", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.254.201.64" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43181, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "51.254.201.64", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "51.254.201.64" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ltbQUmcBTFzn_XoL3fAn", + "source": { + "@timestamp": "2018-11-27T01:37:58.076Z", + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "46.17.40.237", + "type": "user-session" + } + }, + "sequence": 142342, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "46.17.40.237" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "process": { + "pid": "19713", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.17.40.237" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VtfUUmcBTFzn_XoLxEaR", + "source": { + "@timestamp": "2018-11-27T01:42:13.909Z", + "source": { + "ip": "147.75.96.90" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "147.75.96.90", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44195, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "29821", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "V9fUUmcBTFzn_XoLxEaR", + "source": { + "@timestamp": "2018-11-27T01:42:13.913Z", + "source": { + "ip": "147.75.96.90" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44196, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "147.75.96.90", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29821" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WNfUUmcBTFzn_XoLxEaR", + "source": { + "@timestamp": "2018-11-27T01:42:13.945Z", + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29821" + }, + "source": { + "ip": "147.75.96.90" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44197, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "147.75.96.90", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "147.75.96.90" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wtfUUmcBTFzn_XoLzEYU", + "source": { + "@timestamp": "2018-11-27T01:42:15.845Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "29824", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "144.217.4.14" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44198, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "144.217.4.14", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "w9fUUmcBTFzn_XoLzEYU", + "source": { + "@timestamp": "2018-11-27T01:42:15.845Z", + "process": { + "pid": "29824", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "144.217.4.14" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44199, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "144.217.4.14", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xNfUUmcBTFzn_XoLzEYU", + "source": { + "@timestamp": "2018-11-27T01:42:15.889Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "29824", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "144.217.4.14" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44200, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "144.217.4.14" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "144.217.4.14", + "type": "user-session" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0NfUUmcBTFzn_XoL0Ubg", + "source": { + "@timestamp": "2018-11-27T01:42:17.334Z", + "process": { + "pid": "19742", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "192.252.209.190" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "secondary": "192.252.209.190", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 142355 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0dfUUmcBTFzn_XoL0Ubg", + "source": { + "@timestamp": "2018-11-27T01:42:17.335Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "192.252.209.190", + "type": "user-session" + } + }, + "sequence": 142356, + "result": "fail" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19742", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "192.252.209.190" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0tfUUmcBTFzn_XoL0Ubg", + "source": { + "@timestamp": "2018-11-27T01:42:17.366Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19742", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "192.252.209.190" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142357, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "192.252.209.190" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "192.252.209.190", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "tNfUUmcBTFzn_XoLIDfE", + "source": { + "@timestamp": "2018-11-27T01:41:31.994Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19739", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.196.12.151" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "82.196.12.151", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142352, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "tdfUUmcBTFzn_XoLIDfE", + "source": { + "@timestamp": "2018-11-27T01:41:31.995Z", + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "82.196.12.151", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142353, + "result": "fail" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19739", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.196.12.151" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ttfUUmcBTFzn_XoLIDfE", + "source": { + "@timestamp": "2018-11-27T01:41:32.100Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "19739", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.196.12.151" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142354, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "82.196.12.151" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "82.196.12.151", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_dfVUmcBTFzn_XoLRFCU", + "source": { + "@timestamp": "2018-11-27T01:42:46.698Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "secondary": "202.28.34.200", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 184380 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "25911", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.28.34.200" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_tfVUmcBTFzn_XoLRFCU", + "source": { + "@timestamp": "2018-11-27T01:42:46.700Z", + "auditd": { + "sequence": 184381, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "202.28.34.200", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25911" + }, + "source": { + "ip": "202.28.34.200" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_9fVUmcBTFzn_XoLRFCU", + "source": { + "@timestamp": "2018-11-27T01:42:46.932Z", + "source": { + "ip": "202.28.34.200" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "202.28.34.200" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "202.28.34.200", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184382, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "25911", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ANfUUmcBTFzn_XoL5ElJ", + "source": { + "@timestamp": "2018-11-27T01:42:22.047Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25908" + }, + "source": { + "ip": "104.234.223.14" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "104.234.223.14", + "type": "user-session" + } + }, + "sequence": 184377, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AdfUUmcBTFzn_XoL5ElJ", + "source": { + "@timestamp": "2018-11-27T01:42:22.048Z", + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "104.234.223.14", + "type": "user-session" + } + }, + "sequence": 184378, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25908", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.234.223.14" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AtfUUmcBTFzn_XoL5ElJ", + "source": { + "@timestamp": "2018-11-27T01:42:22.097Z", + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "25908", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.234.223.14" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184379, + "result": "fail", + "session": "unset", + "data": { + "hostname": "104.234.223.14", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "104.234.223.14", + "type": "user-session" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "79fUUmcBTFzn_XoLuUSW", + "source": { + "@timestamp": "2018-11-27T01:42:11.115Z", + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186479, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32381", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8NfUUmcBTFzn_XoLuUSW", + "source": { + "@timestamp": "2018-11-27T01:42:11.116Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32381", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186480, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8dfUUmcBTFzn_XoLuUSW", + "source": { + "@timestamp": "2018-11-27T01:42:11.146Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32381", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186481, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ntfUUmcBTFzn_XoLPzou", + "source": { + "@timestamp": "2018-11-27T01:41:39.780Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25901", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.91.116.197" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "185.91.116.197", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184374, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "n9fUUmcBTFzn_XoLPzou", + "source": { + "@timestamp": "2018-11-27T01:41:39.781Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "25901", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.91.116.197" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "185.91.116.197", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184375, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "oNfUUmcBTFzn_XoLPzou", + "source": { + "@timestamp": "2018-11-27T01:41:39.902Z", + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25901" + }, + "source": { + "ip": "185.91.116.197" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "185.91.116.197", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "185.91.116.197", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 184376, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TdfUUmcBTFzn_XoLaj6n", + "source": { + "@timestamp": "2018-11-27T01:41:50.908Z", + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32377" + }, + "source": { + "ip": "37.187.113.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186476, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "37.187.113.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TtfUUmcBTFzn_XoLaj6n", + "source": { + "@timestamp": "2018-11-27T01:41:50.909Z", + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186477, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "37.187.113.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32377" + }, + "source": { + "ip": "37.187.113.229" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "T9fUUmcBTFzn_XoLaj6n", + "source": { + "@timestamp": "2018-11-27T01:41:51.016Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32377", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.187.113.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "37.187.113.229" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "37.187.113.229" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186478, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gdfVUmcBTFzn_XoLildy", + "source": { + "@timestamp": "2018-11-27T01:43:04.584Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "92.222.47.243", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184383, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "25918", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "92.222.47.243" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gtfVUmcBTFzn_XoLildy", + "source": { + "@timestamp": "2018-11-27T01:43:04.585Z", + "source": { + "ip": "92.222.47.243" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "92.222.47.243", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 184384, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25918", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "g9fVUmcBTFzn_XoLildy", + "source": { + "@timestamp": "2018-11-27T01:43:04.690Z", + "source": { + "ip": "92.222.47.243" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "92.222.47.243", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "92.222.47.243", + "type": "user-session" + } + }, + "sequence": 184385, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25918" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7tfUUmcBTFzn_XoL-0sw", + "source": { + "@timestamp": "2018-11-27T01:42:27.906Z", + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "185.21.16.108", + "type": "user-session" + } + }, + "sequence": 44201, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "29828", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.21.16.108" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "79fUUmcBTFzn_XoL-0sw", + "source": { + "@timestamp": "2018-11-27T01:42:27.906Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "29828", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.21.16.108" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "185.21.16.108", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44202, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8NfUUmcBTFzn_XoL-0sw", + "source": { + "@timestamp": "2018-11-27T01:42:28.038Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "29828", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.21.16.108" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "185.21.16.108", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "185.21.16.108" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44203, + "result": "fail" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NNfcUmcBTFzn_XoLuPTT", + "source": { + "@timestamp": "2018-11-27T01:50:55.209Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32438" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186506, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NdfcUmcBTFzn_XoLuPTT", + "source": { + "@timestamp": "2018-11-27T01:50:55.210Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186507, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32438" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NtfcUmcBTFzn_XoLuPTT", + "source": { + "@timestamp": "2018-11-27T01:50:55.240Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32438", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186508, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "OtfcUmcBTFzn_XoLu_Sp", + "source": { + "@timestamp": "2018-11-27T01:50:55.885Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.80.6.244", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142382, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19808", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.80.6.244" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "O9fcUmcBTFzn_XoLu_Sp", + "source": { + "@timestamp": "2018-11-27T01:50:55.886Z", + "source": { + "ip": "178.80.6.244" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "178.80.6.244" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142383, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19808", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PNfcUmcBTFzn_XoLu_Sp", + "source": { + "@timestamp": "2018-11-27T01:50:56.100Z", + "auditd": { + "data": { + "hostname": "178.80.6.244", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "178.80.6.244" + } + }, + "sequence": 142384, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19808", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.80.6.244" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ttfaUmcBTFzn_XoL780P", + "source": { + "@timestamp": "2018-11-27T01:48:58.021Z", + "source": { + "ip": "104.236.181.158" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "104.236.181.158" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142376, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19793", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "t9faUmcBTFzn_XoL780P", + "source": { + "@timestamp": "2018-11-27T01:48:58.022Z", + "source": { + "ip": "104.236.181.158" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "104.236.181.158", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142377, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "process": { + "pid": "19793", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "uNfaUmcBTFzn_XoL780P", + "source": { + "@timestamp": "2018-11-27T01:48:58.064Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "104.236.181.158" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "104.236.181.158" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142378, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19793", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.236.181.158" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "tNfbUmcBTFzn_XoLTdQu", + "source": { + "@timestamp": "2018-11-27T01:49:22.116Z", + "process": { + "pid": "19795", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "153.142.75.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "secondary": "153.142.75.192", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 142379 + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "tdfbUmcBTFzn_XoLTdQu", + "source": { + "@timestamp": "2018-11-27T01:49:22.117Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19795", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "153.142.75.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142380, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "153.142.75.192", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ttfbUmcBTFzn_XoLTdQu", + "source": { + "@timestamp": "2018-11-27T01:49:22.274Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19795", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "153.142.75.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "153.142.75.192" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "153.142.75.192", + "type": "user-session" + } + }, + "sequence": 142381, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GtfaUmcBTFzn_XoLLr2X", + "source": { + "@timestamp": "2018-11-27T01:48:08.749Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19785", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "190.0.10.138" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "190.0.10.138" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 142373, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "G9faUmcBTFzn_XoLLr2X", + "source": { + "@timestamp": "2018-11-27T01:48:08.750Z", + "source": { + "ip": "190.0.10.138" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "190.0.10.138", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142374 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "process": { + "pid": "19785", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HNfaUmcBTFzn_XoLLr2X", + "source": { + "@timestamp": "2018-11-27T01:48:08.857Z", + "source": { + "ip": "190.0.10.138" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142375, + "result": "fail", + "session": "unset", + "data": { + "hostname": "190.0.10.138", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "190.0.10.138" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19785", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "J9faUmcBTFzn_XoLbcKr", + "source": { + "@timestamp": "2018-11-27T01:48:24.897Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32420" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186500, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KNfaUmcBTFzn_XoLbcKr", + "source": { + "@timestamp": "2018-11-27T01:48:24.899Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186501, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32420" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KdfaUmcBTFzn_XoLbcKr", + "source": { + "@timestamp": "2018-11-27T01:48:24.929Z", + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186502, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32420", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ItfZUmcBTFzn_XoLRqn8", + "source": { + "@timestamp": "2018-11-27T01:47:09.456Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32412" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186497, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "I9fZUmcBTFzn_XoLRqn8", + "source": { + "@timestamp": "2018-11-27T01:47:09.457Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32412", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186498, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JNfZUmcBTFzn_XoLRqn8", + "source": { + "@timestamp": "2018-11-27T01:47:09.491Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32412", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186499, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KtfbUmcBTFzn_XoLltt6", + "source": { + "@timestamp": "2018-11-27T01:49:40.879Z", + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186503, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32428", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "K9fbUmcBTFzn_XoLltt6", + "source": { + "@timestamp": "2018-11-27T01:49:40.881Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32428" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186504 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LNfbUmcBTFzn_XoLltt6", + "source": { + "@timestamp": "2018-11-27T01:49:40.911Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186505, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32428" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zNfZUmcBTFzn_XoL6LbT", + "source": { + "@timestamp": "2018-11-27T01:47:50.888Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "19783", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "176.31.75.53" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142370, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "176.31.75.53" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zdfZUmcBTFzn_XoL6LbT", + "source": { + "@timestamp": "2018-11-27T01:47:50.889Z", + "source": { + "ip": "176.31.75.53" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142371, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "176.31.75.53", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19783", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ztfZUmcBTFzn_XoL6LbT", + "source": { + "@timestamp": "2018-11-27T01:47:50.996Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "176.31.75.53" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "176.31.75.53", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142372, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "19783", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "176.31.75.53" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dfcUmcBTFzn_XoLVuuz", + "source": { + "@timestamp": "2018-11-27T01:50:30.087Z", + "source": { + "ip": "178.33.45.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44204, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.33.45.156", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29987" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6tfcUmcBTFzn_XoLVuuz", + "source": { + "@timestamp": "2018-11-27T01:50:30.087Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "29987", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.45.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "178.33.45.156", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44205, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "69fcUmcBTFzn_XoLVuuz", + "source": { + "@timestamp": "2018-11-27T01:50:30.195Z", + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "29987", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.45.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44206, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "178.33.45.156" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "178.33.45.156", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "i9jhUmcBTFzn_XoLAlEZ", + "source": { + "@timestamp": "2018-11-27T01:55:36.110Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26002" + }, + "source": { + "ip": "178.48.181.9" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "secondary": "178.48.181.9", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 184395 + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jNjhUmcBTFzn_XoLAlEZ", + "source": { + "@timestamp": "2018-11-27T01:55:36.111Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26002" + }, + "source": { + "ip": "178.48.181.9" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184396, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "178.48.181.9", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jdjhUmcBTFzn_XoLAlEZ", + "source": { + "@timestamp": "2018-11-27T01:55:36.272Z", + "source": { + "ip": "178.48.181.9" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184397, + "result": "fail", + "session": "unset", + "data": { + "hostname": "178.48.181.9", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "178.48.181.9" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26002" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HNjhUmcBTFzn_XoLBFLi", + "source": { + "@timestamp": "2018-11-27T01:55:36.824Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186518, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32466", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HdjhUmcBTFzn_XoLBFLi", + "source": { + "@timestamp": "2018-11-27T01:55:36.825Z", + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32466", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186519, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HtjhUmcBTFzn_XoLBFLi", + "source": { + "@timestamp": "2018-11-27T01:55:36.858Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186520, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32466", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "X9jhUmcBTFzn_XoLml-F", + "source": { + "@timestamp": "2018-11-27T01:56:15.131Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "83.99.24.14", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186524, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32470", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "83.99.24.14" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YNjhUmcBTFzn_XoLml-F", + "source": { + "@timestamp": "2018-11-27T01:56:15.132Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32470" + }, + "source": { + "ip": "83.99.24.14" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "83.99.24.14", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186525, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YdjhUmcBTFzn_XoLml-F", + "source": { + "@timestamp": "2018-11-27T01:56:15.245Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32470", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "83.99.24.14" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "83.99.24.14", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186526, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "83.99.24.14" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YtjhUmcBTFzn_XoLml-F", + "source": { + "@timestamp": "2018-11-27T01:56:15.822Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "51.38.68.237" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186527, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32472", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.38.68.237" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Y9jhUmcBTFzn_XoLml-F", + "source": { + "@timestamp": "2018-11-27T01:56:15.823Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32472", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "51.38.68.237" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186528, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "51.38.68.237" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZNjhUmcBTFzn_XoLml-F", + "source": { + "@timestamp": "2018-11-27T01:56:15.930Z", + "auditd": { + "sequence": 186529, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "51.38.68.237" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "51.38.68.237" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32472" + }, + "source": { + "ip": "51.38.68.237" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jNjgUmcBTFzn_XoL304M", + "source": { + "@timestamp": "2018-11-27T01:55:27.134Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "30088", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.121.142.225" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "91.121.142.225", + "type": "user-session" + } + }, + "sequence": 44210, + "result": "fail" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jdjgUmcBTFzn_XoL304M", + "source": { + "@timestamp": "2018-11-27T01:55:27.134Z", + "process": { + "pid": "30088", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "91.121.142.225" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "91.121.142.225" + } + }, + "sequence": 44211 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jtjgUmcBTFzn_XoL304M", + "source": { + "@timestamp": "2018-11-27T01:55:27.238Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "30088", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.121.142.225" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "91.121.142.225" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "91.121.142.225" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44212, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "j9jgUmcBTFzn_XoL304M", + "source": { + "@timestamp": "2018-11-27T01:55:27.846Z", + "source": { + "ip": "104.234.223.14" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44213, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "104.234.223.14", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "30090", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kNjgUmcBTFzn_XoL304M", + "source": { + "@timestamp": "2018-11-27T01:55:27.850Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "104.234.223.14", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44214 + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30090" + }, + "source": { + "ip": "104.234.223.14" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kdjgUmcBTFzn_XoL304M", + "source": { + "@timestamp": "2018-11-27T01:55:27.898Z", + "process": { + "pid": "30090", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.234.223.14" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44215, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "104.234.223.14", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "104.234.223.14", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vNjfUmcBTFzn_XoL8jpi", + "source": { + "@timestamp": "2018-11-27T01:54:26.552Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32457", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186515, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vdjfUmcBTFzn_XoL8jpi", + "source": { + "@timestamp": "2018-11-27T01:54:26.553Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32457" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186516, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vtjfUmcBTFzn_XoL8jpi", + "source": { + "@timestamp": "2018-11-27T01:54:26.584Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186517, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32457", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "59jgUmcBTFzn_XoLk0ht", + "source": { + "@timestamp": "2018-11-27T01:55:07.779Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "65.127.203.242", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142395, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19840", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "65.127.203.242" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6NjgUmcBTFzn_XoLk0ht", + "source": { + "@timestamp": "2018-11-27T01:55:07.780Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19840", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "65.127.203.242" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "65.127.203.242", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142396, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6djgUmcBTFzn_XoLk0ht", + "source": { + "@timestamp": "2018-11-27T01:55:07.840Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19840", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "65.127.203.242" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "secondary": "65.127.203.242", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 142397, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "65.127.203.242", + "terminal": "ssh" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "P9jhUmcBTFzn_XoLbFvp", + "source": { + "@timestamp": "2018-11-27T01:56:03.454Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "164.132.197.108", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186521 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32468", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "164.132.197.108" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QNjhUmcBTFzn_XoLbFvp", + "source": { + "@timestamp": "2018-11-27T01:56:03.455Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32468", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.197.108" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "164.132.197.108" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186522, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QdjhUmcBTFzn_XoLbFvp", + "source": { + "@timestamp": "2018-11-27T01:56:03.574Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "data": { + "hostname": "164.132.197.108", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "164.132.197.108", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186523, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32468", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.197.108" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kNjgUmcBTFzn_XoLv0zp", + "source": { + "@timestamp": "2018-11-27T01:55:19.167Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "752", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "36.84.80.31" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "36.84.80.31", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192556, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kdjgUmcBTFzn_XoLv0zp", + "source": { + "@timestamp": "2018-11-27T01:55:19.168Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192557, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "36.84.80.31", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "752", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "36.84.80.31" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ktjgUmcBTFzn_XoLv0zp", + "source": { + "@timestamp": "2018-11-27T01:55:19.429Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "36.84.80.31" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "36.84.80.31", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192558 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "752", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "36.84.80.31" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_NjhUmcBTFzn_XoLd1s3", + "source": { + "@timestamp": "2018-11-27T01:56:06.089Z", + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "197.149.137.86", + "type": "user-session" + } + }, + "sequence": 44216, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "30106", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "197.149.137.86" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_djhUmcBTFzn_XoLd1s3", + "source": { + "@timestamp": "2018-11-27T01:56:06.089Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "30106", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "197.149.137.86" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "197.149.137.86", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44217, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_tjhUmcBTFzn_XoLd1s3", + "source": { + "@timestamp": "2018-11-27T01:56:06.317Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30106", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "197.149.137.86" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "197.149.137.86", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44218, + "result": "fail", + "session": "unset", + "data": { + "hostname": "197.149.137.86", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JtjhUmcBTFzn_XoL7GYK", + "source": { + "@timestamp": "2018-11-27T01:56:36.000Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "26010", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.37.191.209" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184398, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "54.37.191.209" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "54.37.191.209", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NtjlUmcBTFzn_XoLuLrU", + "source": { + "@timestamp": "2018-11-27T02:00:45.031Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26032", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.145.205" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "128.199.145.205", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184399, + "result": "fail", + "session": "unset" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "N9jlUmcBTFzn_XoLuLrU", + "source": { + "@timestamp": "2018-11-27T02:00:45.032Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "26032", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.145.205" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "128.199.145.205", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184400 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ONjlUmcBTFzn_XoLuLrU", + "source": { + "@timestamp": "2018-11-27T02:00:45.255Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "128.199.145.205", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "128.199.145.205", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184401 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26032", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "128.199.145.205" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "OdjlUmcBTFzn_XoLubrj", + "source": { + "@timestamp": "2018-11-27T02:00:45.301Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32510" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186545, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "OtjlUmcBTFzn_XoLubrj", + "source": { + "@timestamp": "2018-11-27T02:00:45.302Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186546 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32510" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "O9jlUmcBTFzn_XoLubrj", + "source": { + "@timestamp": "2018-11-27T02:00:45.333Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186547, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + } + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32510", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "R9jlUmcBTFzn_XoLvrqH", + "source": { + "@timestamp": "2018-11-27T02:00:46.487Z", + "source": { + "ip": "51.254.140.108" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43217, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "51.254.140.108" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12917", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SNjlUmcBTFzn_XoLvrqH", + "source": { + "@timestamp": "2018-11-27T02:00:46.487Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "12917", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "51.254.140.108" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43218, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "51.254.140.108" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SdjlUmcBTFzn_XoLvrqH", + "source": { + "@timestamp": "2018-11-27T02:00:46.595Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12917", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.254.140.108" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43219, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "51.254.140.108", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "51.254.140.108", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "StjlUmcBTFzn_XoLvrqH", + "source": { + "@timestamp": "2018-11-27T02:00:47.131Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12919", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "79.133.56.139" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "79.133.56.139", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43220, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "S9jlUmcBTFzn_XoLvrqH", + "source": { + "@timestamp": "2018-11-27T02:00:47.135Z", + "process": { + "pid": "12919", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "79.133.56.139" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "79.133.56.139", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 43221 + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TNjlUmcBTFzn_XoLvrqH", + "source": { + "@timestamp": "2018-11-27T02:00:47.243Z", + "source": { + "ip": "79.133.56.139" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "79.133.56.139" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "79.133.56.139" + } + }, + "sequence": 43222 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12919" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wdjmUmcBTFzn_XoL8NQE", + "source": { + "@timestamp": "2018-11-27T02:02:04.698Z", + "process": { + "pid": "19884", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "50.71.229.131" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "50.71.229.131", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142407 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wtjmUmcBTFzn_XoL8NQE", + "source": { + "@timestamp": "2018-11-27T02:02:04.699Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19884", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "50.71.229.131" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142408, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "50.71.229.131", + "type": "user-session", + "primary": "sshd" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "w9jmUmcBTFzn_XoL8NQE", + "source": { + "@timestamp": "2018-11-27T02:02:04.762Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "50.71.229.131" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142409, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "50.71.229.131", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "50.71.229.131", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19884", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xdjmUmcBTFzn_XoL8tSP", + "source": { + "@timestamp": "2018-11-27T02:02:05.349Z", + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32513" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186548, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xtjmUmcBTFzn_XoL8tSP", + "source": { + "@timestamp": "2018-11-27T02:02:05.350Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32513" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186549, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "x9jmUmcBTFzn_XoL8tSP", + "source": { + "@timestamp": "2018-11-27T02:02:05.381Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32513", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186550, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "V9jlUmcBTFzn_XoLPq9B", + "source": { + "@timestamp": "2018-11-27T02:00:13.654Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142398, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "217.182.55.191", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19871", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.182.55.191" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WNjlUmcBTFzn_XoLPq9B", + "source": { + "@timestamp": "2018-11-27T02:00:13.656Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "217.182.55.191", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142399, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19871", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.182.55.191" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WdjlUmcBTFzn_XoLPq9B", + "source": { + "@timestamp": "2018-11-27T02:00:13.762Z", + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19871", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.182.55.191" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142400, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "217.182.55.191", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "217.182.55.191", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4djmUmcBTFzn_XoLT8Yc", + "source": { + "@timestamp": "2018-11-27T02:01:23.506Z", + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "91.121.110.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142401, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19879" + }, + "source": { + "ip": "91.121.110.50" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4tjmUmcBTFzn_XoLT8Yc", + "source": { + "@timestamp": "2018-11-27T02:01:23.507Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142402, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "91.121.110.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19879", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "91.121.110.50" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "49jmUmcBTFzn_XoLT8Yc", + "source": { + "@timestamp": "2018-11-27T02:01:23.614Z", + "auditd": { + "session": "unset", + "data": { + "hostname": "91.121.110.50", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "91.121.110.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142403, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19879", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.121.110.50" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ktjnUmcBTFzn_XoLvuUr", + "source": { + "@timestamp": "2018-11-27T02:02:57.473Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32520" + }, + "source": { + "ip": "213.191.147.66" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "213.191.147.66" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186551, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "k9jnUmcBTFzn_XoLvuUr", + "source": { + "@timestamp": "2018-11-27T02:02:57.474Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186552, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "213.191.147.66", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32520", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "213.191.147.66" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "lNjnUmcBTFzn_XoLvuUr", + "source": { + "@timestamp": "2018-11-27T02:02:57.617Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32520", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "213.191.147.66" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186553, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "213.191.147.66" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "213.191.147.66", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7tjmUmcBTFzn_XoLlMzO", + "source": { + "@timestamp": "2018-11-27T02:01:41.348Z", + "source": { + "ip": "211.219.52.136" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "211.219.52.136", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142404, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19881", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "79jmUmcBTFzn_XoLlMzO", + "source": { + "@timestamp": "2018-11-27T02:01:41.349Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19881", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "211.219.52.136" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "211.219.52.136", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142405 + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8NjmUmcBTFzn_XoLlMzO", + "source": { + "@timestamp": "2018-11-27T02:01:41.509Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19881", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "211.219.52.136" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "211.219.52.136", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142406, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "211.219.52.136", + "terminal": "ssh" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "h9joUmcBTFzn_XoLK-92", + "source": { + "@timestamp": "2018-11-27T02:03:25.452Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32523" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186554, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "iNjoUmcBTFzn_XoLK-92", + "source": { + "@timestamp": "2018-11-27T02:03:25.453Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32523" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186555 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "idjoUmcBTFzn_XoLK-92", + "source": { + "@timestamp": "2018-11-27T02:03:25.484Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32523", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186556 + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KtjoUmcBTFzn_XoLAuyv", + "source": { + "@timestamp": "2018-11-27T02:03:15.008Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "191.255.74.211", + "type": "user-session" + } + }, + "sequence": 43223 + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12938", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "191.255.74.211" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "K9joUmcBTFzn_XoLAuyv", + "source": { + "@timestamp": "2018-11-27T02:03:15.008Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "191.255.74.211" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43224 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12938", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "191.255.74.211" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LNjoUmcBTFzn_XoLAuyv", + "source": { + "@timestamp": "2018-11-27T02:03:15.172Z", + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "data": { + "hostname": "191.255.74.211", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "191.255.74.211", + "type": "user-session" + } + }, + "sequence": 43225, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12938", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "191.255.74.211" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "F9jlUmcBTFzn_XoLX7Lz", + "source": { + "@timestamp": "2018-11-27T02:00:22.277Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "152.115.61.52" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44222, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "152.115.61.52", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "30191", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GNjlUmcBTFzn_XoLX7Lz", + "source": { + "@timestamp": "2018-11-27T02:00:22.277Z", + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "152.115.61.52" + } + }, + "sequence": 44223, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30191", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "152.115.61.52" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GdjlUmcBTFzn_XoLX7Lz", + "source": { + "@timestamp": "2018-11-27T02:00:22.397Z", + "process": { + "pid": "30191", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "152.115.61.52" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "152.115.61.52", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "152.115.61.52" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44224 + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BtnuUmcBTFzn_XoLAnDn", + "source": { + "@timestamp": "2018-11-27T02:09:48.280Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30394" + }, + "source": { + "ip": "185.227.110.251" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "185.227.110.251" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44237, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "B9nuUmcBTFzn_XoLAnDn", + "source": { + "@timestamp": "2018-11-27T02:09:48.280Z", + "source": { + "ip": "185.227.110.251" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44238, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "185.227.110.251", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30394" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNnuUmcBTFzn_XoLAnDn", + "source": { + "@timestamp": "2018-11-27T02:09:48.468Z", + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "30394", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.227.110.251" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "185.227.110.251" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "185.227.110.251", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44239, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "X9nuUmcBTFzn_XoLDHBr", + "source": { + "@timestamp": "2018-11-27T02:09:50.721Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "218.149.228.158" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "218.149.228.158", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184418, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26142", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YNnuUmcBTFzn_XoLDHBr", + "source": { + "@timestamp": "2018-11-27T02:09:50.722Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "26142", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "218.149.228.158" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "218.149.228.158", + "type": "user-session" + } + }, + "sequence": 184419, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YdnuUmcBTFzn_XoLDHBr", + "source": { + "@timestamp": "2018-11-27T02:09:51.346Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184420, + "result": "fail", + "session": "unset", + "data": { + "hostname": "218.149.228.158", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "218.149.228.158" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26142", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "218.149.228.158" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "79ntUmcBTFzn_XoLGltv", + "source": { + "@timestamp": "2018-11-27T02:08:48.772Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186566, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32556", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8NntUmcBTFzn_XoLGltv", + "source": { + "@timestamp": "2018-11-27T02:08:48.774Z", + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186567, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32556", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8dntUmcBTFzn_XoLGltv", + "source": { + "@timestamp": "2018-11-27T02:08:48.804Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186568, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32556", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "99ntUmcBTFzn_XoLHFsj", + "source": { + "@timestamp": "2018-11-27T02:08:49.207Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "sequence": 184409, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "145.239.82.62", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26086", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "145.239.82.62" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-NntUmcBTFzn_XoLHFsj", + "source": { + "@timestamp": "2018-11-27T02:08:49.208Z", + "auditd": { + "sequence": 184410, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "145.239.82.62", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26086", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "145.239.82.62" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-dntUmcBTFzn_XoLHFsj", + "source": { + "@timestamp": "2018-11-27T02:08:49.341Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26086" + }, + "source": { + "ip": "145.239.82.62" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "145.239.82.62", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184411, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "145.239.82.62" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNntUmcBTFzn_XoLc2Oa", + "source": { + "@timestamp": "2018-11-27T02:09:11.600Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19924", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "109.115.54.245" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142413, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "109.115.54.245", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CdntUmcBTFzn_XoLc2Oa", + "source": { + "@timestamp": "2018-11-27T02:09:11.601Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "109.115.54.245", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142414, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19924" + }, + "source": { + "ip": "109.115.54.245" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CtntUmcBTFzn_XoLc2Oa", + "source": { + "@timestamp": "2018-11-27T02:09:11.721Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19924", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "109.115.54.245" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "109.115.54.245", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "109.115.54.245", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142415 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RNnuUmcBTFzn_XoLWnfO", + "source": { + "@timestamp": "2018-11-27T02:10:10.787Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32565" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186569, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RdnuUmcBTFzn_XoLWnfO", + "source": { + "@timestamp": "2018-11-27T02:10:10.788Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186570, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32565", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RtnuUmcBTFzn_XoLWnfO", + "source": { + "@timestamp": "2018-11-27T02:10:10.819Z", + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32565", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186571, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AdntUmcBTFzn_XoLiGV_", + "source": { + "@timestamp": "2018-11-27T02:09:16.902Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19926", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "71.90.181.64" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142416, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "71.90.181.64", + "type": "user-session" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AtntUmcBTFzn_XoLiGV_", + "source": { + "@timestamp": "2018-11-27T02:09:16.903Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19926", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "71.90.181.64" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "71.90.181.64", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142417 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "A9ntUmcBTFzn_XoLiGV_", + "source": { + "@timestamp": "2018-11-27T02:09:16.974Z", + "auditd": { + "sequence": 142418, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "71.90.181.64" + }, + "summary": { + "object": { + "secondary": "71.90.181.64", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19926", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "71.90.181.64" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2tntUmcBTFzn_XoLSl-h", + "source": { + "@timestamp": "2018-11-27T02:09:01.110Z", + "event": { + "type": "user_acct", + "action": "was-authorized", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "830", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192568, + "result": "success", + "session": "unset", + "data": { + "terminal": "cron", + "op": "PAM:accounting", + "acct": "root" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "29ntUmcBTFzn_XoLSl-h", + "source": { + "@timestamp": "2018-11-27T02:09:01.110Z", + "auditd": { + "sequence": 192569, + "result": "success", + "session": "unset", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_acq" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "830", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3NntUmcBTFzn_XoLSl-h", + "source": { + "@timestamp": "2018-11-27T02:09:01.112Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "process": { + "pid": "830", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "op": "PAM:session_open", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + }, + "sequence": 192571, + "result": "success", + "session": "9864" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_start", + "action": "started-session" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3dntUmcBTFzn_XoLSl-h", + "source": { + "@timestamp": "2018-11-27T02:09:01.215Z", + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "process": { + "pid": "830", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 192572, + "result": "success", + "session": "9864", + "data": { + "op": "PAM:setcred", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3tntUmcBTFzn_XoLSl-h", + "source": { + "@timestamp": "2018-11-27T02:09:01.216Z", + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "830", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "op": "PAM:session_close", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192573, + "result": "success", + "session": "9864" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "ended-session", + "module": "auditd", + "category": "user-login", + "type": "user_end" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_dntUmcBTFzn_XoLTV_Y", + "source": { + "@timestamp": "2018-11-27T02:09:01.933Z", + "event": { + "category": "user-login", + "type": "user_acct", + "action": "was-authorized", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "26094", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 184412, + "result": "success", + "session": "unset", + "data": { + "terminal": "cron", + "op": "PAM:accounting", + "acct": "root" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_tntUmcBTFzn_XoLTV_Y", + "source": { + "@timestamp": "2018-11-27T02:09:01.933Z", + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26094", + "exe": "/usr/sbin/cron" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184413, + "result": "success", + "session": "unset", + "data": { + "terminal": "cron", + "op": "PAM:setcred", + "acct": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_9ntUmcBTFzn_XoLTV_Y", + "source": { + "@timestamp": "2018-11-27T02:09:01.935Z", + "auditd": { + "result": "success", + "session": "9860", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:session_open" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184415 + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "started-session", + "module": "auditd", + "category": "user-login", + "type": "user_start" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "process": { + "pid": "26094", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ANntUmcBTFzn_XoLTWDY", + "source": { + "@timestamp": "2018-11-27T02:09:02.034Z", + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "session": "9860", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:setcred" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + }, + "sequence": 184416, + "result": "success" + }, + "event": { + "action": "disposed-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_disp" + }, + "user": { + "uid": "0", + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + } + }, + "process": { + "pid": "26094", + "exe": "/usr/sbin/cron" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AdntUmcBTFzn_XoLTWDY", + "source": { + "@timestamp": "2018-11-27T02:09:02.035Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_end", + "action": "ended-session" + }, + "user": { + "name_map": { + "uid": "root", + "auid": "root" + }, + "auid": "0", + "uid": "0" + }, + "process": { + "pid": "26094", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:session_close" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + } + }, + "sequence": 184417, + "result": "success", + "session": "9860" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "odnuUmcBTFzn_XoLa3iq", + "source": { + "@timestamp": "2018-11-27T02:10:15.075Z", + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "185.244.25.108" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 44240, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30401" + }, + "source": { + "ip": "185.244.25.108" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "otnuUmcBTFzn_XoLa3iq", + "source": { + "@timestamp": "2018-11-27T02:10:15.075Z", + "process": { + "pid": "30401", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "185.244.25.108" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "185.244.25.108", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44241, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "o9nuUmcBTFzn_XoLa3iq", + "source": { + "@timestamp": "2018-11-27T02:10:15.175Z", + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "data": { + "hostname": "185.244.25.108", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "185.244.25.108", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44242, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "30401", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.244.25.108" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "z9nuUmcBTFzn_XoLh3rt", + "source": { + "@timestamp": "2018-11-27T02:10:22.335Z", + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "146.196.59.36", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 44243, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "30405", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "146.196.59.36" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0NnuUmcBTFzn_XoLh3rt", + "source": { + "@timestamp": "2018-11-27T02:10:22.335Z", + "source": { + "ip": "146.196.59.36" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "146.196.59.36" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44244 + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "30405", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0dnuUmcBTFzn_XoLh3rt", + "source": { + "@timestamp": "2018-11-27T02:10:22.583Z", + "process": { + "pid": "30405", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "146.196.59.36" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44245, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "146.196.59.36", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "146.196.59.36" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9tnuUmcBTFzn_XoLM3ME", + "source": { + "@timestamp": "2018-11-27T02:10:00.602Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "file_integrity", + "action": [ + "created" + ] + }, + "file": { + "size": 0, + "type": "file", + "uid": 0, + "owner": "root", + "group": "root", + "mode": "0000", + "mtime": "2018-11-27T02:10:00.596Z", + "gid": 0, + "inode": "185", + "path": "/etc/sed6b0EHM", + "ctime": "2018-11-27T02:10:00.596Z" + }, + "hash": { + "sha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "99nuUmcBTFzn_XoLM3ME", + "source": { + "@timestamp": "2018-11-27T02:10:00.603Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "event": { + "module": "file_integrity", + "action": [ + "updated" + ] + }, + "file": { + "inode": "185", + "size": 50, + "type": "file", + "uid": 0, + "owner": "root", + "mode": "0000", + "path": "/etc/sed6b0EHM", + "group": "root", + "mtime": "2018-11-27T02:10:00.600Z", + "ctime": "2018-11-27T02:10:00.600Z", + "gid": 0 + }, + "hash": { + "sha1": "58a8b2bb04893785eb5a48598a16a3fa8ad2fa36" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-NnuUmcBTFzn_XoLM3ME", + "source": { + "@timestamp": "2018-11-27T02:10:00.605Z", + "file": { + "path": "/etc/sed6b0EHM" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "file_integrity", + "action": [ + "attributes_modified" + ] + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-dnuUmcBTFzn_XoLM3ME", + "source": { + "@timestamp": "2018-11-27T02:10:00.606Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "file_integrity", + "action": [ + "moved" + ] + }, + "file": { + "path": "/etc/sed6b0EHM" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-tnuUmcBTFzn_XoLM3ME", + "source": { + "@timestamp": "2018-11-27T02:10:00.607Z", + "event": { + "action": [ + "created" + ], + "module": "file_integrity" + }, + "file": { + "owner": "root", + "uid": 0, + "mode": "0644", + "inode": "185", + "mtime": "2018-11-27T02:10:00.600Z", + "gid": 0, + "group": "root", + "path": "/etc/hosts", + "ctime": "2018-11-27T02:10:00.600Z", + "type": "file", + "size": 205 + }, + "hash": { + "sha1": "5a4ccf92aa02bc100c5b20faeed3691286e039e5" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VdnzUmcBTFzn_XoLR-PG", + "source": { + "@timestamp": "2018-11-27T02:15:33.590Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "51.75.23.199", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43238 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13014", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.75.23.199" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VtnzUmcBTFzn_XoLR-PG", + "source": { + "@timestamp": "2018-11-27T02:15:33.590Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13014" + }, + "source": { + "ip": "51.75.23.199" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43239, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "51.75.23.199", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "V9nzUmcBTFzn_XoLR-PG", + "source": { + "@timestamp": "2018-11-27T02:15:33.702Z", + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "13014", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.75.23.199" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "51.75.23.199", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43240, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "51.75.23.199" + } + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3tnzUmcBTFzn_XoLUOOL", + "source": { + "@timestamp": "2018-11-27T02:15:35.841Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "939" + }, + "source": { + "ip": "181.28.191.54" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "181.28.191.54", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192586, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "39nzUmcBTFzn_XoLUOOL", + "source": { + "@timestamp": "2018-11-27T02:15:35.843Z", + "auditd": { + "sequence": 192587, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "181.28.191.54", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "939" + }, + "source": { + "ip": "181.28.191.54" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4NnzUmcBTFzn_XoLUOOL", + "source": { + "@timestamp": "2018-11-27T02:15:36.030Z", + "auditd": { + "sequence": 192588, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "181.28.191.54", + "terminal": "ssh" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "181.28.191.54" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "939", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "181.28.191.54" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-NnxUmcBTFzn_XoLYbnr", + "source": { + "@timestamp": "2018-11-27T02:13:29.217Z", + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "180.76.239.66" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 184427, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26172" + }, + "source": { + "ip": "180.76.239.66" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-dnxUmcBTFzn_XoLYbnr", + "source": { + "@timestamp": "2018-11-27T02:13:29.218Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "26172", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "180.76.239.66" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "180.76.239.66" + } + }, + "sequence": 184428, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-tnxUmcBTFzn_XoLYbnr", + "source": { + "@timestamp": "2018-11-27T02:13:29.430Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184429, + "result": "fail", + "session": "unset", + "data": { + "hostname": "180.76.239.66", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "180.76.239.66", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "26172", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "180.76.239.66" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "H9nxUmcBTFzn_XoLY7rL", + "source": { + "@timestamp": "2018-11-27T02:13:29.694Z", + "process": { + "pid": "30475", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.43.198" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44252, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "164.132.43.198", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "INnxUmcBTFzn_XoLY7rL", + "source": { + "@timestamp": "2018-11-27T02:13:29.694Z", + "source": { + "ip": "164.132.43.198" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "164.132.43.198", + "type": "user-session" + } + }, + "sequence": 44253, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "30475", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "IdnxUmcBTFzn_XoLY7rL", + "source": { + "@timestamp": "2018-11-27T02:13:29.798Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "30475", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.43.198" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "164.132.43.198", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "164.132.43.198", + "type": "user-session" + } + }, + "sequence": 44254 + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LtnwUmcBTFzn_XoL5q-R", + "source": { + "@timestamp": "2018-11-27T02:12:57.636Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32583" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186578, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "L9nwUmcBTFzn_XoL5q-R", + "source": { + "@timestamp": "2018-11-27T02:12:57.638Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186579 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32583", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MNnwUmcBTFzn_XoL5q-R", + "source": { + "@timestamp": "2018-11-27T02:12:57.669Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186580 + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32583", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ctnyUmcBTFzn_XoLDsgI", + "source": { + "@timestamp": "2018-11-27T02:14:13.278Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32591" + }, + "source": { + "ip": "182.61.32.147" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186581, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "182.61.32.147" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9nyUmcBTFzn_XoLDsgI", + "source": { + "@timestamp": "2018-11-27T02:14:13.279Z", + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "182.61.32.147", + "type": "user-session" + } + }, + "sequence": 186582, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32591" + }, + "source": { + "ip": "182.61.32.147" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dNnyUmcBTFzn_XoLDsgI", + "source": { + "@timestamp": "2018-11-27T02:14:13.485Z", + "source": { + "ip": "182.61.32.147" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186583, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "182.61.32.147" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "182.61.32.147", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32591" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "M9nyUmcBTFzn_XoLLcvi", + "source": { + "@timestamp": "2018-11-27T02:14:21.431Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186584, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32593" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NNnyUmcBTFzn_XoLLcvi", + "source": { + "@timestamp": "2018-11-27T02:14:21.432Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + } + }, + "sequence": 186585, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32593", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NdnyUmcBTFzn_XoLLcvi", + "source": { + "@timestamp": "2018-11-27T02:14:21.462Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186586, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32593", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NdnxUmcBTFzn_XoL1sT3", + "source": { + "@timestamp": "2018-11-27T02:13:59.181Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "924", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "201.155.38.30" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "201.155.38.30" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 192580, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NtnxUmcBTFzn_XoL1sT3", + "source": { + "@timestamp": "2018-11-27T02:13:59.183Z", + "source": { + "ip": "201.155.38.30" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "201.155.38.30", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 192581, + "result": "fail" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "924", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "N9nxUmcBTFzn_XoL1sT3", + "source": { + "@timestamp": "2018-11-27T02:13:59.755Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "924", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "201.155.38.30" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "201.155.38.30" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "201.155.38.30" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192582, + "result": "fail", + "session": "unset" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "I9nxUmcBTFzn_XoL58U9", + "source": { + "@timestamp": "2018-11-27T02:14:03.342Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13001" + }, + "source": { + "ip": "137.74.199.177" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43235, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "137.74.199.177" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JNnxUmcBTFzn_XoL58U9", + "source": { + "@timestamp": "2018-11-27T02:14:03.342Z", + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13001", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "137.74.199.177" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43236, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "137.74.199.177", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JdnxUmcBTFzn_XoL58U9", + "source": { + "@timestamp": "2018-11-27T02:14:03.458Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "137.74.199.177", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "137.74.199.177", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43237, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13001" + }, + "source": { + "ip": "137.74.199.177" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jNnzUmcBTFzn_XoLLeBy", + "source": { + "@timestamp": "2018-11-27T02:15:26.857Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "937", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "190.0.10.138" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "190.0.10.138", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192583, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jdnzUmcBTFzn_XoLLeBy", + "source": { + "@timestamp": "2018-11-27T02:15:26.858Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "937", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "190.0.10.138" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "190.0.10.138" + } + }, + "sequence": 192584, + "result": "fail" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jtnzUmcBTFzn_XoLLeBy", + "source": { + "@timestamp": "2018-11-27T02:15:26.950Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "937", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "190.0.10.138" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "190.0.10.138" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "190.0.10.138", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192585 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "n9nzUmcBTFzn_XoLXeXh", + "source": { + "@timestamp": "2018-11-27T02:15:39.252Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "142.93.18.15" + } + }, + "sequence": 44255, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "30517", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "142.93.18.15" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "oNnzUmcBTFzn_XoLXeXh", + "source": { + "@timestamp": "2018-11-27T02:15:39.252Z", + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30517", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "142.93.18.15" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "142.93.18.15", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 44256 + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "odnzUmcBTFzn_XoLXeXh", + "source": { + "@timestamp": "2018-11-27T02:15:39.292Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "30517", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "142.93.18.15" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "142.93.18.15", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44257, + "result": "fail", + "session": "unset", + "data": { + "hostname": "142.93.18.15", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Utr3UmcBTFzn_XoLVD0D", + "source": { + "@timestamp": "2018-11-27T02:19:58.873Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "secondary": "164.132.197.108", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 184439, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26214", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.197.108" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "U9r3UmcBTFzn_XoLVD0D", + "source": { + "@timestamp": "2018-11-27T02:19:58.874Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "26214", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.197.108" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "164.132.197.108", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184440 + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VNr3UmcBTFzn_XoLVD0D", + "source": { + "@timestamp": "2018-11-27T02:19:58.986Z", + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "164.132.197.108" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "164.132.197.108", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184441, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26214", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.197.108" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ltr3UmcBTFzn_XoLWD2x", + "source": { + "@timestamp": "2018-11-27T02:20:00.071Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32625", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186602, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "l9r3UmcBTFzn_XoLWD2x", + "source": { + "@timestamp": "2018-11-27T02:20:00.072Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186603, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32625", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mNr3UmcBTFzn_XoLWD2x", + "source": { + "@timestamp": "2018-11-27T02:20:00.103Z", + "process": { + "pid": "32625", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 186604, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "htr4UmcBTFzn_XoLpVlZ", + "source": { + "@timestamp": "2018-11-27T02:21:25.223Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "37.195.105.57" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43262, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "13059", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.195.105.57" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "h9r4UmcBTFzn_XoLpVlZ", + "source": { + "@timestamp": "2018-11-27T02:21:25.227Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "13059", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.195.105.57" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "37.195.105.57", + "type": "user-session" + } + }, + "sequence": 43263, + "result": "fail" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "iNr4UmcBTFzn_XoLpVlZ", + "source": { + "@timestamp": "2018-11-27T02:21:25.431Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13059", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.195.105.57" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "sequence": 43264, + "result": "fail", + "session": "unset", + "data": { + "hostname": "37.195.105.57", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "37.195.105.57", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "idr4UmcBTFzn_XoLpVnm", + "source": { + "@timestamp": "2018-11-27T02:21:25.372Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32633" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186605, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "itr4UmcBTFzn_XoLpVnm", + "source": { + "@timestamp": "2018-11-27T02:21:25.373Z", + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186606, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32633", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "i9r4UmcBTFzn_XoLpVnm", + "source": { + "@timestamp": "2018-11-27T02:21:25.404Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32633", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 186607, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6Nr4UmcBTFzn_XoL4l6d", + "source": { + "@timestamp": "2018-11-27T02:21:40.914Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "20001", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.62.233.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142431, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "82.62.233.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dr4UmcBTFzn_XoL4l6d", + "source": { + "@timestamp": "2018-11-27T02:21:40.915Z", + "process": { + "pid": "20001", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "82.62.233.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "82.62.233.163", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142432, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6tr4UmcBTFzn_XoL4l6d", + "source": { + "@timestamp": "2018-11-27T02:21:41.064Z", + "source": { + "ip": "82.62.233.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "82.62.233.163" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "82.62.233.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142433, + "result": "fail" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "20001", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Xtr5UmcBTFzn_XoL9Ha7", + "source": { + "@timestamp": "2018-11-27T02:22:51.088Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32641" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186608, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "X9r5UmcBTFzn_XoL9Ha7", + "source": { + "@timestamp": "2018-11-27T02:22:51.090Z", + "auditd": { + "sequence": 186609, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32641", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YNr5UmcBTFzn_XoL9Ha7", + "source": { + "@timestamp": "2018-11-27T02:22:51.120Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32641", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186610, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "107.170.65.109" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZNr5UmcBTFzn_XoL03NO", + "source": { + "@timestamp": "2018-11-27T02:22:42.532Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "104.248.11.46", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 192601 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "986", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.248.11.46" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Zdr5UmcBTFzn_XoL03NO", + "source": { + "@timestamp": "2018-11-27T02:22:42.533Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "986" + }, + "source": { + "ip": "104.248.11.46" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "104.248.11.46", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192602 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ztr5UmcBTFzn_XoL03NO", + "source": { + "@timestamp": "2018-11-27T02:22:42.564Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "986" + }, + "source": { + "ip": "104.248.11.46" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "104.248.11.46", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "104.248.11.46", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192603, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Xdr5UmcBTFzn_XoL23R3", + "source": { + "@timestamp": "2018-11-27T02:22:44.622Z", + "source": { + "ip": "91.67.54.251" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "91.67.54.251" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192604, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "988", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Xtr5UmcBTFzn_XoL23R3", + "source": { + "@timestamp": "2018-11-27T02:22:44.623Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "988", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.67.54.251" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "sequence": 192605, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "91.67.54.251", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "X9r5UmcBTFzn_XoL23R3", + "source": { + "@timestamp": "2018-11-27T02:22:44.754Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "988", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.67.54.251" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "91.67.54.251" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "91.67.54.251", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192606, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "INr4UmcBTFzn_XoLPlHT", + "source": { + "@timestamp": "2018-11-27T02:20:58.980Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30623" + }, + "source": { + "ip": "35.189.59.154" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "35.189.59.154", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 44267, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Idr4UmcBTFzn_XoLPlHT", + "source": { + "@timestamp": "2018-11-27T02:20:58.980Z", + "source": { + "ip": "35.189.59.154" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "35.189.59.154" + } + }, + "sequence": 44268, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "30623", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Itr4UmcBTFzn_XoLPlHT", + "source": { + "@timestamp": "2018-11-27T02:20:59.156Z", + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "35.189.59.154", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "35.189.59.154", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44269 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "30623", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "35.189.59.154" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7Nr3UmcBTFzn_XoLyEYO", + "source": { + "@timestamp": "2018-11-27T02:20:28.574Z", + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30616" + }, + "source": { + "ip": "91.196.149.76" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44264, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "91.196.149.76", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7dr3UmcBTFzn_XoLyEYO", + "source": { + "@timestamp": "2018-11-27T02:20:28.574Z", + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "91.196.149.76", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44265, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30616" + }, + "source": { + "ip": "91.196.149.76" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7tr3UmcBTFzn_XoLyEYO", + "source": { + "@timestamp": "2018-11-27T02:20:28.710Z", + "process": { + "pid": "30616", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.196.149.76" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "91.196.149.76" + }, + "summary": { + "object": { + "secondary": "91.196.149.76", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 44266, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "str3UmcBTFzn_XoLOzru", + "source": { + "@timestamp": "2018-11-27T02:19:52.704Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13051", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "193.70.38.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43259, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "193.70.38.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "s9r3UmcBTFzn_XoLOzru", + "source": { + "@timestamp": "2018-11-27T02:19:52.704Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "13051", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "193.70.38.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "193.70.38.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43260, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "tNr3UmcBTFzn_XoLOzru", + "source": { + "@timestamp": "2018-11-27T02:19:52.820Z", + "process": { + "pid": "13051", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "193.70.38.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "193.70.38.229" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "193.70.38.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43261, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "O9r9UmcBTFzn_XoL4syL", + "source": { + "@timestamp": "2018-11-27T02:27:08.552Z", + "source": { + "ip": "150.95.110.147" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "150.95.110.147", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43265, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "13101", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PNr9UmcBTFzn_XoL4syL", + "source": { + "@timestamp": "2018-11-27T02:27:08.552Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13101", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "150.95.110.147" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "150.95.110.147", + "type": "user-session" + } + }, + "sequence": 43266 + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Pdr9UmcBTFzn_XoL4syL", + "source": { + "@timestamp": "2018-11-27T02:27:08.760Z", + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "150.95.110.147" + }, + "summary": { + "object": { + "secondary": "150.95.110.147", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 43267, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13101" + }, + "source": { + "ip": "150.95.110.147" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5tr9UmcBTFzn_XoL7Mz5", + "source": { + "@timestamp": "2018-11-27T02:27:11.246Z", + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186617, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32666" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "59r9UmcBTFzn_XoL7Mz5", + "source": { + "@timestamp": "2018-11-27T02:27:11.247Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32666" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186618, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6Nr9UmcBTFzn_XoL7Mz5", + "source": { + "@timestamp": "2018-11-27T02:27:11.279Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32666", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186619, + "result": "fail" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qtr7UmcBTFzn_XoLqZv2", + "source": { + "@timestamp": "2018-11-27T02:24:43.020Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "134.175.33.189" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142434 + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "20021", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "134.175.33.189" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "q9r7UmcBTFzn_XoLqZv2", + "source": { + "@timestamp": "2018-11-27T02:24:43.021Z", + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "134.175.33.189", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142435, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "20021", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "134.175.33.189" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rNr7UmcBTFzn_XoLqZv2", + "source": { + "@timestamp": "2018-11-27T02:24:43.229Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142436, + "result": "fail", + "session": "unset", + "data": { + "hostname": "134.175.33.189", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "134.175.33.189", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "20021" + }, + "source": { + "ip": "134.175.33.189" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "V9r7UmcBTFzn_XoLRZIS", + "source": { + "@timestamp": "2018-11-27T02:24:17.192Z", + "process": { + "pid": "32649", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186611, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WNr7UmcBTFzn_XoLRZIS", + "source": { + "@timestamp": "2018-11-27T02:24:17.193Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 186612, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32649", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Wdr7UmcBTFzn_XoLRZIS", + "source": { + "@timestamp": "2018-11-27T02:24:17.223Z", + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32649", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186613, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "tdr8UmcBTFzn_XoLmK-a", + "source": { + "@timestamp": "2018-11-27T02:25:44.112Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186614 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32658", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ttr8UmcBTFzn_XoLmK-a", + "source": { + "@timestamp": "2018-11-27T02:25:44.114Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186615, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32658" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "t9r8UmcBTFzn_XoLmK-a", + "source": { + "@timestamp": "2018-11-27T02:25:44.144Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186616 + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32658", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Kdr8UmcBTFzn_XoL8rcs", + "source": { + "@timestamp": "2018-11-27T02:26:07.005Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "1003", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "144.217.12.168" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "144.217.12.168", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 192607, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ktr8UmcBTFzn_XoL8rcs", + "source": { + "@timestamp": "2018-11-27T02:26:07.006Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "1003", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "144.217.12.168" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "144.217.12.168", + "type": "user-session" + } + }, + "sequence": 192608 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "K9r8UmcBTFzn_XoL8rcs", + "source": { + "@timestamp": "2018-11-27T02:26:07.048Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1003", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "144.217.12.168" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "144.217.12.168", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "144.217.12.168", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192609 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dr7UmcBTFzn_XoLa5XB", + "source": { + "@timestamp": "2018-11-27T02:24:27.095Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26248", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.138.6.50" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "159.138.6.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184442, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6tr7UmcBTFzn_XoLa5XB", + "source": { + "@timestamp": "2018-11-27T02:24:27.096Z", + "process": { + "pid": "26248", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.138.6.50" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184443, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "159.138.6.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "69r7UmcBTFzn_XoLa5XB", + "source": { + "@timestamp": "2018-11-27T02:24:27.306Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26248", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.138.6.50" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "159.138.6.50", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "159.138.6.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 184444, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mdr9UmcBTFzn_XoLS7_z", + "source": { + "@timestamp": "2018-11-27T02:26:30.024Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.33.228.67", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192610, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "1010", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.228.67" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mtr9UmcBTFzn_XoLS7_z", + "source": { + "@timestamp": "2018-11-27T02:26:30.025Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1010", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.228.67" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "178.33.228.67", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192611, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "m9r9UmcBTFzn_XoLS7_z", + "source": { + "@timestamp": "2018-11-27T02:26:30.133Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "178.33.228.67", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "178.33.228.67", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192612, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1010" + }, + "source": { + "ip": "178.33.228.67" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Gdr-UmcBTFzn_XoLHdFd", + "source": { + "@timestamp": "2018-11-27T02:27:23.630Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "213.34.172.74", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44273 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30753" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "213.34.172.74" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Gtr-UmcBTFzn_XoLHdFd", + "source": { + "@timestamp": "2018-11-27T02:27:23.634Z", + "source": { + "ip": "213.34.172.74" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "213.34.172.74", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44274 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30753" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "G9r-UmcBTFzn_XoLHdFd", + "source": { + "@timestamp": "2018-11-27T02:27:23.758Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30753", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "213.34.172.74" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44275, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "213.34.172.74", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "213.34.172.74", + "type": "user-session" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "o9r7UmcBTFzn_XoLJpB1", + "source": { + "@timestamp": "2018-11-27T02:24:09.351Z", + "process": { + "pid": "30690", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "175.205.114.52" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "175.205.114.52", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44270 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "pNr7UmcBTFzn_XoLJpB1", + "source": { + "@timestamp": "2018-11-27T02:24:09.351Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "175.205.114.52", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44271, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30690", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "175.205.114.52" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "pdr7UmcBTFzn_XoLJpB1", + "source": { + "@timestamp": "2018-11-27T02:24:09.523Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "175.205.114.52" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "175.205.114.52", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44272 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30690" + }, + "source": { + "ip": "175.205.114.52" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3NsDU2cBTFzn_XoLlEgC", + "source": { + "@timestamp": "2018-11-27T02:33:21.687Z", + "auditd": { + "sequence": 186632, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "92.86.47.26", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "92.86.47.26" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32702", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "92.86.47.26" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "a9sDU2cBTFzn_XoLmUlp", + "source": { + "@timestamp": "2018-11-27T02:33:23.071Z", + "auditd": { + "sequence": 192616, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "145.239.137.89" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1048" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "145.239.137.89" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bNsDU2cBTFzn_XoLmUlp", + "source": { + "@timestamp": "2018-11-27T02:33:23.072Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "1048", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "145.239.137.89" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "145.239.137.89", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192617 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bdsDU2cBTFzn_XoLmUlp", + "source": { + "@timestamp": "2018-11-27T02:33:23.187Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "145.239.137.89", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "145.239.137.89" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192618, + "result": "fail" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "1048", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "145.239.137.89" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "f9sDU2cBTFzn_XoLp0rb", + "source": { + "@timestamp": "2018-11-27T02:33:26.769Z", + "auditd": { + "sequence": 142437, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "115.113.54.122", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "20065", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "115.113.54.122" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gNsDU2cBTFzn_XoLp0rb", + "source": { + "@timestamp": "2018-11-27T02:33:26.771Z", + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "115.113.54.122", + "type": "user-session" + } + }, + "sequence": 142438, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "process": { + "pid": "20065", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "115.113.54.122" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gdsDU2cBTFzn_XoLp0rb", + "source": { + "@timestamp": "2018-11-27T02:33:27.053Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "20065", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "115.113.54.122" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "115.113.54.122", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "115.113.54.122", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142439, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "J9sGU2cBTFzn_XoLiIku", + "source": { + "@timestamp": "2018-11-27T02:36:35.268Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "26335", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.59.9.162" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "37.59.9.162" + } + }, + "sequence": 184445 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KNsGU2cBTFzn_XoLiIku", + "source": { + "@timestamp": "2018-11-27T02:36:35.269Z", + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26335" + }, + "source": { + "ip": "37.59.9.162" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "37.59.9.162" + } + }, + "sequence": 184446 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KdsGU2cBTFzn_XoLiIku", + "source": { + "@timestamp": "2018-11-27T02:36:35.380Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "26335", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.59.9.162" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "37.59.9.162", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184447, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "37.59.9.162", + "terminal": "ssh" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "uNsFU2cBTFzn_XoLNGx8", + "source": { + "@timestamp": "2018-11-27T02:35:08.305Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "81.174.25.52" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "81.174.25.52" + } + }, + "sequence": 192619 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "1062", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "udsFU2cBTFzn_XoLNGx8", + "source": { + "@timestamp": "2018-11-27T02:35:08.307Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "1062", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.174.25.52" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192620, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "81.174.25.52" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "utsFU2cBTFzn_XoLNGx8", + "source": { + "@timestamp": "2018-11-27T02:35:08.440Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "81.174.25.52" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "81.174.25.52", + "type": "user-session" + } + }, + "sequence": 192621 + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "1062", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.174.25.52" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "yNsFU2cBTFzn_XoLA2fV", + "source": { + "@timestamp": "2018-11-27T02:34:55.845Z", + "source": { + "ip": "74.208.43.208" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "74.208.43.208", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 44282, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30899" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ydsFU2cBTFzn_XoLA2fV", + "source": { + "@timestamp": "2018-11-27T02:34:55.849Z", + "source": { + "ip": "74.208.43.208" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "74.208.43.208", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44283, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30899", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ytsFU2cBTFzn_XoLA2fV", + "source": { + "@timestamp": "2018-11-27T02:34:55.873Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30899" + }, + "source": { + "ip": "74.208.43.208" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "74.208.43.208", + "terminal": "ssh" + }, + "summary": { + "object": { + "secondary": "74.208.43.208", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44284 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vNsHU2cBTFzn_XoLOZig", + "source": { + "@timestamp": "2018-11-27T02:37:20.688Z", + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "30953", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "87.249.215.83" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44289, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "87.249.215.83" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vdsHU2cBTFzn_XoLOZig", + "source": { + "@timestamp": "2018-11-27T02:37:20.688Z", + "source": { + "ip": "87.249.215.83" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "87.249.215.83", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 44290, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30953" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vtsHU2cBTFzn_XoLOZig", + "source": { + "@timestamp": "2018-11-27T02:37:20.864Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "30953", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "87.249.215.83" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "87.249.215.83" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "87.249.215.83" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44291, + "result": "fail" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MtsEU2cBTFzn_XoLzWOC", + "source": { + "@timestamp": "2018-11-27T02:34:41.940Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "30892", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "175.116.217.13" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "175.116.217.13", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44279, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "M9sEU2cBTFzn_XoLzWOC", + "source": { + "@timestamp": "2018-11-27T02:34:41.944Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "30892", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "175.116.217.13" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "175.116.217.13", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 44280, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NNsEU2cBTFzn_XoLzWOC", + "source": { + "@timestamp": "2018-11-27T02:34:42.116Z", + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "175.116.217.13" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "175.116.217.13", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44281, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "30892", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "175.116.217.13" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "59sHU2cBTFzn_XoLBZOc", + "source": { + "@timestamp": "2018-11-27T02:37:07.375Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "30947", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "45.55.190.46" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "45.55.190.46" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44286 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6NsHU2cBTFzn_XoLBZOc", + "source": { + "@timestamp": "2018-11-27T02:37:07.375Z", + "auditd": { + "sequence": 44287, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "45.55.190.46", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "30947", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "45.55.190.46" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dsHU2cBTFzn_XoLBZOc", + "source": { + "@timestamp": "2018-11-27T02:37:07.407Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "45.55.190.46" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "45.55.190.46", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "45.55.190.46", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44288 + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "30947", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Y9sGU2cBTFzn_XoL6ZGy", + "source": { + "@timestamp": "2018-11-27T02:37:00.227Z", + "source": { + "ip": "103.48.12.177" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44285, + "result": "fail", + "session": "unset", + "data": { + "hostname": "103.48.12.177", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "103.48.12.177" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "30943", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JNsJU2cBTFzn_XoLCcBJ", + "source": { + "@timestamp": "2018-11-27T02:39:19.382Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "secondary": "167.99.84.229", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 43278, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13175", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "167.99.84.229" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JdsJU2cBTFzn_XoLCcBJ", + "source": { + "@timestamp": "2018-11-27T02:39:19.386Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13175" + }, + "source": { + "ip": "167.99.84.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43279, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "167.99.84.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JtsJU2cBTFzn_XoLCcBJ", + "source": { + "@timestamp": "2018-11-27T02:39:19.486Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13175" + }, + "source": { + "ip": "167.99.84.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "167.99.84.229", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "167.99.84.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 43280, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "J9sJU2cBTFzn_XoLCcCX", + "source": { + "@timestamp": "2018-11-27T02:39:19.468Z", + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "89.223.28.0", + "type": "user-session" + } + }, + "sequence": 184454, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "26405", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.223.28.0" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KNsJU2cBTFzn_XoLCcCX", + "source": { + "@timestamp": "2018-11-27T02:39:19.469Z", + "source": { + "ip": "89.223.28.0" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "89.223.28.0", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184455 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26405", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KdsJU2cBTFzn_XoLCcCX", + "source": { + "@timestamp": "2018-11-27T02:39:19.630Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26405" + }, + "source": { + "ip": "89.223.28.0" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "89.223.28.0", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "89.223.28.0", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184456, + "result": "fail" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7dsJU2cBTFzn_XoLVsZ3", + "source": { + "@timestamp": "2018-11-27T02:39:39.149Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "188.166.58.40", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192640, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "1141", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "188.166.58.40" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7tsJU2cBTFzn_XoLVsZ3", + "source": { + "@timestamp": "2018-11-27T02:39:39.150Z", + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "188.166.58.40", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192641, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1141", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "188.166.58.40" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "79sJU2cBTFzn_XoLVsZ3", + "source": { + "@timestamp": "2018-11-27T02:39:39.256Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1141" + }, + "source": { + "ip": "188.166.58.40" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "188.166.58.40", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "188.166.58.40", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192642 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KtsJU2cBTFzn_XoLWMfm", + "source": { + "@timestamp": "2018-11-27T02:39:39.771Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "139.59.171.172", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44295 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "31024", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.59.171.172" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "K9sJU2cBTFzn_XoLWMfm", + "source": { + "@timestamp": "2018-11-27T02:39:39.771Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31024", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.59.171.172" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "139.59.171.172" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 44296, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LNsJU2cBTFzn_XoLWMfm", + "source": { + "@timestamp": "2018-11-27T02:39:39.863Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31024", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.59.171.172" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "139.59.171.172", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "139.59.171.172" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44297, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HNsIU2cBTFzn_XoLc7MQ", + "source": { + "@timestamp": "2018-11-27T02:38:40.934Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1086" + }, + "source": { + "ip": "139.99.168.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "139.99.168.192", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192628, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HdsIU2cBTFzn_XoLc7MQ", + "source": { + "@timestamp": "2018-11-27T02:38:40.935Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "1086", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.99.168.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "139.99.168.192" + } + }, + "sequence": 192629, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HtsIU2cBTFzn_XoLc7MQ", + "source": { + "@timestamp": "2018-11-27T02:38:41.215Z", + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "139.99.168.192", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "139.99.168.192", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192630, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "1086", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.99.168.192" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "nNsJU2cBTFzn_XoLTcVS", + "source": { + "@timestamp": "2018-11-27T02:39:36.808Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "1139", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "52.60.179.151" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "52.60.179.151", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192637, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ndsJU2cBTFzn_XoLTcVS", + "source": { + "@timestamp": "2018-11-27T02:39:36.809Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "52.60.179.151", + "type": "user-session" + } + }, + "sequence": 192638, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "1139", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "52.60.179.151" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ntsJU2cBTFzn_XoLTcVS", + "source": { + "@timestamp": "2018-11-27T02:39:36.855Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "52.60.179.151" + }, + "summary": { + "object": { + "secondary": "52.60.179.151", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192639, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "1139", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "52.60.179.151" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sNsHU2cBTFzn_XoLr6LF", + "source": { + "@timestamp": "2018-11-27T02:37:50.939Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1076", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.187.114.136" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "37.187.114.136", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 192622 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sdsHU2cBTFzn_XoLr6LF", + "source": { + "@timestamp": "2018-11-27T02:37:50.940Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "37.187.114.136", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192623 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1076", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.187.114.136" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "stsHU2cBTFzn_XoLr6LF", + "source": { + "@timestamp": "2018-11-27T02:37:51.046Z", + "auditd": { + "sequence": 192624, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "37.187.114.136", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "37.187.114.136" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "1076", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.187.114.136" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "M9sIU2cBTFzn_XoLPq6w", + "source": { + "@timestamp": "2018-11-27T02:38:27.526Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "1084", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "85.214.81.104" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "85.214.81.104", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192625, + "result": "fail" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NNsIU2cBTFzn_XoLPq6w", + "source": { + "@timestamp": "2018-11-27T02:38:27.527Z", + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "85.214.81.104" + } + }, + "sequence": 192626, + "result": "fail" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1084", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "85.214.81.104" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NdsIU2cBTFzn_XoLPq6w", + "source": { + "@timestamp": "2018-11-27T02:38:27.644Z", + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1084" + }, + "source": { + "ip": "85.214.81.104" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "85.214.81.104", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "85.214.81.104", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 192627, + "result": "fail" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "N9sJU2cBTFzn_XoLm8zp", + "source": { + "@timestamp": "2018-11-27T02:39:56.927Z", + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "13.66.193.177", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186633, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "32736", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "13.66.193.177" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ONsJU2cBTFzn_XoLm8zp", + "source": { + "@timestamp": "2018-11-27T02:39:56.928Z", + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "13.66.193.177", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186634, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32736", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "13.66.193.177" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "OdsJU2cBTFzn_XoLm8zp", + "source": { + "@timestamp": "2018-11-27T02:39:56.989Z", + "source": { + "ip": "13.66.193.177" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186635, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "13.66.193.177" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "13.66.193.177" + } + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "32736", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "btsHU2cBTFzn_XoLaZwR", + "source": { + "@timestamp": "2018-11-27T02:37:32.833Z", + "source": { + "ip": "36.67.135.42" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "36.67.135.42", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44292 + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30958" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "b9sHU2cBTFzn_XoLaZwR", + "source": { + "@timestamp": "2018-11-27T02:37:32.837Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30958" + }, + "source": { + "ip": "36.67.135.42" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "36.67.135.42", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44293 + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cNsHU2cBTFzn_XoLaZwR", + "source": { + "@timestamp": "2018-11-27T02:37:33.045Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44294, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "36.67.135.42", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "36.67.135.42", + "type": "user-session" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "30958", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "36.67.135.42" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XNsIU2cBTFzn_XoLwbmn", + "source": { + "@timestamp": "2018-11-27T02:39:01.052Z", + "auditd": { + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184448 + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_acct", + "action": "was-authorized", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "26360", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XdsIU2cBTFzn_XoLwbmn", + "source": { + "@timestamp": "2018-11-27T02:39:01.052Z", + "process": { + "pid": "26360", + "exe": "/usr/sbin/cron" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:setcred" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 184449, + "result": "success" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XtsIU2cBTFzn_XoLwbmn", + "source": { + "@timestamp": "2018-11-27T02:39:01.054Z", + "process": { + "pid": "26360", + "exe": "/usr/sbin/cron" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "data": { + "op": "PAM:session_open", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 184451, + "result": "success", + "session": "9862" + }, + "event": { + "type": "user_start", + "action": "started-session", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "X9sIU2cBTFzn_XoLwbmn", + "source": { + "@timestamp": "2018-11-27T02:39:01.154Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "26360", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "9862", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184452, + "result": "success" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YNsIU2cBTFzn_XoLwbmn", + "source": { + "@timestamp": "2018-11-27T02:39:01.156Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_end", + "action": "ended-session" + }, + "user": { + "auid": "0", + "name_map": { + "uid": "root", + "auid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26360", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "acct": "root", + "op": "PAM:session_close", + "terminal": "cron" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + } + }, + "sequence": 184453, + "result": "success", + "session": "9862" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9sIU2cBTFzn_XoLwrlb", + "source": { + "@timestamp": "2018-11-27T02:39:01.233Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_acct", + "action": "was-authorized" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "1088", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 192631, + "result": "success", + "session": "unset", + "data": { + "terminal": "cron", + "op": "PAM:accounting", + "acct": "root" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dNsIU2cBTFzn_XoLwrlb", + "source": { + "@timestamp": "2018-11-27T02:39:01.234Z", + "event": { + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "1088", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 192632, + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ddsIU2cBTFzn_XoLwrlb", + "source": { + "@timestamp": "2018-11-27T02:39:01.235Z", + "user": { + "auid": "0", + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "1088", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "9866", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:session_open" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192634, + "result": "success" + }, + "event": { + "action": "started-session", + "module": "auditd", + "category": "user-login", + "type": "user_start" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dtsIU2cBTFzn_XoLwrlb", + "source": { + "@timestamp": "2018-11-27T02:39:01.327Z", + "user": { + "auid": "0", + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "1088" + }, + "auditd": { + "session": "9866", + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + }, + "sequence": 192635, + "result": "success" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "d9sIU2cBTFzn_XoLwrlb", + "source": { + "@timestamp": "2018-11-27T02:39:01.327Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "session": "9866", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:session_close" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192636, + "result": "success" + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "1088", + "exe": "/usr/sbin/cron" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ndwMU2cBTFzn_XoLNAWN", + "source": { + "@timestamp": "2018-11-27T02:42:47.067Z", + "source": { + "ip": "107.170.76.170" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "107.170.76.170", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 43284, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13197", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ntwMU2cBTFzn_XoLNAWN", + "source": { + "@timestamp": "2018-11-27T02:42:47.071Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "13197", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "107.170.76.170" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.76.170", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43285, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "n9wMU2cBTFzn_XoLNAWN", + "source": { + "@timestamp": "2018-11-27T02:42:47.107Z", + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.76.170", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "107.170.76.170", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43286, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13197" + }, + "source": { + "ip": "107.170.76.170" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8NwMU2cBTFzn_XoLOwZZ", + "source": { + "@timestamp": "2018-11-27T02:42:48.812Z", + "event": { + "category": "configuration", + "type": "netfilter_cfg", + "action": "loaded-firewall-rule-to", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "sgid": "0", + "name_map": { + "egid": "root", + "euid": "root", + "fsgid": "root", + "fsuid": "root", + "gid": "root", + "sgid": "root", + "suid": "root", + "uid": "root" + }, + "gid": "0", + "suid": "0", + "fsuid": "0", + "egid": "0", + "uid": "0", + "auid": "unset", + "euid": "0", + "fsgid": "0" + }, + "process": { + "exe": "/sbin/xtables-multi", + "pid": "13199", + "ppid": "1379", + "title": "/sbin/iptables -w -D sshguard -s 147.135.208.7 -j DROP", + "name": "iptables" + }, + "auditd": { + "data": { + "table": "filter", + "tty": "(none)", + "family": "2", + "a1": "0", + "exit": "0", + "a3": "1666870", + "syscall": "setsockopt", + "a2": "40", + "arch": "x86_64", + "a0": "5", + "entries": "155" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "firewall", + "primary": "filter" + }, + "how": "/sbin/xtables-multi" + }, + "sequence": 43287, + "result": "success", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WdwMU2cBTFzn_XoLRgdH", + "source": { + "@timestamp": "2018-11-27T02:42:51.613Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "84.19.176.196", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184460 + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26436", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "84.19.176.196" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WtwMU2cBTFzn_XoLRgdH", + "source": { + "@timestamp": "2018-11-27T02:42:51.614Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "26436", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "84.19.176.196" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184461, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "84.19.176.196", + "type": "user-session" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "W9wMU2cBTFzn_XoLRgdH", + "source": { + "@timestamp": "2018-11-27T02:42:51.728Z", + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "84.19.176.196" + } + }, + "sequence": 184462, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "84.19.176.196" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "26436", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "84.19.176.196" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rdwMU2cBTFzn_XoLSQex", + "source": { + "@timestamp": "2018-11-27T02:42:52.477Z", + "process": { + "pid": "20119", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "58.97.13.206" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "58.97.13.206" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142443, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rtwMU2cBTFzn_XoLSQex", + "source": { + "@timestamp": "2018-11-27T02:42:52.479Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "20119", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "58.97.13.206" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "58.97.13.206", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142444, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "r9wMU2cBTFzn_XoLSQex", + "source": { + "@timestamp": "2018-11-27T02:42:52.702Z", + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "58.97.13.206", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "58.97.13.206", + "type": "user-session" + } + }, + "sequence": 142445, + "result": "fail", + "session": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "20119", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "58.97.13.206" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qdwMU2cBTFzn_XoLVwgF", + "source": { + "@timestamp": "2018-11-27T02:42:55.899Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "45.55.239.241", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 142446 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "20121", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "45.55.239.241" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qtwMU2cBTFzn_XoLVwgF", + "source": { + "@timestamp": "2018-11-27T02:42:55.899Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "20121", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "45.55.239.241" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "45.55.239.241", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 142447 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "q9wMU2cBTFzn_XoLVwgF", + "source": { + "@timestamp": "2018-11-27T02:42:55.930Z", + "source": { + "ip": "45.55.239.241" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "45.55.239.241" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "45.55.239.241", + "type": "user-session" + } + }, + "sequence": 142448, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "20121" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JdsLU2cBTFzn_XoLffYn", + "source": { + "@timestamp": "2018-11-27T02:42:00.124Z", + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "104.131.124.166", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184457, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26431", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.131.124.166" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JtsLU2cBTFzn_XoLffYn", + "source": { + "@timestamp": "2018-11-27T02:42:00.125Z", + "process": { + "pid": "26431", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.131.124.166" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184458, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "104.131.124.166", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "J9sLU2cBTFzn_XoLffYn", + "source": { + "@timestamp": "2018-11-27T02:42:00.158Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26431" + }, + "source": { + "ip": "104.131.124.166" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184459, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "104.131.124.166", + "terminal": "ssh" + }, + "summary": { + "object": { + "secondary": "104.131.124.166", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNwMU2cBTFzn_XoLDAJ2", + "source": { + "@timestamp": "2018-11-27T02:42:36.811Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "20117", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.28.34.200" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "202.28.34.200" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142440, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CdwMU2cBTFzn_XoLDAJ2", + "source": { + "@timestamp": "2018-11-27T02:42:36.812Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "20117", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.28.34.200" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "202.28.34.200", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 142441 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CtwMU2cBTFzn_XoLDAJ2", + "source": { + "@timestamp": "2018-11-27T02:42:37.043Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "20117", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.28.34.200" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "202.28.34.200", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142442, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "202.28.34.200", + "op": "PAM:bad_ident" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QtwMU2cBTFzn_XoLKwWd", + "source": { + "@timestamp": "2018-11-27T02:42:44.787Z", + "source": { + "ip": "103.249.205.78" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186639, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "103.249.205.78" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32752" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Q9wMU2cBTFzn_XoLKwWd", + "source": { + "@timestamp": "2018-11-27T02:42:44.788Z", + "source": { + "ip": "103.249.205.78" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "103.249.205.78", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186640 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32752", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RNwMU2cBTFzn_XoLKwWd", + "source": { + "@timestamp": "2018-11-27T02:42:45.017Z", + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "103.249.205.78", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186641, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "103.249.205.78" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32752", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.249.205.78" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "btsKU2cBTFzn_XoL6ul0", + "source": { + "@timestamp": "2018-11-27T02:41:22.569Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1149" + }, + "source": { + "ip": "149.56.15.98" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "149.56.15.98", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192643, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "b9sKU2cBTFzn_XoL6ul0", + "source": { + "@timestamp": "2018-11-27T02:41:22.571Z", + "source": { + "ip": "149.56.15.98" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192644, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "secondary": "149.56.15.98", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "1149", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cNsKU2cBTFzn_XoL6ul0", + "source": { + "@timestamp": "2018-11-27T02:41:22.613Z", + "source": { + "ip": "149.56.15.98" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192645, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "149.56.15.98" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "149.56.15.98", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "1149", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "99sKU2cBTFzn_XoLJtjT", + "source": { + "@timestamp": "2018-11-27T02:40:32.489Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32738" + }, + "source": { + "ip": "37.59.183.21" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "37.59.183.21", + "type": "user-session" + } + }, + "sequence": 186636 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-NsKU2cBTFzn_XoLJtjT", + "source": { + "@timestamp": "2018-11-27T02:40:32.490Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32738", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.59.183.21" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186637, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "37.59.183.21" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-dsKU2cBTFzn_XoLJtjT", + "source": { + "@timestamp": "2018-11-27T02:40:32.600Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "37.59.183.21", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186638, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "37.59.183.21" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32738", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.59.183.21" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dsKU2cBTFzn_XoLCtYx", + "source": { + "@timestamp": "2018-11-27T02:40:25.154Z", + "process": { + "pid": "31052", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.248.237.238" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "104.248.237.238" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44298, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6tsKU2cBTFzn_XoLCtYx", + "source": { + "@timestamp": "2018-11-27T02:40:25.158Z", + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31052", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.248.237.238" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "104.248.237.238", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44299, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "69sKU2cBTFzn_XoLCtYx", + "source": { + "@timestamp": "2018-11-27T02:40:25.190Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31052" + }, + "source": { + "ip": "104.248.237.238" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "104.248.237.238" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44300, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "104.248.237.238", + "terminal": "ssh" + } + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TtsKU2cBTFzn_XoLcN9z", + "source": { + "@timestamp": "2018-11-27T02:40:51.334Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13183", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "191.255.248.91" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "191.255.248.91" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43281 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "T9sKU2cBTFzn_XoLcN9z", + "source": { + "@timestamp": "2018-11-27T02:40:51.334Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "secondary": "191.255.248.91", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43282 + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13183" + }, + "source": { + "ip": "191.255.248.91" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UNsKU2cBTFzn_XoLcN9z", + "source": { + "@timestamp": "2018-11-27T02:40:51.490Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13183", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "191.255.248.91" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43283, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "191.255.248.91" + }, + "summary": { + "object": { + "secondary": "191.255.248.91", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "O90YU2cBTFzn_XoLthfG", + "source": { + "@timestamp": "2018-11-27T02:56:26.843Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "212.46.209.158", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192667 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1253" + }, + "source": { + "ip": "212.46.209.158" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PN0YU2cBTFzn_XoLthfG", + "source": { + "@timestamp": "2018-11-27T02:56:26.844Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "212.46.209.158", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192668, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "1253", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "212.46.209.158" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Pd0YU2cBTFzn_XoLthfG", + "source": { + "@timestamp": "2018-11-27T02:56:27.038Z", + "source": { + "ip": "212.46.209.158" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "212.46.209.158", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192669, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "212.46.209.158" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1253" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Wd0YU2cBTFzn_XoLuRey", + "source": { + "@timestamp": "2018-11-27T02:56:27.592Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "20207", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "212.89.171.146" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "212.89.171.146", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142463, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Wt0YU2cBTFzn_XoLuRey", + "source": { + "@timestamp": "2018-11-27T02:56:27.593Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "212.89.171.146", + "type": "user-session" + } + }, + "sequence": 142464 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "20207", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "212.89.171.146" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "W90YU2cBTFzn_XoLuRey", + "source": { + "@timestamp": "2018-11-27T02:56:27.731Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "20207" + }, + "source": { + "ip": "212.89.171.146" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142465, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "212.89.171.146" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "212.89.171.146", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UN0ZU2cBTFzn_XoLKSHH", + "source": { + "@timestamp": "2018-11-27T02:56:56.285Z", + "auditd": { + "sequence": 184490, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "193.70.85.206", + "type": "user-session" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26545", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "193.70.85.206" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ud0ZU2cBTFzn_XoLKSHH", + "source": { + "@timestamp": "2018-11-27T02:56:56.286Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "193.70.85.206" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184491, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26545", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "193.70.85.206" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ut0ZU2cBTFzn_XoLKSHH", + "source": { + "@timestamp": "2018-11-27T02:56:56.392Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26545", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "193.70.85.206" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184492, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "193.70.85.206", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "secondary": "193.70.85.206", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0t0ZU2cBTFzn_XoL6TKj", + "source": { + "@timestamp": "2018-11-27T02:57:45.401Z", + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "26553", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.36.221.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "89.36.221.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184493, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "090ZU2cBTFzn_XoL6TKj", + "source": { + "@timestamp": "2018-11-27T02:57:45.402Z", + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "89.36.221.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 184494, + "result": "fail" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26553", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.36.221.229" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "1N0ZU2cBTFzn_XoL6TKj", + "source": { + "@timestamp": "2018-11-27T02:57:45.502Z", + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26553", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.36.221.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184495, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "89.36.221.229" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "89.36.221.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "f90YU2cBTFzn_XoL-B3u", + "source": { + "@timestamp": "2018-11-27T02:56:43.779Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26542", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.68.111.27" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "138.68.111.27", + "type": "user-session" + } + }, + "sequence": 184487, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gN0YU2cBTFzn_XoL-B3u", + "source": { + "@timestamp": "2018-11-27T02:56:43.781Z", + "auditd": { + "sequence": 184488, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "138.68.111.27", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26542", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "138.68.111.27" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gd0YU2cBTFzn_XoL-B3u", + "source": { + "@timestamp": "2018-11-27T02:56:43.889Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184489, + "result": "fail", + "session": "unset", + "data": { + "hostname": "138.68.111.27", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "138.68.111.27", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26542", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.68.111.27" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YN0ZU2cBTFzn_XoLMCE9", + "source": { + "@timestamp": "2018-11-27T02:56:57.939Z", + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "5.39.77.167", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192670, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1261" + }, + "source": { + "ip": "5.39.77.167" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Yd0ZU2cBTFzn_XoLMCE9", + "source": { + "@timestamp": "2018-11-27T02:56:57.940Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "5.39.77.167", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 192671, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1261" + }, + "source": { + "ip": "5.39.77.167" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Yt0ZU2cBTFzn_XoLMCE9", + "source": { + "@timestamp": "2018-11-27T02:56:58.047Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192672, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "5.39.77.167", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "5.39.77.167", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1261", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "5.39.77.167" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "yN0YU2cBTFzn_XoLnBVF", + "source": { + "@timestamp": "2018-11-27T02:56:20.058Z", + "source": { + "ip": "189.16.195.18" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "189.16.195.18" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192664 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "1251", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "yd0YU2cBTFzn_XoLnBVF", + "source": { + "@timestamp": "2018-11-27T02:56:20.060Z", + "process": { + "pid": "1251", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "189.16.195.18" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "189.16.195.18", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192665, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "yt0YU2cBTFzn_XoLnBVF", + "source": { + "@timestamp": "2018-11-27T02:56:20.223Z", + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1251" + }, + "source": { + "ip": "189.16.195.18" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192666, + "result": "fail", + "session": "unset", + "data": { + "hostname": "189.16.195.18", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "189.16.195.18", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ld0YU2cBTFzn_XoL6hym", + "source": { + "@timestamp": "2018-11-27T02:56:40.122Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "157.100.133.21", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43303, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "13281", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "157.100.133.21" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "lt0YU2cBTFzn_XoL6hym", + "source": { + "@timestamp": "2018-11-27T02:56:40.122Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13281", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "157.100.133.21" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "157.100.133.21", + "type": "user-session" + } + }, + "sequence": 43304, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "l90YU2cBTFzn_XoL6hym", + "source": { + "@timestamp": "2018-11-27T02:56:40.242Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "157.100.133.21", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43305, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "157.100.133.21" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "13281", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "157.100.133.21" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wt0ZU2cBTFzn_XoLqiw3", + "source": { + "@timestamp": "2018-11-27T02:57:29.161Z", + "source": { + "ip": "37.59.62.23" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "37.59.62.23", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 44318 + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31535", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "w90ZU2cBTFzn_XoLqiw3", + "source": { + "@timestamp": "2018-11-27T02:57:29.161Z", + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31535", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.59.62.23" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "37.59.62.23", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44319 + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xN0ZU2cBTFzn_XoLqiw3", + "source": { + "@timestamp": "2018-11-27T02:57:29.269Z", + "source": { + "ip": "37.59.62.23" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "37.59.62.23", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 44320, + "result": "fail", + "session": "unset", + "data": { + "hostname": "37.59.62.23", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31535", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ld0ZU2cBTFzn_XoLxC9z", + "source": { + "@timestamp": "2018-11-27T02:57:35.874Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "summary": { + "how": "/lib/systemd/systemd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "apt-daily", + "type": "service" + } + }, + "sequence": 43306, + "result": "success", + "session": "unset", + "data": { + "unit": "apt-daily" + } + }, + "event": { + "category": "system-services", + "type": "service_start", + "action": "started-service", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "1", + "name": "systemd", + "exe": "/lib/systemd/systemd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Lt0ZU2cBTFzn_XoLxC9z", + "source": { + "@timestamp": "2018-11-27T02:57:35.874Z", + "event": { + "category": "system-services", + "type": "service_stop", + "action": "stopped-service", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1", + "name": "systemd", + "exe": "/lib/systemd/systemd" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "apt-daily", + "type": "service" + }, + "how": "/lib/systemd/systemd" + }, + "sequence": 43307, + "result": "success", + "session": "unset", + "data": { + "unit": "apt-daily" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "p893UmcBTFzn_XoLs0bb", + "source": { + "@timestamp": "2018-11-27T00:00:34.801Z", + "process": { + "pid": "19147", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "200.35.110.58" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "200.35.110.58", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142246, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qM93UmcBTFzn_XoLs0bb", + "source": { + "@timestamp": "2018-11-27T00:00:34.802Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "200.35.110.58", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142247, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19147", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "200.35.110.58" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qc93UmcBTFzn_XoLs0bb", + "source": { + "@timestamp": "2018-11-27T00:00:34.906Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "200.35.110.58" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142248, + "result": "fail", + "session": "unset", + "data": { + "hostname": "200.35.110.58", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19147", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "200.35.110.58" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Lc97UmcBTFzn_XoLKpLT", + "source": { + "@timestamp": "2018-11-27T00:04:21.865Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31749" + }, + "source": { + "ip": "164.132.112.233" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "164.132.112.233", + "type": "user-session" + } + }, + "sequence": 186182, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ls97UmcBTFzn_XoLKpLT", + "source": { + "@timestamp": "2018-11-27T00:04:21.866Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31749", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.112.233" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186183, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "164.132.112.233", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "L897UmcBTFzn_XoLKpLT", + "source": { + "@timestamp": "2018-11-27T00:04:21.973Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "164.132.112.233" + } + }, + "sequence": 186184, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "164.132.112.233", + "terminal": "ssh" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31749" + }, + "source": { + "ip": "164.132.112.233" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "o894UmcBTFzn_XoLA00h", + "source": { + "@timestamp": "2018-11-27T00:00:55.095Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "139.198.120.32", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192390, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31971", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.198.120.32" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "pM94UmcBTFzn_XoLA00h", + "source": { + "@timestamp": "2018-11-27T00:00:55.096Z", + "auditd": { + "sequence": 192391, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "139.198.120.32", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31971" + }, + "source": { + "ip": "139.198.120.32" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "pc94UmcBTFzn_XoLA00h", + "source": { + "@timestamp": "2018-11-27T00:00:55.269Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "31971", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.198.120.32" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "139.198.120.32" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "139.198.120.32", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192392 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "eM95UmcBTFzn_XoLP2hD", + "source": { + "@timestamp": "2018-11-27T00:02:15.998Z", + "source": { + "ip": "106.12.29.232" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192393, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "106.12.29.232", + "type": "user-session" + } + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "31979", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ec95UmcBTFzn_XoLP2hD", + "source": { + "@timestamp": "2018-11-27T00:02:15.999Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31979" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "106.12.29.232" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "106.12.29.232", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192394 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "es95UmcBTFzn_XoLP2hD", + "source": { + "@timestamp": "2018-11-27T00:02:16.292Z", + "source": { + "ip": "106.12.29.232" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "106.12.29.232" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "106.12.29.232", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192395 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31979", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PM99UmcBTFzn_XoLjscA", + "source": { + "@timestamp": "2018-11-27T00:06:58.326Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "54.37.154.254", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186188, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31766", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.37.154.254" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Pc99UmcBTFzn_XoLjscA", + "source": { + "@timestamp": "2018-11-27T00:06:58.327Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31766", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.37.154.254" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "54.37.154.254", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186189 + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ps99UmcBTFzn_XoLjscA", + "source": { + "@timestamp": "2018-11-27T00:06:58.438Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "54.37.154.254" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "54.37.154.254" + } + }, + "sequence": 186190 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31766", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.37.154.254" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cM95UmcBTFzn_XoLKGaD", + "source": { + "@timestamp": "2018-11-27T00:02:10.186Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31740", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "211.24.100.205" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186179, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "211.24.100.205", + "type": "user-session" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cc95UmcBTFzn_XoLKGaD", + "source": { + "@timestamp": "2018-11-27T00:02:10.188Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "31740", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "211.24.100.205" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "211.24.100.205", + "type": "user-session" + } + }, + "sequence": 186180, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cs95UmcBTFzn_XoLKGaD", + "source": { + "@timestamp": "2018-11-27T00:02:10.392Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31740", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "211.24.100.205" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "211.24.100.205", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186181, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "211.24.100.205" + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "hs93UmcBTFzn_XoLcEF7", + "source": { + "@timestamp": "2018-11-27T00:00:17.552Z", + "source": { + "ip": "142.93.210.90" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "142.93.210.90" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192387, + "result": "fail", + "session": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31968", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "h893UmcBTFzn_XoLcEF7", + "source": { + "@timestamp": "2018-11-27T00:00:17.552Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31968" + }, + "source": { + "ip": "142.93.210.90" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192388, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "142.93.210.90", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "iM93UmcBTFzn_XoLcEF7", + "source": { + "@timestamp": "2018-11-27T00:00:17.784Z", + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31968" + }, + "source": { + "ip": "142.93.210.90" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "142.93.210.90" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192389, + "result": "fail", + "session": "unset", + "data": { + "hostname": "142.93.210.90", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "k899UmcBTFzn_XoL6M7W", + "source": { + "@timestamp": "2018-11-27T00:07:21.573Z", + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "27895", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "174.50.26.154" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "174.50.26.154", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 44073, + "result": "fail" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "lM99UmcBTFzn_XoL6M7W", + "source": { + "@timestamp": "2018-11-27T00:07:21.577Z", + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "174.50.26.154", + "type": "user-session" + } + }, + "sequence": 44074, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "27895", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "174.50.26.154" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "lc99UmcBTFzn_XoL6M7W", + "source": { + "@timestamp": "2018-11-27T00:07:21.673Z", + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "27895" + }, + "source": { + "ip": "174.50.26.154" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44075, + "result": "fail", + "session": "unset", + "data": { + "hostname": "174.50.26.154", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "174.50.26.154", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aM97UmcBTFzn_XoL4qJ8", + "source": { + "@timestamp": "2018-11-27T00:05:08.881Z", + "process": { + "pid": "31758", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.38.82.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.38.82.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186185 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ac97UmcBTFzn_XoL4qJ8", + "source": { + "@timestamp": "2018-11-27T00:05:08.882Z", + "source": { + "ip": "51.38.82.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186186, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.38.82.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31758", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "as97UmcBTFzn_XoL4qJ8", + "source": { + "@timestamp": "2018-11-27T00:05:08.989Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31758", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.38.82.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186187, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "51.38.82.60" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "51.38.82.60" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4M99UmcBTFzn_XoLtco1", + "source": { + "@timestamp": "2018-11-27T00:07:08.363Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31768", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.101.26.63" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "46.101.26.63", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186191 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4c99UmcBTFzn_XoLtco1", + "source": { + "@timestamp": "2018-11-27T00:07:08.364Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31768", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.101.26.63" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.101.26.63", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186192, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4s99UmcBTFzn_XoLtco1", + "source": { + "@timestamp": "2018-11-27T00:07:08.463Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31768", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.101.26.63" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186193, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "46.101.26.63" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "46.101.26.63" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_NCBUmcBTFzn_XoLzSMR", + "source": { + "@timestamp": "2018-11-27T00:11:36.615Z", + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "86.96.203.107", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186212 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31802", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "86.96.203.107" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_dCBUmcBTFzn_XoLzSMR", + "source": { + "@timestamp": "2018-11-27T00:11:36.616Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31802", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "86.96.203.107" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "86.96.203.107", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186213, + "result": "fail", + "session": "unset" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_tCBUmcBTFzn_XoLzSMR", + "source": { + "@timestamp": "2018-11-27T00:11:36.828Z", + "source": { + "ip": "86.96.203.107" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "86.96.203.107" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "86.96.203.107", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186214, + "result": "fail", + "session": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31802" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WdCBUmcBTFzn_XoLzyVY", + "source": { + "@timestamp": "2018-11-27T00:11:37.195Z", + "auditd": { + "sequence": 43095, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "104.248.236.32" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12257", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.248.236.32" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WtCBUmcBTFzn_XoLzyVY", + "source": { + "@timestamp": "2018-11-27T00:11:37.195Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "12257", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.248.236.32" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43096, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "104.248.236.32", + "type": "user-session", + "primary": "sshd" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "W9CBUmcBTFzn_XoLzyVY", + "source": { + "@timestamp": "2018-11-27T00:11:37.223Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43097, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "104.248.236.32", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "104.248.236.32", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12257", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.248.236.32" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZNCBUmcBTFzn_XoL0yWS", + "source": { + "@timestamp": "2018-11-27T00:11:38.280Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "32078", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.121.26.184" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "91.121.26.184", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192402 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZdCBUmcBTFzn_XoL0yWS", + "source": { + "@timestamp": "2018-11-27T00:11:38.280Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "91.121.26.184", + "type": "user-session" + } + }, + "sequence": 192403, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32078", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.121.26.184" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZtCBUmcBTFzn_XoL0yWS", + "source": { + "@timestamp": "2018-11-27T00:11:38.388Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32078", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "91.121.26.184" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192404, + "result": "fail", + "session": "unset", + "data": { + "hostname": "91.121.26.184", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "91.121.26.184", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HtCBUmcBTFzn_XoLJBa0", + "source": { + "@timestamp": "2018-11-27T00:10:53.514Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "process": { + "pid": "19210", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "206.189.183.75" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "206.189.183.75" + } + }, + "sequence": 142258, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "H9CBUmcBTFzn_XoLJBa0", + "source": { + "@timestamp": "2018-11-27T00:10:53.515Z", + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "206.189.183.75" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142259, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19210" + }, + "source": { + "ip": "206.189.183.75" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "INCBUmcBTFzn_XoLJBa0", + "source": { + "@timestamp": "2018-11-27T00:10:53.546Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142260, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "206.189.183.75" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "206.189.183.75" + }, + "how": "/usr/sbin/sshd" + } + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19210", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "206.189.183.75" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9CCUmcBTFzn_XoL5z0B", + "source": { + "@timestamp": "2018-11-27T00:12:48.790Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19223" + }, + "source": { + "ip": "188.166.213.254" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "188.166.213.254", + "type": "user-session" + } + }, + "sequence": 142261, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aNCCUmcBTFzn_XoL5z0B", + "source": { + "@timestamp": "2018-11-27T00:12:48.791Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19223", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "188.166.213.254" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142262, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "188.166.213.254", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "adCCUmcBTFzn_XoL5z0B", + "source": { + "@timestamp": "2018-11-27T00:12:48.985Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19223", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "188.166.213.254" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142263, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "188.166.213.254" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "188.166.213.254", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ytCAUmcBTFzn_XoLfAfq", + "source": { + "@timestamp": "2018-11-27T00:10:10.560Z", + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31792", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "123.136.161.146" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "123.136.161.146" + } + }, + "sequence": 186206, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "y9CAUmcBTFzn_XoLfAfq", + "source": { + "@timestamp": "2018-11-27T00:10:10.561Z", + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "123.136.161.146", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186207, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31792", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "123.136.161.146" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zNCAUmcBTFzn_XoLfAfq", + "source": { + "@timestamp": "2018-11-27T00:10:10.789Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31792", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "123.136.161.146" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "123.136.161.146" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "123.136.161.146" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186208, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-NCBUmcBTFzn_XoLRxhI", + "source": { + "@timestamp": "2018-11-27T00:11:02.367Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "31799", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.241.146.65" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186209, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "103.241.146.65", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-dCBUmcBTFzn_XoLRxhI", + "source": { + "@timestamp": "2018-11-27T00:11:02.368Z", + "source": { + "ip": "103.241.146.65" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "103.241.146.65", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186210 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31799", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-tCBUmcBTFzn_XoLRxhI", + "source": { + "@timestamp": "2018-11-27T00:11:02.619Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31799", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.241.146.65" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186211, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "103.241.146.65", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "103.241.146.65" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kdCDUmcBTFzn_XoLZUd0", + "source": { + "@timestamp": "2018-11-27T00:13:21.161Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "104.248.159.44", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186218, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "31813", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.248.159.44" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ktCDUmcBTFzn_XoLZUd0", + "source": { + "@timestamp": "2018-11-27T00:13:21.162Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "104.248.159.44", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186219, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31813" + }, + "source": { + "ip": "104.248.159.44" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "k9CDUmcBTFzn_XoLZUd0", + "source": { + "@timestamp": "2018-11-27T00:13:21.355Z", + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "104.248.159.44", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "104.248.159.44", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186220, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "31813", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.248.159.44" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zdCCUmcBTFzn_XoLfDPd", + "source": { + "@timestamp": "2018-11-27T00:12:21.596Z", + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186215, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "31805", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ztCCUmcBTFzn_XoLfDPd", + "source": { + "@timestamp": "2018-11-27T00:12:21.598Z", + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186216, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31805" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "z9CCUmcBTFzn_XoLfDPd", + "source": { + "@timestamp": "2018-11-27T00:12:21.740Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186217, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "46.148.18.163", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31805", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "J9CAUmcBTFzn_XoL2xDJ", + "source": { + "@timestamp": "2018-11-27T00:10:34.814Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "177.206.128.131", + "type": "user-session" + } + }, + "sequence": 43092, + "result": "fail" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "12250", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "177.206.128.131" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KNCAUmcBTFzn_XoL2xDJ", + "source": { + "@timestamp": "2018-11-27T00:10:34.814Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "12250", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "177.206.128.131" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "177.206.128.131", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43093, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KdCAUmcBTFzn_XoL2xDJ", + "source": { + "@timestamp": "2018-11-27T00:10:35.006Z", + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12250", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "177.206.128.131" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43094, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "177.206.128.131" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "177.206.128.131", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cdCCUmcBTFzn_XoLBilE", + "source": { + "@timestamp": "2018-11-27T00:11:51.257Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "142.93.109.33" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "142.93.109.33", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43098, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12259", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ctCCUmcBTFzn_XoLBilE", + "source": { + "@timestamp": "2018-11-27T00:11:51.257Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12259", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "142.93.109.33" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "142.93.109.33", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43099, + "result": "fail" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9CCUmcBTFzn_XoLBilE", + "source": { + "@timestamp": "2018-11-27T00:11:51.365Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12259", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "142.93.109.33" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "142.93.109.33" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43100, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "142.93.109.33", + "terminal": "ssh" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5NCHUmcBTFzn_XoLiqIH", + "source": { + "@timestamp": "2018-11-27T00:17:52.669Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192414, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "161.132.195.76", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32116", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "161.132.195.76" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5dCHUmcBTFzn_XoLiqIH", + "source": { + "@timestamp": "2018-11-27T00:17:52.670Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32116", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "161.132.195.76" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "161.132.195.76" + } + }, + "sequence": 192415, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5tCHUmcBTFzn_XoLiqIH", + "source": { + "@timestamp": "2018-11-27T00:17:52.776Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32116" + }, + "source": { + "ip": "161.132.195.76" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "161.132.195.76", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192416, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "161.132.195.76", + "terminal": "ssh" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "q9CHUmcBTFzn_XoLj6PQ", + "source": { + "@timestamp": "2018-11-27T00:17:54.150Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31844" + }, + "source": { + "ip": "202.175.83.165" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "202.175.83.165" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186236, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rNCHUmcBTFzn_XoLj6PQ", + "source": { + "@timestamp": "2018-11-27T00:17:54.151Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31844" + }, + "source": { + "ip": "202.175.83.165" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186237, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "202.175.83.165", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rdCHUmcBTFzn_XoLj6PQ", + "source": { + "@timestamp": "2018-11-27T00:17:54.333Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31844" + }, + "source": { + "ip": "202.175.83.165" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186238, + "result": "fail", + "session": "unset", + "data": { + "hostname": "202.175.83.165", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "202.175.83.165", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NNCHUmcBTFzn_XoLkqTG", + "source": { + "@timestamp": "2018-11-27T00:17:54.909Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32118", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "128.199.107.237" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "128.199.107.237", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192417, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NdCHUmcBTFzn_XoLkqTG", + "source": { + "@timestamp": "2018-11-27T00:17:54.910Z", + "source": { + "ip": "128.199.107.237" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "128.199.107.237", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192418, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32118", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NtCHUmcBTFzn_XoLkqTG", + "source": { + "@timestamp": "2018-11-27T00:17:55.100Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "128.199.107.237" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "128.199.107.237", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "128.199.107.237", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192419 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32118", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "P9CHUmcBTFzn_XoLmKRB", + "source": { + "@timestamp": "2018-11-27T00:17:56.311Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "197.149.137.86", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192420, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32120", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "197.149.137.86" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QNCHUmcBTFzn_XoLmKRB", + "source": { + "@timestamp": "2018-11-27T00:17:56.312Z", + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "197.149.137.86", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192421, + "result": "fail" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32120", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "197.149.137.86" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QdCHUmcBTFzn_XoLmKRB", + "source": { + "@timestamp": "2018-11-27T00:17:56.547Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "197.149.137.86", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "197.149.137.86" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192422 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32120" + }, + "source": { + "ip": "197.149.137.86" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kNCIUmcBTFzn_XoL68Ge", + "source": { + "@timestamp": "2018-11-27T00:19:23.188Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31854" + }, + "source": { + "ip": "165.227.63.250" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "165.227.63.250", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186242, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kdCIUmcBTFzn_XoL68Ge", + "source": { + "@timestamp": "2018-11-27T00:19:23.189Z", + "process": { + "pid": "31854", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "165.227.63.250" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "165.227.63.250", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186243 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ktCIUmcBTFzn_XoL68Ge", + "source": { + "@timestamp": "2018-11-27T00:19:23.230Z", + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31854", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "165.227.63.250" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "165.227.63.250", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "165.227.63.250", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186244, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7tCIUmcBTFzn_XoL_MPx", + "source": { + "@timestamp": "2018-11-27T00:19:27.623Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24879" + }, + "source": { + "ip": "185.137.92.168" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "185.137.92.168" + } + }, + "sequence": 184264 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "79CIUmcBTFzn_XoL_MPx", + "source": { + "@timestamp": "2018-11-27T00:19:27.624Z", + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "24879", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.137.92.168" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "185.137.92.168", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184265 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8NCIUmcBTFzn_XoL_MPx", + "source": { + "@timestamp": "2018-11-27T00:19:27.733Z", + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "24879", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.137.92.168" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "185.137.92.168" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "185.137.92.168" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184266, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sdCJUmcBTFzn_XoLMcci", + "source": { + "@timestamp": "2018-11-27T00:19:40.983Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31857", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.58.119.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186245, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "185.58.119.156" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "stCJUmcBTFzn_XoLMcci", + "source": { + "@timestamp": "2018-11-27T00:19:40.984Z", + "source": { + "ip": "185.58.119.156" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "185.58.119.156" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186246, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31857", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "s9CJUmcBTFzn_XoLMcci", + "source": { + "@timestamp": "2018-11-27T00:19:41.111Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "31857", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.58.119.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186247, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "185.58.119.156", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "185.58.119.156", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RdCJUmcBTFzn_XoLOcgJ", + "source": { + "@timestamp": "2018-11-27T00:19:43.008Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "201.134.231.33" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186248, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31859", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "201.134.231.33" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RtCJUmcBTFzn_XoLOcgJ", + "source": { + "@timestamp": "2018-11-27T00:19:43.009Z", + "process": { + "pid": "31859", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "201.134.231.33" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "secondary": "201.134.231.33", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 186249, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "R9CJUmcBTFzn_XoLOcgJ", + "source": { + "@timestamp": "2018-11-27T00:19:43.074Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "201.134.231.33", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 186250, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "201.134.231.33", + "terminal": "ssh" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31859", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "201.134.231.33" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rtCGUmcBTFzn_XoL3pS1", + "source": { + "@timestamp": "2018-11-27T00:17:08.809Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32108" + }, + "source": { + "ip": "220.116.47.116" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "220.116.47.116", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192411, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "r9CGUmcBTFzn_XoL3pS1", + "source": { + "@timestamp": "2018-11-27T00:17:08.810Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "220.116.47.116", + "type": "user-session" + } + }, + "sequence": 192412, + "result": "fail", + "session": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32108" + }, + "source": { + "ip": "220.116.47.116" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sNCGUmcBTFzn_XoL3pS1", + "source": { + "@timestamp": "2018-11-27T00:17:08.983Z", + "source": { + "ip": "220.116.47.116" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "220.116.47.116", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "220.116.47.116", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192413, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32108", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rNCIUmcBTFzn_XoLa7Yh", + "source": { + "@timestamp": "2018-11-27T00:18:50.295Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24869" + }, + "source": { + "ip": "222.117.50.66" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "222.117.50.66" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184258, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rdCIUmcBTFzn_XoLa7Yh", + "source": { + "@timestamp": "2018-11-27T00:18:50.297Z", + "process": { + "pid": "24869", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "222.117.50.66" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "222.117.50.66", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184259 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rtCIUmcBTFzn_XoLa7Yh", + "source": { + "@timestamp": "2018-11-27T00:18:50.462Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "222.117.50.66", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "222.117.50.66", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 184260, + "result": "fail" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "24869", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "222.117.50.66" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SNCIUmcBTFzn_XoLeri8", + "source": { + "@timestamp": "2018-11-27T00:18:54.288Z", + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186239, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31851", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SdCIUmcBTFzn_XoLeri8", + "source": { + "@timestamp": "2018-11-27T00:18:54.289Z", + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186240, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31851", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "StCIUmcBTFzn_XoLeri8", + "source": { + "@timestamp": "2018-11-27T00:18:54.436Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31851" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "46.148.18.163", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186241 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9CJUmcBTFzn_XoLDcR_", + "source": { + "@timestamp": "2018-11-27T00:19:31.861Z", + "source": { + "ip": "85.234.34.90" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "85.234.34.90", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 184267, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "24881", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aNCJUmcBTFzn_XoLDcR_", + "source": { + "@timestamp": "2018-11-27T00:19:31.862Z", + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "85.234.34.90", + "type": "user-session" + } + }, + "sequence": 184268, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24881" + }, + "source": { + "ip": "85.234.34.90" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "adCJUmcBTFzn_XoLDcR_", + "source": { + "@timestamp": "2018-11-27T00:19:32.020Z", + "source": { + "ip": "85.234.34.90" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "85.234.34.90", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "85.234.34.90", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 184269, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24881" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "OtCIUmcBTFzn_XoL08CH", + "source": { + "@timestamp": "2018-11-27T00:19:17.019Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "24877", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "27.254.90.106" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "27.254.90.106", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184261 + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "O9CIUmcBTFzn_XoL08CH", + "source": { + "@timestamp": "2018-11-27T00:19:17.020Z", + "source": { + "ip": "27.254.90.106" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184262, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "27.254.90.106", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "24877", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PNCIUmcBTFzn_XoL08CH", + "source": { + "@timestamp": "2018-11-27T00:19:17.244Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "27.254.90.106", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "27.254.90.106", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 184263 + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "24877", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "27.254.90.106" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_dCJUmcBTFzn_XoLv9T4", + "source": { + "@timestamp": "2018-11-27T00:20:17.545Z", + "auditd": { + "sequence": 44088, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "87.191.133.16", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "28146", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "87.191.133.16" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_tCJUmcBTFzn_XoLv9T4", + "source": { + "@timestamp": "2018-11-27T00:20:17.545Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28146" + }, + "source": { + "ip": "87.191.133.16" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "87.191.133.16", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44089, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_9CJUmcBTFzn_XoLv9T4", + "source": { + "@timestamp": "2018-11-27T00:20:17.665Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "87.191.133.16", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "object": { + "secondary": "87.191.133.16", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44090, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28146", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "source": { + "ip": "87.191.133.16" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xtGOUmcBTFzn_XoLCjLw", + "source": { + "@timestamp": "2018-11-27T00:24:58.886Z", + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "24919", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.128.55.52" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184276, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.128.55.52", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "x9GOUmcBTFzn_XoLCjLw", + "source": { + "@timestamp": "2018-11-27T00:24:58.888Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "178.128.55.52" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184277, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "178.128.55.52", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "24919", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "yNGOUmcBTFzn_XoLCjLw", + "source": { + "@timestamp": "2018-11-27T00:24:59.080Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "24919", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.128.55.52" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "178.128.55.52", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "178.128.55.52", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184278 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtGOUmcBTFzn_XoLEzP0", + "source": { + "@timestamp": "2018-11-27T00:25:01.159Z", + "auditd": { + "session": "unset", + "data": { + "acct": "root", + "op": "PAM:accounting", + "terminal": "cron" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44103, + "result": "success" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "was-authorized", + "module": "auditd", + "category": "user-login", + "type": "user_acct" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "28242", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "F9GOUmcBTFzn_XoLEzP0", + "source": { + "@timestamp": "2018-11-27T00:25:01.159Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "28242", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 44104, + "result": "success", + "session": "unset", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GNGOUmcBTFzn_XoLEzP0", + "source": { + "@timestamp": "2018-11-27T00:25:01.159Z", + "process": { + "pid": "28242", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 44106, + "result": "success", + "session": "1443", + "data": { + "op": "PAM:session_open", + "terminal": "cron", + "acct": "root" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_start", + "action": "started-session" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GdGOUmcBTFzn_XoLEzP0", + "source": { + "@timestamp": "2018-11-27T00:25:01.163Z", + "event": { + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "0", + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "28242" + }, + "auditd": { + "sequence": 44107, + "result": "success", + "session": "1443", + "data": { + "acct": "root", + "op": "PAM:setcred", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GtGOUmcBTFzn_XoLEzP0", + "source": { + "@timestamp": "2018-11-27T00:25:01.163Z", + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "28242", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 44108, + "result": "success", + "session": "1443", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:session_close" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_end", + "action": "ended-session", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "y9GOUmcBTFzn_XoLLTXy", + "source": { + "@timestamp": "2018-11-27T00:25:07.848Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24921" + }, + "source": { + "ip": "78.217.134.141" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "78.217.134.141", + "type": "user-session" + } + }, + "sequence": 184279 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zNGOUmcBTFzn_XoLLTXy", + "source": { + "@timestamp": "2018-11-27T00:25:07.849Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24921" + }, + "source": { + "ip": "78.217.134.141" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "78.217.134.141" + } + }, + "sequence": 184280 + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zdGOUmcBTFzn_XoLLTXy", + "source": { + "@timestamp": "2018-11-27T00:25:07.962Z", + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "24921", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "78.217.134.141" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "78.217.134.141", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "78.217.134.141", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184281, + "result": "fail" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0NGOUmcBTFzn_XoLLjX5", + "source": { + "@timestamp": "2018-11-27T00:25:08.111Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "151.80.144.39", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142273 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "19291", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "151.80.144.39" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0dGOUmcBTFzn_XoLLjX5", + "source": { + "@timestamp": "2018-11-27T00:25:08.112Z", + "process": { + "pid": "19291", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "151.80.144.39" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142274, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "151.80.144.39", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0tGOUmcBTFzn_XoLLjX5", + "source": { + "@timestamp": "2018-11-27T00:25:08.218Z", + "auditd": { + "sequence": 142275, + "result": "fail", + "session": "unset", + "data": { + "hostname": "151.80.144.39", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "151.80.144.39", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19291" + }, + "source": { + "ip": "151.80.144.39" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xNGOUmcBTFzn_XoLYDl2", + "source": { + "@timestamp": "2018-11-27T00:25:20.780Z", + "process": { + "pid": "24924", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.208.143.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184282, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "104.208.143.92", + "type": "user-session", + "primary": "sshd" + } + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xdGOUmcBTFzn_XoLYDl2", + "source": { + "@timestamp": "2018-11-27T00:25:20.781Z", + "process": { + "pid": "24924", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.208.143.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184283, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "104.208.143.92" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xtGOUmcBTFzn_XoLYDl2", + "source": { + "@timestamp": "2018-11-27T00:25:20.819Z", + "process": { + "pid": "24924", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.208.143.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "104.208.143.92", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "104.208.143.92", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 184284, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "nNGPUmcBTFzn_XoLF0mX", + "source": { + "@timestamp": "2018-11-27T00:26:07.661Z", + "source": { + "ip": "197.13.4.211" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "197.13.4.211", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 184285 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "24931", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ndGPUmcBTFzn_XoLF0mX", + "source": { + "@timestamp": "2018-11-27T00:26:07.662Z", + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "197.13.4.211" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184286, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "24931", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "197.13.4.211" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ntGPUmcBTFzn_XoLF0mX", + "source": { + "@timestamp": "2018-11-27T00:26:07.796Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "24931", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "197.13.4.211" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "197.13.4.211" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "197.13.4.211", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184287 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "N9GPUmcBTFzn_XoLi1R8", + "source": { + "@timestamp": "2018-11-27T00:26:37.330Z", + "source": { + "ip": "128.199.216.13" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "128.199.216.13", + "type": "user-session" + } + }, + "sequence": 192431, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32510", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ONGPUmcBTFzn_XoLi1R8", + "source": { + "@timestamp": "2018-11-27T00:26:37.331Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32510", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.216.13" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "128.199.216.13", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192432 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "OdGPUmcBTFzn_XoLi1R8", + "source": { + "@timestamp": "2018-11-27T00:26:37.524Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "32510", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.216.13" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192433, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "128.199.216.13", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "128.199.216.13", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "iNGNUmcBTFzn_XoLxiyC", + "source": { + "@timestamp": "2018-11-27T00:24:41.365Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "secondary": "147.135.208.7", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 43116, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12336" + }, + "source": { + "ip": "147.135.208.7" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "idGNUmcBTFzn_XoLxiyC", + "source": { + "@timestamp": "2018-11-27T00:24:41.365Z", + "source": { + "ip": "147.135.208.7" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43117, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "147.135.208.7", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12336", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "itGNUmcBTFzn_XoLxiyC", + "source": { + "@timestamp": "2018-11-27T00:24:41.497Z", + "auditd": { + "sequence": 43118, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "147.135.208.7" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "147.135.208.7", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12336" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "147.135.208.7" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3NGPUmcBTFzn_XoLV05i", + "source": { + "@timestamp": "2018-11-27T00:26:23.985Z", + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.38.38.221", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44109, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "28278", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.38.38.221" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3dGPUmcBTFzn_XoLV05i", + "source": { + "@timestamp": "2018-11-27T00:26:23.989Z", + "process": { + "pid": "28278", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.38.38.221" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "51.38.38.221", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44110, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3tGPUmcBTFzn_XoLV05i", + "source": { + "@timestamp": "2018-11-27T00:26:24.093Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "51.38.38.221", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "51.38.38.221", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44111, + "result": "fail" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "28278", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.38.38.221" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NdGNUmcBTFzn_XoLoilI", + "source": { + "@timestamp": "2018-11-27T00:24:32.089Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "28228", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.138.233.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "202.138.233.92", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44100 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NtGNUmcBTFzn_XoLoilI", + "source": { + "@timestamp": "2018-11-27T00:24:32.089Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28228", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "202.138.233.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "202.138.233.92" + } + }, + "sequence": 44101 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "N9GNUmcBTFzn_XoLoilI", + "source": { + "@timestamp": "2018-11-27T00:24:32.345Z", + "process": { + "pid": "28228", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "202.138.233.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44102, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "202.138.233.92", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "202.138.233.92", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "69GPUmcBTFzn_XoLM0ud", + "source": { + "@timestamp": "2018-11-27T00:26:14.833Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "1", + "name": "systemd", + "exe": "/lib/systemd/systemd" + }, + "auditd": { + "result": "success", + "session": "unset", + "data": { + "unit": "apt-daily" + }, + "summary": { + "object": { + "primary": "apt-daily", + "type": "service" + }, + "how": "/lib/systemd/systemd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192429 + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "system-services", + "type": "service_start", + "action": "started-service", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7NGPUmcBTFzn_XoLM0ud", + "source": { + "@timestamp": "2018-11-27T00:26:14.834Z", + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "1", + "name": "systemd", + "exe": "/lib/systemd/systemd" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "apt-daily", + "type": "service" + }, + "how": "/lib/systemd/systemd" + }, + "sequence": 192430, + "result": "success", + "session": "unset", + "data": { + "unit": "apt-daily" + } + }, + "event": { + "action": "stopped-service", + "module": "auditd", + "category": "system-services", + "type": "service_stop" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-dGTUmcBTFzn_XoLE6A1", + "source": { + "@timestamp": "2018-11-27T00:30:28.676Z", + "process": { + "pid": "28355", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "212.227.192.118" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44115, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "212.227.192.118", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-tGTUmcBTFzn_XoLE6A1", + "source": { + "@timestamp": "2018-11-27T00:30:28.680Z", + "process": { + "pid": "28355", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "212.227.192.118" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "212.227.192.118", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44116, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-9GTUmcBTFzn_XoLE6A1", + "source": { + "@timestamp": "2018-11-27T00:30:28.788Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "212.227.192.118" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "212.227.192.118", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44117, + "result": "fail" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28355" + }, + "source": { + "ip": "212.227.192.118" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_NGTUmcBTFzn_XoLIaG8", + "source": { + "@timestamp": "2018-11-27T00:30:32.403Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32532", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.56.243" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "164.132.56.243", + "type": "user-session" + } + }, + "sequence": 192437 + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_dGTUmcBTFzn_XoLIaG8", + "source": { + "@timestamp": "2018-11-27T00:30:32.404Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32532" + }, + "source": { + "ip": "164.132.56.243" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "164.132.56.243", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192438, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_tGTUmcBTFzn_XoLIaG8", + "source": { + "@timestamp": "2018-11-27T00:30:32.516Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32532", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "164.132.56.243" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "secondary": "164.132.56.243", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192439, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "164.132.56.243" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "n9GVUmcBTFzn_XoLvdvo", + "source": { + "@timestamp": "2018-11-27T00:33:23.454Z", + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "sequence": 184297, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "222.252.30.117", + "type": "user-session" + } + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "24978", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "222.252.30.117" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "oNGVUmcBTFzn_XoLvdvo", + "source": { + "@timestamp": "2018-11-27T00:33:23.455Z", + "source": { + "ip": "222.252.30.117" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "sequence": 184298, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "222.252.30.117", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "24978", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "odGVUmcBTFzn_XoLvdvo", + "source": { + "@timestamp": "2018-11-27T00:33:23.682Z", + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "24978", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "222.252.30.117" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "222.252.30.117", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 184299, + "result": "fail", + "session": "unset", + "data": { + "hostname": "222.252.30.117", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0dGUUmcBTFzn_XoLfr-C", + "source": { + "@timestamp": "2018-11-27T00:32:01.688Z", + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "194.35.114.10", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184294, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "24969", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "194.35.114.10" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0tGUUmcBTFzn_XoLfr-C", + "source": { + "@timestamp": "2018-11-27T00:32:01.689Z", + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "194.35.114.10" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "194.35.114.10", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184295, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24969" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "09GUUmcBTFzn_XoLfr-C", + "source": { + "@timestamp": "2018-11-27T00:32:01.975Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "194.35.114.10", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "194.35.114.10", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 184296, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24969" + }, + "source": { + "ip": "194.35.114.10" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FdGUUmcBTFzn_XoLVrxv", + "source": { + "@timestamp": "2018-11-27T00:31:51.428Z", + "source": { + "ip": "54.222.243.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "54.222.243.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184291, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24967" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtGUUmcBTFzn_XoLVrxv", + "source": { + "@timestamp": "2018-11-27T00:31:51.429Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "24967" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "54.222.243.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "54.222.243.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 184292 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "F9GUUmcBTFzn_XoLVrxv", + "source": { + "@timestamp": "2018-11-27T00:31:51.655Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "24967", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.222.243.60" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "54.222.243.60", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "54.222.243.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184293, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "iNGWUmcBTFzn_XoLZOnx", + "source": { + "@timestamp": "2018-11-27T00:34:06.215Z", + "auditd": { + "sequence": 186263, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "187.188.146.35", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31932" + }, + "source": { + "ip": "187.188.146.35" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "idGWUmcBTFzn_XoLZOnx", + "source": { + "@timestamp": "2018-11-27T00:34:06.216Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "187.188.146.35", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186264, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31932", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "187.188.146.35" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "itGWUmcBTFzn_XoLZOnx", + "source": { + "@timestamp": "2018-11-27T00:34:06.294Z", + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "187.188.146.35" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "187.188.146.35", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186265, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "31932", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "187.188.146.35" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5NGTUmcBTFzn_XoLoqzb", + "source": { + "@timestamp": "2018-11-27T00:31:05.454Z", + "source": { + "ip": "190.153.219.50" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43128, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "190.153.219.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12380", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5dGTUmcBTFzn_XoLoqzb", + "source": { + "@timestamp": "2018-11-27T00:31:05.454Z", + "process": { + "pid": "12380", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "190.153.219.50" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "190.153.219.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43129, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5tGTUmcBTFzn_XoLoqzb", + "source": { + "@timestamp": "2018-11-27T00:31:05.610Z", + "auditd": { + "sequence": 43130, + "result": "fail", + "session": "unset", + "data": { + "hostname": "190.153.219.50", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "190.153.219.50", + "type": "user-session" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "12380", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "190.153.219.50" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "f9GUUmcBTFzn_XoLl8LQ", + "source": { + "@timestamp": "2018-11-27T00:32:08.159Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12388", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.75.29.64" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.75.29.64", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43131, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gNGUUmcBTFzn_XoLl8LQ", + "source": { + "@timestamp": "2018-11-27T00:32:08.163Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.75.29.64", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43132, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12388", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.75.29.64" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gdGUUmcBTFzn_XoLl8LQ", + "source": { + "@timestamp": "2018-11-27T00:32:08.283Z", + "source": { + "ip": "51.75.29.64" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "51.75.29.64" + } + }, + "sequence": 43133, + "result": "fail", + "session": "unset", + "data": { + "hostname": "51.75.29.64", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12388", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "K9GUUmcBTFzn_XoLpsMN", + "source": { + "@timestamp": "2018-11-27T00:32:11.807Z", + "source": { + "ip": "159.203.94.6" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "159.203.94.6" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 43134, + "result": "fail" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "12390", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LNGUUmcBTFzn_XoLpsMN", + "source": { + "@timestamp": "2018-11-27T00:32:11.807Z", + "process": { + "pid": "12390", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.203.94.6" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "159.203.94.6", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43135 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LdGUUmcBTFzn_XoLpsMN", + "source": { + "@timestamp": "2018-11-27T00:32:11.839Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12390", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.203.94.6" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "159.203.94.6", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "159.203.94.6", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43136 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "49GUUmcBTFzn_XoL7sk-", + "source": { + "@timestamp": "2018-11-27T00:32:30.290Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "28397", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.255.35.58" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44118, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "51.255.35.58", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5NGUUmcBTFzn_XoL7sk-", + "source": { + "@timestamp": "2018-11-27T00:32:30.290Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "28397", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.255.35.58" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44119, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "51.255.35.58", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5dGUUmcBTFzn_XoL7sk-", + "source": { + "@timestamp": "2018-11-27T00:32:30.394Z", + "auditd": { + "sequence": 44120, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "51.255.35.58" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "51.255.35.58", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "28397", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.255.35.58" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZtKdUmcBTFzn_XoLzIys", + "source": { + "@timestamp": "2018-11-27T00:42:11.490Z", + "process": { + "pid": "28582", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "51.75.23.199" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.75.23.199", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44127, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9KdUmcBTFzn_XoLzIys", + "source": { + "@timestamp": "2018-11-27T00:42:11.494Z", + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "51.75.23.199", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44128, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "28582", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.75.23.199" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aNKdUmcBTFzn_XoLzIys", + "source": { + "@timestamp": "2018-11-27T00:42:11.598Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28582" + }, + "source": { + "ip": "51.75.23.199" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44129, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "51.75.23.199", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "51.75.23.199" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "atKdUmcBTFzn_XoLzYxc", + "source": { + "@timestamp": "2018-11-27T00:42:11.696Z", + "source": { + "ip": "180.76.100.10" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186281, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "180.76.100.10", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31982" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "a9KdUmcBTFzn_XoLzYxc", + "source": { + "@timestamp": "2018-11-27T00:42:11.697Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31982", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "180.76.100.10" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186282, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "180.76.100.10", + "type": "user-session", + "primary": "sshd" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bNKdUmcBTFzn_XoLzYxc", + "source": { + "@timestamp": "2018-11-27T00:42:11.935Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31982", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "180.76.100.10" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "180.76.100.10", + "type": "user-session" + } + }, + "sequence": 186283, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "180.76.100.10", + "terminal": "ssh" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "N9KfUmcBTFzn_XoLkLSD", + "source": { + "@timestamp": "2018-11-27T00:44:07.193Z", + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "115.146.127.134", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142297, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "process": { + "pid": "19404", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "115.146.127.134" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ONKfUmcBTFzn_XoLkLSD", + "source": { + "@timestamp": "2018-11-27T00:44:07.194Z", + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "115.146.127.134" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142298, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19404", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "115.146.127.134" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "OdKfUmcBTFzn_XoLkLSD", + "source": { + "@timestamp": "2018-11-27T00:44:07.394Z", + "process": { + "pid": "19404", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "115.146.127.134" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142299, + "result": "fail", + "session": "unset", + "data": { + "hostname": "115.146.127.134", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "object": { + "secondary": "115.146.127.134", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ftKgUmcBTFzn_XoLxc3Y", + "source": { + "@timestamp": "2018-11-27T00:45:26.381Z", + "auditd": { + "sequence": 184306, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "201.245.191.102", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25092" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "201.245.191.102" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "f9KgUmcBTFzn_XoLxc3Y", + "source": { + "@timestamp": "2018-11-27T00:45:26.382Z", + "source": { + "ip": "201.245.191.102" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "secondary": "201.245.191.102", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 184307, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "25092", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gNKgUmcBTFzn_XoLxc3Y", + "source": { + "@timestamp": "2018-11-27T00:45:26.503Z", + "process": { + "pid": "25092", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "201.245.191.102" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "201.245.191.102", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "201.245.191.102", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184308, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "59KeUmcBTFzn_XoLO5ZL", + "source": { + "@timestamp": "2018-11-27T00:42:39.841Z", + "process": { + "pid": "19396", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "209.97.173.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142294, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "209.97.173.192", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6NKeUmcBTFzn_XoLO5ZL", + "source": { + "@timestamp": "2018-11-27T00:42:39.843Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19396", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "209.97.173.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "secondary": "209.97.173.192", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142295, + "result": "fail", + "session": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dKeUmcBTFzn_XoLO5ZL", + "source": { + "@timestamp": "2018-11-27T00:42:40.035Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19396", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "209.97.173.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142296, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "209.97.173.192" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "209.97.173.192", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xdKbUmcBTFzn_XoL6WOD", + "source": { + "@timestamp": "2018-11-27T00:40:07.833Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32633" + }, + "source": { + "ip": "134.175.28.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192449, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "134.175.28.156", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xtKbUmcBTFzn_XoL6WOD", + "source": { + "@timestamp": "2018-11-27T00:40:07.834Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32633", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "134.175.28.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "134.175.28.156", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192450, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "x9KbUmcBTFzn_XoL6WOD", + "source": { + "@timestamp": "2018-11-27T00:40:08.034Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "134.175.28.156", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "134.175.28.156", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192451 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32633", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "134.175.28.156" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ntKbUmcBTFzn_XoL2WE6", + "source": { + "@timestamp": "2018-11-27T00:40:03.664Z", + "source": { + "ip": "79.134.4.138" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "79.134.4.138", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 186278 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31968", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "n9KbUmcBTFzn_XoL2WE6", + "source": { + "@timestamp": "2018-11-27T00:40:03.665Z", + "process": { + "pid": "31968", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "79.134.4.138" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "79.134.4.138", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186279, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "oNKbUmcBTFzn_XoL2WE6", + "source": { + "@timestamp": "2018-11-27T00:40:03.838Z", + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "sequence": 186280, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "79.134.4.138", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "79.134.4.138", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31968" + }, + "source": { + "ip": "79.134.4.138" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "lNKdUmcBTFzn_XoLiIaH", + "source": { + "@timestamp": "2018-11-27T00:41:54.077Z", + "source": { + "ip": "203.66.168.81" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "203.66.168.81", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142291 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19393" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ldKdUmcBTFzn_XoLiIaH", + "source": { + "@timestamp": "2018-11-27T00:41:54.078Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142292, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "203.66.168.81", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19393", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "203.66.168.81" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ltKdUmcBTFzn_XoLiIaH", + "source": { + "@timestamp": "2018-11-27T00:41:54.267Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19393" + }, + "source": { + "ip": "203.66.168.81" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "203.66.168.81" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "203.66.168.81", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142293 + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zNKeUmcBTFzn_XoLtKCT", + "source": { + "@timestamp": "2018-11-27T00:43:10.887Z", + "source": { + "ip": "116.93.119.13" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "116.93.119.13", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43137, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12451", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zdKeUmcBTFzn_XoLtKCT", + "source": { + "@timestamp": "2018-11-27T00:43:10.887Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12451", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "116.93.119.13" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "116.93.119.13", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43138 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ztKeUmcBTFzn_XoLtKCT", + "source": { + "@timestamp": "2018-11-27T00:43:11.127Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12451" + }, + "source": { + "ip": "116.93.119.13" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "116.93.119.13", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "116.93.119.13" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43139 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YdKbUmcBTFzn_XoLs16u", + "source": { + "@timestamp": "2018-11-27T00:39:54.048Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "28538", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "41.185.28.133" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "41.185.28.133", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44124, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YtKbUmcBTFzn_XoLs16u", + "source": { + "@timestamp": "2018-11-27T00:39:54.052Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "41.185.28.133", + "type": "user-session" + } + }, + "sequence": 44125, + "result": "fail" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "28538", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "41.185.28.133" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Y9KbUmcBTFzn_XoLs16u", + "source": { + "@timestamp": "2018-11-27T00:39:54.292Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28538", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "41.185.28.133" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "41.185.28.133", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "41.185.28.133" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44126, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "otOnUmcBTFzn_XoLmmNb", + "source": { + "@timestamp": "2018-11-27T00:52:54.001Z", + "process": { + "pid": "25143", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "190.0.10.138" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184318, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "190.0.10.138" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "o9OnUmcBTFzn_XoLmmNb", + "source": { + "@timestamp": "2018-11-27T00:52:54.002Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "25143", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "190.0.10.138" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "190.0.10.138", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184319, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "pNOnUmcBTFzn_XoLmmNb", + "source": { + "@timestamp": "2018-11-27T00:52:54.109Z", + "source": { + "ip": "190.0.10.138" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184320, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "190.0.10.138", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "190.0.10.138", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25143" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "59OrUmcBTFzn_XoL6cFF", + "source": { + "@timestamp": "2018-11-27T00:57:36.347Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192455, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "202.28.34.200", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32742", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.28.34.200" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6NOrUmcBTFzn_XoL6cFF", + "source": { + "@timestamp": "2018-11-27T00:57:36.348Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32742" + }, + "source": { + "ip": "202.28.34.200" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192456, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "202.28.34.200", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dOrUmcBTFzn_XoL6cFF", + "source": { + "@timestamp": "2018-11-27T00:57:36.577Z", + "process": { + "pid": "32742", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "202.28.34.200" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "202.28.34.200", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "202.28.34.200" + } + }, + "sequence": 192457 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "P9OsUmcBTFzn_XoLBsX4", + "source": { + "@timestamp": "2018-11-27T00:57:43.944Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12534", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.10.44.255" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "103.10.44.255", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43146, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QNOsUmcBTFzn_XoLBsX4", + "source": { + "@timestamp": "2018-11-27T00:57:43.948Z", + "process": { + "pid": "12534", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.10.44.255" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43147, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "103.10.44.255" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QdOsUmcBTFzn_XoLBsX4", + "source": { + "@timestamp": "2018-11-27T00:57:44.144Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12534", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.10.44.255" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "103.10.44.255", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "103.10.44.255", + "type": "user-session" + } + }, + "sequence": 43148, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FNOpUmcBTFzn_XoLlY-1", + "source": { + "@timestamp": "2018-11-27T00:55:03.881Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "146.0.105.29", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186287 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32040", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "146.0.105.29" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FdOpUmcBTFzn_XoLlY-1", + "source": { + "@timestamp": "2018-11-27T00:55:03.882Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "secondary": "146.0.105.29", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 186288, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32040", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "146.0.105.29" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtOpUmcBTFzn_XoLlY-1", + "source": { + "@timestamp": "2018-11-27T00:55:04.004Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "146.0.105.29", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186289, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "146.0.105.29" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32040", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "146.0.105.29" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtOpUmcBTFzn_XoL5pZA", + "source": { + "@timestamp": "2018-11-27T00:55:24.501Z", + "process": { + "pid": "12520", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.19.148.142" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "217.19.148.142", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43143, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "F9OpUmcBTFzn_XoL5pZA", + "source": { + "@timestamp": "2018-11-27T00:55:24.501Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12520" + }, + "source": { + "ip": "217.19.148.142" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "217.19.148.142", + "type": "user-session" + } + }, + "sequence": 43144, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GNOpUmcBTFzn_XoL5pZA", + "source": { + "@timestamp": "2018-11-27T00:55:24.637Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12520", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.19.148.142" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "217.19.148.142" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "217.19.148.142", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43145, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2NOmUmcBTFzn_XoLfUpL", + "source": { + "@timestamp": "2018-11-27T00:51:41.026Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "59.120.243.8", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184315, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25134", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "59.120.243.8" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2dOmUmcBTFzn_XoLfUpL", + "source": { + "@timestamp": "2018-11-27T00:51:41.027Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "59.120.243.8", + "type": "user-session" + } + }, + "sequence": 184316, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25134", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "59.120.243.8" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2tOmUmcBTFzn_XoLfUpL", + "source": { + "@timestamp": "2018-11-27T00:51:41.202Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25134" + }, + "source": { + "ip": "59.120.243.8" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "59.120.243.8", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "59.120.243.8", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 184317, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "h9OpUmcBTFzn_XoLWIru", + "source": { + "@timestamp": "2018-11-27T00:54:48.324Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "32723", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "124.6.139.242" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "124.6.139.242", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 192452, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "iNOpUmcBTFzn_XoLWIru", + "source": { + "@timestamp": "2018-11-27T00:54:48.325Z", + "process": { + "pid": "32723", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "124.6.139.242" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "124.6.139.242", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192453, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "idOpUmcBTFzn_XoLWIru", + "source": { + "@timestamp": "2018-11-27T00:54:48.556Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32723", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "124.6.139.242" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "124.6.139.242" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "124.6.139.242", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192454, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YtOqUmcBTFzn_XoLnqU0", + "source": { + "@timestamp": "2018-11-27T00:56:11.591Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "28851", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "93.152.166.29" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44139, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "secondary": "93.152.166.29", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Y9OqUmcBTFzn_XoLnqU0", + "source": { + "@timestamp": "2018-11-27T00:56:11.591Z", + "source": { + "ip": "93.152.166.29" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "93.152.166.29", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44140, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "28851" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZNOqUmcBTFzn_XoLnqU0", + "source": { + "@timestamp": "2018-11-27T00:56:11.743Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "28851", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "93.152.166.29" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "93.152.166.29", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44141, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "93.152.166.29", + "op": "PAM:bad_ident" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "q9OnUmcBTFzn_XoLxWfH", + "source": { + "@timestamp": "2018-11-27T00:53:05.113Z", + "process": { + "pid": "28796", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "222.117.50.66" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44136, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "222.117.50.66", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rNOnUmcBTFzn_XoLxWfH", + "source": { + "@timestamp": "2018-11-27T00:53:05.113Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "28796", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "222.117.50.66" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "222.117.50.66", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 44137 + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rdOnUmcBTFzn_XoLxWfH", + "source": { + "@timestamp": "2018-11-27T00:53:05.277Z", + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "28796", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "222.117.50.66" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "222.117.50.66", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44138, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "222.117.50.66", + "op": "PAM:bad_ident" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_tSyUmcBTFzn_XoLI0rV", + "source": { + "@timestamp": "2018-11-27T01:04:24.552Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32096", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "115.146.127.133" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186305, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "115.146.127.133" + }, + "how": "/usr/sbin/sshd" + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_9SyUmcBTFzn_XoLI0rV", + "source": { + "@timestamp": "2018-11-27T01:04:24.554Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32096", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "115.146.127.133" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186306, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "115.146.127.133", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ANSyUmcBTFzn_XoLI0vV", + "source": { + "@timestamp": "2018-11-27T01:04:24.758Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32096" + }, + "source": { + "ip": "115.146.127.133" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186307, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "115.146.127.133" + }, + "summary": { + "object": { + "secondary": "115.146.127.133", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "oNSxUmcBTFzn_XoL-0d6", + "source": { + "@timestamp": "2018-11-27T01:04:14.224Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32089", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186302, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "odSxUmcBTFzn_XoL-0d6", + "source": { + "@timestamp": "2018-11-27T01:04:14.225Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32089" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186303, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "otSxUmcBTFzn_XoL-0d6", + "source": { + "@timestamp": "2018-11-27T01:04:14.256Z", + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32089" + }, + "source": { + "ip": "107.170.65.109" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186304, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JNSyUmcBTFzn_XoL2FqQ", + "source": { + "@timestamp": "2018-11-27T01:05:10.789Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186308 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32100", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JdSyUmcBTFzn_XoL2FqQ", + "source": { + "@timestamp": "2018-11-27T01:05:10.790Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32100", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186309, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JtSyUmcBTFzn_XoL2FqQ", + "source": { + "@timestamp": "2018-11-27T01:05:10.821Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186310, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32100", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9tSxUmcBTFzn_XoLATF1", + "source": { + "@timestamp": "2018-11-27T01:03:10.216Z", + "auditd": { + "sequence": 142318, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "81.174.25.52" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "process": { + "pid": "19519", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.174.25.52" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "99SxUmcBTFzn_XoLATF1", + "source": { + "@timestamp": "2018-11-27T01:03:10.217Z", + "process": { + "pid": "19519", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.174.25.52" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "81.174.25.52", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142319 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-NSxUmcBTFzn_XoLATF1", + "source": { + "@timestamp": "2018-11-27T01:03:10.360Z", + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "81.174.25.52" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "81.174.25.52", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142320, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19519", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.174.25.52" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "69SyUmcBTFzn_XoLSE3q", + "source": { + "@timestamp": "2018-11-27T01:04:34.043Z", + "source": { + "ip": "110.170.166.101" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "110.170.166.101", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43149, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12572", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7NSyUmcBTFzn_XoLSE3q", + "source": { + "@timestamp": "2018-11-27T01:04:34.043Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12572", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "110.170.166.101" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43150, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "110.170.166.101" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7dSyUmcBTFzn_XoLSE3q", + "source": { + "@timestamp": "2018-11-27T01:04:34.263Z", + "auditd": { + "summary": { + "object": { + "secondary": "110.170.166.101", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 43151, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "110.170.166.101", + "op": "PAM:bad_ident" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12572" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "110.170.166.101" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "R9SzUmcBTFzn_XoLbGcD", + "source": { + "@timestamp": "2018-11-27T01:05:48.570Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192461, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.155.249.205", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "316", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "178.155.249.205" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SNSzUmcBTFzn_XoLbGcD", + "source": { + "@timestamp": "2018-11-27T01:05:48.571Z", + "process": { + "pid": "316", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.155.249.205" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192462, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "178.155.249.205", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SdSzUmcBTFzn_XoLbGcD", + "source": { + "@timestamp": "2018-11-27T01:05:48.697Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "316", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.155.249.205" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "178.155.249.205" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "178.155.249.205", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192463 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wtSxUmcBTFzn_XoLPTZz", + "source": { + "@timestamp": "2018-11-27T01:03:25.577Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32085", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186296, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "w9SxUmcBTFzn_XoLPTZz", + "source": { + "@timestamp": "2018-11-27T01:03:25.578Z", + "process": { + "pid": "32085", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186297, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xNSxUmcBTFzn_XoLPTZz", + "source": { + "@timestamp": "2018-11-27T01:03:25.609Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186298, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32085", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jdSxUmcBTFzn_XoLZToB", + "source": { + "@timestamp": "2018-11-27T01:03:35.702Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32087", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.131.37.34" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "104.131.37.34", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186299, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jtSxUmcBTFzn_XoLZToB", + "source": { + "@timestamp": "2018-11-27T01:03:35.707Z", + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "104.131.37.34" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186300 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32087", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.131.37.34" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "j9SxUmcBTFzn_XoLZToB", + "source": { + "@timestamp": "2018-11-27T01:03:35.739Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "104.131.37.34" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "104.131.37.34", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "104.131.37.34", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186301, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32087", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ydSzUmcBTFzn_XoLemeL", + "source": { + "@timestamp": "2018-11-27T01:05:52.289Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192464, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "195.68.29.234" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "323", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "195.68.29.234" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ytSzUmcBTFzn_XoLemeL", + "source": { + "@timestamp": "2018-11-27T01:05:52.290Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "195.68.29.234" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192465, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "323", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "195.68.29.234" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "y9SzUmcBTFzn_XoLemeL", + "source": { + "@timestamp": "2018-11-27T01:05:52.396Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "195.68.29.234" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "195.68.29.234" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192466, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "323" + }, + "source": { + "ip": "195.68.29.234" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sNS4UmcBTFzn_XoLe9YN", + "source": { + "@timestamp": "2018-11-27T01:11:20.098Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32151", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186337, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sdS4UmcBTFzn_XoLe9YN", + "source": { + "@timestamp": "2018-11-27T01:11:20.099Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32151", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186338 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "stS4UmcBTFzn_XoLe9YN", + "source": { + "@timestamp": "2018-11-27T01:11:20.130Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32151" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 186339, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MNS5UmcBTFzn_XoLKuU8", + "source": { + "@timestamp": "2018-11-27T01:12:04.946Z", + "auditd": { + "sequence": 192488, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "secondary": "192.208.184.216", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "428", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "192.208.184.216" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MdS5UmcBTFzn_XoLKuU8", + "source": { + "@timestamp": "2018-11-27T01:12:04.947Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192489, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "192.208.184.216", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "428", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "192.208.184.216" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MtS5UmcBTFzn_XoLKuU8", + "source": { + "@timestamp": "2018-11-27T01:12:04.962Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "428", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "192.208.184.216" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192490, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "192.208.184.216" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "192.208.184.216", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GtW7UmcBTFzn_XoLNhOL", + "source": { + "@timestamp": "2018-11-27T01:14:19.169Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32173" + }, + "source": { + "ip": "73.15.91.251" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "73.15.91.251", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186350 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "G9W7UmcBTFzn_XoLNhOL", + "source": { + "@timestamp": "2018-11-27T01:14:19.170Z", + "source": { + "ip": "73.15.91.251" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186351, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "73.15.91.251" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32173", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HNW7UmcBTFzn_XoLNhOL", + "source": { + "@timestamp": "2018-11-27T01:14:19.234Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32173", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "73.15.91.251" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186352, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "73.15.91.251", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "73.15.91.251", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "R9W6UmcBTFzn_XoL9Aya", + "source": { + "@timestamp": "2018-11-27T01:14:02.288Z", + "process": { + "pid": "32171", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "201.144.84.82" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "201.144.84.82", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186347 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SNW6UmcBTFzn_XoL9Aya", + "source": { + "@timestamp": "2018-11-27T01:14:02.289Z", + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "201.144.84.82", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186348, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32171", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "201.144.84.82" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SdW6UmcBTFzn_XoL9Aya", + "source": { + "@timestamp": "2018-11-27T01:14:02.352Z", + "source": { + "ip": "201.144.84.82" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "201.144.84.82", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186349, + "result": "fail", + "session": "unset", + "data": { + "hostname": "201.144.84.82", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32171", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "19W7UmcBTFzn_XoLRBML", + "source": { + "@timestamp": "2018-11-27T01:14:22.625Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32175", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 186353 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2NW7UmcBTFzn_XoLRBML", + "source": { + "@timestamp": "2018-11-27T01:14:22.627Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186354, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32175", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2dW7UmcBTFzn_XoLRBML", + "source": { + "@timestamp": "2018-11-27T01:14:22.658Z", + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32175" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186355, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ltW6UmcBTFzn_XoLawEv", + "source": { + "@timestamp": "2018-11-27T01:13:27.109Z", + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186344, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32168" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "l9W6UmcBTFzn_XoLawEv", + "source": { + "@timestamp": "2018-11-27T01:13:27.110Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32168", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186345, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mNW6UmcBTFzn_XoLawEv", + "source": { + "@timestamp": "2018-11-27T01:13:27.142Z", + "process": { + "pid": "32168", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "107.170.65.109" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + } + }, + "sequence": 186346, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gdS5UmcBTFzn_XoLl-71", + "source": { + "@timestamp": "2018-11-27T01:12:33.036Z", + "auditd": { + "sequence": 186341, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32161" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gtS5UmcBTFzn_XoLl-71", + "source": { + "@timestamp": "2018-11-27T01:12:33.037Z", + "auditd": { + "sequence": 186342, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32161", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "g9S5UmcBTFzn_XoLl-71", + "source": { + "@timestamp": "2018-11-27T01:12:33.179Z", + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32161", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "46.148.18.163", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "46.148.18.163", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 186343, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LdW7UmcBTFzn_XoLDA9a", + "source": { + "@timestamp": "2018-11-27T01:14:08.367Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "438" + }, + "source": { + "ip": "193.70.38.229" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "193.70.38.229" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192491 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LtW7UmcBTFzn_XoLDA9a", + "source": { + "@timestamp": "2018-11-27T01:14:08.368Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "438" + }, + "source": { + "ip": "193.70.38.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192492, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "193.70.38.229", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "L9W7UmcBTFzn_XoLDA9a", + "source": { + "@timestamp": "2018-11-27T01:14:08.480Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "193.70.38.229", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "193.70.38.229" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192493 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "438", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "193.70.38.229" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "M9S5UmcBTFzn_XoLcevO", + "source": { + "@timestamp": "2018-11-27T01:12:23.261Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186340 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32158", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SdW9UmcBTFzn_XoLHz_j", + "source": { + "@timestamp": "2018-11-27T01:16:24.437Z", + "auditd": { + "sequence": 44170, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "37.187.113.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "29260", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.187.113.229" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "StW9UmcBTFzn_XoLHz_j", + "source": { + "@timestamp": "2018-11-27T01:16:24.437Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "29260", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.187.113.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44171, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "37.187.113.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "S9W9UmcBTFzn_XoLHz_j", + "source": { + "@timestamp": "2018-11-27T01:16:24.541Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "29260", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.187.113.229" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "sequence": 44172, + "result": "fail", + "session": "unset", + "data": { + "hostname": "37.187.113.229", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "37.187.113.229" + } + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "q9W9UmcBTFzn_XoLJj-I", + "source": { + "@timestamp": "2018-11-27T01:16:26.142Z", + "process": { + "pid": "25331", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.249.205.78" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "103.249.205.78" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184334, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rNW9UmcBTFzn_XoLJj-I", + "source": { + "@timestamp": "2018-11-27T01:16:26.143Z", + "process": { + "pid": "25331", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.249.205.78" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184335, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "103.249.205.78", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rdW9UmcBTFzn_XoLJj-I", + "source": { + "@timestamp": "2018-11-27T01:16:26.372Z", + "source": { + "ip": "103.249.205.78" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "103.249.205.78", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "103.249.205.78", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184336, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25331" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "b9W8UmcBTFzn_XoLiTGg", + "source": { + "@timestamp": "2018-11-27T01:15:45.974Z", + "auditd": { + "sequence": 186365, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32190", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cNW8UmcBTFzn_XoLiTGg", + "source": { + "@timestamp": "2018-11-27T01:15:45.975Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186366, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.18.163", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32190", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "46.148.18.163" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cdW8UmcBTFzn_XoLiTGg", + "source": { + "@timestamp": "2018-11-27T01:15:46.119Z", + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32190", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.18.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "46.148.18.163" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "46.148.18.163" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186367, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtW8UmcBTFzn_XoLkzMm", + "source": { + "@timestamp": "2018-11-27T01:15:48.412Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32192" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186368, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "F9W8UmcBTFzn_XoLkzMm", + "source": { + "@timestamp": "2018-11-27T01:15:48.413Z", + "process": { + "pid": "32192", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186369, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GNW8UmcBTFzn_XoLkzMm", + "source": { + "@timestamp": "2018-11-27T01:15:48.444Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186370, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32192", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "g9W7UmcBTFzn_XoL5iPr", + "source": { + "@timestamp": "2018-11-27T01:15:04.321Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32185" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186359, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "hNW7UmcBTFzn_XoL5iPr", + "source": { + "@timestamp": "2018-11-27T01:15:04.322Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186360, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32185", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "hdW7UmcBTFzn_XoL5iPr", + "source": { + "@timestamp": "2018-11-27T01:15:04.353Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32185", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186361, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ddW7UmcBTFzn_XoLfxpa", + "source": { + "@timestamp": "2018-11-27T01:14:37.808Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "128.199.91.82", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186356, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32178", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.91.82" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dtW7UmcBTFzn_XoLfxpa", + "source": { + "@timestamp": "2018-11-27T01:14:37.809Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32178" + }, + "source": { + "ip": "128.199.91.82" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "128.199.91.82" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186357, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "d9W7UmcBTFzn_XoLfxpa", + "source": { + "@timestamp": "2018-11-27T01:14:38.002Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "128.199.91.82", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "128.199.91.82", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186358, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32178" + }, + "source": { + "ip": "128.199.91.82" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "I9W8UmcBTFzn_XoLdzAT", + "source": { + "@timestamp": "2018-11-27T01:15:41.225Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186362, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "89.36.221.229", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32188", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.36.221.229" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JNW8UmcBTFzn_XoLdzAT", + "source": { + "@timestamp": "2018-11-27T01:15:41.226Z", + "source": { + "ip": "89.36.221.229" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186363, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "89.36.221.229" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32188", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JdW8UmcBTFzn_XoLdzAT", + "source": { + "@timestamp": "2018-11-27T01:15:41.329Z", + "source": { + "ip": "89.36.221.229" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "89.36.221.229", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "89.36.221.229", + "type": "user-session" + } + }, + "sequence": 186364, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32188", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5dW7UmcBTFzn_XoLcBda", + "source": { + "@timestamp": "2018-11-27T01:14:33.960Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "131.100.219.3", + "type": "user-session" + } + }, + "sequence": 44161, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "29218", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "131.100.219.3" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5tW7UmcBTFzn_XoLcBda", + "source": { + "@timestamp": "2018-11-27T01:14:33.964Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "29218", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "131.100.219.3" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "131.100.219.3" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44162, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "59W7UmcBTFzn_XoLcBda", + "source": { + "@timestamp": "2018-11-27T01:14:34.176Z", + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "29218", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "131.100.219.3" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "131.100.219.3" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "131.100.219.3", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44163, + "result": "fail" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "D9W8UmcBTFzn_XoL6Do7", + "source": { + "@timestamp": "2018-11-27T01:16:10.192Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32194", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.66.86.4" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "81.66.86.4" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186371, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ENW8UmcBTFzn_XoL6Do7", + "source": { + "@timestamp": "2018-11-27T01:16:10.194Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "81.66.86.4" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186372, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32194" + }, + "source": { + "ip": "81.66.86.4" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "EdW8UmcBTFzn_XoL6Do7", + "source": { + "@timestamp": "2018-11-27T01:16:10.308Z", + "source": { + "ip": "81.66.86.4" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "81.66.86.4", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186373, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "81.66.86.4" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32194", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cNW8UmcBTFzn_XoLvDaC", + "source": { + "@timestamp": "2018-11-27T01:15:58.995Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "204.145.5.2", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44164, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "29245", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "204.145.5.2" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cdW8UmcBTFzn_XoLvDaC", + "source": { + "@timestamp": "2018-11-27T01:15:58.999Z", + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "204.145.5.2", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 44165, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "29245", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "204.145.5.2" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ctW8UmcBTFzn_XoLvDaC", + "source": { + "@timestamp": "2018-11-27T01:15:59.199Z", + "process": { + "pid": "29245", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "204.145.5.2" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "204.145.5.2", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "204.145.5.2", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44166, + "result": "fail" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "f9W8UmcBTFzn_XoL_Dt-", + "source": { + "@timestamp": "2018-11-27T01:16:15.376Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "51.15.40.125", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 44167 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29255" + }, + "source": { + "ip": "51.15.40.125" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gNW8UmcBTFzn_XoL_Dt-", + "source": { + "@timestamp": "2018-11-27T01:16:15.376Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.15.40.125", + "type": "user-session" + } + }, + "sequence": 44168 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29255" + }, + "source": { + "ip": "51.15.40.125" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gdW8UmcBTFzn_XoL_Dt-", + "source": { + "@timestamp": "2018-11-27T01:16:15.488Z", + "auditd": { + "sequence": 44169, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "51.15.40.125" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "51.15.40.125", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29255" + }, + "source": { + "ip": "51.15.40.125" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "INXAUmcBTFzn_XoLvI6Q", + "source": { + "@timestamp": "2018-11-27T01:20:21.158Z", + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "138.68.50.250", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 142333, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19612", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "138.68.50.250" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "IdXAUmcBTFzn_XoLvI6Q", + "source": { + "@timestamp": "2018-11-27T01:20:21.159Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19612", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "138.68.50.250" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "138.68.50.250", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142334, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ItXAUmcBTFzn_XoLvI6Q", + "source": { + "@timestamp": "2018-11-27T01:20:21.200Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19612" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "138.68.50.250" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142335, + "result": "fail", + "session": "unset", + "data": { + "hostname": "138.68.50.250", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "138.68.50.250", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BdXAUmcBTFzn_XoLyZBk", + "source": { + "@timestamp": "2018-11-27T01:20:24.441Z", + "event": { + "category": "system-services", + "type": "service_start", + "action": "started-service", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "name": "systemd", + "exe": "/lib/systemd/systemd", + "pid": "1" + }, + "auditd": { + "session": "unset", + "data": { + "unit": "apt-daily" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "apt-daily", + "type": "service" + }, + "how": "/lib/systemd/systemd" + }, + "sequence": 184343, + "result": "success" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BtXAUmcBTFzn_XoLyZBk", + "source": { + "@timestamp": "2018-11-27T01:20:24.441Z", + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "sequence": 184344, + "result": "success", + "session": "unset", + "data": { + "unit": "apt-daily" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "apt-daily", + "type": "service" + }, + "how": "/lib/systemd/systemd" + } + }, + "event": { + "type": "service_stop", + "action": "stopped-service", + "module": "auditd", + "category": "system-services" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "1", + "name": "systemd", + "exe": "/lib/systemd/systemd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "yNW_UmcBTFzn_XoL_n0W", + "source": { + "@timestamp": "2018-11-27T01:19:32.396Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186392, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32225", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ydW_UmcBTFzn_XoL_n0W", + "source": { + "@timestamp": "2018-11-27T01:19:32.398Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186393, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32225", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ytW_UmcBTFzn_XoL_n0W", + "source": { + "@timestamp": "2018-11-27T01:19:32.428Z", + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32225" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186394 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PNXAUmcBTFzn_XoLAX59", + "source": { + "@timestamp": "2018-11-27T01:19:33.267Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "83.222.240.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 192500 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "473", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "83.222.240.60" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PdXAUmcBTFzn_XoLAX59", + "source": { + "@timestamp": "2018-11-27T01:19:33.268Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "473", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "83.222.240.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "83.222.240.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192501, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PtXAUmcBTFzn_XoLAX59", + "source": { + "@timestamp": "2018-11-27T01:19:33.371Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "473" + }, + "source": { + "ip": "83.222.240.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "83.222.240.60", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "83.222.240.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192502, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "L9XBUmcBTFzn_XoLuKRN", + "source": { + "@timestamp": "2018-11-27T01:21:25.603Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186398, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "153.254.115.57", + "type": "user-session" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32236", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "153.254.115.57" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MNXBUmcBTFzn_XoLuKRN", + "source": { + "@timestamp": "2018-11-27T01:21:25.604Z", + "auditd": { + "sequence": 186399, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "153.254.115.57", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32236", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "153.254.115.57" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MdXBUmcBTFzn_XoLuKRN", + "source": { + "@timestamp": "2018-11-27T01:21:25.817Z", + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32236" + }, + "source": { + "ip": "153.254.115.57" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "153.254.115.57", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "153.254.115.57", + "type": "user-session" + } + }, + "sequence": 186400, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xtXCUmcBTFzn_XoLq7my", + "source": { + "@timestamp": "2018-11-27T01:22:27.912Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "118.163.107.56", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186404, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32246", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "118.163.107.56" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "x9XCUmcBTFzn_XoLq7my", + "source": { + "@timestamp": "2018-11-27T01:22:27.914Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "process": { + "pid": "32246", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "118.163.107.56" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "118.163.107.56", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186405, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "yNXCUmcBTFzn_XoLq7my", + "source": { + "@timestamp": "2018-11-27T01:22:28.078Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32246" + }, + "source": { + "ip": "118.163.107.56" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "118.163.107.56", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "118.163.107.56", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186406 + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8dXBUmcBTFzn_XoL0KVY", + "source": { + "@timestamp": "2018-11-27T01:21:31.757Z", + "process": { + "pid": "32238", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186401, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8tXBUmcBTFzn_XoL0KVY", + "source": { + "@timestamp": "2018-11-27T01:21:31.758Z", + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186402, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32238" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "89XBUmcBTFzn_XoL0KVY", + "source": { + "@timestamp": "2018-11-27T01:21:31.789Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186403, + "result": "fail" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32238", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_dXAUmcBTFzn_XoL55GP", + "source": { + "@timestamp": "2018-11-27T01:20:32.165Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32229", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186395, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_tXAUmcBTFzn_XoL55GP", + "source": { + "@timestamp": "2018-11-27T01:20:32.166Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32229", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186396, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_9XAUmcBTFzn_XoL55GP", + "source": { + "@timestamp": "2018-11-27T01:20:32.197Z", + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32229", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186397, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xNXCUmcBTFzn_XoLQq83", + "source": { + "@timestamp": "2018-11-27T01:22:00.907Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12675", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "145.239.237.80" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "145.239.237.80" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43161 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xdXCUmcBTFzn_XoLQq83", + "source": { + "@timestamp": "2018-11-27T01:22:00.907Z", + "source": { + "ip": "145.239.237.80" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "145.239.237.80", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43162, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "12675", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "xtXCUmcBTFzn_XoLQq83", + "source": { + "@timestamp": "2018-11-27T01:22:01.039Z", + "source": { + "ip": "145.239.237.80" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "145.239.237.80", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "145.239.237.80", + "type": "user-session" + } + }, + "sequence": 43163, + "result": "fail" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12675", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "o9XAUmcBTFzn_XoLKIGO", + "source": { + "@timestamp": "2018-11-27T01:19:43.268Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "141.89.111.68", + "type": "user-session" + } + }, + "sequence": 192503, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "475", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "141.89.111.68" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "pNXAUmcBTFzn_XoLKIGO", + "source": { + "@timestamp": "2018-11-27T01:19:43.269Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "475", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "141.89.111.68" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "141.89.111.68", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192504 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "pdXAUmcBTFzn_XoLKIGO", + "source": { + "@timestamp": "2018-11-27T01:19:43.395Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "141.89.111.68" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "141.89.111.68", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192505 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "475", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "141.89.111.68" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "O9XAUmcBTFzn_XoLzZAP", + "source": { + "@timestamp": "2018-11-27T01:20:25.380Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "195.84.49.20", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44179, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "29341", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "195.84.49.20" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PNXAUmcBTFzn_XoLzZAP", + "source": { + "@timestamp": "2018-11-27T01:20:25.380Z", + "source": { + "ip": "195.84.49.20" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "195.84.49.20", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 44180, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "29341", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PdXAUmcBTFzn_XoLzZAP", + "source": { + "@timestamp": "2018-11-27T01:20:25.516Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "195.84.49.20" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44181, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "195.84.49.20" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "195.84.49.20", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29341" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SNXCUmcBTFzn_XoLvLq2", + "source": { + "@timestamp": "2018-11-27T01:22:32.268Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32248" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186407, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SdXCUmcBTFzn_XoLvLq2", + "source": { + "@timestamp": "2018-11-27T01:22:32.269Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186408, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32248", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "StXCUmcBTFzn_XoLvLq2", + "source": { + "@timestamp": "2018-11-27T01:22:32.300Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186409, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32248", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9XCUmcBTFzn_XoL-sCa", + "source": { + "@timestamp": "2018-11-27T01:22:48.071Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "490", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "68.183.62.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "68.183.62.109", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 192506, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dNXCUmcBTFzn_XoL-sCa", + "source": { + "@timestamp": "2018-11-27T01:22:48.073Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "68.183.62.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 192507, + "result": "fail" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "490", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "68.183.62.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ddXCUmcBTFzn_XoL-sCa", + "source": { + "@timestamp": "2018-11-27T01:22:48.104Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "490" + }, + "source": { + "ip": "68.183.62.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "68.183.62.109", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "68.183.62.109" + } + }, + "sequence": 192508, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "stXDUmcBTFzn_XoLwdCO", + "source": { + "@timestamp": "2018-11-27T01:23:39.044Z", + "process": { + "pid": "502", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "80.127.254.119" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "sequence": 192511, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "80.127.254.119" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "s9XDUmcBTFzn_XoLwdCO", + "source": { + "@timestamp": "2018-11-27T01:23:39.045Z", + "process": { + "pid": "502", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "80.127.254.119" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "sequence": 192512, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "80.127.254.119", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "tNXDUmcBTFzn_XoLwdCO", + "source": { + "@timestamp": "2018-11-27T01:23:39.260Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "502", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "80.127.254.119" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "80.127.254.119" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "80.127.254.119", + "type": "user-session" + } + }, + "sequence": 192513, + "result": "fail" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TtXDUmcBTFzn_XoLkcxS", + "source": { + "@timestamp": "2018-11-27T01:23:26.696Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32251", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "93.104.213.19" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186410, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "93.104.213.19", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "T9XDUmcBTFzn_XoLkcxS", + "source": { + "@timestamp": "2018-11-27T01:23:26.697Z", + "source": { + "ip": "93.104.213.19" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "93.104.213.19", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186411, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32251", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UNXDUmcBTFzn_XoLkcxS", + "source": { + "@timestamp": "2018-11-27T01:23:26.812Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32251", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "93.104.213.19" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186412, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "93.104.213.19", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "93.104.213.19", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ctXCUmcBTFzn_XoL3b2F", + "source": { + "@timestamp": "2018-11-27T01:22:40.662Z", + "source": { + "ip": "185.238.72.255" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "sequence": 43164, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "185.238.72.255", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12678", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9XCUmcBTFzn_XoL3b2F", + "source": { + "@timestamp": "2018-11-27T01:22:40.662Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12678", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.238.72.255" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "185.238.72.255", + "type": "user-session" + } + }, + "sequence": 43165, + "result": "fail" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dNXCUmcBTFzn_XoL3b2F", + "source": { + "@timestamp": "2018-11-27T01:22:40.794Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12678" + }, + "source": { + "ip": "185.238.72.255" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "185.238.72.255", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "185.238.72.255", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43166, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SNXDUmcBTFzn_XoLtc-O", + "source": { + "@timestamp": "2018-11-27T01:23:35.972Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32253", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186413, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SdXDUmcBTFzn_XoLtc-O", + "source": { + "@timestamp": "2018-11-27T01:23:35.973Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32253", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 186414, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "StXDUmcBTFzn_XoLtc-O", + "source": { + "@timestamp": "2018-11-27T01:23:36.003Z", + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32253", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186415, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNXDUmcBTFzn_XoLps53", + "source": { + "@timestamp": "2018-11-27T01:23:32.109Z", + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "125.227.77.88" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "125.227.77.88" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "125.227.77.88", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 184346 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "25735", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HNXDUmcBTFzn_XoLp84D", + "source": { + "@timestamp": "2018-11-27T01:23:32.249Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "500", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "142.93.109.33" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "142.93.109.33", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "142.93.109.33", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192510, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rdXDUmcBTFzn_XoLZcgh", + "source": { + "@timestamp": "2018-11-27T01:23:15.383Z", + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "25733", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "125.227.77.88" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "125.227.77.88", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "125.227.77.88", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 184345, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "v9XDUmcBTFzn_XoLIMO9", + "source": { + "@timestamp": "2018-11-27T01:22:57.875Z", + "process": { + "pid": "497", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "94.16.115.155" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "94.16.115.155" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "94.16.115.155", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192509, + "result": "fail" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ndXDUmcBTFzn_XoL69Tr", + "source": { + "@timestamp": "2018-11-27T01:23:49.884Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "147.229.176.122" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "147.229.176.122", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43167, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12686" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ntXDUmcBTFzn_XoL69Tr", + "source": { + "@timestamp": "2018-11-27T01:23:49.884Z", + "source": { + "ip": "147.229.176.122" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "147.229.176.122", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43168 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12686" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "n9XDUmcBTFzn_XoL69Tr", + "source": { + "@timestamp": "2018-11-27T01:23:50.008Z", + "process": { + "pid": "12686", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "147.229.176.122" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "147.229.176.122", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 43169, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "147.229.176.122", + "terminal": "ssh" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNXDUmcBTFzn_XoL99V8", + "source": { + "@timestamp": "2018-11-27T01:23:52.849Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25737" + }, + "source": { + "ip": "125.227.77.88" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "125.227.77.88" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184347, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CdXDUmcBTFzn_XoL99V8", + "source": { + "@timestamp": "2018-11-27T01:23:52.850Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25737" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "125.227.77.88" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "125.227.77.88", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 184348 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CtXDUmcBTFzn_XoL99V8", + "source": { + "@timestamp": "2018-11-27T01:23:53.128Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "125.227.77.88", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "secondary": "125.227.77.88", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 184349 + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25737", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "125.227.77.88" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9dXFUmcBTFzn_XoLyvxi", + "source": { + "@timestamp": "2018-11-27T01:25:52.376Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32272" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186422, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9tXFUmcBTFzn_XoLyvxi", + "source": { + "@timestamp": "2018-11-27T01:25:52.377Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 186423, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32272", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "99XFUmcBTFzn_XoLyvxi", + "source": { + "@timestamp": "2018-11-27T01:25:52.407Z", + "process": { + "pid": "32272", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186424, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aNXFUmcBTFzn_XoLzv1N", + "source": { + "@timestamp": "2018-11-27T01:25:53.380Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "524", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.236.181.158" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "104.236.181.158", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192520, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "adXFUmcBTFzn_XoLzv1N", + "source": { + "@timestamp": "2018-11-27T01:25:53.381Z", + "process": { + "pid": "524", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.236.181.158" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192521, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "104.236.181.158", + "type": "user-session", + "primary": "sshd" + } + } + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "atXFUmcBTFzn_XoLzv1N", + "source": { + "@timestamp": "2018-11-27T01:25:53.425Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "104.236.181.158" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "104.236.181.158" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192522, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "524", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.236.181.158" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "q9XDUmcBTFzn_XoL2tJr", + "source": { + "@timestamp": "2018-11-27T01:23:45.409Z", + "process": { + "pid": "19632", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "46.101.192.45" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "46.101.192.45", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 142336, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rNXDUmcBTFzn_XoL2tJr", + "source": { + "@timestamp": "2018-11-27T01:23:45.410Z", + "source": { + "ip": "46.101.192.45" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "46.101.192.45" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142337, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "process": { + "pid": "19632", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rdXDUmcBTFzn_XoL2tJr", + "source": { + "@timestamp": "2018-11-27T01:23:45.519Z", + "auditd": { + "sequence": 142338, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "46.101.192.45", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "46.101.192.45", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19632" + }, + "source": { + "ip": "46.101.192.45" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kNbGUmcBTFzn_XoLcgv7", + "source": { + "@timestamp": "2018-11-27T01:26:35.537Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "25757", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "167.114.153.36" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184350, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "167.114.153.36", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kdbGUmcBTFzn_XoLcgv7", + "source": { + "@timestamp": "2018-11-27T01:26:35.538Z", + "source": { + "ip": "167.114.153.36" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "167.114.153.36", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184351, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25757" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ktbGUmcBTFzn_XoLcgv7", + "source": { + "@timestamp": "2018-11-27T01:26:35.581Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "167.114.153.36" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "167.114.153.36", + "type": "user-session" + } + }, + "sequence": 184352 + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25757" + }, + "source": { + "ip": "167.114.153.36" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YNXEUmcBTFzn_XoLu-bL", + "source": { + "@timestamp": "2018-11-27T01:24:43.105Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32262", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186416, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YdXEUmcBTFzn_XoLu-bL", + "source": { + "@timestamp": "2018-11-27T01:24:43.106Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186417, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32262" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YtXEUmcBTFzn_XoLu-bL", + "source": { + "@timestamp": "2018-11-27T01:24:43.136Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32262" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186418, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dXFUmcBTFzn_XoLNvCh", + "source": { + "@timestamp": "2018-11-27T01:25:14.551Z", + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "34.197.73.243", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186419, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32269", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "34.197.73.243" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6tXFUmcBTFzn_XoLNvCh", + "source": { + "@timestamp": "2018-11-27T01:25:14.552Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32269", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "34.197.73.243" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "34.197.73.243" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186420, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "69XFUmcBTFzn_XoLNvCh", + "source": { + "@timestamp": "2018-11-27T01:25:14.587Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32269", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "34.197.73.243" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "34.197.73.243", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "34.197.73.243", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186421, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "WtXEUmcBTFzn_XoLA9aC", + "source": { + "@timestamp": "2018-11-27T01:23:55.928Z", + "auditd": { + "sequence": 192514, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "211.21.65.57", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "504", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "211.21.65.57" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "W9XEUmcBTFzn_XoLA9aC", + "source": { + "@timestamp": "2018-11-27T01:23:55.929Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "504" + }, + "source": { + "ip": "211.21.65.57" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192515, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "211.21.65.57", + "type": "user-session" + } + } + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "XNXEUmcBTFzn_XoLA9aC", + "source": { + "@timestamp": "2018-11-27T01:23:56.099Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "211.21.65.57" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192516, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "211.21.65.57" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "504", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "211.21.65.57" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sNXEUmcBTFzn_XoLbd__", + "source": { + "@timestamp": "2018-11-27T01:24:23.144Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "515", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.254.52.72" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "54.254.52.72", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192517, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sdXEUmcBTFzn_XoLbd__", + "source": { + "@timestamp": "2018-11-27T01:24:23.145Z", + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "54.254.52.72", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192518, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "515", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.254.52.72" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "stXEUmcBTFzn_XoLbd__", + "source": { + "@timestamp": "2018-11-27T01:24:23.339Z", + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "54.254.52.72" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "54.254.52.72" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192519, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "515", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.254.52.72" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "PtXFUmcBTFzn_XoLg_d5", + "source": { + "@timestamp": "2018-11-27T01:25:34.159Z", + "source": { + "ip": "192.240.119.252" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "192.240.119.252", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "192.240.119.252" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44182, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "29443", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2NbIUmcBTFzn_XoLSjPA", + "source": { + "@timestamp": "2018-11-27T01:28:36.309Z", + "file": { + "size": 0, + "group": "root", + "path": "/etc/sed8B6Ati", + "ctime": "2018-11-27T01:28:36.306Z", + "uid": 0, + "gid": 0, + "inode": "332", + "mode": "0000", + "owner": "root", + "mtime": "2018-11-27T01:28:36.306Z", + "type": "file" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "hash": { + "sha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709" + }, + "event": { + "module": "file_integrity", + "action": [ + "created" + ] + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2dbIUmcBTFzn_XoLSjPA", + "source": { + "@timestamp": "2018-11-27T01:28:36.311Z", + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": [ + "updated" + ], + "module": "file_integrity" + }, + "file": { + "ctime": "2018-11-27T01:28:36.306Z", + "mtime": "2018-11-27T01:28:36.306Z", + "owner": "root", + "path": "/etc/sed8B6Ati", + "size": 21, + "type": "file", + "uid": 0, + "gid": 0, + "inode": "332", + "mode": "0000", + "group": "root" + }, + "hash": { + "sha1": "302493715263b503309437954b46d73fee714260" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2tbIUmcBTFzn_XoLSjPA", + "source": { + "@timestamp": "2018-11-27T01:28:36.312Z", + "event": { + "module": "file_integrity", + "action": [ + "updated" + ] + }, + "file": { + "path": "/etc/sed8B6Ati" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "29bIUmcBTFzn_XoLSjPA", + "source": { + "@timestamp": "2018-11-27T01:28:36.314Z", + "event": { + "module": "file_integrity", + "action": [ + "moved" + ] + }, + "file": { + "path": "/etc/sed8B6Ati" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3NbIUmcBTFzn_XoLSjPA", + "source": { + "@timestamp": "2018-11-27T01:28:36.315Z", + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "action": [ + "created" + ], + "module": "file_integrity" + }, + "file": { + "size": 420, + "type": "file", + "uid": 0, + "inode": "332", + "ctime": "2018-11-27T01:28:36.306Z", + "mode": "0644", + "path": "/etc/hosts", + "mtime": "2018-11-27T01:28:36.306Z", + "owner": "root", + "gid": 0, + "group": "root" + }, + "hash": { + "sha1": "3ecab8f840eff15248fdb68f4cc7c3d0d9971476" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3dbIUmcBTFzn_XoLSjPA", + "source": { + "@timestamp": "2018-11-27T01:28:36.410Z", + "event": { + "category": "system-services", + "type": "service_stop", + "action": "stopped-service", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "1", + "name": "systemd", + "exe": "/lib/systemd/systemd" + }, + "auditd": { + "session": "unset", + "data": { + "unit": "rsyslog" + }, + "summary": { + "object": { + "type": "service", + "primary": "rsyslog" + }, + "how": "/lib/systemd/systemd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44186, + "result": "success" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3tbIUmcBTFzn_XoLSjPA", + "source": { + "@timestamp": "2018-11-27T01:28:36.470Z", + "process": { + "exe": "/lib/systemd/systemd", + "pid": "1", + "name": "systemd" + }, + "auditd": { + "data": { + "unit": "rsyslog" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "service", + "primary": "rsyslog" + }, + "how": "/lib/systemd/systemd" + }, + "sequence": 44187, + "result": "success", + "session": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "service_start", + "action": "started-service", + "module": "auditd", + "category": "system-services" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MNbHUmcBTFzn_XoLFxpi", + "source": { + "@timestamp": "2018-11-27T01:27:17.624Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25765", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "59.124.152.146" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "59.124.152.146", + "type": "user-session" + } + }, + "sequence": 184353, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MdbHUmcBTFzn_XoLFxpi", + "source": { + "@timestamp": "2018-11-27T01:27:17.625Z", + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25765", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "59.124.152.146" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184354, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "59.124.152.146" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MtbHUmcBTFzn_XoLFxpi", + "source": { + "@timestamp": "2018-11-27T01:27:17.794Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184355, + "result": "fail", + "session": "unset", + "data": { + "hostname": "59.124.152.146", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "59.124.152.146", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25765" + }, + "source": { + "ip": "59.124.152.146" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "M9bHUmcBTFzn_XoLFxqn", + "source": { + "@timestamp": "2018-11-27T01:27:17.693Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "167.99.171.14", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192523 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "532", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "167.99.171.14" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NNbHUmcBTFzn_XoLFxqn", + "source": { + "@timestamp": "2018-11-27T01:27:17.695Z", + "source": { + "ip": "167.99.171.14" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "167.99.171.14", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 192524, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "532" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NdbHUmcBTFzn_XoLFxqn", + "source": { + "@timestamp": "2018-11-27T01:27:17.735Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "532" + }, + "source": { + "ip": "167.99.171.14" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192525, + "result": "fail", + "session": "unset", + "data": { + "hostname": "167.99.171.14", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "167.99.171.14", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3dbHUmcBTFzn_XoLPR0X", + "source": { + "@timestamp": "2018-11-27T01:27:27.266Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19657", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.59.130.2" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "139.59.130.2", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142339 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3tbHUmcBTFzn_XoLPR0X", + "source": { + "@timestamp": "2018-11-27T01:27:27.267Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "19657", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "139.59.130.2" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "139.59.130.2", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142340, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "39bHUmcBTFzn_XoLPR0X", + "source": { + "@timestamp": "2018-11-27T01:27:27.376Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "139.59.130.2", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "139.59.130.2", + "type": "user-session" + } + }, + "sequence": 142341 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19657", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "139.59.130.2" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mNbIUmcBTFzn_XoLFi9i", + "source": { + "@timestamp": "2018-11-27T01:28:22.881Z", + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25773", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.139.20.56" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "37.139.20.56" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 184356, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mdbIUmcBTFzn_XoLFi9i", + "source": { + "@timestamp": "2018-11-27T01:28:22.883Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "37.139.20.56", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184357 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25773", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "37.139.20.56" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mtbIUmcBTFzn_XoLFi9i", + "source": { + "@timestamp": "2018-11-27T01:28:22.989Z", + "source": { + "ip": "37.139.20.56" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "37.139.20.56", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "37.139.20.56" + } + }, + "sequence": 184358, + "result": "fail" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25773", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0NbHUmcBTFzn_XoL7Stw", + "source": { + "@timestamp": "2018-11-27T01:28:12.420Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32287", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186428, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0dbHUmcBTFzn_XoL7Stw", + "source": { + "@timestamp": "2018-11-27T01:28:12.422Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32287", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186429, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0tbHUmcBTFzn_XoL7Stw", + "source": { + "@timestamp": "2018-11-27T01:28:12.453Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186430, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32287" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ItbIUmcBTFzn_XoLqjzc", + "source": { + "@timestamp": "2018-11-27T01:29:00.914Z", + "process": { + "pid": "545", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "209.97.173.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "209.97.173.192", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 192526 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "I9bIUmcBTFzn_XoLqjzc", + "source": { + "@timestamp": "2018-11-27T01:29:00.915Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "545" + }, + "source": { + "ip": "209.97.173.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "209.97.173.192" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 192527, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JNbIUmcBTFzn_XoLqjzc", + "source": { + "@timestamp": "2018-11-27T01:29:01.108Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "545", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "209.97.173.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192528, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "209.97.173.192" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "209.97.173.192", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ONbGUmcBTFzn_XoL2xQn", + "source": { + "@timestamp": "2018-11-27T01:27:02.205Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32279", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186425, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "OdbGUmcBTFzn_XoL2xQn", + "source": { + "@timestamp": "2018-11-27T01:27:02.206Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186426, + "result": "fail" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32279", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "OtbGUmcBTFzn_XoL2xQn", + "source": { + "@timestamp": "2018-11-27T01:27:02.238Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32279", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186427 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ltbHUmcBTFzn_XoLWR9W", + "source": { + "@timestamp": "2018-11-27T01:27:34.501Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29478" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "46.105.89.195" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "46.105.89.195" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 44183, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "l9bHUmcBTFzn_XoLWR9W", + "source": { + "@timestamp": "2018-11-27T01:27:34.501Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "46.105.89.195", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44184 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "29478", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.105.89.195" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mNbHUmcBTFzn_XoLWR9W", + "source": { + "@timestamp": "2018-11-27T01:27:34.613Z", + "auditd": { + "session": "unset", + "data": { + "hostname": "46.105.89.195", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "46.105.89.195", + "type": "user-session" + } + }, + "sequence": 44185, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "29478" + }, + "source": { + "ip": "46.105.89.195" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QtbIUmcBTFzn_XoLVjVA", + "source": { + "@timestamp": "2018-11-27T01:28:39.253Z", + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "sequence": 43170, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.255.34.233", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12716" + }, + "source": { + "ip": "51.255.34.233" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Q9bIUmcBTFzn_XoLVjVA", + "source": { + "@timestamp": "2018-11-27T01:28:39.253Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12716" + }, + "source": { + "ip": "51.255.34.233" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "51.255.34.233", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43171 + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "RNbIUmcBTFzn_XoLVjVA", + "source": { + "@timestamp": "2018-11-27T01:28:39.361Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12716", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.255.34.233" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "51.255.34.233", + "type": "user-session" + } + }, + "sequence": 43172, + "result": "fail", + "session": "unset", + "data": { + "hostname": "51.255.34.233", + "terminal": "ssh", + "op": "PAM:bad_ident" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8tfRUmcBTFzn_XoL1ASG", + "source": { + "@timestamp": "2018-11-27T01:39:01.401Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12782" + }, + "source": { + "ip": "138.68.150.115" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "138.68.150.115", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "138.68.150.115", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 43186, + "result": "fail", + "session": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "S9fRUmcBTFzn_XoL1gUs", + "source": { + "@timestamp": "2018-11-27T01:39:01.825Z", + "process": { + "pid": "25839", + "exe": "/usr/sbin/cron" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "sequence": 184368, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "type": "user_acct", + "action": "was-authorized", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TNfRUmcBTFzn_XoL1gUs", + "source": { + "@timestamp": "2018-11-27T01:39:01.826Z", + "auditd": { + "session": "unset", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184369, + "result": "success" + }, + "event": { + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "25839" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TdfRUmcBTFzn_XoL1gUs", + "source": { + "@timestamp": "2018-11-27T01:39:01.828Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_start", + "action": "started-session" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25839", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 184371, + "result": "success", + "session": "9859", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:session_open" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TtfRUmcBTFzn_XoL1gUs", + "source": { + "@timestamp": "2018-11-27T01:39:01.923Z", + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "25839" + }, + "auditd": { + "sequence": 184372, + "result": "success", + "session": "9859", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "T9fRUmcBTFzn_XoL1gUs", + "source": { + "@timestamp": "2018-11-27T01:39:01.924Z", + "process": { + "pid": "25839", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 184373, + "result": "success", + "session": "9859", + "data": { + "acct": "root", + "op": "PAM:session_close", + "terminal": "cron" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UdfRUmcBTFzn_XoL1gXc", + "source": { + "@timestamp": "2018-11-27T01:39:02.001Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_acct", + "action": "was-authorized" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "608" + }, + "auditd": { + "sequence": 192547, + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "op": "PAM:accounting", + "terminal": "cron" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "unset" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UtfRUmcBTFzn_XoL1gXc", + "source": { + "@timestamp": "2018-11-27T01:39:02.001Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "608" + }, + "auditd": { + "sequence": 192548, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_acq" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "U9fRUmcBTFzn_XoL1gXc", + "source": { + "@timestamp": "2018-11-27T01:39:02.003Z", + "auditd": { + "result": "success", + "session": "9863", + "data": { + "terminal": "cron", + "op": "PAM:session_open", + "acct": "root" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + }, + "sequence": 192550 + }, + "event": { + "action": "started-session", + "module": "auditd", + "category": "user-login", + "type": "user_start" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "608" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VNfRUmcBTFzn_XoL1gXc", + "source": { + "@timestamp": "2018-11-27T01:39:02.100Z", + "process": { + "pid": "608", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "9863", + "data": { + "op": "PAM:setcred", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192551 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "disposed-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_disp" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VdfRUmcBTFzn_XoL1gXc", + "source": { + "@timestamp": "2018-11-27T01:39:02.101Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "608", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 192552, + "result": "success", + "session": "9863", + "data": { + "op": "PAM:session_close", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KdbRUmcBTFzn_XoLPPiy", + "source": { + "@timestamp": "2018-11-27T01:38:22.535Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19718" + }, + "source": { + "ip": "207.154.201.218" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142346, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "207.154.201.218" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KtbRUmcBTFzn_XoLPPiy", + "source": { + "@timestamp": "2018-11-27T01:38:22.537Z", + "process": { + "pid": "19718", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "207.154.201.218" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142347, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "207.154.201.218", + "type": "user-session" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "K9bRUmcBTFzn_XoLPPiy", + "source": { + "@timestamp": "2018-11-27T01:38:22.645Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19718" + }, + "source": { + "ip": "207.154.201.218" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142348, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "207.154.201.218" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "207.154.201.218", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GdfTUmcBTFzn_XoLdSoA", + "source": { + "@timestamp": "2018-11-27T01:40:48.022Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19732", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "188.226.187.115" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "188.226.187.115", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142349, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GtfTUmcBTFzn_XoLdSoA", + "source": { + "@timestamp": "2018-11-27T01:40:48.024Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142350, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "188.226.187.115", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19732", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "188.226.187.115" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "G9fTUmcBTFzn_XoLdSoA", + "source": { + "@timestamp": "2018-11-27T01:40:48.126Z", + "source": { + "ip": "188.226.187.115" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "188.226.187.115" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "188.226.187.115", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142351, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19732", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jdfTUmcBTFzn_XoLsi5i", + "source": { + "@timestamp": "2018-11-27T01:41:03.736Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32370" + }, + "source": { + "ip": "82.200.205.71" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "82.200.205.71", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 186473, + "result": "fail" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jtfTUmcBTFzn_XoLsi5i", + "source": { + "@timestamp": "2018-11-27T01:41:03.737Z", + "source": { + "ip": "82.200.205.71" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "82.200.205.71" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186474, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32370", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "j9fTUmcBTFzn_XoLsi5i", + "source": { + "@timestamp": "2018-11-27T01:41:03.993Z", + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "82.200.205.71" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "82.200.205.71" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186475, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32370", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.200.205.71" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "a9bRUmcBTFzn_XoLcPxx", + "source": { + "@timestamp": "2018-11-27T01:38:35.782Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186464 + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32356", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bNbRUmcBTFzn_XoLcPxx", + "source": { + "@timestamp": "2018-11-27T01:38:35.783Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32356" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 186465 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bdbRUmcBTFzn_XoLcPxx", + "source": { + "@timestamp": "2018-11-27T01:38:35.814Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32356", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186466, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2dfSUmcBTFzn_XoLXhCA", + "source": { + "@timestamp": "2018-11-27T01:39:36.720Z", + "auditd": { + "sequence": 43187, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "89.221.217.8", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12790", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.221.217.8" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2tfSUmcBTFzn_XoLXhCA", + "source": { + "@timestamp": "2018-11-27T01:39:36.724Z", + "source": { + "ip": "89.221.217.8" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43188, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "89.221.217.8", + "type": "user-session", + "primary": "sshd" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12790", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "29fSUmcBTFzn_XoLXhCA", + "source": { + "@timestamp": "2018-11-27T01:39:36.852Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "89.221.217.8", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "89.221.217.8", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43189, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12790", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "89.221.217.8" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "adfSUmcBTFzn_XoLgRS2", + "source": { + "@timestamp": "2018-11-27T01:39:45.740Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32360", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "sequence": 186467, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "atfSUmcBTFzn_XoLgRS2", + "source": { + "@timestamp": "2018-11-27T01:39:45.741Z", + "process": { + "pid": "32360", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186468, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "a9fSUmcBTFzn_XoLgRS2", + "source": { + "@timestamp": "2018-11-27T01:39:45.771Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186469, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32360", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FdfTUmcBTFzn_XoLmy0i", + "source": { + "@timestamp": "2018-11-27T01:40:57.784Z", + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32368", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186470, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtfTUmcBTFzn_XoLmy0i", + "source": { + "@timestamp": "2018-11-27T01:40:57.785Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186471 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32368", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "F9fTUmcBTFzn_XoLmy0i", + "source": { + "@timestamp": "2018-11-27T01:40:57.815Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186472, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32368" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rNfUUmcBTFzn_XoLBTW-", + "source": { + "@timestamp": "2018-11-27T01:41:25.073Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12798", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.131.37.34" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43190, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "104.131.37.34", + "type": "user-session" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rdfUUmcBTFzn_XoLBTW-", + "source": { + "@timestamp": "2018-11-27T01:41:25.073Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12798", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.131.37.34" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "sequence": 43191, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "104.131.37.34", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rtfUUmcBTFzn_XoLBTW-", + "source": { + "@timestamp": "2018-11-27T01:41:25.105Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12798" + }, + "source": { + "ip": "104.131.37.34" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43192, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "104.131.37.34" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "104.131.37.34", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TNfWUmcBTFzn_XoLkW2H", + "source": { + "@timestamp": "2018-11-27T01:44:11.932Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "128.199.106.169" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "128.199.106.169", + "type": "user-session" + } + }, + "sequence": 186485, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32391", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TdfWUmcBTFzn_XoLkW2H", + "source": { + "@timestamp": "2018-11-27T01:44:11.934Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32391", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.106.169" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "128.199.106.169", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186486 + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TtfWUmcBTFzn_XoLkW2H", + "source": { + "@timestamp": "2018-11-27T01:44:12.126Z", + "process": { + "pid": "32391", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.106.169" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "128.199.106.169", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "128.199.106.169", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186487, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CtfWUmcBTFzn_XoLl27w", + "source": { + "@timestamp": "2018-11-27T01:44:13.574Z", + "source": { + "ip": "45.122.222.253" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "45.122.222.253", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 142361 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "19759", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "C9fWUmcBTFzn_XoLl27w", + "source": { + "@timestamp": "2018-11-27T01:44:13.575Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19759", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "45.122.222.253" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142362, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "45.122.222.253" + } + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DNfWUmcBTFzn_XoLl27w", + "source": { + "@timestamp": "2018-11-27T01:44:13.839Z", + "source": { + "ip": "45.122.222.253" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "45.122.222.253", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "45.122.222.253" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 142363, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19759", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "utfYUmcBTFzn_XoLQpK3", + "source": { + "@timestamp": "2018-11-27T01:46:02.828Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19772" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "151.203.70.218" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "151.203.70.218", + "type": "user-session" + } + }, + "sequence": 142364, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "u9fYUmcBTFzn_XoLQpK3", + "source": { + "@timestamp": "2018-11-27T01:46:02.829Z", + "source": { + "ip": "151.203.70.218" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142365, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "151.203.70.218" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19772" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vNfYUmcBTFzn_XoLQpK3", + "source": { + "@timestamp": "2018-11-27T01:46:02.868Z", + "source": { + "ip": "151.203.70.218" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "151.203.70.218" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142366, + "result": "fail", + "session": "unset", + "data": { + "hostname": "151.203.70.218", + "terminal": "ssh", + "op": "PAM:bad_ident" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19772", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SdfYUmcBTFzn_XoLRpPT", + "source": { + "@timestamp": "2018-11-27T01:46:03.873Z", + "process": { + "pid": "12823", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "152.115.61.52" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43193, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "152.115.61.52", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "StfYUmcBTFzn_XoLRpPT", + "source": { + "@timestamp": "2018-11-27T01:46:03.873Z", + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "152.115.61.52", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43194, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12823", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "152.115.61.52" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "S9fYUmcBTFzn_XoLRpPT", + "source": { + "@timestamp": "2018-11-27T01:46:04.009Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12823", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "152.115.61.52" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "152.115.61.52", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 43195, + "result": "fail", + "session": "unset", + "data": { + "hostname": "152.115.61.52", + "op": "PAM:bad_ident", + "terminal": "ssh" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "adfYUmcBTFzn_XoLXJVb", + "source": { + "@timestamp": "2018-11-27T01:46:09.392Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32410" + }, + "source": { + "ip": "106.51.66.214" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186494, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "106.51.66.214", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "atfYUmcBTFzn_XoLXJVb", + "source": { + "@timestamp": "2018-11-27T01:46:09.394Z", + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "106.51.66.214", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 186495, + "result": "fail", + "session": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32410", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "106.51.66.214" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "a9fYUmcBTFzn_XoLXJVb", + "source": { + "@timestamp": "2018-11-27T01:46:09.624Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32410" + }, + "source": { + "ip": "106.51.66.214" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186496, + "result": "fail", + "session": "unset", + "data": { + "hostname": "106.51.66.214", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "106.51.66.214", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "y9fYUmcBTFzn_XoLZZX6", + "source": { + "@timestamp": "2018-11-27T01:46:11.847Z", + "source": { + "ip": "92.86.47.26" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "92.86.47.26" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192553, + "result": "fail" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "700", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zNfYUmcBTFzn_XoLZZX6", + "source": { + "@timestamp": "2018-11-27T01:46:11.848Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "92.86.47.26", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192554 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "700", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "92.86.47.26" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zdfYUmcBTFzn_XoLZZX6", + "source": { + "@timestamp": "2018-11-27T01:46:11.996Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "700", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "92.86.47.26" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192555, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "92.86.47.26", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "92.86.47.26", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JNfWUmcBTFzn_XoLc2tJ", + "source": { + "@timestamp": "2018-11-27T01:44:04.191Z", + "process": { + "pid": "19756", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "177.137.205.150" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "177.137.205.150", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142358 + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JdfWUmcBTFzn_XoLc2tJ", + "source": { + "@timestamp": "2018-11-27T01:44:04.192Z", + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "177.137.205.150", + "type": "user-session" + } + }, + "sequence": 142359, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19756" + }, + "source": { + "ip": "177.137.205.150" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JtfWUmcBTFzn_XoLc2tJ", + "source": { + "@timestamp": "2018-11-27T01:44:04.375Z", + "process": { + "pid": "19756", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "177.137.205.150" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "177.137.205.150", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "177.137.205.150" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142360, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "atfYUmcBTFzn_XoLgpgd", + "source": { + "@timestamp": "2018-11-27T01:46:19.059Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19774", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "140.143.190.243" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142367, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "140.143.190.243", + "type": "user-session", + "primary": "sshd" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "a9fYUmcBTFzn_XoLgpgd", + "source": { + "@timestamp": "2018-11-27T01:46:19.060Z", + "process": { + "pid": "19774", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "140.143.190.243" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142368, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "140.143.190.243", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "bNfYUmcBTFzn_XoLgpgd", + "source": { + "@timestamp": "2018-11-27T01:46:19.278Z", + "auditd": { + "sequence": 142369, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "140.143.190.243" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "140.143.190.243", + "type": "user-session" + } + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19774", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "140.143.190.243" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AtfXUmcBTFzn_XoLaoE9", + "source": { + "@timestamp": "2018-11-27T01:45:07.411Z", + "auditd": { + "sequence": 184386, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "217.19.148.142", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "25932", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.19.148.142" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "A9fXUmcBTFzn_XoLaoE9", + "source": { + "@timestamp": "2018-11-27T01:45:07.412Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "25932", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.19.148.142" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "217.19.148.142", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184387 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BNfXUmcBTFzn_XoLaoE9", + "source": { + "@timestamp": "2018-11-27T01:45:07.545Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "25932", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.19.148.142" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "217.19.148.142" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "217.19.148.142", + "type": "user-session" + } + }, + "sequence": 184388, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "49fWUmcBTFzn_XoL_XYj", + "source": { + "@timestamp": "2018-11-27T01:44:39.480Z", + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186488 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32399", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5NfWUmcBTFzn_XoL_XYj", + "source": { + "@timestamp": "2018-11-27T01:44:39.481Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32399", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186489, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5dfWUmcBTFzn_XoL_XYj", + "source": { + "@timestamp": "2018-11-27T01:44:39.512Z", + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 186490, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32399", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GtfVUmcBTFzn_XoL2l5j", + "source": { + "@timestamp": "2018-11-27T01:43:25.049Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32389", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186482 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "G9fVUmcBTFzn_XoL2l5j", + "source": { + "@timestamp": "2018-11-27T01:43:25.050Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32389" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186483, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HNfVUmcBTFzn_XoL2l5j", + "source": { + "@timestamp": "2018-11-27T01:43:25.081Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32389", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186484, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ANfYUmcBTFzn_XoLIJDK", + "source": { + "@timestamp": "2018-11-27T01:45:54.144Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32408" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186491, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AdfYUmcBTFzn_XoLIJDK", + "source": { + "@timestamp": "2018-11-27T01:45:54.146Z", + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32408", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + } + }, + "sequence": 186492, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AtfYUmcBTFzn_XoLIJDK", + "source": { + "@timestamp": "2018-11-27T01:45:54.176Z", + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186493, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32408" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kNjeUmcBTFzn_XoLchqO", + "source": { + "@timestamp": "2018-11-27T01:52:48.274Z", + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "92.222.218.139", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184392, + "result": "fail" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "25980", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "92.222.218.139" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kdjeUmcBTFzn_XoLchqO", + "source": { + "@timestamp": "2018-11-27T01:52:48.275Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "25980" + }, + "source": { + "ip": "92.222.218.139" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "92.222.218.139" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184393, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ktjeUmcBTFzn_XoLchqO", + "source": { + "@timestamp": "2018-11-27T01:52:48.381Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25980", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "92.222.218.139" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "92.222.218.139" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "92.222.218.139" + } + }, + "sequence": 184394, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ANjeUmcBTFzn_XoLgBst", + "source": { + "@timestamp": "2018-11-27T01:52:51.775Z", + "source": { + "ip": "174.138.17.18" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "174.138.17.18", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43202, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12866" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AdjeUmcBTFzn_XoLgBst", + "source": { + "@timestamp": "2018-11-27T01:52:51.775Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12866" + }, + "source": { + "ip": "174.138.17.18" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "174.138.17.18", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43203, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AtjeUmcBTFzn_XoLgBst", + "source": { + "@timestamp": "2018-11-27T01:52:51.851Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12868" + }, + "source": { + "ip": "54.38.47.28" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43204, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "54.38.47.28", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "A9jeUmcBTFzn_XoLgBst", + "source": { + "@timestamp": "2018-11-27T01:52:51.851Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12868", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.38.47.28" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43205, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "54.38.47.28", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BNjeUmcBTFzn_XoLgBst", + "source": { + "@timestamp": "2018-11-27T01:52:51.963Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12868", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.38.47.28" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "54.38.47.28" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "54.38.47.28", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 43206, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BdjeUmcBTFzn_XoLgBst", + "source": { + "@timestamp": "2018-11-27T01:52:51.967Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12866", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "174.138.17.18" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "174.138.17.18", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "174.138.17.18", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43207 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "vtjdUmcBTFzn_XoLhQbg", + "source": { + "@timestamp": "2018-11-27T01:51:47.702Z", + "process": { + "pid": "25972", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "201.151.178.139" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184389, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "201.151.178.139", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "v9jdUmcBTFzn_XoLhQbg", + "source": { + "@timestamp": "2018-11-27T01:51:47.704Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "25972", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "201.151.178.139" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "201.151.178.139", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 184390 + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wNjdUmcBTFzn_XoLhQbg", + "source": { + "@timestamp": "2018-11-27T01:51:47.788Z", + "process": { + "pid": "25972", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "201.151.178.139" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "201.151.178.139", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184391, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "201.151.178.139", + "terminal": "ssh" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "N9jdUmcBTFzn_XoLlgd5", + "source": { + "@timestamp": "2018-11-27T01:51:51.949Z", + "process": { + "pid": "19818", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "121.124.124.73" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "121.124.124.73" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 142389, + "result": "fail" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ONjdUmcBTFzn_XoLlgd5", + "source": { + "@timestamp": "2018-11-27T01:51:51.951Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19818", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "121.124.124.73" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "121.124.124.73", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 142390, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "OdjdUmcBTFzn_XoLlgd5", + "source": { + "@timestamp": "2018-11-27T01:51:52.141Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19818", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "121.124.124.73" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "121.124.124.73" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "121.124.124.73" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142391 + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "EdjfUmcBTFzn_XoLJSnD", + "source": { + "@timestamp": "2018-11-27T01:53:34.169Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19831", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "79.137.64.132" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "79.137.64.132", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142392, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "EtjfUmcBTFzn_XoLJSnD", + "source": { + "@timestamp": "2018-11-27T01:53:34.170Z", + "source": { + "ip": "79.137.64.132" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "79.137.64.132" + } + }, + "sequence": 142393, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19831", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "E9jfUmcBTFzn_XoLJSnD", + "source": { + "@timestamp": "2018-11-27T01:53:34.276Z", + "source": { + "ip": "79.137.64.132" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "79.137.64.132", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "79.137.64.132", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142394, + "result": "fail" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "19831", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZtjfUmcBTFzn_XoLJila", + "source": { + "@timestamp": "2018-11-27T01:53:34.315Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "161.132.195.76", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 43211 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12877", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "161.132.195.76" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9jfUmcBTFzn_XoLJila", + "source": { + "@timestamp": "2018-11-27T01:53:34.315Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12877", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "161.132.195.76" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "161.132.195.76", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43212, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aNjfUmcBTFzn_XoLJila", + "source": { + "@timestamp": "2018-11-27T01:53:34.427Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12877", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "161.132.195.76" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "161.132.195.76", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "161.132.195.76", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43213, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Y9jdUmcBTFzn_XoLdARP", + "source": { + "@timestamp": "2018-11-27T01:51:43.201Z", + "auditd": { + "sequence": 43196, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "83.222.240.60" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12856", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "83.222.240.60" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZNjdUmcBTFzn_XoLdARP", + "source": { + "@timestamp": "2018-11-27T01:51:43.205Z", + "source": { + "ip": "83.222.240.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43197, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "83.222.240.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12856" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZdjdUmcBTFzn_XoLdARP", + "source": { + "@timestamp": "2018-11-27T01:51:43.309Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43198, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "83.222.240.60" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "83.222.240.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12856", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "83.222.240.60" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "INjdUmcBTFzn_XoLggVd", + "source": { + "@timestamp": "2018-11-27T01:51:46.789Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "secondary": "142.93.210.90", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 44207, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "30014", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "142.93.210.90" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "IdjdUmcBTFzn_XoLggVd", + "source": { + "@timestamp": "2018-11-27T01:51:46.789Z", + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30014", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "142.93.210.90" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "142.93.210.90" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44208, + "result": "fail" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ItjdUmcBTFzn_XoLggVd", + "source": { + "@timestamp": "2018-11-27T01:51:47.021Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "142.93.210.90" + } + }, + "sequence": 44209, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "142.93.210.90" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "30014", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "142.93.210.90" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtjdUmcBTFzn_XoLYAMi", + "source": { + "@timestamp": "2018-11-27T01:51:38.040Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19814", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "121.124.124.73" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "121.124.124.73", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "121.124.124.73", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142385, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rtjdUmcBTFzn_XoLaAOj", + "source": { + "@timestamp": "2018-11-27T01:51:40.216Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "19816", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "121.124.124.73" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "121.124.124.73", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142386, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "r9jdUmcBTFzn_XoLaAOj", + "source": { + "@timestamp": "2018-11-27T01:51:40.217Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "121.124.124.73", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142387, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19816", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "121.124.124.73" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sNjdUmcBTFzn_XoLaAOj", + "source": { + "@timestamp": "2018-11-27T01:51:40.395Z", + "auditd": { + "sequence": 142388, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "121.124.124.73" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "121.124.124.73", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19816", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "121.124.124.73" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtjdUmcBTFzn_XoL0w1m", + "source": { + "@timestamp": "2018-11-27T01:52:07.547Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32446", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186509, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "F9jdUmcBTFzn_XoL0w1m", + "source": { + "@timestamp": "2018-11-27T01:52:07.548Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186510, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32446", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "GNjdUmcBTFzn_XoL0w1m", + "source": { + "@timestamp": "2018-11-27T01:52:07.578Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32446" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186511, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "hdjeUmcBTFzn_XoLyiGI", + "source": { + "@timestamp": "2018-11-27T01:53:10.809Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "128.199.128.215" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43208, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12875", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.128.215" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "htjeUmcBTFzn_XoLyiGI", + "source": { + "@timestamp": "2018-11-27T01:53:10.813Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12875", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.128.215" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "128.199.128.215", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43209, + "result": "fail" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "h9jeUmcBTFzn_XoLyiGI", + "source": { + "@timestamp": "2018-11-27T01:53:11.005Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12875", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.128.215" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "128.199.128.215", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 43210, + "result": "fail", + "session": "unset", + "data": { + "hostname": "128.199.128.215", + "terminal": "ssh", + "op": "PAM:bad_ident" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "hdjeUmcBTFzn_XoL5SQF", + "source": { + "@timestamp": "2018-11-27T01:53:17.595Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32449", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186512 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "htjeUmcBTFzn_XoL5SQF", + "source": { + "@timestamp": "2018-11-27T01:53:17.596Z", + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186513, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32449" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "h9jeUmcBTFzn_XoL5SQF", + "source": { + "@timestamp": "2018-11-27T01:53:17.627Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32449", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186514, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + } + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ytjdUmcBTFzn_XoL0gs9", + "source": { + "@timestamp": "2018-11-27T01:52:07.159Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "153.19.40.20" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43199, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "12863", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "153.19.40.20" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "y9jdUmcBTFzn_XoL0gs9", + "source": { + "@timestamp": "2018-11-27T01:52:07.159Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12863" + }, + "source": { + "ip": "153.19.40.20" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43200, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "153.19.40.20" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zNjdUmcBTFzn_XoL0gs9", + "source": { + "@timestamp": "2018-11-27T01:52:07.287Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "153.19.40.20" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "153.19.40.20" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43201, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12863", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "153.19.40.20" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KNjkUmcBTFzn_XoLfZ-j", + "source": { + "@timestamp": "2018-11-27T01:59:24.344Z", + "process": { + "pid": "783", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "91.134.241.32" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "91.134.241.32" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192562 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KdjkUmcBTFzn_XoLfZ-j", + "source": { + "@timestamp": "2018-11-27T01:59:24.345Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "91.134.241.32", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192563, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "783" + }, + "source": { + "ip": "91.134.241.32" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KtjkUmcBTFzn_XoLfZ-j", + "source": { + "@timestamp": "2018-11-27T01:59:24.452Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "91.134.241.32" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "91.134.241.32", + "terminal": "ssh" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "91.134.241.32", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192564, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "783", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QdjkUmcBTFzn_XoLgZ_0", + "source": { + "@timestamp": "2018-11-27T01:59:25.449Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32500" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186542, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QtjkUmcBTFzn_XoLgZ_0", + "source": { + "@timestamp": "2018-11-27T01:59:25.450Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32500", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186543, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Q9jkUmcBTFzn_XoLgZ_0", + "source": { + "@timestamp": "2018-11-27T01:59:25.481Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186544, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32500", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jdjjUmcBTFzn_XoLToQx", + "source": { + "@timestamp": "2018-11-27T01:58:06.663Z", + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186539, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32492", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "jtjjUmcBTFzn_XoLToQx", + "source": { + "@timestamp": "2018-11-27T01:58:06.664Z", + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32492", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186540, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "j9jjUmcBTFzn_XoLToQx", + "source": { + "@timestamp": "2018-11-27T01:58:06.694Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32492" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186541 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZdjiUmcBTFzn_XoLImvA", + "source": { + "@timestamp": "2018-11-27T01:56:50.005Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186530 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32480", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZtjiUmcBTFzn_XoLImvA", + "source": { + "@timestamp": "2018-11-27T01:56:50.006Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186531, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32480", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9jiUmcBTFzn_XoLImvA", + "source": { + "@timestamp": "2018-11-27T01:56:50.037Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32480", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186532, + "result": "fail", + "session": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "etjlUmcBTFzn_XoLHawN", + "source": { + "@timestamp": "2018-11-27T02:00:05.155Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "785" + }, + "source": { + "ip": "212.159.18.107" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192565, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "object": { + "secondary": "212.159.18.107", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "e9jlUmcBTFzn_XoLHawN", + "source": { + "@timestamp": "2018-11-27T02:00:05.156Z", + "process": { + "pid": "785", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "212.159.18.107" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "212.159.18.107", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192566, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "fNjlUmcBTFzn_XoLHawN", + "source": { + "@timestamp": "2018-11-27T02:00:05.265Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "212.159.18.107" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "212.159.18.107", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "212.159.18.107", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192567, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "785", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZtjjUmcBTFzn_XoLIYEi", + "source": { + "@timestamp": "2018-11-27T01:57:55.128Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32490", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "190.153.219.50" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186536, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "190.153.219.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9jjUmcBTFzn_XoLIYEi", + "source": { + "@timestamp": "2018-11-27T01:57:55.129Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32490", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "190.153.219.50" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "190.153.219.50", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186537, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aNjjUmcBTFzn_XoLIYEi", + "source": { + "@timestamp": "2018-11-27T01:57:55.284Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "sequence": 186538, + "result": "fail", + "session": "unset", + "data": { + "hostname": "190.153.219.50", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "190.153.219.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32490", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "190.153.219.50" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ItjiUmcBTFzn_XoLZXBu", + "source": { + "@timestamp": "2018-11-27T01:57:07.073Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12897", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "151.80.144.39" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "151.80.144.39" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43214, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "I9jiUmcBTFzn_XoLZXBu", + "source": { + "@timestamp": "2018-11-27T01:57:07.073Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12897", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "151.80.144.39" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "151.80.144.39", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43215 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JNjiUmcBTFzn_XoLZXBu", + "source": { + "@timestamp": "2018-11-27T01:57:07.181Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "151.80.144.39", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 43216, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "151.80.144.39", + "terminal": "ssh" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12897" + }, + "source": { + "ip": "151.80.144.39" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "1djjUmcBTFzn_XoLD39T", + "source": { + "@timestamp": "2018-11-27T01:57:50.568Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "61.73.98.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186533, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32487", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "61.73.98.60" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "1tjjUmcBTFzn_XoLD39T", + "source": { + "@timestamp": "2018-11-27T01:57:50.570Z", + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32487", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "61.73.98.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "61.73.98.60" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186534, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "19jjUmcBTFzn_XoLD39T", + "source": { + "@timestamp": "2018-11-27T01:57:50.730Z", + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32487", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "61.73.98.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186535, + "result": "fail", + "session": "unset", + "data": { + "hostname": "61.73.98.60", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "61.73.98.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9jiUmcBTFzn_XoL9X2Y", + "source": { + "@timestamp": "2018-11-27T01:57:43.982Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192559, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "193.70.39.84" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "769", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "193.70.39.84" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dNjiUmcBTFzn_XoL9X2Y", + "source": { + "@timestamp": "2018-11-27T01:57:43.983Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "769" + }, + "source": { + "ip": "193.70.39.84" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "193.70.39.84", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192560, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ddjiUmcBTFzn_XoL9X2Y", + "source": { + "@timestamp": "2018-11-27T01:57:44.094Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "769", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "193.70.39.84" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "193.70.39.84", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "193.70.39.84", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192561, + "result": "fail" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "lNjkUmcBTFzn_XoLRpqM", + "source": { + "@timestamp": "2018-11-27T01:59:10.239Z", + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "104.208.143.92", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44219, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30166", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.208.143.92" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ldjkUmcBTFzn_XoLRpqM", + "source": { + "@timestamp": "2018-11-27T01:59:10.239Z", + "source": { + "ip": "104.208.143.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "104.208.143.92", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 44220, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30166", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ltjkUmcBTFzn_XoLRpqM", + "source": { + "@timestamp": "2018-11-27T01:59:10.283Z", + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30166" + }, + "source": { + "ip": "104.208.143.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44221, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "104.208.143.92" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "104.208.143.92", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NdnsUmcBTFzn_XoLslKD", + "source": { + "@timestamp": "2018-11-27T02:08:22.166Z", + "process": { + "pid": "30352", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "110.36.221.182" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "110.36.221.182", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44231, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NtnsUmcBTFzn_XoLslKD", + "source": { + "@timestamp": "2018-11-27T02:08:22.166Z", + "auditd": { + "sequence": 44232, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "110.36.221.182", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "30352", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "110.36.221.182" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "N9nsUmcBTFzn_XoLslKD", + "source": { + "@timestamp": "2018-11-27T02:08:22.414Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "30352", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "110.36.221.182" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "110.36.221.182", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "110.36.221.182" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44233 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9tnsUmcBTFzn_XoLt1Lw", + "source": { + "@timestamp": "2018-11-27T02:08:23.554Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30354" + }, + "source": { + "ip": "61.73.98.60" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "sequence": 44234, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "61.73.98.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "99nsUmcBTFzn_XoLt1Lw", + "source": { + "@timestamp": "2018-11-27T02:08:23.554Z", + "source": { + "ip": "61.73.98.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "61.73.98.60" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44235 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "30354", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-NnsUmcBTFzn_XoLt1Lw", + "source": { + "@timestamp": "2018-11-27T02:08:23.714Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "61.73.98.60" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "61.73.98.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44236 + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30354" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "61.73.98.60" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "1dnpUmcBTFzn_XoLNAWm", + "source": { + "@timestamp": "2018-11-27T02:04:33.307Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26060", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "151.80.136.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "151.80.136.92", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184405, + "result": "fail" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "1tnpUmcBTFzn_XoLNAWm", + "source": { + "@timestamp": "2018-11-27T02:04:33.309Z", + "source": { + "ip": "151.80.136.92" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184406, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "151.80.136.92", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26060", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "19npUmcBTFzn_XoLNAWm", + "source": { + "@timestamp": "2018-11-27T02:04:33.423Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "151.80.136.92", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "151.80.136.92" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184407, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26060", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "151.80.136.92" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3tnpUmcBTFzn_XoLOwYm", + "source": { + "@timestamp": "2018-11-27T02:04:35.004Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "177.124.89.14", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "177.124.89.14", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 184408 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26062", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "177.124.89.14" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6tnpUmcBTFzn_XoLZAmP", + "source": { + "@timestamp": "2018-11-27T02:04:45.605Z", + "process": { + "pid": "32532", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + } + }, + "sequence": 186557 + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "69npUmcBTFzn_XoLZAmP", + "source": { + "@timestamp": "2018-11-27T02:04:45.606Z", + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186558 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32532" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7NnpUmcBTFzn_XoLZAmP", + "source": { + "@timestamp": "2018-11-27T02:04:45.638Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32532", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + } + }, + "sequence": 186559, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FNnsUmcBTFzn_XoLVUul", + "source": { + "@timestamp": "2018-11-27T02:07:58.394Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "19916" + }, + "source": { + "ip": "74.208.43.208" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142410, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "74.208.43.208", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FdnsUmcBTFzn_XoLVUul", + "source": { + "@timestamp": "2018-11-27T02:07:58.395Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19916", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "74.208.43.208" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "74.208.43.208" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142411, + "result": "fail" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtnsUmcBTFzn_XoLVUul", + "source": { + "@timestamp": "2018-11-27T02:07:58.422Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "process": { + "pid": "19916", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "74.208.43.208" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142412, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "74.208.43.208" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "74.208.43.208", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rtnqUmcBTFzn_XoLniSL", + "source": { + "@timestamp": "2018-11-27T02:06:05.967Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186560, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32540" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "r9nqUmcBTFzn_XoLniSL", + "source": { + "@timestamp": "2018-11-27T02:06:05.968Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186561, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32540", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sNnqUmcBTFzn_XoLniSL", + "source": { + "@timestamp": "2018-11-27T02:06:05.999Z", + "process": { + "pid": "32540", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + } + }, + "sequence": 186562, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KtjoUmcBTFzn_XoLSvJx", + "source": { + "@timestamp": "2018-11-27T02:03:33.383Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26052", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.236.181.158" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184402, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "104.236.181.158", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "K9joUmcBTFzn_XoLSvJx", + "source": { + "@timestamp": "2018-11-27T02:03:33.384Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26052", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.236.181.158" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "104.236.181.158", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184403 + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LNjoUmcBTFzn_XoLSvJx", + "source": { + "@timestamp": "2018-11-27T02:03:33.426Z", + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "104.236.181.158" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "104.236.181.158" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184404, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26052" + }, + "source": { + "ip": "104.236.181.158" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "kdnrUmcBTFzn_XoL2j_v", + "source": { + "@timestamp": "2018-11-27T02:07:26.981Z", + "process": { + "pid": "32548", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186563, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ktnrUmcBTFzn_XoL2j_v", + "source": { + "@timestamp": "2018-11-27T02:07:26.982Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186564 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32548", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "k9nrUmcBTFzn_XoL2j_v", + "source": { + "@timestamp": "2018-11-27T02:07:27.012Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186565, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32548", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ntnpUmcBTFzn_XoLkg3n", + "source": { + "@timestamp": "2018-11-27T02:04:57.466Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "30281", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.156.152.134" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44225, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "89.156.152.134", + "type": "user-session", + "primary": "sshd" + } + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "n9npUmcBTFzn_XoLkg3n", + "source": { + "@timestamp": "2018-11-27T02:04:57.466Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30281" + }, + "source": { + "ip": "89.156.152.134" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "89.156.152.134", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44226, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "oNnpUmcBTFzn_XoLkg3n", + "source": { + "@timestamp": "2018-11-27T02:04:57.574Z", + "process": { + "pid": "30281", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.156.152.134" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44227, + "result": "fail", + "session": "unset", + "data": { + "hostname": "89.156.152.134", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "89.156.152.134" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VdnrUmcBTFzn_XoLLzF2", + "source": { + "@timestamp": "2018-11-27T02:06:43.078Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "30322", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "210.71.197.80" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "210.71.197.80", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44228, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VtnrUmcBTFzn_XoLLzF2", + "source": { + "@timestamp": "2018-11-27T02:06:43.078Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30322", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "210.71.197.80" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "sequence": 44229, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "210.71.197.80", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "V9nrUmcBTFzn_XoLLzF2", + "source": { + "@timestamp": "2018-11-27T02:06:43.254Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "30322", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "210.71.197.80" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44230, + "result": "fail", + "session": "unset", + "data": { + "hostname": "210.71.197.80", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "210.71.197.80" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8tnwUmcBTFzn_XoLk6fE", + "source": { + "@timestamp": "2018-11-27T02:12:36.443Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "secondary": "37.187.195.209", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 192577 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "916", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.187.195.209" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "89nwUmcBTFzn_XoLk6fE", + "source": { + "@timestamp": "2018-11-27T02:12:36.443Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "37.187.195.209" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192578, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "37.187.195.209", + "type": "user-session" + } + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "916", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9NnwUmcBTFzn_XoLk6fE", + "source": { + "@timestamp": "2018-11-27T02:12:36.550Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "37.187.195.209" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "37.187.195.209", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 192579 + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "916", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.187.195.209" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "D9nwUmcBTFzn_XoLlqgH", + "source": { + "@timestamp": "2018-11-27T02:12:37.021Z", + "source": { + "ip": "51.38.176.147" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184424, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "51.38.176.147", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26164" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ENnwUmcBTFzn_XoLlqgH", + "source": { + "@timestamp": "2018-11-27T02:12:37.022Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.38.176.147", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184425, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26164", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.38.176.147" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "EdnwUmcBTFzn_XoLlqgH", + "source": { + "@timestamp": "2018-11-27T02:12:37.127Z", + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26164", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.38.176.147" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "51.38.176.147", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184426, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "51.38.176.147" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HNnwUmcBTFzn_XoLl6g8", + "source": { + "@timestamp": "2018-11-27T02:12:37.327Z", + "process": { + "pid": "12992", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.174.227.27" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "81.174.227.27", + "type": "user-session" + } + }, + "sequence": 43232, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HdnwUmcBTFzn_XoLl6g8", + "source": { + "@timestamp": "2018-11-27T02:12:37.327Z", + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "81.174.227.27", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43233, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "12992", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.174.227.27" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HtnwUmcBTFzn_XoLl6g8", + "source": { + "@timestamp": "2018-11-27T02:12:37.435Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43234, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "81.174.227.27", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "81.174.227.27" + } + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "12992", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.174.227.27" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DdnwUmcBTFzn_XoLRqHL", + "source": { + "@timestamp": "2018-11-27T02:12:16.736Z", + "source": { + "ip": "159.65.225.184" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "159.65.225.184", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44250 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30449" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DtnwUmcBTFzn_XoLRqHL", + "source": { + "@timestamp": "2018-11-27T02:12:16.736Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30449" + }, + "source": { + "ip": "159.65.225.184" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44249, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "159.65.225.184", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "D9nwUmcBTFzn_XoLRqHL", + "source": { + "@timestamp": "2018-11-27T02:12:16.764Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30449", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.65.225.184" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "sequence": 44251, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "159.65.225.184", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "159.65.225.184", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qtnwUmcBTFzn_XoLUqId", + "source": { + "@timestamp": "2018-11-27T02:12:19.633Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43226, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "185.91.116.197", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12988", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.91.116.197" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "q9nwUmcBTFzn_XoLUqId", + "source": { + "@timestamp": "2018-11-27T02:12:19.633Z", + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "185.91.116.197" + } + }, + "sequence": 43227, + "result": "fail" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "12988", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "185.91.116.197" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rNnwUmcBTFzn_XoLUqId", + "source": { + "@timestamp": "2018-11-27T02:12:19.753Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "185.91.116.197", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "185.91.116.197" + } + }, + "sequence": 43228, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12988" + }, + "source": { + "ip": "185.91.116.197" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6NnwUmcBTFzn_XoLjqfh", + "source": { + "@timestamp": "2018-11-27T02:12:35.140Z", + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26162", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "192.252.209.190" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "192.252.209.190", + "type": "user-session" + } + }, + "sequence": 184421 + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dnwUmcBTFzn_XoLjqfh", + "source": { + "@timestamp": "2018-11-27T02:12:35.141Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26162", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "192.252.209.190" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "secondary": "192.252.209.190", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 184422, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6tnwUmcBTFzn_XoLjqfh", + "source": { + "@timestamp": "2018-11-27T02:12:35.173Z", + "process": { + "pid": "26162", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "192.252.209.190" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184423, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "192.252.209.190", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "192.252.209.190" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ctnvUmcBTFzn_XoLp5MU", + "source": { + "@timestamp": "2018-11-27T02:11:35.850Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "912", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "105.16.153.210" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "sequence": 192574, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "105.16.153.210", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9nvUmcBTFzn_XoLp5MU", + "source": { + "@timestamp": "2018-11-27T02:11:35.851Z", + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "105.16.153.210", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 192575, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "912" + }, + "source": { + "ip": "105.16.153.210" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dNnvUmcBTFzn_XoLp5MU", + "source": { + "@timestamp": "2018-11-27T02:11:36.114Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "105.16.153.210", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192576, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "105.16.153.210", + "terminal": "ssh" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "912" + }, + "source": { + "ip": "105.16.153.210" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2dnvUmcBTFzn_XoLwpV9", + "source": { + "@timestamp": "2018-11-27T02:11:42.866Z", + "process": { + "pid": "19940", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "167.99.212.179" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "167.99.212.179" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142419, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2tnvUmcBTFzn_XoLwpV9", + "source": { + "@timestamp": "2018-11-27T02:11:42.867Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19940", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "167.99.212.179" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "167.99.212.179" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142420 + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "29nvUmcBTFzn_XoLwpV9", + "source": { + "@timestamp": "2018-11-27T02:11:42.971Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19940", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "167.99.212.179" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142421, + "result": "fail", + "session": "unset", + "data": { + "hostname": "167.99.212.179", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "167.99.212.179", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8tnvUmcBTFzn_XoLn5Ih", + "source": { + "@timestamp": "2018-11-27T02:11:33.815Z", + "process": { + "pid": "32575", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186575, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "89nvUmcBTFzn_XoLn5Ih", + "source": { + "@timestamp": "2018-11-27T02:11:33.816Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32575" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186576, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9NnvUmcBTFzn_XoLn5Ih", + "source": { + "@timestamp": "2018-11-27T02:11:33.846Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32575", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186577, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + } + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "L9nvUmcBTFzn_XoLVo3n", + "source": { + "@timestamp": "2018-11-27T02:11:15.325Z", + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "67.166.24.55", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186572, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32573", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "67.166.24.55" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MNnvUmcBTFzn_XoLVo3n", + "source": { + "@timestamp": "2018-11-27T02:11:15.326Z", + "source": { + "ip": "67.166.24.55" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186573, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "67.166.24.55", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32573", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MdnvUmcBTFzn_XoLVo3n", + "source": { + "@timestamp": "2018-11-27T02:11:15.490Z", + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "67.166.24.55" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186574, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "67.166.24.55", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "67.166.24.55", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32573", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "N9nvUmcBTFzn_XoL2Zh8", + "source": { + "@timestamp": "2018-11-27T02:11:48.750Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30433" + }, + "source": { + "ip": "217.182.55.191" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "217.182.55.191", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 44246, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ONnvUmcBTFzn_XoL2Zh8", + "source": { + "@timestamp": "2018-11-27T02:11:48.750Z", + "source": { + "ip": "217.182.55.191" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "217.182.55.191", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44247 + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "30433", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "OdnvUmcBTFzn_XoL2Zh8", + "source": { + "@timestamp": "2018-11-27T02:11:48.858Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "30433", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.182.55.191" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44248, + "result": "fail", + "session": "unset", + "data": { + "hostname": "217.182.55.191", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "217.182.55.191" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QNnwUmcBTFzn_XoLaKRf", + "source": { + "@timestamp": "2018-11-27T02:12:25.330Z", + "source": { + "ip": "94.16.115.155" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "94.16.115.155", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43229, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "12990", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QdnwUmcBTFzn_XoLaKRf", + "source": { + "@timestamp": "2018-11-27T02:12:25.330Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "12990", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "94.16.115.155" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "94.16.115.155", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43230 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "QtnwUmcBTFzn_XoLaKRf", + "source": { + "@timestamp": "2018-11-27T02:12:25.442Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "12990" + }, + "source": { + "ip": "94.16.115.155" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "94.16.115.155" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "94.16.115.155", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43231 + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6dr0UmcBTFzn_XoLnQBb", + "source": { + "@timestamp": "2018-11-27T02:17:01.040Z", + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26196", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184433, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "terminal": "cron", + "acct": "root" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_acct", + "action": "was-authorized" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6tr0UmcBTFzn_XoLnQBb", + "source": { + "@timestamp": "2018-11-27T02:17:01.040Z", + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26196", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 184434, + "result": "success", + "session": "unset", + "data": { + "terminal": "cron", + "op": "PAM:setcred", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "69r0UmcBTFzn_XoLnQBb", + "source": { + "@timestamp": "2018-11-27T02:17:01.042Z", + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "26196", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 184436, + "result": "success", + "session": "9861", + "data": { + "op": "PAM:session_open", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_start", + "action": "started-session", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7Nr0UmcBTFzn_XoLnQBb", + "source": { + "@timestamp": "2018-11-27T02:17:01.045Z", + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "26196" + }, + "auditd": { + "sequence": 184437, + "result": "success", + "session": "9861", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:setcred" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + } + }, + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "7dr0UmcBTFzn_XoLnQBb", + "source": { + "@timestamp": "2018-11-27T02:17:01.045Z", + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "26196" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "data": { + "acct": "root", + "op": "PAM:session_close", + "terminal": "cron" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 184438, + "result": "success", + "session": "9861" + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8dr0UmcBTFzn_XoLnQD4", + "source": { + "@timestamp": "2018-11-27T02:17:01.194Z", + "process": { + "pid": "30546", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:setcred" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 44259 + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8tr0UmcBTFzn_XoLnQD4", + "source": { + "@timestamp": "2018-11-27T02:17:01.194Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "30546", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 44258 + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_acct", + "action": "was-authorized" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "89r0UmcBTFzn_XoLnQD4", + "source": { + "@timestamp": "2018-11-27T02:17:01.194Z", + "event": { + "type": "user_start", + "action": "started-session", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "30546" + }, + "auditd": { + "result": "success", + "session": "1445", + "data": { + "acct": "root", + "op": "PAM:session_open", + "terminal": "cron" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 44261 + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9Nr0UmcBTFzn_XoLnQD4", + "source": { + "@timestamp": "2018-11-27T02:17:01.198Z", + "event": { + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "30546", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "1445", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 44262 + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "9dr0UmcBTFzn_XoLnQD4", + "source": { + "@timestamp": "2018-11-27T02:17:01.198Z", + "process": { + "pid": "30546", + "exe": "/usr/sbin/cron" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "sequence": 44263, + "result": "success", + "session": "1445", + "data": { + "terminal": "cron", + "op": "PAM:session_close", + "acct": "root" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "CNr0UmcBTFzn_XoLngEH", + "source": { + "@timestamp": "2018-11-27T02:17:01.212Z", + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "19971" + }, + "auditd": { + "sequence": 142422, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:accounting", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "type": "user_acct", + "action": "was-authorized", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Cdr0UmcBTFzn_XoLngEH", + "source": { + "@timestamp": "2018-11-27T02:17:01.213Z", + "process": { + "pid": "19971", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "op": "PAM:setcred", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 142423, + "result": "success", + "session": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "action": "acquired-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_acq" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ctr0UmcBTFzn_XoLngEH", + "source": { + "@timestamp": "2018-11-27T02:17:01.214Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_start", + "action": "started-session" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "19971", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "3504", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:session_open" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 142425 + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "C9r0UmcBTFzn_XoLngEH", + "source": { + "@timestamp": "2018-11-27T02:17:01.217Z", + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0", + "uid": "0" + }, + "process": { + "pid": "19971", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "result": "success", + "session": "3504", + "data": { + "acct": "root", + "op": "PAM:setcred", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 142426 + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DNr0UmcBTFzn_XoLngEH", + "source": { + "@timestamp": "2018-11-27T02:17:01.218Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "19971", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 142427, + "result": "success", + "session": "3504", + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:session_close" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + } + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ddr0UmcBTFzn_XoLngEO", + "source": { + "@timestamp": "2018-11-27T02:17:01.220Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "data": { + "acct": "root", + "op": "PAM:accounting", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192589, + "result": "success", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_acct", + "action": "was-authorized", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "947", + "exe": "/usr/sbin/cron" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Dtr0UmcBTFzn_XoLngEO", + "source": { + "@timestamp": "2018-11-27T02:17:01.220Z", + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "947", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:setcred" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192590, + "result": "success" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "D9r0UmcBTFzn_XoLngEO", + "source": { + "@timestamp": "2018-11-27T02:17:01.222Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_start", + "action": "started-session", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "947", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "9865", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:session_open" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192592, + "result": "success" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ENr0UmcBTFzn_XoLngEO", + "source": { + "@timestamp": "2018-11-27T02:17:01.225Z", + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "result": "success", + "session": "9865", + "data": { + "acct": "root", + "op": "PAM:setcred", + "terminal": "cron" + }, + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 192593 + }, + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "process": { + "pid": "947", + "exe": "/usr/sbin/cron" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Edr0UmcBTFzn_XoLngEO", + "source": { + "@timestamp": "2018-11-27T02:17:01.226Z", + "user": { + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0", + "auid": "0" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "947", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 192594, + "result": "success", + "session": "9865", + "data": { + "op": "PAM:session_close", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "cron" + } + } + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Etr0UmcBTFzn_XoLngEt", + "source": { + "@timestamp": "2018-11-27T02:17:01.245Z", + "process": { + "exe": "/usr/sbin/cron", + "pid": "13026" + }, + "auditd": { + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:accounting" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 43247 + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_acct", + "action": "was-authorized", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "E9r0UmcBTFzn_XoLngEt", + "source": { + "@timestamp": "2018-11-27T02:17:01.249Z", + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13026", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 43248, + "result": "success", + "session": "unset", + "data": { + "op": "PAM:setcred", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FNr0UmcBTFzn_XoLngEt", + "source": { + "@timestamp": "2018-11-27T02:17:01.249Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "13026" + }, + "auditd": { + "sequence": 43250, + "result": "success", + "session": "1253", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:session_open" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "category": "user-login", + "type": "user_start", + "action": "started-session", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Fdr0UmcBTFzn_XoLngEt", + "source": { + "@timestamp": "2018-11-27T02:17:01.257Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "disposed-credentials", + "module": "auditd", + "category": "user-login", + "type": "cred_disp" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13026", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "1253", + "data": { + "op": "PAM:setcred", + "acct": "root", + "terminal": "cron" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 43251, + "result": "success" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ftr0UmcBTFzn_XoLngEt", + "source": { + "@timestamp": "2018-11-27T02:17:01.257Z", + "auditd": { + "sequence": 43252, + "result": "success", + "session": "1253", + "data": { + "terminal": "cron", + "op": "PAM:session_close", + "acct": "root" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + } + }, + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "exe": "/usr/sbin/cron", + "pid": "13026" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "INr0UmcBTFzn_XoLoAHh", + "source": { + "@timestamp": "2018-11-27T02:17:01.906Z", + "event": { + "category": "user-login", + "type": "user_acct", + "action": "was-authorized", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32605", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "sequence": 186590, + "result": "success", + "session": "unset", + "data": { + "acct": "root", + "terminal": "cron", + "op": "PAM:accounting" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Idr0UmcBTFzn_XoLoAHh", + "source": { + "@timestamp": "2018-11-27T02:17:01.907Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "cred_acq", + "action": "acquired-credentials", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32605", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "root", + "op": "PAM:setcred", + "terminal": "cron" + }, + "summary": { + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "cron", + "type": "user-session" + } + }, + "sequence": 186591, + "result": "success" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Itr0UmcBTFzn_XoLoAHh", + "source": { + "@timestamp": "2018-11-27T02:17:01.908Z", + "process": { + "pid": "32605", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "session": "3512", + "data": { + "op": "PAM:session_open", + "terminal": "cron", + "acct": "root" + }, + "summary": { + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron", + "actor": { + "secondary": "root", + "primary": "root" + } + }, + "sequence": 186593, + "result": "success" + }, + "event": { + "category": "user-login", + "type": "user_start", + "action": "started-session", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "I9r0UmcBTFzn_XoLoAHh", + "source": { + "@timestamp": "2018-11-27T02:17:01.911Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "process": { + "pid": "32605", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "data": { + "terminal": "cron", + "acct": "root", + "op": "PAM:setcred" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "cron" + }, + "how": "/usr/sbin/cron", + "actor": { + "primary": "root", + "secondary": "root" + } + }, + "sequence": 186594, + "result": "success", + "session": "3512" + }, + "event": { + "category": "user-login", + "type": "cred_disp", + "action": "disposed-credentials", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "auid": "root", + "uid": "root" + }, + "auid": "0" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "JNr0UmcBTFzn_XoLoAHh", + "source": { + "@timestamp": "2018-11-27T02:17:01.912Z", + "event": { + "category": "user-login", + "type": "user_end", + "action": "ended-session", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "0", + "name_map": { + "auid": "root", + "uid": "root" + } + }, + "process": { + "pid": "32605", + "exe": "/usr/sbin/cron" + }, + "auditd": { + "summary": { + "actor": { + "primary": "root", + "secondary": "root" + }, + "object": { + "primary": "cron", + "type": "user-session" + }, + "how": "/usr/sbin/cron" + }, + "sequence": 186595, + "result": "success", + "session": "3512", + "data": { + "op": "PAM:session_close", + "terminal": "cron", + "acct": "root" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "G9r1UmcBTFzn_XoLvBrE", + "source": { + "@timestamp": "2018-11-27T02:18:14.617Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "122.160.137.37", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142428 + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "19981", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "122.160.137.37" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HNr1UmcBTFzn_XoLvBrE", + "source": { + "@timestamp": "2018-11-27T02:18:14.619Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "122.160.137.37", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142429, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19981", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "122.160.137.37" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Hdr1UmcBTFzn_XoLvBrE", + "source": { + "@timestamp": "2018-11-27T02:18:14.905Z", + "source": { + "ip": "122.160.137.37" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142430, + "result": "fail", + "session": "unset", + "data": { + "hostname": "122.160.137.37", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "122.160.137.37", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "19981", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Htr1UmcBTFzn_XoLvRof", + "source": { + "@timestamp": "2018-11-27T02:18:14.709Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "process": { + "pid": "960", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "200.207.220.128" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192598, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "200.207.220.128", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "H9r1UmcBTFzn_XoLvRof", + "source": { + "@timestamp": "2018-11-27T02:18:14.710Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "960", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "200.207.220.128" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "200.207.220.128" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192599, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "INr1UmcBTFzn_XoLvRof", + "source": { + "@timestamp": "2018-11-27T02:18:14.895Z", + "auditd": { + "data": { + "hostname": "200.207.220.128", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "200.207.220.128" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192600, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "960", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "200.207.220.128" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MtnzUmcBTFzn_XoLcefM", + "source": { + "@timestamp": "2018-11-27T02:15:44.351Z", + "source": { + "ip": "147.135.208.7" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "147.135.208.7", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43241 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13016" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "M9nzUmcBTFzn_XoLcefM", + "source": { + "@timestamp": "2018-11-27T02:15:44.351Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13016", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "147.135.208.7" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "147.135.208.7", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43242, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NNnzUmcBTFzn_XoLcefM", + "source": { + "@timestamp": "2018-11-27T02:15:44.487Z", + "source": { + "ip": "147.135.208.7" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "147.135.208.7" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "147.135.208.7", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43243, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "13016", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "S9nzUmcBTFzn_XoLdeex", + "source": { + "@timestamp": "2018-11-27T02:15:45.351Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "32602", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186587, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TNnzUmcBTFzn_XoLdeex", + "source": { + "@timestamp": "2018-11-27T02:15:45.352Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186588, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32602", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TdnzUmcBTFzn_XoLdeex", + "source": { + "@timestamp": "2018-11-27T02:15:45.383Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186589 + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32602", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "J9r1UmcBTFzn_XoLwBpB", + "source": { + "@timestamp": "2018-11-27T02:18:15.507Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "13035", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "109.75.216.201" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "109.75.216.201", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 43253, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KNr1UmcBTFzn_XoLwBpB", + "source": { + "@timestamp": "2018-11-27T02:18:15.507Z", + "process": { + "pid": "13035", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "109.75.216.201" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "109.75.216.201", + "type": "user-session" + } + }, + "sequence": 43254, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Kdr1UmcBTFzn_XoLwBpB", + "source": { + "@timestamp": "2018-11-27T02:18:15.647Z", + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13035", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "109.75.216.201" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "109.75.216.201", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 43255, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "109.75.216.201" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "htr1UmcBTFzn_XoLxhrF", + "source": { + "@timestamp": "2018-11-27T02:18:17.176Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "165.227.5.206" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43256, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13037" + }, + "source": { + "ip": "165.227.5.206" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "h9r1UmcBTFzn_XoLxhrF", + "source": { + "@timestamp": "2018-11-27T02:18:17.176Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "165.227.5.206", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43257, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13037" + }, + "source": { + "ip": "165.227.5.206" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "iNr1UmcBTFzn_XoLxhrF", + "source": { + "@timestamp": "2018-11-27T02:18:17.220Z", + "auditd": { + "sequence": 43258, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "165.227.5.206", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "165.227.5.206", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "13037", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "165.227.5.206" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4tr2UmcBTFzn_XoLCyDa", + "source": { + "@timestamp": "2018-11-27T02:18:34.864Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186599, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32621", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "49r2UmcBTFzn_XoLCyDa", + "source": { + "@timestamp": "2018-11-27T02:18:34.866Z", + "process": { + "pid": "32621", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186600, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5Nr2UmcBTFzn_XoLCyDa", + "source": { + "@timestamp": "2018-11-27T02:18:34.896Z", + "process": { + "pid": "32621", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186601, + "result": "fail", + "session": "unset", + "data": { + "hostname": "107.170.65.109", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "A9r0UmcBTFzn_XoLvwRX", + "source": { + "@timestamp": "2018-11-27T02:17:09.740Z", + "process": { + "pid": "32613", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186596, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BNr0UmcBTFzn_XoLvwRX", + "source": { + "@timestamp": "2018-11-27T02:17:09.742Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 186597 + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32613", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Bdr0UmcBTFzn_XoLvwRX", + "source": { + "@timestamp": "2018-11-27T02:17:09.772Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "hostname": "107.170.65.109", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186598, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32613", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9n0UmcBTFzn_XoLLvfV", + "source": { + "@timestamp": "2018-11-27T02:16:32.747Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "26188", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.131.79.34" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184430, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "104.131.79.34" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aNn0UmcBTFzn_XoLLvfV", + "source": { + "@timestamp": "2018-11-27T02:16:32.748Z", + "process": { + "pid": "26188", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.131.79.34" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184431, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "104.131.79.34" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "adn0UmcBTFzn_XoLLvfV", + "source": { + "@timestamp": "2018-11-27T02:16:32.779Z", + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "104.131.79.34" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "104.131.79.34", + "type": "user-session" + } + }, + "sequence": 184432, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "26188", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.131.79.34" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wdr1UmcBTFzn_XoLdBNI", + "source": { + "@timestamp": "2018-11-27T02:17:56.062Z", + "source": { + "ip": "89.156.152.134" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "89.156.152.134", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192595, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "957", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wtr1UmcBTFzn_XoLdBNI", + "source": { + "@timestamp": "2018-11-27T02:17:56.063Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192596, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "89.156.152.134", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "957", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.156.152.134" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "w9r1UmcBTFzn_XoLdBNI", + "source": { + "@timestamp": "2018-11-27T02:17:56.190Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "89.156.152.134" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "89.156.152.134", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192597, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "957", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "89.156.152.134" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UNnzUmcBTFzn_XoLwu4u", + "source": { + "@timestamp": "2018-11-27T02:16:04.928Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13018", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.168.254" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.33.168.254", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43244, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UdnzUmcBTFzn_XoLwu4u", + "source": { + "@timestamp": "2018-11-27T02:16:04.928Z", + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "178.33.168.254", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 43245, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13018" + }, + "source": { + "ip": "178.33.168.254" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UtnzUmcBTFzn_XoLwu4u", + "source": { + "@timestamp": "2018-11-27T02:16:05.048Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13018", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.168.254" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "178.33.168.254", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "178.33.168.254", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43246, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DdsBU2cBTFzn_XoL2SOm", + "source": { + "@timestamp": "2018-11-27T02:31:28.442Z", + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "147.135.208.7", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43274, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13130", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "147.135.208.7" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DtsBU2cBTFzn_XoL2SOm", + "source": { + "@timestamp": "2018-11-27T02:31:28.442Z", + "process": { + "pid": "13130", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "147.135.208.7" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43275, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "147.135.208.7" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "D9sBU2cBTFzn_XoL2SOm", + "source": { + "@timestamp": "2018-11-27T02:31:28.574Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "147.135.208.7" + }, + "summary": { + "object": { + "secondary": "147.135.208.7", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 43276, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13130", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "147.135.208.7" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ENsBU2cBTFzn_XoL2SOm", + "source": { + "@timestamp": "2018-11-27T02:31:28.994Z", + "user": { + "suid": "0", + "name_map": { + "fsuid": "root", + "gid": "root", + "sgid": "root", + "suid": "root", + "uid": "root", + "egid": "root", + "euid": "root", + "fsgid": "root" + }, + "gid": "0", + "auid": "unset", + "fsgid": "0", + "fsuid": "0", + "uid": "0", + "egid": "0", + "sgid": "0", + "euid": "0" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "ppid": "1379", + "title": "/sbin/iptables -w -I sshguard -s 147.135.208.7 -j DROP", + "name": "iptables", + "exe": "/sbin/xtables-multi", + "pid": "13132" + }, + "auditd": { + "result": "success", + "session": "unset", + "data": { + "syscall": "setsockopt", + "a0": "5", + "tty": "(none)", + "table": "filter", + "a2": "40", + "a3": "8ae870", + "a1": "0", + "family": "2", + "entries": "154", + "arch": "x86_64", + "exit": "0" + }, + "summary": { + "object": { + "primary": "filter", + "type": "firewall" + }, + "how": "/sbin/xtables-multi", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 43277 + }, + "event": { + "category": "configuration", + "type": "netfilter_cfg", + "action": "loaded-firewall-rule-to", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Ztr_UmcBTFzn_XoLP-rA", + "source": { + "@timestamp": "2018-11-27T02:28:37.974Z", + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 186620 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32675", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9r_UmcBTFzn_XoLP-rA", + "source": { + "@timestamp": "2018-11-27T02:28:37.975Z", + "auditd": { + "sequence": 186621, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32675", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "aNr_UmcBTFzn_XoLP-rA", + "source": { + "@timestamp": "2018-11-27T02:28:38.007Z", + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "107.170.65.109" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186622, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32675" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-dsAU2cBTFzn_XoLlQYl", + "source": { + "@timestamp": "2018-11-27T02:30:05.371Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32684" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186623, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "107.170.65.109", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-tsAU2cBTFzn_XoLlQYl", + "source": { + "@timestamp": "2018-11-27T02:30:05.372Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32684" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 186624, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "-9sAU2cBTFzn_XoLlQYl", + "source": { + "@timestamp": "2018-11-27T02:30:05.403Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32684" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186625, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "M9sBU2cBTFzn_XoLwCBF", + "source": { + "@timestamp": "2018-11-27T02:31:21.946Z", + "auditd": { + "sequence": 186626, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "118.25.133.243", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "32692" + }, + "source": { + "ip": "118.25.133.243" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NNsBU2cBTFzn_XoLwCBF", + "source": { + "@timestamp": "2018-11-27T02:31:21.947Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32692", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "118.25.133.243" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186627, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "118.25.133.243", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "NdsBU2cBTFzn_XoLwCBF", + "source": { + "@timestamp": "2018-11-27T02:31:22.162Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32692", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "118.25.133.243" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "118.25.133.243", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "118.25.133.243" + } + }, + "sequence": 186628, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "D9oAU2cBTFzn_XoLOP8t", + "source": { + "@timestamp": "2018-11-27T02:29:41.565Z", + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "13117", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.0.121.176" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "128.0.121.176", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43271, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ENoAU2cBTFzn_XoLOP8t", + "source": { + "@timestamp": "2018-11-27T02:29:41.569Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "128.0.121.176", + "type": "user-session" + } + }, + "sequence": 43272, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "13117", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.0.121.176" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "EdoAU2cBTFzn_XoLOP8t", + "source": { + "@timestamp": "2018-11-27T02:29:41.677Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13117", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.0.121.176" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "128.0.121.176" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "128.0.121.176", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43273 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dNsBU2cBTFzn_XoL7CTn", + "source": { + "@timestamp": "2018-11-27T02:31:33.373Z", + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32694", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186629, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ddsBU2cBTFzn_XoL7CTn", + "source": { + "@timestamp": "2018-11-27T02:31:33.375Z", + "process": { + "pid": "32694", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186630, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "107.170.65.109" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "dtsBU2cBTFzn_XoL7CTn", + "source": { + "@timestamp": "2018-11-27T02:31:33.406Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32694", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "107.170.65.109" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186631, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "107.170.65.109", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "107.170.65.109", + "type": "user-session", + "primary": "ssh" + } + } + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "G9sCU2cBTFzn_XoLvzai", + "source": { + "@timestamp": "2018-11-27T02:32:27.319Z", + "auditd": { + "sequence": 192613, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "198.27.80.211", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "1045" + }, + "source": { + "ip": "198.27.80.211" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HNsCU2cBTFzn_XoLvzai", + "source": { + "@timestamp": "2018-11-27T02:32:27.320Z", + "source": { + "ip": "198.27.80.211" + }, + "network": { + "direction": "incoming" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "198.27.80.211", + "type": "user-session" + } + }, + "sequence": 192614, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "1045", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "HdsCU2cBTFzn_XoLvzai", + "source": { + "@timestamp": "2018-11-27T02:32:27.362Z", + "auditd": { + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "198.27.80.211" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "198.27.80.211", + "type": "user-session" + } + }, + "sequence": 192615, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "1045", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "198.27.80.211" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Sdr-UmcBTFzn_XoLMtPX", + "source": { + "@timestamp": "2018-11-27T02:27:29.130Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13103", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.37.67.193" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "54.37.67.193" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43268 + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Str-UmcBTFzn_XoLMtPX", + "source": { + "@timestamp": "2018-11-27T02:27:29.130Z", + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13103" + }, + "source": { + "ip": "54.37.67.193" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "54.37.67.193" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 43269, + "result": "fail" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "S9r-UmcBTFzn_XoLMtPX", + "source": { + "@timestamp": "2018-11-27T02:27:29.242Z", + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "beat": { + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13103", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "54.37.67.193" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "54.37.67.193", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "secondary": "54.37.67.193", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 43270, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "q9sAU2cBTFzn_XoLYwI6", + "source": { + "@timestamp": "2018-11-27T02:29:52.590Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "30802", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.0.118.65" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44276, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "secondary": "128.0.118.65", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rNsAU2cBTFzn_XoLYwI6", + "source": { + "@timestamp": "2018-11-27T02:29:52.590Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "128.0.118.65", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 44277, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "30802" + }, + "source": { + "ip": "128.0.118.65" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rdsAU2cBTFzn_XoLYwI6", + "source": { + "@timestamp": "2018-11-27T02:29:52.694Z", + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "30802", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.0.118.65" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "128.0.118.65" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "128.0.118.65", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44278, + "result": "fail" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0twMU2cBTFzn_XoL7xUF", + "source": { + "@timestamp": "2018-11-27T02:43:34.811Z", + "source": { + "ip": "167.99.54.4" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184466, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "167.99.54.4" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26446" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "09wMU2cBTFzn_XoL7xUF", + "source": { + "@timestamp": "2018-11-27T02:43:34.812Z", + "source": { + "ip": "167.99.54.4" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "167.99.54.4" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184467, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26446" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "1NwMU2cBTFzn_XoL7xUF", + "source": { + "@timestamp": "2018-11-27T02:43:34.843Z", + "process": { + "pid": "26446", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "167.99.54.4" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "167.99.54.4", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "167.99.54.4", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184468, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3dwMU2cBTFzn_XoL9RW0", + "source": { + "@timestamp": "2018-11-27T02:43:36.522Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26448", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.120.174.127" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184469, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "37.120.174.127", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "3twMU2cBTFzn_XoL9RW0", + "source": { + "@timestamp": "2018-11-27T02:43:36.524Z", + "source": { + "ip": "37.120.174.127" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "37.120.174.127", + "type": "user-session" + } + }, + "sequence": 184470 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "26448", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "39wMU2cBTFzn_XoL9RW0", + "source": { + "@timestamp": "2018-11-27T02:43:36.635Z", + "auditd": { + "sequence": 184471, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "37.120.174.127", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "37.120.174.127", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26448", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "37.120.174.127" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "1twNU2cBTFzn_XoL_CyZ", + "source": { + "@timestamp": "2018-11-27T02:44:43.822Z", + "source": { + "ip": "104.248.123.206" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "104.248.123.206", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + }, + "sequence": 142450, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "20137", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "19wNU2cBTFzn_XoL_CyZ", + "source": { + "@timestamp": "2018-11-27T02:44:43.823Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "20137" + }, + "source": { + "ip": "104.248.123.206" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "104.248.123.206", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142451, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "2NwNU2cBTFzn_XoL_CyZ", + "source": { + "@timestamp": "2018-11-27T02:44:43.854Z", + "process": { + "pid": "20137", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "104.248.123.206" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142452, + "result": "fail", + "session": "unset", + "data": { + "hostname": "104.248.123.206", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "104.248.123.206", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sdwMU2cBTFzn_XoLxRBj", + "source": { + "@timestamp": "2018-11-27T02:43:22.108Z", + "source": { + "ip": "35.189.59.154" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "35.189.59.154", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184463, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26443", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "stwMU2cBTFzn_XoLxRBj", + "source": { + "@timestamp": "2018-11-27T02:43:22.109Z", + "host": { + "name": "demo-stack-apache-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "26443", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "35.189.59.154" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "secondary": "35.189.59.154", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 184464, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "s9wMU2cBTFzn_XoLxRBj", + "source": { + "@timestamp": "2018-11-27T02:43:22.284Z", + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "35.189.59.154", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "35.189.59.154" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184465, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26443", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "35.189.59.154" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "S9wNU2cBTFzn_XoLwCiw", + "source": { + "@timestamp": "2018-11-27T02:44:28.486Z", + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "209.240.59.106" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186642, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "209.240.59.106" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32760", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TNwNU2cBTFzn_XoLwCiw", + "source": { + "@timestamp": "2018-11-27T02:44:28.487Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32760", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "209.240.59.106" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "209.240.59.106", + "type": "user-session" + } + }, + "sequence": 186643, + "result": "fail", + "session": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "TdwNU2cBTFzn_XoLwCiw", + "source": { + "@timestamp": "2018-11-27T02:44:28.539Z", + "process": { + "pid": "32760", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "209.240.59.106" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "209.240.59.106", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186644, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "209.240.59.106", + "terminal": "ssh" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FNwNU2cBTFzn_XoL4yrB", + "source": { + "@timestamp": "2018-11-27T02:44:37.463Z", + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "32763", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.254.123.131" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "51.254.123.131", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186645, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FdwNU2cBTFzn_XoL4yrB", + "source": { + "@timestamp": "2018-11-27T02:44:37.464Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "secondary": "51.254.123.131", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186646 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "32763", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.254.123.131" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FtwNU2cBTFzn_XoL4yrB", + "source": { + "@timestamp": "2018-11-27T02:44:37.575Z", + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "pid": "32763", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.254.123.131" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "51.254.123.131" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "51.254.123.131", + "type": "user-session" + } + }, + "sequence": 186647 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ldwMU2cBTFzn_XoLmw6z", + "source": { + "@timestamp": "2018-11-27T02:43:13.482Z", + "process": { + "pid": "1168", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "158.69.59.90" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "158.69.59.90" + } + }, + "sequence": 192646, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ltwMU2cBTFzn_XoLmw6z", + "source": { + "@timestamp": "2018-11-27T02:43:13.483Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "158.69.59.90" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "158.69.59.90" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192647 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "1168", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "l9wMU2cBTFzn_XoLmw6z", + "source": { + "@timestamp": "2018-11-27T02:43:13.525Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "158.69.59.90", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "158.69.59.90", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192648 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "1168", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "158.69.59.90" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZdwOU2cBTFzn_XoLGy-N", + "source": { + "@timestamp": "2018-11-27T02:44:51.746Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "71.174.75.11", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 186648, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + }, + "process": { + "pid": "32765", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "71.174.75.11" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ZtwOU2cBTFzn_XoLGy-N", + "source": { + "@timestamp": "2018-11-27T02:44:51.747Z", + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "71.174.75.11", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 186649, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "32765", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "71.174.75.11" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Z9wOU2cBTFzn_XoLGy-N", + "source": { + "@timestamp": "2018-11-27T02:44:51.787Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "32765", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "71.174.75.11" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "71.174.75.11", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "71.174.75.11", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186650, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "C9wPU2cBTFzn_XoLYUv1", + "source": { + "@timestamp": "2018-11-27T02:46:15.305Z", + "process": { + "pid": "13218", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.89.180.93" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "auditd": { + "sequence": 43288, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "159.89.180.93", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DNwPU2cBTFzn_XoLYUv1", + "source": { + "@timestamp": "2018-11-27T02:46:15.305Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13218" + }, + "source": { + "ip": "159.89.180.93" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43289, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "159.89.180.93", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "DdwPU2cBTFzn_XoLYUv1", + "source": { + "@timestamp": "2018-11-27T02:46:15.337Z", + "source": { + "ip": "159.89.180.93" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "159.89.180.93", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "159.89.180.93", + "type": "user-session" + } + }, + "sequence": 43290, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13218", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_twNU2cBTFzn_XoLjiIW", + "source": { + "@timestamp": "2018-11-27T02:44:15.532Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "217.141.88.34" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "217.141.88.34" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142449 + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "20129", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.141.88.34" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5NwRU2cBTFzn_XoLtH2C", + "source": { + "@timestamp": "2018-11-27T02:48:47.512Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142454, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "51.15.251.165" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "20159", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.15.251.165" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5dwRU2cBTFzn_XoLtH2C", + "source": { + "@timestamp": "2018-11-27T02:48:47.513Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "20159" + }, + "source": { + "ip": "51.15.251.165" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "secondary": "51.15.251.165", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 142455, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5twRU2cBTFzn_XoLtH2C", + "source": { + "@timestamp": "2018-11-27T02:48:47.619Z", + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "20159", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "51.15.251.165" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "51.15.251.165", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "51.15.251.165", + "type": "user-session" + } + }, + "sequence": 142456, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sdwQU2cBTFzn_XoLA1gL", + "source": { + "@timestamp": "2018-11-27T02:46:56.545Z", + "process": { + "pid": "26473", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "35.243.183.165" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "35.243.183.165", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184472, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "stwQU2cBTFzn_XoLA1gL", + "source": { + "@timestamp": "2018-11-27T02:46:56.546Z", + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "26473", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "35.243.183.165" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "35.243.183.165", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 184473, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "s9wQU2cBTFzn_XoLA1gL", + "source": { + "@timestamp": "2018-11-27T02:46:56.586Z", + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26473" + }, + "source": { + "ip": "35.243.183.165" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "ssh", + "secondary": "35.243.183.165", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 184474, + "result": "fail", + "session": "unset", + "data": { + "hostname": "35.243.183.165", + "terminal": "ssh", + "op": "PAM:bad_ident" + } + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mdwQU2cBTFzn_XoLL132", + "source": { + "@timestamp": "2018-11-27T02:47:08.044Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "1190", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "219.65.51.21" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "219.65.51.21", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 192649, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "mtwQU2cBTFzn_XoLL132", + "source": { + "@timestamp": "2018-11-27T02:47:08.045Z", + "process": { + "pid": "1190", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "source": { + "ip": "219.65.51.21" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "219.65.51.21", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192650 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "m9wQU2cBTFzn_XoLL132", + "source": { + "@timestamp": "2018-11-27T02:47:08.272Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1190", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "219.65.51.21" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "secondary": "219.65.51.21", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192651, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "219.65.51.21" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "EdwQU2cBTFzn_XoLXmE8", + "source": { + "@timestamp": "2018-11-27T02:47:19.890Z", + "auditd": { + "sequence": 184475, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "178.128.119.59", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26475" + }, + "source": { + "ip": "178.128.119.59" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "EtwQU2cBTFzn_XoLXmE8", + "source": { + "@timestamp": "2018-11-27T02:47:19.892Z", + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "178.128.119.59", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + }, + "sequence": 184476, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26475", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.128.119.59" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "E9wQU2cBTFzn_XoLXmE8", + "source": { + "@timestamp": "2018-11-27T02:47:20.084Z", + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26475", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.128.119.59" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184477, + "result": "fail", + "session": "unset", + "data": { + "hostname": "178.128.119.59", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "178.128.119.59", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LNwRU2cBTFzn_XoLM3Pb", + "source": { + "@timestamp": "2018-11-27T02:48:14.577Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "319" + }, + "source": { + "ip": "120.197.130.118" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "120.197.130.118", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186654, + "result": "fail" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LdwRU2cBTFzn_XoLM3Pb", + "source": { + "@timestamp": "2018-11-27T02:48:14.578Z", + "auditd": { + "sequence": 186655, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "120.197.130.118", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "319" + }, + "source": { + "ip": "120.197.130.118" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "LtwRU2cBTFzn_XoLM3Pb", + "source": { + "@timestamp": "2018-11-27T02:48:14.782Z", + "process": { + "pid": "319", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "120.197.130.118" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "120.197.130.118", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 186656, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "120.197.130.118" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gtwRU2cBTFzn_XoLA25t", + "source": { + "@timestamp": "2018-11-27T02:48:02.179Z", + "process": { + "pid": "26483", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.0.118.65" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "128.0.118.65" + } + }, + "sequence": 184478, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "g9wRU2cBTFzn_XoLA25t", + "source": { + "@timestamp": "2018-11-27T02:48:02.180Z", + "process": { + "pid": "26483", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "128.0.118.65" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 184479, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "128.0.118.65", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "hNwRU2cBTFzn_XoLA25t", + "source": { + "@timestamp": "2018-11-27T02:48:02.288Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "128.0.118.65" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "128.0.118.65", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 184480, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26483", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.0.118.65" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "1dwQU2cBTFzn_XoLnGVv", + "source": { + "@timestamp": "2018-11-27T02:47:35.813Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "312", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "169.61.96.71" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "169.61.96.71", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186651 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "1twQU2cBTFzn_XoLnGVv", + "source": { + "@timestamp": "2018-11-27T02:47:35.815Z", + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "auditd": { + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "169.61.96.71", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 186652, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "312", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "169.61.96.71" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "19wQU2cBTFzn_XoLnGVv", + "source": { + "@timestamp": "2018-11-27T02:47:35.854Z", + "auditd": { + "data": { + "hostname": "169.61.96.71", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "169.61.96.71", + "type": "user-session" + } + }, + "sequence": 186653, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "312", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "169.61.96.71" + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ItwQU2cBTFzn_XoL2Gtu", + "source": { + "@timestamp": "2018-11-27T02:47:51.172Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "20151" + }, + "source": { + "ip": "104.248.157.6" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "104.248.157.6", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "104.248.157.6", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142453, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "adwPU2cBTFzn_XoLb0w5", + "source": { + "@timestamp": "2018-11-27T02:46:18.698Z", + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "5.196.69.191" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "5.196.69.191", + "type": "user-session" + } + }, + "sequence": 44301, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "5.196.69.191" + } + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31309", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VNwTU2cBTFzn_XoL0qyL", + "source": { + "@timestamp": "2018-11-27T02:51:06.273Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "217.182.170.81", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184484 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26505", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-apache-01" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "source": { + "ip": "217.182.170.81" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VdwTU2cBTFzn_XoL0qyL", + "source": { + "@timestamp": "2018-11-27T02:51:06.274Z", + "source": { + "ip": "217.182.170.81" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "217.182.170.81", + "type": "user-session" + } + }, + "sequence": 184485, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "26505" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VtwTU2cBTFzn_XoL0qyL", + "source": { + "@timestamp": "2018-11-27T02:51:06.381Z", + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "26505", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.182.170.81" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "ssh", + "hostname": "217.182.170.81", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "217.182.170.81", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184486, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "R9wSU2cBTFzn_XoLfY-L", + "source": { + "@timestamp": "2018-11-27T02:49:38.977Z", + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "188.123.122.128" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 186657, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "188.123.122.128", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "322" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SNwSU2cBTFzn_XoLfY-L", + "source": { + "@timestamp": "2018-11-27T02:49:38.978Z", + "auditd": { + "sequence": 186658, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "188.123.122.128", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-redis-01" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "322" + }, + "source": { + "ip": "188.123.122.128" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "SdwSU2cBTFzn_XoLfY-L", + "source": { + "@timestamp": "2018-11-27T02:49:39.106Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "322" + }, + "source": { + "ip": "188.123.122.128" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "188.123.122.128" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 186659, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "188.123.122.128", + "terminal": "ssh" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MNwUU2cBTFzn_XoL4MOf", + "source": { + "@timestamp": "2018-11-27T02:52:15.413Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "source": { + "ip": "37.187.0.20" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "37.187.0.20", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142457, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "20179", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MdwUU2cBTFzn_XoL4MOf", + "source": { + "@timestamp": "2018-11-27T02:52:15.414Z", + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "37.187.0.20" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142458, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(invalid user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "37.187.0.20" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "20179", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-haproxy-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "MtwUU2cBTFzn_XoL4MOf", + "source": { + "@timestamp": "2018-11-27T02:52:15.522Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "20179" + }, + "source": { + "ip": "37.187.0.20" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142459, + "result": "fail", + "session": "unset", + "data": { + "hostname": "37.187.0.20", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "37.187.0.20", + "type": "user-session" + } + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AdwTU2cBTFzn_XoLjKds", + "source": { + "@timestamp": "2018-11-27T02:50:48.323Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "26498", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "162.243.253.67" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "sequence": 184481, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "162.243.253.67", + "type": "user-session" + } + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AtwTU2cBTFzn_XoLjKds", + "source": { + "@timestamp": "2018-11-27T02:50:48.324Z", + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "sequence": 184482, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "162.243.253.67", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "26498", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "162.243.253.67" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "A9wTU2cBTFzn_XoLjKds", + "source": { + "@timestamp": "2018-11-27T02:50:48.355Z", + "source": { + "ip": "162.243.253.67" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "162.243.253.67", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "162.243.253.67", + "type": "user-session" + } + }, + "sequence": 184483, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "process": { + "pid": "26498", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KNwSU2cBTFzn_XoL6pgK", + "source": { + "@timestamp": "2018-11-27T02:50:06.744Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43291, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "52.189.217.7" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "13243", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "52.189.217.7" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KdwSU2cBTFzn_XoL6pgK", + "source": { + "@timestamp": "2018-11-27T02:50:06.748Z", + "process": { + "pid": "13243", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "52.189.217.7" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43292, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "52.189.217.7", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "KtwSU2cBTFzn_XoL6pgK", + "source": { + "@timestamp": "2018-11-27T02:50:06.964Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13243", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "52.189.217.7" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "52.189.217.7" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "52.189.217.7" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43293 + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "pdwUU2cBTFzn_XoLmrwL", + "source": { + "@timestamp": "2018-11-27T02:51:57.342Z", + "process": { + "pid": "13252", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "45.122.222.185" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "45.122.222.185" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43294, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ptwUU2cBTFzn_XoLmrwL", + "source": { + "@timestamp": "2018-11-27T02:51:57.342Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "45.122.222.185" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "45.122.222.185", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43295, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13252" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "p9wUU2cBTFzn_XoLmrwL", + "source": { + "@timestamp": "2018-11-27T02:51:57.590Z", + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "13252", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "45.122.222.185" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43296, + "result": "fail", + "session": "unset", + "data": { + "hostname": "45.122.222.185", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "45.122.222.185", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + } + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0dwSU2cBTFzn_XoLxpVy", + "source": { + "@timestamp": "2018-11-27T02:49:57.640Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "331" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "source": { + "ip": "62.93.166.91" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "62.93.166.91", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186660, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0twSU2cBTFzn_XoLxpVy", + "source": { + "@timestamp": "2018-11-27T02:49:57.641Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "331", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "62.93.166.91" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + }, + "object": { + "primary": "sshd", + "secondary": "62.93.166.91", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186661, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "09wSU2cBTFzn_XoLxpVy", + "source": { + "@timestamp": "2018-11-27T02:49:57.762Z", + "process": { + "pid": "331", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "62.93.166.91" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "hostname": "62.93.166.91", + "op": "PAM:bad_ident", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "62.93.166.91" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 186662, + "result": "fail", + "session": "unset" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-redis-01", + "hostname": "demo-stack-redis-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-redis-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "UtwVU2cBTFzn_XoLNcpH", + "source": { + "@timestamp": "2018-11-27T02:52:37.083Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "86.104.220.26", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 44305 + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31435" + }, + "source": { + "ip": "86.104.220.26" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "U9wVU2cBTFzn_XoLNcpH", + "source": { + "@timestamp": "2018-11-27T02:52:37.083Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44306, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "86.104.220.26", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "process": { + "pid": "31435", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "86.104.220.26" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "VNwVU2cBTFzn_XoLNcpH", + "source": { + "@timestamp": "2018-11-27T02:52:37.223Z", + "auditd": { + "session": "unset", + "data": { + "hostname": "86.104.220.26", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "86.104.220.26", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44307, + "result": "fail" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31435", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "86.104.220.26" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "qtwTU2cBTFzn_XoLRqAf", + "source": { + "@timestamp": "2018-11-27T02:50:30.321Z", + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31389", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.62.61.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.62.61.192", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44302, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "q9wTU2cBTFzn_XoLRqAf", + "source": { + "@timestamp": "2018-11-27T02:50:30.321Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "178.62.61.192" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44303, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "31389", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.62.61.192" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "rNwTU2cBTFzn_XoLRqAf", + "source": { + "@timestamp": "2018-11-27T02:50:30.421Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "31389" + }, + "source": { + "ip": "178.62.61.192" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "secondary": "178.62.61.192", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44304, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "178.62.61.192" + } + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cdwXU2cBTFzn_XoLm_-X", + "source": { + "@timestamp": "2018-11-27T02:55:14.346Z", + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "144.217.42.212", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43300, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13273", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "144.217.42.212" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ctwXU2cBTFzn_XoLm_-X", + "source": { + "@timestamp": "2018-11-27T02:55:14.346Z", + "process": { + "pid": "13273", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "144.217.42.212" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "144.217.42.212", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43301 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "c9wXU2cBTFzn_XoLm_-X", + "source": { + "@timestamp": "2018-11-27T02:55:14.386Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "13273", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "144.217.42.212" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "144.217.42.212" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "144.217.42.212", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43302, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "ztwXU2cBTFzn_XoLn_8Q", + "source": { + "@timestamp": "2018-11-27T02:55:15.179Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "1238", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "78.193.8.166" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192661, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "78.193.8.166", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "z9wXU2cBTFzn_XoLn_8Q", + "source": { + "@timestamp": "2018-11-27T02:55:15.185Z", + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1238", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "78.193.8.166" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192662, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "78.193.8.166", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "0NwXU2cBTFzn_XoLn_8Q", + "source": { + "@timestamp": "2018-11-27T02:55:15.302Z", + "source": { + "ip": "78.193.8.166" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "secondary": "78.193.8.166", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192663, + "result": "fail", + "session": "unset", + "data": { + "hostname": "78.193.8.166", + "terminal": "ssh", + "op": "PAM:bad_ident" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1238", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8dwWU2cBTFzn_XoLK980", + "source": { + "@timestamp": "2018-11-27T02:53:40.043Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1225", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "165.227.184.21" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192652, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "165.227.184.21", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "8twWU2cBTFzn_XoLK980", + "source": { + "@timestamp": "2018-11-27T02:53:40.044Z", + "process": { + "pid": "1225", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "165.227.184.21" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "165.227.184.21" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 192653 + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "89wWU2cBTFzn_XoLK980", + "source": { + "@timestamp": "2018-11-27T02:53:40.074Z", + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "165.227.184.21" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "165.227.184.21", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192654, + "result": "fail" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1225", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "165.227.184.21" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BdwWU2cBTFzn_XoLL-A3", + "source": { + "@timestamp": "2018-11-27T02:53:41.070Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "1227", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "206.81.24.64" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192655, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "206.81.24.64" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "BtwWU2cBTFzn_XoLL-A3", + "source": { + "@timestamp": "2018-11-27T02:53:41.071Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192656, + "result": "fail", + "session": "unset", + "data": { + "acct": "(invalid user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "206.81.24.64" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "1227", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "206.81.24.64" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "B9wWU2cBTFzn_XoLL-A3", + "source": { + "@timestamp": "2018-11-27T02:53:41.179Z", + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "206.81.24.64", + "terminal": "ssh" + }, + "summary": { + "object": { + "secondary": "206.81.24.64", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + } + }, + "sequence": 192657 + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "1227", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "206.81.24.64" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "s9wWU2cBTFzn_XoLnOnq", + "source": { + "@timestamp": "2018-11-27T02:54:09.152Z", + "auditd": { + "sequence": 142460, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "103.100.209.44", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "20193", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.100.209.44" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "tNwWU2cBTFzn_XoLnOnq", + "source": { + "@timestamp": "2018-11-27T02:54:09.153Z", + "process": { + "pid": "20193", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.100.209.44" + }, + "host": { + "name": "demo-stack-haproxy-01" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "103.100.209.44", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 142461, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + } + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "tdwWU2cBTFzn_XoLnOnq", + "source": { + "@timestamp": "2018-11-27T02:54:09.326Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "auditd": { + "sequence": 142462, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "103.100.209.44" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "103.100.209.44" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "20193", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "103.100.209.44" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wNwWU2cBTFzn_XoLUOIL", + "source": { + "@timestamp": "2018-11-27T02:53:49.472Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "81.66.86.4", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 192658, + "result": "fail" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1229", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.66.86.4" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wdwWU2cBTFzn_XoLUOIL", + "source": { + "@timestamp": "2018-11-27T02:53:49.473Z", + "auditd": { + "sequence": 192659, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "type": "user-session", + "primary": "sshd", + "secondary": "81.66.86.4" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1229", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.66.86.4" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "wtwWU2cBTFzn_XoLUOIL", + "source": { + "@timestamp": "2018-11-27T02:53:49.586Z", + "process": { + "pid": "1229", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "81.66.86.4" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192660, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "81.66.86.4" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "81.66.86.4", + "type": "user-session" + } + } + }, + "beat": { + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "r9wWU2cBTFzn_XoLJ98E", + "source": { + "@timestamp": "2018-11-27T02:53:38.966Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "terminal": "sshd", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "122.15.119.41", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 43297 + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "13265", + "exe": "/usr/sbin/sshd" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "source": { + "ip": "122.15.119.41" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sNwWU2cBTFzn_XoLJ98E", + "source": { + "@timestamp": "2018-11-27T02:53:38.966Z", + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "122.15.119.41", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43298, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "auid": "unset", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13265" + }, + "source": { + "ip": "122.15.119.41" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sdwWU2cBTFzn_XoLJ98E", + "source": { + "@timestamp": "2018-11-27T02:53:39.222Z", + "process": { + "pid": "13265", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "122.15.119.41" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "122.15.119.41", + "type": "user-session", + "primary": "ssh" + } + }, + "sequence": 43299, + "result": "fail", + "session": "unset", + "data": { + "hostname": "122.15.119.41", + "terminal": "ssh", + "op": "PAM:bad_ident" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4dwVU2cBTFzn_XoLtdX6", + "source": { + "@timestamp": "2018-11-27T02:53:10.025Z", + "process": { + "pid": "31449", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.203.168.217" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "159.203.168.217", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44308, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + } + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4twVU2cBTFzn_XoLtdX6", + "source": { + "@timestamp": "2018-11-27T02:53:10.029Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "159.203.168.217", + "type": "user-session", + "primary": "sshd" + } + }, + "sequence": 44309, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + } + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "31449", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "source": { + "ip": "159.203.168.217" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "49wVU2cBTFzn_XoLtdX6", + "source": { + "@timestamp": "2018-11-27T02:53:10.057Z", + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31449", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "159.203.168.217" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44310, + "result": "fail", + "session": "unset", + "data": { + "terminal": "ssh", + "op": "PAM:bad_ident", + "hostname": "159.203.168.217" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "159.203.168.217", + "type": "user-session" + } + } + }, + "beat": { + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1", + "name": "demo-stack-es-01" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_err", + "action": "error" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YNwVU2cBTFzn_XoLyNec", + "source": { + "@timestamp": "2018-11-27T02:53:14.798Z", + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31453", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.45.156" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.33.45.156", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44311, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YdwVU2cBTFzn_XoLyNec", + "source": { + "@timestamp": "2018-11-27T02:53:14.798Z", + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "178.33.45.156", + "type": "user-session" + } + }, + "sequence": 44312 + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "pid": "31453", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.45.156" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "YtwVU2cBTFzn_XoLyNec", + "source": { + "@timestamp": "2018-11-27T02:53:14.906Z", + "process": { + "pid": "31453", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "178.33.45.156" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 44313, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "178.33.45.156", + "terminal": "ssh" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "secondary": "178.33.45.156", + "type": "user-session", + "primary": "ssh" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zd0YU2cBTFzn_XoLHgkA", + "source": { + "@timestamp": "2018-11-27T02:55:47.730Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "46.148.192.41", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44315, + "result": "fail" + }, + "host": { + "name": "demo-stack-es-01" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "pid": "31503", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.192.41" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "zt0YU2cBTFzn_XoLHgkA", + "source": { + "@timestamp": "2018-11-27T02:55:47.730Z", + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31503", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.192.41" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "46.148.192.41", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44316, + "result": "fail" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "z90YU2cBTFzn_XoLHgkA", + "source": { + "@timestamp": "2018-11-27T02:55:47.874Z", + "auditd": { + "sequence": 44317, + "result": "fail", + "session": "unset", + "data": { + "hostname": "46.148.192.41", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "46.148.192.41", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "31503", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "46.148.192.41" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "gdwVU2cBTFzn_XoL5dmB", + "source": { + "@timestamp": "2018-11-27T02:53:22.174Z", + "source": { + "ip": "149.202.54.124" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "149.202.54.124", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "149.202.54.124", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 44314, + "result": "fail" + }, + "beat": { + "name": "demo-stack-es-01", + "hostname": "demo-stack-es-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-es-01" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "31457", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "E90aU2cBTFzn_XoLNjl5", + "source": { + "@timestamp": "2018-11-27T02:58:05.071Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + }, + "object": { + "secondary": "217.8.49.195", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 192673, + "result": "fail", + "session": "unset" + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1272", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.8.49.195" + }, + "beat": { + "version": "7.0.0-alpha1", + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "FN0aU2cBTFzn_XoLNjl5", + "source": { + "@timestamp": "2018-11-27T02:58:05.072Z", + "process": { + "pid": "1272", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.8.49.195" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192674, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "secondary": "217.8.49.195", + "type": "user-session", + "primary": "sshd" + } + } + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Fd0aU2cBTFzn_XoLNjl5", + "source": { + "@timestamp": "2018-11-27T02:58:05.216Z", + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "217.8.49.195", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "type": "user-session", + "primary": "ssh", + "secondary": "217.8.49.195" + } + }, + "sequence": 192675, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1272", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "217.8.49.195" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5d0aU2cBTFzn_XoLw0Ro", + "source": { + "@timestamp": "2018-11-27T02:58:41.148Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13636" + }, + "source": { + "ip": "197.53.106.203" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(unknown user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "secondary": "197.53.106.203", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43308, + "result": "fail", + "session": "unset" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5t0aU2cBTFzn_XoLw0Ro", + "source": { + "@timestamp": "2018-11-27T02:58:41.148Z", + "process": { + "pid": "13636", + "exe": "/usr/sbin/sshd" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "source": { + "ip": "197.53.106.203" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43309, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "197.53.106.203", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "590aU2cBTFzn_XoLw0Ro", + "source": { + "@timestamp": "2018-11-27T02:58:41.768Z", + "source": { + "ip": "197.53.106.203" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "hostname": "197.53.106.203", + "terminal": "ssh" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "197.53.106.203", + "type": "user-session" + } + }, + "sequence": 43310 + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "process": { + "pid": "13636", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "cN0bU2cBTFzn_XoLDkvX", + "source": { + "@timestamp": "2018-11-27T02:59:00.461Z", + "host": { + "name": "demo-stack-nginx-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "1275", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "71.112.175.120" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 192676, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "71.112.175.120" + }, + "summary": { + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "71.112.175.120", + "type": "user-session" + } + } + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "4t0bU2cBTFzn_XoLaVLG", + "source": { + "@timestamp": "2018-11-27T02:59:23.735Z", + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "198.100.156.214", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43311, + "result": "fail", + "session": "unset" + }, + "event": { + "module": "auditd", + "category": "user-login", + "type": "user_login", + "action": "logged-in" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13643", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "198.100.156.214" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "490bU2cBTFzn_XoLaVLG", + "source": { + "@timestamp": "2018-11-27T02:59:23.735Z", + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "terminal": "sshd", + "acct": "(invalid user)" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + }, + "object": { + "primary": "sshd", + "secondary": "198.100.156.214", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43312, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13643" + }, + "source": { + "ip": "198.100.156.214" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "5N0bU2cBTFzn_XoLaVLG", + "source": { + "@timestamp": "2018-11-27T02:59:23.779Z", + "auditd": { + "session": "unset", + "data": { + "terminal": "ssh", + "hostname": "198.100.156.214", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "secondary": "root", + "primary": "unset" + }, + "object": { + "primary": "ssh", + "secondary": "198.100.156.214", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43313, + "result": "fail" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13643", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "198.100.156.214" + }, + "network": { + "direction": "incoming" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Xd0bU2cBTFzn_XoLclNQ", + "source": { + "@timestamp": "2018-11-27T02:59:25.924Z", + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "auid": "unset", + "name_map": { + "uid": "root" + }, + "uid": "0" + }, + "process": { + "pid": "13645", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.121.110.50" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "data": { + "terminal": "sshd", + "acct": "(unknown user)", + "op": "login" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "91.121.110.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + } + }, + "sequence": 43314, + "result": "fail", + "session": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Xt0bU2cBTFzn_XoLclNQ", + "source": { + "@timestamp": "2018-11-27T02:59:25.924Z", + "source": { + "ip": "91.121.110.50" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43315, + "result": "fail", + "session": "unset", + "data": { + "terminal": "sshd", + "op": "login", + "acct": "(invalid user)" + }, + "summary": { + "object": { + "secondary": "91.121.110.50", + "type": "user-session", + "primary": "sshd" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "(invalid user)" + } + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13645" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "X90bU2cBTFzn_XoLclNQ", + "source": { + "@timestamp": "2018-11-27T02:59:26.032Z", + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "action": "error", + "module": "auditd", + "category": "user-login", + "type": "user_err" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "13645", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "91.121.110.50" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43316, + "result": "fail", + "session": "unset", + "data": { + "op": "PAM:bad_ident", + "terminal": "ssh", + "hostname": "91.121.110.50" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "91.121.110.50", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_t0bU2cBTFzn_XoLelQ5", + "source": { + "@timestamp": "2018-11-27T02:59:27.948Z", + "source": { + "ip": "51.38.82.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 43317, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "object": { + "primary": "sshd", + "secondary": "51.38.82.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(unknown user)", + "primary": "unset" + } + } + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "process": { + "pid": "13647", + "exe": "/usr/sbin/sshd" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "_90bU2cBTFzn_XoLelQ5", + "source": { + "@timestamp": "2018-11-27T02:59:27.948Z", + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13647" + }, + "source": { + "ip": "51.38.82.60" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "summary": { + "object": { + "primary": "sshd", + "secondary": "51.38.82.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "secondary": "(invalid user)", + "primary": "unset" + } + }, + "sequence": 43318, + "result": "fail", + "session": "unset", + "data": { + "op": "login", + "acct": "(invalid user)", + "terminal": "sshd" + } + }, + "event": { + "action": "logged-in", + "module": "auditd", + "category": "user-login", + "type": "user_login" + }, + "user": { + "uid": "0", + "name_map": { + "uid": "root" + }, + "auid": "unset" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "AN0bU2cBTFzn_XoLelU5", + "source": { + "@timestamp": "2018-11-27T02:59:28.060Z", + "auditd": { + "data": { + "hostname": "51.38.82.60", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "51.38.82.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43319, + "result": "fail", + "session": "unset" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13647" + }, + "source": { + "ip": "51.38.82.60" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Xa2ipWkBCQofM5eXEgsv", + "source": { + "@timestamp": "2018-11-27T02:59:28.060Z", + "auditd": { + "data": { + "hostname": "51.38.82.60", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "root" + }, + "object": { + "primary": "ssh", + "secondary": "51.38.82.60", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 43319, + "result": "fail", + "session": "unset" + }, + "destination" : { + "ip" : "0.0.0.0", + "port" : "22" + }, + "event": { + "type": "user_err", + "action": "error", + "module": "auditd", + "category": "user-login" + }, + "user" : { + "group" : { + "name" : "root", + "id" : "0" + }, + "id" : "0", + "name" : "root" + }, + "process": { + "exe": "/usr/sbin/sshd", + "pid": "13647" + }, + "source": { + "ip": "51.38.82.60" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-mysql-01", + "hostname": "demo-stack-mysql-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-mysql-01" + } + } + } +} diff --git a/x-pack/test/functional/es_archives/auditbeat/kpi_hosts/data.json b/x-pack/test/functional/es_archives/auditbeat/kpi_hosts/data.json new file mode 100644 index 0000000000000..470e38e62ba51 --- /dev/null +++ b/x-pack/test/functional/es_archives/auditbeat/kpi_hosts/data.json @@ -0,0 +1,194 @@ +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "Rs93UmcBTFzn_XoLWT6M", + "source": { + "@timestamp": "2018-11-27T00:00:11.544Z", + "process": { + "pid": "31964", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "128.199.87.213" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-nginx-01", + "hostname": "demo-stack-nginx-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-nginx-01" + }, + "auditd": { + "session": "unset", + "data": { + "hostname": "128.199.87.213", + "terminal": "ssh", + "op": "PAM:bad_ident" + }, + "summary": { + "object": { + "primary": "ssh", + "secondary": "128.199.87.213", + "type": "user-session" + }, + "how": "/usr/sbin/sshd", + "actor": { + "primary": "unset", + "secondary": "root" + } + }, + "sequence": 192383, + "result": "fail" + }, + "event": { + "category": "user-login", + "type": "user_err", + "action": "error", + "module": "auditd" + }, + "user": { + "name_map": { + "uid": "root" + }, + "auid": "unset", + "uid": "0" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "6Nr4UmcBTFzn_XoL4l6d", + "source": { + "@timestamp": "2018-11-27T02:21:40.914Z", + "host": { + "name": "demo-stack-haproxy-01" + }, + "user": { + "auid": "unset", + "uid": "0", + "name_map": { + "uid": "root" + } + }, + "process": { + "pid": "20001", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "82.62.233.163" + }, + "network": { + "direction": "incoming" + }, + "auditd": { + "sequence": 142431, + "result": "fail", + "session": "unset", + "data": { + "acct": "(unknown user)", + "op": "login", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "82.62.233.163", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + } + }, + "event": { + "category": "user-login", + "type": "user_login", + "action": "logged-in", + "module": "auditd" + }, + "beat": { + "name": "demo-stack-haproxy-01", + "hostname": "demo-stack-haproxy-01", + "version": "7.0.0-alpha1" + } + } + } +} + +{ + "type": "doc", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "type": "doc", + "id": "sdwQU2cBTFzn_XoLA1gL", + "source": { + "@timestamp": "2018-11-27T02:46:56.545Z", + "process": { + "pid": "26473", + "exe": "/usr/sbin/sshd" + }, + "source": { + "ip": "35.243.183.165" + }, + "network": { + "direction": "incoming" + }, + "beat": { + "name": "demo-stack-apache-01", + "hostname": "demo-stack-apache-01", + "version": "7.0.0-alpha1" + }, + "host": { + "name": "demo-stack-apache-01" + }, + "auditd": { + "session": "unset", + "data": { + "op": "login", + "acct": "(unknown user)", + "terminal": "sshd" + }, + "summary": { + "actor": { + "primary": "unset", + "secondary": "(unknown user)" + }, + "object": { + "primary": "sshd", + "secondary": "35.243.183.165", + "type": "user-session" + }, + "how": "/usr/sbin/sshd" + }, + "sequence": 184472, + "result": "fail" + }, + "event": { + "type": "user_login", + "action": "logged-in", + "module": "auditd", + "category": "user-login" + }, + "user": { + "name_map": { + "uid": "root" + }, + "uid": "0", + "auid": "unset" + } + } + } +} diff --git a/x-pack/test/functional/es_archives/auditbeat/kpi_hosts/mappings.json b/x-pack/test/functional/es_archives/auditbeat/kpi_hosts/mappings.json new file mode 100644 index 0000000000000..96aec998fcdcd --- /dev/null +++ b/x-pack/test/functional/es_archives/auditbeat/kpi_hosts/mappings.json @@ -0,0 +1,1903 @@ +{ + "type": "index", + "value": { + "index": "auditbeat-7.0.0-alpha1-2018.11.27", + "settings": { + "index": { + "codec": "best_compression", + "mapping": { + "total_fields": { + "limit": "10000" + } + }, + "refresh_interval": "5s", + "number_of_shards": "1", + "query": { + "default_field": [ + "beat.name", + "beat.hostname", + "beat.timezone", + "beat.version", + "tags", + "error.message", + "error.type", + "meta.cloud.provider", + "meta.cloud.instance_id", + "meta.cloud.instance_name", + "meta.cloud.machine_type", + "meta.cloud.availability_zone", + "meta.cloud.project_id", + "meta.cloud.region", + "docker.container.id", + "docker.container.image", + "docker.container.name", + "host.name", + "host.id", + "host.architecture", + "host.os.platform", + "host.os.version", + "host.os.family", + "host.mac", + "kubernetes.pod.name", + "kubernetes.pod.uid", + "kubernetes.namespace", + "kubernetes.node.name", + "kubernetes.container.name", + "kubernetes.container.image", + "event.module", + "event.action", + "file.path", + "raw", + "file.target_path", + "file.type", + "file.device", + "file.inode", + "file.uid", + "file.owner", + "file.gid", + "file.group", + "file.mode", + "file.origin", + "raw", + "file.selinux.user", + "file.selinux.role", + "file.selinux.domain", + "file.selinux.level", + "event.category", + "event.type", + "user.auid", + "user.uid", + "user.euid", + "user.fsuid", + "user.suid", + "user.gid", + "user.egid", + "user.sgid", + "user.fsgid", + "user.name_map.auid", + "user.name_map.uid", + "user.name_map.euid", + "user.name_map.fsuid", + "user.name_map.suid", + "user.name_map.gid", + "user.name_map.egid", + "user.name_map.sgid", + "user.name_map.fsgid", + "user.selinux.user", + "user.selinux.role", + "user.selinux.domain", + "user.selinux.level", + "user.selinux.category", + "process.pid", + "process.ppid", + "process.name", + "process.title", + "process.exe", + "process.cwd", + "process.args", + "source.port", + "source.hostname", + "source.path", + "destination.port", + "destination.hostname", + "destination.path", + "network.direction", + "auditd.session", + "auditd.result", + "auditd.summary.actor.primary", + "auditd.summary.actor.secondary", + "auditd.summary.object.type", + "auditd.summary.object.primary", + "auditd.summary.object.secondary", + "auditd.summary.how", + "auditd.paths.inode", + "auditd.paths.dev", + "auditd.paths.obj_user", + "auditd.paths.obj_role", + "auditd.paths.obj_domain", + "auditd.paths.obj_level", + "auditd.paths.objtype", + "auditd.paths.ouid", + "auditd.paths.rdev", + "auditd.paths.nametype", + "auditd.paths.ogid", + "auditd.paths.item", + "auditd.paths.mode", + "auditd.paths.name", + "auditd.data.action", + "auditd.data.minor", + "auditd.data.acct", + "auditd.data.addr", + "auditd.data.cipher", + "auditd.data.id", + "auditd.data.entries", + "auditd.data.kind", + "auditd.data.ksize", + "auditd.data.spid", + "auditd.data.arch", + "auditd.data.argc", + "auditd.data.major", + "auditd.data.unit", + "auditd.data.table", + "auditd.data.terminal", + "auditd.data.grantors", + "auditd.data.direction", + "auditd.data.op", + "auditd.data.tty", + "auditd.data.syscall", + "auditd.data.data", + "auditd.data.family", + "auditd.data.mac", + "auditd.data.pfs", + "auditd.data.items", + "auditd.data.a0", + "auditd.data.a1", + "auditd.data.a2", + "auditd.data.a3", + "auditd.data.hostname", + "auditd.data.lport", + "auditd.data.rport", + "auditd.data.exit", + "auditd.data.fp", + "auditd.data.laddr", + "auditd.data.sport", + "auditd.data.capability", + "auditd.data.nargs", + "auditd.data.new-enabled", + "auditd.data.audit_backlog_limit", + "auditd.data.dir", + "auditd.data.cap_pe", + "auditd.data.model", + "auditd.data.new_pp", + "auditd.data.old-enabled", + "auditd.data.oauid", + "auditd.data.old", + "auditd.data.banners", + "auditd.data.feature", + "auditd.data.vm-ctx", + "auditd.data.opid", + "auditd.data.seperms", + "auditd.data.seresult", + "auditd.data.new-rng", + "auditd.data.old-net", + "auditd.data.sigev_signo", + "auditd.data.ino", + "auditd.data.old_enforcing", + "auditd.data.old-vcpu", + "auditd.data.range", + "auditd.data.res", + "auditd.data.added", + "auditd.data.fam", + "auditd.data.nlnk-pid", + "auditd.data.subj", + "auditd.data.a[0-3]", + "auditd.data.cgroup", + "auditd.data.kernel", + "auditd.data.ocomm", + "auditd.data.new-net", + "auditd.data.permissive", + "auditd.data.class", + "auditd.data.compat", + "auditd.data.fi", + "auditd.data.changed", + "auditd.data.msg", + "auditd.data.dport", + "auditd.data.new-seuser", + "auditd.data.invalid_context", + "auditd.data.dmac", + "auditd.data.ipx-net", + "auditd.data.iuid", + "auditd.data.macproto", + "auditd.data.obj", + "auditd.data.ipid", + "auditd.data.new-fs", + "auditd.data.vm-pid", + "auditd.data.cap_pi", + "auditd.data.old-auid", + "auditd.data.oses", + "auditd.data.fd", + "auditd.data.igid", + "auditd.data.new-disk", + "auditd.data.parent", + "auditd.data.len", + "auditd.data.oflag", + "auditd.data.uuid", + "auditd.data.code", + "auditd.data.nlnk-grp", + "auditd.data.cap_fp", + "auditd.data.new-mem", + "auditd.data.seperm", + "auditd.data.enforcing", + "auditd.data.new-chardev", + "auditd.data.old-rng", + "auditd.data.outif", + "auditd.data.cmd", + "auditd.data.hook", + "auditd.data.new-level", + "auditd.data.sauid", + "auditd.data.sig", + "auditd.data.audit_backlog_wait_time", + "auditd.data.printer", + "auditd.data.old-mem", + "auditd.data.perm", + "auditd.data.old_pi", + "auditd.data.state", + "auditd.data.format", + "auditd.data.new_gid", + "auditd.data.tcontext", + "auditd.data.maj", + "auditd.data.watch", + "auditd.data.device", + "auditd.data.grp", + "auditd.data.bool", + "auditd.data.icmp_type", + "auditd.data.new_lock", + "auditd.data.old_prom", + "auditd.data.acl", + "auditd.data.ip", + "auditd.data.new_pi", + "auditd.data.default-context", + "auditd.data.inode_gid", + "auditd.data.new-log_passwd", + "auditd.data.new_pe", + "auditd.data.selected-context", + "auditd.data.cap_fver", + "auditd.data.file", + "auditd.data.net", + "auditd.data.virt", + "auditd.data.cap_pp", + "auditd.data.old-range", + "auditd.data.resrc", + "auditd.data.new-range", + "auditd.data.obj_gid", + "auditd.data.proto", + "auditd.data.old-disk", + "auditd.data.audit_failure", + "auditd.data.inif", + "auditd.data.vm", + "auditd.data.flags", + "auditd.data.nlnk-fam", + "auditd.data.old-fs", + "auditd.data.old-ses", + "auditd.data.seqno", + "auditd.data.fver", + "auditd.data.qbytes", + "auditd.data.seuser", + "auditd.data.cap_fe", + "auditd.data.new-vcpu", + "auditd.data.old-level", + "auditd.data.old_pp", + "auditd.data.daddr", + "auditd.data.old-role", + "auditd.data.ioctlcmd", + "auditd.data.smac", + "auditd.data.apparmor", + "auditd.data.fe", + "auditd.data.perm_mask", + "auditd.data.ses", + "auditd.data.cap_fi", + "auditd.data.obj_uid", + "auditd.data.reason", + "auditd.data.list", + "auditd.data.old_lock", + "auditd.data.bus", + "auditd.data.old_pe", + "auditd.data.new-role", + "auditd.data.prom", + "auditd.data.uri", + "auditd.data.audit_enabled", + "auditd.data.old-log_passwd", + "auditd.data.old-seuser", + "auditd.data.per", + "auditd.data.scontext", + "auditd.data.tclass", + "auditd.data.ver", + "auditd.data.new", + "auditd.data.val", + "auditd.data.img-ctx", + "auditd.data.old-chardev", + "auditd.data.old_val", + "auditd.data.success", + "auditd.data.inode_uid", + "auditd.data.removed", + "auditd.data.socket.port", + "auditd.data.socket.saddr", + "auditd.data.socket.addr", + "auditd.data.socket.family", + "auditd.data.socket.path", + "auditd.messages", + "auditd.warnings", + "geoip.continent_name", + "geoip.city_name", + "geoip.region_name", + "geoip.country_iso_code", + "hash.blake2b_256", + "hash.blake2b_384", + "hash.blake2b_512", + "hash.md5", + "hash.sha1", + "hash.sha224", + "hash.sha256", + "hash.sha384", + "hash.sha3_224", + "hash.sha3_256", + "hash.sha3_384", + "hash.sha3_512", + "hash.sha512", + "hash.sha512_224", + "hash.sha512_256", + "hash.xxh64", + "fields.*" + ] + }, + "number_of_replicas": "0" + } + }, + "mappings": { + "_meta": { + "version": "7.0.0-alpha1" + }, + "dynamic_templates": [ + { + "fields": { + "path_match": "fields.*", + "match_mapping_type": "string", + "mapping": { + "type": "keyword" + } + } + }, + { + "docker.container.labels": { + "path_match": "docker.container.labels.*", + "match_mapping_type": "string", + "mapping": { + "type": "keyword" + } + } + }, + { + "strings_as_keyword": { + "match_mapping_type": "string", + "mapping": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + ], + "date_detection": false, + "properties": { + "@timestamp": { + "type": "date" + }, + "auditd": { + "properties": { + "data": { + "properties": { + "a0": { + "type": "keyword", + "ignore_above": 1024 + }, + "a1": { + "type": "keyword", + "ignore_above": 1024 + }, + "a2": { + "type": "keyword", + "ignore_above": 1024 + }, + "a3": { + "type": "keyword", + "ignore_above": 1024 + }, + "a[0-3]": { + "type": "keyword", + "ignore_above": 1024 + }, + "acct": { + "type": "keyword", + "ignore_above": 1024 + }, + "acl": { + "type": "keyword", + "ignore_above": 1024 + }, + "action": { + "type": "keyword", + "ignore_above": 1024 + }, + "added": { + "type": "keyword", + "ignore_above": 1024 + }, + "addr": { + "type": "keyword", + "ignore_above": 1024 + }, + "apparmor": { + "type": "keyword", + "ignore_above": 1024 + }, + "arch": { + "type": "keyword", + "ignore_above": 1024 + }, + "argc": { + "type": "keyword", + "ignore_above": 1024 + }, + "audit_backlog_limit": { + "type": "keyword", + "ignore_above": 1024 + }, + "audit_backlog_wait_time": { + "type": "keyword", + "ignore_above": 1024 + }, + "audit_enabled": { + "type": "keyword", + "ignore_above": 1024 + }, + "audit_failure": { + "type": "keyword", + "ignore_above": 1024 + }, + "banners": { + "type": "keyword", + "ignore_above": 1024 + }, + "bool": { + "type": "keyword", + "ignore_above": 1024 + }, + "bus": { + "type": "keyword", + "ignore_above": 1024 + }, + "cap_fe": { + "type": "keyword", + "ignore_above": 1024 + }, + "cap_fi": { + "type": "keyword", + "ignore_above": 1024 + }, + "cap_fp": { + "type": "keyword", + "ignore_above": 1024 + }, + "cap_fver": { + "type": "keyword", + "ignore_above": 1024 + }, + "cap_pe": { + "type": "keyword", + "ignore_above": 1024 + }, + "cap_pi": { + "type": "keyword", + "ignore_above": 1024 + }, + "cap_pp": { + "type": "keyword", + "ignore_above": 1024 + }, + "capability": { + "type": "keyword", + "ignore_above": 1024 + }, + "cgroup": { + "type": "keyword", + "ignore_above": 1024 + }, + "changed": { + "type": "keyword", + "ignore_above": 1024 + }, + "cipher": { + "type": "keyword", + "ignore_above": 1024 + }, + "class": { + "type": "keyword", + "ignore_above": 1024 + }, + "cmd": { + "type": "keyword", + "ignore_above": 1024 + }, + "code": { + "type": "keyword", + "ignore_above": 1024 + }, + "compat": { + "type": "keyword", + "ignore_above": 1024 + }, + "daddr": { + "type": "keyword", + "ignore_above": 1024 + }, + "data": { + "type": "keyword", + "ignore_above": 1024 + }, + "default-context": { + "type": "keyword", + "ignore_above": 1024 + }, + "device": { + "type": "keyword", + "ignore_above": 1024 + }, + "dir": { + "type": "keyword", + "ignore_above": 1024 + }, + "direction": { + "type": "keyword", + "ignore_above": 1024 + }, + "dmac": { + "type": "keyword", + "ignore_above": 1024 + }, + "dport": { + "type": "keyword", + "ignore_above": 1024 + }, + "enforcing": { + "type": "keyword", + "ignore_above": 1024 + }, + "entries": { + "type": "keyword", + "ignore_above": 1024 + }, + "exit": { + "type": "keyword", + "ignore_above": 1024 + }, + "fam": { + "type": "keyword", + "ignore_above": 1024 + }, + "family": { + "type": "keyword", + "ignore_above": 1024 + }, + "fd": { + "type": "keyword", + "ignore_above": 1024 + }, + "fe": { + "type": "keyword", + "ignore_above": 1024 + }, + "feature": { + "type": "keyword", + "ignore_above": 1024 + }, + "fi": { + "type": "keyword", + "ignore_above": 1024 + }, + "file": { + "type": "keyword", + "ignore_above": 1024 + }, + "flags": { + "type": "keyword", + "ignore_above": 1024 + }, + "format": { + "type": "keyword", + "ignore_above": 1024 + }, + "fp": { + "type": "keyword", + "ignore_above": 1024 + }, + "fver": { + "type": "keyword", + "ignore_above": 1024 + }, + "grantors": { + "type": "keyword", + "ignore_above": 1024 + }, + "grp": { + "type": "keyword", + "ignore_above": 1024 + }, + "hook": { + "type": "keyword", + "ignore_above": 1024 + }, + "hostname": { + "type": "keyword", + "ignore_above": 1024 + }, + "icmp_type": { + "type": "keyword", + "ignore_above": 1024 + }, + "id": { + "type": "keyword", + "ignore_above": 1024 + }, + "igid": { + "type": "keyword", + "ignore_above": 1024 + }, + "img-ctx": { + "type": "keyword", + "ignore_above": 1024 + }, + "inif": { + "type": "keyword", + "ignore_above": 1024 + }, + "ino": { + "type": "keyword", + "ignore_above": 1024 + }, + "inode_gid": { + "type": "keyword", + "ignore_above": 1024 + }, + "inode_uid": { + "type": "keyword", + "ignore_above": 1024 + }, + "invalid_context": { + "type": "keyword", + "ignore_above": 1024 + }, + "ioctlcmd": { + "type": "keyword", + "ignore_above": 1024 + }, + "ip": { + "type": "keyword", + "ignore_above": 1024 + }, + "ipid": { + "type": "keyword", + "ignore_above": 1024 + }, + "ipx-net": { + "type": "keyword", + "ignore_above": 1024 + }, + "items": { + "type": "keyword", + "ignore_above": 1024 + }, + "iuid": { + "type": "keyword", + "ignore_above": 1024 + }, + "kernel": { + "type": "keyword", + "ignore_above": 1024 + }, + "kind": { + "type": "keyword", + "ignore_above": 1024 + }, + "ksize": { + "type": "keyword", + "ignore_above": 1024 + }, + "laddr": { + "type": "keyword", + "ignore_above": 1024 + }, + "len": { + "type": "keyword", + "ignore_above": 1024 + }, + "list": { + "type": "keyword", + "ignore_above": 1024 + }, + "lport": { + "type": "keyword", + "ignore_above": 1024 + }, + "mac": { + "type": "keyword", + "ignore_above": 1024 + }, + "macproto": { + "type": "keyword", + "ignore_above": 1024 + }, + "maj": { + "type": "keyword", + "ignore_above": 1024 + }, + "major": { + "type": "keyword", + "ignore_above": 1024 + }, + "minor": { + "type": "keyword", + "ignore_above": 1024 + }, + "model": { + "type": "keyword", + "ignore_above": 1024 + }, + "msg": { + "type": "keyword", + "ignore_above": 1024 + }, + "nargs": { + "type": "keyword", + "ignore_above": 1024 + }, + "net": { + "type": "keyword", + "ignore_above": 1024 + }, + "new": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-chardev": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-disk": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-enabled": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-fs": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-level": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-log_passwd": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-mem": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-net": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-range": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-rng": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-role": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-seuser": { + "type": "keyword", + "ignore_above": 1024 + }, + "new-vcpu": { + "type": "keyword", + "ignore_above": 1024 + }, + "new_gid": { + "type": "keyword", + "ignore_above": 1024 + }, + "new_lock": { + "type": "keyword", + "ignore_above": 1024 + }, + "new_pe": { + "type": "keyword", + "ignore_above": 1024 + }, + "new_pi": { + "type": "keyword", + "ignore_above": 1024 + }, + "new_pp": { + "type": "keyword", + "ignore_above": 1024 + }, + "nlnk-fam": { + "type": "keyword", + "ignore_above": 1024 + }, + "nlnk-grp": { + "type": "keyword", + "ignore_above": 1024 + }, + "nlnk-pid": { + "type": "keyword", + "ignore_above": 1024 + }, + "oauid": { + "type": "keyword", + "ignore_above": 1024 + }, + "obj": { + "type": "keyword", + "ignore_above": 1024 + }, + "obj_gid": { + "type": "keyword", + "ignore_above": 1024 + }, + "obj_uid": { + "type": "keyword", + "ignore_above": 1024 + }, + "ocomm": { + "type": "keyword", + "ignore_above": 1024 + }, + "oflag": { + "type": "keyword", + "ignore_above": 1024 + }, + "old": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-auid": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-chardev": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-disk": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-enabled": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-fs": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-level": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-log_passwd": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-mem": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-net": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-range": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-rng": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-role": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-ses": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-seuser": { + "type": "keyword", + "ignore_above": 1024 + }, + "old-vcpu": { + "type": "keyword", + "ignore_above": 1024 + }, + "old_enforcing": { + "type": "keyword", + "ignore_above": 1024 + }, + "old_lock": { + "type": "keyword", + "ignore_above": 1024 + }, + "old_pe": { + "type": "keyword", + "ignore_above": 1024 + }, + "old_pi": { + "type": "keyword", + "ignore_above": 1024 + }, + "old_pp": { + "type": "keyword", + "ignore_above": 1024 + }, + "old_prom": { + "type": "keyword", + "ignore_above": 1024 + }, + "old_val": { + "type": "keyword", + "ignore_above": 1024 + }, + "op": { + "type": "keyword", + "ignore_above": 1024 + }, + "opid": { + "type": "keyword", + "ignore_above": 1024 + }, + "oses": { + "type": "keyword", + "ignore_above": 1024 + }, + "outif": { + "type": "keyword", + "ignore_above": 1024 + }, + "parent": { + "type": "keyword", + "ignore_above": 1024 + }, + "per": { + "type": "keyword", + "ignore_above": 1024 + }, + "perm": { + "type": "keyword", + "ignore_above": 1024 + }, + "perm_mask": { + "type": "keyword", + "ignore_above": 1024 + }, + "permissive": { + "type": "keyword", + "ignore_above": 1024 + }, + "pfs": { + "type": "keyword", + "ignore_above": 1024 + }, + "printer": { + "type": "keyword", + "ignore_above": 1024 + }, + "prom": { + "type": "keyword", + "ignore_above": 1024 + }, + "proto": { + "type": "keyword", + "ignore_above": 1024 + }, + "qbytes": { + "type": "keyword", + "ignore_above": 1024 + }, + "range": { + "type": "keyword", + "ignore_above": 1024 + }, + "reason": { + "type": "keyword", + "ignore_above": 1024 + }, + "removed": { + "type": "keyword", + "ignore_above": 1024 + }, + "res": { + "type": "keyword", + "ignore_above": 1024 + }, + "resrc": { + "type": "keyword", + "ignore_above": 1024 + }, + "rport": { + "type": "keyword", + "ignore_above": 1024 + }, + "sauid": { + "type": "keyword", + "ignore_above": 1024 + }, + "scontext": { + "type": "keyword", + "ignore_above": 1024 + }, + "selected-context": { + "type": "keyword", + "ignore_above": 1024 + }, + "seperm": { + "type": "keyword", + "ignore_above": 1024 + }, + "seperms": { + "type": "keyword", + "ignore_above": 1024 + }, + "seqno": { + "type": "keyword", + "ignore_above": 1024 + }, + "seresult": { + "type": "keyword", + "ignore_above": 1024 + }, + "ses": { + "type": "keyword", + "ignore_above": 1024 + }, + "seuser": { + "type": "keyword", + "ignore_above": 1024 + }, + "sig": { + "type": "keyword", + "ignore_above": 1024 + }, + "sigev_signo": { + "type": "keyword", + "ignore_above": 1024 + }, + "smac": { + "type": "keyword", + "ignore_above": 1024 + }, + "socket": { + "properties": { + "addr": { + "type": "keyword", + "ignore_above": 1024 + }, + "family": { + "type": "keyword", + "ignore_above": 1024 + }, + "path": { + "type": "keyword", + "ignore_above": 1024 + }, + "port": { + "type": "keyword", + "ignore_above": 1024 + }, + "saddr": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "spid": { + "type": "keyword", + "ignore_above": 1024 + }, + "sport": { + "type": "keyword", + "ignore_above": 1024 + }, + "state": { + "type": "keyword", + "ignore_above": 1024 + }, + "subj": { + "type": "keyword", + "ignore_above": 1024 + }, + "success": { + "type": "keyword", + "ignore_above": 1024 + }, + "syscall": { + "type": "keyword", + "ignore_above": 1024 + }, + "table": { + "type": "keyword", + "ignore_above": 1024 + }, + "tclass": { + "type": "keyword", + "ignore_above": 1024 + }, + "tcontext": { + "type": "keyword", + "ignore_above": 1024 + }, + "terminal": { + "type": "keyword", + "ignore_above": 1024 + }, + "tty": { + "type": "keyword", + "ignore_above": 1024 + }, + "unit": { + "type": "keyword", + "ignore_above": 1024 + }, + "uri": { + "type": "keyword", + "ignore_above": 1024 + }, + "uuid": { + "type": "keyword", + "ignore_above": 1024 + }, + "val": { + "type": "keyword", + "ignore_above": 1024 + }, + "ver": { + "type": "keyword", + "ignore_above": 1024 + }, + "virt": { + "type": "keyword", + "ignore_above": 1024 + }, + "vm": { + "type": "keyword", + "ignore_above": 1024 + }, + "vm-ctx": { + "type": "keyword", + "ignore_above": 1024 + }, + "vm-pid": { + "type": "keyword", + "ignore_above": 1024 + }, + "watch": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "messages": { + "type": "text", + "norms": false + }, + "paths": { + "properties": { + "dev": { + "type": "keyword", + "ignore_above": 1024 + }, + "inode": { + "type": "keyword", + "ignore_above": 1024 + }, + "item": { + "type": "keyword", + "ignore_above": 1024 + }, + "mode": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "nametype": { + "type": "keyword", + "ignore_above": 1024 + }, + "obj_domain": { + "type": "keyword", + "ignore_above": 1024 + }, + "obj_level": { + "type": "keyword", + "ignore_above": 1024 + }, + "obj_role": { + "type": "keyword", + "ignore_above": 1024 + }, + "obj_user": { + "type": "keyword", + "ignore_above": 1024 + }, + "objtype": { + "type": "keyword", + "ignore_above": 1024 + }, + "ogid": { + "type": "keyword", + "ignore_above": 1024 + }, + "ouid": { + "type": "keyword", + "ignore_above": 1024 + }, + "rdev": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "result": { + "type": "keyword", + "ignore_above": 1024 + }, + "sequence": { + "type": "long" + }, + "session": { + "type": "keyword", + "ignore_above": 1024 + }, + "summary": { + "properties": { + "actor": { + "properties": { + "primary": { + "type": "keyword", + "ignore_above": 1024 + }, + "secondary": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "how": { + "type": "keyword", + "ignore_above": 1024 + }, + "object": { + "properties": { + "primary": { + "type": "keyword", + "ignore_above": 1024 + }, + "secondary": { + "type": "keyword", + "ignore_above": 1024 + }, + "type": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + }, + "warnings": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "beat": { + "properties": { + "hostname": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "timezone": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "destination": { + "properties": { + "hostname": { + "type": "keyword", + "ignore_above": 1024 + }, + "ip": { + "type": "ip" + }, + "path": { + "type": "keyword", + "ignore_above": 1024 + }, + "port": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "docker": { + "properties": { + "container": { + "properties": { + "id": { + "type": "keyword", + "ignore_above": 1024 + }, + "image": { + "type": "keyword", + "ignore_above": 1024 + }, + "labels": { + "type": "object" + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + }, + "error": { + "properties": { + "code": { + "type": "long" + }, + "message": { + "type": "text", + "norms": false + }, + "type": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "event": { + "properties": { + "action": { + "type": "keyword", + "ignore_above": 1024 + }, + "category": { + "type": "keyword", + "ignore_above": 1024 + }, + "module": { + "type": "keyword", + "ignore_above": 1024 + }, + "type": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "fields": { + "type": "object" + }, + "file": { + "properties": { + "ctime": { + "type": "date" + }, + "device": { + "type": "keyword", + "ignore_above": 1024 + }, + "gid": { + "type": "keyword", + "ignore_above": 1024 + }, + "group": { + "type": "keyword", + "ignore_above": 1024 + }, + "inode": { + "type": "keyword", + "ignore_above": 1024 + }, + "mode": { + "type": "keyword", + "ignore_above": 1024 + }, + "mtime": { + "type": "date" + }, + "origin": { + "type": "text", + "norms": false, + "fields": { + "raw": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "owner": { + "type": "keyword", + "ignore_above": 1024 + }, + "path": { + "type": "text", + "norms": false, + "fields": { + "raw": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "selinux": { + "properties": { + "domain": { + "type": "keyword", + "ignore_above": 1024 + }, + "level": { + "type": "keyword", + "ignore_above": 1024 + }, + "role": { + "type": "keyword", + "ignore_above": 1024 + }, + "user": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "setgid": { + "type": "boolean" + }, + "setuid": { + "type": "boolean" + }, + "size": { + "type": "long" + }, + "target_path": { + "type": "keyword", + "ignore_above": 1024 + }, + "type": { + "type": "keyword", + "ignore_above": 1024 + }, + "uid": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "geoip": { + "properties": { + "city_name": { + "type": "keyword", + "ignore_above": 1024 + }, + "continent_name": { + "type": "keyword", + "ignore_above": 1024 + }, + "country_iso_code": { + "type": "keyword", + "ignore_above": 1024 + }, + "location": { + "type": "geo_point" + }, + "region_name": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "hash": { + "properties": { + "blake2b_256": { + "type": "keyword", + "ignore_above": 1024 + }, + "blake2b_384": { + "type": "keyword", + "ignore_above": 1024 + }, + "blake2b_512": { + "type": "keyword", + "ignore_above": 1024 + }, + "md5": { + "type": "keyword", + "ignore_above": 1024 + }, + "sha1": { + "type": "keyword", + "ignore_above": 1024 + }, + "sha224": { + "type": "keyword", + "ignore_above": 1024 + }, + "sha256": { + "type": "keyword", + "ignore_above": 1024 + }, + "sha384": { + "type": "keyword", + "ignore_above": 1024 + }, + "sha3_224": { + "type": "keyword", + "ignore_above": 1024 + }, + "sha3_256": { + "type": "keyword", + "ignore_above": 1024 + }, + "sha3_384": { + "type": "keyword", + "ignore_above": 1024 + }, + "sha3_512": { + "type": "keyword", + "ignore_above": 1024 + }, + "sha512": { + "type": "keyword", + "ignore_above": 1024 + }, + "sha512_224": { + "type": "keyword", + "ignore_above": 1024 + }, + "sha512_256": { + "type": "keyword", + "ignore_above": 1024 + }, + "xxh64": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "host": { + "properties": { + "architecture": { + "type": "keyword", + "ignore_above": 1024 + }, + "id": { + "type": "keyword", + "ignore_above": 1024 + }, + "ip": { + "type": "ip" + }, + "mac": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "os": { + "properties": { + "family": { + "type": "keyword", + "ignore_above": 1024 + }, + "platform": { + "type": "keyword", + "ignore_above": 1024 + }, + "version": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + }, + "kubernetes": { + "properties": { + "annotations": { + "type": "object" + }, + "container": { + "properties": { + "image": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "labels": { + "type": "object" + }, + "namespace": { + "type": "keyword", + "ignore_above": 1024 + }, + "node": { + "properties": { + "name": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "pod": { + "properties": { + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "uid": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + }, + "meta": { + "properties": { + "cloud": { + "properties": { + "availability_zone": { + "type": "keyword", + "ignore_above": 1024 + }, + "instance_id": { + "type": "keyword", + "ignore_above": 1024 + }, + "instance_name": { + "type": "keyword", + "ignore_above": 1024 + }, + "machine_type": { + "type": "keyword", + "ignore_above": 1024 + }, + "project_id": { + "type": "keyword", + "ignore_above": 1024 + }, + "provider": { + "type": "keyword", + "ignore_above": 1024 + }, + "region": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + }, + "network": { + "properties": { + "direction": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "process": { + "properties": { + "args": { + "type": "keyword", + "ignore_above": 1024 + }, + "cwd": { + "type": "keyword", + "ignore_above": 1024 + }, + "exe": { + "type": "keyword", + "ignore_above": 1024 + }, + "name": { + "type": "keyword", + "ignore_above": 1024 + }, + "pid": { + "type": "keyword", + "ignore_above": 1024 + }, + "ppid": { + "type": "keyword", + "ignore_above": 1024 + }, + "title": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "source": { + "properties": { + "hostname": { + "type": "keyword", + "ignore_above": 1024 + }, + "ip": { + "type": "ip" + }, + "path": { + "type": "keyword", + "ignore_above": 1024 + }, + "port": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "tags": { + "type": "keyword", + "ignore_above": 1024 + }, + "user": { + "properties": { + "auid": { + "type": "keyword", + "ignore_above": 1024 + }, + "egid": { + "type": "keyword", + "ignore_above": 1024 + }, + "euid": { + "type": "keyword", + "ignore_above": 1024 + }, + "fsgid": { + "type": "keyword", + "ignore_above": 1024 + }, + "fsuid": { + "type": "keyword", + "ignore_above": 1024 + }, + "gid": { + "type": "keyword", + "ignore_above": 1024 + }, + "name_map": { + "properties": { + "auid": { + "type": "keyword", + "ignore_above": 1024 + }, + "egid": { + "type": "keyword", + "ignore_above": 1024 + }, + "euid": { + "type": "keyword", + "ignore_above": 1024 + }, + "fsgid": { + "type": "keyword", + "ignore_above": 1024 + }, + "fsuid": { + "type": "keyword", + "ignore_above": 1024 + }, + "gid": { + "type": "keyword", + "ignore_above": 1024 + }, + "sgid": { + "type": "keyword", + "ignore_above": 1024 + }, + "suid": { + "type": "keyword", + "ignore_above": 1024 + }, + "uid": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "selinux": { + "properties": { + "category": { + "type": "keyword", + "ignore_above": 1024 + }, + "domain": { + "type": "keyword", + "ignore_above": 1024 + }, + "level": { + "type": "keyword", + "ignore_above": 1024 + }, + "role": { + "type": "keyword", + "ignore_above": 1024 + }, + "user": { + "type": "keyword", + "ignore_above": 1024 + } + } + }, + "sgid": { + "type": "keyword", + "ignore_above": 1024 + }, + "suid": { + "type": "keyword", + "ignore_above": 1024 + }, + "uid": { + "type": "keyword", + "ignore_above": 1024 + } + } + } + } + }, + "aliases": {} + } +} \ No newline at end of file diff --git a/x-pack/test/functional/es_archives/filebeat/kpi_hosts/data.json b/x-pack/test/functional/es_archives/filebeat/kpi_hosts/data.json new file mode 100644 index 0000000000000..847158e901338 --- /dev/null +++ b/x-pack/test/functional/es_archives/filebeat/kpi_hosts/data.json @@ -0,0 +1,133 @@ +{ + "type": "doc", + "value": { + "id": "Lw4l02gBqd-n62Sw_lxm", + "index": "filebeat-7.0.0-iot-2019.06", + "source": { + "@timestamp": "2019-02-09T16:45:06.331Z", + "@version": "1", + "agent": { + "ephemeral_id": "97412477-f94f-4f25-a21f-4103798683db", + "hostname": "raspberrypi", + "id": "4d3ea604-27e5-4ec7-ab64-44f82285d776", + "type": "filebeat", + "version": "7.0.0" + }, + "destination": { + "domain": "s3-iad-2.cf.dash.row.aiv-cdn.net", + "ip": "10.100.7.196", + "port": 57854 + }, + "ecs": { + "version": "1.0.0-beta2" + }, + "event": { + "dataset": "suricata.eve", + "end": "2019-02-09T16:45:06.331Z", + "kind": "event", + "module": "suricata", + "type": "fileinfo" + }, + "file": { + "path": "/dm/2$XTMWANo0Q2RZKlH-95UoAahZrOg~/8cdf/ad98/e000/4b0d-8f72-8faf9aa1a35a/c3d5b471-4e36-45e0-8ca7-d789366f3b31_audio_13.mp4", + "size": 48277 + }, + "fileset": { + "name": "eve" + }, + "flow": { + "locality": "public" + }, + "host": { + "architecture": "armv7l", + "containerized": false, + "hostname": "raspberrypi", + "id": "b19a781f683541a7a25ee345133aa399", + "name": "raspberrypi", + "os": { + "codename": "stretch", + "family": "", + "kernel": "4.14.50-v7+", + "name": "Raspbian GNU/Linux", + "platform": "raspbian", + "version": "9 (stretch)" + } + }, + "http": { + "request": { + "method": "get" + }, + "response": { + "body": { + "bytes": 48277 + }, + "status_code": 206 + } + }, + "input": { + "type": "log" + }, + "labels": { + "pipeline": "filebeat-7.0.0-suricata-eve-pipeline" + }, + "log": { + "file": { + "path": "/var/log/suricata/eve.json" + }, + "offset": 1734115622 + }, + "network": { + "name": "iot", + "protocol": "http", + "transport": "tcp" + }, + "service": { + "type": "suricata" + }, + "source": { + "as": { + "num": 16509, + "org": "Amazon.com, Inc." + }, + "domain": "server-54-239-220-184.ewr50.r.cloudfront.net", + "geo": { + "city_name": "Seattle", + "continent_name": "North America", + "country_iso_code": "US", + "location": { + "lat": 47.6103, + "lon": -122.3341 + }, + "region_iso_code": "US-WA", + "region_name": "Washington" + }, + "ip": "54.239.220.184", + "port": 80 + }, + "suricata": { + "eve": { + "fileinfo": { + "state": "CLOSED", + "stored": false, + "tx_id": 102 + }, + "flow_id": 311011499414922, + "http": { + "http_content_type": "video/mp4", + "protocol": "HTTP/1.1" + }, + "in_iface": "eth0" + } + }, + "tags": [ + "suricata" + ], + "url": { + "domain": "s3-iad-2.cf.dash.row.aiv-cdn.net", + "original": "/dm/2$XTMWANo0Q2RZKlH-95UoAahZrOg~/8cdf/ad98/e000/4b0d-8f72-8faf9aa1a35a/c3d5b471-4e36-45e0-8ca7-d789366f3b31_audio_13.mp4", + "path": "/dm/2$XTMWANo0Q2RZKlH-95UoAahZrOg~/8cdf/ad98/e000/4b0d-8f72-8faf9aa1a35a/c3d5b471-4e36-45e0-8ca7-d789366f3b31_audio_13.mp4" + } + }, + "type": "_doc" + } +} diff --git a/x-pack/test/functional/es_archives/filebeat/kpi_hosts/mappings.json b/x-pack/test/functional/es_archives/filebeat/kpi_hosts/mappings.json new file mode 100644 index 0000000000000..1059fa49582f8 --- /dev/null +++ b/x-pack/test/functional/es_archives/filebeat/kpi_hosts/mappings.json @@ -0,0 +1,5940 @@ +{ + "type": "index", + "value": { + "aliases": { + }, + "index": "filebeat-7.0.0-iot-2019.06", + "mappings": { + "_meta": { + "beat": "filebeat", + "version": "7.0.0" + }, + "date_detection": false, + "dynamic_templates": [ + { + "container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "container.labels.*" + } + }, + { + "fields": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "fields.*" + } + }, + { + "docker.container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "docker.container.labels.*" + } + }, + { + "kibana.log.meta": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "kibana.log.meta.*" + } + }, + { + "strings_as_keyword": { + "mapping": { + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ], + "properties": { + "@timestamp": { + "type": "date" + }, + "@version": { + "ignore_above": 1024, + "type": "keyword" + }, + "agent": { + "properties": { + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "apache": { + "properties": { + "access": { + "properties": { + "ssl": { + "properties": { + "cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "error": { + "properties": { + "module": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "apache2": { + "properties": { + "access": { + "properties": { + "geoip": { + "type": "object" + }, + "user_agent": { + "type": "object" + } + } + }, + "error": { + "type": "object" + } + } + }, + "auditd": { + "properties": { + "log": { + "properties": { + "a0": { + "ignore_above": 1024, + "type": "keyword" + }, + "addr": { + "type": "ip" + }, + "geoip": { + "type": "object" + }, + "item": { + "ignore_above": 1024, + "type": "keyword" + }, + "items": { + "ignore_above": 1024, + "type": "keyword" + }, + "laddr": { + "type": "ip" + }, + "lport": { + "type": "long" + }, + "new_auid": { + "ignore_above": 1024, + "type": "keyword" + }, + "new_ses": { + "ignore_above": 1024, + "type": "keyword" + }, + "old_auid": { + "ignore_above": 1024, + "type": "keyword" + }, + "old_ses": { + "ignore_above": 1024, + "type": "keyword" + }, + "rport": { + "type": "long" + }, + "sequence": { + "type": "long" + }, + "tty": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "certificate": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "cisco": { + "properties": { + "access_list": { + "ignore_above": 1024, + "type": "keyword" + }, + "log": { + "properties": { + "facility": { + "ignore_above": 1024, + "type": "keyword" + }, + "severity": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "client": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + } + } + }, + "cloud": { + "properties": { + "account": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "availability_zone": { + "ignore_above": 1024, + "type": "keyword" + }, + "instance": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "machine": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "project": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "region": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "container": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "tag": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "runtime": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "destination": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "num": { + "type": "long" + }, + "org": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "domain_top1m_rank": { + "type": "long" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + } + } + }, + "docker": { + "properties": { + "container": { + "properties": { + "labels": { + "type": "object" + } + } + } + } + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "elasticsearch": { + "properties": { + "audit": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "indices": { + "ignore_above": 1024, + "type": "keyword" + }, + "layer": { + "ignore_above": 1024, + "type": "keyword" + }, + "origin": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "realm": { + "ignore_above": 1024, + "type": "keyword" + }, + "request": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "url": { + "properties": { + "params": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "properties": { + "realm": { + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "cluster": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "uuid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "component": { + "ignore_above": 1024, + "type": "keyword" + }, + "deprecation": { + "type": "object" + }, + "gc": { + "properties": { + "heap": { + "properties": { + "size_kb": { + "type": "long" + }, + "used_kb": { + "type": "long" + } + } + }, + "jvm_runtime_sec": { + "type": "float" + }, + "old_gen": { + "properties": { + "size_kb": { + "type": "long" + }, + "used_kb": { + "type": "long" + } + } + }, + "phase": { + "properties": { + "class_unload_time_sec": { + "type": "float" + }, + "cpu_time": { + "properties": { + "real_sec": { + "type": "float" + }, + "sys_sec": { + "type": "float" + }, + "user_sec": { + "type": "float" + } + } + }, + "duration_sec": { + "type": "float" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "parallel_rescan_time_sec": { + "type": "float" + }, + "scrub_string_table_time_sec": { + "type": "float" + }, + "scrub_symbol_table_time_sec": { + "type": "float" + }, + "weak_refs_processing_time_sec": { + "type": "float" + } + } + }, + "stopping_threads_time_sec": { + "type": "float" + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "threads_total_stop_time_sec": { + "type": "float" + }, + "young_gen": { + "properties": { + "size_kb": { + "type": "long" + }, + "used_kb": { + "type": "long" + } + } + } + } + }, + "index": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "node": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "gc": { + "properties": { + "collection_duration": { + "properties": { + "ms": { + "type": "float" + } + } + }, + "observation_duration": { + "properties": { + "ms": { + "type": "float" + } + } + }, + "overhead_seq": { + "type": "long" + }, + "young": { + "properties": { + "one": { + "type": "long" + }, + "two": { + "type": "long" + } + } + } + } + }, + "stacktrace": { + "ignore_above": 1024, + "index": false, + "type": "keyword" + } + } + }, + "shard": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "slowlog": { + "properties": { + "extra_source": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "logger": { + "ignore_above": 1024, + "type": "keyword" + }, + "routing": { + "ignore_above": 1024, + "type": "keyword" + }, + "search_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "source_query": { + "ignore_above": 1024, + "type": "keyword" + }, + "stats": { + "ignore_above": 1024, + "type": "keyword" + }, + "took": { + "ignore_above": 1024, + "type": "keyword" + }, + "total_hits": { + "ignore_above": 1024, + "type": "keyword" + }, + "total_shards": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "types": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "error": { + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "norms": false, + "type": "text" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "fields": { + "type": "object" + }, + "file": { + "properties": { + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "target_path": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "fileset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "flow": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "haproxy": { + "properties": { + "backend_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "backend_queue": { + "type": "long" + }, + "bind_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes_read": { + "type": "long" + }, + "client": { + "type": "object" + }, + "connection_wait_time_ms": { + "type": "long" + }, + "connections": { + "properties": { + "active": { + "type": "long" + }, + "backend": { + "type": "long" + }, + "frontend": { + "type": "long" + }, + "retries": { + "type": "long" + }, + "server": { + "type": "long" + } + } + }, + "destination": { + "type": "object" + }, + "error_message": { + "norms": false, + "type": "text" + }, + "frontend_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "geoip": { + "type": "object" + }, + "http": { + "properties": { + "request": { + "properties": { + "captured_cookie": { + "ignore_above": 1024, + "type": "keyword" + }, + "captured_headers": { + "ignore_above": 1024, + "type": "keyword" + }, + "raw_request_line": { + "ignore_above": 1024, + "type": "keyword" + }, + "time_wait_ms": { + "type": "long" + }, + "time_wait_without_data_ms": { + "type": "long" + } + } + }, + "response": { + "properties": { + "captured_cookie": { + "ignore_above": 1024, + "type": "keyword" + }, + "captured_headers": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "server_queue": { + "type": "long" + }, + "source": { + "ignore_above": 1024, + "type": "keyword" + }, + "tcp": { + "properties": { + "connection_waiting_time_ms": { + "type": "long" + } + } + }, + "termination_state": { + "ignore_above": 1024, + "type": "keyword" + }, + "time_backend_connect": { + "type": "long" + }, + "time_queue": { + "type": "long" + }, + "total_waiting_time_ms": { + "type": "long" + } + } + }, + "hash": { + "properties": { + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "host": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "containerized": { + "type": "boolean" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "codename": { + "ignore_above": 1024, + "type": "keyword" + }, + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "http": { + "properties": { + "request": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "status_code": { + "type": "long" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "icinga": { + "properties": { + "debug": { + "properties": { + "facility": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "main": { + "properties": { + "facility": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "startup": { + "properties": { + "facility": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "icmp": { + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "iis": { + "properties": { + "access": { + "properties": { + "cookie": { + "ignore_above": 1024, + "type": "keyword" + }, + "geoip": { + "type": "object" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "site_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "sub_status": { + "type": "long" + }, + "user_agent": { + "type": "object" + }, + "win32_status": { + "type": "long" + } + } + }, + "error": { + "properties": { + "geoip": { + "type": "object" + }, + "queue_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason_phrase": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "input": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "iptables": { + "properties": { + "ether_type": { + "type": "long" + }, + "flow_label": { + "type": "long" + }, + "fragment_flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment_offset": { + "type": "long" + }, + "icmp": { + "properties": { + "code": { + "type": "long" + }, + "id": { + "type": "long" + }, + "parameter": { + "type": "long" + }, + "redirect": { + "type": "ip" + }, + "seq": { + "type": "long" + }, + "type": { + "type": "long" + } + } + }, + "id": { + "type": "long" + }, + "incomplete_bytes": { + "type": "long" + }, + "input_device": { + "ignore_above": 1024, + "type": "keyword" + }, + "length": { + "type": "long" + }, + "output_device": { + "ignore_above": 1024, + "type": "keyword" + }, + "precedence_bits": { + "type": "short" + }, + "tcp": { + "properties": { + "ack": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "reserved_bits": { + "type": "short" + }, + "seq": { + "type": "long" + }, + "window": { + "type": "long" + } + } + }, + "tos": { + "type": "long" + }, + "ttl": { + "type": "long" + }, + "ubiquiti": { + "properties": { + "input_zone": { + "ignore_above": 1024, + "type": "keyword" + }, + "output_zone": { + "ignore_above": 1024, + "type": "keyword" + }, + "rule_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "rule_set": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "udp": { + "properties": { + "length": { + "type": "long" + } + } + } + } + }, + "kafka": { + "properties": { + "log": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "component": { + "ignore_above": 1024, + "type": "keyword" + }, + "trace": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "norms": false, + "type": "text" + } + } + } + } + } + } + }, + "kibana": { + "properties": { + "log": { + "properties": { + "meta": { + "type": "object" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "kubernetes": { + "properties": { + "annotations": { + "type": "object" + }, + "container": { + "properties": { + "image": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pod": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "labels": { + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "pipeline": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "log": { + "properties": { + "file": { + "properties": { + "path": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "offset": { + "type": "long" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "source": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "logstash": { + "properties": { + "log": { + "properties": { + "log_event": { + "type": "object" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "thread": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "slowlog": { + "properties": { + "event": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "plugin_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "plugin_params": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "plugin_params_object": { + "type": "object" + }, + "plugin_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "thread": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "took_in_millis": { + "type": "long" + } + } + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "mongodb": { + "properties": { + "log": { + "properties": { + "component": { + "ignore_above": 1024, + "type": "keyword" + }, + "context": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "mysql": { + "properties": { + "error": { + "type": "object" + }, + "slowlog": { + "properties": { + "bytes_sent": { + "type": "long" + }, + "current_user": { + "ignore_above": 1024, + "type": "keyword" + }, + "filesort": { + "type": "boolean" + }, + "filesort_on_disk": { + "type": "boolean" + }, + "full_join": { + "type": "boolean" + }, + "full_scan": { + "type": "boolean" + }, + "innodb": { + "properties": { + "io_r_bytes": { + "type": "long" + }, + "io_r_ops": { + "type": "long" + }, + "io_r_wait": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "pages_distinct": { + "type": "long" + }, + "queue_wait": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "rec_lock_wait": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "trx_id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "killed": { + "ignore_above": 1024, + "type": "keyword" + }, + "last_errno": { + "ignore_above": 1024, + "type": "keyword" + }, + "lock_time": { + "properties": { + "sec": { + "type": "float" + } + } + }, + "log_slow_rate_limit": { + "ignore_above": 1024, + "type": "keyword" + }, + "log_slow_rate_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "merge_passes": { + "type": "long" + }, + "priority_queue": { + "type": "boolean" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "query_cache_hit": { + "type": "boolean" + }, + "rows_affected": { + "type": "long" + }, + "rows_examined": { + "type": "long" + }, + "rows_sent": { + "type": "long" + }, + "schema": { + "ignore_above": 1024, + "type": "keyword" + }, + "tmp_disk_tables": { + "type": "long" + }, + "tmp_table": { + "type": "boolean" + }, + "tmp_table_on_disk": { + "type": "boolean" + }, + "tmp_table_sizes": { + "type": "long" + }, + "tmp_tables": { + "type": "long" + } + } + }, + "thread_id": { + "type": "long" + } + } + }, + "netflow": { + "properties": { + "absolute_error": { + "type": "double" + }, + "address_pool_high_threshold": { + "type": "long" + }, + "address_pool_low_threshold": { + "type": "long" + }, + "address_port_mapping_high_threshold": { + "type": "long" + }, + "address_port_mapping_low_threshold": { + "type": "long" + }, + "address_port_mapping_per_user_high_threshold": { + "type": "long" + }, + "anonymization_flags": { + "type": "long" + }, + "anonymization_technique": { + "type": "long" + }, + "application_category_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "application_description": { + "ignore_above": 1024, + "type": "keyword" + }, + "application_group_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "application_id": { + "type": "short" + }, + "application_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "application_sub_category_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "bgp_destination_as_number": { + "type": "long" + }, + "bgp_next_adjacent_as_number": { + "type": "long" + }, + "bgp_next_hop_ipv4_address": { + "type": "ip" + }, + "bgp_next_hop_ipv6_address": { + "type": "ip" + }, + "bgp_prev_adjacent_as_number": { + "type": "long" + }, + "bgp_source_as_number": { + "type": "long" + }, + "bgp_validity_state": { + "type": "short" + }, + "biflow_direction": { + "type": "short" + }, + "class_id": { + "type": "short" + }, + "class_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "classification_engine_id": { + "type": "short" + }, + "collection_time_milliseconds": { + "type": "date" + }, + "collector_certificate": { + "type": "short" + }, + "collector_ipv4_address": { + "type": "ip" + }, + "collector_ipv6_address": { + "type": "ip" + }, + "collector_transport_port": { + "type": "long" + }, + "common_properties_id": { + "type": "long" + }, + "confidence_level": { + "type": "double" + }, + "connection_sum_duration_seconds": { + "type": "long" + }, + "connection_transaction_id": { + "type": "long" + }, + "data_link_frame_section": { + "type": "short" + }, + "data_link_frame_size": { + "type": "long" + }, + "data_link_frame_type": { + "type": "long" + }, + "data_records_reliability": { + "type": "boolean" + }, + "delta_flow_count": { + "type": "long" + }, + "destination_ipv4_address": { + "type": "ip" + }, + "destination_ipv4_prefix": { + "type": "ip" + }, + "destination_ipv4_prefix_length": { + "type": "short" + }, + "destination_ipv6_address": { + "type": "ip" + }, + "destination_ipv6_prefix": { + "type": "ip" + }, + "destination_ipv6_prefix_length": { + "type": "short" + }, + "destination_mac_address": { + "ignore_above": 1024, + "type": "keyword" + }, + "destination_transport_port": { + "type": "long" + }, + "digest_hash_value": { + "type": "long" + }, + "distinct_count_of_destinatio_nipa_ddress": { + "type": "long" + }, + "distinct_count_of_destination_ipv4_address": { + "type": "long" + }, + "distinct_count_of_destination_ipv6_address": { + "type": "long" + }, + "distinct_count_of_sourc_eipa_ddress": { + "type": "long" + }, + "distinct_count_of_source_ipv4_address": { + "type": "long" + }, + "distinct_count_of_source_ipv6_address": { + "type": "long" + }, + "dot1q_customer_dei": { + "type": "boolean" + }, + "dot1q_customer_destination_mac_address": { + "ignore_above": 1024, + "type": "keyword" + }, + "dot1q_customer_priority": { + "type": "short" + }, + "dot1q_customer_source_mac_address": { + "ignore_above": 1024, + "type": "keyword" + }, + "dot1q_customer_vlan_id": { + "type": "long" + }, + "dot1q_dei": { + "type": "boolean" + }, + "dot1q_priority": { + "type": "short" + }, + "dot1q_service_instance_id": { + "type": "long" + }, + "dot1q_service_instance_priority": { + "type": "short" + }, + "dot1q_service_instance_tag": { + "type": "short" + }, + "dot1q_vlan_id": { + "type": "long" + }, + "dropped_layer2_octet_delta_count": { + "type": "long" + }, + "dropped_layer2_octet_total_count": { + "type": "long" + }, + "dropped_octet_delta_count": { + "type": "long" + }, + "dropped_octet_total_count": { + "type": "long" + }, + "dropped_packet_delta_count": { + "type": "long" + }, + "dropped_packet_total_count": { + "type": "long" + }, + "dst_traffic_index": { + "type": "long" + }, + "egress_broadcast_packet_total_count": { + "type": "long" + }, + "egress_interface": { + "type": "long" + }, + "egress_interface_type": { + "type": "long" + }, + "egress_physical_interface": { + "type": "long" + }, + "egress_unicast_packet_total_count": { + "type": "long" + }, + "egress_vrfid": { + "type": "long" + }, + "encrypted_technology": { + "ignore_above": 1024, + "type": "keyword" + }, + "engine_id": { + "type": "short" + }, + "engine_type": { + "type": "short" + }, + "ethernet_header_length": { + "type": "short" + }, + "ethernet_payload_length": { + "type": "long" + }, + "ethernet_total_length": { + "type": "long" + }, + "ethernet_type": { + "type": "long" + }, + "export_interface": { + "type": "long" + }, + "export_protocol_version": { + "type": "short" + }, + "export_sctp_stream_id": { + "type": "long" + }, + "export_transport_protocol": { + "type": "short" + }, + "exported_flow_record_total_count": { + "type": "long" + }, + "exported_message_total_count": { + "type": "long" + }, + "exported_octet_total_count": { + "type": "long" + }, + "exporter": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "source_id": { + "type": "long" + }, + "timestamp": { + "type": "date" + }, + "uptime_millis": { + "type": "long" + }, + "version": { + "type": "long" + } + } + }, + "exporter_certificate": { + "type": "short" + }, + "exporter_ipv4_address": { + "type": "ip" + }, + "exporter_ipv6_address": { + "type": "ip" + }, + "exporter_transport_port": { + "type": "long" + }, + "exporting_process_id": { + "type": "long" + }, + "external_address_realm": { + "type": "short" + }, + "firewall_event": { + "type": "short" + }, + "flags_and_sampler_id": { + "type": "long" + }, + "flow_active_timeout": { + "type": "long" + }, + "flow_direction": { + "type": "short" + }, + "flow_duration_microseconds": { + "type": "long" + }, + "flow_duration_milliseconds": { + "type": "long" + }, + "flow_end_delta_microseconds": { + "type": "long" + }, + "flow_end_microseconds": { + "type": "date" + }, + "flow_end_milliseconds": { + "type": "date" + }, + "flow_end_nanoseconds": { + "type": "date" + }, + "flow_end_reason": { + "type": "short" + }, + "flow_end_seconds": { + "type": "date" + }, + "flow_end_sys_up_time": { + "type": "long" + }, + "flow_id": { + "type": "long" + }, + "flow_idle_timeout": { + "type": "long" + }, + "flow_key_indicator": { + "type": "long" + }, + "flow_label_ipv6": { + "type": "long" + }, + "flow_sampling_time_interval": { + "type": "long" + }, + "flow_sampling_time_spacing": { + "type": "long" + }, + "flow_selected_flow_delta_count": { + "type": "long" + }, + "flow_selected_octet_delta_count": { + "type": "long" + }, + "flow_selected_packet_delta_count": { + "type": "long" + }, + "flow_selector_algorithm": { + "type": "long" + }, + "flow_start_delta_microseconds": { + "type": "long" + }, + "flow_start_microseconds": { + "type": "date" + }, + "flow_start_milliseconds": { + "type": "date" + }, + "flow_start_nanoseconds": { + "type": "date" + }, + "flow_start_seconds": { + "type": "date" + }, + "flow_start_sys_up_time": { + "type": "long" + }, + "forwarding_status": { + "type": "short" + }, + "fragment_flags": { + "type": "short" + }, + "fragment_identification": { + "type": "long" + }, + "fragment_offset": { + "type": "long" + }, + "global_address_mapping_high_threshold": { + "type": "long" + }, + "gre_key": { + "type": "long" + }, + "hash_digest_output": { + "type": "boolean" + }, + "hash_flow_domain": { + "type": "long" + }, + "hash_initialiser_value": { + "type": "long" + }, + "hash_ipp_ayload_offset": { + "type": "long" + }, + "hash_ipp_ayload_size": { + "type": "long" + }, + "hash_output_range_max": { + "type": "long" + }, + "hash_output_range_min": { + "type": "long" + }, + "hash_selected_range_max": { + "type": "long" + }, + "hash_selected_range_min": { + "type": "long" + }, + "http_content_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "http_message_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "http_reason_phrase": { + "ignore_above": 1024, + "type": "keyword" + }, + "http_request_host": { + "ignore_above": 1024, + "type": "keyword" + }, + "http_request_method": { + "ignore_above": 1024, + "type": "keyword" + }, + "http_request_target": { + "ignore_above": 1024, + "type": "keyword" + }, + "http_status_code": { + "type": "long" + }, + "http_user_agent": { + "ignore_above": 1024, + "type": "keyword" + }, + "icmp_code_ipv4": { + "type": "short" + }, + "icmp_code_ipv6": { + "type": "short" + }, + "icmp_type_code_ipv4": { + "type": "long" + }, + "icmp_type_code_ipv6": { + "type": "long" + }, + "icmp_type_ipv4": { + "type": "short" + }, + "icmp_type_ipv6": { + "type": "short" + }, + "igmp_type": { + "type": "short" + }, + "ignored_data_record_total_count": { + "type": "long" + }, + "ignored_layer2_frame_total_count": { + "type": "long" + }, + "ignored_layer2_octet_total_count": { + "type": "long" + }, + "ignored_octet_total_count": { + "type": "long" + }, + "ignored_packet_total_count": { + "type": "long" + }, + "information_element_data_type": { + "type": "short" + }, + "information_element_description": { + "ignore_above": 1024, + "type": "keyword" + }, + "information_element_id": { + "type": "long" + }, + "information_element_index": { + "type": "long" + }, + "information_element_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "information_element_range_begin": { + "type": "long" + }, + "information_element_range_end": { + "type": "long" + }, + "information_element_semantics": { + "type": "short" + }, + "information_element_units": { + "type": "long" + }, + "ingress_broadcast_packet_total_count": { + "type": "long" + }, + "ingress_interface": { + "type": "long" + }, + "ingress_interface_type": { + "type": "long" + }, + "ingress_multicast_packet_total_count": { + "type": "long" + }, + "ingress_physical_interface": { + "type": "long" + }, + "ingress_unicast_packet_total_count": { + "type": "long" + }, + "ingress_vrfid": { + "type": "long" + }, + "initiator_octets": { + "type": "long" + }, + "initiator_packets": { + "type": "long" + }, + "interface_description": { + "ignore_above": 1024, + "type": "keyword" + }, + "interface_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "intermediate_process_id": { + "type": "long" + }, + "internal_address_realm": { + "type": "short" + }, + "ip_class_of_service": { + "type": "short" + }, + "ip_diff_serv_code_point": { + "type": "short" + }, + "ip_header_length": { + "type": "short" + }, + "ip_header_packet_section": { + "type": "short" + }, + "ip_next_hop_ipv4_address": { + "type": "ip" + }, + "ip_next_hop_ipv6_address": { + "type": "ip" + }, + "ip_payload_length": { + "type": "long" + }, + "ip_payload_packet_section": { + "type": "short" + }, + "ip_precedence": { + "type": "short" + }, + "ip_sec_spi": { + "type": "long" + }, + "ip_total_length": { + "type": "long" + }, + "ip_ttl": { + "type": "short" + }, + "ip_version": { + "type": "short" + }, + "ipv4_ihl": { + "type": "short" + }, + "ipv4_options": { + "type": "long" + }, + "ipv4_router_sc": { + "type": "ip" + }, + "ipv6_extension_headers": { + "type": "long" + }, + "is_multicast": { + "type": "short" + }, + "layer2_frame_delta_count": { + "type": "long" + }, + "layer2_frame_total_count": { + "type": "long" + }, + "layer2_octet_delta_count": { + "type": "long" + }, + "layer2_octet_delta_sum_of_squares": { + "type": "long" + }, + "layer2_octet_total_count": { + "type": "long" + }, + "layer2_octet_total_sum_of_squares": { + "type": "long" + }, + "layer2_segment_id": { + "type": "long" + }, + "layer2packet_section_data": { + "type": "short" + }, + "layer2packet_section_offset": { + "type": "long" + }, + "layer2packet_section_size": { + "type": "long" + }, + "line_card_id": { + "type": "long" + }, + "lower_cli_imit": { + "type": "double" + }, + "max_bieb_ntries": { + "type": "long" + }, + "max_entries_per_user": { + "type": "long" + }, + "max_export_seconds": { + "type": "date" + }, + "max_flow_end_microseconds": { + "type": "date" + }, + "max_flow_end_milliseconds": { + "type": "date" + }, + "max_flow_end_nanoseconds": { + "type": "date" + }, + "max_flow_end_seconds": { + "type": "date" + }, + "max_fragments_pending_reassembly": { + "type": "long" + }, + "max_session_entries": { + "type": "long" + }, + "max_subscribers": { + "type": "long" + }, + "maximum_ip_total_length": { + "type": "long" + }, + "maximum_layer2_total_length": { + "type": "long" + }, + "maximum_ttl": { + "type": "short" + }, + "message_md5_checksum": { + "type": "short" + }, + "message_scope": { + "type": "short" + }, + "metering_process_id": { + "type": "long" + }, + "metro_evc_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "metro_evc_type": { + "type": "short" + }, + "mib_capture_time_semantics": { + "type": "short" + }, + "mib_context_engine_id": { + "type": "short" + }, + "mib_context_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "mib_index_indicator": { + "type": "long" + }, + "mib_module_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "mib_object_description": { + "ignore_above": 1024, + "type": "keyword" + }, + "mib_object_identifier": { + "type": "short" + }, + "mib_object_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "mib_object_syntax": { + "ignore_above": 1024, + "type": "keyword" + }, + "mib_object_value_bits": { + "type": "short" + }, + "mib_object_value_counter": { + "type": "long" + }, + "mib_object_value_gauge": { + "type": "long" + }, + "mib_object_value_integer": { + "type": "long" + }, + "mib_object_value_octet_string": { + "type": "short" + }, + "mib_object_value_oid": { + "type": "short" + }, + "mib_object_value_time_ticks": { + "type": "long" + }, + "mib_object_value_unsigned": { + "type": "long" + }, + "mib_object_valuei_pa_ddress": { + "type": "ip" + }, + "mib_sub_identifier": { + "type": "long" + }, + "min_export_seconds": { + "type": "date" + }, + "min_flow_start_microseconds": { + "type": "date" + }, + "min_flow_start_milliseconds": { + "type": "date" + }, + "min_flow_start_nanoseconds": { + "type": "date" + }, + "min_flow_start_seconds": { + "type": "date" + }, + "minimum_ip_total_length": { + "type": "long" + }, + "minimum_layer2_total_length": { + "type": "long" + }, + "minimum_ttl": { + "type": "short" + }, + "mobile_imsi": { + "ignore_above": 1024, + "type": "keyword" + }, + "mobile_msisdn": { + "ignore_above": 1024, + "type": "keyword" + }, + "monitoring_interval_end_milli_seconds": { + "type": "date" + }, + "monitoring_interval_start_milli_seconds": { + "type": "date" + }, + "mpls_label_stack_depth": { + "type": "long" + }, + "mpls_label_stack_length": { + "type": "long" + }, + "mpls_label_stack_section": { + "type": "short" + }, + "mpls_label_stack_section10": { + "type": "short" + }, + "mpls_label_stack_section2": { + "type": "short" + }, + "mpls_label_stack_section3": { + "type": "short" + }, + "mpls_label_stack_section4": { + "type": "short" + }, + "mpls_label_stack_section5": { + "type": "short" + }, + "mpls_label_stack_section6": { + "type": "short" + }, + "mpls_label_stack_section7": { + "type": "short" + }, + "mpls_label_stack_section8": { + "type": "short" + }, + "mpls_label_stack_section9": { + "type": "short" + }, + "mpls_payload_length": { + "type": "long" + }, + "mpls_payload_packet_section": { + "type": "short" + }, + "mpls_top_label_exp": { + "type": "short" + }, + "mpls_top_label_ipv4_address": { + "type": "ip" + }, + "mpls_top_label_ipv6_address": { + "type": "ip" + }, + "mpls_top_label_prefix_length": { + "type": "short" + }, + "mpls_top_label_stack_section": { + "type": "short" + }, + "mpls_top_label_ttl": { + "type": "short" + }, + "mpls_top_label_type": { + "type": "short" + }, + "mpls_vpn_route_distinguisher": { + "type": "short" + }, + "multicast_replication_factor": { + "type": "long" + }, + "nat_event": { + "type": "short" + }, + "nat_instance_id": { + "type": "long" + }, + "nat_originating_address_realm": { + "type": "short" + }, + "nat_pool_id": { + "type": "long" + }, + "nat_pool_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat_quota_exceeded_event": { + "type": "long" + }, + "nat_threshold_event": { + "type": "long" + }, + "nat_type": { + "type": "short" + }, + "new_connection_delta_count": { + "type": "long" + }, + "next_header_ipv6": { + "type": "short" + }, + "not_sent_flow_total_count": { + "type": "long" + }, + "not_sent_layer2_octet_total_count": { + "type": "long" + }, + "not_sent_octet_total_count": { + "type": "long" + }, + "not_sent_packet_total_count": { + "type": "long" + }, + "observation_domain_id": { + "type": "long" + }, + "observation_domain_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "observation_point_id": { + "type": "long" + }, + "observation_point_type": { + "type": "short" + }, + "observation_time_microseconds": { + "type": "date" + }, + "observation_time_milliseconds": { + "type": "date" + }, + "observation_time_nanoseconds": { + "type": "date" + }, + "observation_time_seconds": { + "type": "date" + }, + "observed_flow_total_count": { + "type": "long" + }, + "octet_delta_count": { + "type": "long" + }, + "octet_delta_sum_of_squares": { + "type": "long" + }, + "octet_total_count": { + "type": "long" + }, + "octet_total_sum_of_squares": { + "type": "long" + }, + "opaque_octets": { + "type": "short" + }, + "original_exporter_ipv4_address": { + "type": "ip" + }, + "original_exporter_ipv6_address": { + "type": "ip" + }, + "original_flows_completed": { + "type": "long" + }, + "original_flows_initiated": { + "type": "long" + }, + "original_flows_present": { + "type": "long" + }, + "original_observation_domain_id": { + "type": "long" + }, + "p2p_technology": { + "ignore_above": 1024, + "type": "keyword" + }, + "packet_delta_count": { + "type": "long" + }, + "packet_total_count": { + "type": "long" + }, + "padding_octets": { + "type": "short" + }, + "payload_length_ipv6": { + "type": "long" + }, + "port_id": { + "type": "long" + }, + "port_range_end": { + "type": "long" + }, + "port_range_num_ports": { + "type": "long" + }, + "port_range_start": { + "type": "long" + }, + "port_range_step_size": { + "type": "long" + }, + "post_destination_mac_address": { + "ignore_above": 1024, + "type": "keyword" + }, + "post_dot1q_customer_vlan_id": { + "type": "long" + }, + "post_dot1q_vlan_id": { + "type": "long" + }, + "post_ip_class_of_service": { + "type": "short" + }, + "post_ip_diff_serv_code_point": { + "type": "short" + }, + "post_ip_precedence": { + "type": "short" + }, + "post_layer2_octet_delta_count": { + "type": "long" + }, + "post_layer2_octet_total_count": { + "type": "long" + }, + "post_mcast_layer2_octet_delta_count": { + "type": "long" + }, + "post_mcast_layer2_octet_total_count": { + "type": "long" + }, + "post_mcast_octet_delta_count": { + "type": "long" + }, + "post_mcast_octet_total_count": { + "type": "long" + }, + "post_mcast_packet_delta_count": { + "type": "long" + }, + "post_mcast_packet_total_count": { + "type": "long" + }, + "post_mpls_top_label_exp": { + "type": "short" + }, + "post_nadt_estination_ipv4_address": { + "type": "ip" + }, + "post_nadt_estination_ipv6_address": { + "type": "ip" + }, + "post_napdt_estination_transport_port": { + "type": "long" + }, + "post_napst_ource_transport_port": { + "type": "long" + }, + "post_nast_ource_ipv4_address": { + "type": "ip" + }, + "post_nast_ource_ipv6_address": { + "type": "ip" + }, + "post_octet_delta_count": { + "type": "long" + }, + "post_octet_total_count": { + "type": "long" + }, + "post_packet_delta_count": { + "type": "long" + }, + "post_packet_total_count": { + "type": "long" + }, + "post_source_mac_address": { + "ignore_above": 1024, + "type": "keyword" + }, + "post_vlan_id": { + "type": "long" + }, + "private_enterprise_number": { + "type": "long" + }, + "protocol_identifier": { + "type": "short" + }, + "pseudo_wire_control_word": { + "type": "long" + }, + "pseudo_wire_destination_ipv4_address": { + "type": "ip" + }, + "pseudo_wire_id": { + "type": "long" + }, + "pseudo_wire_type": { + "type": "long" + }, + "relative_error": { + "type": "double" + }, + "responder_octets": { + "type": "long" + }, + "responder_packets": { + "type": "long" + }, + "rfc3550_jitter_microseconds": { + "type": "long" + }, + "rfc3550_jitter_milliseconds": { + "type": "long" + }, + "rfc3550_jitter_nanoseconds": { + "type": "long" + }, + "rtp_sequence_number": { + "type": "long" + }, + "sampler_id": { + "type": "short" + }, + "sampler_mode": { + "type": "short" + }, + "sampler_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "sampler_random_interval": { + "type": "long" + }, + "sampling_algorithm": { + "type": "short" + }, + "sampling_flow_interval": { + "type": "long" + }, + "sampling_flow_spacing": { + "type": "long" + }, + "sampling_interval": { + "type": "long" + }, + "sampling_packet_interval": { + "type": "long" + }, + "sampling_packet_space": { + "type": "long" + }, + "sampling_population": { + "type": "long" + }, + "sampling_probability": { + "type": "double" + }, + "sampling_size": { + "type": "long" + }, + "sampling_time_interval": { + "type": "long" + }, + "sampling_time_space": { + "type": "long" + }, + "section_exported_octets": { + "type": "long" + }, + "section_offset": { + "type": "long" + }, + "selection_sequence_id": { + "type": "long" + }, + "selector_algorithm": { + "type": "long" + }, + "selector_id": { + "type": "long" + }, + "selector_id_total_pkts_observed": { + "type": "long" + }, + "selector_id_total_pkts_selected": { + "type": "long" + }, + "selector_itd_otal_flows_observed": { + "type": "long" + }, + "selector_itd_otal_flows_selected": { + "type": "long" + }, + "selector_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "session_scope": { + "type": "short" + }, + "source_ipv4_address": { + "type": "ip" + }, + "source_ipv4_prefix": { + "type": "ip" + }, + "source_ipv4_prefix_length": { + "type": "short" + }, + "source_ipv6_address": { + "type": "ip" + }, + "source_ipv6_prefix": { + "type": "ip" + }, + "source_ipv6_prefix_length": { + "type": "short" + }, + "source_mac_address": { + "ignore_above": 1024, + "type": "keyword" + }, + "source_transport_port": { + "type": "long" + }, + "source_transport_ports_limit": { + "type": "long" + }, + "src_traffic_index": { + "type": "long" + }, + "sta_ipv4_address": { + "type": "ip" + }, + "sta_mac_address": { + "ignore_above": 1024, + "type": "keyword" + }, + "system_init_time_milliseconds": { + "type": "date" + }, + "tcp_ack_total_count": { + "type": "long" + }, + "tcp_acknowledgement_number": { + "type": "long" + }, + "tcp_control_bits": { + "type": "long" + }, + "tcp_destination_port": { + "type": "long" + }, + "tcp_fin_total_count": { + "type": "long" + }, + "tcp_header_length": { + "type": "short" + }, + "tcp_options": { + "type": "long" + }, + "tcp_psh_total_count": { + "type": "long" + }, + "tcp_rst_total_count": { + "type": "long" + }, + "tcp_sequence_number": { + "type": "long" + }, + "tcp_source_port": { + "type": "long" + }, + "tcp_syn_total_count": { + "type": "long" + }, + "tcp_urg_total_count": { + "type": "long" + }, + "tcp_urgent_pointer": { + "type": "long" + }, + "tcp_window_scale": { + "type": "long" + }, + "tcp_window_size": { + "type": "long" + }, + "template_id": { + "type": "long" + }, + "total_length_ipv4": { + "type": "long" + }, + "transport_octet_delta_count": { + "type": "long" + }, + "transport_packet_delta_count": { + "type": "long" + }, + "tunnel_technology": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "udp_destination_port": { + "type": "long" + }, + "udp_message_length": { + "type": "long" + }, + "udp_source_port": { + "type": "long" + }, + "upper_cli_imit": { + "type": "double" + }, + "user_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "value_distribution_method": { + "type": "short" + }, + "virtual_station_interface_id": { + "type": "short" + }, + "virtual_station_interface_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_station_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_station_uuid": { + "type": "short" + }, + "vlan_id": { + "type": "long" + }, + "vpn_identifier": { + "type": "short" + }, + "vr_fname": { + "ignore_above": 1024, + "type": "keyword" + }, + "wlan_channel_id": { + "type": "short" + }, + "wlan_ssid": { + "ignore_above": 1024, + "type": "keyword" + }, + "wtp_mac_address": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "network": { + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "community_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "direction": { + "ignore_above": 1024, + "type": "keyword" + }, + "forwarded_ip": { + "type": "ip" + }, + "iana_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "transport": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "nginx": { + "properties": { + "access": { + "properties": { + "geoip": { + "type": "object" + }, + "user_agent": { + "type": "object" + } + } + }, + "error": { + "properties": { + "connection_id": { + "type": "long" + } + } + } + } + }, + "observer": { + "properties": { + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vendor": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "organization": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "osquery": { + "properties": { + "result": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "calendar_time": { + "ignore_above": 1024, + "type": "keyword" + }, + "host_identifier": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "unix_time": { + "type": "long" + } + } + } + } + }, + "postgresql": { + "properties": { + "log": { + "properties": { + "core_id": { + "type": "long" + }, + "database": { + "ignore_above": 1024, + "type": "keyword" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "timestamp": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "process": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "program": { + "ignore_above": 1024, + "type": "keyword" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + } + } + }, + "title": { + "ignore_above": 1024, + "type": "keyword" + }, + "working_directory": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "redis": { + "properties": { + "log": { + "properties": { + "role": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "slowlog": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "cmd": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "properties": { + "us": { + "type": "long" + } + } + }, + "id": { + "type": "long" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "related": { + "properties": { + "ip": { + "type": "ip" + } + } + }, + "santa": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "decision": { + "ignore_above": 1024, + "type": "keyword" + }, + "disk": { + "properties": { + "bsdname": { + "ignore_above": 1024, + "type": "keyword" + }, + "bus": { + "ignore_above": 1024, + "type": "keyword" + }, + "fs": { + "ignore_above": 1024, + "type": "keyword" + }, + "model": { + "ignore_above": 1024, + "type": "keyword" + }, + "mount": { + "ignore_above": 1024, + "type": "keyword" + }, + "serial": { + "ignore_above": 1024, + "type": "keyword" + }, + "volume": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + } + } + }, + "service": { + "properties": { + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "source": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "num": { + "type": "long" + }, + "org": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "domain_top1m_rank": { + "type": "long" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + } + } + }, + "stream": { + "ignore_above": 1024, + "type": "keyword" + }, + "suricata": { + "properties": { + "eve": { + "properties": { + "alert": { + "properties": { + "action": { + "path": "event.outcome", + "type": "alias" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "type": "long" + }, + "rev": { + "type": "long" + }, + "severity": { + "path": "event.severity", + "type": "alias" + }, + "signature": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_id": { + "type": "long" + } + } + }, + "app_proto": { + "path": "network.protocol", + "type": "alias" + }, + "app_proto_expected": { + "ignore_above": 1024, + "type": "keyword" + }, + "app_proto_orig": { + "ignore_above": 1024, + "type": "keyword" + }, + "app_proto_tc": { + "ignore_above": 1024, + "type": "keyword" + }, + "app_proto_ts": { + "ignore_above": 1024, + "type": "keyword" + }, + "dest_ip": { + "path": "destination.ip", + "type": "alias" + }, + "dest_port": { + "path": "destination.port", + "type": "alias" + }, + "dns": { + "properties": { + "id": { + "type": "long" + }, + "rcode": { + "ignore_above": 1024, + "type": "keyword" + }, + "rdata": { + "ignore_above": 1024, + "type": "keyword" + }, + "rrname": { + "ignore_above": 1024, + "type": "keyword" + }, + "rrtype": { + "ignore_above": 1024, + "type": "keyword" + }, + "ttl": { + "type": "long" + }, + "tx_id": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "email": { + "properties": { + "status": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "event_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "fileinfo": { + "properties": { + "filename": { + "path": "file.path", + "type": "alias" + }, + "gaps": { + "type": "boolean" + }, + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "path": "file.size", + "type": "alias" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "stored": { + "type": "boolean" + }, + "tx_id": { + "type": "long" + } + } + }, + "flags": { + "type": "object" + }, + "flow": { + "properties": { + "age": { + "type": "long" + }, + "alerted": { + "type": "boolean" + }, + "bytes_toclient": { + "path": "destination.bytes", + "type": "alias" + }, + "bytes_toserver": { + "path": "source.bytes", + "type": "alias" + }, + "end": { + "type": "date" + }, + "pkts_toclient": { + "path": "destination.packets", + "type": "alias" + }, + "pkts_toserver": { + "path": "source.packets", + "type": "alias" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "start": { + "path": "event.start", + "type": "alias" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "flow_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "http": { + "properties": { + "hostname": { + "path": "url.domain", + "type": "alias" + }, + "http_content_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "http_method": { + "path": "http.request.method", + "type": "alias" + }, + "http_refer": { + "path": "http.request.referrer", + "type": "alias" + }, + "http_user_agent": { + "path": "user_agent.original", + "type": "alias" + }, + "length": { + "path": "http.response.body.bytes", + "type": "alias" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "redirect": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "path": "http.response.status_code", + "type": "alias" + }, + "url": { + "path": "url.original", + "type": "alias" + } + } + }, + "icmp_code": { + "type": "long" + }, + "icmp_type": { + "type": "long" + }, + "in_iface": { + "ignore_above": 1024, + "type": "keyword" + }, + "pcap_cnt": { + "type": "long" + }, + "proto": { + "path": "network.transport", + "type": "alias" + }, + "smtp": { + "properties": { + "helo": { + "ignore_above": 1024, + "type": "keyword" + }, + "mail_from": { + "ignore_above": 1024, + "type": "keyword" + }, + "rcpt_to": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "src_ip": { + "path": "source.ip", + "type": "alias" + }, + "src_port": { + "path": "source.port", + "type": "alias" + }, + "ssh": { + "properties": { + "client": { + "properties": { + "proto_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "software_version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "proto_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "software_version": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "stats": { + "properties": { + "app_layer": { + "properties": { + "flow": { + "properties": { + "dcerpc_tcp": { + "type": "long" + }, + "dcerpc_udp": { + "type": "long" + }, + "dns_tcp": { + "type": "long" + }, + "dns_udp": { + "type": "long" + }, + "failed_tcp": { + "type": "long" + }, + "failed_udp": { + "type": "long" + }, + "ftp": { + "type": "long" + }, + "http": { + "type": "long" + }, + "imap": { + "type": "long" + }, + "msn": { + "type": "long" + }, + "smb": { + "type": "long" + }, + "smtp": { + "type": "long" + }, + "ssh": { + "type": "long" + }, + "tls": { + "type": "long" + } + } + }, + "tx": { + "properties": { + "dcerpc_tcp": { + "type": "long" + }, + "dcerpc_udp": { + "type": "long" + }, + "dns_tcp": { + "type": "long" + }, + "dns_udp": { + "type": "long" + }, + "ftp": { + "type": "long" + }, + "http": { + "type": "long" + }, + "smb": { + "type": "long" + }, + "smtp": { + "type": "long" + }, + "ssh": { + "type": "long" + }, + "tls": { + "type": "long" + } + } + } + } + }, + "capture": { + "properties": { + "kernel_drops": { + "type": "long" + }, + "kernel_ifdrops": { + "type": "long" + }, + "kernel_packets": { + "type": "long" + } + } + }, + "decoder": { + "properties": { + "avg_pkt_size": { + "type": "long" + }, + "bytes": { + "type": "long" + }, + "dce": { + "properties": { + "pkt_too_small": { + "type": "long" + } + } + }, + "erspan": { + "type": "long" + }, + "ethernet": { + "type": "long" + }, + "gre": { + "type": "long" + }, + "icmpv4": { + "type": "long" + }, + "icmpv6": { + "type": "long" + }, + "ieee8021ah": { + "type": "long" + }, + "invalid": { + "type": "long" + }, + "ipraw": { + "properties": { + "invalid_ip_version": { + "type": "long" + } + } + }, + "ipv4": { + "type": "long" + }, + "ipv4_in_ipv6": { + "type": "long" + }, + "ipv6": { + "type": "long" + }, + "ipv6_in_ipv6": { + "type": "long" + }, + "ltnull": { + "properties": { + "pkt_too_small": { + "type": "long" + }, + "unsupported_type": { + "type": "long" + } + } + }, + "max_pkt_size": { + "type": "long" + }, + "mpls": { + "type": "long" + }, + "null": { + "type": "long" + }, + "pkts": { + "type": "long" + }, + "ppp": { + "type": "long" + }, + "pppoe": { + "type": "long" + }, + "raw": { + "type": "long" + }, + "sctp": { + "type": "long" + }, + "sll": { + "type": "long" + }, + "tcp": { + "type": "long" + }, + "teredo": { + "type": "long" + }, + "udp": { + "type": "long" + }, + "vlan": { + "type": "long" + }, + "vlan_qinq": { + "type": "long" + } + } + }, + "defrag": { + "properties": { + "ipv4": { + "properties": { + "fragments": { + "type": "long" + }, + "reassembled": { + "type": "long" + }, + "timeouts": { + "type": "long" + } + } + }, + "ipv6": { + "properties": { + "fragments": { + "type": "long" + }, + "reassembled": { + "type": "long" + }, + "timeouts": { + "type": "long" + } + } + }, + "max_frag_hits": { + "type": "long" + } + } + }, + "detect": { + "properties": { + "alert": { + "type": "long" + } + } + }, + "dns": { + "properties": { + "memcap_global": { + "type": "long" + }, + "memcap_state": { + "type": "long" + }, + "memuse": { + "type": "long" + } + } + }, + "file_store": { + "properties": { + "open_files": { + "type": "long" + } + } + }, + "flow": { + "properties": { + "emerg_mode_entered": { + "type": "long" + }, + "emerg_mode_over": { + "type": "long" + }, + "icmpv4": { + "type": "long" + }, + "icmpv6": { + "type": "long" + }, + "memcap": { + "type": "long" + }, + "memuse": { + "type": "long" + }, + "spare": { + "type": "long" + }, + "tcp": { + "type": "long" + }, + "tcp_reuse": { + "type": "long" + }, + "udp": { + "type": "long" + } + } + }, + "flow_mgr": { + "properties": { + "bypassed_pruned": { + "type": "long" + }, + "closed_pruned": { + "type": "long" + }, + "est_pruned": { + "type": "long" + }, + "flows_checked": { + "type": "long" + }, + "flows_notimeout": { + "type": "long" + }, + "flows_removed": { + "type": "long" + }, + "flows_timeout": { + "type": "long" + }, + "flows_timeout_inuse": { + "type": "long" + }, + "new_pruned": { + "type": "long" + }, + "rows_busy": { + "type": "long" + }, + "rows_checked": { + "type": "long" + }, + "rows_empty": { + "type": "long" + }, + "rows_maxlen": { + "type": "long" + }, + "rows_skipped": { + "type": "long" + } + } + }, + "http": { + "properties": { + "memcap": { + "type": "long" + }, + "memuse": { + "type": "long" + } + } + }, + "tcp": { + "properties": { + "insert_data_normal_fail": { + "type": "long" + }, + "insert_data_overlap_fail": { + "type": "long" + }, + "insert_list_fail": { + "type": "long" + }, + "invalid_checksum": { + "type": "long" + }, + "memuse": { + "type": "long" + }, + "no_flow": { + "type": "long" + }, + "overlap": { + "type": "long" + }, + "overlap_diff_data": { + "type": "long" + }, + "pseudo": { + "type": "long" + }, + "pseudo_failed": { + "type": "long" + }, + "reassembly_gap": { + "type": "long" + }, + "reassembly_memuse": { + "type": "long" + }, + "rst": { + "type": "long" + }, + "segment_memcap_drop": { + "type": "long" + }, + "sessions": { + "type": "long" + }, + "ssn_memcap_drop": { + "type": "long" + }, + "stream_depth_reached": { + "type": "long" + }, + "syn": { + "type": "long" + }, + "synack": { + "type": "long" + } + } + }, + "uptime": { + "type": "long" + } + } + }, + "tcp": { + "properties": { + "ack": { + "type": "boolean" + }, + "fin": { + "type": "boolean" + }, + "psh": { + "type": "boolean" + }, + "rst": { + "type": "boolean" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "syn": { + "type": "boolean" + }, + "tcp_flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "tcp_flags_tc": { + "ignore_above": 1024, + "type": "keyword" + }, + "tcp_flags_ts": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "timestamp": { + "path": "@timestamp", + "type": "alias" + }, + "tls": { + "properties": { + "fingerprint": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuerdn": { + "ignore_above": 1024, + "type": "keyword" + }, + "notafter": { + "type": "date" + }, + "notbefore": { + "type": "date" + }, + "serial": { + "ignore_above": 1024, + "type": "keyword" + }, + "session_resumed": { + "type": "boolean" + }, + "sni": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tx_id": { + "type": "long" + } + } + } + } + }, + "syslog": { + "properties": { + "facility": { + "type": "long" + }, + "facility_label": { + "ignore_above": 1024, + "type": "keyword" + }, + "priority": { + "type": "long" + }, + "severity_label": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "system": { + "properties": { + "auth": { + "properties": { + "groupadd": { + "type": "object" + }, + "ssh": { + "properties": { + "dropped_ip": { + "type": "ip" + }, + "geoip": { + "type": "object" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "sudo": { + "properties": { + "command": { + "ignore_above": 1024, + "type": "keyword" + }, + "error": { + "ignore_above": 1024, + "type": "keyword" + }, + "pwd": { + "ignore_above": 1024, + "type": "keyword" + }, + "tty": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "useradd": { + "properties": { + "home": { + "ignore_above": 1024, + "type": "keyword" + }, + "shell": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "syslog": { + "type": "object" + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "traefik": { + "properties": { + "access": { + "properties": { + "backend_url": { + "ignore_above": 1024, + "type": "keyword" + }, + "frontend_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "geoip": { + "properties": { + "city_name": { + "path": "source.geo.city_name", + "type": "alias" + }, + "continent_name": { + "path": "source.geo.continent_name", + "type": "alias" + }, + "country_iso_code": { + "path": "source.geo.country_iso_code", + "type": "alias" + }, + "location": { + "path": "source.geo.location", + "type": "alias" + }, + "region_iso_code": { + "path": "source.geo.region_iso_code", + "type": "alias" + }, + "region_name": { + "path": "source.geo.region_name", + "type": "alias" + } + } + }, + "request_count": { + "type": "long" + }, + "user_agent": { + "properties": { + "device": { + "path": "user_agent.device.name", + "type": "alias" + }, + "name": { + "path": "user_agent.name", + "type": "alias" + }, + "original": { + "path": "user_agent.original", + "type": "alias" + }, + "os": { + "path": "user_agent.os.full_name", + "type": "alias" + }, + "os_name": { + "path": "user_agent.os.name", + "type": "alias" + } + } + }, + "user_identifier": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "properties": { + "audit": { + "properties": { + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "effective": { + "properties": { + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "filesystem": { + "properties": { + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "full_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "properties": { + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "saved": { + "properties": { + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "terminal": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user_agent": { + "properties": { + "device": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "major": { + "ignore_above": 1024, + "type": "keyword" + }, + "minor": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "major": { + "ignore_above": 1024, + "type": "keyword" + }, + "minor": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "patch": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zeek": { + "properties": { + "connection": { + "properties": { + "history": { + "ignore_above": 1024, + "type": "keyword" + }, + "local_orig": { + "type": "boolean" + }, + "local_resp": { + "type": "boolean" + }, + "missed_bytes": { + "type": "long" + }, + "orig_l2_addr": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "dns": { + "properties": { + "AA": { + "type": "boolean" + }, + "RA": { + "type": "boolean" + }, + "RD": { + "type": "boolean" + }, + "TC": { + "type": "boolean" + }, + "TTLs": { + "type": "double" + }, + "answers": { + "ignore_above": 1024, + "type": "keyword" + }, + "qclass": { + "type": "long" + }, + "qclass_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "qtype": { + "type": "long" + }, + "qtype_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "rcode": { + "type": "long" + }, + "rcode_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "rejected": { + "type": "boolean" + }, + "rtt": { + "type": "double" + }, + "saw_query": { + "type": "boolean" + }, + "saw_reply": { + "type": "boolean" + }, + "total_answers": { + "type": "long" + }, + "total_replies": { + "type": "long" + }, + "trans_id": { + "type": "long" + } + } + }, + "files": { + "properties": { + "analyzers": { + "ignore_above": 1024, + "type": "keyword" + }, + "depth": { + "type": "long" + }, + "duration": { + "type": "double" + }, + "entropy": { + "type": "double" + }, + "extracted": { + "ignore_above": 1024, + "type": "keyword" + }, + "extracted_cutoff": { + "type": "boolean" + }, + "extracted_size": { + "type": "long" + }, + "filename": { + "ignore_above": 1024, + "type": "keyword" + }, + "fuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "is_orig": { + "type": "boolean" + }, + "local_orig": { + "type": "boolean" + }, + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "missing_bytes": { + "type": "long" + }, + "overflow_bytes": { + "type": "long" + }, + "parent_fuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "rx_host": { + "type": "ip" + }, + "seen_bytes": { + "type": "long" + }, + "session_ids": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "source": { + "ignore_above": 1024, + "type": "keyword" + }, + "timedout": { + "type": "boolean" + }, + "total_bytes": { + "type": "long" + }, + "tx_host": { + "type": "ip" + } + } + }, + "http": { + "properties": { + "captured_password": { + "type": "boolean" + }, + "client_header_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "filename": { + "ignore_above": 1024, + "type": "keyword" + }, + "info_code": { + "type": "long" + }, + "info_msg": { + "ignore_above": 1024, + "type": "keyword" + }, + "orig_filenames": { + "ignore_above": 1024, + "type": "keyword" + }, + "orig_fuids": { + "ignore_above": 1024, + "type": "keyword" + }, + "orig_mime_depth": { + "type": "long" + }, + "orig_mime_types": { + "ignore_above": 1024, + "type": "keyword" + }, + "proxied": { + "ignore_above": 1024, + "type": "keyword" + }, + "range_request": { + "type": "boolean" + }, + "resp_filenames": { + "ignore_above": 1024, + "type": "keyword" + }, + "resp_fuids": { + "ignore_above": 1024, + "type": "keyword" + }, + "resp_mime_depth": { + "type": "long" + }, + "resp_mime_types": { + "ignore_above": 1024, + "type": "keyword" + }, + "server_header_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "status_msg": { + "ignore_above": 1024, + "type": "keyword" + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "trans_depth": { + "type": "long" + } + } + }, + "inner_vlan": { + "ignore_above": 1024, + "type": "keyword" + }, + "resp_l2_addr": { + "ignore_above": 1024, + "type": "keyword" + }, + "session_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssl": { + "properties": { + "cert_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "cert_chain_fuids": { + "ignore_above": 1024, + "type": "keyword" + }, + "cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "client_cert_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "client_cert_chain_fuids": { + "ignore_above": 1024, + "type": "keyword" + }, + "client_issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "client_subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "established": { + "type": "boolean" + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "last_alert": { + "ignore_above": 1024, + "type": "keyword" + }, + "next_protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "resumed": { + "type": "boolean" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "validation_status": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "settings": { + "index": { + "lifecycle": { + "name": "filebeat-7.0.0", + "rollover_alias": "filebeat-7.0.0" + }, + "mapping": { + "total_fields": { + "limit": "10000" + } + }, + "number_of_replicas": "0", + "number_of_shards": "1", + "query": { + "default_field": [ + "tags", + "message", + "agent.version", + "agent.name", + "agent.type", + "agent.id", + "agent.ephemeral_id", + "client.address", + "client.mac", + "client.domain", + "client.geo.continent_name", + "client.geo.country_name", + "client.geo.region_name", + "client.geo.city_name", + "client.geo.country_iso_code", + "client.geo.region_iso_code", + "client.geo.name", + "cloud.provider", + "cloud.availability_zone", + "cloud.region", + "cloud.instance.id", + "cloud.instance.name", + "cloud.machine.type", + "cloud.account.id", + "container.runtime", + "container.id", + "container.image.name", + "container.image.tag", + "container.name", + "destination.address", + "destination.mac", + "destination.domain", + "destination.geo.continent_name", + "destination.geo.country_name", + "destination.geo.region_name", + "destination.geo.city_name", + "destination.geo.country_iso_code", + "destination.geo.region_iso_code", + "destination.geo.name", + "ecs.version", + "error.id", + "error.message", + "error.code", + "event.id", + "event.kind", + "event.category", + "event.action", + "event.outcome", + "event.type", + "event.module", + "event.dataset", + "event.hash", + "event.timezone", + "file.path", + "file.target_path", + "file.extension", + "file.type", + "file.device", + "file.inode", + "file.uid", + "file.owner", + "file.gid", + "file.group", + "file.mode", + "group.id", + "group.name", + "host.hostname", + "host.name", + "host.id", + "host.mac", + "host.type", + "host.architecture", + "host.os.platform", + "host.os.name", + "host.os.full", + "host.os.family", + "host.os.version", + "host.os.kernel", + "host.geo.continent_name", + "host.geo.country_name", + "host.geo.region_name", + "host.geo.city_name", + "host.geo.country_iso_code", + "host.geo.region_iso_code", + "host.geo.name", + "http.request.method", + "http.request.body.content", + "http.request.referrer", + "http.response.body.content", + "http.version", + "log.level", + "network.name", + "network.type", + "network.iana_number", + "network.transport", + "network.application", + "network.protocol", + "network.direction", + "network.community_id", + "observer.mac", + "observer.hostname", + "observer.vendor", + "observer.version", + "observer.serial_number", + "observer.type", + "observer.os.platform", + "observer.os.name", + "observer.os.full", + "observer.os.family", + "observer.os.version", + "observer.os.kernel", + "observer.geo.continent_name", + "observer.geo.country_name", + "observer.geo.region_name", + "observer.geo.city_name", + "observer.geo.country_iso_code", + "observer.geo.region_iso_code", + "observer.geo.name", + "organization.name", + "organization.id", + "os.platform", + "os.name", + "os.full", + "os.family", + "os.version", + "os.kernel", + "process.name", + "process.args", + "process.executable", + "process.title", + "process.working_directory", + "server.address", + "server.mac", + "server.domain", + "server.geo.continent_name", + "server.geo.country_name", + "server.geo.region_name", + "server.geo.city_name", + "server.geo.country_iso_code", + "server.geo.region_iso_code", + "server.geo.name", + "service.id", + "service.name", + "service.type", + "service.state", + "service.version", + "service.ephemeral_id", + "source.address", + "source.mac", + "source.domain", + "source.geo.continent_name", + "source.geo.country_name", + "source.geo.region_name", + "source.geo.city_name", + "source.geo.country_iso_code", + "source.geo.region_iso_code", + "source.geo.name", + "url.original", + "url.full", + "url.scheme", + "url.domain", + "url.path", + "url.query", + "url.fragment", + "url.username", + "url.password", + "user.id", + "user.name", + "user.full_name", + "user.email", + "user.hash", + "user.group.id", + "user.group.name", + "user_agent.original", + "user_agent.name", + "user_agent.version", + "user_agent.device.name", + "user_agent.os.platform", + "user_agent.os.name", + "user_agent.os.full", + "user_agent.os.family", + "user_agent.os.version", + "user_agent.os.kernel", + "agent.hostname", + "error.type", + "cloud.project.id", + "kubernetes.pod.name", + "kubernetes.pod.uid", + "kubernetes.namespace", + "kubernetes.node.name", + "kubernetes.container.name", + "kubernetes.container.image", + "log.file.path", + "log.source.address", + "stream", + "input.type", + "syslog.severity_label", + "syslog.facility_label", + "process.program", + "log.flags", + "user_agent.os.full_name", + "fileset.name", + "apache.access.ssl.protocol", + "apache.access.ssl.cipher", + "apache.error.module", + "user.terminal", + "user.audit.id", + "user.audit.name", + "user.audit.group.id", + "user.audit.group.name", + "user.effective.id", + "user.effective.name", + "user.effective.group.id", + "user.effective.group.name", + "user.filesystem.id", + "user.filesystem.name", + "user.filesystem.group.id", + "user.filesystem.group.name", + "user.owner.id", + "user.owner.name", + "user.owner.group.id", + "user.owner.group.name", + "user.saved.id", + "user.saved.name", + "user.saved.group.id", + "user.saved.group.name", + "auditd.log.old_auid", + "auditd.log.new_auid", + "auditd.log.old_ses", + "auditd.log.new_ses", + "auditd.log.items", + "auditd.log.item", + "auditd.log.tty", + "auditd.log.a0", + "elasticsearch.component", + "elasticsearch.cluster.uuid", + "elasticsearch.cluster.name", + "elasticsearch.node.id", + "elasticsearch.node.name", + "elasticsearch.index.name", + "elasticsearch.index.id", + "elasticsearch.shard.id", + "elasticsearch.audit.layer", + "elasticsearch.audit.origin.type", + "elasticsearch.audit.realm", + "elasticsearch.audit.user.realm", + "elasticsearch.audit.user.roles", + "elasticsearch.audit.action", + "elasticsearch.audit.url.params", + "elasticsearch.audit.indices", + "elasticsearch.audit.request.id", + "elasticsearch.audit.request.name", + "elasticsearch.gc.phase.name", + "elasticsearch.gc.tags", + "elasticsearch.slowlog.logger", + "elasticsearch.slowlog.took", + "elasticsearch.slowlog.types", + "elasticsearch.slowlog.stats", + "elasticsearch.slowlog.search_type", + "elasticsearch.slowlog.source_query", + "elasticsearch.slowlog.extra_source", + "elasticsearch.slowlog.total_hits", + "elasticsearch.slowlog.total_shards", + "elasticsearch.slowlog.routing", + "elasticsearch.slowlog.id", + "elasticsearch.slowlog.type", + "haproxy.frontend_name", + "haproxy.backend_name", + "haproxy.server_name", + "haproxy.bind_name", + "haproxy.error_message", + "haproxy.source", + "haproxy.termination_state", + "haproxy.mode", + "haproxy.http.response.captured_cookie", + "haproxy.http.response.captured_headers", + "haproxy.http.request.captured_cookie", + "haproxy.http.request.captured_headers", + "haproxy.http.request.raw_request_line", + "icinga.debug.facility", + "icinga.main.facility", + "icinga.startup.facility", + "iis.access.site_name", + "iis.access.server_name", + "iis.access.cookie", + "iis.error.reason_phrase", + "iis.error.queue_name", + "iptables.fragment_flags", + "iptables.input_device", + "iptables.output_device", + "iptables.tcp.flags", + "iptables.ubiquiti.input_zone", + "iptables.ubiquiti.output_zone", + "iptables.ubiquiti.rule_number", + "iptables.ubiquiti.rule_set", + "kafka.log.component", + "kafka.log.class", + "kafka.log.trace.class", + "kafka.log.trace.message", + "kibana.log.tags", + "kibana.log.state", + "logstash.log.module", + "logstash.log.thread", + "text", + "logstash.slowlog.module", + "logstash.slowlog.thread", + "text", + "logstash.slowlog.event", + "text", + "logstash.slowlog.plugin_name", + "logstash.slowlog.plugin_type", + "logstash.slowlog.plugin_params", + "text", + "mongodb.log.component", + "mongodb.log.context", + "mysql.slowlog.query", + "mysql.slowlog.schema", + "mysql.slowlog.current_user", + "mysql.slowlog.last_errno", + "mysql.slowlog.killed", + "mysql.slowlog.log_slow_rate_type", + "mysql.slowlog.log_slow_rate_limit", + "mysql.slowlog.innodb.trx_id", + "netflow.type", + "netflow.exporter.address", + "netflow.source_mac_address", + "netflow.post_destination_mac_address", + "netflow.destination_mac_address", + "netflow.post_source_mac_address", + "netflow.interface_name", + "netflow.interface_description", + "netflow.sampler_name", + "netflow.application_description", + "netflow.application_name", + "netflow.class_name", + "netflow.wlan_ssid", + "netflow.vr_fname", + "netflow.metro_evc_id", + "netflow.nat_pool_name", + "netflow.p2p_technology", + "netflow.tunnel_technology", + "netflow.encrypted_technology", + "netflow.observation_domain_name", + "netflow.selector_name", + "netflow.information_element_description", + "netflow.information_element_name", + "netflow.virtual_station_interface_name", + "netflow.virtual_station_name", + "netflow.sta_mac_address", + "netflow.wtp_mac_address", + "netflow.user_name", + "netflow.application_category_name", + "netflow.application_sub_category_name", + "netflow.application_group_name", + "netflow.dot1q_customer_source_mac_address", + "netflow.dot1q_customer_destination_mac_address", + "netflow.mib_context_name", + "netflow.mib_object_name", + "netflow.mib_object_description", + "netflow.mib_object_syntax", + "netflow.mib_module_name", + "netflow.mobile_imsi", + "netflow.mobile_msisdn", + "netflow.http_request_method", + "netflow.http_request_host", + "netflow.http_request_target", + "netflow.http_message_version", + "netflow.http_user_agent", + "netflow.http_content_type", + "netflow.http_reason_phrase", + "osquery.result.name", + "osquery.result.action", + "osquery.result.host_identifier", + "osquery.result.calendar_time", + "postgresql.log.timestamp", + "postgresql.log.database", + "postgresql.log.query", + "redis.log.role", + "redis.slowlog.cmd", + "redis.slowlog.key", + "redis.slowlog.args", + "santa.action", + "santa.decision", + "santa.reason", + "santa.mode", + "santa.disk.volume", + "santa.disk.bus", + "santa.disk.serial", + "santa.disk.bsdname", + "santa.disk.model", + "santa.disk.fs", + "santa.disk.mount", + "certificate.common_name", + "certificate.sha256", + "hash.sha256", + "suricata.eve.event_type", + "suricata.eve.app_proto_orig", + "suricata.eve.tcp.tcp_flags", + "suricata.eve.tcp.tcp_flags_tc", + "suricata.eve.tcp.state", + "suricata.eve.tcp.tcp_flags_ts", + "suricata.eve.fileinfo.sha1", + "suricata.eve.fileinfo.state", + "suricata.eve.fileinfo.sha256", + "suricata.eve.fileinfo.md5", + "suricata.eve.dns.type", + "suricata.eve.dns.rrtype", + "suricata.eve.dns.rrname", + "suricata.eve.dns.rdata", + "suricata.eve.dns.rcode", + "suricata.eve.flow_id", + "suricata.eve.email.status", + "suricata.eve.http.redirect", + "suricata.eve.http.protocol", + "suricata.eve.http.http_content_type", + "suricata.eve.in_iface", + "suricata.eve.alert.category", + "suricata.eve.alert.signature", + "suricata.eve.ssh.client.proto_version", + "suricata.eve.ssh.client.software_version", + "suricata.eve.ssh.server.proto_version", + "suricata.eve.ssh.server.software_version", + "suricata.eve.tls.issuerdn", + "suricata.eve.tls.sni", + "suricata.eve.tls.version", + "suricata.eve.tls.fingerprint", + "suricata.eve.tls.serial", + "suricata.eve.tls.subject", + "suricata.eve.app_proto_ts", + "suricata.eve.flow.state", + "suricata.eve.flow.reason", + "suricata.eve.app_proto_tc", + "suricata.eve.smtp.rcpt_to", + "suricata.eve.smtp.mail_from", + "suricata.eve.smtp.helo", + "suricata.eve.app_proto_expected", + "system.auth.ssh.method", + "system.auth.ssh.signature", + "system.auth.sudo.error", + "system.auth.sudo.tty", + "system.auth.sudo.pwd", + "system.auth.sudo.user", + "system.auth.sudo.command", + "system.auth.useradd.home", + "system.auth.useradd.shell", + "traefik.access.user_identifier", + "traefik.access.frontend_name", + "traefik.access.backend_url", + "zeek.session_id", + "zeek.connection.state", + "zeek.connection.history", + "zeek.connection.orig_l2_addr", + "zeek.resp_l2_addr", + "zeek.vlan", + "zeek.inner_vlan", + "zeek.dns.query", + "zeek.dns.qclass_name", + "zeek.dns.qtype_name", + "zeek.dns.rcode_name", + "zeek.dns.answers", + "zeek.http.status_msg", + "zeek.http.info_msg", + "zeek.http.filename", + "zeek.http.tags", + "zeek.http.proxied", + "zeek.http.client_header_names", + "zeek.http.server_header_names", + "zeek.http.orig_fuids", + "zeek.http.orig_mime_types", + "zeek.http.orig_filenames", + "zeek.http.resp_fuids", + "zeek.http.resp_mime_types", + "zeek.http.resp_filenames", + "zeek.files.fuid", + "zeek.files.session_ids", + "zeek.files.source", + "zeek.files.analyzers", + "zeek.files.mime_type", + "zeek.files.filename", + "zeek.files.parent_fuid", + "zeek.files.md5", + "zeek.files.sha1", + "zeek.files.sha256", + "zeek.files.extracted", + "zeek.ssl.version", + "zeek.ssl.cipher", + "zeek.ssl.curve", + "zeek.ssl.server_name", + "zeek.ssl.next_protocol", + "zeek.ssl.cert_chain", + "zeek.ssl.cert_chain_fuids", + "zeek.ssl.client_cert_chain", + "zeek.ssl.client_cert_chain_fuids", + "zeek.ssl.issuer", + "zeek.ssl.client_issuer", + "zeek.ssl.validation_status", + "zeek.ssl.subject", + "zeek.ssl.client_subject", + "zeek.ssl.last_alert", + "fields.*" + ] + }, + "refresh_interval": "5s" + } + } + } +} \ No newline at end of file From a3c2aebb9ffe95a497ac54944486b2c8cc849c09 Mon Sep 17 00:00:00 2001 From: Robert Oskamp Date: Tue, 20 Apr 2021 11:38:16 +0200 Subject: [PATCH 45/56] [ML] Functional tests - stabilize anomaly charts embeddables test (#97452) This PR stabilizes the anomaly charts embeddables test by adding a retry. --- .../apps/ml_embeddables_in_dashboard.ts | 6 +----- .../anomaly_charts_dashboard_embeddables.ts | 6 +----- .../services/ml/dashboard_embeddables.ts | 17 ++++++++++++++++- .../ml/dashboard_job_selection_table.ts | 9 +++++++-- x-pack/test/functional/services/ml/index.ts | 6 +++++- 5 files changed, 30 insertions(+), 14 deletions(-) diff --git a/x-pack/test/accessibility/apps/ml_embeddables_in_dashboard.ts b/x-pack/test/accessibility/apps/ml_embeddables_in_dashboard.ts index 51875c683346e..de44984a50c5b 100644 --- a/x-pack/test/accessibility/apps/ml_embeddables_in_dashboard.ts +++ b/x-pack/test/accessibility/apps/ml_embeddables_in_dashboard.ts @@ -58,7 +58,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const ml = getService('ml'); const PageObjects = getPageObjects(['common', 'timePicker', 'dashboard']); - const dashboardAddPanel = getService('dashboardAddPanel'); const a11y = getService('a11y'); /* this is the wrapping service around axe */ describe('machine learning embeddables anomaly charts', function () { @@ -96,10 +95,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('can open job selection flyout', async () => { await PageObjects.dashboard.clickCreateDashboardPrompt(); await ml.dashboardEmbeddables.assertDashboardIsEmpty(); - await dashboardAddPanel.clickEditorMenuButton(); - await dashboardAddPanel.clickEmbeddableFactoryGroupButton('ml'); - await dashboardAddPanel.clickAddNewEmbeddableLink('ml_anomaly_charts'); - await ml.dashboardJobSelectionTable.assertJobSelectionTableExists(); + await ml.dashboardEmbeddables.openJobSelectionFlyout(); await a11y.testAppSnapshot(); }); diff --git a/x-pack/test/functional/apps/ml/embeddables/anomaly_charts_dashboard_embeddables.ts b/x-pack/test/functional/apps/ml/embeddables/anomaly_charts_dashboard_embeddables.ts index 0aee183c1a4a5..d4eb45619b7f7 100644 --- a/x-pack/test/functional/apps/ml/embeddables/anomaly_charts_dashboard_embeddables.ts +++ b/x-pack/test/functional/apps/ml/embeddables/anomaly_charts_dashboard_embeddables.ts @@ -58,7 +58,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const ml = getService('ml'); const PageObjects = getPageObjects(['common', 'timePicker', 'dashboard']); - const dashboardAddPanel = getService('dashboardAddPanel'); describe('anomaly charts', function () { this.tags(['mlqa']); @@ -87,10 +86,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('can open job selection flyout', async () => { await PageObjects.dashboard.clickCreateDashboardPrompt(); await ml.dashboardEmbeddables.assertDashboardIsEmpty(); - await dashboardAddPanel.clickEditorMenuButton(); - await dashboardAddPanel.clickEmbeddableFactoryGroupButton('ml'); - await dashboardAddPanel.clickAddNewEmbeddableLink('ml_anomaly_charts'); - await ml.dashboardJobSelectionTable.assertJobSelectionTableExists(); + await ml.dashboardEmbeddables.openJobSelectionFlyout(); }); it('can select jobs', async () => { diff --git a/x-pack/test/functional/services/ml/dashboard_embeddables.ts b/x-pack/test/functional/services/ml/dashboard_embeddables.ts index d0e100a57075a..db5c3f35a2e14 100644 --- a/x-pack/test/functional/services/ml/dashboard_embeddables.ts +++ b/x-pack/test/functional/services/ml/dashboard_embeddables.ts @@ -8,14 +8,17 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; import { MlCommonUI } from './common_ui'; +import { MlDashboardJobSelectionTable } from './dashboard_job_selection_table'; export function MachineLearningDashboardEmbeddablesProvider( { getService }: FtrProviderContext, - mlCommonUI: MlCommonUI + mlCommonUI: MlCommonUI, + mlDashboardJobSelectionTable: MlDashboardJobSelectionTable ) { const retry = getService('retry'); const testSubjects = getService('testSubjects'); const find = getService('find'); + const dashboardAddPanel = getService('dashboardAddPanel'); return { async assertAnomalyChartsEmbeddableInitializerExists() { @@ -91,5 +94,17 @@ export function MachineLearningDashboardEmbeddablesProvider( async assertAnomalyChartsExists() { await testSubjects.existOrFail(`mlExplorerChartsContainer`); }, + + async openJobSelectionFlyout() { + await retry.tryForTime(60 * 1000, async () => { + await dashboardAddPanel.clickEditorMenuButton(); + await testSubjects.existOrFail('dashboardEditorContextMenu', { timeout: 2000 }); + + await dashboardAddPanel.clickEmbeddableFactoryGroupButton('ml'); + await dashboardAddPanel.clickAddNewEmbeddableLink('ml_anomaly_charts'); + + await mlDashboardJobSelectionTable.assertJobSelectionTableExists(); + }); + }, }; } diff --git a/x-pack/test/functional/services/ml/dashboard_job_selection_table.ts b/x-pack/test/functional/services/ml/dashboard_job_selection_table.ts index b9fe43b000baf..f372928d92a50 100644 --- a/x-pack/test/functional/services/ml/dashboard_job_selection_table.ts +++ b/x-pack/test/functional/services/ml/dashboard_job_selection_table.ts @@ -6,8 +6,13 @@ */ import expect from '@kbn/expect'; +import { ProvidedType } from '@kbn/test/types/ftr'; import { FtrProviderContext } from '../../ftr_provider_context'; +export type MlDashboardJobSelectionTable = ProvidedType< + typeof MachineLearningDashboardJobSelectionTableProvider +>; + export function MachineLearningDashboardJobSelectionTableProvider({ getService, }: FtrProviderContext) { @@ -16,8 +21,8 @@ export function MachineLearningDashboardJobSelectionTableProvider({ return { async assertJobSelectionTableExists(): Promise { - await retry.tryForTime(5000, async () => { - await testSubjects.existOrFail('mlCustomSelectionTable'); + await retry.tryForTime(20 * 1000, async () => { + await testSubjects.existOrFail('mlCustomSelectionTable', { timeout: 2000 }); }); }, diff --git a/x-pack/test/functional/services/ml/index.ts b/x-pack/test/functional/services/ml/index.ts index fe46263f50266..05d369d890289 100644 --- a/x-pack/test/functional/services/ml/index.ts +++ b/x-pack/test/functional/services/ml/index.ts @@ -60,7 +60,11 @@ export function MachineLearningProvider(context: FtrProviderContext) { const customUrls = MachineLearningCustomUrlsProvider(context); const dashboardJobSelectionTable = MachineLearningDashboardJobSelectionTableProvider(context); - const dashboardEmbeddables = MachineLearningDashboardEmbeddablesProvider(context, commonUI); + const dashboardEmbeddables = MachineLearningDashboardEmbeddablesProvider( + context, + commonUI, + dashboardJobSelectionTable + ); const dataFrameAnalytics = MachineLearningDataFrameAnalyticsProvider(context, api); const dataFrameAnalyticsCreation = MachineLearningDataFrameAnalyticsCreationProvider( From b227b8fc8653e81dee91479ebc7a936f32171c06 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Tue, 20 Apr 2021 11:48:14 +0200 Subject: [PATCH 46/56] [Lens] fix amsterdam theme issues (#97237) * adding border to the toolbar buttons * Weird ranges/filters shadows/borders fixed * suggestion shadows fixed * adjusting border radius on workspace * add new layer button * adjust styles for filter by just like for filter agg * don't show outer style for selecting the field item * fix color button * add padding to the button * v8 conditional * fix v7 * Update toolbar_button.scss Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../public/toolbar_button/toolbar_button.scss | 5 ++++ .../config_panel/config_panel.scss | 17 +++++++---- .../config_panel/config_panel.tsx | 4 ++- .../editor_frame/suggestion_panel.scss | 3 +- .../editor_frame/suggestion_panel.tsx | 2 ++ .../workspace_panel_wrapper.scss | 5 +++- .../dimension_panel/filtering.tsx | 30 +++++++++---------- .../indexpattern_datasource/field_item.scss | 8 ++++- .../definitions/shared_components/buckets.tsx | 2 +- 9 files changed, 51 insertions(+), 25 deletions(-) diff --git a/src/plugins/kibana_react/public/toolbar_button/toolbar_button.scss b/src/plugins/kibana_react/public/toolbar_button/toolbar_button.scss index f290b3c7c5f89..8a4545672de3c 100644 --- a/src/plugins/kibana_react/public/toolbar_button/toolbar_button.scss +++ b/src/plugins/kibana_react/public/toolbar_button/toolbar_button.scss @@ -2,8 +2,13 @@ line-height: $euiButtonHeight; // Keeps alignment of text and chart icon background-color: $euiColorEmptyShade; + // todo: once issue https://github.com/elastic/eui/issues/4730 is merged, this code might be safe to remove // Some toolbar buttons are just icons, but EuiButton comes with margin and min-width that need to be removed min-width: 0; + @include kbnThemeStyle('v8') { + border-width: $euiBorderWidthThin; + border-style: solid; + } &[class*='--text'] { // Lighten the border color for all states diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.scss b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.scss index a58b5c21e7724..6629b44075831 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.scss +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.scss @@ -1,7 +1,14 @@ +.lnsConfigPanel__addLayerBtnWrapper { + padding-bottom: $euiSize; +} + .lnsConfigPanel__addLayerBtn { - color: transparentize($euiColorMediumShade, .3); - // Remove EuiButton's default shadow to make button more subtle - // sass-lint:disable-block no-important - box-shadow: none !important; - border-color: $euiColorLightShade; + @include kbnThemeStyle('v7') { + // sass-lint:disable-block no-important + background-color: transparent !important; + color: transparentize($euiColorMediumShade, .3) !important; + border-color: $euiColorLightShade !important; + box-shadow: none !important; + } + } diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx index 393c7363dc03f..d52fd29e7233a 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx @@ -134,7 +134,7 @@ export function LayerPanels( ) : null )} {activeVisualization.appendLayer && visualizationState && ( - + { const id = generateId(); dispatch({ diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss index b3e6f68b0a68c..b9f233d2b2950 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss @@ -27,6 +27,7 @@ margin-right: $euiSizeS; margin-left: $euiSizeXS / 2; margin-bottom: $euiSizeXS / 2; + box-shadow: none !important; // sass-lint:disable-line no-important &:focus { @include euiFocusRing; @@ -40,7 +41,7 @@ .lnsSuggestionPanel__button-isSelected { background-color: $euiColorLightestShade !important; // sass-lint:disable-line no-important - border-color: $euiColorMediumShade; + border-color: $euiColorMediumShade !important; // sass-lint:disable-line no-important &:not(:focus) { box-shadow: none !important; // sass-lint:disable-line no-important diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx index 9284b1dcc273d..e5acd2a2f47fd 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx @@ -130,6 +130,8 @@ const SuggestionPreview = ({
    + {/* Empty for spacing */} - + + + { + updateLayer(setFilter(columnId, layer, undefined)); + }} + iconType="cross" + /> + } @@ -112,19 +125,6 @@ export function Filtering({ /> - - { - updateLayer(setFilter(columnId, layer, undefined)); - }} - iconType="cross" - /> - ); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.scss b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.scss index 19f5b91975202..a652a18752949 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.scss +++ b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.scss @@ -17,8 +17,14 @@ &:focus, &:focus-within, + .kbnFieldButton__button:focus:focus-visible, &.kbnFieldButton-isActive { - animation: none !important; // sass-lint:disable-line no-important + @include kbnThemeStyle('v7') { + animation: none !important; // sass-lint:disable-line no-important + } + @include kbnThemeStyle('v8') { + outline: none !important; // sass-lint:disable-line no-important + } } &:focus .kbnFieldButton__name span, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/shared_components/buckets.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/shared_components/buckets.tsx index 38666185eda0e..b2cfc0e5a7c2c 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/shared_components/buckets.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/shared_components/buckets.tsx @@ -51,7 +51,7 @@ const BucketContainer = ({ isNotRemovable, }: BucketContainerProps) => { return ( - + {/* Empty for spacing */} From 4faff46b5391ee95b94970f5ad2b2c171f97d25e Mon Sep 17 00:00:00 2001 From: Dmitry Tomashevich <39378793+Dmitriynj@users.noreply.github.com> Date: Tue, 20 Apr 2021 12:53:25 +0300 Subject: [PATCH 47/56] [Timelion] Fixes bug with escape colons in field names in the metric/split parameter (#96770) * [Timelion] add colons support in field names for metric * [Timelion] support percent for metric * [Timelion] get rid of array indexes * [Timelion] get rid of lodash methods * [Timelion] support colons in split. fix expression suggestions * [Timelion] escape colons for metric * [Timelion] use metric types common constants * [Timelion] support one symbol field name * [Timelion] resolve duplicate imports * [Timelion] remove console logs Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- src/plugins/vis_type_timelion/common/types.ts | 1 + .../timelion_expression_input_helpers.ts | 7 ++- .../public/helpers/arg_value_suggestions.ts | 14 ++++-- .../server/series_functions/es/es.test.js | 47 +++++++++++++++++-- .../series_functions/es/lib/build_request.js | 14 +++--- .../es/lib/create_date_agg.js | 36 +++++++++----- 6 files changed, 89 insertions(+), 30 deletions(-) diff --git a/src/plugins/vis_type_timelion/common/types.ts b/src/plugins/vis_type_timelion/common/types.ts index f3f2a74a711a9..8ce4bd8b45f0d 100644 --- a/src/plugins/vis_type_timelion/common/types.ts +++ b/src/plugins/vis_type_timelion/common/types.ts @@ -16,6 +16,7 @@ export interface TimelionFunctionArgsSuggestion { export interface TimelionFunctionArgs { name: string; help?: string; + insertText?: string; multi?: boolean; types: TimelionFunctionArgsTypes[]; suggestions?: TimelionFunctionArgsSuggestion[]; diff --git a/src/plugins/vis_type_timelion/public/components/timelion_expression_input_helpers.ts b/src/plugins/vis_type_timelion/public/components/timelion_expression_input_helpers.ts index 7c24eaa5902b4..6c3cd8058627a 100644 --- a/src/plugins/vis_type_timelion/public/components/timelion_expression_input_helpers.ts +++ b/src/plugins/vis_type_timelion/public/components/timelion_expression_input_helpers.ts @@ -244,10 +244,9 @@ export function getSuggestion( break; case SUGGESTION_TYPE.ARGUMENT_VALUE: - const param = suggestion.name.split(':'); - - if (param.length === 1 || param[1]) { - insertText = `${param.length === 1 ? insertText : param[1]},`; + const defaultText = (suggestion as TimelionFunctionArgs).insertText; + if (defaultText) { + insertText = `${defaultText},`; } command = { diff --git a/src/plugins/vis_type_timelion/public/helpers/arg_value_suggestions.ts b/src/plugins/vis_type_timelion/public/helpers/arg_value_suggestions.ts index 0a989858706df..d8ec46eba004f 100644 --- a/src/plugins/vis_type_timelion/public/helpers/arg_value_suggestions.ts +++ b/src/plugins/vis_type_timelion/public/helpers/arg_value_suggestions.ts @@ -51,6 +51,7 @@ export function getArgValueSuggestions() { return (await indexPatterns.find(search, size)).map(({ title }) => ({ name: title, + insertText: title, })); }, async metric(partial: string, functionArgs: TimelionExpressionFunction[]) { @@ -81,7 +82,14 @@ export function getArgValueSuggestions() { containsFieldName(valueSplit[1], field) && !indexPatternsUtils.isNestedField(field) ) - .map((field) => ({ name: `${valueSplit[0]}:${field.name}`, help: field.type })); + .map((field) => { + const suggestionValue = field.name.replaceAll(':', '\\:'); + return { + name: `${valueSplit[0]}:${suggestionValue}`, + help: field.type, + insertText: suggestionValue, + }; + }); }, async split(partial: string, functionArgs: TimelionExpressionFunction[]) { const indexPattern = await getIndexPattern(functionArgs); @@ -105,7 +113,7 @@ export function getArgValueSuggestions() { containsFieldName(partial, field) && !indexPatternsUtils.isNestedField(field) ) - .map((field) => ({ name: field.name, help: field.type })); + .map((field) => ({ name: field.name, help: field.type, insertText: field.name })); }, async timefield(partial: string, functionArgs: TimelionExpressionFunction[]) { const indexPattern = await getIndexPattern(functionArgs); @@ -121,7 +129,7 @@ export function getArgValueSuggestions() { containsFieldName(partial, field) && !indexPatternsUtils.isNestedField(field) ) - .map((field) => ({ name: field.name })); + .map((field) => ({ name: field.name, insertText: field.name })); }, }, }; diff --git a/src/plugins/vis_type_timelion/server/series_functions/es/es.test.js b/src/plugins/vis_type_timelion/server/series_functions/es/es.test.js index 566001ce44182..3ace745604660 100644 --- a/src/plugins/vis_type_timelion/server/series_functions/es/es.test.js +++ b/src/plugins/vis_type_timelion/server/series_functions/es/es.test.js @@ -123,13 +123,35 @@ describe('es', () => { const emptyScriptedFields = []; test('adds a metric agg for each metric', () => { - config.metric = ['sum:beer', 'avg:bytes', 'percentiles:bytes']; + config.metric = [ + 'sum:beer', + 'avg:bytes', + 'percentiles:bytes', + 'cardinality:\\:sample', + 'sum:\\:beer', + 'percentiles:\\:\\:bytes:1.2,1.3,2.7', + 'percentiles:\\:bytes\\:123:20.0,50.0,100.0', + 'percentiles:a:2', + ]; agg = createDateAgg(config, tlConfig, emptyScriptedFields); expect(agg.time_buckets.aggs['sum(beer)']).toEqual({ sum: { field: 'beer' } }); expect(agg.time_buckets.aggs['avg(bytes)']).toEqual({ avg: { field: 'bytes' } }); expect(agg.time_buckets.aggs['percentiles(bytes)']).toEqual({ percentiles: { field: 'bytes' }, }); + expect(agg.time_buckets.aggs['cardinality(:sample)']).toEqual({ + cardinality: { field: ':sample' }, + }); + expect(agg.time_buckets.aggs['sum(:beer)']).toEqual({ sum: { field: ':beer' } }); + expect(agg.time_buckets.aggs['percentiles(::bytes)']).toEqual({ + percentiles: { field: '::bytes', percents: [1.2, 1.3, 2.7] }, + }); + expect(agg.time_buckets.aggs['percentiles(:bytes:123)']).toEqual({ + percentiles: { field: ':bytes:123', percents: [20.0, 50.0, 100.0] }, + }); + expect(agg.time_buckets.aggs['percentiles(a)']).toEqual({ + percentiles: { field: 'a', percents: [2] }, + }); }); test('adds a scripted metric agg for each scripted metric', () => { @@ -158,6 +180,13 @@ describe('es', () => { expect(typeof agg.time_buckets.aggs.count.bucket_script).toBe('object'); expect(agg.time_buckets.aggs.count.bucket_script.buckets_path).toEqual('_count'); }); + + test('has a special `count` metric with redundant field which use a script', () => { + config.metric = ['count:beer']; + agg = createDateAgg(config, tlConfig, emptyScriptedFields); + expect(typeof agg.time_buckets.aggs.count.bucket_script).toBe('object'); + expect(agg.time_buckets.aggs.count.bucket_script.buckets_path).toEqual('_count'); + }); }); }); @@ -305,10 +334,10 @@ describe('es', () => { describe('config.split', () => { test('adds terms aggs, in order, under the filters agg', () => { - config.split = ['beer:5', 'wine:10']; + config.split = ['beer:5', 'wine:10', ':lemo:nade::15', ':jui:ce:723::45']; const request = fn(config, tlConfig, emptyScriptedFields); - const aggs = request.params.body.aggs.q.aggs; + let aggs = request.params.body.aggs.q.aggs; expect(aggs.beer.meta.type).toEqual('split'); expect(aggs.beer.terms.field).toEqual('beer'); @@ -317,6 +346,18 @@ describe('es', () => { expect(aggs.beer.aggs.wine.meta.type).toEqual('split'); expect(aggs.beer.aggs.wine.terms.field).toEqual('wine'); expect(aggs.beer.aggs.wine.terms.size).toEqual(10); + + aggs = aggs.beer.aggs.wine.aggs; + expect(aggs).toHaveProperty(':lemo:nade:'); + expect(aggs[':lemo:nade:'].meta.type).toEqual('split'); + expect(aggs[':lemo:nade:'].terms.field).toEqual(':lemo:nade:'); + expect(aggs[':lemo:nade:'].terms.size).toEqual(15); + + aggs = aggs[':lemo:nade:'].aggs; + expect(aggs).toHaveProperty(':jui:ce:723:'); + expect(aggs[':jui:ce:723:'].meta.type).toEqual('split'); + expect(aggs[':jui:ce:723:'].terms.field).toEqual(':jui:ce:723:'); + expect(aggs[':jui:ce:723:'].terms.size).toEqual(45); }); test('adds scripted terms aggs, in order, under the filters agg', () => { diff --git a/src/plugins/vis_type_timelion/server/series_functions/es/lib/build_request.js b/src/plugins/vis_type_timelion/server/series_functions/es/lib/build_request.js index a4aa4f73547e4..a30b197e46067 100644 --- a/src/plugins/vis_type_timelion/server/series_functions/es/lib/build_request.js +++ b/src/plugins/vis_type_timelion/server/series_functions/es/lib/build_request.js @@ -48,17 +48,17 @@ export default function buildRequest(config, tlConfig, scriptedFields, timeout) let aggCursor = aggs.q.aggs; - _.each(config.split, function (clause) { - clause = clause.split(':'); - if (clause[0] && clause[1]) { - const termsAgg = buildAggBody(clause[0], scriptedFields); - termsAgg.size = parseInt(clause[1], 10); - aggCursor[clause[0]] = { + (config.split || []).forEach((clause) => { + const [field, arg] = clause.split(/:(\d+$)/); + if (field && arg) { + const termsAgg = buildAggBody(field, scriptedFields); + termsAgg.size = parseInt(arg, 10); + aggCursor[field] = { meta: { type: 'split' }, terms: termsAgg, aggs: {}, }; - aggCursor = aggCursor[clause[0]].aggs; + aggCursor = aggCursor[field].aggs; } else { throw new Error('`split` requires field:limit'); } diff --git a/src/plugins/vis_type_timelion/server/series_functions/es/lib/create_date_agg.js b/src/plugins/vis_type_timelion/server/series_functions/es/lib/create_date_agg.js index 09ae4d8ef3467..55538fbff4e79 100644 --- a/src/plugins/vis_type_timelion/server/series_functions/es/lib/create_date_agg.js +++ b/src/plugins/vis_type_timelion/server/series_functions/es/lib/create_date_agg.js @@ -6,9 +6,9 @@ * Side Public License, v 1. */ -import _ from 'lodash'; import { buildAggBody } from './agg_body'; -import { search } from '../../../../../../plugins/data/server'; +import { search, METRIC_TYPES } from '../../../../../data/server'; + const { dateHistogramInterval } = search.aggs; export default function createDateAgg(config, tlConfig, scriptedFields) { @@ -29,29 +29,39 @@ export default function createDateAgg(config, tlConfig, scriptedFields) { }; dateAgg.time_buckets.aggs = {}; - _.each(config.metric, function (metric) { - metric = metric.split(':'); - if (metric[0] === 'count') { + (config.metric || []).forEach((metric) => { + const metricBody = {}; + const [metricName, metricArgs] = metric.split(/:(.+)/); + if (metricName === METRIC_TYPES.COUNT) { // This is pretty lame, but its how the "doc_count" metric has to be implemented at the moment // It simplifies the aggregation tree walking code considerably - dateAgg.time_buckets.aggs[metric] = { + metricBody[metricName] = { bucket_script: { buckets_path: '_count', script: { source: '_value', lang: 'expression' }, }, }; - } else if (metric[0] && metric[1]) { - const metricName = metric[0] + '(' + metric[1] + ')'; - dateAgg.time_buckets.aggs[metricName] = {}; - dateAgg.time_buckets.aggs[metricName][metric[0]] = buildAggBody(metric[1], scriptedFields); - if (metric[0] === 'percentiles' && metric[2]) { - let percentList = metric[2].split(','); + } else if (metricName && metricArgs) { + const splittedArgs = metricArgs.split(/(.*[^\\]):/).filter(Boolean); + const field = splittedArgs[0].replace(/\\:/g, ':'); + const percentArgs = splittedArgs[1]; + const metricKey = metricName + '(' + field + ')'; + + metricBody[metricKey] = { [metricName]: buildAggBody(field, scriptedFields) }; + + if (metricName === METRIC_TYPES.PERCENTILES && percentArgs) { + let percentList = percentArgs.split(','); percentList = percentList.map((x) => parseFloat(x)); - dateAgg.time_buckets.aggs[metricName][metric[0]].percents = percentList; + metricBody[metricKey][metricName].percents = percentList; } } else { throw new Error('`metric` requires metric:field or simply count'); } + + dateAgg.time_buckets.aggs = { + ...dateAgg.time_buckets.aggs, + ...metricBody, + }; }); return dateAgg; From 0cec3439cba6d38b1b9c5c996d75a4dd53b71bc6 Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Tue, 20 Apr 2021 14:06:57 +0300 Subject: [PATCH 48/56] [Discover] Adds an Options menu for switching between the two table modes (#97120) * [Discover] Adds an Options menu for enabling the Legacy table * Add unit test * Layout and copy tweaks * Update UI and fix unit test * Change description text * Revert legacy text mode functionality Co-authored-by: Ryan Keairns Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../components/discover_topnav.test.tsx | 3 + .../top_nav/get_top_nav_links.test.ts | 10 ++ .../components/top_nav/get_top_nav_links.ts | 18 ++++ .../top_nav/open_options_popover.scss | 5 + .../top_nav/open_options_popover.test.tsx | 49 ++++++++++ .../top_nav/open_options_popover.tsx | 98 +++++++++++++++++++ 6 files changed, 183 insertions(+) create mode 100644 src/plugins/discover/public/application/components/top_nav/open_options_popover.scss create mode 100644 src/plugins/discover/public/application/components/top_nav/open_options_popover.test.tsx create mode 100644 src/plugins/discover/public/application/components/top_nav/open_options_popover.tsx diff --git a/src/plugins/discover/public/application/components/discover_topnav.test.tsx b/src/plugins/discover/public/application/components/discover_topnav.test.tsx index 891dc63c92c7c..d30e5bda1abe7 100644 --- a/src/plugins/discover/public/application/components/discover_topnav.test.tsx +++ b/src/plugins/discover/public/application/components/discover_topnav.test.tsx @@ -33,6 +33,9 @@ function getProps(): DiscoverTopNavProps { discover: { save: true, }, + advancedSettings: { + save: true, + }, }, uiSettings: mockUiSettings, } as unknown) as DiscoverServices; diff --git a/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.test.ts b/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.test.ts index f6e9e70b337ba..2c50ce61c8afb 100644 --- a/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.test.ts +++ b/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.test.ts @@ -18,6 +18,9 @@ const services = ({ discover: { save: true, }, + advancedSettings: { + save: true, + }, }, } as unknown) as DiscoverServices; @@ -36,6 +39,13 @@ test('getTopNavLinks result', () => { }); expect(topNavLinks).toMatchInlineSnapshot(` Array [ + Object { + "description": "Options", + "id": "options", + "label": "Options", + "run": [Function], + "testId": "discoverOptionsButton", + }, Object { "description": "New Search", "id": "new", diff --git a/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.ts b/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.ts index 635684177e1e3..9a12cb51eac0c 100644 --- a/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.ts +++ b/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.ts @@ -15,6 +15,7 @@ import { SavedSearch } from '../../../saved_searches'; import { onSaveSearch } from './on_save_search'; import { GetStateReturn } from '../../angular/discover_state'; import { IndexPattern, ISearchSource } from '../../../kibana_services'; +import { openOptionsPopover } from './open_options_popover'; /** * Helper function to build the top nav links @@ -38,6 +39,22 @@ export const getTopNavLinks = ({ onOpenInspector: () => void; searchSource: ISearchSource; }) => { + const options = { + id: 'options', + label: i18n.translate('discover.localMenu.localMenu.optionsTitle', { + defaultMessage: 'Options', + }), + description: i18n.translate('discover.localMenu.optionsDescription', { + defaultMessage: 'Options', + }), + run: (anchorElement: HTMLElement) => + openOptionsPopover({ + I18nContext: services.core.i18n.Context, + anchorElement, + }), + testId: 'discoverOptionsButton', + }; + const newSearch = { id: 'new', label: i18n.translate('discover.localMenu.localMenu.newSearchTitle', { @@ -128,6 +145,7 @@ export const getTopNavLinks = ({ }; return [ + ...(services.capabilities.advancedSettings.save ? [options] : []), newSearch, ...(services.capabilities.discover.save ? [saveSearch] : []), openSearch, diff --git a/src/plugins/discover/public/application/components/top_nav/open_options_popover.scss b/src/plugins/discover/public/application/components/top_nav/open_options_popover.scss new file mode 100644 index 0000000000000..f68b2bfe74a9d --- /dev/null +++ b/src/plugins/discover/public/application/components/top_nav/open_options_popover.scss @@ -0,0 +1,5 @@ +$dscOptionsPopoverWidth: $euiSizeL * 12; + +.dscOptionsPopover { + width: $dscOptionsPopoverWidth; +} \ No newline at end of file diff --git a/src/plugins/discover/public/application/components/top_nav/open_options_popover.test.tsx b/src/plugins/discover/public/application/components/top_nav/open_options_popover.test.tsx new file mode 100644 index 0000000000000..406d2eb8eac4b --- /dev/null +++ b/src/plugins/discover/public/application/components/top_nav/open_options_popover.test.tsx @@ -0,0 +1,49 @@ +/* + * 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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { mountWithIntl } from '@kbn/test/jest'; +import { findTestSubject } from '@elastic/eui/lib/test'; +import { getServices } from '../../../kibana_services'; + +jest.mock('../../../kibana_services', () => { + const mockUiSettings = new Map(); + return { + getServices: () => ({ + core: { + uiSettings: { + get: (key: string) => { + return mockUiSettings.get(key); + }, + set: (key: string, value: boolean) => { + mockUiSettings.set(key, value); + }, + }, + }, + addBasePath: (path: string) => path, + }), + }; +}); + +import { OptionsPopover } from './open_options_popover'; + +test('should display the correct text if datagrid is selected', () => { + const element = document.createElement('div'); + const component = mountWithIntl(); + expect(findTestSubject(component, 'docTableMode').text()).toBe('Data grid'); +}); + +test('should display the correct text if legacy table is selected', () => { + const { + core: { uiSettings }, + } = getServices(); + uiSettings.set('doc_table:legacy', true); + const element = document.createElement('div'); + const component = mountWithIntl(); + expect(findTestSubject(component, 'docTableMode').text()).toBe('Legacy table'); +}); diff --git a/src/plugins/discover/public/application/components/top_nav/open_options_popover.tsx b/src/plugins/discover/public/application/components/top_nav/open_options_popover.tsx new file mode 100644 index 0000000000000..6eb7fccd3aaa8 --- /dev/null +++ b/src/plugins/discover/public/application/components/top_nav/open_options_popover.tsx @@ -0,0 +1,98 @@ +/* + * 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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import ReactDOM from 'react-dom'; +import { I18nStart } from 'kibana/public'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiSpacer, EuiButton, EuiText, EuiWrappingPopover, EuiCode } from '@elastic/eui'; +import { getServices } from '../../../kibana_services'; +import './open_options_popover.scss'; + +let isOpen = false; + +interface OptionsPopoverProps { + onClose: () => void; + anchorElement: HTMLElement; +} + +export function OptionsPopover(props: OptionsPopoverProps) { + const { + core: { uiSettings }, + addBasePath, + } = getServices(); + const isLegacy = uiSettings.get('doc_table:legacy'); + + const mode = isLegacy + ? i18n.translate('discover.openOptionsPopover.legacyTableText', { + defaultMessage: 'Legacy table', + }) + : i18n.translate('discover.openOptionsPopover.dataGridText', { + defaultMessage: 'Data grid', + }); + + return ( + +
    + +

    + Current view mode:{' '} + {mode} +

    +
    + + + + + + + {i18n.translate('discover.openOptionsPopover.goToAdvancedSettings', { + defaultMessage: 'Go to Advanced Settings', + })} + +
    +
    + ); +} + +export function openOptionsPopover({ + I18nContext, + anchorElement, +}: { + I18nContext: I18nStart['Context']; + anchorElement: HTMLElement; +}) { + if (isOpen) { + return; + } + + isOpen = true; + const container = document.createElement('div'); + const onClose = () => { + ReactDOM.unmountComponentAtNode(container); + document.body.removeChild(container); + isOpen = false; + }; + + document.body.appendChild(container); + + const element = ( + + + + ); + ReactDOM.render(element, container); +} From 37ea80d6fa3ce251ebed64c3dc2600c7a1004f17 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Tue, 20 Apr 2021 14:49:09 +0300 Subject: [PATCH 49/56] Fix date histogram fails on rollup index (#97369) Closes: #97125 Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../buckets/lib/time_buckets/time_buckets.test.ts | 12 +++++++++++- .../aggs/buckets/lib/time_buckets/time_buckets.ts | 7 ++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts index e694591c7b33d..6fbaddb09b226 100644 --- a/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts @@ -109,7 +109,7 @@ describe('TimeBuckets', () => { } }); - test('setInterval/getInterval - intreval is a "auto"', () => { + test('setInterval/getInterval - interval is a "auto"', () => { const timeBuckets = new TimeBuckets(timeBucketConfig); timeBuckets.setInterval(autoInterval); const interval = timeBuckets.getInterval(); @@ -120,6 +120,16 @@ describe('TimeBuckets', () => { expect(interval.expression).toEqual('0ms'); }); + test('setInterval/getInterval - interval is a "auto" (useNormalizedEsInterval is false)', () => { + const timeBuckets = new TimeBuckets(timeBucketConfig); + timeBuckets.setInterval(autoInterval); + const interval = timeBuckets.getInterval(false); + + expect(interval.esValue).toEqual(0); + expect(interval.esUnit).toEqual('ms'); + expect(interval.expression).toEqual('0ms'); + }); + test('getScaledDateFormat', () => { const timeBuckets = new TimeBuckets(timeBucketConfig); timeBuckets.setInterval('20m'); diff --git a/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.ts b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.ts index ac58cea60a6ef..12c6d39ad905a 100644 --- a/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.ts +++ b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.ts @@ -267,9 +267,10 @@ export class TimeBuckets { originalUnit = splitStringInterval(this._originalInterval!)?.unit; } - const esInterval = useNormalizedEsInterval - ? convertDurationToNormalizedEsInterval(interval, originalUnit) - : convertIntervalToEsInterval(String(this._originalInterval)); + const esInterval = + useNormalizedEsInterval || !this._originalInterval + ? convertDurationToNormalizedEsInterval(interval, originalUnit) + : convertIntervalToEsInterval(this._originalInterval); const prettyUnits = moment.normalizeUnits(esInterval.unit); From f8a3ea64e7888186056ea218ccd2bdda8387d29a Mon Sep 17 00:00:00 2001 From: Angela Chuang <6295984+angorayc@users.noreply.github.com> Date: Tue, 20 Apr 2021 12:51:21 +0100 Subject: [PATCH 50/56] unskip tls integration test (#97597) --- x-pack/test/api_integration/apis/security_solution/tls.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/test/api_integration/apis/security_solution/tls.ts b/x-pack/test/api_integration/apis/security_solution/tls.ts index a8e0517e6ccdb..eadf7d2aac7ae 100644 --- a/x-pack/test/api_integration/apis/security_solution/tls.ts +++ b/x-pack/test/api_integration/apis/security_solution/tls.ts @@ -84,8 +84,7 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const supertest = getService('supertest'); - // Failing: See https://github.com/elastic/kibana/issues/91360 - describe.skip('Tls Test with Packetbeat', () => { + describe('Tls Test with Packetbeat', () => { describe('Tls Test', () => { before(() => esArchiver.load('packetbeat/tls')); after(() => esArchiver.unload('packetbeat/tls')); From e5fe77b3397306c3a91b49ab4fbd37ffcffcf899 Mon Sep 17 00:00:00 2001 From: Dmitry Shevchenko Date: Tue, 20 Apr 2021 13:55:41 +0200 Subject: [PATCH 51/56] Disable duplicated rules by default (#96760) --- .../indicator_match_rule.spec.ts | 19 ++++++- .../security_solution/cypress/objects/rule.ts | 2 + .../cypress/screens/alerts_detection_rules.ts | 2 + .../cypress/screens/edit_rule.ts | 1 + .../cypress/tasks/alerts_detection_rules.ts | 23 +++++++- .../cypress/tasks/edit_rule.ts | 11 +++- .../rules/all_rules_tables/index.test.tsx | 6 +- .../rules/all_rules_tables/index.tsx | 35 +++++------- .../rule_actions_overflow/index.test.tsx | 30 ++++++++++ .../rules/rule_actions_overflow/index.tsx | 11 +++- .../detection_engine/rules/api.test.ts | 9 +++ .../containers/detection_engine/rules/api.ts | 2 +- .../rules_table/rules_table_reducer.test.ts | 2 +- .../rules/rules_table/rules_table_reducer.ts | 2 +- .../rules/rules_table/use_rules_table.ts | 2 +- .../detection_engine/rules/all/actions.tsx | 6 +- .../rules/all/batch_actions.tsx | 1 + .../rules/all/columns.test.tsx | 56 +++++++------------ .../detection_engine/rules/all/columns.tsx | 12 +++- .../rules/all/exceptions/exceptions_table.tsx | 9 +-- .../rules/all/rules_tables.tsx | 2 +- .../detection_engine/rules/edit/index.tsx | 1 + 22 files changed, 159 insertions(+), 85 deletions(-) diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts index 129d592edd264..2a36a3d707aa8 100644 --- a/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts @@ -65,11 +65,14 @@ import { openJsonView, scrollJsonViewToBottom } from '../../tasks/alerts_details import { changeRowsPerPageTo300, duplicateFirstRule, + duplicateSelectedRules, duplicateRuleFromMenu, filterByCustomRules, goToCreateNewRule, goToRuleDetails, waitForRulesTableToBeLoaded, + selectNumberOfRules, + checkDuplicatedRule, } from '../../tasks/alerts_detection_rules'; import { createCustomIndicatorRule } from '../../tasks/api_calls/rules'; import { cleanKibana, reload } from '../../tasks/common'; @@ -99,7 +102,7 @@ import { waitForAlertsToPopulate, waitForTheRuleToBeExecuted, } from '../../tasks/create_new_rule'; -import { waitForKibana } from '../../tasks/edit_rule'; +import { goBackToRuleDetails, waitForKibana } from '../../tasks/edit_rule'; import { esArchiverLoad, esArchiverUnload } from '../../tasks/es_archiver'; import { loginAndWaitForPageWithoutDateRange } from '../../tasks/login'; import { addsFieldsToTimeline, goBackToAllRulesTable } from '../../tasks/rule_details'; @@ -564,16 +567,26 @@ describe('indicator match', () => { it('Allows the rule to be duplicated from the table', () => { waitForKibana(); duplicateFirstRule(); - cy.contains(RULE_NAME, `${newThreatIndicatorRule.name} [Duplicate]`); + goBackToRuleDetails(); + goBackToAllRulesTable(); + checkDuplicatedRule(); + }); + + it("Allows the rule to be duplicated from the table's bulk actions", () => { + waitForKibana(); + selectNumberOfRules(1); + duplicateSelectedRules(); + checkDuplicatedRule(); }); it('Allows the rule to be duplicated from the edit screen', () => { waitForKibana(); goToRuleDetails(); duplicateRuleFromMenu(); + goBackToRuleDetails(); goBackToAllRulesTable(); reload(); - cy.contains(RULE_NAME, `${newThreatIndicatorRule.name} [Duplicate]`); + checkDuplicatedRule(); }); }); }); diff --git a/x-pack/plugins/security_solution/cypress/objects/rule.ts b/x-pack/plugins/security_solution/cypress/objects/rule.ts index 099cd39ba2d7b..957046cae003a 100644 --- a/x-pack/plugins/security_solution/cypress/objects/rule.ts +++ b/x-pack/plugins/security_solution/cypress/objects/rule.ts @@ -320,6 +320,8 @@ export const newThreatIndicatorRule: ThreatIndicatorRule = { maxSignals: 100, }; +export const duplicatedRuleName = `${newThreatIndicatorRule.name} [Duplicate]`; + export const severitiesOverride = ['Low', 'Medium', 'High', 'Critical']; export const editedRule = { diff --git a/x-pack/plugins/security_solution/cypress/screens/alerts_detection_rules.ts b/x-pack/plugins/security_solution/cypress/screens/alerts_detection_rules.ts index c74284eee15e4..70dde344c88b6 100644 --- a/x-pack/plugins/security_solution/cypress/screens/alerts_detection_rules.ts +++ b/x-pack/plugins/security_solution/cypress/screens/alerts_detection_rules.ts @@ -27,6 +27,8 @@ export const REFRESH_BTN = '[data-test-subj="refreshRulesAction"] button'; export const DELETE_RULE_BULK_BTN = '[data-test-subj="deleteRuleBulk"]'; +export const DUPLICATE_RULE_BULK_BTN = '[data-test-subj="duplicateRuleBulk"]'; + export const ELASTIC_RULES_BTN = '[data-test-subj="showElasticRulesFilterButton"]'; export const EXPORT_ACTION_BTN = '[data-test-subj="exportRuleAction"]'; diff --git a/x-pack/plugins/security_solution/cypress/screens/edit_rule.ts b/x-pack/plugins/security_solution/cypress/screens/edit_rule.ts index a6cdf0c75535f..8d8520e109b15 100644 --- a/x-pack/plugins/security_solution/cypress/screens/edit_rule.ts +++ b/x-pack/plugins/security_solution/cypress/screens/edit_rule.ts @@ -6,5 +6,6 @@ */ export const EDIT_SUBMIT_BUTTON = '[data-test-subj="ruleEditSubmitButton"]'; +export const BACK_TO_RULE_DETAILS = '[data-test-subj="ruleEditBackToRuleDetails"]'; export const KIBANA_LOADING_INDICATOR = '[data-test-subj="globalLoadingIndicator"]'; export const KIBANA_LOADING_COMPLETE_INDICATOR = '[data-test-subj="globalLoadingIndicator-hidden"]'; diff --git a/x-pack/plugins/security_solution/cypress/tasks/alerts_detection_rules.ts b/x-pack/plugins/security_solution/cypress/tasks/alerts_detection_rules.ts index d66b839267ea0..cc14c54a4d84e 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/alerts_detection_rules.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/alerts_detection_rules.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { duplicatedRuleName } from '../objects/rule'; import { BULK_ACTIONS_BTN, COLLAPSED_ACTION_BTN, @@ -33,6 +34,8 @@ import { pageSelector, DUPLICATE_RULE_ACTION_BTN, DUPLICATE_RULE_MENU_PANEL_BTN, + DUPLICATE_RULE_BULK_BTN, + RULES_ROW, } from '../screens/alerts_detection_rules'; import { ALL_ACTIONS, DELETE_RULE } from '../screens/rule_details'; @@ -54,6 +57,11 @@ export const duplicateFirstRule = () => { cy.get(DUPLICATE_RULE_ACTION_BTN).click(); }; +export const duplicateSelectedRules = () => { + cy.get(BULK_ACTIONS_BTN).click({ force: true }); + cy.get(DUPLICATE_RULE_BULK_BTN).click(); +}; + /** * Duplicates the rule from the menu and does additional * pipes and checking that the elements are present on the @@ -69,9 +77,18 @@ export const duplicateRuleFromMenu = () => { }) .should(($el) => expect($el).to.be.visible); // Because of a fade effect and fast clicking this can produce more than one click - cy.get(DUPLICATE_RULE_MENU_PANEL_BTN) - .pipe(($el) => $el.trigger('click')) - .should('not.be.visible'); + cy.get(DUPLICATE_RULE_MENU_PANEL_BTN).pipe(($el) => $el.trigger('click')); +}; + +/** + * Check that the duplicated rule is on the table + * and it is deactivated (default) + */ +export const checkDuplicatedRule = () => { + cy.contains(RULE_NAME, duplicatedRuleName) + .parents(RULES_ROW) + .find(RULE_SWITCH) + .should('have.attr', 'aria-checked', 'false'); }; export const deleteFirstRule = () => { diff --git a/x-pack/plugins/security_solution/cypress/tasks/edit_rule.ts b/x-pack/plugins/security_solution/cypress/tasks/edit_rule.ts index e9691f2d922ae..2af563973b3d3 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/edit_rule.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/edit_rule.ts @@ -5,13 +5,22 @@ * 2.0. */ -import { EDIT_SUBMIT_BUTTON, KIBANA_LOADING_COMPLETE_INDICATOR } from '../screens/edit_rule'; +import { + BACK_TO_RULE_DETAILS, + EDIT_SUBMIT_BUTTON, + KIBANA_LOADING_COMPLETE_INDICATOR, +} from '../screens/edit_rule'; export const saveEditedRule = () => { cy.get(EDIT_SUBMIT_BUTTON).should('exist').click({ force: true }); cy.get(EDIT_SUBMIT_BUTTON).should('not.exist'); }; +export const goBackToRuleDetails = () => { + cy.get(BACK_TO_RULE_DETAILS).should('exist').click(); + cy.get(BACK_TO_RULE_DETAILS).should('not.exist'); +}; + export const waitForKibana = () => { cy.get(KIBANA_LOADING_COMPLETE_INDICATOR).should('exist'); }; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/all_rules_tables/index.test.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/all_rules_tables/index.test.tsx index 4c303bb7dd093..3400a960bbc60 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/all_rules_tables/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/all_rules_tables/index.test.tsx @@ -15,7 +15,7 @@ import { AllRulesTabs } from '../../../pages/detection_engine/rules/all'; describe('AllRulesTables', () => { it('renders correctly', () => { const Component = () => { - const ref = useRef(); + const ref = useRef(null); return ( { it('renders rules tab when "selectedTab" is "rules"', () => { const Component = () => { - const ref = useRef(); + const ref = useRef(null); return ( { it('renders monitoring tab when "selectedTab" is "monitoring"', () => { const Component = () => { - const ref = useRef(); + const ref = useRef(null); return ( void; - tableRef?: React.MutableRefObject; + tableRef?: React.MutableRefObject; selectedTab: AllRulesTabs; } +const emptyPrompt = ( + {i18n.NO_RULES}

    @1jJCWNs4p*YMQ|Vo;s(Z$9 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≤LKxg81Dx>^yv>kM1DFUvEq)CkUW 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�q@ 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

} titleSize="xs" body={i18n.NO_RULES_BODY} /> +); + export const AllRulesTablesComponent: React.FC = ({ euiBasicTableSelectionProps, hasNoPermissions, @@ -68,16 +66,10 @@ export const AllRulesTablesComponent: React.FC = ({ tableRef, selectedTab, }) => { - const emptyPrompt = useMemo(() => { - return ( - {i18n.NO_RULES}

} titleSize="xs" body={i18n.NO_RULES_BODY} /> - ); - }, []); - return ( <> {selectedTab === AllRulesTabs.rules && ( - = ({ /> )} {selectedTab === AllRulesTabs.monitoring && ( - = ({ noItemsMessage={emptyPrompt} onChange={tableOnChangeCallback} pagination={pagination} - sorting={sorting} /> )} diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.test.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.test.tsx index c354b7081c72c..53f478da28055 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.test.tsx @@ -11,6 +11,7 @@ import React from 'react'; import { deleteRulesAction, duplicateRulesAction, + editRuleAction, } from '../../../pages/detection_engine/rules/all/actions'; import { RuleActionsOverflow } from './index'; import { mockRule } from '../../../pages/detection_engine/rules/all/__mocks__/mock'; @@ -24,9 +25,17 @@ jest.mock('react-router-dom', () => ({ jest.mock('../../../pages/detection_engine/rules/all/actions', () => ({ deleteRulesAction: jest.fn(), duplicateRulesAction: jest.fn(), + editRuleAction: jest.fn(), })); +const duplicateRulesActionMock = duplicateRulesAction as jest.Mock; +const flushPromises = () => new Promise(setImmediate); + describe('RuleActionsOverflow', () => { + afterEach(() => { + jest.resetAllMocks(); + }); + describe('snapshots', () => { test('renders correctly against snapshot', () => { const wrapper = shallow( @@ -208,6 +217,27 @@ describe('RuleActionsOverflow', () => { }); }); + test('it calls editRuleAction after the rule is duplicated', async () => { + const rule = mockRule('id'); + const ruleDuplicate = mockRule('newRule'); + duplicateRulesActionMock.mockImplementation(() => Promise.resolve([ruleDuplicate])); + const wrapper = mount( + + ); + wrapper.find('[data-test-subj="rules-details-popover-button-icon"] button').simulate('click'); + wrapper.update(); + wrapper.find('[data-test-subj="rules-details-duplicate-rule"] button').simulate('click'); + wrapper.update(); + await flushPromises(); + + expect(duplicateRulesAction).toHaveBeenCalled(); + expect(editRuleAction).toHaveBeenCalledWith(ruleDuplicate, expect.anything()); + }); + describe('rules details export rule', () => { test('it does not open the popover when rules-details-popover-button-icon is clicked and the user does not have permission', () => { const rule = mockRule('id'); diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx index d1077b282ec5e..0482e1997c9d1 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx @@ -24,6 +24,7 @@ import { displaySuccessToast, useStateToaster } from '../../../../common/compone import { deleteRulesAction, duplicateRulesAction, + editRuleAction, } from '../../../pages/detection_engine/rules/all/actions'; import { GenericDownloader } from '../../../../common/components/generic_downloader'; import { getRulesUrl } from '../../../../common/components/link_to/redirect_to_detection_engine'; @@ -74,7 +75,15 @@ const RuleActionsOverflowComponent = ({ data-test-subj="rules-details-duplicate-rule" onClick={async () => { setIsPopoverOpen(false); - await duplicateRulesAction([rule], [rule.id], noop, dispatchToaster); + const createdRules = await duplicateRulesAction( + [rule], + [rule.id], + noop, + dispatchToaster + ); + if (createdRules?.length) { + editRuleAction(createdRules[0], history); + } }} > { }); }); + test('check duplicated rules are disabled by default', async () => { + await duplicateRules({ rules: rulesMock.data.map((rule) => ({ ...rule, enabled: true })) }); + expect(fetchMock).toHaveBeenCalledTimes(1); + const [path, options] = fetchMock.mock.calls[0]; + expect(path).toBe('/api/detection_engine/rules/_bulk_create'); + const rules = JSON.parse(options.body); + expect(rules).toMatchObject([{ enabled: false }, { enabled: false }]); + }); + test('happy path', async () => { const ruleResp = await duplicateRules({ rules: rulesMock.data }); expect(ruleResp).toEqual(rulesMock); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts index edcab974c9761..d4c4e10813172 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts @@ -231,7 +231,7 @@ export const duplicateRules = async ({ rules }: DuplicateRulesProps): Promise { jest .spyOn(global.Date, 'now') .mockImplementationOnce(() => new Date('2020-10-31T11:01:58.135Z').valueOf()); - reducer = createRulesTableReducer({ current: undefined }); + reducer = createRulesTableReducer({ current: null }); }); afterEach(() => { diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/rules_table/rules_table_reducer.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/rules_table/rules_table_reducer.ts index 92f21f6b508aa..01a87fef2b723 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/rules_table/rules_table_reducer.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/rules_table/rules_table_reducer.ts @@ -50,7 +50,7 @@ export type RulesTableAction = | { type: 'failure' }; export const createRulesTableReducer = ( - tableRef: React.MutableRefObject | undefined> + tableRef: React.MutableRefObject | null> ) => { const rulesTableReducer = (state: RulesTableState, action: RulesTableAction): RulesTableState => { switch (action.type) { diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/rules_table/use_rules_table.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/rules_table/use_rules_table.ts index e36474a2fdddd..7fcefe02cfe33 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/rules_table/use_rules_table.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/rules_table/use_rules_table.ts @@ -43,7 +43,7 @@ const initialStateDefaults: RulesTableState = { }; export interface UseRulesTableParams { - tableRef: React.MutableRefObject | undefined>; + tableRef: React.MutableRefObject | null>; initialStateOverride?: Partial; } diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/actions.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/actions.tsx index 6cc75a3fda03c..de33d414398a8 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/actions.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/actions.tsx @@ -40,7 +40,7 @@ export const duplicateRulesAction = async ( ruleIds: string[], dispatch: React.Dispatch, dispatchToaster: Dispatch -) => { +): Promise => { try { dispatch({ type: 'loadingRuleIds', ids: ruleIds, actionType: 'duplicate' }); const response = await duplicateRules({ @@ -48,7 +48,7 @@ export const duplicateRulesAction = async ( // and the two types conflict with each other. rules: rules.map((rule) => transformOutput(rule as CreateRulesSchema) as Rule), }); - const { errors } = bucketRulesResponse(response); + const { errors, rules: createdRules } = bucketRulesResponse(response); if (errors.length > 0) { displayErrorToast( i18n.DUPLICATE_RULE_ERROR, @@ -59,6 +59,8 @@ export const duplicateRulesAction = async ( displaySuccessToast(i18n.SUCCESSFULLY_DUPLICATED_RULES(ruleIds.length), dispatchToaster); } dispatch({ type: 'loadingRuleIds', ids: [], actionType: null }); + + return createdRules; } catch (error) { dispatch({ type: 'loadingRuleIds', ids: [], actionType: null }); errorToToaster({ title: i18n.DUPLICATE_RULE_ERROR, error, dispatchToaster }); diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/batch_actions.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/batch_actions.tsx index d3e055a695d61..648d653d6a3c8 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/batch_actions.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/batch_actions.tsx @@ -132,6 +132,7 @@ export const getBatchItems = ({ { diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/columns.test.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/columns.test.tsx index d39009cd9631c..8eb80bd0d5135 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/columns.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/columns.test.tsx @@ -5,50 +5,41 @@ * 2.0. */ +import { scopedHistoryMock } from 'src/core/public/mocks'; import uuid from 'uuid'; -import { createMemoryHistory } from 'history'; - -const history = createMemoryHistory(); - import '../../../../../common/mock/match_media'; -import { mockRule } from './__mocks__/mock'; +import { deleteRulesAction, duplicateRulesAction, editRuleAction } from './actions'; import { getActions } from './columns'; +import { mockRule } from './__mocks__/mock'; jest.mock('./actions', () => ({ duplicateRulesAction: jest.fn(), deleteRulesAction: jest.fn(), + editRuleAction: jest.fn(), })); -import { duplicateRulesAction, deleteRulesAction } from './actions'; +const history = scopedHistoryMock.create(); +const duplicateRulesActionMock = duplicateRulesAction as jest.Mock; +const deleteRulesActionMock = deleteRulesAction as jest.Mock; +const editRuleActionMock = editRuleAction as jest.Mock; describe('AllRulesTable Columns', () => { describe('getActions', () => { const rule = mockRule(uuid.v4()); - let results: string[] = []; const dispatch = jest.fn(); const dispatchToaster = jest.fn(); const reFetchRules = jest.fn(); const refetchPrePackagedRulesStatus = jest.fn(); beforeEach(() => { - results = []; - - reFetchRules.mockImplementation(() => { - results.push('reFetchRules'); - Promise.resolve(); - }); + duplicateRulesActionMock.mockClear(); + deleteRulesActionMock.mockClear(); + reFetchRules.mockClear(); }); - test('duplicate rule onClick should call refetch after the rule is duplicated', async () => { - (duplicateRulesAction as jest.Mock).mockImplementation( - () => - new Promise((resolve) => - setTimeout(() => { - results.push('duplicateRulesAction'); - resolve(); - }, 500) - ) - ); + test('duplicate rule onClick should call rule edit after the rule is duplicated', async () => { + const ruleDuplicate = mockRule('newRule'); + duplicateRulesActionMock.mockImplementation(() => Promise.resolve([ruleDuplicate])); const duplicateRulesActionObject = getActions( dispatch, @@ -59,20 +50,11 @@ describe('AllRulesTable Columns', () => { true )[1]; await duplicateRulesActionObject.onClick(rule); - expect(results).toEqual(['duplicateRulesAction', 'reFetchRules']); + expect(duplicateRulesActionMock).toHaveBeenCalled(); + expect(editRuleActionMock).toHaveBeenCalledWith(ruleDuplicate, history); }); test('delete rule onClick should call refetch after the rule is deleted', async () => { - (deleteRulesAction as jest.Mock).mockImplementation( - () => - new Promise((resolve) => - setTimeout(() => { - results.push('deleteRulesAction'); - resolve(); - }, 500) - ) - ); - const deleteRulesActionObject = getActions( dispatch, dispatchToaster, @@ -82,7 +64,11 @@ describe('AllRulesTable Columns', () => { true )[3]; await deleteRulesActionObject.onClick(rule); - expect(results).toEqual(['deleteRulesAction', 'reFetchRules']); + expect(deleteRulesActionMock).toHaveBeenCalledTimes(1); + expect(reFetchRules).toHaveBeenCalledTimes(1); + expect(deleteRulesActionMock.mock.invocationCallOrder[0]).toBeLessThan( + reFetchRules.mock.invocationCallOrder[0] + ); }); }); }); diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/columns.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/columns.tsx index bb5dd590a8ea2..9ecfdc42d0792 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/columns.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/columns.tsx @@ -80,9 +80,15 @@ export const getActions = ( ), enabled: (rowItem: Rule) => canEditRuleWithActions(rowItem, actionsPrivileges), onClick: async (rowItem: Rule) => { - await duplicateRulesAction([rowItem], [rowItem.id], dispatch, dispatchToaster); - await reFetchRules(); - await refetchPrePackagedRulesStatus(); + const createdRules = await duplicateRulesAction( + [rowItem], + [rowItem.id], + dispatch, + dispatchToaster + ); + if (createdRules?.length) { + editRuleAction(createdRules[0], history); + } }, }, { diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/exceptions_table.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/exceptions_table.tsx index d5acf0e1de3cf..5cfa5ecd225ec 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/exceptions_table.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/exceptions_table.tsx @@ -13,7 +13,6 @@ import { EuiProgress, EuiSearchBarProps, } from '@elastic/eui'; -import styled from 'styled-components'; import { History } from 'history'; import { AutoDownload } from '../../../../../../common/components/auto_download/auto_download'; @@ -34,10 +33,6 @@ import { patchRule } from '../../../../../containers/detection_engine/rules/api' import { ExceptionsSearchBar } from './exceptions_search_bar'; import { getSearchFilters } from '../helpers'; -// Known lost battle with Eui :( -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const MyEuiBasicTable = styled(EuiBasicTable as any)`` as any; - export type Func = () => Promise; interface ExceptionListsTableProps { @@ -317,7 +312,7 @@ export const ExceptionListsTable = React.memo( () => ({ pageIndex: pagination.page - 1, pageSize: pagination.perPage, - totalItemCount: pagination.total, + totalItemCount: pagination.total || 0, pageSizeOptions: [5, 10, 20, 50, 100, 200, 300], }), [pagination] @@ -368,7 +363,7 @@ export const ExceptionListsTable = React.memo( numberSelectedItems={0} onRefresh={handleRefresh} /> - ( }, } = useKibana(); - const tableRef = useRef(); + const tableRef = useRef(null); const [defaultAutoRefreshSetting] = useUiSetting$<{ on: boolean; diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/edit/index.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/edit/index.tsx index da5cf720d5315..355aa2e4620b8 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/edit/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/edit/index.tsx @@ -343,6 +343,7 @@ const EditRulePageComponent: FC = () => { href: getRuleDetailsUrl(ruleId ?? ''), text: `${i18n.BACK_TO} ${rule?.name ?? ''}`, pageId: SecurityPageName.detections, + dataTestSubj: 'ruleEditBackToRuleDetails', }} isLoading={isLoading} title={i18n.PAGE_TITLE} From f72a0a6c7ab7eb4d3fd1471cef2c200e78214712 Mon Sep 17 00:00:00 2001 From: Jean-Louis Leysens Date: Tue, 20 Apr 2021 13:58:15 +0200 Subject: [PATCH 52/56] added aria-label to EuiIconTip (#97424) --- .../phases/hot_phase/components/max_index_size_field.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx index 78f3c74c9cb82..195acf35c1357 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx @@ -40,7 +40,13 @@ export const MaxIndexSizeField: FunctionComponent = () => { componentProps={{ euiFieldProps: { 'data-test-subj': 'hot-selectedMaxSizeStored', - prepend: , + prepend: ( + + ), min: 1, }, }} From 12c2e7e488f419237e0f80a996b345960fe246db Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Tue, 20 Apr 2021 13:58:33 +0200 Subject: [PATCH 53/56] Fix flaky SO import tests (#97586) * Fix flaky SO import tests * [will be reverted] remove all tests from CI group 8 * Revert "[will be reverted] remove all tests from CI group 8" This reverts commit ede007ec * Revert "[will be reverted] remove all tests from CI group 8" This reverts commit ede007ec --- test/functional/apps/management/_import_objects.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/functional/apps/management/_import_objects.ts b/test/functional/apps/management/_import_objects.ts index cb4d46f02f56b..d9eb945be7777 100644 --- a/test/functional/apps/management/_import_objects.ts +++ b/test/functional/apps/management/_import_objects.ts @@ -12,6 +12,7 @@ import { keyBy } from 'lodash'; import { FtrProviderContext } from '../../ftr_provider_context'; const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); + function uniq(input: T[]): T[] { return [...new Set(input)]; } @@ -23,9 +24,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const log = getService('log'); - // FLAKY: https://github.com/elastic/kibana/issues/95660 - // FLAKY: https://github.com/elastic/kibana/issues/95706 - describe.skip('import objects', function describeIndexTests() { + describe('import objects', function describeIndexTests() { describe('.ndjson file', () => { beforeEach(async function () { await esArchiver.load('management'); @@ -314,7 +313,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // but as the initial popin can take a few ms before fading, we need to wait a little // to avoid clicking twice on the same modal. await delay(1000); - await PageObjects.common.clickConfirmOnModal(false); + await PageObjects.common.clickConfirmOnModal(true); const isSuccessful = await testSubjects.exists('importSavedObjectsSuccess'); expect(isSuccessful).to.be(true); @@ -335,7 +334,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // but as the initial popin can take a few ms before fading, we need to wait a little // to avoid clicking twice on the same modal. await delay(1000); - await PageObjects.common.clickConfirmOnModal(false); + await PageObjects.common.clickConfirmOnModal(true); const isSuccessful = await testSubjects.exists('importSavedObjectsSuccess'); expect(isSuccessful).to.be(true); From f572fb9d7d9e4aafd4cb50707e75b29ccd316f7d Mon Sep 17 00:00:00 2001 From: Alison Goryachev Date: Tue, 20 Apr 2021 08:00:37 -0400 Subject: [PATCH 54/56] [Snapshot + Restore] prevent # char in repository name (#97495) --- .../application/services/validation/validate_repository.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/snapshot_restore/public/application/services/validation/validate_repository.ts b/x-pack/plugins/snapshot_restore/public/application/services/validation/validate_repository.ts index 57e2c31d639ce..45aa598296116 100644 --- a/x-pack/plugins/snapshot_restore/public/application/services/validation/validate_repository.ts +++ b/x-pack/plugins/snapshot_restore/public/application/services/validation/validate_repository.ts @@ -31,7 +31,7 @@ export interface RepositorySettingsValidation { [key: string]: string[]; } -export const INVALID_NAME_CHARS = ['"', '*', '\\', '<', '|', ',', '>', '/', '?']; +export const INVALID_NAME_CHARS = ['"', '*', '\\', '<', '|', ',', '>', '/', '?', '#']; const isStringEmpty = (str: string | null): boolean => { return str ? !Boolean(str.trim()) : true; From 7c103bfb56fc1e9e4908b945c210c1a4fc5eb1af Mon Sep 17 00:00:00 2001 From: Alison Goryachev Date: Tue, 20 Apr 2021 08:01:28 -0400 Subject: [PATCH 55/56] [Snapshot and Restore] Fix snapshot name wrapping issue (#97527) --- .../public/application/sections/home/_home.scss | 15 --------------- .../policy_list/policy_table/policy_table.tsx | 6 +----- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/_home.scss b/x-pack/plugins/snapshot_restore/public/application/sections/home/_home.scss index 468ada5c2712a..f9bdaf2bf4b1a 100644 --- a/x-pack/plugins/snapshot_restore/public/application/sections/home/_home.scss +++ b/x-pack/plugins/snapshot_restore/public/application/sections/home/_home.scss @@ -29,18 +29,3 @@ display: flex; } } - -/* - * Wraps long snapshot name with ellipsis when it is rendered with an icon - */ -.snapshotRestorePolicyTableSnapshotFailureContainer { - max-width: 200px; - > .euiFlexItem:last-child { - min-width: 0; - .euiText { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - } -} diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx b/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx index 830b9985f86fd..92ee611df61b7 100644 --- a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx +++ b/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx @@ -117,11 +117,7 @@ export const PolicyTable: React.FunctionComponent = ({ // Alert user if last snapshot failed if (lastSuccess && lastFailure && lastFailure.time > lastSuccess.time) { return ( - + Date: Tue, 20 Apr 2021 08:12:53 -0400 Subject: [PATCH 56/56] [App Search] 2 fixes for Result Settings (#97179) --- .../result_settings/result_settings.test.tsx | 10 ++++++++++ .../components/result_settings/result_settings.tsx | 7 +++++++ .../sample_response/sample_response_logic.test.ts | 12 ------------ .../sample_response/sample_response_logic.ts | 1 - 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings.test.tsx index e5a901f8d0779..70bc49421a4f1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings.test.tsx @@ -15,6 +15,8 @@ import { shallow, ShallowWrapper } from 'enzyme'; import { EuiPageHeader, EuiEmptyPrompt } from '@elastic/eui'; +import { UnsavedChangesPrompt } from '../../../shared/unsaved_changes_prompt'; + import { ResultSettings } from './result_settings'; import { ResultSettingsTable } from './result_settings_table'; import { SampleResponse } from './sample_response'; @@ -110,6 +112,14 @@ describe('ResultSettings', () => { expect(actions.clearAllFields).toHaveBeenCalled(); }); + it('will prevent user from leaving the page if there are unsaved changes', () => { + setMockValues({ + ...values, + stagedUpdates: true, + }); + expect(subject().find(UnsavedChangesPrompt).prop('hasUnsavedChanges')).toBe(true); + }); + describe('when there is no schema yet', () => { let wrapper: ShallowWrapper; beforeAll(() => { diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings.tsx index 285d8fef35770..bea5bcc548fab 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings.tsx @@ -25,6 +25,7 @@ import { SAVE_BUTTON_LABEL } from '../../../shared/constants'; import { FlashMessages } from '../../../shared/flash_messages'; import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { Loading } from '../../../shared/loading'; +import { UnsavedChangesPrompt } from '../../../shared/unsaved_changes_prompt'; import { RESTORE_DEFAULTS_BUTTON_LABEL } from '../../constants'; import { getEngineBreadcrumbs } from '../engine'; @@ -39,6 +40,11 @@ const CLEAR_BUTTON_LABEL = i18n.translate( { defaultMessage: 'Clear all values' } ); +const UNSAVED_MESSAGE = i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.resultSettings.unsavedChangesMessage', + { defaultMessage: 'Result Settings have not been saved. Are you sure you want to leave?' } +); + export const ResultSettings: React.FC = () => { const { dataLoading, schema, stagedUpdates, resultFieldsAtDefaultSettings } = useValues( ResultSettingsLogic @@ -60,6 +66,7 @@ export const ResultSettings: React.FC = () => { return ( <> + { 'An error occured.' ); }); - - it('does nothing if an empty object is passed for the resultFields parameter', async () => { - mount(); - jest.spyOn(SampleResponseLogic.actions, 'getSearchResultsSuccess'); - - SampleResponseLogic.actions.getSearchResults('foo', {}); - - jest.runAllTimers(); - await nextTick(); - - expect(SampleResponseLogic.actions.getSearchResultsSuccess).not.toHaveBeenCalled(); - }); }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/sample_response/sample_response_logic.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/sample_response/sample_response_logic.ts index 808a7ec9c65dc..c64cb3465b311 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/sample_response/sample_response_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/sample_response/sample_response_logic.ts @@ -63,7 +63,6 @@ export const SampleResponseLogic = kea ({ getSearchResults: async ({ query, resultFields }, breakpoint) => { - if (Object.keys(resultFields).length < 1) return; await breakpoint(250); const { http } = HttpLogic.values;