Skip to content

Conversation

@carsonip
Copy link
Member

@carsonip carsonip commented Jan 17, 2023

Motivation/summary

Add overflow bucket to service summary to align with transaction metrics and service metrics.

Checklist

How to test these changes

  • On overflow, check for document that has field service_summary.aggregation.overflow_count

Related issues

Part of #9654

@mergify
Copy link
Contributor

mergify bot commented Jan 17, 2023

This pull request does not have a backport label. Could you fix it @carsonip? 🙏
To fixup this pull request, you need to add the backport labels for the needed
branches, such as:

  • backport-7.x is the label to automatically backport to the 7.x branch.
  • backport-7./d is the label to automatically backport to the 7./d branch. /d is the digit

NOTE: backport-skip has been added to this pull request.

@mergify mergify bot added the backport-skip Skip notification from the automated backport with mergify label Jan 17, 2023
@mergify
Copy link
Contributor

mergify bot commented Jan 17, 2023

This pull request is now in conflicts. Could you fix it @carsonip? 🙏
To fixup this pull request, you can check out it locally. See documentation: https://help.github.com/articles/checking-out-pull-requests-locally/

git fetch upstream
git checkout -b service-summary-overflow-bucket upstream/service-summary-overflow-bucket
git merge upstream/main
git push upstream service-summary-overflow-bucket

@ghost
Copy link

ghost commented Jan 17, 2023

💚 Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS
Pipeline View Test View Changes Artifacts preview preview

Expand to view the summary

Build stats

  • Start Time: 2023-01-19T07:36:06.319+0000

  • Duration: 10 min 22 sec

🤖 GitHub comments

Expand to view the GitHub comments

To re-run your PR in the CI, just comment with:

  • /test : Re-trigger the build.

  • /package : Generate and publish the docker images.

  • /test windows : Build & tests on Windows.

  • run elasticsearch-ci/docs : Re-trigger the docs validation. (use unformatted text in the comment!)

@ghost
Copy link

ghost commented Jan 17, 2023

📚 Go benchmark report

Diff with the main branch

goos: linux
goarch: amd64
pkg: github.com/elastic/apm-server/internal/agentcfg
cpu: 12th Gen Intel(R) Core(TM) i5-12500
                                  │ build/main/bench.out │              bench.out               │
                                  │        sec/op        │    sec/op      vs base               │
FetchAndAdd/FetchFromCache-12               41.28n ± ∞ ¹    46.04n ± ∞ ¹  +11.53% (p=0.008 n=5)
FetchAndAdd/FetchAndAddToCache-12           95.35n ± ∞ ¹   106.20n ± ∞ ¹  +11.38% (p=0.008 n=5)
geomean                                     62.74n          69.92n        +11.46%
¹ need >= 6 samples for confidence interval at level 0.95

                                  │ build/main/bench.out │              bench.out              │
                                  │         B/op         │    B/op      vs base                │
geomean                                                ³                +0.00%               ³
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ summaries must be >0 to compute geomean

                                  │ build/main/bench.out │              bench.out              │
                                  │      allocs/op       │  allocs/op   vs base                │
geomean                                                ³                +0.00%               ³
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ summaries must be >0 to compute geomean

pkg: github.com/elastic/apm-server/internal/beater/request
                                             │ build/main/bench.out │              bench.out              │
                                             │        sec/op        │    sec/op     vs base               │
ContextReset/Remote_Addr_ipv4-12                       497.7n ± ∞ ¹   675.4n ± ∞ ¹  +35.70% (p=0.008 n=5)
ContextResetContentEncoding/empty-12                   110.5n ± ∞ ¹   123.5n ± ∞ ¹  +11.76% (p=0.008 n=5)
ContextResetContentEncoding/uncompressed-12            131.2n ± ∞ ¹   144.3n ± ∞ ¹   +9.98% (p=0.008 n=5)
geomean                                                794.4n         888.4n        +11.83%
¹ need >= 6 samples for confidence interval at level 0.95

                                             │ build/main/bench.out │               bench.out               │
                                             │         B/op         │     B/op       vs base                │
