From 3d24d1943deadfbf56eb82b68b1c053362a738b2 Mon Sep 17 00:00:00 2001 From: Andrew Cholakian Date: Fri, 18 Jan 2019 08:07:03 -0800 Subject: [PATCH] 7.x field changes (#28543) In Heartbeat 7.0 there are a number of field changes that have been made to support ECS and refine the schema in other ways. This PR seeks to accomodate those changes, the most significant of which is the switch to extensive use of the ECS `url` namespace. One part of that is removing the Host dropdown filter rather than updating it. This control has always been effectively broken due to its inability to scale to a large number of hosts. Updating it makes no sense when it should be removed. --- .../uptime/common/graphql/introspection.json | 27 +++++++++++++++++ x-pack/plugins/uptime/common/graphql/types.ts | 6 ++++ .../queries/filter_bar/filter_bar.tsx | 4 +-- .../queries/monitor_list/get_monitor_list.ts | 6 ++-- .../queries/monitor_list/monitor_list.tsx | 28 +++++++++--------- .../get_monitor_status_bar.ts | 5 ++-- .../monitor_status_bar/monitor_status_bar.tsx | 29 +++++++------------ .../uptime/server/graphql/pings/schema.gql.ts | 10 +++++++ .../elasticsearch_monitors_adapter.ts | 4 +-- 9 files changed, 76 insertions(+), 43 deletions(-) diff --git a/x-pack/plugins/uptime/common/graphql/introspection.json b/x-pack/plugins/uptime/common/graphql/introspection.json index d71c749aab564..d17a16e9d8068 100644 --- a/x-pack/plugins/uptime/common/graphql/introspection.json +++ b/x-pack/plugins/uptime/common/graphql/introspection.json @@ -505,6 +505,14 @@ "type": { "kind": "OBJECT", "name": "TLS", "ofType": null }, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "url", + "description": "", + "args": [], + "type": { "kind": "OBJECT", "name": "URL", "ofType": null }, + "isDeprecated": false, + "deprecationReason": null } ], "inputFields": null, @@ -1322,6 +1330,25 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "OBJECT", + "name": "URL", + "description": "", + "fields": [ + { + "name": "full", + "description": "", + "args": [], + "type": { "kind": "SCALAR", "name": "String", "ofType": null }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, { "kind": "OBJECT", "name": "DocCount", diff --git a/x-pack/plugins/uptime/common/graphql/types.ts b/x-pack/plugins/uptime/common/graphql/types.ts index 988aedbc265ea..7b4cc41392b90 100644 --- a/x-pack/plugins/uptime/common/graphql/types.ts +++ b/x-pack/plugins/uptime/common/graphql/types.ts @@ -70,6 +70,8 @@ export interface Ping { tcp?: Tcp | null; tls?: Tls | null; + + url?: Url | null; } /** An agent for recording a beat */ export interface Beat { @@ -258,6 +260,10 @@ export interface Tls { rtt?: Rtt | null; } +export interface Url { + full?: string | null; +} + export interface DocCount { count: UnsignedInteger; } diff --git a/x-pack/plugins/uptime/public/components/queries/filter_bar/filter_bar.tsx b/x-pack/plugins/uptime/public/components/queries/filter_bar/filter_bar.tsx index b83970e47cea3..b9306428d0d53 100644 --- a/x-pack/plugins/uptime/public/components/queries/filter_bar/filter_bar.tsx +++ b/x-pack/plugins/uptime/public/components/queries/filter_bar/filter_bar.tsx @@ -67,8 +67,8 @@ export const FilterBar = ({ dateRangeEnd, dateRangeStart, updateQuery }: FilterB { type: 'field_value_selection', field: 'monitor.id', - name: i18n.translate('xpack.uptime.filterBar.options.hostLabel', { - defaultMessage: 'Host', + name: i18n.translate('xpack.uptime.filterBar.options.idLabel', { + defaultMessage: 'ID', }), multiSelect: false, options: take(id, MAX_SELECTION_LENGTH).map((idValue: any) => ({ diff --git a/x-pack/plugins/uptime/public/components/queries/monitor_list/get_monitor_list.ts b/x-pack/plugins/uptime/public/components/queries/monitor_list/get_monitor_list.ts index ed93ef8ef45a8..41462fe7fb44e 100644 --- a/x-pack/plugins/uptime/public/components/queries/monitor_list/get_monitor_list.ts +++ b/x-pack/plugins/uptime/public/components/queries/monitor_list/get_monitor_list.ts @@ -25,14 +25,16 @@ export const getMonitorListQuery = gql` ping { timestamp monitor { + id status - type - host ip duration { us } } + url { + full + } } upSeries { x diff --git a/x-pack/plugins/uptime/public/components/queries/monitor_list/monitor_list.tsx b/x-pack/plugins/uptime/public/components/queries/monitor_list/monitor_list.tsx index a612f342b3b5a..a5e95a14d1863 100644 --- a/x-pack/plugins/uptime/public/components/queries/monitor_list/monitor_list.tsx +++ b/x-pack/plugins/uptime/public/components/queries/monitor_list/monitor_list.tsx @@ -10,6 +10,7 @@ import { EuiInMemoryTable, // @ts-ignore missing type definition EuiLineSeries, + EuiLink, EuiPanel, // @ts-ignore missing type definition EuiSeriesChart, @@ -65,25 +66,22 @@ const monitorListColumns = [ sortable: true, }, { - field: 'ping.monitor.host', - name: i18n.translate('xpack.uptime.monitorList.hostColumnLabel', { - defaultMessage: 'Host', + field: 'ping.monitor.id', + name: i18n.translate('xpack.uptime.monitorList.idColumnLabel', { + defaultMessage: 'ID', }), - render: (host: string, monitor: any) => {host}, + render: (id: string, monitor: any) => {id}, }, { - field: 'key.port', - name: i18n.translate('xpack.uptime.monitorList.portColumnLabel', { - defaultMessage: 'Port', + field: 'ping.url.full', + name: i18n.translate('xpack.uptime.monitorList.urlColumnLabel', { + defaultMessage: 'URL', }), - sortable: true, - }, - { - field: 'ping.monitor.type', - name: i18n.translate('xpack.uptime.monitorList.typeColumnLabel', { - defaultMessage: 'Type', - }), - sortable: true, + render: (url: string, monitor: any) => ( + + {url} + + ), }, { field: 'ping.monitor.ip', diff --git a/x-pack/plugins/uptime/public/components/queries/monitor_status_bar/get_monitor_status_bar.ts b/x-pack/plugins/uptime/public/components/queries/monitor_status_bar/get_monitor_status_bar.ts index 12fd1a09985d4..0eca6693ac84c 100644 --- a/x-pack/plugins/uptime/public/components/queries/monitor_status_bar/get_monitor_status_bar.ts +++ b/x-pack/plugins/uptime/public/components/queries/monitor_status_bar/get_monitor_status_bar.ts @@ -25,10 +25,9 @@ export const createGetMonitorStatusBarQuery = gql` duration { us } - scheme } - tcp { - port + url { + full } } } diff --git a/x-pack/plugins/uptime/public/components/queries/monitor_status_bar/monitor_status_bar.tsx b/x-pack/plugins/uptime/public/components/queries/monitor_status_bar/monitor_status_bar.tsx index 5d3f766b7b909..53f9577306ada 100644 --- a/x-pack/plugins/uptime/public/components/queries/monitor_status_bar/monitor_status_bar.tsx +++ b/x-pack/plugins/uptime/public/components/queries/monitor_status_bar/monitor_status_bar.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { EuiFlexGroup, EuiFlexItem, EuiHealth, EuiPanel } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiHealth, EuiLink, EuiPanel } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import moment from 'moment'; @@ -55,11 +55,10 @@ export const MonitorStatusBar = ({ monitor: { status, timestamp, - host, + ip, duration: { us }, - scheme, }, - tcp: { port }, + url: { full: fullURL }, } = monitorStatus[0]; return ( @@ -99,17 +98,16 @@ export const MonitorStatusBar = ({ /> - + + {fullURL} + @@ -120,13 +118,6 @@ export const MonitorStatusBar = ({ defaultMessage="Duration: {duration} ms" /> - - - ); diff --git a/x-pack/plugins/uptime/server/graphql/pings/schema.gql.ts b/x-pack/plugins/uptime/server/graphql/pings/schema.gql.ts index 33796c25e7831..b0ca434da881a 100644 --- a/x-pack/plugins/uptime/server/graphql/pings/schema.gql.ts +++ b/x-pack/plugins/uptime/server/graphql/pings/schema.gql.ts @@ -180,6 +180,15 @@ export const pingsSchema = gql` rtt: RTT } + type URL { + full: String + scheme: String + domain: String + port: Int + path: String + query: String + } + "A request sent from a monitor to a host" type Ping { "The timestamp of the ping's creation" @@ -199,5 +208,6 @@ export const pingsSchema = gql` tags: String tcp: TCP tls: TLS + url: URL } `; diff --git a/x-pack/plugins/uptime/server/lib/adapters/monitors/elasticsearch_monitors_adapter.ts b/x-pack/plugins/uptime/server/lib/adapters/monitors/elasticsearch_monitors_adapter.ts index 99b8f88f0f0f4..b5d988d2c188b 100644 --- a/x-pack/plugins/uptime/server/lib/adapters/monitors/elasticsearch_monitors_adapter.ts +++ b/x-pack/plugins/uptime/server/lib/adapters/monitors/elasticsearch_monitors_adapter.ts @@ -152,7 +152,7 @@ export class ElasticsearchMonitorsAdapter implements UMMonitorsAdapter { body: { query: getFilteredQuery(dateRangeStart, dateRangeEnd, filters), aggs: { - hosts: { + urls: { composite: { sources: [ { @@ -165,7 +165,7 @@ export class ElasticsearchMonitorsAdapter implements UMMonitorsAdapter { { port: { terms: { - field: 'tcp.port', + field: 'url.full', }, }, },