diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-06-28 14:11:55 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-28 14:11:55 -0700 |
| commit | a1aab8a083111dd9357c7f35397fdf610f23cb6d (patch) | |
| tree | 66b56b09bec60cd1962236b7aad43a37011450b9 /weed/server/master_server.go | |
| parent | 29892c43ff95ad957c0f64ad5cd11e0d43e616e2 (diff) | |
| download | seaweedfs-a1aab8a083111dd9357c7f35397fdf610f23cb6d.tar.xz seaweedfs-a1aab8a083111dd9357c7f35397fdf610f23cb6d.zip | |
add telemetry (#6926)
* add telemetry
* fix go mod
* add default telemetry server url
* Update README.md
* replace with broker count instead of s3 count
* Update telemetry.pb.go
* github action to deploy
Diffstat (limited to 'weed/server/master_server.go')
| -rw-r--r-- | weed/server/master_server.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/weed/server/master_server.go b/weed/server/master_server.go index 6569fdbd4..48576adf4 100644 --- a/weed/server/master_server.go +++ b/weed/server/master_server.go @@ -8,11 +8,13 @@ import ( "net/url" "os" "regexp" + "runtime" "strings" "sync" "time" "github.com/seaweedfs/seaweedfs/weed/stats" + "github.com/seaweedfs/seaweedfs/weed/telemetry" "github.com/seaweedfs/seaweedfs/weed/cluster" "github.com/seaweedfs/seaweedfs/weed/pb" @@ -30,6 +32,7 @@ import ( "github.com/seaweedfs/seaweedfs/weed/topology" "github.com/seaweedfs/seaweedfs/weed/util" util_http "github.com/seaweedfs/seaweedfs/weed/util/http" + "github.com/seaweedfs/seaweedfs/weed/util/version" "github.com/seaweedfs/seaweedfs/weed/wdclient" ) @@ -52,6 +55,8 @@ type MasterOption struct { MetricsAddress string MetricsIntervalSec int IsFollower bool + TelemetryUrl string + TelemetryEnabled bool } type MasterServer struct { @@ -76,6 +81,9 @@ type MasterServer struct { adminLocks *AdminLocks Cluster *cluster.Cluster + + // telemetry + telemetryCollector *telemetry.Collector } func NewMasterServer(r *mux.Router, option *MasterOption, peers map[string]pb.ServerAddress) *MasterServer { @@ -131,6 +139,28 @@ func NewMasterServer(r *mux.Router, option *MasterOption, peers map[string]pb.Se ms.vg = topology.NewDefaultVolumeGrowth() glog.V(0).Infoln("Volume Size Limit is", ms.option.VolumeSizeLimitMB, "MB") + // Initialize telemetry after topology is created + if option.TelemetryEnabled && option.TelemetryUrl != "" { + telemetryClient := telemetry.NewClient(option.TelemetryUrl, option.TelemetryEnabled) + ms.telemetryCollector = telemetry.NewCollector(telemetryClient, ms.Topo, ms.Cluster) + ms.telemetryCollector.SetMasterServer(ms) + + // Set version and OS information + ms.telemetryCollector.SetVersion(version.VERSION_NUMBER) + ms.telemetryCollector.SetOS(runtime.GOOS + "/" + runtime.GOARCH) + + // Determine features and deployment type + features := []string{"master"} + if len(peers) > 1 { + features = append(features, "cluster") + } + ms.telemetryCollector.SetFeatures(features) + ms.telemetryCollector.SetDeployment(telemetry.DetermineDeployment(true, false, len(peers))) + + // Start periodic telemetry collection (every 24 hours) + ms.telemetryCollector.StartPeriodicCollection(24 * time.Hour) + } + ms.guard = security.NewGuard(append(ms.option.WhiteList, whiteList...), signingKey, expiresAfterSec, readSigningKey, readExpiresAfterSec) handleStaticResources2(r) |
