diff --git a/NOTICE.txt b/NOTICE.txt index ec5d44cfb4e..0c68c7122bc 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -245,13 +245,37 @@ SOFTWARE. -------------------------------------------------------------------- Dependency: github.com/elastic/beats Version: 7.0 -Revision: d7a5a79ff8ae5ca3289d150dd6c27bcf8b065831 +Revision: 4756ec1fb3f316032ed12a744749b5eed2ddea6d License type (autodetected): Apache-2.0 ./vendor/github.com/elastic/beats/LICENSE.txt: -------------------------------------------------------------------- Apache License 2.0 +-------------------------------------------------------------------- +Dependency: github.com/elastic/ecs +Revision: 337ddd4674d6a28da97e6d19010c04c43db09e58 +License type (autodetected): Apache-2.0 +./vendor/github.com/elastic/ecs/LICENSE.txt: +-------------------------------------------------------------------- +Apache License 2.0 + +-------NOTICE.txt----- +Elastic Common Schema +Copyright 2018 Elasticsearch B.V. + +Licensed 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. + -------------------------------------------------------------------- Dependency: github.com/elastic/go-lumber Revision: 616041e345fc33c97bc0eb0fa6b388aa07bca3e1 diff --git a/beater/beater_test.go b/beater/beater_test.go index f87fc4eebf0..ed1dd08d8ac 100644 --- a/beater/beater_test.go +++ b/beater/beater_test.go @@ -28,9 +28,11 @@ import ( "testing" "time" - "github.com/gofrs/uuid" + "github.com/elastic/beats/libbeat/logp" + + "github.com/elastic/beats/libbeat/publisher/processing" + "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" "github.com/elastic/beats/libbeat/beat" "github.com/elastic/beats/libbeat/common" @@ -39,7 +41,6 @@ import ( "github.com/elastic/beats/libbeat/publisher/pipeline" "github.com/elastic/beats/libbeat/publisher/queue" "github.com/elastic/beats/libbeat/publisher/queue/memqueue" - "github.com/elastic/beats/libbeat/version" ) func TestBeatConfig(t *testing.T) { @@ -293,12 +294,19 @@ func (d *DummyOutputClient) Publish(batch pubs.Batch) error { func (d *DummyOutputClient) Close() error { return nil } func (d *DummyOutputClient) String() string { return "" } -func DummyPipeline(clients ...outputs.Client) *pipeline.Pipeline { +func DummyPipeline(cfg *common.Config, info beat.Info, clients ...outputs.Client) *pipeline.Pipeline { if len(clients) == 0 { clients = []outputs.Client{&DummyOutputClient{}} } + if cfg == nil { + cfg = common.NewConfig() + } + processors, err := processing.MakeDefaultObserverSupport(false)(info, logp.NewLogger("testbeat"), cfg) + if err != nil { + panic(err) + } p, err := pipeline.New( - beat.Info{Name: "test-apm-server"}, + info, pipeline.Monitors{}, func(e queue.Eventer) (queue.Queue, error) { return memqueue.NewBroker(nil, memqueue.Settings{ @@ -314,6 +322,7 @@ func DummyPipeline(clients ...outputs.Client) *pipeline.Pipeline { pipeline.Settings{ WaitClose: 0, WaitCloseMode: pipeline.NoWaitOnClose, + Processors: processors, }, ) if err != nil { @@ -383,21 +392,7 @@ func (bt *beater) smapElasticsearchHosts() []string { return hosts } -func setupBeater(t *testing.T, publisher beat.Pipeline, ucfg *common.Config, beatConfig *beat.BeatConfig) (*beater, func(), error) { - beatId, err := uuid.FromString("fbba762a-14dd-412c-b7e9-b79f903eb492") - require.NoError(t, err) - // create a beat - apmBeat := &beat.Beat{ - Publisher: publisher, - Info: beat.Info{ - Beat: "test-apm-server", - IndexPrefix: "test-apm-server", - Version: version.GetDefaultVersion(), - ID: beatId, - }, - Config: beatConfig, - } - +func setupBeater(t *testing.T, apmBeat *beat.Beat, ucfg *common.Config, beatConfig *beat.BeatConfig) (*beater, func(), error) { // create our beater beatBeater, err := New(apmBeat, ucfg) assert.NoError(t, err) diff --git a/beater/server_test.go b/beater/server_test.go index 5a7f3ec7624..fa53a30af18 100644 --- a/beater/server_test.go +++ b/beater/server_test.go @@ -32,6 +32,10 @@ import ( "testing" "time" + "github.com/gofrs/uuid" + + "github.com/elastic/beats/libbeat/version" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -505,17 +509,33 @@ func setupServer(t *testing.T, cfg *common.Config, beatConfig *beat.BeatConfig, require.NoError(t, err) } + beatId, err := uuid.FromString("fbba762a-14dd-412c-b7e9-b79f903eb492") + require.NoError(t, err) + info := beat.Info{ + Beat: "test-apm-server", + IndexPrefix: "test-apm-server", + Version: version.GetDefaultVersion(), + ID: beatId, + } + var pub beat.Pipeline if events != nil { // capture events pubClient := NewChanClientWith(events) - pub = DummyPipeline(pubClient) + pub = DummyPipeline(cfg, info, pubClient) } else { // don't capture events - pub = DummyPipeline() + pub = DummyPipeline(cfg, info) + } + + // create a beat + apmBeat := &beat.Beat{ + Publisher: pub, + Info: info, + Config: beatConfig, } - btr, stop, err := setupBeater(t, pub, baseConfig, beatConfig) + btr, stop, err := setupBeater(t, apmBeat, baseConfig, beatConfig) if err == nil { assert.NotEqual(t, btr.config.Host, "localhost:0", "config.Host unmodified") } diff --git a/beater/test_approved_es_documents/TestPublishIntegrationErrors.approved.json b/beater/test_approved_es_documents/TestPublishIntegrationErrors.approved.json index 8a55d0bbb76..4244d96727b 100644 --- a/beater/test_approved_es_documents/TestPublishIntegrationErrors.approved.json +++ b/beater/test_approved_es_documents/TestPublishIntegrationErrors.approved.json @@ -14,6 +14,9 @@ "container": { "id": "container-id" }, + "ecs": { + "version": "1.1.0-dev" + }, "error": { "culprit": "my.module.function_name", "custom": { @@ -317,6 +320,9 @@ "container": { "id": "container-id" }, + "ecs": { + "version": "1.1.0-dev" + }, "error": { "exception": [ { @@ -405,6 +411,9 @@ "container": { "id": "container-id" }, + "ecs": { + "version": "1.1.0-dev" + }, "error": { "exception": [ { @@ -493,6 +502,9 @@ "container": { "id": "container-id" }, + "ecs": { + "version": "1.1.0-dev" + }, "error": { "grouping_key": "d6b3f958dfea98dc9ed2b57d5f0c48bb", "id": "abcdef0123456789", diff --git a/beater/test_approved_es_documents/TestPublishIntegrationEvents.approved.json b/beater/test_approved_es_documents/TestPublishIntegrationEvents.approved.json index e802bb8189f..04733b14e32 100644 --- a/beater/test_approved_es_documents/TestPublishIntegrationEvents.approved.json +++ b/beater/test_approved_es_documents/TestPublishIntegrationEvents.approved.json @@ -14,6 +14,9 @@ "container": { "id": "container-id" }, + "ecs": { + "version": "1.1.0-dev" + }, "error": { "grouping_key": "d6b3f958dfea98dc9ed2b57d5f0c48bb", "id": "abcdef0123456789", @@ -74,6 +77,9 @@ "name": "elastic-node", "version": "3.14.0" }, + "ecs": { + "version": "1.1.0-dev" + }, "observer": { "ephemeral_id": "00000000-0000-0000-0000-000000000000", "hostname": "", @@ -128,6 +134,9 @@ "container": { "id": "container-id" }, + "ecs": { + "version": "1.1.0-dev" + }, "host": { "ip": "127.0.0.1" }, @@ -198,6 +207,9 @@ "container": { "id": "container-id" }, + "ecs": { + "version": "1.1.0-dev" + }, "go": { "memstats": { "heap": { diff --git a/beater/test_approved_es_documents/TestPublishIntegrationMetricsets.approved.json b/beater/test_approved_es_documents/TestPublishIntegrationMetricsets.approved.json index b4289ffce01..e6f806cefc0 100644 --- a/beater/test_approved_es_documents/TestPublishIntegrationMetricsets.approved.json +++ b/beater/test_approved_es_documents/TestPublishIntegrationMetricsets.approved.json @@ -18,6 +18,9 @@ } }, "double_gauge": 3.141592653589793, + "ecs": { + "version": "1.1.0-dev" + }, "float_gauge": 9.16, "integer_gauge": 42767, "labels": { @@ -78,6 +81,9 @@ "name": "elastic-node", "version": "3.14.0" }, + "ecs": { + "version": "1.1.0-dev" + }, "go": { "memstats": { "heap": { diff --git a/beater/test_approved_es_documents/TestPublishIntegrationSpans.approved.json b/beater/test_approved_es_documents/TestPublishIntegrationSpans.approved.json index 098a28b8eb4..ac098afd03f 100644 --- a/beater/test_approved_es_documents/TestPublishIntegrationSpans.approved.json +++ b/beater/test_approved_es_documents/TestPublishIntegrationSpans.approved.json @@ -11,6 +11,9 @@ "name": "elastic-node", "version": "3.14.0" }, + "ecs": { + "version": "1.1.0-dev" + }, "observer": { "ephemeral_id": "00000000-0000-0000-0000-000000000000", "hostname": "", @@ -60,6 +63,9 @@ "name": "elastic-node", "version": "3.14.0" }, + "ecs": { + "version": "1.1.0-dev" + }, "observer": { "ephemeral_id": "00000000-0000-0000-0000-000000000000", "hostname": "", @@ -110,6 +116,9 @@ "name": "elastic-node", "version": "3.14.0" }, + "ecs": { + "version": "1.1.0-dev" + }, "labels": { "tag1": "value1", "tag2": 123, @@ -167,6 +176,9 @@ "name": "elastic-node", "version": "3.14.0" }, + "ecs": { + "version": "1.1.0-dev" + }, "observer": { "ephemeral_id": "00000000-0000-0000-0000-000000000000", "hostname": "", @@ -220,6 +232,9 @@ "name": "elastic-ruby", "version": "2.2" }, + "ecs": { + "version": "1.1.0-dev" + }, "observer": { "ephemeral_id": "00000000-0000-0000-0000-000000000000", "hostname": "", diff --git a/beater/test_approved_es_documents/TestPublishIntegrationTransactions.approved.json b/beater/test_approved_es_documents/TestPublishIntegrationTransactions.approved.json index 03007fc1140..7bf6af64bd9 100644 --- a/beater/test_approved_es_documents/TestPublishIntegrationTransactions.approved.json +++ b/beater/test_approved_es_documents/TestPublishIntegrationTransactions.approved.json @@ -14,6 +14,9 @@ "container": { "id": "container-id" }, + "ecs": { + "version": "1.1.0-dev" + }, "host": { "architecture": "x64", "hostname": "prod1.example.com", @@ -110,6 +113,9 @@ "container": { "id": "container-id" }, + "ecs": { + "version": "1.1.0-dev" + }, "host": { "architecture": "x64", "hostname": "prod1.example.com", @@ -294,6 +300,9 @@ "container": { "id": "container-id" }, + "ecs": { + "version": "1.1.0-dev" + }, "host": { "architecture": "x64", "hostname": "prod1.example.com", diff --git a/changelogs/7.0.asciidoc b/changelogs/7.0.asciidoc index e8f34d357d8..94b169885ea 100644 --- a/changelogs/7.0.asciidoc +++ b/changelogs/7.0.asciidoc @@ -21,10 +21,11 @@ ==== Bugfix - Ensure setup cmd uses expected configuration {pull}1934[1934]. -- Ensure host.name is not added {pull}1934[1934]. +- Ensure host.name is not added {pull}1934[1934] {pull}1982[1982]. - Update Go version to 1.11.5 {pull}1840[1840] {pull}1950[1950]. - Ensure enabling user-agent pipeline indexes data at the same key by default {pull}1966[1966]. - Request and Response headers are stored in a canonicalized way {pull}1966[1966]. +- Use changed processor handling from libbeat {pull}1982[1982]. //// diff --git a/cmd/root.go b/cmd/root.go index b140aab8fa8..04585db1ebf 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -20,15 +20,15 @@ package cmd import ( "github.com/spf13/pflag" + "github.com/elastic/apm-server/beater" "github.com/elastic/apm-server/idxmgmt" "github.com/elastic/apm-server/idxmgmt/ilm" - - "github.com/elastic/apm-server/beater" _ "github.com/elastic/apm-server/include" "github.com/elastic/beats/libbeat/cmd" "github.com/elastic/beats/libbeat/cmd/instance" "github.com/elastic/beats/libbeat/common" "github.com/elastic/beats/libbeat/monitoring/report" + "github.com/elastic/beats/libbeat/publisher/processing" ) // Name of the beat (apm-server). @@ -76,6 +76,7 @@ func init() { }, ILM: ilm.MakeDefaultSupporter, IndexManagement: idxmgmt.MakeDefaultSupporter, + Processing: processing.MakeDefaultObserverSupport(false), }) // remove dashboard from export commands var unsupported = map[string]interface{}{"dashboard": nil, "ilm-policy": nil} diff --git a/docs/fields.asciidoc b/docs/fields.asciidoc index 151edc531d8..eaf5ef48807 100644 --- a/docs/fields.asciidoc +++ b/docs/fields.asciidoc @@ -4396,6 +4396,30 @@ Hostname of the agent. Info collected for the host machine. + + +*`host.containerized`*:: ++ +-- +type: boolean + +If the host is a container. + + +-- + +*`host.os.build`*:: ++ +-- +type: keyword + +example: 18D109 + +OS build information. + + +-- + [[exported-fields-kubernetes-processor]] == Kubernetes fields diff --git a/include/fields.go b/include/fields.go index 0feaac8de3f..4af8536adb6 100644 --- a/include/fields.go +++ b/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/publish/pub.go b/publish/pub.go index e5bbdcd99fb..89701aa4097 100644 --- a/publish/pub.go +++ b/publish/pub.go @@ -68,18 +68,18 @@ func NewPublisher(info beat.Info, pipeline beat.Pipeline, shutdownTimeout time.D // If set >0 `Close` will block for the duration or until pipeline is empty WaitClose: shutdownTimeout, - Fields: common.MapStr{ - "observer": common.MapStr{ - "type": info.Beat, - "hostname": info.Hostname, - "version": info.Version, - "version_major": 7, - "id": info.ID.String(), - "ephemeral_id": info.EphemeralID.String(), + Processing: beat.ProcessingConfig{ + Fields: common.MapStr{ + "observer": common.MapStr{ + "type": info.Beat, + "hostname": info.Hostname, + "version": info.Version, + "version_major": 7, + "id": info.ID.String(), + "ephemeral_id": info.EphemeralID.String(), + }, }, }, - SkipAgentMetadata: true, - SkipNormalization: true, }) if err != nil { return nil, err diff --git a/tests/system/error.approved.json b/tests/system/error.approved.json index 7c18c028198..74851be04d8 100644 --- a/tests/system/error.approved.json +++ b/tests/system/error.approved.json @@ -9,7 +9,7 @@ "us": 1494342245000000 }, "ecs": { - "version": "1.0.0-beta2" + "version": "1.1.0-dev" }, "observer": { "type": "apm-server", @@ -95,7 +95,7 @@ "us": 1494342245999999 }, "ecs":{ - "version":"1.0.0-beta2" + "version":"1.1.0-dev" }, "observer": { "type": "apm-server", @@ -391,7 +391,7 @@ "us": 1494342245000000 }, "ecs":{ - "version":"1.0.0-beta2" + "version":"1.1.0-dev" }, "observer": { "type": "apm-server", @@ -478,7 +478,7 @@ "us": 1494342245999000 }, "ecs":{ - "version":"1.0.0-beta2" + "version":"1.1.0-dev" }, "observer": { "type": "apm-server", diff --git a/tests/system/spans.approved.json b/tests/system/spans.approved.json index 8e04205a936..3368207b781 100644 --- a/tests/system/spans.approved.json +++ b/tests/system/spans.approved.json @@ -9,7 +9,7 @@ "us": 1496170407154000 }, "ecs": { - "version": "1.0.0-beta2" + "version": "1.1.0-dev" }, "observer": { "type": "apm-server", @@ -82,7 +82,7 @@ "us": 1496170422281000 }, "ecs": { - "version": "1.0.0-beta2" + "version": "1.1.0-dev" }, "observer": { "type": "apm-server", @@ -163,7 +163,7 @@ "us": 1496170407154000 }, "ecs": { - "version": "1.0.0-beta2" + "version": "1.1.0-dev" }, "observer": { "type": "apm-server", @@ -234,7 +234,7 @@ "us": 1496170407154000 }, "ecs": { - "version": "1.0.0-beta2" + "version": "1.1.0-dev" }, "observer": { "type": "apm-server", @@ -364,7 +364,7 @@ "us": 1496170407154000 }, "ecs": { - "version": "1.0.0-beta2" + "version": "1.1.0-dev" }, "observer": { "type": "apm-server", diff --git a/tests/system/test_integration.py b/tests/system/test_integration.py index 80d12f36fc1..fa96dbdb95d 100644 --- a/tests/system/test_integration.py +++ b/tests/system/test_integration.py @@ -122,10 +122,6 @@ def check_docs(self, approved, received, doc_type): if rec_id == appr[doc_type]['id']: checked = True for k, v in rec.items(): - if k == "host": - # TODO: fix https://github.com/elastic/apm-server/issues/1846 - # then remove this exception handling and treat as other keys - continue if k == "observer": expected = Set(["hostname", "version", "id", "ephemeral_id", "type", "version_major"]) rec_keys = Set(v.keys()) diff --git a/tests/system/transaction.approved.json b/tests/system/transaction.approved.json index 2592a281113..2caa115db28 100644 --- a/tests/system/transaction.approved.json +++ b/tests/system/transaction.approved.json @@ -9,7 +9,7 @@ "us": 1496170407154000 }, "ecs": { - "version": "1.0.0-beta2" + "version": "1.1.0-dev" }, "observer": { "type": "apm-server", @@ -189,7 +189,7 @@ "us": 1496170422281999 }, "ecs": { - "version": "1.0.0-beta2" + "version": "1.1.0-dev" }, "observer": { "type": "apm-server", @@ -285,7 +285,7 @@ "us": 1496170422000000 }, "ecs": { - "version": "1.0.0-beta2" + "version": "1.1.0-dev" }, "observer": { "type": "apm-server", @@ -380,7 +380,7 @@ "us": 1496170422281000 }, "ecs": { - "version": "1.0.0-beta2" + "version": "1.1.0-dev" }, "observer": { "type": "apm-server",