From 8fa913c9be47818db5b9e495ff3a414a33116758 Mon Sep 17 00:00:00 2001 From: Tim Sullivan Date: Fri, 25 May 2018 07:18:19 -0700 Subject: [PATCH] Add stats metricset to Kibana module (#6746) This is based on the existing `status` module, which will be deprecated in Kibana once `stats` becomes established. The stats endpoint will be available in Kibana 6.4 and newer. --- metricbeat/docs/fields.asciidoc | 264 ++++++++++++++++++ metricbeat/docs/modules/kibana.asciidoc | 4 + metricbeat/docs/modules/kibana/stats.asciidoc | 23 ++ metricbeat/docs/modules_list.asciidoc | 3 +- metricbeat/include/fields.go | 2 +- metricbeat/include/list.go | 1 + metricbeat/module/kibana/mtest/testing.go | 35 +++ .../module/kibana/stats/_meta/data.json | 79 ++++++ .../module/kibana/stats/_meta/docs.asciidoc | 3 + .../module/kibana/stats/_meta/fields.yml | 125 +++++++++ .../kibana/stats/_meta/test/stats.700.json | 53 ++++ metricbeat/module/kibana/stats/data.go | 97 +++++++ metricbeat/module/kibana/stats/data_test.go | 34 +++ metricbeat/module/kibana/stats/stats.go | 58 ++++ .../kibana/stats/stats_integration_test.go | 21 ++ .../kibana/status/status_integration_test.go | 32 +-- 16 files changed, 803 insertions(+), 31 deletions(-) create mode 100644 metricbeat/docs/modules/kibana/stats.asciidoc create mode 100644 metricbeat/module/kibana/mtest/testing.go create mode 100644 metricbeat/module/kibana/stats/_meta/data.json create mode 100644 metricbeat/module/kibana/stats/_meta/docs.asciidoc create mode 100644 metricbeat/module/kibana/stats/_meta/fields.yml create mode 100644 metricbeat/module/kibana/stats/_meta/test/stats.700.json create mode 100644 metricbeat/module/kibana/stats/data.go create mode 100644 metricbeat/module/kibana/stats/data_test.go create mode 100644 metricbeat/module/kibana/stats/stats.go create mode 100644 metricbeat/module/kibana/stats/stats_integration_test.go diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 8694bdf6fe5..f037c51e9d5 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -6418,6 +6418,270 @@ Kibana module +[float] +== stats fields + +Kibana stats and run-time metrics. + + + +*`kibana.stats.cluster_uuid`*:: ++ +-- +type: keyword + +UUID of the Elasticsearch cluster to which Kibana connects. + + +-- + +*`kibana.stats.name`*:: ++ +-- +type: keyword + +Kibana instance name. + + +-- + +*`kibana.stats.uuid`*:: ++ +-- +type: keyword + +Kibana instance uuid. + + +-- + +*`kibana.stats.version.number`*:: ++ +-- +type: keyword + +Kibana version number. + + +-- + +*`kibana.stats.status.overall.state`*:: ++ +-- +type: keyword + +Kibana overall state. + + +-- + +[float] +== process fields + +Kibana process metrics. + + + +[float] +== mem fields + +Memory usage metrics of the Kibana instance. + + + +*`kibana.stats.process.mem.heap.max.bytes`*:: ++ +-- +type: long + +format: bytes + +Total amount of heap memory used by V8. + + +-- + +*`kibana.stats.process.mem.heap.used.bytes`*:: ++ +-- +type: long + +format: bytes + +Amount of memory in use by V8. + + +-- + +*`kibana.stats.process.mem.resident_set_size.bytes`*:: ++ +-- +type: long + +format: bytes + +The amount of space occupied in main memory for the process. Includes heap, code segment, and stack. + + +-- + +*`kibana.stats.process.mem.external.bytes`*:: ++ +-- +type: long + +format: bytes + +Memory usage of C++ objects bound to JavaScript objects managed by V8. + + +-- + +*`kibana.stats.process.pid`*:: ++ +-- +type: long + +Process ID of the Kibana instance. + + +-- + +*`kibana.stats.process.uptime.ms`*:: ++ +-- +type: long + +Amount of time that the Kibana process has been running in milliseconds. + + +-- + +[float] +== response_times fields + +HTTP Server response time metrics + + + +*`kibana.stats.response_times.avg.ms`*:: ++ +-- +type: long + +Accumulated averages for response times, for all responses in a 5-second time window. + + +-- + +*`kibana.stats.response_times.max.ms`*:: ++ +-- +type: long + +Accumulated maximums for response times, for all responses in a 5-second time window. + + +-- + +[float] +== requests fields + +HTTP Server request metrics + + + +*`kibana.stats.requests.status_codes`*:: ++ +-- +type: object + +Key-value pairs for each status code sent by the server, and the number of times it sent that code. + + +-- + +*`kibana.stats.requests.total`*:: ++ +-- +type: long + +Total number of requests sent by the server. + + +-- + +*`kibana.stats.requests.disconnects`*:: ++ +-- +type: long + +Total number of client disconnects encountered by the server. + + +-- + +*`kibana.stats.concurrent_connections`*:: ++ +-- +type: long + +Number of client connections made to the server. Note that browsers can send multiple simultaneous connections to request mulitple server assets at once, and they can re-use established connections. + + +-- + +[float] +== sockets fields + +HTTP Web Sockets metrics + + + +[float] +== http fields + +Web Sockets over plaintext HTTP + + + +*`kibana.stats.sockets.http.total`*:: ++ +-- +type: long + +Number of HTTP web socket connections established + + +-- + +[float] +== https fields + +Web Sockets over encrypted HTTPS + + + +*`kibana.stats.sockets.https.total`*:: ++ +-- +type: long + +Number of HTTPS web socket connections established + + +-- + +*`kibana.stats.event_loop_delay`*:: ++ +-- +type: long + +Node event loop delay calculated with internal benchmarking. + + +-- + [float] == status fields diff --git a/metricbeat/docs/modules/kibana.asciidoc b/metricbeat/docs/modules/kibana.asciidoc index 9738817dc5e..4fcc0620b79 100644 --- a/metricbeat/docs/modules/kibana.asciidoc +++ b/metricbeat/docs/modules/kibana.asciidoc @@ -35,7 +35,11 @@ This module supports TLS connection when using `ssl` config field, as described The following metricsets are available: +* <> + * <> +include::kibana/stats.asciidoc[] + include::kibana/status.asciidoc[] diff --git a/metricbeat/docs/modules/kibana/stats.asciidoc b/metricbeat/docs/modules/kibana/stats.asciidoc new file mode 100644 index 00000000000..759cafd035f --- /dev/null +++ b/metricbeat/docs/modules/kibana/stats.asciidoc @@ -0,0 +1,23 @@ +//// +This file is generated! See scripts/docs_collector.py +//// + +[[metricbeat-metricset-kibana-stats]] +=== Kibana stats metricset + +beta[] + +include::../../../module/kibana/stats/_meta/docs.asciidoc[] + + +==== Fields + +For a description of each field in the metricset, see the +<> section. + +Here is an example document generated by this metricset: + +[source,json] +---- +include::../../../module/kibana/stats/_meta/data.json[] +---- diff --git a/metricbeat/docs/modules_list.asciidoc b/metricbeat/docs/modules_list.asciidoc index 199ea4413ac..02b38f60684 100644 --- a/metricbeat/docs/modules_list.asciidoc +++ b/metricbeat/docs/modules_list.asciidoc @@ -60,7 +60,8 @@ This file is generated! See scripts/docs_collector.py .2+| .2+| |<> beta[] |<> beta[] |<> beta[] |image:./images/icon-no.png[No prebuilt dashboards] | -.1+| .1+| |<> beta[] +.2+| .2+| |<> beta[] +|<> beta[] |<> |image:./images/icon-yes.png[Prebuilt dashboards are available] | .12+| .12+| |<> |<> beta[] diff --git a/metricbeat/include/fields.go b/metricbeat/include/fields.go index b8254670788..23f27b942f6 100644 --- a/metricbeat/include/fields.go +++ b/metricbeat/include/fields.go @@ -14,5 +14,5 @@ func init() { // Asset returns asset data func Asset() string { - return "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" + return "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" } diff --git a/metricbeat/include/list.go b/metricbeat/include/list.go index 4aa68d5899e..f52fe3c7c71 100644 --- a/metricbeat/include/list.go +++ b/metricbeat/include/list.go @@ -63,6 +63,7 @@ import ( _ "github.com/elastic/beats/metricbeat/module/kafka/consumergroup" _ "github.com/elastic/beats/metricbeat/module/kafka/partition" _ "github.com/elastic/beats/metricbeat/module/kibana" + _ "github.com/elastic/beats/metricbeat/module/kibana/stats" _ "github.com/elastic/beats/metricbeat/module/kibana/status" _ "github.com/elastic/beats/metricbeat/module/kubernetes" _ "github.com/elastic/beats/metricbeat/module/kubernetes/apiserver" diff --git a/metricbeat/module/kibana/mtest/testing.go b/metricbeat/module/kibana/mtest/testing.go new file mode 100644 index 00000000000..210f9157664 --- /dev/null +++ b/metricbeat/module/kibana/mtest/testing.go @@ -0,0 +1,35 @@ +package mtest + +import ( + "net" + "os" +) + +// GetEnvHost returns host for Kibana +func GetEnvHost() string { + host := os.Getenv("KIBANA_HOST") + + if len(host) == 0 { + host = "127.0.0.1" + } + return host +} + +// GetEnvPort returns port for Kibana +func GetEnvPort() string { + port := os.Getenv("KIBANA_PORT") + + if len(port) == 0 { + port = "5601" + } + return port +} + +// GetConfig returns config for kibana module +func GetConfig(metricset string) map[string]interface{} { + return map[string]interface{}{ + "module": "kibana", + "metricsets": []string{metricset}, + "hosts": []string{net.JoinHostPort(GetEnvHost(), GetEnvPort())}, + } +} diff --git a/metricbeat/module/kibana/stats/_meta/data.json b/metricbeat/module/kibana/stats/_meta/data.json new file mode 100644 index 00000000000..db704021485 --- /dev/null +++ b/metricbeat/module/kibana/stats/_meta/data.json @@ -0,0 +1,79 @@ +{ + "@timestamp": "2017-10-12T08:05:34.853Z", + "beat": { + "hostname": "host.example.com", + "name": "host.example.com" + }, + "elasticsearch": { + "cluster": { + "id": "PKEQ1V5kT4yPng_sgiqF9g" + } + }, + "kibana": { + "stats": { + "concurrent_connections": 17, + "event_loop_delay": 718.5184001922607, + "name": "kibana", + "process": { + "memory": { + "external": { + "bytes": 1969666 + }, + "heap": { + "max": { + "bytes": 200028160 + }, + "used": { + "bytes": 138875320 + } + }, + "resident_set_size": { + "bytes": 247865344 + } + }, + "pid": 1, + "uptime": { + "ms": 260863 + } + }, + "requests": { + "disconnects": 0, + "total": 91 + }, + "response_times": { + "avg": { + "ms": 1347.2500000000002 + }, + "max": { + "ms": 4293 + } + }, + "sockets": { + "http": { + "total": 56 + }, + "https": { + "total": 0 + } + }, + "status": { + "overall": { + "state": "green" + } + }, + "uuid": "b4b34609-03b3-463c-8699-17109e72df70", + "version": { + "number": "7.0.0-alpha1" + } + } + }, + "metricset": { + "host": "127.0.0.1:5601", + "module": "kibana", + "name": "stats", + "rtt": 115 + }, + "service": { + "name": "kibana" + } +} \ No newline at end of file diff --git a/metricbeat/module/kibana/stats/_meta/docs.asciidoc b/metricbeat/module/kibana/stats/_meta/docs.asciidoc new file mode 100644 index 00000000000..3f432a78aa2 --- /dev/null +++ b/metricbeat/module/kibana/stats/_meta/docs.asciidoc @@ -0,0 +1,3 @@ +This is the `stats` metricset of the Kibana module. This stats endpoint is available in 6.4 by default. + +The intention of the Kibana module is to have a minimal data set that works across Kibana versions. diff --git a/metricbeat/module/kibana/stats/_meta/fields.yml b/metricbeat/module/kibana/stats/_meta/fields.yml new file mode 100644 index 00000000000..40733d997d3 --- /dev/null +++ b/metricbeat/module/kibana/stats/_meta/fields.yml @@ -0,0 +1,125 @@ +- name: stats + type: group + description: > + Kibana stats and run-time metrics. + release: beta + fields: + - name: cluster_uuid + type: keyword + description: > + UUID of the Elasticsearch cluster to which Kibana connects. + - name: name + type: keyword + description: > + Kibana instance name. + - name: uuid + type: keyword + description: > + Kibana instance uuid. + - name: version.number + type: keyword + description: > + Kibana version number. + - name: status.overall.state + type: keyword + description: > + Kibana overall state. + - name: process + type: group + description: > + Kibana process metrics. + fields: + - name: mem + type: group + description: > + Memory usage metrics of the Kibana instance. + fields: + - name: heap.max.bytes + type: long + format: bytes + description: > + Total amount of heap memory used by V8. + - name: heap.used.bytes + type: long + format: bytes + description: > + Amount of memory in use by V8. + - name: resident_set_size.bytes + type: long + format: bytes + description: > + The amount of space occupied in main memory for the process. Includes heap, code segment, and stack. + - name: external.bytes + type: long + format: bytes + description: > + Memory usage of C++ objects bound to JavaScript objects managed by V8. + - name: pid + type: long + description: > + Process ID of the Kibana instance. + - name: uptime.ms + type: long + description: > + Amount of time that the Kibana process has been running in milliseconds. + - name: response_times + type: group + description: > + HTTP Server response time metrics + fields: + - name: avg.ms + type: long + description: > + Accumulated averages for response times, for all responses in a 5-second time window. + - name: max.ms + type: long + description: > + Accumulated maximums for response times, for all responses in a 5-second time window. + - name: requests + type: group + description: > + HTTP Server request metrics + fields: + - name: status_codes + type: object + description: > + Key-value pairs for each status code sent by the server, and the number of times it sent that code. + - name: total + type: long + description: > + Total number of requests sent by the server. + - name: disconnects + type: long + description: > + Total number of client disconnects encountered by the server. + - name: concurrent_connections + type: long + description: > + Number of client connections made to the server. Note that browsers can send multiple simultaneous connections to request mulitple server assets at once, and they can re-use established connections. + - name: sockets + type: group + description: > + HTTP Web Sockets metrics + fields: + - name: http + type: group + description: > + Web Sockets over plaintext HTTP + fields: + - name: total + type: long + description: > + Number of HTTP web socket connections established + - name: https + type: group + description: > + Web Sockets over encrypted HTTPS + fields: + - name: total + type: long + description: > + Number of HTTPS web socket connections established + - name: event_loop_delay + type: long + description: > + Node event loop delay calculated with internal benchmarking. diff --git a/metricbeat/module/kibana/stats/_meta/test/stats.700.json b/metricbeat/module/kibana/stats/_meta/test/stats.700.json new file mode 100644 index 00000000000..01ad405e54a --- /dev/null +++ b/metricbeat/module/kibana/stats/_meta/test/stats.700.json @@ -0,0 +1,53 @@ +{ + "cluster_uuid": "G279hqGeSDqjj_OgBq6wUw", + "name": "ruflin", + "uuid": "3a64c6a4-b758-41b4-9564-375ca3165039", + "version": { + "number": "6.4.0" + }, + "status": { + "overall": { + "state": "green" + } + }, + "response_times": { + "avg_in_millis": 401, + "max_in_millis": 411 + }, + "requests": { + "status_codes": {} + }, + "concurrent_connections": 0, + "sockets": { + "http": { + "total": 76 + }, + "https": { + "total": 0 + } + }, + "event_loop_delay": 46.37134699523449, + "process": { + "mem": { + "heap_max_in_bytes": 171405312, + "heap_used_in_bytes": 143607728, + "resident_set_size_in_bytes": 237985792, + "external_in_bytes": 2075915 + }, + "pid": 18204, + "uptime_ms": 584494 + }, + "os": { + "cpu": { + "load_average": { + "1m": 1.96044921875, + "5m": 2.00732421875, + "15m": 2.07470703125 + } + }, + "mem": { + "free_in_bytes": 896122880, + "total_in_bytes": 17179869184 + } + } +} diff --git a/metricbeat/module/kibana/stats/data.go b/metricbeat/module/kibana/stats/data.go new file mode 100644 index 00000000000..0f24e1888de --- /dev/null +++ b/metricbeat/module/kibana/stats/data.go @@ -0,0 +1,97 @@ +package stats + +import ( + "encoding/json" + + "github.com/elastic/beats/libbeat/common" + s "github.com/elastic/beats/libbeat/common/schema" + c "github.com/elastic/beats/libbeat/common/schema/mapstriface" + "github.com/elastic/beats/metricbeat/mb" +) + +var ( + schema = s.Schema{ + "cluster_uuid": c.Str("cluster_uuid"), + "name": c.Str("name"), + "uuid": c.Str("uuid"), + "version": c.Dict("version", s.Schema{ + "number": c.Str("number"), + }), + "status": c.Dict("status", s.Schema{ + "overall": c.Dict("overall", s.Schema{ + "state": c.Str("state"), + }), + }), + "response_times": c.Dict("response_times", s.Schema{ + "avg": s.Object{ + "ms": c.Float("avg_in_millis"), + }, + "max": s.Object{ + "ms": c.Int("max_in_millis"), + }, + }), + "requests": c.Dict("requests", s.Schema{ + "total": c.Int("total"), + "disconnects": c.Int("disconnects"), + }), + "concurrent_connections": c.Int("concurrent_connections"), + "sockets": c.Dict("sockets", s.Schema{ + "http": c.Dict("http", s.Schema{ + "total": c.Int("total"), + }), + "https": c.Dict("https", s.Schema{ + "total": c.Int("total"), + }), + }), + "event_loop_delay": c.Float("event_loop_delay"), + "process": c.Dict("process", s.Schema{ + "memory": c.Dict("mem", s.Schema{ + "heap": s.Object{ + "max": s.Object{ + "bytes": c.Int("heap_max_in_bytes"), + }, + "used": s.Object{ + "bytes": c.Int("heap_used_in_bytes"), + }, + }, + "resident_set_size": s.Object{ + "bytes": c.Int("resident_set_size_in_bytes"), + }, + "external": s.Object{ + "bytes": c.Int("external_in_bytes"), + }, + }), + "pid": c.Int("pid"), + "uptime": s.Object{ + "ms": c.Int("uptime_ms"), + }, + }), + } +) + +func eventMapping(r mb.ReporterV2, content []byte) error { + var data map[string]interface{} + err := json.Unmarshal(content, &data) + if err != nil { + r.Error(err) + return err + } + + dataFields, err := schema.Apply(data) + event := mb.Event{} + + event.RootFields = common.MapStr{} + event.RootFields.Put("service.name", "kibana") + + // Set elasticsearch cluster id + if clusterID, ok := dataFields["cluster_uuid"]; ok { + delete(dataFields, "cluster_uuid") + event.RootFields.Put("elasticsearch.cluster.id", clusterID) + } + + event.MetricSetFields = dataFields + + r.Event(event) + + return err +} diff --git a/metricbeat/module/kibana/stats/data_test.go b/metricbeat/module/kibana/stats/data_test.go new file mode 100644 index 00000000000..4f19c0bfc79 --- /dev/null +++ b/metricbeat/module/kibana/stats/data_test.go @@ -0,0 +1,34 @@ +// +build !integration + +package stats + +import ( + "io/ioutil" + "path/filepath" + "testing" + + s "github.com/elastic/beats/libbeat/common/schema" + mbtest "github.com/elastic/beats/metricbeat/mb/testing" + + "github.com/stretchr/testify/assert" +) + +func TestStats(t *testing.T) { + + files, err := filepath.Glob("./_meta/test/stats.*.json") + assert.NoError(t, err) + + for _, f := range files { + input, err := ioutil.ReadFile(f) + assert.NoError(t, err) + + reporter := &mbtest.CapturingReporterV2{} + err = eventMapping(reporter, input) + if e, ok := err.(*s.Errors); ok { + assert.False(t, e.HasRequiredErrors(), "mapping error: %s", e) + } + + assert.True(t, len(reporter.GetEvents()) >= 1) + assert.Equal(t, 0, len(reporter.GetErrors())) + } +} diff --git a/metricbeat/module/kibana/stats/stats.go b/metricbeat/module/kibana/stats/stats.go new file mode 100644 index 00000000000..71a8aabeed2 --- /dev/null +++ b/metricbeat/module/kibana/stats/stats.go @@ -0,0 +1,58 @@ +package stats + +import ( + "github.com/elastic/beats/libbeat/common/cfgwarn" + "github.com/elastic/beats/metricbeat/helper" + "github.com/elastic/beats/metricbeat/mb" + "github.com/elastic/beats/metricbeat/mb/parse" +) + +// init registers the MetricSet with the central registry. +// The New method will be called after the setup of the module and before starting to fetch data +func init() { + mb.Registry.MustAddMetricSet("kibana", "stats", New, + mb.WithHostParser(hostParser), + ) +} + +var ( + hostParser = parse.URLHostParserBuilder{ + DefaultScheme: "http", + PathConfigKey: "path", + DefaultPath: "api/stats", + QueryParams: "extended=true", // make Kibana fetch the cluster_uuid + }.Build() +) + +// MetricSet type defines all fields of the MetricSet +type MetricSet struct { + mb.BaseMetricSet + http *helper.HTTP +} + +// New create a new instance of the MetricSet +func New(base mb.BaseMetricSet) (mb.MetricSet, error) { + cfgwarn.Experimental("The kibana stats metricset is experimental") + + http, err := helper.NewHTTP(base) + if err != nil { + return nil, err + } + return &MetricSet{ + base, + http, + }, nil +} + +// Fetch methods implements the data gathering and data conversion to the right format +// It returns the event which is then forward to the output. In case of an error, a +// descriptive error must be returned. +func (m *MetricSet) Fetch(r mb.ReporterV2) { + content, err := m.http.FetchContent() + if err != nil { + r.Error(err) + return + } + + eventMapping(r, content) +} diff --git a/metricbeat/module/kibana/stats/stats_integration_test.go b/metricbeat/module/kibana/stats/stats_integration_test.go new file mode 100644 index 00000000000..9314c3c8714 --- /dev/null +++ b/metricbeat/module/kibana/stats/stats_integration_test.go @@ -0,0 +1,21 @@ +// +build integration + +package stats + +import ( + "testing" + + "github.com/elastic/beats/libbeat/tests/compose" + mbtest "github.com/elastic/beats/metricbeat/mb/testing" + "github.com/elastic/beats/metricbeat/module/kibana/mtest" +) + +func TestData(t *testing.T) { + compose.EnsureUp(t, "kibana") + + f := mbtest.NewReportingMetricSetV2(t, mtest.GetConfig("stats")) + err := mbtest.WriteEventsReporterV2(f, t, "") + if err != nil { + t.Fatal("write", err) + } +} diff --git a/metricbeat/module/kibana/status/status_integration_test.go b/metricbeat/module/kibana/status/status_integration_test.go index fbc2ddd7fbe..63fda8ab2ad 100644 --- a/metricbeat/module/kibana/status/status_integration_test.go +++ b/metricbeat/module/kibana/status/status_integration_test.go @@ -3,19 +3,19 @@ package status import ( - "os" "testing" "github.com/stretchr/testify/assert" "github.com/elastic/beats/libbeat/tests/compose" mbtest "github.com/elastic/beats/metricbeat/mb/testing" + "github.com/elastic/beats/metricbeat/module/kibana/mtest" ) func TestFetch(t *testing.T) { compose.EnsureUpWithTimeout(t, 600, "elasticsearch", "kibana") - f := mbtest.NewEventFetcher(t, getConfig()) + f := mbtest.NewEventFetcher(t, mtest.GetConfig("status")) event, err := f.Fetch() if !assert.NoError(t, err) { t.FailNow() @@ -27,35 +27,9 @@ func TestFetch(t *testing.T) { func TestData(t *testing.T) { compose.EnsureUp(t, "elasticsearch", "kibana") - f := mbtest.NewEventFetcher(t, getConfig()) + f := mbtest.NewEventFetcher(t, mtest.GetConfig("status")) err := mbtest.WriteEvent(f, t) if err != nil { t.Fatal("write", err) } } - -func getConfig() map[string]interface{} { - return map[string]interface{}{ - "module": "kibana", - "metricsets": []string{"status"}, - "hosts": []string{GetEnvHost() + ":" + GetEnvPort()}, - } -} - -func GetEnvHost() string { - host := os.Getenv("KIBANA_HOST") - - if len(host) == 0 { - host = "127.0.0.1" - } - return host -} - -func GetEnvPort() string { - port := os.Getenv("KIBANA_PORT") - - if len(port) == 0 { - port = "5601" - } - return port -}