Skip to content

Commit

Permalink
feat: add basic telemetry to server processes
Browse files Browse the repository at this point in the history
  • Loading branch information
adamdecaf committed Jan 28, 2025
1 parent aeba73f commit bc6e403
Show file tree
Hide file tree
Showing 11 changed files with 435 additions and 81 deletions.
3 changes: 3 additions & 0 deletions cmd/server/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,16 @@ import (

"github.com/moov-io/base/config"
"github.com/moov-io/base/log"
"github.com/moov-io/base/telemetry"
)

type GlobalConfig struct {
Watchman Config
}

type Config struct {
Telemetry telemetry.Config

Download download.Config

Servers ServerConfig
Expand Down
14 changes: 8 additions & 6 deletions cmd/server/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ import (
"strings"
"time"

"github.com/moov-io/base/log"
"github.com/moov-io/base/telemetry"
"github.com/moov-io/watchman/internal/download"
"github.com/moov-io/watchman/internal/search"

"github.com/moov-io/base/log"
)

func setupPeriodicRefreshing(ctx context.Context, logger log.Logger, errs chan error, conf download.Config, downloader download.Downloader, searchService search.Service) error {
err := refreshAllSources(ctx, logger, downloader, searchService)
err := refreshAllSources(logger, downloader, searchService)
if err != nil {
return err
}
Expand All @@ -35,7 +35,7 @@ func setupPeriodicRefreshing(ctx context.Context, logger log.Logger, errs chan e
return

case <-ticker.C:
err := refreshAllSources(ctx, logger, downloader, searchService)
err := refreshAllSources(logger, downloader, searchService)
if err != nil {
errs <- err
}
Expand All @@ -61,8 +61,10 @@ func getRefreshInterval(conf download.Config) time.Duration {
return cmp.Or(conf.RefreshInterval, defaultRefreshInterval)
}

func refreshAllSources(ctx context.Context, logger log.Logger, downloader download.Downloader, searchService search.Service) error {
// Initial data load
func refreshAllSources(logger log.Logger, downloader download.Downloader, searchService search.Service) error {
ctx, span := telemetry.StartSpan(context.Background(), "refresh-all-sources")
defer span.End()

stats, err := downloader.RefreshAll(ctx)
if err != nil {
return err
Expand Down
13 changes: 11 additions & 2 deletions cmd/server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,14 @@ import (
"syscall"
"time"

"github.com/moov-io/base/admin"
"github.com/moov-io/base/log"
"github.com/moov-io/base/telemetry"
"github.com/moov-io/watchman"
"github.com/moov-io/watchman/internal/download"
"github.com/moov-io/watchman/internal/search"

"github.com/gorilla/mux"
"github.com/moov-io/base/admin"
"github.com/moov-io/base/log"
)

func main() {
Expand All @@ -37,6 +38,14 @@ func main() {
os.Exit(1)
}

// Setup telemetry
telemetryShutdownFunc, err := telemetry.SetupTelemetry(context.Background(), config.Telemetry, watchman.Version)
if err != nil {
logger.Fatal().LogErrorf("setting up telemetry failed: %w", err)
os.Exit(1)
}
defer telemetryShutdownFunc()

downloader, err := download.NewDownloader(logger, config.Download)
if err != nil {
logger.Fatal().LogErrorf("problem setting up downloader: %v", err)
Expand Down
3 changes: 3 additions & 0 deletions configs/config.default.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
Watchman:
Telemetry:
ServiceName: "watchman"

Servers:
BindAddress: ":8084"
AdminAddress: ":9094"
Expand Down
46 changes: 32 additions & 14 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,23 @@ toolchain go1.23.4

require (
fyne.io/fyne/v2 v2.5.3
github.com/JaderDias/movingmedian v0.0.0-20220813210630-d8c6b6de8835
github.com/abadojack/whatlanggo v1.0.1
github.com/antchfx/htmlquery v1.3.3
github.com/bbalet/stopwords v1.0.0
github.com/gorilla/mux v1.8.1
github.com/hashicorp/go-retryablehttp v0.7.7
github.com/jaswdr/faker v1.19.1
github.com/knieriem/odf v0.1.0
github.com/moov-io/base v0.48.2
github.com/moov-io/base v0.53.0
github.com/moov-io/iso3166 v0.1.1
github.com/openvenues/gopostal v0.0.0-20240426055609-4fe3a773f519
github.com/pariz/gountries v0.1.6
github.com/stretchr/testify v1.10.0
github.com/urfave/cli/v2 v2.4.0
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673
go.opentelemetry.io/otel v1.29.0
go.opentelemetry.io/otel/trace v1.29.0
golang.org/x/sync v0.10.0
golang.org/x/text v0.21.0
)
Expand All @@ -29,7 +32,8 @@ require (
github.com/BurntSushi/toml v1.4.0 // indirect
github.com/antchfx/xpath v1.3.2 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/fredbi/uri v1.1.0 // indirect
Expand All @@ -41,47 +45,61 @@ require (
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-text/render v0.2.0 // indirect
github.com/go-text/typesetting v0.2.0 // indirect
github.com/gobuffalo/here v0.6.7 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gopherjs/gopherjs v1.17.2 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/jeandeaual/go-locale v0.0.0-20240223122105-ce5225dcaa49 // indirect
github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/markbates/pkger v0.17.1 // indirect
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/nicksnyder/go-i18n/v2 v2.4.0 // indirect
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.17.0 // indirect
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.45.0 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
github.com/prometheus/client_golang v1.20.4 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.55.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/rymdport/portal v0.3.0 // indirect
github.com/sagikazarmark/locafero v0.3.0 // indirect
github.com/sagikazarmark/locafero v0.6.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.10.0 // indirect
github.com/spf13/cast v1.5.1 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.6.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.17.0 // indirect
github.com/spf13/viper v1.19.0 // indirect
github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect
github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/yuin/goldmark v1.7.1 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.29.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.29.0 // indirect
go.opentelemetry.io/otel/metric v1.29.0 // indirect
go.opentelemetry.io/otel/sdk v1.29.0 // indirect
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
golang.org/x/image v0.18.0 // indirect
golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a // indirect
golang.org/x/net v0.33.0 // indirect
golang.org/x/sys v0.28.0 // indirect
google.golang.org/protobuf v1.33.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240924160255-9d4c2d233b61 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f // indirect
google.golang.org/grpc v1.67.0 // indirect
google.golang.org/protobuf v1.34.2 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
Expand Down
Loading

0 comments on commit bc6e403

Please sign in to comment.