geomean                                                           ³                  +0.00%               ³
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ summaries must be >0 to compute geomean

                                             │ build/main/bench.out │              bench.out              │
                                             │      allocs/op       │  allocs/op   vs base                │
geomean                                                           ³                +0.00%               ³
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ summaries must be >0 to compute geomean

pkg: github.com/elastic/apm-server/internal/publish
             │ build/main/bench.out │          bench.out           │
             │        sec/op        │   sec/op     vs base         │
¹ need >= 6 samples for confidence interval at level 0.95

             │ build/main/bench.out │           bench.out            │
             │         B/op         │     B/op       vs base         │
¹ need >= 6 samples for confidence interval at level 0.95

             │ build/main/bench.out │           bench.out           │
             │      allocs/op       │  allocs/op    vs base         │
¹ need >= 6 samples for confidence interval at level 0.95

pkg: github.com/elastic/apm-server/x-pack/apm-server/aggregation/spanmetrics
                 │ build/main/bench.out │           bench.out           │
                 │        sec/op        │    sec/op     vs base         │
¹ need >= 6 samples for confidence interval at level 0.95

                 │ build/main/bench.out │            bench.out             │
                 │         B/op         │     B/op       vs base           │
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal

                 │ build/main/bench.out │           bench.out            │
                 │      allocs/op       │  allocs/op   vs base           │
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal

pkg: github.com/elastic/apm-server/x-pack/apm-server/aggregation/txmetrics
                        │ build/main/bench.out │           bench.out           │
                        │        sec/op        │    sec/op     vs base         │
¹ need >= 6 samples for confidence interval at level 0.95

                        │ build/main/bench.out │           bench.out            │
                        │         B/op         │    B/op      vs base           │
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal

                        │ build/main/bench.out │           bench.out            │
                        │      allocs/op       │  allocs/op   vs base           │
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal

pkg: github.com/elastic/apm-server/x-pack/apm-server/sampling
               │ build/main/bench.out │              bench.out              │
               │        sec/op        │    sec/op     vs base               │
geomean                  605.4n         680.9n        +12.47%
¹ need >= 6 samples for confidence interval at level 0.95

               │ build/main/bench.out │               bench.out               │
               │         B/op         │     B/op       vs base                │
geomean                             ³                  +0.66%               ³
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ summaries must be >0 to compute geomean

               │ build/main/bench.out │              bench.out              │
               │      allocs/op       │  allocs/op   vs base                │
geomean                             ³                +0.00%               ³
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ summaries must be >0 to compute geomean

pkg: github.com/elastic/apm-server/x-pack/apm-server/sampling/eventstorage
                                            │ build/main/bench.out │               bench.out               │
                                            │        sec/op        │    sec/op      vs base                │
ShardedWriteTransactionContended-12                   5.944µ ± ∞ ¹    5.194µ ± ∞ ¹   -12.62% (p=0.032 n=5)
WriteTransaction/json_codec-12                        4.305µ ± ∞ ¹   12.728µ ± ∞ ¹  +195.66% (p=0.008 n=5)
WriteTransaction/json_codec_big_tx-12                 5.289µ ± ∞ ¹   13.583µ ± ∞ ¹  +156.82% (p=0.032 n=5)
ReadEvents/json_codec_big_tx/0_events-12              305.6n ± ∞ ¹    353.1n ± ∞ ¹   +15.54% (p=0.032 n=5)
ReadEvents/json_codec_big_tx/1_events-12              11.96µ ± ∞ ¹    12.63µ ± ∞ ¹    +5.55% (p=0.032 n=5)
ReadEvents/nop_codec/0_events-12                      312.4n ± ∞ ¹    347.5n ± ∞ ¹   +11.24% (p=0.016 n=5)
ReadEvents/nop_codec/10_events-12                     22.97µ ± ∞ ¹    15.72µ ± ∞ ¹   -31.55% (p=0.032 n=5)
ReadEvents/nop_codec_big_tx/0_events-12               304.9n ± ∞ ¹    344.4n ± ∞ ¹   +12.96% (p=0.008 n=5)
IsTraceSampled/sampled-12                             69.26n ± ∞ ¹    77.08n ± ∞ ¹   +11.29% (p=0.008 n=5)
IsTraceSampled/unsampled-12                           71.92n ± ∞ ¹    78.19n ± ∞ ¹    +8.72% (p=0.016 n=5)
IsTraceSampled/unknown-12                             383.0n ± ∞ ¹    419.9n ± ∞ ¹    +9.63% (p=0.016 n=5)
geomean                                               29.31µ          31.56µ          +7.70%
¹ need >= 6 samples for confidence interval at level 0.95

                                            │ build/main/bench.out │                bench.out                │
                                            │         B/op         │      B/op       vs base                 │
