Tracing: Various improvements (#88308)

This commit is contained in:
Marcus Efraimsson
2024-05-27 14:21:40 +02:00
committed by GitHub
parent 66950c96f6
commit 0b1aec6767
10 changed files with 72 additions and 18 deletions
+3 -1
View File
@@ -6,6 +6,7 @@ import (
"github.com/stretchr/testify/require"
"gopkg.in/ini.v1"
"github.com/grafana/grafana/pkg/infra/tracing"
"github.com/grafana/grafana/pkg/infra/usagestats"
encryptionprovider "github.com/grafana/grafana/pkg/services/encryption/provider"
encryptionservice "github.com/grafana/grafana/pkg/services/encryption/service"
@@ -40,10 +41,11 @@ func setupTestService(tb testing.TB, store secrets.Store, features featuremgmt.F
encProvider := encryptionprovider.Provider{}
usageStats := &usagestats.UsageStatsMock{}
encryption, err := encryptionservice.ProvideEncryptionService(encProvider, usageStats, cfg)
encryption, err := encryptionservice.ProvideEncryptionService(tracing.InitializeTracerForTest(), encProvider, usageStats, cfg)
require.NoError(tb, err)
secretsService, err := ProvideSecretsService(
tracing.InitializeTracerForTest(),
store,
osskmsproviders.ProvideService(encryption, cfg, features),
encryption,
+10
View File
@@ -15,6 +15,7 @@ import (
"golang.org/x/sync/errgroup"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/infra/tracing"
"github.com/grafana/grafana/pkg/infra/usagestats"
"github.com/grafana/grafana/pkg/services/encryption"
"github.com/grafana/grafana/pkg/services/featuremgmt"
@@ -35,6 +36,7 @@ var (
)
type SecretsService struct {
tracer tracing.Tracer
store secrets.Store
enc encryption.Internal
cfg *setting.Cfg
@@ -54,6 +56,7 @@ type SecretsService struct {
}
func ProvideSecretsService(
tracer tracing.Tracer,
store secrets.Store,
kmsProvidersService kmsproviders.Service,
enc encryption.Internal,
@@ -68,6 +71,7 @@ func ProvideSecretsService(
))
s := &SecretsService{
tracer: tracer,
store: store,
enc: enc,
cfg: cfg,
@@ -158,6 +162,9 @@ func (s *SecretsService) encryptedWithEnvelopeEncryption(payload []byte) bool {
var b64 = base64.RawStdEncoding
func (s *SecretsService) Encrypt(ctx context.Context, payload []byte, opt secrets.EncryptionOptions) ([]byte, error) {
ctx, span := s.tracer.Start(ctx, "secretsService.Encrypt")
defer span.End()
// Use legacy encryption service if featuremgmt.FlagDisableEnvelopeEncryption toggle is on
if s.features.IsEnabled(ctx, featuremgmt.FlagDisableEnvelopeEncryption) {
return s.enc.Encrypt(ctx, payload, s.cfg.SecretKey)
@@ -313,6 +320,9 @@ func newRandomDataKey() ([]byte, error) {
}
func (s *SecretsService) Decrypt(ctx context.Context, payload []byte) ([]byte, error) {
ctx, span := s.tracer.Start(ctx, "secretsService.Decrypt")
defer span.End()
var err error
defer func() {
opsCounter.With(prometheus.Labels{
+4 -1
View File
@@ -11,6 +11,7 @@ import (
"gopkg.in/ini.v1"
"github.com/grafana/grafana/pkg/infra/db"
"github.com/grafana/grafana/pkg/infra/tracing"
"github.com/grafana/grafana/pkg/infra/usagestats"
encryptionprovider "github.com/grafana/grafana/pkg/services/encryption/provider"
encryptionservice "github.com/grafana/grafana/pkg/services/encryption/service"
@@ -192,7 +193,7 @@ func TestSecretsService_UseCurrentProvider(t *testing.T) {
encProvider := encryptionprovider.Provider{}
usageStats := &usagestats.UsageStatsMock{}
encryptionService, err := encryptionservice.ProvideEncryptionService(encProvider, usageStats, cfg)
encryptionService, err := encryptionservice.ProvideEncryptionService(tracing.InitializeTracerForTest(), encProvider, usageStats, cfg)
require.NoError(t, err)
features := featuremgmt.WithFeatures()
@@ -201,6 +202,7 @@ func TestSecretsService_UseCurrentProvider(t *testing.T) {
secretStore := database.ProvideSecretsStore(testDB)
secretsService, err := ProvideSecretsService(
tracing.InitializeTracerForTest(),
secretStore,
&kms,
encryptionService,
@@ -219,6 +221,7 @@ func TestSecretsService_UseCurrentProvider(t *testing.T) {
// secret service tries to find a DEK in a cache first before calling provider's decrypt
// to bypass the cache, we set up one more secrets service to test decrypting
svcDecrypt, err := ProvideSecretsService(
tracing.InitializeTracerForTest(),
secretStore,
&kms,
encryptionService,