Skip to content

Commit

Permalink
feat: use opentelemetry
Browse files Browse the repository at this point in the history
  • Loading branch information
mabdh committed Feb 6, 2024
1 parent 25f1775 commit 4a6a909
Show file tree
Hide file tree
Showing 160 changed files with 2,971 additions and 3,395 deletions.
239 changes: 239 additions & 0 deletions .mockery.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,239 @@
with-expecter: True
packages:
github.com/goto/siren/internal/api:
config:
dir: "internal/api/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
AlertService:
config:
filename: "alert_service.go"
NamespaceService:
config:
filename: "namespace_service.go"
ProviderService:
config:
filename: "provider_service.go"
ReceiverService:
config:
filename: "receiver_service.go"
RuleService:
config:
filename: "rule_service.go"
SubscriptionService:
config:
filename: "subscription_service.go"
TemplateService:
config:
filename: "template_service.go"
NotificationService:
config:
filename: "notification_service.go"
SilenceService:
config:
filename: "silence_service.go"
github.com/goto/siren/core/alert:
config:
dir: "core/alert/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
Repository:
config:
filename: "alert_repository.go"
AlertTransformer:
config:
filename: "alert_transformer.go"
LogService:
config:
filename: "log_service.go"
github.com/goto/siren/core/log:
config:
dir: "core/log/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
NotificationLogRepository:
config:
filename: "notification_log_repository.go"
github.com/goto/siren/core/namespace:
config:
dir: "core/namespace/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
Encryptor:
config:
filename: "encryptor.go"
Repository:
config:
filename: "namespace_repository.go"
Transactor:
config:
filename: "transactor.go"
ConfigSyncer:
config:
filename: "config_syncer.go"
ProviderService:
config:
filename: "provider_service.go"
github.com/goto/siren/core/notification:
config:
dir: "core/notification/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
IdempotencyRepository:
config:
filename: "idempotency_repository.go"
Repository:
config:
filename: "repository.go"
Notifier:
config:
filename: "notifier.go"
Queuer:
config:
filename: "queuer.go"
Dispatcher:
config:
filename: "dispatcher.go"
SubscriptionService:
config:
filename: "subscription_service.go"
ReceiverService:
config:
filename: "receiver_service.go"
SilenceService:
config:
filename: "silence_service.go"
AlertService:
config:
filename: "alert_service.go"
LogService:
config:
filename: "log_service.go"
github.com/goto/siren/core/provider:
config:
dir: "core/provider/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
Repository:
config:
filename: "provider_repository.go"
github.com/goto/siren/core/receiver:
config:
dir: "core/receiver/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
Encryptor:
config:
filename: "encryptor.go"
ConfigResolver:
config:
filename: "config_resolver.go"
Repository:
config:
filename: "receiver_repository.go"
github.com/goto/siren/core/rule:
config:
dir: "core/rule/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
RuleUploader:
config:
filename: "rule_uploader.go"
Repository:
config:
filename: "rule_repository.go"
Transactor:
config:
filename: "transactor.go"
NamespaceService:
config:
filename: "namespace_service.go"
TemplateService:
config:
filename: "template_service.go"
github.com/goto/siren/core/silence:
config:
dir: "core/silence/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
Repository:
config:
filename: "silence_repository.go"
github.com/goto/siren/core/subscription:
config:
dir: "core/subscription/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
LogService:
config:
filename: "log_service.go"
NamespaceService:
config:
filename: "namespace_service.go"
ReceiverService:
config:
filename: "receiver_service.go"
Repository:
config:
filename: "subscription_repository.go"
github.com/goto/siren/core/template:
config:
dir: "core/template/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
Repository:
config:
filename: "template_repository.go"
github.com/goto/siren/internal/jobs:
config:
dir: "internal/jobs/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
Repository:
config:
filename: "notification_service.go"
github.com/goto/siren/plugins/providers/cortex/v1:
config:
dir: "plugins/providers/cortex/v1/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
CortexCaller:
config:
filename: "cortex_caller.go"
github.com/goto/siren/plugins/receivers/pagerduty:
config:
dir: "plugins/receivers/pagerduty/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
PagerDutyCaller:
config:
filename: "pagerduty_caller.go"
github.com/goto/siren/plugins/receivers/slack:
config:
dir: "plugins/receivers/slack/mocks"
outpkg: "mocks"
mockname: "{{.InterfaceName}}"
interfaces:
GoSlackCaller:
config:
filename: "goslack_caller.go"
Encryptor:
config:
filename: "encryptor.go"
SlackCaller:
config:
filename: "slack_caller.go"
25 changes: 12 additions & 13 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,9 @@ coverage: ## Print code coverage
go test -race -coverprofile coverage.out -covermode=atomic ./... && go tool cover -html=coverage.out

generate: ## run all go generate in the code base (including generating mock files)
find . -type d -name "mocks" | xargs rm -r
go generate ./...
@go generate ./...
@echo " > generating mock files"
@mockery

lint: ## lint checker
golangci-lint run
Expand All @@ -52,17 +53,15 @@ update-swagger-md:
@npx swagger-markdown -i proto/siren.swagger.yaml -o docs/docs/reference/api.md