ShardedWriteTransactionContended-12                  7.612Ki ± ∞ ¹    6.592Ki ± ∞ ¹  -13.41% (p=0.032 n=5)
geomean                                              31.42Ki          31.28Ki         -0.44%
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal

                                            │ build/main/bench.out │              bench.out               │
                                            │      allocs/op       │  allocs/op    vs base                │
geomean                                                144.7          144.7        +0.00%
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal

report generated with https://pkg.go.dev/golang.org/x/perf/cmd/benchstat

@carsonip carsonip force-pushed the service-summary-overflow-bucket branch 5 times, most recently from 5c32fa2 to bc9f72b Compare January 17, 2023 21:10
@carsonip carsonip force-pushed the service-summary-overflow-bucket branch from bc9f72b to d521aec Compare January 17, 2023 21:17
@carsonip carsonip marked this pull request as ready for review January 17, 2023 21:58
@carsonip carsonip requested a review from a team January 17, 2023 21:58
Copy link
Contributor

@simitt simitt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes largely look good, just a bit more alignment with how this is handled in the other aggregations.

@carsonip
Copy link
Member Author

carsonip commented Jan 18, 2023

@simitt @axw I really like how the mb.space backing array was implemented in service metrics to enable sequential memory access and reduce gc pressure. Given that the cardinality may be lower in service summary metrics, are we worried about reserving maxGroups * sizeof(aggregationKey) in memory while most of it may be unused?

Same question for service destination. Currently service destination does not have the backing array but just metrics buffer map holding pointers to metricsMapEntry structs all over the heap. No need to reserve memory but probably bad for gc and access time.

@simitt
Copy link
Contributor

simitt commented Jan 18, 2023

@carsonip could you provide micro-benchmarks on both options?
What's the additionally reserved memory for the default values for a 1GB instance?

@mergify
Copy link
Contributor

mergify bot commented Jan 18, 2023

This pull request is now in conflicts. Could you fix it @carsonip? 🙏
To fixup this pull request, you can check out it locally. See documentation: https://help.github.com/articles/checking-out-pull-requests-locally/

git fetch upstream
git checkout -b service-summary-overflow-bucket upstream/service-summary-overflow-bucket
git merge upstream/main
git push upstream service-summary-overflow-bucket

@carsonip
Copy link
Member Author

carsonip commented Jan 18, 2023

@carsonip could you provide micro-benchmarks on both options? What's the additionally reserved memory for the default values for a 1GB instance?

(updated math, my previous math was VERY wrong)
sizeof(aggregationKey{}) is 136B, maxGroups is configurable.

  • e.g. maxGroups = 1000, the size of the backing array will be ~136KB.
  • Given maxGroups is auto-sized using maxGroupsForAggregation, for an APM server with 1GB mem limit, maxGroups will be 10000 and the backing array will therefore be ~1.36MB.
  • With 64GB or more mem limit, maxGroups will be autosized to 640000, which is 87MB.

We already have a backing array for service metrics.

Side note: Since map entry contains labels, which contains slices, we may retain references to more objects on the heap and keeping more memory in use than just 136B.

With backing array mb.space, benchmarking processEvent:

goos: linux
goarch: amd64
pkg: github.com/elastic/apm-server/x-pack/apm-server/aggregation/servicesummarymetrics
cpu: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz
BenchmarkProcessEvent
BenchmarkProcessEvent/run
BenchmarkProcessEvent/run-16         	 2046958	       607.9 ns/op	     247 B/op	       3 allocs/op
PASS

Without backing array and just keeping addresses of structs on the heap:

