diff --git a/weed/command/master.go b/weed/command/master.go index 178827550..3ed2b5a8b 100644 --- a/weed/command/master.go +++ b/weed/command/master.go @@ -465,6 +465,12 @@ func peerIndex(self pb.ServerAddress, peers []pb.ServerAddress) int { } func (m *MasterOptions) toMasterOption(whiteList []string) *weed_server.MasterOption { + // Not every caller wires up every flag, so treat an unset metrics port as + // disabled rather than dereferencing nil. + metricsPort := 0 + if m.metricsHttpPort != nil { + metricsPort = *m.metricsHttpPort + } masterAddress := pb.NewServerAddress(*m.ip, *m.port, *m.portGrpc) return &weed_server.MasterOption{ Master: masterAddress, @@ -479,7 +485,7 @@ func (m *MasterOptions) toMasterOption(whiteList []string) *weed_server.MasterOp WhiteList: whiteList, DisableHttp: *m.disableHttp, MetricsAddress: *m.metricsAddress, - MetricsPort: *m.metricsHttpPort, + MetricsPort: metricsPort, MetricsIntervalSec: *m.metricsIntervalSec, TelemetryUrl: *m.telemetryUrl, TelemetryEnabled: *m.telemetryEnabled, diff --git a/weed/command/mini.go b/weed/command/mini.go index 8ce45436a..500cee52d 100644 --- a/weed/command/mini.go +++ b/weed/command/mini.go @@ -1308,6 +1308,13 @@ func runMini(cmd *Command, args []string) bool { } pb.RegisterLocalGrpcSocket(*miniIp, *miniAdminOptions.grpcPort, fmt.Sprintf("/tmp/seaweedfs-admin-grpc-%d.sock", *miniAdminOptions.grpcPort)) + // One process, one shared Prometheus registry, so this single listener + // serves every component's series. Point each component at it so they all + // advertise the same port to the master. + miniMasterOptions.metricsHttpPort = miniMetricsHttpPort + miniOptions.v.metricsHttpPort = miniMetricsHttpPort + miniFilerOptions.metricsHttpPort = miniMetricsHttpPort + go stats_collect.StartMetricsServer(*miniMetricsHttpIp, *miniMetricsHttpPort) if *miniMasterOptions.volumeSizeLimitMB > util.MaxVolumeSizeLimitMB {