install: ## install required dependencies
@echo "> installing dependencies"
go mod tidy
go get -d github.com/vektra/mockery/v2@v2.13.1
go get -d google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1
go get google.golang.org/protobuf/proto@v1.28.1
go get google.golang.org/grpc@v1.49.0
go get -d google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0
go get -d github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.11.3
go get -d github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.11.3
go get -d github.com/bufbuild/buf/cmd/buf@v1.7.0
go get github.com/envoyproxy/protoc-gen-validate@v0.6.7
go get -d github.com/vektra/mockery/v2@v2.40.1
go get -d google.golang.org/protobuf/cmd/protoc-gen-go@v1.32.0
go get google.golang.org/protobuf/proto@v1.32.0
go get google.golang.org/grpc@v1.61.0
go get -d google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0
go get -d github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.19.1
go get -d github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.19.1
go get -d github.com/bufbuild/buf/cmd/buf@v1.29.0
go get github.com/envoyproxy/protoc-gen-validate@v1.0.4

clean-doc:
@echo "> cleaning up auto-generated docs"
Expand Down
58 changes: 16 additions & 42 deletions cli/deps.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"
"fmt"

"github.com/goto/salt/db"
saltlog "github.com/goto/salt/log"
"github.com/goto/siren/config"
"github.com/goto/siren/core/alert"
Expand All @@ -21,14 +20,12 @@ import (
"github.com/goto/siren/internal/store/postgres"
"github.com/goto/siren/pkg/pgc"
"github.com/goto/siren/pkg/secret"
"github.com/goto/siren/pkg/telemetry"
"github.com/goto/siren/plugins/providers"
"github.com/goto/siren/plugins/receivers/file"
"github.com/goto/siren/plugins/receivers/httpreceiver"
"github.com/goto/siren/plugins/receivers/pagerduty"
"github.com/goto/siren/plugins/receivers/slack"
"github.com/goto/siren/plugins/receivers/slackchannel"
"github.com/newrelic/go-agent/v3/newrelic"
)

func InitDeps(
Expand All @@ -37,38 +34,16 @@ func InitDeps(
cfg config.Config,
queue notification.Queuer,
withProviderPlugin bool,
) (*api.Deps, *newrelic.Application, *pgc.Client, map[string]notification.Notifier, *providers.PluginManager, error) {

telemetry.Init(ctx, cfg.Telemetry, logger)

nrApp, err := newrelic.NewApplication(
newrelic.ConfigAppName(cfg.Telemetry.ServiceName),
newrelic.ConfigLicense(cfg.Telemetry.NewRelicAPIKey),
func(c *newrelic.Config) {
c.DistributedTracer.Enabled = true
c.DatastoreTracer.DatabaseNameReporting.Enabled = true
c.DatastoreTracer.InstanceReporting.Enabled = true
c.DatastoreTracer.QueryParameters.Enabled = true
c.DatastoreTracer.SlowQuery.Enabled = true
},
)
if err != nil {
logger.Warn("failed to init newrelic", "err", err)
}

dbClient, err := db.New(cfg.DB)
if err != nil {
return nil, nil, nil, nil, nil, err
}
) (*api.Deps, *pgc.Client, map[string]notification.Notifier, *providers.PluginManager, error) {

pgClient, err := pgc.NewClient(logger, dbClient)
pgClient, err := pgc.NewClient(logger, cfg.DB)
if err != nil {
return nil, nil, nil, nil, nil, err
return nil, nil, nil, nil, err
}

encryptor, err := secret.New(cfg.Service.EncryptionKey)
if err != nil {
return nil, nil, nil, nil, nil, fmt.Errorf("cannot initialize encryptor: %w", err)
return nil, nil, nil, nil, fmt.Errorf("cannot initialize encryptor: %w", err)
}

templateRepository := postgres.NewTemplateRepository(pgClient)
Expand All @@ -90,10 +65,10 @@ func InitDeps(
providerPluginClients := providersPluginManager.InitClients()
providerPlugins, err := providersPluginManager.DispenseClients(providerPluginClients)
if err != nil {
return nil, nil, nil, nil, nil, err
return nil, nil, nil, nil, err
}
if err := providersPluginManager.InitConfigs(ctx, providerPlugins, cfg.Log.Level); err != nil {
return nil, nil, nil, nil, nil, err
return nil, nil, nil, nil, err
}

var supportedProviderTypes = []string{}
Expand Down Expand Up @@ -191,15 +166,14 @@ func InitDeps(
)

return &api.Deps{
TemplateService: templateService,
RuleService: ruleService,
AlertService: alertService,
ProviderService: providerService,
NamespaceService: namespaceService,
ReceiverService: receiverService,
SubscriptionService: subscriptionService,
NotificationService: notificationService,
SilenceService: silenceService,
}, nrApp, pgClient, notifierRegistry, providersPluginManager,
nil
TemplateService: templateService,
RuleService: ruleService,
AlertService: alertService,
ProviderService: providerService,
NamespaceService: namespaceService,
ReceiverService: receiverService,
SubscriptionService: subscriptionService,
NotificationService: notificationService,
SilenceService: silenceService,
}, pgClient, notifierRegistry, providersPluginManager, nil
}
Loading

0 comments on commit 4a6a909

Please sign in to comment.