goos: linux
goarch: amd64
pkg: github.com/elastic/apm-server/x-pack/apm-server/aggregation/servicesummarymetrics
cpu: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz
BenchmarkProcessEvent
BenchmarkProcessEvent/run
BenchmarkProcessEvent/run-16         	 1137164	       973.4 ns/op	     679 B/op	       6 allocs/op
PASS

publish performance is not benchmarked here. With the backing array, I assume the memory locality will make things faster, not to mention that there is no need to loop over a hash table with separate chaining.

IMO, if it doesn't seem wise to reserve memory for this purpose, we can implement the one without backing array first, and optimize it later if it becomes an issue.

@carsonip
Copy link
Member Author

@simitt I've removed the mb.space backing array optimization for now to unblock it first. We can add optimizations later on.

@axw
Copy link
Member

axw commented Jan 19, 2023

Reserving 13.6KB on a 1GB machine, and 870KB on a 64GB machine, is not even remotely concerning to me. Generating a lot of garbage is. Nevertheless, I'm fine with keeping it simple to start with and optimising later - it's fairly insignificant in the grand scheme of things.

@simitt
Copy link
Contributor

simitt commented Jan 19, 2023

I fully agree with @axw these numbers are very small and I'd prefer moginv forward with the backing array, but also fine with me to re-add later.

@carsonip
Copy link
Member Author

Updated my math on memory usage because it was very wrong. But let's merge the changes in first and optimize the performance later. There are other aggregators that can use this optimization as well.

@carsonip carsonip merged commit defa116 into elastic:main Jan 19, 2023
@marclop marclop self-assigned this Feb 20, 2023
@marclop
Copy link
Contributor

marclop commented Feb 20, 2023

@carsonip I tried to test this with 8.7.0 BC2 on ESS but it doesn't seem to be working.

I noticed that there are some error messages around the time when I was triggering the overflow that make me think that we forgot to remove the _metric_descriptions field.

vs

---
description: Pipeline for ingesting APM service summary metrics.
processors:
- pipeline:
name: observer_version
- pipeline:
name: observer_ids
- pipeline:
name: ecs_version

failed to index document (strict_dynamic_mapping_exception): mapping set to strict, dynamic introduction of [_metric_descriptions] within [_doc] is not allowed

I used the following program, as main.go, and also the script below as test.sh.

package main

import (
	"bytes"
	"encoding/binary"
	"fmt"
	"io"
	"log"
	"math/rand"
	"net/http"
	"os"
	"runtime"
	"strconv"
	"sync"
	"time"

	"go.elastic.co/apm/v2/model"
	"go.elastic.co/fastjson"
)

var host = os.Getenv("ELASTIC_APM_SERVER_URL")
var auth = os.Getenv("ELASTIC_APM_SECRET_TOKEN")

var (
	language = model.Language{Name: "go", Version: runtime.Version()}
	rtime    = model.Runtime{Name: runtime.Compiler, Version: runtime.Version()}
	agent    = model.Agent{Name: "go", Version: "2.2.0"}
)

func main() {
	txGroups := 10
	if groups := os.Getenv("TX_GROUPS"); groups != "" {
		if v, _ := strconv.ParseInt(groups, 10, 64); v > 0 {
			txGroups = int(v)
		}
	}
	services := 1
	if groups := os.Getenv("SERVICES"); groups != "" {
		if v, _ := strconv.ParseInt(groups, 10, 64); v > 0 {
			services = int(v)
		}
	}
	var frequency time.Duration = 0 // <= 0 means send once and exit
	if str := os.Getenv("FREQUENCY"); str != "" {
		if v, err := time.ParseDuration(str); err == nil {
			frequency = v
		}
	}

	var wg sync.WaitGroup
	log.Printf("starting load generator with frequency %s", frequency)

	for i := 0; i < services; i++ {
		wg.Add(1)
		go func(id int) {
			defer wg.Done()
			var ticker *time.Ticker
			if frequency > 0 {
				ticker = time.NewTicker(frequency)
			}
			for {
				if ticker != nil {
					<-ticker.C
				}

				var w fastjson.Writer
				var batchSize int
				for batchSize < 10 {
					batchSize = rand.Intn(100)
				}
				defer flushService(&w, auth)

				for i := 0; i < txGroups; i++ {
					if i%batchSize == 0 {
						if i > 0 {
							flushService(&w, auth)
						}
						writeMetadata(&w, id)
					}
					txID := i
					writeTransaction(&w, txID, id)
				}

				if ticker == nil {
					break
				}
			}
		}(i)
	}
	wg.Wait()
	log.Println("done")
}

