Skip to content

Commit 70fbb1b

Browse files
authored
chore: add groupID to proxy chunk count metrics (#11492)
It's helpful to see the % of chunks that overlap in write requests for different groups.
1 parent e5c7744 commit 70fbb1b

File tree

4 files changed

+30
-6
lines changed

4 files changed

+30
-6
lines changed

enterprise/server/byte_stream_server_proxy/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ go_library(
2121
"//server/util/authutil",
2222
"//server/util/bytebufferpool",
2323
"//server/util/cdc",
24+
"//server/util/claims",
2425
"//server/util/compression",
2526
"//server/util/lib/set",
2627
"//server/util/log",

enterprise/server/byte_stream_server_proxy/byte_stream_server_proxy.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/buildbuddy-io/buildbuddy/server/util/authutil"
2222
"github.com/buildbuddy-io/buildbuddy/server/util/bytebufferpool"
2323
"github.com/buildbuddy-io/buildbuddy/server/util/cdc"
24+
"github.com/buildbuddy-io/buildbuddy/server/util/claims"
2425
"github.com/buildbuddy-io/buildbuddy/server/util/compression"
2526
"github.com/buildbuddy-io/buildbuddy/server/util/lib/set"
2627
"github.com/buildbuddy-io/buildbuddy/server/util/log"
@@ -39,6 +40,14 @@ var (
3940
chunkUploadConcurrency = flag.Int("cache_proxy.chunk_upload_concurrency", 8, "Maximum number of concurrent chunk uploads when uploading missing chunks to remote cache.")
4041
)
4142

43+
func groupIDForMetrics(ctx context.Context) string {
44+
c, err := claims.ClaimsFromContext(ctx)
45+
if err != nil {
46+
return interfaces.AuthAnonymousUser
47+
}
48+
return c.GroupID
49+
}
50+
4251
type ByteStreamServerProxy struct {
4352
supportsEncryption func(context.Context) bool
4453
authenticator interfaces.Authenticator
@@ -416,6 +425,7 @@ func (s *ByteStreamServerProxy) readRemoteWriteLocal(req *bspb.ReadRequest, stre
416425
type byteStreamMetrics struct {
417426
requestType string
418427
compressor string
428+
groupID string
419429
err error
420430
bytes int64
421431
chunked bool
@@ -504,6 +514,7 @@ func (s *ByteStreamServerProxy) Write(stream bspb.ByteStream_WriteServer) error
504514
recordWriteMetrics(byteStreamMetrics{
505515
requestType: requestTypeLabel,
506516
compressor: meteredStream.compressor,
517+
groupID: groupIDForMetrics(ctx),
507518
err: nil,
508519
bytes: meteredStream.bytes,
509520
chunked: true,
@@ -680,12 +691,17 @@ func recordWriteMetrics(bsm byteStreamMetrics) {
680691
metrics.StatusLabel: status.MetricsLabel(bsm.err),
681692
metrics.CompressionType: bsm.compressor,
682693
}
694+
chunkedLabelsWithGroup := prometheus.Labels{
695+
metrics.StatusLabel: status.MetricsLabel(bsm.err),
696+
metrics.CompressionType: bsm.compressor,
697+
metrics.GroupID: bsm.groupID,
698+
}
683699
metrics.ByteStreamChunkedWriteBlobBytes.With(chunkedLabels).Add(float64(bsm.blobBytes))
684700
if bsm.chunksTotal > 0 {
685-
metrics.ByteStreamChunkedWriteChunksTotal.With(chunkedLabels).Add(float64(bsm.chunksTotal))
701+
metrics.ByteStreamChunkedWriteChunksTotal.With(chunkedLabelsWithGroup).Add(float64(bsm.chunksTotal))
686702
}
687703
if bsm.chunksDeduped > 0 {
688-
metrics.ByteStreamChunkedWriteChunksDeduped.With(chunkedLabels).Add(float64(bsm.chunksDeduped))
704+
metrics.ByteStreamChunkedWriteChunksDeduped.With(chunkedLabelsWithGroup).Add(float64(bsm.chunksDeduped))
689705
}
690706
if bsm.chunkBytesTotal > 0 {
691707
metrics.ByteStreamChunkedWriteChunkBytes.With(chunkedLabels).Add(float64(bsm.chunkBytesTotal))

enterprise/server/byte_stream_server_proxy/byte_stream_server_proxy_test.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,9 +1002,14 @@ func TestWriteChunked(t *testing.T) {
10021002
metrics.StatusLabel: "OK",
10031003
metrics.CompressionType: "ZSTD",
10041004
}
1005+
writeLabelsWithGroup := prometheus.Labels{
1006+
metrics.StatusLabel: "OK",
1007+
metrics.CompressionType: "ZSTD",
1008+
metrics.GroupID: interfaces.AuthAnonymousUser,
1009+
}
10051010
writeBlobBytesBefore := testutil.ToFloat64(metrics.ByteStreamChunkedWriteBlobBytes.With(writeLabels))
1006-
writeChunksTotalBefore := testutil.ToFloat64(metrics.ByteStreamChunkedWriteChunksTotal.With(writeLabels))
1007-
writeChunksDedupedBefore := testutil.ToFloat64(metrics.ByteStreamChunkedWriteChunksDeduped.With(writeLabels))
1011+
writeChunksTotalBefore := testutil.ToFloat64(metrics.ByteStreamChunkedWriteChunksTotal.With(writeLabelsWithGroup))
1012+
writeChunksDedupedBefore := testutil.ToFloat64(metrics.ByteStreamChunkedWriteChunksDeduped.With(writeLabelsWithGroup))
10081013
writeChunkBytesBefore := testutil.ToFloat64(metrics.ByteStreamChunkedWriteChunkBytes.With(writeLabels))
10091014
writeDedupedBytesBefore := testutil.ToFloat64(metrics.ByteStreamChunkedWriteDedupedChunkBytes.With(writeLabels))
10101015

@@ -1032,8 +1037,8 @@ func TestWriteChunked(t *testing.T) {
10321037
require.NoError(t, err)
10331038

10341039
writeBlobBytesAfter := testutil.ToFloat64(metrics.ByteStreamChunkedWriteBlobBytes.With(writeLabels))
1035-
writeChunksTotalAfter := testutil.ToFloat64(metrics.ByteStreamChunkedWriteChunksTotal.With(writeLabels))
1036-
writeChunksDedupedAfter := testutil.ToFloat64(metrics.ByteStreamChunkedWriteChunksDeduped.With(writeLabels))
1040+
writeChunksTotalAfter := testutil.ToFloat64(metrics.ByteStreamChunkedWriteChunksTotal.With(writeLabelsWithGroup))
1041+
writeChunksDedupedAfter := testutil.ToFloat64(metrics.ByteStreamChunkedWriteChunksDeduped.With(writeLabelsWithGroup))
10371042
writeChunkBytesAfter := testutil.ToFloat64(metrics.ByteStreamChunkedWriteChunkBytes.With(writeLabels))
10381043
writeDedupedBytesAfter := testutil.ToFloat64(metrics.ByteStreamChunkedWriteDedupedChunkBytes.With(writeLabels))
10391044

server/metrics/metrics.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3601,6 +3601,7 @@ var (
36013601
}, []string{
36023602
StatusLabel,
36033603
CompressionType,
3604+
GroupID,
36043605
})
36053606
ByteStreamChunkedWriteChunksDeduped = promauto.NewCounterVec(prometheus.CounterOpts{
36063607
Namespace: bbNamespace,
@@ -3610,6 +3611,7 @@ var (
36103611
}, []string{
36113612
StatusLabel,
36123613
CompressionType,
3614+
GroupID,
36133615
})
36143616
ByteStreamChunkedWriteDurationUsec = promauto.NewHistogramVec(prometheus.HistogramOpts{
36153617
Namespace: bbNamespace,

0 commit comments

Comments
 (0)