From 550e96e03e331062804289e5af1abdddf5a7d899 Mon Sep 17 00:00:00 2001 From: Devon Kim Date: Fri, 17 Jan 2020 13:24:32 -0500 Subject: [PATCH 01/18] #14629 initial commit of kibana dashboard for STAN metricbeat module --- metricbeat/docs/modules/stan.asciidoc | 5 + metricbeat/docs/modules_list.asciidoc | 2 +- .../kibana/7/Metricbeat-STAN-overview.json | 261 ++++++++++++++++++ 3 files changed, 267 insertions(+), 1 deletion(-) create mode 100644 x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json diff --git a/metricbeat/docs/modules/stan.asciidoc b/metricbeat/docs/modules/stan.asciidoc index 3efe11c72e0..5839179f833 100644 --- a/metricbeat/docs/modules/stan.asciidoc +++ b/metricbeat/docs/modules/stan.asciidoc @@ -17,6 +17,11 @@ The default metricsets are `channels`, `stats` and `subscriptions`. The STAN module is tested with STAN 0.15.1. +[float] +== Dashboard +Dashboards for topic message count and queue depth are included: + +image::./images/metricbeat-stan-overview.png[] [float] === Example configuration diff --git a/metricbeat/docs/modules_list.asciidoc b/metricbeat/docs/modules_list.asciidoc index c07155249a3..26d6e42f35b 100644 --- a/metricbeat/docs/modules_list.asciidoc +++ b/metricbeat/docs/modules_list.asciidoc @@ -189,7 +189,7 @@ This file is generated! See scripts/mage/docs_collector.go |<> |<> beta[] |image:./images/icon-no.png[No prebuilt dashboards] | .1+| .1+| |<> beta[] -|<> beta[] |image:./images/icon-no.png[No prebuilt dashboards] | +|<> beta[] |image:./images/icon-yes.png[Pre built dashboards are available] | .3+| .3+| |<> beta[] |<> beta[] |<> beta[] diff --git a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json new file mode 100644 index 00000000000..eaf7cdaf09c --- /dev/null +++ b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json @@ -0,0 +1,261 @@ +{ + "objects": [ + { + "attributes": { + "description": "Metrics for STAN channels / subjects", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "STAN Metricbeats" + } + } + }, + "optionsJSON": { + "hidePanelTitles": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "e7171c3e-936d-4549-b913-1a8651ef55b8", + "w": 24, + "x": 0, + "y": 0 + }, + "panelIndex": "e7171c3e-936d-4549-b913-1a8651ef55b8", + "panelRefName": "panel_0", + "version": "7.5.1" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "370515c5-80da-4288-aec4-7dca8107ef8e", + "w": 24, + "x": 24, + "y": 0 + }, + "panelIndex": "370515c5-80da-4288-aec4-7dca8107ef8e", + "panelRefName": "panel_1", + "version": "7.5.1" + } + ], + "timeRestore": false, + "title": "STAN Channel Metrics", + "version": 1 + }, + "id": "dbf2e220-37ce-11ea-a9c8-152a657da3ab", + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "fbc095e0-37cc-11ea-a9c8-152a657da3ab", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "9385f9a0-33f0-11ea-a9c8-152a657da3ab", + "name": "panel_1", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-01-15T19:40:18.114Z", + "version": "WzQ5LDFd" + }, + { + "attributes": { + "description": "Total number of messages in each channel / subject", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "STAN Channel Messages [Metricbeat ECS]", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [], + "params": { + "annotations": [ + { + "color": "#F00", + "fields": "", + "icon": "fa-tag", + "id": "f876b980-37b5-11ea-a566-c550422d89d4", + "ignore_global_filters": 1, + "ignore_panel_filters": 1, + "index_pattern": "metricbeat-*", + "query_string": { + "language": "kuery", + "query": "" + }, + "template": "", + "time_field": "@timestamp" + } + ], + "axis_formatter": "number", + "axis_position": "left", + "axis_scale": "normal", + "default_index_pattern": "metricbeat-*", + "default_timefield": "@timestamp", + "id": "61ca57f0-469d-11e7-af02-69e470af7417", + "index_pattern": "", + "interval": "", + "isModelInvalid": false, + "series": [ + { + "axis_position": "right", + "chart_type": "bar", + "color": "#68BC00", + "fill": 0.5, + "formatter": "number", + "id": "61ca57f1-469d-11e7-af02-69e470af7417", + "label": "STAN Queue Messages", + "line_width": 1, + "metrics": [ + { + "field": "stan.channels.messages", + "id": "61ca57f2-469d-11e7-af02-69e470af7417", + "type": "sum" + } + ], + "point_size": 1, + "separate_axis": 0, + "split_color_mode": "gradient", + "split_mode": "terms", + "stacked": "none", + "terms_field": "stan.channels.name.keyword", + "type": "timeseries" + } + ], + "show_grid": 1, + "show_legend": 1, + "time_field": "", + "type": "timeseries" + }, + "title": "STAN Channel Messages [Metricbeat ECS]", + "type": "metrics" + } + }, + "id": "fbc095e0-37cc-11ea-a9c8-152a657da3ab", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-01-15T19:34:50.914Z", + "version": "WzQ2LDFd" + }, + { + "attributes": { + "description": "Queue depth of STAN channels, summed per channel", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "STAN Channel Queue Depth [Metricbeat ECS]", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [], + "params": { + "axis_formatter": "number", + "axis_position": "left", + "axis_scale": "normal", + "background_color_rules": [ + { + "id": "1cfde3b0-33f0-11ea-a5a9-419b0c5b7a83" + } + ], + "bar_color_rules": [ + { + "id": "1e324500-33f0-11ea-a5a9-419b0c5b7a83", + "operator": "gt", + "value": 10 + } + ], + "default_index_pattern": "metricbeat-*", + "default_timefield": "@timestamp", + "drilldown_url": "", + "filter": { + "language": "kuery", + "query": "" + }, + "gauge_color_rules": [ + { + "id": "9caf12a0-3634-11ea-a566-c550422d89d4" + } + ], + "gauge_inner_width": 10, + "gauge_style": "half", + "gauge_width": 10, + "id": "61ca57f0-469d-11e7-af02-69e470af7417", + "index_pattern": "", + "interval": "", + "isModelInvalid": false, + "series": [ + { + "axis_position": "right", + "chart_type": "bar", + "color": "#68BC00", + "fill": 0.5, + "filter": { + "language": "kuery", + "query": "" + }, + "formatter": "number", + "id": "61ca57f1-469d-11e7-af02-69e470af7417", + "label": "Queue Depth", + "line_width": 1, + "metrics": [ + { + "field": "stan.channels.depth", + "id": "61ca57f2-469d-11e7-af02-69e470af7417", + "type": "sum" + } + ], + "point_size": 1, + "separate_axis": 0, + "split_mode": "terms", + "stacked": "none", + "terms_field": "stan.channels.name.keyword", + "type": "timeseries" + } + ], + "show_grid": 1, + "show_legend": 1, + "time_field": "", + "type": "timeseries" + }, + "title": "STAN Channel Queue Depth [Metricbeat ECS]", + "type": "metrics" + } + }, + "id": "9385f9a0-33f0-11ea-a9c8-152a657da3ab", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-01-15T19:34:29.870Z", + "version": "WzQ1LDFd" + } + ], + "version": "7.5.1" +} \ No newline at end of file From 4da298048df5675f6dc53e701708d35eae5f4473 Mon Sep 17 00:00:00 2001 From: Devon Kim Date: Fri, 17 Jan 2020 15:50:25 -0500 Subject: [PATCH 02/18] Fix docs --- metricbeat/docs/modules/stan.asciidoc | 1 + metricbeat/docs/modules_list.asciidoc | 2 +- metricbeat/include/list_common.go | 1 + x-pack/metricbeat/module/stan/_meta/docs.asciidoc | 6 ++++++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/metricbeat/docs/modules/stan.asciidoc b/metricbeat/docs/modules/stan.asciidoc index 5839179f833..1d569882570 100644 --- a/metricbeat/docs/modules/stan.asciidoc +++ b/metricbeat/docs/modules/stan.asciidoc @@ -23,6 +23,7 @@ Dashboards for topic message count and queue depth are included: image::./images/metricbeat-stan-overview.png[] + [float] === Example configuration diff --git a/metricbeat/docs/modules_list.asciidoc b/metricbeat/docs/modules_list.asciidoc index 26d6e42f35b..41a42c4644b 100644 --- a/metricbeat/docs/modules_list.asciidoc +++ b/metricbeat/docs/modules_list.asciidoc @@ -189,7 +189,7 @@ This file is generated! See scripts/mage/docs_collector.go |<> |<> beta[] |image:./images/icon-no.png[No prebuilt dashboards] | .1+| .1+| |<> beta[] -|<> beta[] |image:./images/icon-yes.png[Pre built dashboards are available] | +|<> beta[] |image:./images/icon-yes.png[Prebuilt dashboards are available] | .3+| .3+| |<> beta[] |<> beta[] |<> beta[] diff --git a/metricbeat/include/list_common.go b/metricbeat/include/list_common.go index 17318c683e8..a3f31fb046f 100644 --- a/metricbeat/include/list_common.go +++ b/metricbeat/include/list_common.go @@ -128,6 +128,7 @@ import ( _ "github.com/elastic/beats/metricbeat/module/redis/info" _ "github.com/elastic/beats/metricbeat/module/redis/key" _ "github.com/elastic/beats/metricbeat/module/redis/keyspace" + _ "github.com/elastic/beats/metricbeat/module/stan" _ "github.com/elastic/beats/metricbeat/module/system" _ "github.com/elastic/beats/metricbeat/module/system/core" _ "github.com/elastic/beats/metricbeat/module/system/cpu" diff --git a/x-pack/metricbeat/module/stan/_meta/docs.asciidoc b/x-pack/metricbeat/module/stan/_meta/docs.asciidoc index 7d78f5672b1..e50e7bb6ec0 100644 --- a/x-pack/metricbeat/module/stan/_meta/docs.asciidoc +++ b/x-pack/metricbeat/module/stan/_meta/docs.asciidoc @@ -6,3 +6,9 @@ The default metricsets are `channels`, `stats` and `subscriptions`. === Compatibility The STAN module is tested with STAN 0.15.1. + +[float] +== Dashboard +Dashboards for topic message count and queue depth are included: + +image::./images/metricbeat-stan-overview.png[] From 12d8dcec95eb2f3d356da5fa4eb6c837f536ac07 Mon Sep 17 00:00:00 2001 From: Devon Kim Date: Fri, 17 Jan 2020 16:05:08 -0500 Subject: [PATCH 03/18] Add fields for STAN metricbeat module --- .../docs/images/metricbeat-stan-overview.png | Bin 0 -> 68134 bytes metricbeat/module/stan/fields.go | 36 ++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 metricbeat/docs/images/metricbeat-stan-overview.png create mode 100644 metricbeat/module/stan/fields.go diff --git a/metricbeat/docs/images/metricbeat-stan-overview.png b/metricbeat/docs/images/metricbeat-stan-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ed419fe885b0b5756d6fefcef6c9b8dbcca7ee GIT binary patch literal 68134 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 literal 0 HcmV?d00001 diff --git a/metricbeat/module/stan/fields.go b/metricbeat/module/stan/fields.go new file mode 100644 index 00000000000..912d5f898be --- /dev/null +++ b/metricbeat/module/stan/fields.go @@ -0,0 +1,36 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. + +package stan + +import ( + "github.com/elastic/beats/libbeat/asset" +) + +func init() { + if err := asset.SetFields("metricbeat", "stan", asset.ModuleFieldsPri, AssetStan); err != nil { + panic(err) + } +} + +// AssetStan returns asset data. +// This is the base64 encoded gzipped contents of ../metricbeat/module/stan. +func AssetStan() string { + return "eJwBAAD//wAAAAE=" +} From 8616f5068b250d0bdf568285ba6617b92dd9c3af Mon Sep 17 00:00:00 2001 From: Devon Kim Date: Fri, 17 Jan 2020 17:18:32 -0500 Subject: [PATCH 04/18] STAN module dashboard name fix --- .../stan/_meta/kibana/7/Metricbeat-STAN-overview.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json index eaf7cdaf09c..3c0655bdc63 100644 --- a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json +++ b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json @@ -81,7 +81,7 @@ } } }, - "title": "STAN Channel Messages [Metricbeat ECS]", + "title": "[Metricbeat ECS] STAN Channel Messages", "uiStateJSON": {}, "version": 1, "visState": { @@ -144,7 +144,7 @@ "time_field": "", "type": "timeseries" }, - "title": "STAN Channel Messages [Metricbeat ECS]", + "title": "[Metricbeat ECS] STAN Channel Messages", "type": "metrics" } }, @@ -169,7 +169,7 @@ } } }, - "title": "STAN Channel Queue Depth [Metricbeat ECS]", + "title": "[Metricbeat ECS] STAN Channel Queue Depth", "uiStateJSON": {}, "version": 1, "visState": { @@ -258,4 +258,4 @@ } ], "version": "7.5.1" -} \ No newline at end of file +} From e16ccd8ad896649b977c35ecc212365c4a005ed2 Mon Sep 17 00:00:00 2001 From: Devon Kim Date: Tue, 21 Jan 2020 12:14:58 -0500 Subject: [PATCH 05/18] Trying to fix staleness checks despite make fmt update galore --- metricbeat/include/list_common.go | 1 - 1 file changed, 1 deletion(-) diff --git a/metricbeat/include/list_common.go b/metricbeat/include/list_common.go index a3f31fb046f..17318c683e8 100644 --- a/metricbeat/include/list_common.go +++ b/metricbeat/include/list_common.go @@ -128,7 +128,6 @@ import ( _ "github.com/elastic/beats/metricbeat/module/redis/info" _ "github.com/elastic/beats/metricbeat/module/redis/key" _ "github.com/elastic/beats/metricbeat/module/redis/keyspace" - _ "github.com/elastic/beats/metricbeat/module/stan" _ "github.com/elastic/beats/metricbeat/module/system" _ "github.com/elastic/beats/metricbeat/module/system/core" _ "github.com/elastic/beats/metricbeat/module/system/cpu" From b65cdd78c7d3b22df1dbd1bd41dae2f09291bc50 Mon Sep 17 00:00:00 2001 From: Devon Kim Date: Tue, 21 Jan 2020 14:04:32 -0500 Subject: [PATCH 06/18] change dashboard title formatting --- .../stan/_meta/kibana/7/Metricbeat-STAN-overview.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json index 3c0655bdc63..04f66b0dca9 100644 --- a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json +++ b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json @@ -46,7 +46,7 @@ } ], "timeRestore": false, - "title": "STAN Channel Metrics", + "title": "[Metricbeat Module] STAN Channel Metrics", "version": 1 }, "id": "dbf2e220-37ce-11ea-a9c8-152a657da3ab", @@ -81,7 +81,7 @@ } } }, - "title": "[Metricbeat ECS] STAN Channel Messages", + "title": "STAN Channel Messages [Metricbeat Module]", "uiStateJSON": {}, "version": 1, "visState": { @@ -144,7 +144,7 @@ "time_field": "", "type": "timeseries" }, - "title": "[Metricbeat ECS] STAN Channel Messages", + "title": "STAN Channel Messages [Metricbeat Module]", "type": "metrics" } }, @@ -169,7 +169,7 @@ } } }, - "title": "[Metricbeat ECS] STAN Channel Queue Depth", + "title": "STAN Channel Queue Depth [Metricbeat Module]", "uiStateJSON": {}, "version": 1, "visState": { @@ -243,7 +243,7 @@ "time_field": "", "type": "timeseries" }, - "title": "STAN Channel Queue Depth [Metricbeat ECS]", + "title": "STAN Channel Queue Depth [Metricbeat Module]", "type": "metrics" } }, From 126989b0b24218a8060dbaacfb835dbcf6372190 Mon Sep 17 00:00:00 2001 From: Devon Kim <56362295+devon-kim@users.noreply.github.com> Date: Thu, 23 Jan 2020 11:18:03 -0500 Subject: [PATCH 07/18] Update x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json Co-Authored-By: Chris Mark --- .../module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json index 04f66b0dca9..33f8f8057e2 100644 --- a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json +++ b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json @@ -169,7 +169,7 @@ } } }, - "title": "STAN Channel Queue Depth [Metricbeat Module]", + "title": "Channel Queue Depth [Metricbeat STAN]", "uiStateJSON": {}, "version": 1, "visState": { From cd4fd2e0683ccdd9e0c7ff6ddd5546edcac3aec2 Mon Sep 17 00:00:00 2001 From: Devon Kim <56362295+devon-kim@users.noreply.github.com> Date: Thu, 23 Jan 2020 11:18:09 -0500 Subject: [PATCH 08/18] Update x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json Co-Authored-By: Chris Mark --- .../module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json index 33f8f8057e2..93d65651be0 100644 --- a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json +++ b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json @@ -243,7 +243,7 @@ "time_field": "", "type": "timeseries" }, - "title": "STAN Channel Queue Depth [Metricbeat Module]", + "title": "Channel Queue Depth [Metricbeat STAN]", "type": "metrics" } }, From 159d76d8b40596106c177d3cfc9ef8759b4db9de Mon Sep 17 00:00:00 2001 From: Devon Kim Date: Thu, 23 Jan 2020 11:20:28 -0500 Subject: [PATCH 09/18] Fix STAN file path --- x-pack/metricbeat/module/stan/module.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/metricbeat/module/stan/module.yml b/x-pack/metricbeat/module/stan/module.yml index 4a73fd82528..a297032b0f5 100644 --- a/x-pack/metricbeat/module/stan/module.yml +++ b/x-pack/metricbeat/module/stan/module.yml @@ -1,3 +1,3 @@ dashboards: - id: Metricbeat-STAN-Dashboard - file: Metricbeat-stan-overview.json + file: Metricbeat-STAN-overview.json From 01e3d8b3c87994934ebb20924dbf65e7fb71eb2e Mon Sep 17 00:00:00 2001 From: Devon Kim <56362295+devon-kim@users.noreply.github.com> Date: Thu, 23 Jan 2020 11:22:13 -0500 Subject: [PATCH 10/18] Update x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json Co-Authored-By: Chris Mark --- .../module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json index 93d65651be0..a4e8c05dbc6 100644 --- a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json +++ b/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json @@ -46,7 +46,7 @@ } ], "timeRestore": false, - "title": "[Metricbeat Module] STAN Channel Metrics", + "title": "[Metricbeat STAN] Channel Overview Metrics", "version": 1 }, "id": "dbf2e220-37ce-11ea-a9c8-152a657da3ab", From 35ad75b6ebf0756562cd56984408c5e31d802178 Mon Sep 17 00:00:00 2001 From: Devon Kim Date: Thu, 23 Jan 2020 11:23:54 -0500 Subject: [PATCH 11/18] Add changelog entry --- CHANGELOG.next.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 9663902cf88..223e5304c11 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -98,6 +98,7 @@ TLS or Beats that accept connections over TLS and validate client certificates. - Add a `system/network_summary` metricset {pull}15196[15196] - Add mesh metricset for Istio Metricbeat module{pull}15535[15535] - Make the `system/cpu` metricset collect normalized CPU metrics by default. {issue}15618[15618] {pull}15729[15729] +- Add STAN dashboard {pull}15654[15654] *Packetbeat* From 129b9e85102ead05166dbf6ce73a504d0139cc0b Mon Sep 17 00:00:00 2001 From: Devon Kim Date: Thu, 23 Jan 2020 13:54:53 -0500 Subject: [PATCH 12/18] Fix dashboard path presumption from tests --- metricbeat/docs/fields.asciidoc | 1 - x-pack/metricbeat/module/stan/_meta/fields.yml | 3 +-- .../7/{ => dashboard}/Metricbeat-STAN-overview.json | 10 +++++----- x-pack/metricbeat/module/stan/fields.go | 2 +- 4 files changed, 7 insertions(+), 9 deletions(-) rename x-pack/metricbeat/module/stan/_meta/kibana/7/{ => dashboard}/Metricbeat-STAN-overview.json (96%) diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 472d6794091..1acb281578b 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -31244,7 +31244,6 @@ type: object stan Module - [float] === stan diff --git a/x-pack/metricbeat/module/stan/_meta/fields.yml b/x-pack/metricbeat/module/stan/_meta/fields.yml index c4f3af644b7..15118c07e9d 100644 --- a/x-pack/metricbeat/module/stan/_meta/fields.yml +++ b/x-pack/metricbeat/module/stan/_meta/fields.yml @@ -1,7 +1,6 @@ - key: stan title: "Stan" - description: > - stan Module + description: stan Module release: beta fields: - name: stan diff --git a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json b/x-pack/metricbeat/module/stan/_meta/kibana/7/dashboard/Metricbeat-STAN-overview.json similarity index 96% rename from x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json rename to x-pack/metricbeat/module/stan/_meta/kibana/7/dashboard/Metricbeat-STAN-overview.json index a4e8c05dbc6..91dd6ba696e 100644 --- a/x-pack/metricbeat/module/stan/_meta/kibana/7/Metricbeat-STAN-overview.json +++ b/x-pack/metricbeat/module/stan/_meta/kibana/7/dashboard/Metricbeat-STAN-overview.json @@ -46,7 +46,7 @@ } ], "timeRestore": false, - "title": "[Metricbeat STAN] Channel Overview Metrics", + "title": "[Metricbeat Stan] Channel Overview Metrics", "version": 1 }, "id": "dbf2e220-37ce-11ea-a9c8-152a657da3ab", @@ -81,7 +81,7 @@ } } }, - "title": "STAN Channel Messages [Metricbeat Module]", + "title": "Channel Messages [Metricbeat Stan]", "uiStateJSON": {}, "version": 1, "visState": { @@ -144,7 +144,7 @@ "time_field": "", "type": "timeseries" }, - "title": "STAN Channel Messages [Metricbeat Module]", + "title": "Channel Messages [Metricbeat Stan]", "type": "metrics" } }, @@ -169,7 +169,7 @@ } } }, - "title": "Channel Queue Depth [Metricbeat STAN]", + "title": "Channel Queue Depth [Metricbeat Stan]", "uiStateJSON": {}, "version": 1, "visState": { @@ -243,7 +243,7 @@ "time_field": "", "type": "timeseries" }, - "title": "Channel Queue Depth [Metricbeat STAN]", + "title": "Channel Queue Depth [Metricbeat Stan]", "type": "metrics" } }, diff --git a/x-pack/metricbeat/module/stan/fields.go b/x-pack/metricbeat/module/stan/fields.go index 84c15e23e8a..c416d5fb607 100644 --- a/x-pack/metricbeat/module/stan/fields.go +++ b/x-pack/metricbeat/module/stan/fields.go @@ -19,5 +19,5 @@ func init() { // AssetStan returns asset data. // This is the base64 encoded gzipped contents of module/stan. func AssetStan() string { - return "eJy8l0Fv4zYQhe/+FYPtJQGSzd2HLYIkCwRIXbROT0WxS4kjmzA1VDijNdxfX1AyFVmik6CVqkNgyPK8j0+TN+Q17PCwBBZFCwAxYnEJn9ai6NMCQCPn3lRiHC3hywIAmifhF6driwsAjxYV4xIyFLUAKAxazcvmyWsgVWJXO1xyqHAJG+/q6ngnoRCu7+FH3yF3JMoQhxpiWEzOIFslsEeP4FFpKLwrYaWEYS0eVWloA4z+B3q4WD/fri6PNftkJ3TNs5+N7r6JmDs87J3v3z8DG67nLUbZx/uRSG5rlolUjrWSMltFhJZHIn3H35G461lOcAMUrOVo7U27xr8BSVfOkECJ4k3elxz2RLyGb6BPHv6efHHennf4o02hIrgCZIsQ+uB1DdGmJEiJzGqDnISxjjb/gqQuM/SBZcCR1Iog2UHmpGjKg6HGn7cMKYxn+cb4MhHL11APGF9qpLzDYnEe9YDnMzwWr/rwBUpDF3+Gj4aA66zT4b8uQStRYB0zbBVD5ZhNZg/g8rz2HnVybVZNurQn9dGVJWk0VrKdCOW3GmtsK0KmGDXUlSNovKAxpCINW7PZIgt4rJwX1NHhZhGnz49DVJRMkzqO7KFBubb4A206hWLSerQqkE6TQWERE4dQzOqbfvo4Ksym9ir8sBVtJ9X97dOvq4cruHv6Y/388PvD/WUS0zs7IeVjESFRXzW129A0DOQ0dn17XMjFEyqN/gq+OmvdPny6U6SNVoJp3NwaJEknmSHBTa+dPuzrIMxSGt1b7efErBS99jyr+caknsGWlMhMg27VScfCoHIf4lhZ2+K8hEyaf9i9krQzLnfEdYn6IzzjYDvzJmffVvWFJ8o3M4yGqXdYx347Zb9o/zm/GX0mHxITcT60cOMEzzAoZpebZpDszWACR8qmV+ZjXN0+r1uN9njztqVj5iswBSg6dEI//U9bJ5Ip9047cnsabU6OHp1Y0B4CVQiZ3RnCCkmbEcZ/T5Vj3deca06gNyCuj5kN8jtSuaKwhtKtlDlnsTsrfxDskQeyUCq/C3HHUeznc9sdazGdCRORtO9THGQY5U5ZFv8EAAD//z+0hbY=" + return "eJy8l09v4zYQxe/+FIPtJQGSzd2HLYIkCwRIXbROT0WxS4kjmzA1VDijNdxPX1ASFf1zErRSdQgMWZ7349PkDXkNBzytgUXRCkCMWFzDp60o+rQC0MipN4UYR/Uz8IvTpcUVgEeLinENCYpaAWQGreb1CgDgGkjl2FYNl5wKXMPOu7Jo7vRqf2luAnwPP/oOqSNRhjjUEMNiUgbZK4EjegSPSkPmXQ4bJQxb8ahyQztg9D/Qw8X2+XZz2dTskvXoqmc/G91+EzEPeDo6371/BjZcz3uMso/3I5HUliwzqTS1JmX2iggtj0S6jr8jcdexnOAGKFjL0dqbeo1/A5IunCGBHMWbtCs57Il4Dd9Alzz87X1x3p53+KNNoSK4DGSPEPrgdQ3RpkmQHJnVDnkSxjra/QuSMk/QB5YBx6RWBElOsiRFVR4MVf68ZUhmPMs3xpeZWL6GesD4UiKlLRaL86gHPJ/hMXvVhy+QG7r4M3w0BFwmrQ7/dQlaiQLrmGGvGArHbBJ7ApempfeoJ9dm1axLe1IfXdkkjcZC9jOh/FZiiXVFSBSjhrJwBJUXNIZUpGFvdntkAY+F84I6Olwtov/8OERFyTyp48ieKpRriz/QTqdQTFqPVgXSeTIoLGLmEIpZfdNNH0eZ2ZVehR/WovWkur99+nXzcAV3T39snx9+f7i/nMT0zs5I+ZhFSNRXVe06NA0DOY1t3zYLuXhCpdFfwVdnrTuGT3eKtNFKcBo3tQZJppPMkOCu004f9nUQZlMa7Vvt5sSiFJ32PKv5xqRewJYpkYUG3aaVjoVBpT7EsbK2xnkJmbT8sHslqWdc6ojLHPVHeMbBduZNLr6t6grPlG9mGA1z77CafuuzX9T/nN+MPpMPExNxObRwo4dnGBSzS001SI5mMIEjZdUryzFubp+3tUZ9vHnb0jHzFZgMFJ1aoZ/+p60TyZx7pwO5I402J41HPQvqQ6AKIXM4Q1ggaTPC+O+p0tR9zbnqBHoD4rqYySC/I5XLMmtoupUS5yy2Z+UPgj3yQBZy5Q8h7jiK/Xxuu2MtTmfCTCT1+xQHCUa5PsvqnwAAAP//LcGE7g==" } From cb1c13f2d7de3db6ec6eeae8f6390e491c2a53c5 Mon Sep 17 00:00:00 2001 From: Chris Mark Date: Fri, 24 Jan 2020 10:56:51 +0200 Subject: [PATCH 13/18] Update fields.yml --- x-pack/metricbeat/module/stan/_meta/fields.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/metricbeat/module/stan/_meta/fields.yml b/x-pack/metricbeat/module/stan/_meta/fields.yml index 15118c07e9d..c4f3af644b7 100644 --- a/x-pack/metricbeat/module/stan/_meta/fields.yml +++ b/x-pack/metricbeat/module/stan/_meta/fields.yml @@ -1,6 +1,7 @@ - key: stan title: "Stan" - description: stan Module + description: > + stan Module release: beta fields: - name: stan From 977329887f403a65e7faeaf1c7a6c5c6392aca00 Mon Sep 17 00:00:00 2001 From: Chris Mark Date: Fri, 24 Jan 2020 11:03:02 +0200 Subject: [PATCH 14/18] Update fields.asciidoc --- metricbeat/docs/fields.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 1acb281578b..472d6794091 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -31244,6 +31244,7 @@ type: object stan Module + [float] === stan From c14fae1b2811a872fe284c597075e7d5b30ef542 Mon Sep 17 00:00:00 2001 From: Chris Mark Date: Fri, 24 Jan 2020 11:23:10 +0200 Subject: [PATCH 15/18] Delete fields.go --- metricbeat/module/stan/fields.go | 36 -------------------------------- 1 file changed, 36 deletions(-) delete mode 100644 metricbeat/module/stan/fields.go diff --git a/metricbeat/module/stan/fields.go b/metricbeat/module/stan/fields.go deleted file mode 100644 index 912d5f898be..00000000000 --- a/metricbeat/module/stan/fields.go +++ /dev/null @@ -1,36 +0,0 @@ -// Licensed to Elasticsearch B.V. under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. Elasticsearch B.V. licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package stan - -import ( - "github.com/elastic/beats/libbeat/asset" -) - -func init() { - if err := asset.SetFields("metricbeat", "stan", asset.ModuleFieldsPri, AssetStan); err != nil { - panic(err) - } -} - -// AssetStan returns asset data. -// This is the base64 encoded gzipped contents of ../metricbeat/module/stan. -func AssetStan() string { - return "eJwBAAD//wAAAAE=" -} From 5fb3b74316e5443a053e5be1bb7832aefe068a1e Mon Sep 17 00:00:00 2001 From: Chris Mark Date: Fri, 24 Jan 2020 11:39:05 +0200 Subject: [PATCH 16/18] Update fields.go --- x-pack/metricbeat/module/stan/fields.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/metricbeat/module/stan/fields.go b/x-pack/metricbeat/module/stan/fields.go index c416d5fb607..ba3f04f58ca 100644 --- a/x-pack/metricbeat/module/stan/fields.go +++ b/x-pack/metricbeat/module/stan/fields.go @@ -19,5 +19,4 @@ func init() { // AssetStan returns asset data. // This is the base64 encoded gzipped contents of module/stan. func AssetStan() string { - return "eJy8l09v4zYQxe/+FIPtJQGSzd2HLYIkCwRIXbROT0WxS4kjmzA1VDijNdxPX1ASFf1zErRSdQgMWZ7349PkDXkNBzytgUXRCkCMWFzDp60o+rQC0MipN4UYR/Uz8IvTpcUVgEeLinENCYpaAWQGreb1CgDgGkjl2FYNl5wKXMPOu7Jo7vRqf2luAnwPP/oOqSNRhjjUEMNiUgbZK4EjegSPSkPmXQ4bJQxb8ahyQztg9D/Qw8X2+XZz2dTskvXoqmc/G91+EzEPeDo6371/BjZcz3uMso/3I5HUliwzqTS1JmX2iggtj0S6jr8jcdexnOAGKFjL0dqbeo1/A5IunCGBHMWbtCs57Il4Dd9Alzz87X1x3p53+KNNoSK4DGSPEPrgdQ3RpkmQHJnVDnkSxjra/QuSMk/QB5YBx6RWBElOsiRFVR4MVf68ZUhmPMs3xpeZWL6GesD4UiKlLRaL86gHPJ/hMXvVhy+QG7r4M3w0BFwmrQ7/dQlaiQLrmGGvGArHbBJ7ApempfeoJ9dm1axLe1IfXdkkjcZC9jOh/FZiiXVFSBSjhrJwBJUXNIZUpGFvdntkAY+F84I6Olwtov/8OERFyTyp48ieKpRriz/QTqdQTFqPVgXSeTIoLGLmEIpZfdNNH0eZ2ZVehR/WovWkur99+nXzcAV3T39snx9+f7i/nMT0zs5I+ZhFSNRXVe06NA0DOY1t3zYLuXhCpdFfwVdnrTuGT3eKtNFKcBo3tQZJppPMkOCu004f9nUQZlMa7Vvt5sSiFJ32PKv5xqRewJYpkYUG3aaVjoVBpT7EsbK2xnkJmbT8sHslqWdc6ojLHPVHeMbBduZNLr6t6grPlG9mGA1z77CafuuzX9T/nN+MPpMPExNxObRwo4dnGBSzS001SI5mMIEjZdUryzFubp+3tUZ9vHnb0jHzFZgMFJ1aoZ/+p60TyZx7pwO5I402J41HPQvqQ6AKIXM4Q1ggaTPC+O+p0tR9zbnqBHoD4rqYySC/I5XLMmtoupUS5yy2Z+UPgj3yQBZy5Q8h7jiK/Xxuu2MtTmfCTCT1+xQHCUa5PsvqnwAAAP//LcGE7g==" -} + return "eJy8l0Fv4zYQhe/+FYPtJQGSzd2HLYIkCwRIXbROT0WxS4kjmzA1VDijNdxfX1AyFVmik6CVqkNgyPK8j0+TN+Q17PCwBBZFCwAxYnEJn9ai6NMCQCPn3lRiHC3hywIAmifhF6driwsAjxYV4xIyFLUAKAxazcvmyWsgVWJXO1xyqHAJG+/q6ngnoRCu7+FH3yF3JMoQhxpiWEzOIFslsEeP4FFpKLwrYaWEYS0eVWloA4z+B3q4WD/fri6PNftkJ3TNs5+N7r6JmDs87J3v3z8DG67nLUbZx/uRSG5rlolUjrWSMltFhJZHIn3H35G461lOcAMUrOVo7U27xr8BSVfOkECJ4k3elxz2RLyGb6BPHv6efHHennf4o02hIrgCZIsQ+uB1DdGmJEiJzGqDnISxjjb/gqQuM/SBZcCR1Iog2UHmpGjKg6HGn7cMKYxn+cb4MhHL11APGF9qpLzDYnEe9YDnMzwWr/rwBUpDF3+Gj4aA66zT4b8uQStRYB0zbBVD5ZhNZg/g8rz2HnVybVZNurQn9dGVJWk0VrKdCOW3GmtsK0KmGDXUlSNovKAxpCINW7PZIgt4rJwX1NHhZhGnz49DVJRMkzqO7KFBubb4A206hWLSerQqkE6TQWERE4dQzOqbfvo4Ksym9ir8sBVtJ9X97dOvq4cruHv6Y/388PvD/WUS0zs7IeVjESFRXzW129A0DOQ0dn17XMjFEyqN/gq+OmvdPny6U6SNVoJp3NwaJEknmSHBTa+dPuzrIMxSGt1b7efErBS99jyr+caknsGWlMhMg27VScfCoHIf4lhZ2+K8hEyaf9i9krQzLnfEdYn6IzzjYDvzJmffVvWFJ8o3M4yGqXdYx347Zb9o/zm/GX0mHxITcT60cOMEzzAoZpebZpDszWACR8qmV+ZjXN0+r1uN9njztqVj5iswBSg6dEI//U9bJ5Ip9047cnsabU6OHp1Y0B4CVQiZ3RnCCkmbEcZ/T5Vj3deca06gNyCuj5kN8jtSuaKwhtKtlDlnsTsrfxDskQeyUCq/C3HHUeznc9sdazGdCRORtO9THGQY5U5ZFv8EAAD//z+0hbY=" From ab6fd7d316d7799bf552ec330d3edf4eda86ef1f Mon Sep 17 00:00:00 2001 From: Chris Mark Date: Fri, 24 Jan 2020 11:39:36 +0200 Subject: [PATCH 17/18] Update fields.go --- x-pack/metricbeat/module/stan/fields.go | 1 + 1 file changed, 1 insertion(+) diff --git a/x-pack/metricbeat/module/stan/fields.go b/x-pack/metricbeat/module/stan/fields.go index ba3f04f58ca..84c15e23e8a 100644 --- a/x-pack/metricbeat/module/stan/fields.go +++ b/x-pack/metricbeat/module/stan/fields.go @@ -20,3 +20,4 @@ func init() { // This is the base64 encoded gzipped contents of module/stan. func AssetStan() string { return "eJy8l0Fv4zYQhe/+FYPtJQGSzd2HLYIkCwRIXbROT0WxS4kjmzA1VDijNdxfX1AyFVmik6CVqkNgyPK8j0+TN+Q17PCwBBZFCwAxYnEJn9ai6NMCQCPn3lRiHC3hywIAmifhF6driwsAjxYV4xIyFLUAKAxazcvmyWsgVWJXO1xyqHAJG+/q6ngnoRCu7+FH3yF3JMoQhxpiWEzOIFslsEeP4FFpKLwrYaWEYS0eVWloA4z+B3q4WD/fri6PNftkJ3TNs5+N7r6JmDs87J3v3z8DG67nLUbZx/uRSG5rlolUjrWSMltFhJZHIn3H35G461lOcAMUrOVo7U27xr8BSVfOkECJ4k3elxz2RLyGb6BPHv6efHHennf4o02hIrgCZIsQ+uB1DdGmJEiJzGqDnISxjjb/gqQuM/SBZcCR1Iog2UHmpGjKg6HGn7cMKYxn+cb4MhHL11APGF9qpLzDYnEe9YDnMzwWr/rwBUpDF3+Gj4aA66zT4b8uQStRYB0zbBVD5ZhNZg/g8rz2HnVybVZNurQn9dGVJWk0VrKdCOW3GmtsK0KmGDXUlSNovKAxpCINW7PZIgt4rJwX1NHhZhGnz49DVJRMkzqO7KFBubb4A206hWLSerQqkE6TQWERE4dQzOqbfvo4Ksym9ir8sBVtJ9X97dOvq4cruHv6Y/388PvD/WUS0zs7IeVjESFRXzW129A0DOQ0dn17XMjFEyqN/gq+OmvdPny6U6SNVoJp3NwaJEknmSHBTa+dPuzrIMxSGt1b7efErBS99jyr+caknsGWlMhMg27VScfCoHIf4lhZ2+K8hEyaf9i9krQzLnfEdYn6IzzjYDvzJmffVvWFJ8o3M4yGqXdYx347Zb9o/zm/GX0mHxITcT60cOMEzzAoZpebZpDszWACR8qmV+ZjXN0+r1uN9njztqVj5iswBSg6dEI//U9bJ5Ip9047cnsabU6OHp1Y0B4CVQiZ3RnCCkmbEcZ/T5Vj3deca06gNyCuj5kN8jtSuaKwhtKtlDlnsTsrfxDskQeyUCq/C3HHUeznc9sdazGdCRORtO9THGQY5U5ZFv8EAAD//z+0hbY=" +} From 3d885ea163b74f4bf8a0201936e9a7854af92e05 Mon Sep 17 00:00:00 2001 From: Chris Mark Date: Fri, 24 Jan 2020 17:56:01 +0200 Subject: [PATCH 18/18] Update Metricbeat-STAN-overview.json --- .../_meta/kibana/7/dashboard/Metricbeat-STAN-overview.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/metricbeat/module/stan/_meta/kibana/7/dashboard/Metricbeat-STAN-overview.json b/x-pack/metricbeat/module/stan/_meta/kibana/7/dashboard/Metricbeat-STAN-overview.json index 91dd6ba696e..600c3d895ad 100644 --- a/x-pack/metricbeat/module/stan/_meta/kibana/7/dashboard/Metricbeat-STAN-overview.json +++ b/x-pack/metricbeat/module/stan/_meta/kibana/7/dashboard/Metricbeat-STAN-overview.json @@ -150,7 +150,7 @@ }, "id": "fbc095e0-37cc-11ea-a9c8-152a657da3ab", "migrationVersion": { - "visualization": "7.4.2" + "visualization": "7.3.1" }, "references": [], "type": "visualization", @@ -249,7 +249,7 @@ }, "id": "9385f9a0-33f0-11ea-a9c8-152a657da3ab", "migrationVersion": { - "visualization": "7.4.2" + "visualization": "7.3.1" }, "references": [], "type": "visualization",