Skip to content

Commit

Permalink
Fixing merge conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathan-buttner committed Aug 6, 2020
2 parents c1f6919 + e807ddd commit 0086f08
Show file tree
Hide file tree
Showing 173 changed files with 3,245 additions and 1,500 deletions.
6 changes: 0 additions & 6 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,12 +132,6 @@ module.exports = {
'react-hooks/rules-of-hooks': 'off',
},
},
{
files: ['x-pack/plugins/lens/**/*.{js,mjs,ts,tsx}'],
rules: {
'react-hooks/exhaustive-deps': 'off',
},
},
{
files: ['x-pack/plugins/ml/**/*.{js,mjs,ts,tsx}'],
rules: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ Creates [IKbnUrlStateStorage](./kibana-plugin-plugins-kibana_utils-public-state_
<b>Signature:</b>

```typescript
createKbnUrlStateStorage: ({ useHash, history }?: {
createKbnUrlStateStorage: ({ useHash, history, onGetError, onSetError, }?: {
useHash: boolean;
history?: History<any> | undefined;
onGetError?: ((error: Error) => void) | undefined;
onSetError?: ((error: Error) => void) | undefined;
}) => IKbnUrlStateStorage
```
4 changes: 2 additions & 2 deletions docs/drilldowns/explore-underlying-data.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ applies the filters and time range created by the events that triggered the acti
[role="screenshot"]
image::images/explore_data_in_chart.png[Explore underlying data from chart]

You can disable this action by adding the following line to your `kibana.yml` config.
To enable this action add the following line to your `kibana.yml` config.

["source","yml"]
-----------
xpack.discoverEnhanced.actions.exploreDataInChart.enabled: false
xpack.discoverEnhanced.actions.exploreDataInChart.enabled: true
-----------
7 changes: 7 additions & 0 deletions docs/glossary.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,13 @@ syslog, Apache, and other webserver logs. See
[[k_glos]]
== K

[[glossary-kibana-privileges]] {kib} privileges ::
// tag::kibana-privileges-def[]
Enable administrators to grant users read-only, read-write, or no access to
individual features within <<glossary-space,spaces>> in {kib}. See
{kibana-ref}/kibana-privileges.html[{kib} privileges].
// end::kibana-privileges-def[]

[[glossary-kql]] {kib} Query Language (KQL) ::
// tag::kql-def[]
The default language for querying in {kib}. KQL provides
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/user/monitoring/index.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ include::xpack-monitoring.asciidoc[]
include::beats-details.asciidoc[leveloffset=+1]
include::cluster-alerts.asciidoc[leveloffset=+1]
include::elasticsearch-details.asciidoc[leveloffset=+1]
include::kibana-alerts.asciidoc[leveloffset=+1]
include::kibana-details.asciidoc[leveloffset=+1]
include::logstash-details.asciidoc[leveloffset=+1]
include::monitoring-troubleshooting.asciidoc[leveloffset=+1]
36 changes: 36 additions & 0 deletions docs/user/monitoring/kibana-alerts.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
[role="xpack"]
[[kibana-alerts]]
= {kib} Alerts

The {stack} {monitor-features} provide
<<alerting-getting-started,{kib} alerts>> out-of-the box to notify you of
potential issues in the {stack}. These alerts are preconfigured based on the
best practices recommended by Elastic. However, you can tailor them to meet your
specific needs.

When you open *{stack-monitor-app}*, the preconfigured {kib} alerts are
created automatically. If you collect monitoring data from multiple clusters,
these alerts can search, detect, and notify on various conditions across the
clusters. The alerts are visible alongside your existing {watcher} cluster
alerts. You can view details about the alerts that are active and view health
and performance data for {es}, {ls}, and Beats in real time, as well as
analyze past performance. You can also modify active alerts.

[role="screenshot"]
image::user/monitoring/images/monitoring-kibana-alerts.png["Kibana alerts in the Stack Monitoring app"]

To review and modify all the available alerts, use
<<managing-alerts-and-actions,*{alerts-ui}*>> in *{stack-manage-app}*.

[discrete]
[[kibana-alerts-cpu-threshold]]
== CPU threshold

This alert is triggered when a node runs a consistently high CPU load. By
default, the trigger condition is set at 85% or more averaged over the last 5
minutes. The alert is grouped across all the nodes of the cluster by running
checks on a schedule time of 1 minute with a re-notify internal of 1 day.

NOTE: Some action types are subscription features, while others are free.
For a comparison of the Elastic subscription levels, see the alerting section of
the {subscriptions}[Subscriptions page].
2 changes: 0 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,6 @@
"bluebird": "3.5.5",
"boom": "^7.2.0",
"brace": "0.11.1",
"browserslist-useragent": "^3.0.2",
"cache-loader": "^4.1.0",
"chalk": "^2.4.2",
"check-disk-space": "^2.1.0",
Expand Down Expand Up @@ -319,7 +318,6 @@
"@types/babel__core": "^7.1.2",
"@types/bluebird": "^3.1.1",
"@types/boom": "^7.2.0",
"@types/browserslist-useragent": "^3.0.0",
"@types/chance": "^1.0.0",
"@types/cheerio": "^0.22.10",
"@types/chromedriver": "^81.0.0",
Expand Down
4 changes: 2 additions & 2 deletions packages/kbn-optimizer/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ The [Webpack config][WebpackConfig] is designed to provide the majority of what

Source maps are enabled except when building the distributable. They show the code actually being executed by the browser to strike a balance between debuggability and performance. They are not configurable at this time but will be configurable once we have a developer configuration solution that doesn't rely on the server (see [#55656](https://github.com/elastic/kibana/issues/55656)).

### IE Support
### Browser Support

To make front-end code easier to debug the optimizer uses the `BROWSERSLIST_ENV=dev` environment variable (by default) to build JS and CSS that is compatible with modern browsers. In order to support older browsers like IE in development you will need to specify the `BROWSERSLIST_ENV=production` environment variable or build a distributable for testing.
To make front-end code easier to debug the optimizer uses the `BROWSERSLIST_ENV=dev` environment variable (by default) to build JS and CSS that is compatible with modern browsers. In order to support all browsers that we support with the distributable you will need to specify the `BROWSERSLIST_ENV=production` environment variable or build a distributable for testing.

## Running the optimizer

Expand Down
36 changes: 1 addition & 35 deletions src/core/server/http/base_path_proxy_server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,9 @@ import { Agent as HttpsAgent, ServerOptions as TlsOptions } from 'https';

import apm from 'elastic-apm-node';
import { ByteSizeValue } from '@kbn/config-schema';
import { Server, Request, ResponseToolkit } from 'hapi';
import { Server, Request } from 'hapi';
import HapiProxy from 'h2o2';
import { sampleSize } from 'lodash';
import BrowserslistUserAgent from 'browserslist-useragent';
import * as Rx from 'rxjs';
import { take } from 'rxjs/operators';

Expand All @@ -41,34 +40,6 @@ export interface BasePathProxyServerOptions {
delayUntil: () => Rx.Observable<void>;
}

// Before we proxy request to a target port we may want to wait until some
// condition is met (e.g. until target listener is ready).
const checkForBrowserCompat = (log: Logger) => async (request: Request, h: ResponseToolkit) => {
if (!request.headers['user-agent'] || process.env.BROWSERSLIST_ENV === 'production') {
return h.continue;
}

const matches = BrowserslistUserAgent.matchesUA(request.headers['user-agent'], {
env: 'dev',
allowHigherVersions: true,
ignoreMinor: true,
ignorePath: true,
});

if (!matches) {
log.warn(`
Request with user-agent [${request.headers['user-agent']}]
seems like it is coming from a browser that is not supported by the dev browserlist.
Please run Kibana with the environment variable BROWSERSLIST_ENV=production to enable
support for all production browsers (like IE).
`);
}

return h.continue;
};

export class BasePathProxyServer {
private server?: Server;
private httpsAgent?: HttpsAgent;
Expand Down Expand Up @@ -155,9 +126,6 @@ export class BasePathProxyServer {
},
method: 'GET',
path: '/',
options: {
pre: [checkForBrowserCompat(this.log)],
},
});

this.server.route({
Expand All @@ -175,7 +143,6 @@ export class BasePathProxyServer {
method: '*',
options: {
pre: [
checkForBrowserCompat(this.log),
// Before we proxy request to a target port we may want to wait until some
// condition is met (e.g. until target listener is ready).
async (request, responseToolkit) => {
Expand Down Expand Up @@ -210,7 +177,6 @@ export class BasePathProxyServer {
method: '*',
options: {
pre: [
checkForBrowserCompat(this.log),
// Before we proxy request to a target port we may want to wait until some
// condition is met (e.g. until target listener is ready).
async (request, responseToolkit) => {
Expand Down
2 changes: 2 additions & 0 deletions src/plugins/dashboard/public/application/legacy_app.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import {
createKbnUrlStateStorage,
redirectWhenMissing,
SavedObjectNotFound,
withNotifyOnErrors,
} from '../../../kibana_utils/public';
import { DashboardListing, EMPTY_FILTER } from './listing/dashboard_listing';
import { addHelpMenuToAppChrome } from './help_menu/help_menu_util';
Expand Down Expand Up @@ -65,6 +66,7 @@ export function initDashboardApp(app, deps) {
createKbnUrlStateStorage({
history,
useHash: deps.uiSettings.get('state:storeInSessionStorage'),
...withNotifyOnErrors(deps.core.notifications.toasts),
})
);

Expand Down
1 change: 1 addition & 0 deletions src/plugins/discover/public/application/angular/context.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ function ContextAppRouteController($routeParams, $scope, $route) {
timeFieldName: indexPattern.timeFieldName,
storeInSessionStorage: getServices().uiSettings.get('state:storeInSessionStorage'),
history: getServices().history(),
toasts: getServices().core.notifications.toasts,
});
this.state = { ...appState.getState() };
this.anchorId = $routeParams.id;
Expand Down
11 changes: 11 additions & 0 deletions src/plugins/discover/public/application/angular/context_state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,13 @@
*/
import _ from 'lodash';
import { History } from 'history';
import { NotificationsStart } from 'kibana/public';
import {
createStateContainer,
createKbnUrlStateStorage,
syncStates,
BaseStateContainer,
withNotifyOnErrors,
} from '../../../../kibana_utils/public';
import { esFilters, FilterManager, Filter, Query } from '../../../../data/public';

Expand Down Expand Up @@ -74,6 +76,13 @@ interface GetStateParams {
* History instance to use
*/
history: History;

/**
* Core's notifications.toasts service
* In case it is passed in,
* kbnUrlStateStorage will use it notifying about inner errors
*/
toasts?: NotificationsStart['toasts'];
}

interface GetStateReturn {
Expand Down Expand Up @@ -123,10 +132,12 @@ export function getState({
timeFieldName,
storeInSessionStorage = false,
history,
toasts,
}: GetStateParams): GetStateReturn {
const stateStorage = createKbnUrlStateStorage({
useHash: storeInSessionStorage,
history,
...(toasts && withNotifyOnErrors(toasts)),
});

const globalStateInitial = stateStorage.get(GLOBAL_STATE_URL_KEY) as GlobalState;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,7 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise
defaultAppState: getStateDefaults(),
storeInSessionStorage: config.get('state:storeInSessionStorage'),
history,
toasts: core.notifications.toasts,
});
if (appStateContainer.getState().index !== $scope.indexPattern.id) {
//used index pattern is different than the given by url/state which is invalid
Expand Down
11 changes: 11 additions & 0 deletions src/plugins/discover/public/application/angular/discover_state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,14 @@
*/
import { isEqual } from 'lodash';
import { History } from 'history';
import { NotificationsStart } from 'kibana/public';
import {
createStateContainer,
createKbnUrlStateStorage,
syncState,
ReduxLikeStateContainer,
IKbnUrlStateStorage,
withNotifyOnErrors,
} from '../../../../kibana_utils/public';
import { esFilters, Filter, Query } from '../../../../data/public';
import { migrateLegacyQuery } from '../../../../kibana_legacy/public';
Expand Down Expand Up @@ -68,6 +70,13 @@ interface GetStateParams {
* Browser history
*/
history: History;

/**
* Core's notifications.toasts service
* In case it is passed in,
* kbnUrlStateStorage will use it notifying about inner errors
*/
toasts?: NotificationsStart['toasts'];
}

export interface GetStateReturn {
Expand Down Expand Up @@ -122,10 +131,12 @@ export function getState({
defaultAppState = {},
storeInSessionStorage = false,
history,
toasts,
}: GetStateParams): GetStateReturn {
const stateStorage = createKbnUrlStateStorage({
useHash: storeInSessionStorage,
history,
...(toasts && withNotifyOnErrors(toasts)),
});

const appStateFromUrl = stateStorage.get(APP_STATE_URL_KEY) as AppState;
Expand Down
1 change: 1 addition & 0 deletions src/plugins/kibana_utils/docs/state_sync/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,4 @@ To run them, start kibana with `--run-examples` flag.
- [On-the-fly state migrations](./on_fly_state_migrations.md).
- [syncStates helper](./sync_states.md).
- [Helpers for Data plugin (syncing TimeRange, RefreshInterval and Filters)](./data_plugin_helpers.md).
- [Error handling](./error_handling.md)
6 changes: 6 additions & 0 deletions src/plugins/kibana_utils/docs/state_sync/error_handling.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Error handling

State syncing util doesn't have specific api for handling errors.
It expects that errors are handled on storage level.

see [KbnUrlStateStorage](./storages/kbn_url_storage.md#) error handling section for details.
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ To prevent bugs caused by missing history updates, make sure your app uses one i
For example, if you use `react-router`:

```tsx
const App = props => {
const App = (props) => {
useEffect(() => {
const stateStorage = createKbnUrlStateStorage({
useHash: props.uiSettings.get('state:storeInSessionStorage'),
Expand Down Expand Up @@ -160,3 +160,58 @@ const { start, stop } = syncStates([

<Router history={history} />;
```

### Error handling

Errors could occur both during `kbnUrlStateStorage.get()` and `kbnUrlStateStorage.set()`

#### Handling kbnUrlStateStorage.get() errors

Possible error scenarios during `kbnUrlStateStorage.get()`:

1. Rison in URL is malformed. Parsing exception.
2. useHash is enabled and current hash is missing in `sessionStorage`

In all the cases error is handled internally and `kbnUrlStateStorage.get()` returns `null`, just like if there is no state in the URL anymore

You can pass callback to get notified about errors. Use it, for example, for notifying users

```ts
const kbnUrlStateStorage = createKbnUrlStateStorage({
history,
onGetError: (error) => {
alert(error.message);
},
});
```

#### Handling kbnUrlStateStorage.set() errors

Possible errors during `kbnUrlStateStorage.set()`:

1. `useHash` is enabled and can't store state in `sessionStorage` (overflow or no access)

In all the cases error is handled internally and URL update is skipped

You can pass callback to get notified about errors. Use it, for example, for notifying users:

```ts
const kbnUrlStateStorage = createKbnUrlStateStorage({
history,
onSetError: (error) => {
alert(error.message);
},
});
```

#### Helper to integrate with core.notifications.toasts

The most common scenario is to notify users about issues with state syncing using toast service from core
There is a convenient helper for this:

```ts
const kbnUrlStateStorage = createKbnUrlStateStorage({
history,
...withNotifyOnErrors(core.notifications.toasts),
});
```
1 change: 1 addition & 0 deletions src/plugins/kibana_utils/public/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ export {
getStateFromKbnUrl,
getStatesFromKbnUrl,
setStateToKbnUrl,
withNotifyOnErrors,
} from './state_management/url';
export {
syncState,
Expand Down
Loading

0 comments on commit 0086f08

Please sign in to comment.