func writeMetadata(json *fastjson.Writer, id int) error {
	json.RawString(`{"metadata":`)
	json.RawString(`{"service":`)
	svc := model.Service{
		Name:        fmt.Sprint("service-", id),
		Language:    &language,
		Runtime:     &rtime,
		Agent:       &agent,
		Environment: "dev",
		Node: &model.ServiceNode{
			ConfiguredName: "service-node",
		},
	}
	if err := svc.MarshalFastJSON(json); err != nil {
		return err
	}
	json.RawByte('}')
	json.RawString("}\n")
	return nil
}

func writeTransaction(w *fastjson.Writer, txID, id int) {
	t := true
	sr := 1.0
	tx := model.Transaction{
		Timestamp:  model.Time(time.Now()),
		Name:       fmt.Sprintf("tx-%d", txID),
		Type:       "txtype",
		Duration:   10 + float64(id),
		Outcome:    "success",
		Result:     "HTTP 2xx",
		Sampled:    &t,
		SampleRate: &sr,
	}
	binary.LittleEndian.PutUint64(tx.TraceID[:8], rand.Uint64())
	binary.LittleEndian.PutUint64(tx.TraceID[8:], rand.Uint64())
	binary.LittleEndian.PutUint64(tx.ID[:], rand.Uint64())
	w.RawString(`{"transaction":`)
	tx.MarshalFastJSON(w)
	w.RawString("}\n")
}

func flushService(w *fastjson.Writer, auth string) {
	buf := make([]byte, w.Size())
	copy(buf, w.Bytes())
	w.Reset()
	req, err := http.NewRequest(http.MethodPost,
		host+"/intake/v2/events",
		bytes.NewReader(buf),
	)
	if err != nil {
		panic(err)
	}
	req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", auth))
	req.Header.Add("Content-type", "application/x-ndjson")
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	if res.StatusCode >= 400 {
		io.Copy(os.Stdout, res.Body)
	}
}
#!/bin/bash

export ELASTIC_APM_SERVER_URL=${1:-"http://localhost:8200"}

export TX_GROUPS=1
export SERVICES=3000

go run main.go

@carsonip
Copy link
Member Author

@marclop thanks for testing this. I'll add a system test and make sure this is fixed.

@carsonip
Copy link
Member Author

Since service groups are autosized, unless we duplicate the autosizing in logic in system test, we can't rely on a const and be sure that it will overflow. The best approach imo will be to wait for #10207 for metrics on overflow, so that it is observable from the outside whether it has overflowed. @lahsivjar what do you think?

@lahsivjar
Copy link
Contributor

lahsivjar commented Feb 20, 2023

@carsonip I am not sure if I understand the issue with adding the systemtest correctly.

Since service groups are autosized, unless we duplicate the autosizing in logic in system test, we can't rely on a const and be sure that it will overflow

Based on what I understand, in the systemtest, we can disable autoscaling by setting the specific configurations values to be a positive number.

so that it is observable from the outside whether it has overflowed

We can assert this reliably by checking for documents with transaction.name: _other

@carsonip
Copy link
Member Author

Based on what I understand, in the systemtest, we can disable autoscaling by setting the specific configurations values to be a positive number.
We can assert this reliably by checking for documents with transaction.name: _other

Ah, you're right. I'll proceed with setting the config and checking for _other. Thanks.

@marclop marclop mentioned this pull request Feb 20, 2023
11 tasks
carsonip added a commit to carsonip/apm-server that referenced this pull request Feb 20, 2023
Fix regression introduced in elastic#10061 where service summary overflow
bucket did not work.
carsonip added a commit to carsonip/apm-server that referenced this pull request Feb 20, 2023
Fix regression introduced in elastic#10061 where service summary overflow
bucket did not work.
@carsonip
Copy link
Member Author

