/* * SPDX-License-Identifier: Apache-2.0 * * The OpenSearch Contributors require contributions made to * this file be licensed under the Apache-2.0 license or a * compatible open source license. * * Modifications Copyright OpenSearch Contributors. See * GitHub history for details. */ //@ts-ignore import moment from 'moment'; import React from 'react'; import { EuiIcon } from '@elastic/eui'; // We don't need to specify auto_expand_replicas - use cluster defaults instead export const indexSettings = { index: { number_of_shards: 1, }, }; export interface SAMPLE_DATA { indexName: string; legacyIndexName: string; detectorName: string; legacyDetectorName: string; description: string; icon: any; fieldMappings: {}; indexConfig: {}; detectorConfig: {}; } /* *** SAMPLE HTTP RESPONSES CONSTANTS *** */ const httpResponsesIndexName = 'sample-http-responses'; const legacyHttpResponsesIndexName = 'opendistro-sample-http-responses'; const httpResponsesDetectorName = 'sample-http-responses-detector'; const legacyHttpResponsesDetectorName = 'opendistro-sample-http-responses-detector'; const httpFieldMappings = { timestamp: { type: 'date', }, status_code: { type: 'integer', }, http_1xx: { type: 'integer', }, http_2xx: { type: 'integer', }, http_3xx: { type: 'integer', }, http_4xx: { type: 'integer', }, http_5xx: { type: 'integer', }, }; export const sampleHttpResponses = { indexName: httpResponsesIndexName, legacyIndexName: legacyHttpResponsesIndexName, detectorName: httpResponsesDetectorName, legacyDetectorName: legacyHttpResponsesDetectorName, description: 'Detect high numbers of error response codes in an index containing HTTP response data.', icon: , fieldMappings: httpFieldMappings, indexConfig: { index: httpResponsesIndexName, body: { settings: indexSettings, mappings: { properties: httpFieldMappings, }, }, }, detectorConfig: { name: httpResponsesDetectorName, description: 'A sample detector to detect anomalies with HTTP response code logs.', time_field: 'timestamp', indices: [httpResponsesIndexName], featureAttributes: [ { feature_name: 'sum_http_4xx', feature_enabled: true, importance: 1, aggregationQuery: { sum_http_4xx: { sum: { field: 'http_4xx' } } }, }, { feature_name: 'sum_http_5xx', feature_enabled: true, importance: 2, aggregationQuery: { sum_http_5xx: { sum: { field: 'http_5xx' } } }, }, ], uiMetadata: { features: { sum_http_4xx: { featureType: 'simple_aggs', aggregationBy: 'sum', aggregationOf: 'http_4xx', }, sum_http_5xx: { featureType: 'simple_aggs', aggregationBy: 'sum', aggregationOf: 'http_5xx', }, }, filters: [], }, detection_interval: { period: { interval: 10, unit: 'Minutes', }, }, window_delay: { period: { interval: 1, unit: 'Minutes', }, }, }, } as SAMPLE_DATA; /* *** ECOMMERCE CONSTANTS *** */ const ecommerceIndexName = 'sample-ecommerce'; const legacyEcommerceIndexName = 'opendistro-sample-ecommerce'; const ecommerceDetectorName = 'sample-ecommerce-detector'; const legacyEcommerceDetectorName = 'opendistro-sample-ecommerce-detector'; const ecommerceFieldMappings = { timestamp: { type: 'date', }, order_id: { type: 'integer', }, items_purchased_success: { type: 'integer', }, items_purchased_failure: { type: 'integer', }, total_revenue_usd: { type: 'integer', }, }; export const sampleEcommerce = { indexName: ecommerceIndexName, legacyIndexName: legacyEcommerceIndexName, detectorName: ecommerceDetectorName, legacyDetectorName: legacyEcommerceDetectorName, description: 'Detect any unusual increase or decrease of orders in an index containing online order data.', icon: , fieldMappings: ecommerceFieldMappings, indexConfig: { index: ecommerceIndexName, body: { settings: indexSettings, mappings: { properties: ecommerceFieldMappings, }, }, }, detectorConfig: { name: ecommerceDetectorName, description: 'A sample detector to detect anomalies with ecommerce logs.', time_field: 'timestamp', indices: [ecommerceIndexName], featureAttributes: [ { feature_name: 'sum_failed_items', feature_enabled: true, importance: 1, aggregationQuery: { sum_failed_items: { sum: { field: 'items_purchased_failure' } }, }, }, { feature_name: 'avg_total_revenue', feature_enabled: true, importance: 2, aggregationQuery: { avg_total_revenue: { avg: { field: 'total_revenue_usd' } }, }, }, { feature_name: 'max_total_revenue', feature_enabled: true, importance: 3, aggregationQuery: { max_total_revenue: { max: { field: 'total_revenue_usd' } }, }, }, { feature_name: 'min_total_revenue', feature_enabled: true, importance: 4, aggregationQuery: { min_total_revenue: { min: { field: 'total_revenue_usd' } }, }, }, ], uiMetadata: { features: { sum_failed_items: { featureType: 'simple_aggs', aggregationBy: 'sum', aggregationOf: 'items_purchased_failure', }, avg_total_revenue: { featureType: 'simple_aggs', aggregationBy: 'avg', aggregationOf: 'total_revenue_usd', }, max_total_revenue: { featureType: 'simple_aggs', aggregationBy: 'max', aggregationOf: 'total_revenue_usd', }, min_total_revenue: { featureType: 'simple_aggs', aggregationBy: 'min', aggregationOf: 'total_revenue_usd', }, }, filters: [], }, detection_interval: { period: { interval: 10, unit: 'Minutes', }, }, window_delay: { period: { interval: 1, unit: 'Minutes', }, }, }, } as SAMPLE_DATA; /* *** HOST HEALTH CONSTANTS *** */ const hostHealthIndexName = 'sample-host-health'; const legacyHostHealthIndexName = 'opendistro-sample-host-health'; const hostHealthDetectorName = 'sample-host-health-detector'; const legacyHostHealthDetectorName = 'opendistro-sample-host-health-detector'; const hostHealthFieldMappings = { timestamp: { type: 'date', }, cpu_usage_percentage: { type: 'integer', }, memory_usage_percentage: { type: 'integer', }, }; export const sampleHostHealth = { indexName: hostHealthIndexName, legacyIndexName: legacyHostHealthIndexName, detectorName: hostHealthDetectorName, legacyDetectorName: legacyHostHealthDetectorName, description: 'Detect increases in CPU and memory utilization in an index containing various health metrics from a host.', icon: , fieldMappings: hostHealthFieldMappings, indexConfig: { index: hostHealthIndexName, body: { settings: indexSettings, mappings: { properties: hostHealthFieldMappings, }, }, }, detectorConfig: { name: hostHealthDetectorName, description: 'A sample detector to detect anomalies with logs related to the health of a host.', time_field: 'timestamp', indices: [hostHealthIndexName], featureAttributes: [ { feature_name: 'max_cpu_usage', feature_enabled: true, importance: 1, aggregationQuery: { sum_cpu_usage: { max: { field: 'cpu_usage_percentage' } }, }, }, { feature_name: 'max_memory_usage', feature_enabled: true, importance: 2, aggregationQuery: { sum_memory_usage: { max: { field: 'memory_usage_percentage' } }, }, }, { feature_name: 'avg_cpu_usage', feature_enabled: true, importance: 3, aggregationQuery: { avg_cpu_usage: { avg: { field: 'cpu_usage_percentage' } }, }, }, { feature_name: 'avg_memory_usage', feature_enabled: true, importance: 4, aggregationQuery: { avg_memory_usage: { avg: { field: 'memory_usage_percentage' } }, }, }, ], uiMetadata: { features: { max_cpu_usage: { featureType: 'simple_aggs', aggregationBy: 'max', aggregationOf: 'cpu_usage_percentage', }, max_memory_usage: { featureType: 'simple_aggs', aggregationBy: 'max', aggregationOf: 'memory_usage_percentage', }, avg_cpu_usage: { featureType: 'simple_aggs', aggregationBy: 'avg', aggregationOf: 'cpu_usage_percentage', }, avg_memory_usage: { featureType: 'simple_aggs', aggregationBy: 'avg', aggregationOf: 'memory_usage_percentage', }, }, filters: [], }, detection_interval: { period: { interval: 10, unit: 'Minutes', }, }, window_delay: { period: { interval: 1, unit: 'Minutes', }, }, }, } as SAMPLE_DATA;