Skip to content

Commit fdb5775

Browse files
committed
emit metrics
1 parent 3780bae commit fdb5775

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

instrumentation/appsec/proxy/message_processor.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"errors"
1111
"fmt"
1212
"io"
13-
"strconv"
1413
"sync"
1514
"sync/atomic"
1615

@@ -21,7 +20,6 @@ import (
2120
"github.com/DataDog/dd-trace-go/v2/instrumentation/httptrace"
2221
"github.com/DataDog/dd-trace-go/v2/internal/appsec/body"
2322
"github.com/DataDog/dd-trace-go/v2/internal/appsec/body/json"
24-
"github.com/DataDog/dd-trace-go/v2/internal/telemetry"
2523
)
2624

2725
// Processor is a state machine that handles incoming HTTP request and response is a streaming manner
@@ -80,6 +78,7 @@ func (mp *Processor) OnRequestHeaders(ctx context.Context, req RequestHeaders) (
8078
if bodyLimit <= 0 {
8179
mp.instr.Logger().Info("external_processing: body parsing size limit set to 0 or negative. The request and response bodies will NOT be analyzed.")
8280
}
81+
RegisterConfig(mp)
8382
mp.instr.Logger().Info("external_processing: first request received. Configuration: BlockingUnavailable=%v, BodyParsingSizeLimit=%dB, Framework=%s", mp.BlockingUnavailable, mp.computedBodyParsingSizeLimit.Load(), mp.Framework)
8483
})
8584

@@ -268,11 +267,7 @@ func processBody(ctx context.Context, bodyBuffer *bodyBuffer, body []byte, eos b
268267
bodyBuffer.append(body)
269268

270269
if eos || bodyBuffer.truncated {
271-
telemetry.Distribution(telemetry.NamespaceAppSec, "instrum.body_size", []string{
272-
"direction:" + direction,
273-
"truncated:" + strconv.FormatBool(bodyBuffer.truncated),
274-
}).Submit(float64(len(bodyBuffer.buffer)))
275-
270+
EmitBodySize(len(bodyBuffer.buffer), direction, bodyBuffer.truncated)
276271
bodyBuffer.analyzed = true
277272
return analyzeBody(ctx, json.NewEncodableFromData(bodyBuffer.buffer, bodyBuffer.truncated))
278273
}

instrumentation/appsec/proxy/metrics.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ package proxy
77

88
import (
99
"context"
10+
"strconv"
1011
"sync/atomic"
1112
"time"
1213

1314
"github.com/DataDog/dd-trace-go/v2/instrumentation"
15+
"github.com/DataDog/dd-trace-go/v2/internal/telemetry"
1416
)
1517

1618
type metrics struct {
@@ -44,3 +46,18 @@ func newMetricsReporter(ctx context.Context, logger instrumentation.Logger) *met
4446
func (m *metrics) incrementRequestCount() {
4547
m.requestCounter.Add(1)
4648
}
49+
50+
func EmitBodySize(bodySize int, direction string, truncated bool) {
51+
telemetry.Distribution(telemetry.NamespaceAppSec, "instrum.body_size", []string{
52+
"direction:" + direction,
53+
"truncated:" + strconv.FormatBool(truncated),
54+
}).Submit(float64(bodySize))
55+
}
56+
57+
func RegisterConfig(mp *Processor) {
58+
telemetry.RegisterAppConfigs(
59+
telemetry.Configuration{Name: "appsec.proxy.blockingUnavailable", Value: mp.BlockingUnavailable},
60+
telemetry.Configuration{Name: "appsec.proxy.bodyParsingSizeLimit", Value: mp.computedBodyParsingSizeLimit.Load()},
61+
telemetry.Configuration{Name: "appsec.proxy.framework", Value: mp.Framework},
62+
)
63+
}

internal/telemetry/internal/knownmetrics/known_metrics.common.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)