* First draft, not quite working but a good start * More working * Support configuring throttle * Get the other alerts working too * More * Separate into individual files * Menu support as well as better integration in existing UIs * Red borders! * New overview style, and renamed alert * more visual updates * Update cpu usage and improve settings configuration in UI * Convert cluster health and license expiration alert to use legacy data model * Remove most of the custom UI and use the flyout * Add the actual alerts * Remove more code * Fix formatting * Fix up some errors * Remove unnecessary code * Updates * add more links here * Fix up linkage * Added nodes changed alert * Most of the version mismatch working * Add kibana mismatch * UI tweaks * Add timestamp * Support actions in the enable api * Move this around * Better support for changing legacy alerts * Add missing files * Update alerts * Enable alerts whenever any page is visited in SM * Tweaks * Use more practical default * Remove the buggy renderer and ensure setup mode can show all alerts * Updates * Remove unnecessary code * Remove some dead code * Cleanup * Fix snapshot * Fixes * Fixes * Fix test * Add alerts to kibana and logstash listing pages * Fix test * Add disable/mute options * Tweaks * Fix linting * Fix i18n * Adding a couple tests * Fix localization * Use http * Ensure we properly handle when an alert is resolved * Fix tests * Hide legacy alerts if not the right license * Design tweaks * Fix tests * PR feedback * Moar tests * Fix i18n * Ensure we have a control over the messaging * Fix translations * Tweaks * More localization * Copy changes * Type
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
/*
|
|
* 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.
|
|
*/
|
|
|
|
import {
|
|
CpuUsageAlert,
|
|
NodesChangedAlert,
|
|
ClusterHealthAlert,
|
|
LicenseExpirationAlert,
|
|
LogstashVersionMismatchAlert,
|
|
KibanaVersionMismatchAlert,
|
|
ElasticsearchVersionMismatchAlert,
|
|
BaseAlert,
|
|
} from './';
|
|
import {
|
|
ALERT_CLUSTER_HEALTH,
|
|
ALERT_LICENSE_EXPIRATION,
|
|
ALERT_CPU_USAGE,
|
|
ALERT_NODES_CHANGED,
|
|
ALERT_LOGSTASH_VERSION_MISMATCH,
|
|
ALERT_KIBANA_VERSION_MISMATCH,
|
|
ALERT_ELASTICSEARCH_VERSION_MISMATCH,
|
|
} from '../../common/constants';
|
|
import { AlertsClient } from '../../../alerts/server';
|
|
|
|
export const BY_TYPE = {
|
|
[ALERT_CLUSTER_HEALTH]: ClusterHealthAlert,
|
|
[ALERT_LICENSE_EXPIRATION]: LicenseExpirationAlert,
|
|
[ALERT_CPU_USAGE]: CpuUsageAlert,
|
|
[ALERT_NODES_CHANGED]: NodesChangedAlert,
|
|
[ALERT_LOGSTASH_VERSION_MISMATCH]: LogstashVersionMismatchAlert,
|
|
[ALERT_KIBANA_VERSION_MISMATCH]: KibanaVersionMismatchAlert,
|
|
[ALERT_ELASTICSEARCH_VERSION_MISMATCH]: ElasticsearchVersionMismatchAlert,
|
|
};
|
|
|
|
export class AlertsFactory {
|
|
public static async getByType(
|
|
type: string,
|
|
alertsClient: AlertsClient | undefined
|
|
): Promise<BaseAlert | null> {
|
|
const alertCls = BY_TYPE[type];
|
|
if (!alertCls) {
|
|
return null;
|
|
}
|
|
if (alertsClient) {
|
|
const alertClientAlerts = await alertsClient.find({
|
|
options: {
|
|
filter: `alert.attributes.alertTypeId:${type}`,
|
|
},
|
|
});
|
|
|
|
if (alertClientAlerts.total === 0) {
|
|
return new alertCls();
|
|
}
|
|
|
|
const rawAlert = alertClientAlerts.data[0];
|
|
return new alertCls(rawAlert as BaseAlert['rawAlert']);
|
|
}
|
|
|
|
return new alertCls();
|
|
}
|
|
|
|
public static getAll() {
|
|
return Object.values(BY_TYPE).map((alert) => new alert());
|
|
}
|
|
}
|