From 467dd71eea05a4a6578f35c403c0b15347cff8b1 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 6 Mar 2025 02:25:29 +0100 Subject: [PATCH 1/4] feat(fips): disallow non-compliant crypto in fingerprint processor (#42598) (#42875) * feat(fips): disallow non-compliant crypto in fingerprint processor do not allow md5 and sha1 config values in fingerprint processor * refactor: avoid duplicate maps and add tests * lint: fix linter issues (cherry picked from commit 0baabb300245d2757f1711b4d13d4c9cec21126e) Co-authored-by: kruskall <99559985+kruskall@users.noreply.github.com> --- .../fingerprint/fingerprint_test.go | 26 +++++++------- libbeat/processors/fingerprint/hash.go | 9 ++--- .../processors/fingerprint/hash_fips_test.go | 34 ++++++++++++++++++ libbeat/processors/fingerprint/hash_nofips.go | 35 ++++++++++++++++++ .../fingerprint/hash_nofips_test.go | 36 +++++++++++++++++++ 5 files changed, 121 insertions(+), 19 deletions(-) create mode 100644 libbeat/processors/fingerprint/hash_fips_test.go create mode 100644 libbeat/processors/fingerprint/hash_nofips.go create mode 100644 libbeat/processors/fingerprint/hash_nofips_test.go diff --git a/libbeat/processors/fingerprint/fingerprint_test.go b/libbeat/processors/fingerprint/fingerprint_test.go index 8d66762e479c..6e36ebfc41c5 100644 --- a/libbeat/processors/fingerprint/fingerprint_test.go +++ b/libbeat/processors/fingerprint/fingerprint_test.go @@ -19,7 +19,7 @@ package fingerprint import ( "fmt" - "math/rand" + "math/rand/v2" "strconv" "testing" "time" @@ -129,11 +129,11 @@ func TestHashMethods(t *testing.T) { "xxhash": {"37bc50682fba6686"}, } - for method, test := range tests { - t.Run(method, func(t *testing.T) { + for _, method := range hashes { + t.Run(method.Name, func(t *testing.T) { testConfig, err := config.NewConfigFrom(mapstr.M{ "fields": []string{"field1", "field2"}, - "method": method, + "method": method.Name, }) assert.NoError(t, err) @@ -150,7 +150,7 @@ func TestHashMethods(t *testing.T) { v, err := newEvent.GetValue("fingerprint") assert.NoError(t, err) - assert.Equal(t, test.expected, v) + assert.Equal(t, tests[method.Name].expected, v) }) } } @@ -212,16 +212,16 @@ func TestEncoding(t *testing.T) { tests := map[string]struct { expectedFingerprint string }{ - "hex": {"8934ca639027aab1ee9f3944d4d6bd1e"}, - "base32": {"RE2MUY4QE6VLD3U7HFCNJVV5DY======"}, - "base64": {"iTTKY5AnqrHunzlE1Na9Hg=="}, + "hex": {"49f15f7c03c606b4bdf43f60481842954ff7b45a020a22a1d0911d76f170c798"}, + "base32": {"JHYV67ADYYDLJPPUH5QEQGCCSVH7PNC2AIFCFIOQSEOXN4LQY6MA===="}, + "base64": {"SfFffAPGBrS99D9gSBhClU/3tFoCCiKh0JEddvFwx5g="}, } for encoding, test := range tests { t.Run(encoding, func(t *testing.T) { testConfig, err := config.NewConfigFrom(mapstr.M{ "fields": []string{"field2", "nested.field"}, - "method": "md5", + "method": "sha256", "encoding": encoding, }) assert.NoError(t, err) @@ -465,12 +465,12 @@ func TestProcessorStringer(t *testing.T) { testConfig, err := config.NewConfigFrom(mapstr.M{ "fields": []string{"field1"}, "encoding": "hex", - "method": "md5", + "method": "sha256", }) require.NoError(t, err) p, err := New(testConfig) require.NoError(t, err) - require.Equal(t, `fingerprint={"Method":"md5","Encoding":"hex","Fields":["field1"],"TargetField":"fingerprint","IgnoreMissing":false}`, fmt.Sprint(p)) + require.Equal(t, `fingerprint={"Method":"sha256","Encoding":"hex","Fields":["field1"],"TargetField":"fingerprint","IgnoreMissing":false}`, fmt.Sprint(p)) } func BenchmarkHashMethods(b *testing.B) { @@ -497,7 +497,7 @@ func BenchmarkHashMethods(b *testing.B) { } func nRandomEvents(num int) []beat.Event { - prng := rand.New(rand.NewSource(12345)) + prng := rand.New(rand.NewPCG(0, 12345)) const charset = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + @@ -508,7 +508,7 @@ func nRandomEvents(num int) []beat.Event { events := make([]beat.Event, 0, num) for i := 0; i < num; i++ { for j := range b { - b[j] = charset[prng.Intn(charsetLen)] + b[j] = charset[prng.IntN(charsetLen)] } events = append(events, beat.Event{ Fields: mapstr.M{ diff --git a/libbeat/processors/fingerprint/hash.go b/libbeat/processors/fingerprint/hash.go index 1c8cf146a147..61f151486a3e 100644 --- a/libbeat/processors/fingerprint/hash.go +++ b/libbeat/processors/fingerprint/hash.go @@ -18,8 +18,6 @@ package fingerprint import ( - "crypto/md5" - "crypto/sha1" "crypto/sha256" "crypto/sha512" "hash" @@ -37,14 +35,13 @@ type hashMethod func() hash.Hash var hashes = map[string]namedHashMethod{} func init() { - for _, h := range []namedHashMethod{ - {Name: "md5", Hash: md5.New}, - {Name: "sha1", Hash: sha1.New}, + fipsApprovedHashes := []namedHashMethod{ {Name: "sha256", Hash: sha256.New}, {Name: "sha384", Hash: sha512.New384}, {Name: "sha512", Hash: sha512.New}, {Name: "xxhash", Hash: newXxHash}, - } { + } + for _, h := range fipsApprovedHashes { hashes[h.Name] = h } } diff --git a/libbeat/processors/fingerprint/hash_fips_test.go b/libbeat/processors/fingerprint/hash_fips_test.go new file mode 100644 index 000000000000..8beeb4b3e5f5 --- /dev/null +++ b/libbeat/processors/fingerprint/hash_fips_test.go @@ -0,0 +1,34 @@ +// 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. + +//go:build requirefips + +package fingerprint + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestHashMethod(t *testing.T) { + require.Len(t, hashes, 4) + require.Contains(t, hashes, "sha256") + require.Contains(t, hashes, "sha384") + require.Contains(t, hashes, "sha512") + require.Contains(t, hashes, "xxhash") +} diff --git a/libbeat/processors/fingerprint/hash_nofips.go b/libbeat/processors/fingerprint/hash_nofips.go new file mode 100644 index 000000000000..16a002b84d14 --- /dev/null +++ b/libbeat/processors/fingerprint/hash_nofips.go @@ -0,0 +1,35 @@ +// 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. + +//go:build !requirefips + +package fingerprint + +import ( + "crypto/md5" + "crypto/sha1" +) + +func init() { + nonFipsApprovedHashes := []namedHashMethod{ + {Name: "md5", Hash: md5.New}, + {Name: "sha1", Hash: sha1.New}, + } + for _, h := range nonFipsApprovedHashes { + hashes[h.Name] = h + } +} diff --git a/libbeat/processors/fingerprint/hash_nofips_test.go b/libbeat/processors/fingerprint/hash_nofips_test.go new file mode 100644 index 000000000000..865e6249e640 --- /dev/null +++ b/libbeat/processors/fingerprint/hash_nofips_test.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. + +//go:build !requirefips + +package fingerprint + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestHashMethod(t *testing.T) { + require.Len(t, hashes, 6) + require.Contains(t, hashes, "md5") + require.Contains(t, hashes, "sha1") + require.Contains(t, hashes, "sha256") + require.Contains(t, hashes, "sha384") + require.Contains(t, hashes, "sha512") + require.Contains(t, hashes, "xxhash") +} From cadba9472e3eda943986e5a511dbeefd2b91f50e Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 6 Mar 2025 10:58:56 +0000 Subject: [PATCH 2/4] [metricbeat] Add a new 'match_by_parent_instance' option to 'perfmon' module (#43002) (#43069) * Add a new 'match_by_parent_instance' option to 'perfmon' module * Add type assertion check (cherry picked from commit 180bd96836d503887fdb9044555b46521bc228d9) Co-authored-by: Marc Guasch --- CHANGELOG.next.asciidoc | 1 + .../windows/perfmon/_meta/docs.asciidoc | 7 ++ metricbeat/module/windows/perfmon/config.go | 5 ++ metricbeat/module/windows/perfmon/data.go | 20 ++--- .../module/windows/perfmon/data_test.go | 76 +++++++++++++++++++ 5 files changed, 100 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 8c680a3323b7..9df9f16951ba 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -421,6 +421,7 @@ otherwise no tag is added. {issue}42208[42208] {pull}42403[42403] - Add new metricset wmi for the windows module. {pull}42017[42017] - Update beat module with apm-server tail sampling monitoring metrics fields {pull}42569[42569] - Log every 401 response from Kubernetes API Server {pull}42714[42714] +- Add a new `match_by_parent_instance` option to `perfmon` module. {pull}43002[43002] *Metricbeat* - Add benchmark module {pull}41801[41801] diff --git a/metricbeat/module/windows/perfmon/_meta/docs.asciidoc b/metricbeat/module/windows/perfmon/_meta/docs.asciidoc index 9550e771ebc7..9df8c740fb49 100644 --- a/metricbeat/module/windows/perfmon/_meta/docs.asciidoc +++ b/metricbeat/module/windows/perfmon/_meta/docs.asciidoc @@ -49,6 +49,13 @@ The default behaviour is for all measurements to be sent as separate events. *`refresh_wildcard_counters`*:: A boolean option to refresh the counter list at each fetch. By default, the counter list will be retrieved at the starting time, to refresh the list at each fetch, users will have to enable this setting. +*`match_by_parent_instance`*:: A boolean option that causes all instances +of the same parent to have the same instance value. In the above example, +this will cause metrics for `svchost`, `svchost#1`, etc. to have an `instance` +value of `svchost`. If set to `false` they will keep the original values +(`svchost`, `svchost#1`, etc.). +It defaults to `true`. + [float] ==== Query Configuration diff --git a/metricbeat/module/windows/perfmon/config.go b/metricbeat/module/windows/perfmon/config.go index f16c9c3b324b..4033fc404aeb 100644 --- a/metricbeat/module/windows/perfmon/config.go +++ b/metricbeat/module/windows/perfmon/config.go @@ -35,6 +35,7 @@ type Config struct { RefreshWildcardCounters bool `config:"perfmon.refresh_wildcard_counters"` Queries []Query `config:"perfmon.queries"` GroupAllCountersTo string `config:"perfmon.group_all_counter"` + MatchByParentInstance *bool `config:"perfmon.match_by_parent_instance"` } // QueryConfig for perfmon queries. This will be used as the new configuration format @@ -77,6 +78,10 @@ func (conf *Config) Validate() error { return nil } +func (conf *Config) ShouldMatchByParentInstance() bool { + return conf.MatchByParentInstance == nil || *conf.MatchByParentInstance +} + func isValidFormat(format string) bool { for _, form := range allowedFormats { if form == format { diff --git a/metricbeat/module/windows/perfmon/data.go b/metricbeat/module/windows/perfmon/data.go index 0391266e65a5..5e35c9ae4e1b 100644 --- a/metricbeat/module/windows/perfmon/data.go +++ b/metricbeat/module/windows/perfmon/data.go @@ -75,12 +75,14 @@ func (re *Reader) groupToEvents(counters map[string][]pdh.CounterValue) []mb.Eve eventMap[eventKey].Error = fmt.Errorf("failed on query=%v: %w", counterPath, val.Err.Error) } if val.Instance != "" { - // will ignore instance index - if ok, match := matchesParentProcess(val.Instance); ok { - eventMap[eventKey].MetricSetFields.Put(counter.InstanceField, match) - } else { - eventMap[eventKey].MetricSetFields.Put(counter.InstanceField, val.Instance) + instanceName := val.Instance + if re.config.ShouldMatchByParentInstance() { + if ok, match := matchesParentProcess(val.Instance); ok { + // will ignore instance index + instanceName = match + } } + eventMap[eventKey].MetricSetFields.Put(counter.InstanceField, instanceName) } } @@ -126,13 +128,13 @@ func (re *Reader) groupToSingleEvent(counters map[string][]pdh.CounterValue) mb. continue } var counterVal float64 - switch val.Measurement.(type) { + switch m := val.Measurement.(type) { case int64: - counterVal = float64(val.Measurement.(int64)) + counterVal = float64(m) case int: - counterVal = float64(val.Measurement.(int)) + counterVal = float64(m) default: - counterVal = val.Measurement.(float64) + counterVal, _ = val.Measurement.(float64) } if _, ok := measurements[readerCounter.QueryField]; !ok { measurements[readerCounter.QueryField] = counterVal diff --git a/metricbeat/module/windows/perfmon/data_test.go b/metricbeat/module/windows/perfmon/data_test.go index 9c4691216b34..fdb6683e897e 100644 --- a/metricbeat/module/windows/perfmon/data_test.go +++ b/metricbeat/module/windows/perfmon/data_test.go @@ -292,6 +292,82 @@ func TestGroupToSingleEvent(t *testing.T) { assert.Equal(t, val, mapstr.M{"processor_count": float64(2)}) } +func TestMatchByParentInstance(t *testing.T) { + _true := true + _false := false + reader := Reader{ + query: pdh.Query{}, + log: nil, + config: Config{ + MatchByParentInstance: &_true, + }, + counters: []PerfCounter{ + { + QueryField: "%_processor_time", + QueryName: `\Processor Information(*)\% Processor Time`, + Format: "float", + ObjectName: "Processor Information", + ObjectField: "object", + InstanceName: "*", + InstanceField: "instance", + ChildQueries: []string{`\Processor Information(processor)\% Processor Time`, `\Processor Information(processor#1)\% Processor Time`}, + }, + }, + } + + counters := map[string][]pdh.CounterValue{ + `\Processor Information(processor)\% Processor Time`: { + { + Instance: "processor", + Measurement: 23, + }, + }, + `\Processor Information(processor#1)\% Processor Time`: { + { + Instance: "processor#1", + Measurement: 21, + }, + }, + } + + { + events := reader.groupToEvents(counters) + assert.NotNil(t, events) + assert.Equal(t, 2, len(events)) + ok, err := events[0].MetricSetFields.HasKey("instance") + assert.NoError(t, err) + assert.True(t, ok) + ok, err = events[1].MetricSetFields.HasKey("instance") + assert.NoError(t, err) + assert.True(t, ok) + val1, err := events[0].MetricSetFields.GetValue("instance") + assert.NoError(t, err) + assert.Equal(t, val1, "processor") + val2, err := events[1].MetricSetFields.GetValue("instance") + assert.NoError(t, err) + assert.Equal(t, val2, "processor") + } + + reader.config.MatchByParentInstance = &_false + { + events := reader.groupToEvents(counters) + assert.NotNil(t, events) + assert.Equal(t, 2, len(events)) + ok, err := events[0].MetricSetFields.HasKey("instance") + assert.NoError(t, err) + assert.True(t, ok) + ok, err = events[1].MetricSetFields.HasKey("instance") + assert.NoError(t, err) + assert.True(t, ok) + val1, err := events[0].MetricSetFields.GetValue("instance") + assert.NoError(t, err) + assert.Equal(t, val1, "processor") + val2, err := events[1].MetricSetFields.GetValue("instance") + assert.NoError(t, err) + assert.Equal(t, val2, "processor#1") + } +} + func TestMatchesParentProcess(t *testing.T) { ok, val := matchesParentProcess("svchost") assert.True(t, ok) From 3d83df1916209f7c0f377838405e21f352cbe1d1 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 6 Mar 2025 14:28:12 +0200 Subject: [PATCH 3/4] added win 2025 steps according to matrix (#42998) (#43057) (cherry picked from commit beba86694322a095861afa987185455366dbf46e) Co-authored-by: Olga Naydyonock --- .buildkite/filebeat/filebeat-pipeline.yml | 22 ++++++++++++++++++++++ .buildkite/metricbeat/pipeline.yml | 22 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index 83c3c1091673..e6f932929a82 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -17,6 +17,7 @@ env: IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + IMAGE_WIN_2025: "family/platform-ingest-beats-windows-2025" IMAGE_BEATS_WITH_HOOKS_LATEST: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci-with-hooks:latest" @@ -255,6 +256,27 @@ steps: if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ steps: + - label: ":windows: Filebeat: Win 2025 Unit Tests" + key: "windows-extended-2025" + command: | + Set-Location -Path filebeat + mage build unitTest + retry: + automatic: + - limit: 1 + agents: + provider: "gcp" + image: "${IMAGE_WIN_2025}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Win 2025 Unit Tests" + - label: ":windows: Filebeat: Win 2019 Unit Tests" key: "windows-extended-2019" command: | diff --git a/.buildkite/metricbeat/pipeline.yml b/.buildkite/metricbeat/pipeline.yml index 2d2b0d871cd3..0d4bdd7cda72 100644 --- a/.buildkite/metricbeat/pipeline.yml +++ b/.buildkite/metricbeat/pipeline.yml @@ -17,6 +17,7 @@ env: IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + IMAGE_WIN_2025: "family/platform-ingest-beats-windows-2025" IMAGE_BEATS_WITH_HOOKS_LATEST: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci-with-hooks:latest" @@ -271,6 +272,27 @@ steps: - github_commit_status: context: "metricbeat: Win 2019 Unit Tests" + - label: ":windows: Metricbeat: Win 2025 Unit Tests" + command: | + Set-Location -Path metricbeat + mage build unitTest + key: "extended-win-2025-unit-tests" + retry: + automatic: + - limit: 1 + agents: + provider: "gcp" + image: "${IMAGE_WIN_2025}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Win 2025 Unit Tests" + - group: "Extended Tests" key: "metricbeat-extended-tests" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ From 54233a7d8f9af2bab5422959b57d520d095d7a50 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 6 Mar 2025 15:49:45 +0000 Subject: [PATCH 4/4] filebeat: make deep copy before notifying of config change (#42992) (#43074) This prevents concurrent read & write map access. Unrelated, but I've escalated one log line to Info to allow for easier verifying that ES store is being used from agent logs. Fixes #42815 (cherry picked from commit f1e42fcaf3e3d3f36e9cf7ded219650aaa6a8114) Co-authored-by: Orestis Floros --- filebeat/beater/filebeat.go | 10 +++++++++- libbeat/statestore/backend/es/store.go | 2 +- x-pack/filebeat/tests/integration/managerV2_test.go | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/filebeat/beater/filebeat.go b/filebeat/beater/filebeat.go index aebff1732e91..7c6ebd5556e4 100644 --- a/filebeat/beater/filebeat.go +++ b/filebeat/beater/filebeat.go @@ -328,7 +328,15 @@ func (fb *Filebeat) Run(b *beat.Beat) error { return nil } - stateStore.notifier.Notify(outCfg.Config()) + // Create a new config with the output configuration. Since r.Config is a pointer, a copy is required to + // avoid concurrent map read and write. + // See https://github.com/elastic/beats/issues/42815 + configCopy, err := conf.NewConfigFrom(outCfg.Config()) + if err != nil { + logp.Err("Failed to create a new config from the output config: %v", err) + return nil + } + stateStore.notifier.Notify(configCopy) return nil }) } diff --git a/libbeat/statestore/backend/es/store.go b/libbeat/statestore/backend/es/store.go index fee1e0c9ba48..d4a6fd130853 100644 --- a/libbeat/statestore/backend/es/store.go +++ b/libbeat/statestore/backend/es/store.go @@ -296,7 +296,7 @@ func (s *store) Each(fn func(string, backend.ValueDecoder) (bool, error)) error } func (s *store) configure(ctx context.Context, c *conf.C) { - s.log.Debugf("Configure ES store") + s.log.Info("Configuring ES store") s.mx.Lock() defer s.mx.Unlock() diff --git a/x-pack/filebeat/tests/integration/managerV2_test.go b/x-pack/filebeat/tests/integration/managerV2_test.go index 84f6ad0f54bb..a05ee01570e0 100644 --- a/x-pack/filebeat/tests/integration/managerV2_test.go +++ b/x-pack/filebeat/tests/integration/managerV2_test.go @@ -930,7 +930,7 @@ func TestHTTPJSONInputReloadUnderElasticAgentWithElasticStateStore(t *testing.T) ) for _, contains := range []string{ - "Configure ES store", + "Configuring ES store", "input-cursor::openStore: prefix: httpjson inputID: " + inputID, "input-cursor store read 0 keys", // first, no previous data exists "input-cursor store read 1 keys", // after the restart, previous key is read