mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
* Create actions plugin (#35679)
* Basic alerting plugin with actions
* Remove relative imports
* Code cleanup
* Split service into 3 parts, change connector structure
* Ability to disable plugin, ability to get actions
* Add slack connector
* Add email connector
* Ability to validate params and connector options
* Remove connectorOptionsSecrets for now
* Fix plugin config validation
* Add tests for slack connector
* Default connectors register on plugin init, console renamed to log, slack to message_slack
* Add remaining API endpoints for action CRUD
* Add list connectors API
* Change actions CRUD APIs to be closer with saved objects structure
* WIP
* Fix broken tests
* Add encrypted attribute support
* Add params and connectorOptions for email
* WIP
* Remove action's ability to have custom ids
* Remove ts-ignore
* Fix broken test
* Remove default connectors from this branch
* Fix API integration tests to use fixture connector
* Rename connector terminology to action type
* Rename actionTypeOptions to actionTypeConfig
* Code cleanup
* Fix broken tests
* Rename alerting plugin to actions
* Some code cleanup and add API unit tests
* Change signature of action type service execute function
* Add some plugin api integration tests
* Fix type check failure
* Code cleanup
* Create an actions client instead of an action service
* Apply Bill's PR feedback
* Fix broken test
* Find function to have destructured params
* Add tests to ensure encrypted attributes are not returned
* Fix broken test
* Add tests for validation
* Ensure actions can be updated without re-passing the config
* Remove dead code
* Test cleanup
* Fix eslint issue
* Apply Peter's PR feedback
* Code cleanup and fix broken tests
* Apply Brandon's PR feedback
* Add namespace support
* Fix broken test
* Pass services to action executors (#37194)
* Pass services to action executors
* Fix tests
* Apply PR feedback
* Apply PR feedback pt2
* Cleanup actions plugin (#37250)
* Cleanup actions, move code from alerting plugin PR
* Rename service terminology to registry
* Use static encryption key for encrypted attributes plugin inside of tests
* Empty data after create test is done running
* Fix type checks
* Fix inconsistent naming
* add server log action for alerting (#37530)
adds the first "builtin" alertType for performing a `server.log()`
* Create alerting plugin (#37043)
* WIP
* Rename fire function and remove @ts-ignore in all places
* Change naming in alerting service
* Remove alert instance class for now, support interval configuration
* Cleanup TS
* Split alerting between registry and client
* Use saved object alongside task manager instance
* Add remaining alerting APIs
* Change create structure
* Rename some variables, change actionGroups structure
* Use handlebars for templating strings at fire time
* Fix params given to alert type execute function
* Use alert instance class
* Alert instances support meta attributes
* Move alert instances deserialization
* Change interval to be ms
* Rename actions es archive
* Fix tests to use encrypted esArchive for action record
* Add create alert test to demo end to end flow
* Fix type check issue
* Alerts to use references to action objects
* Only update task manager tasks after saved objects are fully updated
* Use scope in task manager
* Fix type check
* Use task manager to execute actions
* Convert ids into references and back
* Apply PR feedback
* Fix broken test
* Fix some bugs
* Fix test errors
* Alert interval to be previous runAt + interval instead of now + interval
* Add range support
* Remove extra line
* Cleanup
* Add alert_instance.test.ts
* Add alert_type_registry.test.ts
* Move tests around
* Create generic task manager mock
* Add note about saved objects client mock
* Create alert_type_registry.mock.ts
* Add alerts_client.test.ts
* Add create_alert_instance_factory.test.ts
* Add create_fire_handler.test.ts
* WIP
* Fix get_create_task_runner_function.test.ts and make test pass
* Make get_create_task_runner_function.test.ts 100% coverage
* Add unit tests for routes
* Move files around
* Created transform_action_params.ts
* Add get_next_run_at.ts
* Add comment explaining why we copy nextRunAt
* Re-use state within alert instance
* Finalize code coverage in unit tests
* Create base api integration tests
* Add a test that ensures end to end functionality of an alert
* Fix ui capabilities test
* Fix broken plugin api integration test
* Fix jest tests with new saved objects client
* Fix broken integration tests
* Change api integration test fixture to make more sense, add functions for future tests
* Move alerts integration testing into own file, prep to add more tests
* Add tests to ensure failed task instances get retried
* Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock
* Add action validation tests
* Ensure action type validation occurs on update
* Test 400 on unregistered alert types
* Ensure alertTypeId can't be updated
* Add validation test for alert create / update
* Fix broken checks / tests
* Skip failing test for now
* Cleanup jest tests
* Ensure action objects can be updated while keeping encrypted attributes readable
* Remove partial update sopport, remove ability to change actionTypeId, require config
* Ensure actionTypeConfig is validated on create and update
* Add alertTypeParams validation support
* Fix failing tests
* Ensure alert cleanup errors don't replace the original error
* Pass callCluster as a service to alerts and actions
* Only pass log to alerts client
* Pass savedObjectsClient as a service to alerting and actions
* Fix failing tests
* Remove range support, provide when current and previous task got scheduled
* Ensure Joi validation happens before every execute
* Remove skipped tests, to be done in future PR
* Apply self feedback pt1
* Apply self feedback pt2
* Fix broken tests
* Apply PR feedback
* PR feedback pt1
* Apply security team PR feedback
* PR feedback pt1
* PR feedback pt2
* PR feedback pt3
* Fix broken tests
* Fix callCluster to have signature
* Revert f11a6aeb06
* PR feedback pt4
* Remove __jest__ folders
* PR feedback pt5
* Fix Joi from leaking secrets
* Fire instance actions in parallel instead of series
* Fix failing jest tests
* Accept core api changes
* Fix saved objects client mock
* PR feedback pt1
* Fix eslint issues
* Throw error when alert instance already fired (#39251)
* Throw error when alert instance already fired
* shouldFire doesn't need its own boolean value
* Actions & alerting getting started user guides (#39093)
* Initial user guides
* Cleanup
* Typos, example changes
* Switch to tables, use ordered list for usage
* Start docs around alert instances and templating
* Documentation changes
* Some adjustments
* Apply PR feedback
* Apply suggestions from code review
Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com>
* PR feedback pt2
* Provide better examples for alert types
* Apply PR feedback
* Update README locations
294 lines
10 KiB
JavaScript
294 lines
10 KiB
JavaScript
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the Elastic License;
|
|
* you may not use this file except in compliance with the Elastic License.
|
|
*/
|
|
|
|
/* eslint-disable import/no-default-export */
|
|
|
|
import { resolve } from 'path';
|
|
|
|
import {
|
|
CanvasPageProvider,
|
|
SecurityPageProvider,
|
|
MonitoringPageProvider,
|
|
LogstashPageProvider,
|
|
GraphPageProvider,
|
|
GrokDebuggerPageProvider,
|
|
WatcherPageProvider,
|
|
ReportingPageProvider,
|
|
SpaceSelectorPageProvider,
|
|
AccountSettingProvider,
|
|
InfraHomePageProvider,
|
|
InfraLogsPageProvider,
|
|
GisPageProvider,
|
|
StatusPagePageProvider,
|
|
UpgradeAssistantProvider,
|
|
CodeHomePageProvider,
|
|
RollupPageProvider,
|
|
UptimePageProvider,
|
|
} from './page_objects';
|
|
|
|
import {
|
|
MonitoringNoDataProvider,
|
|
MonitoringClusterListProvider,
|
|
MonitoringClusterOverviewProvider,
|
|
MonitoringClusterAlertsProvider,
|
|
MonitoringElasticsearchSummaryStatusProvider,
|
|
MonitoringElasticsearchOverviewProvider,
|
|
MonitoringElasticsearchNodesProvider,
|
|
MonitoringElasticsearchNodeDetailProvider,
|
|
MonitoringElasticsearchIndicesProvider,
|
|
MonitoringElasticsearchIndexDetailProvider,
|
|
MonitoringElasticsearchShardsProvider,
|
|
MonitoringBeatsOverviewProvider,
|
|
MonitoringBeatsListingProvider,
|
|
MonitoringBeatDetailProvider,
|
|
MonitoringBeatsSummaryStatusProvider,
|
|
MonitoringLogstashPipelinesProvider,
|
|
MonitoringLogstashSummaryStatusProvider,
|
|
MonitoringKibanaOverviewProvider,
|
|
MonitoringKibanaInstancesProvider,
|
|
MonitoringKibanaInstanceProvider,
|
|
MonitoringKibanaSummaryStatusProvider,
|
|
PipelineListProvider,
|
|
PipelineEditorProvider,
|
|
RandomProvider,
|
|
AceEditorProvider,
|
|
GrokDebuggerProvider,
|
|
UserMenuProvider,
|
|
UptimeProvider,
|
|
InfraSourceConfigurationFlyoutProvider,
|
|
InfraLogStreamProvider,
|
|
} from './services';
|
|
|
|
import {
|
|
SecurityServiceProvider,
|
|
SpacesServiceProvider,
|
|
} from '../common/services';
|
|
|
|
// the default export of config files must be a config provider
|
|
// that returns an object with the projects config values
|
|
export default async function ({ readConfigFile }) {
|
|
const kibanaCommonConfig = await readConfigFile(
|
|
require.resolve('../../../test/common/config.js')
|
|
);
|
|
const kibanaFunctionalConfig = await readConfigFile(
|
|
require.resolve('../../../test/functional/config.js')
|
|
);
|
|
const kibanaAPITestsConfig = await readConfigFile(
|
|
require.resolve('../../../test/api_integration/config.js')
|
|
);
|
|
|
|
return {
|
|
// list paths to the files that contain your plugins tests
|
|
testFiles: [
|
|
resolve(__dirname, './apps/advanced_settings'),
|
|
resolve(__dirname, './apps/canvas'),
|
|
resolve(__dirname, './apps/graph'),
|
|
resolve(__dirname, './apps/monitoring'),
|
|
resolve(__dirname, './apps/watcher'),
|
|
resolve(__dirname, './apps/dashboard'),
|
|
resolve(__dirname, './apps/dashboard_mode'),
|
|
resolve(__dirname, './apps/discover'),
|
|
resolve(__dirname, './apps/security'),
|
|
resolve(__dirname, './apps/spaces'),
|
|
resolve(__dirname, './apps/logstash'),
|
|
resolve(__dirname, './apps/grok_debugger'),
|
|
resolve(__dirname, './apps/infra'),
|
|
resolve(__dirname, './apps/machine_learning'),
|
|
resolve(__dirname, './apps/rollup_job'),
|
|
resolve(__dirname, './apps/maps'),
|
|
resolve(__dirname, './apps/status_page'),
|
|
resolve(__dirname, './apps/timelion'),
|
|
resolve(__dirname, './apps/upgrade_assistant'),
|
|
resolve(__dirname, './apps/code'),
|
|
resolve(__dirname, './apps/visualize'),
|
|
resolve(__dirname, './apps/uptime'),
|
|
resolve(__dirname, './apps/saved_objects_management'),
|
|
resolve(__dirname, './apps/dev_tools'),
|
|
resolve(__dirname, './apps/apm'),
|
|
resolve(__dirname, './apps/index_patterns')
|
|
],
|
|
|
|
// define the name and providers for services that should be
|
|
// available to your tests. If you don't specify anything here
|
|
// only the built-in services will be available
|
|
services: {
|
|
...kibanaFunctionalConfig.get('services'),
|
|
esSupertest: kibanaAPITestsConfig.get('services.esSupertest'),
|
|
monitoringNoData: MonitoringNoDataProvider,
|
|
monitoringClusterList: MonitoringClusterListProvider,
|
|
monitoringClusterOverview: MonitoringClusterOverviewProvider,
|
|
monitoringClusterAlerts: MonitoringClusterAlertsProvider,
|
|
monitoringElasticsearchSummaryStatus: MonitoringElasticsearchSummaryStatusProvider,
|
|
monitoringElasticsearchOverview: MonitoringElasticsearchOverviewProvider,
|
|
monitoringElasticsearchNodes: MonitoringElasticsearchNodesProvider,
|
|
monitoringElasticsearchNodeDetail: MonitoringElasticsearchNodeDetailProvider,
|
|
monitoringElasticsearchIndices: MonitoringElasticsearchIndicesProvider,
|
|
monitoringElasticsearchIndexDetail: MonitoringElasticsearchIndexDetailProvider,
|
|
monitoringElasticsearchShards: MonitoringElasticsearchShardsProvider,
|
|
monitoringBeatsOverview: MonitoringBeatsOverviewProvider,
|
|
monitoringBeatsListing: MonitoringBeatsListingProvider,
|
|
monitoringBeatDetail: MonitoringBeatDetailProvider,
|
|
monitoringBeatsSummaryStatus: MonitoringBeatsSummaryStatusProvider,
|
|
monitoringLogstashPipelines: MonitoringLogstashPipelinesProvider,
|
|
monitoringLogstashSummaryStatus: MonitoringLogstashSummaryStatusProvider,
|
|
monitoringKibanaOverview: MonitoringKibanaOverviewProvider,
|
|
monitoringKibanaInstances: MonitoringKibanaInstancesProvider,
|
|
monitoringKibanaInstance: MonitoringKibanaInstanceProvider,
|
|
monitoringKibanaSummaryStatus: MonitoringKibanaSummaryStatusProvider,
|
|
pipelineList: PipelineListProvider,
|
|
pipelineEditor: PipelineEditorProvider,
|
|
random: RandomProvider,
|
|
aceEditor: AceEditorProvider,
|
|
grokDebugger: GrokDebuggerProvider,
|
|
security: SecurityServiceProvider,
|
|
spaces: SpacesServiceProvider,
|
|
userMenu: UserMenuProvider,
|
|
uptime: UptimeProvider,
|
|
rollup: RollupPageProvider,
|
|
infraSourceConfigurationFlyout: InfraSourceConfigurationFlyoutProvider,
|
|
infraLogStream: InfraLogStreamProvider,
|
|
},
|
|
|
|
// just like services, PageObjects are defined as a map of
|
|
// names to Providers. Merge in Kibana's or pick specific ones
|
|
pageObjects: {
|
|
...kibanaFunctionalConfig.get('pageObjects'),
|
|
canvas: CanvasPageProvider,
|
|
security: SecurityPageProvider,
|
|
accountSetting: AccountSettingProvider,
|
|
monitoring: MonitoringPageProvider,
|
|
logstash: LogstashPageProvider,
|
|
graph: GraphPageProvider,
|
|
grokDebugger: GrokDebuggerPageProvider,
|
|
watcher: WatcherPageProvider,
|
|
reporting: ReportingPageProvider,
|
|
spaceSelector: SpaceSelectorPageProvider,
|
|
infraHome: InfraHomePageProvider,
|
|
infraLogs: InfraLogsPageProvider,
|
|
maps: GisPageProvider,
|
|
statusPage: StatusPagePageProvider,
|
|
upgradeAssistant: UpgradeAssistantProvider,
|
|
code: CodeHomePageProvider,
|
|
uptime: UptimePageProvider,
|
|
rollup: RollupPageProvider,
|
|
},
|
|
|
|
servers: kibanaFunctionalConfig.get('servers'),
|
|
|
|
esTestCluster: {
|
|
license: 'trial',
|
|
from: 'snapshot',
|
|
serverArgs: [],
|
|
},
|
|
|
|
kbnTestServer: {
|
|
...kibanaCommonConfig.get('kbnTestServer'),
|
|
serverArgs: [
|
|
...kibanaCommonConfig.get('kbnTestServer.serverArgs'),
|
|
'--status.allowAnonymous=true',
|
|
'--server.uuid=5b2de169-2785-441b-ae8c-186a1936b17d',
|
|
'--xpack.maps.showMapsInspectorAdapter=true',
|
|
'--xpack.telemetry.banner=false',
|
|
'--xpack.reporting.queue.pollInterval=3000', // make it explicitly the default
|
|
'--xpack.reporting.csv.maxSizeBytes=2850', // small-ish limit for cutting off a 1999 byte report
|
|
'--stats.maximumWaitTimeForAllCollectorsInS=0',
|
|
'--xpack.security.encryptionKey="wuGNaIhoMpk5sO4UBxgr3NyW1sFcLgIf"', // server restarts should not invalidate active sessions
|
|
'--xpack.encrypted_saved_objects.encryptionKey="DkdXazszSCYexXqz4YktBGHCRkV6hyNK"',
|
|
'--xpack.code.security.enableGitCertCheck=false', // Disable git certificate check
|
|
'--timelion.ui.enabled=true',
|
|
],
|
|
},
|
|
uiSettings: {
|
|
defaults: {
|
|
'accessibility:disableAnimations': true,
|
|
'dateFormat:tz': 'UTC',
|
|
},
|
|
},
|
|
// the apps section defines the urls that
|
|
// `PageObjects.common.navigateTo(appKey)` will use.
|
|
// Merge urls for your plugin with the urls defined in
|
|
// Kibana's config in order to use this helper
|
|
apps: {
|
|
...kibanaFunctionalConfig.get('apps'),
|
|
login: {
|
|
pathname: '/login',
|
|
},
|
|
monitoring: {
|
|
pathname: '/app/monitoring',
|
|
},
|
|
logstashPipelines: {
|
|
pathname: '/app/kibana',
|
|
hash: '/management/logstash/pipelines',
|
|
},
|
|
maps: {
|
|
pathname: '/app/maps',
|
|
},
|
|
graph: {
|
|
pathname: '/app/graph',
|
|
},
|
|
grokDebugger: {
|
|
pathname: '/app/kibana',
|
|
hash: '/dev_tools/grokdebugger',
|
|
},
|
|
searchProfiler: {
|
|
pathname: '/app/kibana',
|
|
hash: '/dev_tools/searchprofiler',
|
|
},
|
|
spaceSelector: {
|
|
pathname: '/',
|
|
},
|
|
infraOps: {
|
|
pathname: '/app/infra',
|
|
},
|
|
infraLogs: {
|
|
pathname: '/app/infra',
|
|
hash: '/logs',
|
|
},
|
|
canvas: {
|
|
pathname: '/app/canvas',
|
|
hash: '/',
|
|
},
|
|
code: {
|
|
pathname: '/app/code',
|
|
hash: '/admin',
|
|
},
|
|
codeSearch: {
|
|
pathname: '/app/code',
|
|
hash: '/search',
|
|
},
|
|
uptime: {
|
|
pathname: '/app/uptime',
|
|
},
|
|
apm: {
|
|
pathname: '/app/apm'
|
|
},
|
|
ml: {
|
|
pathname: '/app/ml'
|
|
},
|
|
rollupJob: {
|
|
pathname: '/app/kibana',
|
|
hash: '/management/elasticsearch/rollup_jobs/',
|
|
},
|
|
apm: {
|
|
pathname: '/app/apm',
|
|
}
|
|
},
|
|
|
|
// choose where esArchiver should load archives from
|
|
esArchiver: {
|
|
directory: resolve(__dirname, 'es_archives'),
|
|
},
|
|
|
|
// choose where screenshots should be saved
|
|
screenshots: {
|
|
directory: resolve(__dirname, 'screenshots'),
|
|
},
|
|
|
|
junit: {
|
|
reportName: 'Chrome X-Pack UI Functional Tests',
|
|
},
|
|
};
|
|
}
|