Fixing in #10302

carsonip added a commit to carsonip/apm-server that referenced this pull request Feb 20, 2023
Fix regression introduced in elastic#10061 where service summary overflow
bucket did not work.
carsonip added a commit that referenced this pull request Feb 20, 2023
Fix regression introduced in #10061 where service summary overflow
bucket did not work.
mergify bot pushed a commit that referenced this pull request Feb 20, 2023
Fix regression introduced in #10061 where service summary overflow
bucket did not work.

(cherry picked from commit 4ca4bb1)
carsonip added a commit that referenced this pull request Feb 20, 2023
Fix regression introduced in #10061 where service summary overflow
bucket did not work.

(cherry picked from commit 4ca4bb1)

Co-authored-by: Carson Ip <[email protected]>
@marclop
Copy link
Contributor

marclop commented Mar 8, 2023

@carsonip I'm re-testing this and still seeing the same issue:

GET metrics-apm.service_summary*/_search?filter_path=hits.hits
{
  "query": {
    "match": {
      "service.name": "_other"
    }
  }
}
{
  "hits": {
    "hits": []
  }
}

The logs still show that error: failed to index document (strict_dynamic_mapping_exception): mapping set to strict, dynamic introduction of [_metric_descriptions] within [_doc] is not allowed

@marclop
Copy link
Contributor

marclop commented Mar 8, 2023

There's a stale PR blocking the 8.7 branch updates elastic/kibana#150647, that would be a good explanation as to why this isn't working with the latest BC (BC4).

@marclop
Copy link
Contributor

marclop commented Mar 10, 2023

Verified with BC5 on ESS:

GET metrics-apm.service_summary.1m-default/_search?filter_path=hits.hits
{
  "query": {
    "match": {
      "service.name": "_other"
    }
  }
}
{
  "hits": {
    "hits": [
      {
        "_index": ".ds-metrics-apm.service_summary.1m-default-2023.03.10-000001",
        "_id": "Cm_8yoYBePWpGPOHo5_2",
        "_score": 7.379257,
        "_source": {
          "@timestamp": "2023-03-10T10:05:00.000Z",
          "data_stream": {
            "dataset": "apm.service_summary.1m",
            "namespace": "default",
            "type": "metrics"
          },
          "ecs": {
            "version": "8.6.0-dev"
          },
          "event": {
            "agent_id_status": "missing",
            "ingested": "2023-03-10T10:06:40Z"
          },
          "metricset": {
            "interval": "1m",
            "name": "service_summary"
          },
          "observer": {
            "hostname": "c9e482615886",
            "type": "apm-server",
            "version": "8.7.0"
          },
          "processor": {
            "event": "metric",
            "name": "metric"
          },
          "service": {
            "name": "_other"
          },
          "service_summary": {
            "aggregation": {
              "overflow_count": 500
            }
          }
        }
      },
      {
        "_index": ".ds-metrics-apm.service_summary.1m-default-2023.03.10-000001",
        "_id": "c2_7yoYBePWpGPOHuY2N",
        "_score": 7.379257,
        "_source": {
          "@timestamp": "2023-03-10T10:04:00.000Z",
          "data_stream": {
            "dataset": "apm.service_summary.1m",
            "namespace": "default",
            "type": "metrics"
          },
          "ecs": {
            "version": "8.6.0-dev"
          },
          "event": {
            "agent_id_status": "missing",
            "ingested": "2023-03-10T10:05:40Z"
          },
          "metricset": {
            "interval": "1m",
            "name": "service_summary"
          },
          "observer": {
            "hostname": "c9e482615886",
            "type": "apm-server",
            "version": "8.7.0"
          },
          "processor": {
            "event": "metric",
            "name": "metric"
          },
          "service": {
            "name": "_other"
          },
          "service_summary": {
            "aggregation": {
              "overflow_count": 100
            }
          }
        }
      }
    ]
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-skip Skip notification from the automated backport with mergify test-plan test-plan-ok v8.7.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants