Browse Source

volume servers get metrics address and interval from the master

pull/991/head
Chris Lu 6 years ago
parent
commit
d8ed73926d
  1. 15
      weed/command/master.go
  2. 17
      weed/command/server.go
  3. 6
      weed/command/volume.go
  4. 6
      weed/pb/master.proto
  5. 249
      weed/pb/master_pb/master.pb.go
  6. 5
      weed/server/filer_server.go
  7. 4
      weed/server/master_grpc_server.go
  8. 6
      weed/server/master_server.go
  9. 4
      weed/server/volume_grpc_client_to_master.go
  10. 7
      weed/server/volume_server.go
  11. 30
      weed/stats/metrics.go

15
weed/command/master.go

@ -45,12 +45,14 @@ var (
mpulse = cmdMaster.Flag.Int("pulseSeconds", 5, "number of seconds between heartbeats")
defaultReplicaPlacement = cmdMaster.Flag.String("defaultReplication", "000", "Default replication type if not specified.")
// mTimeout = cmdMaster.Flag.Int("idleTimeout", 30, "connection idle seconds")
mMaxCpu = cmdMaster.Flag.Int("maxCpu", 0, "maximum number of CPUs. 0 means all available CPUs")
garbageThreshold = cmdMaster.Flag.Float64("garbageThreshold", 0.3, "threshold to vacuum and reclaim spaces")
masterWhiteListOption = cmdMaster.Flag.String("whiteList", "", "comma separated Ip addresses having write permission. No limit if empty.")
disableHttp = cmdMaster.Flag.Bool("disableHttp", false, "disable http requests, only gRPC operations are allowed.")
masterCpuProfile = cmdMaster.Flag.String("cpuprofile", "", "cpu profile output file")
masterMemProfile = cmdMaster.Flag.String("memprofile", "", "memory profile output file")
mMaxCpu = cmdMaster.Flag.Int("maxCpu", 0, "maximum number of CPUs. 0 means all available CPUs")
garbageThreshold = cmdMaster.Flag.Float64("garbageThreshold", 0.3, "threshold to vacuum and reclaim spaces")
masterWhiteListOption = cmdMaster.Flag.String("whiteList", "", "comma separated Ip addresses having write permission. No limit if empty.")
disableHttp = cmdMaster.Flag.Bool("disableHttp", false, "disable http requests, only gRPC operations are allowed.")
masterCpuProfile = cmdMaster.Flag.String("cpuprofile", "", "cpu profile output file")
masterMemProfile = cmdMaster.Flag.String("memprofile", "", "memory profile output file")
masterMetricsAddress = cmdMaster.Flag.String("metrics.address", "", "Prometheus gateway address")
masterMetricsIntervalSec = cmdMaster.Flag.Int("metrics.intervalSeconds", 15, "Prometheus push interval in seconds")
masterWhiteList []string
)
@ -82,6 +84,7 @@ func runMaster(cmd *Command, args []string) bool {
*mpulse, *defaultReplicaPlacement, *garbageThreshold,
masterWhiteList,
*disableHttp,
*masterMetricsAddress, *masterMetricsIntervalSec,
)
listeningAddress := *masterBindIp + ":" + strconv.Itoa(*mport)

17
weed/command/server.go

@ -24,10 +24,8 @@ import (
)
type ServerOptions struct {
cpuprofile *string
metricsAddress *string
metricsIntervalSec *int
v VolumeServerOptions
cpuprofile *string
v VolumeServerOptions
}
var (
@ -67,6 +65,8 @@ var (
serverDisableHttp = cmdServer.Flag.Bool("disableHttp", false, "disable http requests, only gRPC operations are allowed.")
serverPeers = cmdServer.Flag.String("master.peers", "", "all master nodes in comma separated ip:masterPort list")
serverGarbageThreshold = cmdServer.Flag.Float64("garbageThreshold", 0.3, "threshold to vacuum and reclaim spaces")
serverMetricsAddress = cmdServer.Flag.String("metrics.address", "", "Prometheus gateway address")
serverMetricsIntervalSec = cmdServer.Flag.Int("metrics.intervalSeconds", 15, "Prometheus push interval in seconds")
masterPort = cmdServer.Flag.Int("master.port", 9333, "master server http listen port")
masterMetaFolder = cmdServer.Flag.String("master.dir", "", "data directory to store meta data, default to same as -dir specified")
masterVolumeSizeLimitMB = cmdServer.Flag.Uint("master.volumeSizeLimitMB", 30*1000, "Master stops directing writes to oversized volumes.")
@ -83,8 +83,6 @@ var (
func init() {
serverOptions.cpuprofile = cmdServer.Flag.String("cpuprofile", "", "cpu profile output file")
serverOptions.metricsAddress = cmdServer.Flag.String("metrics.address", "", "Prometheus gateway address")
serverOptions.metricsIntervalSec = cmdServer.Flag.Int("metrics.intervalSeconds", 15, "Prometheus push interval in seconds")
filerOptions.collection = cmdServer.Flag.String("filer.collection", "", "all data will be stored in this collection")
filerOptions.port = cmdServer.Flag.Int("filer.port", 8888, "filer server http listen port")
filerOptions.publicPort = cmdServer.Flag.Int("filer.port.public", 0, "filer server public http listen port")
@ -147,10 +145,8 @@ func runServer(cmd *Command, args []string) bool {
filerOptions.dataCenter = serverDataCenter
filerOptions.disableHttp = serverDisableHttp
filerOptions.metricsAddress = serverOptions.metricsAddress
filerOptions.metricsIntervalSec = serverOptions.metricsIntervalSec
serverOptions.v.metricsAddress = serverOptions.metricsAddress
serverOptions.v.metricsIntervalSec = serverOptions.metricsIntervalSec
filerOptions.metricsAddress = serverMetricsAddress
filerOptions.metricsIntervalSec = serverMetricsIntervalSec
filerAddress := fmt.Sprintf("%s:%d", *serverIp, *filerOptions.port)
s3Options.filer = &filerAddress
@ -210,6 +206,7 @@ func runServer(cmd *Command, args []string) bool {
*masterVolumeSizeLimitMB, *masterVolumePreallocate,
*pulseSeconds, *masterDefaultReplicaPlacement, *serverGarbageThreshold,
serverWhiteList, *serverDisableHttp,
*serverMetricsAddress, *serverMetricsIntervalSec,
)
glog.V(0).Infof("Start Seaweed Master %s at %s:%d", util.VERSION, *serverIp, *masterPort)

6
weed/command/volume.go

@ -45,8 +45,6 @@ type VolumeServerOptions struct {
cpuProfile *string
memProfile *string
compactionMBPerSecond *int
metricsAddress *string
metricsIntervalSec *int
}
func init() {
@ -68,8 +66,6 @@ func init() {
v.cpuProfile = cmdVolume.Flag.String("cpuprofile", "", "cpu profile output file")
v.memProfile = cmdVolume.Flag.String("memprofile", "", "memory profile output file")
v.compactionMBPerSecond = cmdVolume.Flag.Int("compactionMBps", 0, "limit background compaction or copying speed in mega bytes per second")
v.metricsAddress = cmdVolume.Flag.String("metrics.address", "", "Prometheus gateway address")
v.metricsIntervalSec = cmdVolume.Flag.Int("metrics.intervalSeconds", 15, "Prometheus push interval in seconds")
}
var cmdVolume = &Command{
@ -165,8 +161,6 @@ func (v VolumeServerOptions) startVolumeServer(volumeFolders, maxVolumeCounts, v
v.whiteList,
*v.fixJpgOrientation, *v.readRedirect,
*v.compactionMBPerSecond,
*v.metricsAddress,
*v.metricsIntervalSec,
)
listeningAddress := *v.bindIp + ":" + strconv.Itoa(*v.port)

6
weed/pb/master.proto

@ -52,8 +52,10 @@ message Heartbeat {
}
message HeartbeatResponse {
uint64 volumeSizeLimit = 1;
string leader = 3;
uint64 volume_size_limit = 1;
string leader = 2;
string metrics_address = 3;
uint32 metrics_interval_seconds = 4;
}
message VolumeInformationMessage {

249
weed/pb/master_pb/master.pb.go

@ -202,8 +202,10 @@ func (m *Heartbeat) GetHasNoEcShards() bool {
}
type HeartbeatResponse struct {
VolumeSizeLimit uint64 `protobuf:"varint,1,opt,name=volumeSizeLimit" json:"volumeSizeLimit,omitempty"`
Leader string `protobuf:"bytes,3,opt,name=leader" json:"leader,omitempty"`
VolumeSizeLimit uint64 `protobuf:"varint,1,opt,name=volume_size_limit,json=volumeSizeLimit" json:"volume_size_limit,omitempty"`
Leader string `protobuf:"bytes,2,opt,name=leader" json:"leader,omitempty"`
MetricsAddress string `protobuf:"bytes,3,opt,name=metrics_address,json=metricsAddress" json:"metrics_address,omitempty"`
MetricsIntervalSeconds uint32 `protobuf:"varint,4,opt,name=metrics_interval_seconds,json=metricsIntervalSeconds" json:"metrics_interval_seconds,omitempty"`
}
func (m *HeartbeatResponse) Reset() { *m = HeartbeatResponse{} }
@ -225,6 +227,20 @@ func (m *HeartbeatResponse) GetLeader() string {
return ""
}
func (m *HeartbeatResponse) GetMetricsAddress() string {
if m != nil {
return m.MetricsAddress
}
return ""
}
func (m *HeartbeatResponse) GetMetricsIntervalSeconds() uint32 {
if m != nil {
return m.MetricsIntervalSeconds
}
return 0
}
type VolumeInformationMessage struct {
Id uint32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
Size uint64 `protobuf:"varint,2,opt,name=size" json:"size,omitempty"`
@ -1708,117 +1724,120 @@ var _Seaweed_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("master.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 1783 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xd4, 0x58, 0x4b, 0x8f, 0x1b, 0x49,
0x1d, 0x4f, 0xdb, 0x1e, 0x8f, 0xfd, 0xf7, 0x63, 0xec, 0x9a, 0x49, 0xd6, 0xf1, 0x92, 0x8d, 0xd3,
0x8b, 0x84, 0x77, 0x59, 0x86, 0x25, 0xbb, 0x12, 0x07, 0x40, 0xab, 0x64, 0x32, 0x0b, 0xa3, 0x64,
0xb3, 0x49, 0x3b, 0x1b, 0x24, 0x24, 0xd4, 0x94, 0xbb, 0x6b, 0x66, 0x4a, 0xd3, 0xee, 0x6e, 0xba,
0xca, 0x93, 0xf1, 0x72, 0xe0, 0x00, 0x37, 0x24, 0x2e, 0x9c, 0xb9, 0xf3, 0x29, 0xb8, 0x70, 0xe4,
0x53, 0x70, 0xe0, 0x0b, 0x70, 0x45, 0x48, 0xa8, 0x5e, 0xdd, 0xd5, 0x6d, 0xcf, 0xcc, 0x66, 0xa5,
0x1c, 0x72, 0xab, 0xfe, 0xbf, 0xeb, 0x57, 0xf5, 0x7f, 0x54, 0x43, 0x77, 0x81, 0x19, 0x27, 0xd9,
0x7e, 0x9a, 0x25, 0x3c, 0x41, 0x6d, 0xf5, 0xe5, 0xa7, 0x73, 0xf7, 0x4f, 0x4d, 0x68, 0xff, 0x82,
0xe0, 0x8c, 0xcf, 0x09, 0xe6, 0xa8, 0x0f, 0x35, 0x9a, 0x8e, 0x9c, 0x89, 0x33, 0x6d, 0x7b, 0x35,
0x9a, 0x22, 0x04, 0x8d, 0x34, 0xc9, 0xf8, 0xa8, 0x36, 0x71, 0xa6, 0x3d, 0x4f, 0xae, 0xd1, 0x1d,
0x80, 0x74, 0x39, 0x8f, 0x68, 0xe0, 0x2f, 0xb3, 0x68, 0x54, 0x97, 0xb2, 0x6d, 0x45, 0xf9, 0x2a,
0x8b, 0xd0, 0x14, 0x06, 0x0b, 0x7c, 0xe1, 0x9f, 0x27, 0xd1, 0x72, 0x41, 0xfc, 0x20, 0x59, 0xc6,
0x7c, 0xd4, 0x90, 0xea, 0xfd, 0x05, 0xbe, 0x78, 0x29, 0xc9, 0x07, 0x82, 0x8a, 0x26, 0x22, 0xaa,
0x0b, 0xff, 0x98, 0x46, 0xc4, 0x3f, 0x23, 0xab, 0xd1, 0xd6, 0xc4, 0x99, 0x36, 0x3c, 0x58, 0xe0,
0x8b, 0xcf, 0x69, 0x44, 0x1e, 0x93, 0x15, 0xba, 0x0b, 0x9d, 0x10, 0x73, 0xec, 0x07, 0x24, 0xe6,
0x24, 0x1b, 0x35, 0xa5, 0x2f, 0x10, 0xa4, 0x03, 0x49, 0x11, 0xf1, 0x65, 0x38, 0x38, 0x1b, 0x6d,
0x4b, 0x8e, 0x5c, 0x8b, 0xf8, 0x70, 0xb8, 0xa0, 0xb1, 0x2f, 0x23, 0x6f, 0x49, 0xd7, 0x6d, 0x49,
0x79, 0x26, 0xc2, 0xff, 0x19, 0x6c, 0xab, 0xd8, 0xd8, 0xa8, 0x3d, 0xa9, 0x4f, 0x3b, 0xf7, 0xdf,
0xdf, 0xcf, 0xd1, 0xd8, 0x57, 0xe1, 0x1d, 0xc5, 0xc7, 0x49, 0xb6, 0xc0, 0x9c, 0x26, 0xf1, 0x17,
0x84, 0x31, 0x7c, 0x42, 0x3c, 0xa3, 0x83, 0x8e, 0xa0, 0x13, 0x93, 0x57, 0xbe, 0x31, 0x01, 0xd2,
0xc4, 0x74, 0xcd, 0xc4, 0xec, 0x34, 0xc9, 0xf8, 0x06, 0x3b, 0x10, 0x93, 0x57, 0x2f, 0xb5, 0xa9,
0xe7, 0xb0, 0x13, 0x92, 0x88, 0x70, 0x12, 0xe6, 0xe6, 0x3a, 0xaf, 0x69, 0xae, 0xaf, 0x0d, 0x18,
0x93, 0xdf, 0x85, 0xfe, 0x29, 0x66, 0x7e, 0x9c, 0xe4, 0x16, 0xbb, 0x13, 0x67, 0xda, 0xf2, 0xba,
0xa7, 0x98, 0x3d, 0x4d, 0x8c, 0xd4, 0xcf, 0xa1, 0x4d, 0x02, 0x9f, 0x9d, 0xe2, 0x2c, 0x64, 0xa3,
0x81, 0x74, 0xf9, 0xe1, 0x9a, 0xcb, 0xc3, 0x60, 0x26, 0x04, 0x36, 0x38, 0x6d, 0x11, 0xc5, 0x62,
0xe8, 0x29, 0xf4, 0x04, 0x18, 0x85, 0xb1, 0xe1, 0x6b, 0x1b, 0x13, 0x68, 0x1e, 0x1a, 0x7b, 0x2f,
0x61, 0x68, 0x10, 0x29, 0x6c, 0xa2, 0xd7, 0xb6, 0x69, 0x60, 0xcd, 0xed, 0x7e, 0x0f, 0x06, 0x1a,
0x96, 0xc2, 0xec, 0xae, 0x04, 0xa6, 0x27, 0x81, 0x31, 0x82, 0xee, 0x57, 0x30, 0xcc, 0x93, 0xc1,
0x23, 0x2c, 0x4d, 0x62, 0x46, 0xd0, 0x14, 0x76, 0x14, 0x9a, 0x33, 0xfa, 0x35, 0x79, 0x42, 0x17,
0x94, 0xcb, 0x0c, 0x69, 0x78, 0x55, 0x32, 0xba, 0x05, 0xcd, 0x88, 0xe0, 0x90, 0x64, 0x3a, 0x2d,
0xf4, 0x97, 0xfb, 0xd7, 0x3a, 0x8c, 0x2e, 0xbb, 0x5a, 0x32, 0xe7, 0x42, 0x69, 0xb1, 0xe7, 0xd5,
0x68, 0x28, 0xee, 0x34, 0xa3, 0x5f, 0x13, 0x99, 0x73, 0x0d, 0x4f, 0xae, 0xd1, 0x7b, 0x00, 0x41,
0x12, 0x45, 0x24, 0x10, 0x8a, 0xda, 0xb8, 0x45, 0x11, 0x77, 0x5e, 0xa6, 0x51, 0x91, 0x6e, 0x0d,
0xaf, 0x2d, 0x28, 0x2a, 0xd3, 0xee, 0x41, 0x57, 0x41, 0xa2, 0x05, 0x54, 0xa6, 0x75, 0x14, 0x4d,
0x89, 0x7c, 0x04, 0xc8, 0x40, 0x3f, 0x5f, 0xe5, 0x82, 0x4d, 0x29, 0x38, 0xd0, 0x9c, 0x87, 0x2b,
0x23, 0xfd, 0x2e, 0xb4, 0x33, 0x82, 0x43, 0x3f, 0x89, 0xa3, 0x95, 0x4c, 0xbe, 0x96, 0xd7, 0x12,
0x84, 0x2f, 0xe3, 0x68, 0x85, 0xbe, 0x0f, 0xc3, 0x8c, 0xa4, 0x11, 0x0d, 0xb0, 0x9f, 0x46, 0x38,
0x20, 0x0b, 0x12, 0x9b, 0x3c, 0x1c, 0x68, 0xc6, 0x33, 0x43, 0x47, 0x23, 0xd8, 0x3e, 0x27, 0x19,
0x13, 0xdb, 0x6a, 0x4b, 0x11, 0xf3, 0x89, 0x06, 0x50, 0xe7, 0x3c, 0x1a, 0x81, 0xa4, 0x8a, 0x25,
0xfa, 0x00, 0x06, 0x41, 0xb2, 0x48, 0x71, 0xc0, 0xfd, 0x8c, 0x9c, 0x53, 0xa9, 0xd4, 0x91, 0xec,
0x1d, 0x4d, 0xf7, 0x34, 0x59, 0x6c, 0x67, 0x91, 0x84, 0xf4, 0x98, 0x92, 0xd0, 0xc7, 0xdc, 0x67,
0x24, 0x48, 0xe2, 0x50, 0x26, 0x43, 0xdd, 0x1b, 0x18, 0xce, 0x03, 0x3e, 0x93, 0x74, 0xf7, 0x6f,
0x0e, 0xdc, 0xb9, 0x32, 0xd1, 0xd6, 0x0e, 0xe9, 0xba, 0x03, 0x79, 0x53, 0x18, 0xb8, 0x4b, 0xb8,
0x7b, 0xcd, 0xf5, 0xbf, 0x26, 0xd6, 0xda, 0x5a, 0xac, 0x2e, 0xf4, 0x48, 0xe0, 0xd3, 0x38, 0x24,
0x17, 0xfe, 0x9c, 0x72, 0x26, 0xb7, 0xd3, 0xf3, 0x3a, 0x24, 0x38, 0x12, 0xb4, 0x87, 0x94, 0x33,
0x77, 0x1b, 0xb6, 0x0e, 0x17, 0x29, 0x5f, 0xb9, 0x7f, 0x77, 0x60, 0x67, 0xb6, 0x4c, 0x49, 0xf6,
0x30, 0x4a, 0x82, 0xb3, 0xc3, 0x0b, 0x9e, 0x61, 0xf4, 0x25, 0xf4, 0x49, 0x86, 0xd9, 0x32, 0x13,
0xd7, 0x26, 0xa4, 0xf1, 0x89, 0x74, 0x5e, 0xae, 0x63, 0x15, 0x9d, 0xfd, 0x43, 0xa5, 0x70, 0x20,
0xe5, 0xbd, 0x1e, 0xb1, 0x3f, 0xc7, 0xbf, 0x82, 0x5e, 0x89, 0x2f, 0x72, 0x42, 0x54, 0x7d, 0xbd,
0x29, 0xb9, 0x16, 0xc9, 0x96, 0xe2, 0x8c, 0xf2, 0x95, 0xee, 0x4e, 0xfa, 0x4b, 0xe4, 0x82, 0x6e,
0x3e, 0x34, 0x14, 0x7b, 0xa9, 0x8b, 0xfa, 0xaf, 0x28, 0x47, 0x21, 0x73, 0x3f, 0x80, 0xdd, 0x83,
0x88, 0x92, 0x98, 0x3f, 0xa1, 0x8c, 0x93, 0xd8, 0x23, 0xbf, 0x5d, 0x12, 0xc6, 0x85, 0x87, 0x18,
0x2f, 0x88, 0xee, 0x7d, 0x72, 0xed, 0xfe, 0x1e, 0xfa, 0x0a, 0xeb, 0x27, 0x49, 0x20, 0x11, 0x16,
0xe7, 0x21, 0x9a, 0x9e, 0x12, 0x12, 0xcb, 0x4a, 0x37, 0xac, 0x55, 0xbb, 0xe1, 0x6d, 0x68, 0xc9,
0x76, 0x51, 0x84, 0xb2, 0x2d, 0x3a, 0x00, 0x0d, 0x59, 0x91, 0x94, 0xa1, 0x62, 0x37, 0x24, 0xbb,
0x63, 0x2a, 0x3a, 0x0d, 0x99, 0xfb, 0x02, 0x76, 0x9f, 0x24, 0xc9, 0xd9, 0x32, 0x55, 0x61, 0x98,
0x58, 0xcb, 0x3b, 0x74, 0x26, 0x75, 0xe1, 0x33, 0xdf, 0xe1, 0x75, 0xe7, 0xed, 0xfe, 0xc7, 0x81,
0xbd, 0xb2, 0x59, 0x5d, 0xe8, 0x7e, 0x03, 0xbb, 0xb9, 0x5d, 0x3f, 0xd2, 0x7b, 0x56, 0x0e, 0x3a,
0xf7, 0x3f, 0xb6, 0x0e, 0x73, 0x93, 0xb6, 0xe9, 0x9d, 0xa1, 0x01, 0xcb, 0x1b, 0x9e, 0x57, 0x28,
0x6c, 0x7c, 0x01, 0x83, 0xaa, 0x98, 0xa8, 0x25, 0xb9, 0x57, 0x8d, 0x6c, 0xcb, 0x68, 0xa2, 0x1f,
0x41, 0xbb, 0x08, 0xa4, 0x26, 0x03, 0xd9, 0x2d, 0x05, 0xa2, 0x7d, 0x15, 0x52, 0x68, 0x0f, 0xb6,
0x48, 0x96, 0x25, 0xa6, 0x06, 0xab, 0x0f, 0xf7, 0x27, 0xd0, 0xfa, 0xd6, 0xa7, 0xe8, 0xfe, 0xd3,
0x81, 0xde, 0x03, 0xc6, 0xe8, 0x49, 0x7e, 0x5d, 0xf6, 0x60, 0x4b, 0x55, 0x48, 0xd5, 0x09, 0xd4,
0x07, 0x9a, 0x40, 0x47, 0x27, 0xb7, 0x05, 0xbd, 0x4d, 0xba, 0xb6, 0x6e, 0xe8, 0x84, 0x6f, 0xa8,
0xd0, 0x44, 0xd1, 0xab, 0xcc, 0x40, 0x5b, 0x97, 0xce, 0x40, 0x4d, 0x6b, 0x06, 0x7a, 0x17, 0xda,
0x52, 0x29, 0x4e, 0x42, 0xa2, 0x87, 0xa3, 0x96, 0x20, 0x3c, 0x4d, 0x42, 0xe2, 0xfe, 0xc5, 0x81,
0xbe, 0xd9, 0x8d, 0x3e, 0xf9, 0x01, 0xd4, 0x8f, 0x73, 0xf4, 0xc5, 0xd2, 0x60, 0x54, 0xbb, 0x0c,
0xa3, 0xb5, 0xb9, 0x2f, 0x47, 0xa4, 0x61, 0x23, 0x92, 0x1f, 0xc6, 0x96, 0x75, 0x18, 0x22, 0x64,
0xbc, 0xe4, 0xa7, 0x26, 0x64, 0xb1, 0x76, 0x4f, 0x60, 0x38, 0xe3, 0x98, 0x53, 0xc6, 0x69, 0xc0,
0x0c, 0xcc, 0x15, 0x40, 0x9d, 0xeb, 0x00, 0xad, 0x5d, 0x06, 0x68, 0x3d, 0x07, 0xd4, 0xfd, 0x87,
0x03, 0xc8, 0xf6, 0xa4, 0x21, 0x78, 0x03, 0xae, 0x04, 0x64, 0x3c, 0xe1, 0x38, 0xf2, 0x65, 0x43,
0xd7, 0x6d, 0x59, 0x52, 0xc4, 0xcc, 0x20, 0x4e, 0x69, 0xc9, 0x48, 0xa8, 0xb8, 0xaa, 0x27, 0xb7,
0x04, 0x41, 0x32, 0xcb, 0x2d, 0xbd, 0x59, 0x69, 0xe9, 0xee, 0x03, 0xe8, 0xcc, 0x78, 0x92, 0xe1,
0x13, 0xf2, 0x62, 0x95, 0x7e, 0x93, 0xe8, 0x75, 0x74, 0xb5, 0x02, 0x88, 0x09, 0xc0, 0x41, 0x11,
0xfd, 0xa6, 0x02, 0xf8, 0x3b, 0xb8, 0x59, 0x48, 0x88, 0x7a, 0x69, 0xce, 0xe5, 0x53, 0xb8, 0x45,
0xe3, 0x20, 0x5a, 0x86, 0xc4, 0x8f, 0x45, 0xfb, 0x89, 0xf2, 0x79, 0xd3, 0x91, 0xc3, 0xc0, 0x9e,
0xe6, 0x3e, 0x95, 0x4c, 0x33, 0x77, 0x7e, 0x04, 0xc8, 0x68, 0x91, 0x20, 0xd7, 0xa8, 0x49, 0x8d,
0x81, 0xe6, 0x1c, 0x06, 0x5a, 0xda, 0x7d, 0x0e, 0xb7, 0xaa, 0xce, 0xf5, 0x51, 0xfd, 0x18, 0x3a,
0x05, 0xec, 0xa6, 0x3e, 0xdd, 0xb4, 0xca, 0x42, 0xa1, 0xe7, 0xd9, 0x92, 0xee, 0x0f, 0xe0, 0x9d,
0x82, 0xf5, 0x48, 0x16, 0xda, 0xab, 0xea, 0xff, 0x18, 0x46, 0xeb, 0xe2, 0x2a, 0x06, 0xf7, 0x5f,
0x35, 0xe8, 0x3e, 0xd2, 0x19, 0x25, 0x7a, 0xb0, 0xd5, 0x75, 0xdb, 0xb2, 0xeb, 0xde, 0x83, 0x6e,
0xe9, 0x0d, 0xa4, 0xc6, 0xb9, 0xce, 0xb9, 0xf5, 0x00, 0xda, 0xf4, 0x54, 0xaa, 0x4b, 0xb1, 0xea,
0x53, 0xe9, 0x43, 0x18, 0x1e, 0x67, 0x84, 0xac, 0xbf, 0xaa, 0x1a, 0xde, 0x8e, 0x60, 0xd8, 0xb2,
0xfb, 0xb0, 0x8b, 0x03, 0x4e, 0xcf, 0x2b, 0xd2, 0xea, 0x7e, 0x0d, 0x15, 0xcb, 0x96, 0xff, 0x3c,
0x0f, 0x94, 0xc6, 0xc7, 0x09, 0x1b, 0x35, 0xbf, 0xf9, 0xab, 0x48, 0xef, 0x46, 0x70, 0x18, 0x7a,
0x06, 0x7d, 0x33, 0x5d, 0x6b, 0x4b, 0xdb, 0xaf, 0x3d, 0xb9, 0x77, 0x49, 0xc1, 0x62, 0xee, 0x1f,
0x6b, 0xd0, 0xf2, 0x70, 0x70, 0xf6, 0x76, 0xe3, 0xfb, 0x19, 0xec, 0xe4, 0xb5, 0xb8, 0x04, 0xf1,
0x3b, 0x16, 0x30, 0xf6, 0x55, 0xf2, 0x7a, 0xa1, 0xf5, 0xc5, 0xdc, 0xff, 0x39, 0xd0, 0x7f, 0x94,
0xd7, 0xfb, 0xb7, 0x1b, 0x8c, 0xfb, 0x00, 0xa2, 0x41, 0x95, 0x70, 0xb0, 0x1b, 0xba, 0x39, 0x6e,
0xaf, 0x9d, 0xe9, 0x15, 0x73, 0xff, 0x5c, 0x83, 0xee, 0x8b, 0x24, 0x4d, 0xa2, 0xe4, 0x64, 0xf5,
0x76, 0xef, 0xfe, 0x10, 0x86, 0x56, 0x2f, 0x2f, 0x81, 0x70, 0xbb, 0x72, 0x19, 0x8a, 0xc3, 0xf6,
0x76, 0xc2, 0xd2, 0x37, 0x73, 0x77, 0x61, 0xa8, 0xe7, 0xd2, 0xa2, 0x24, 0xbb, 0x7f, 0x70, 0x00,
0xd9, 0x54, 0x5d, 0x2b, 0x7f, 0x0a, 0x3d, 0xae, 0xb1, 0x93, 0xfe, 0xf4, 0x68, 0x6e, 0xdf, 0x3d,
0x1b, 0x5b, 0xaf, 0xcb, 0x6d, 0xa4, 0x7f, 0x08, 0x7b, 0x7a, 0x67, 0xa2, 0x47, 0xf9, 0x91, 0x78,
0xe5, 0xfa, 0x8b, 0xb9, 0x46, 0x78, 0x58, 0x79, 0xff, 0x7e, 0x31, 0x77, 0x3f, 0x85, 0x9b, 0x6a,
0x38, 0x34, 0x75, 0xdc, 0xd4, 0xd7, 0xb5, 0x29, 0xaf, 0x57, 0x4c, 0x79, 0xee, 0x7f, 0x1d, 0xb8,
0x55, 0x55, 0xd3, 0xf1, 0x5f, 0xa5, 0x87, 0x30, 0x20, 0x5d, 0x6f, 0xec, 0x79, 0x55, 0x8d, 0x89,
0x9f, 0xac, 0xcd, 0xab, 0x55, 0xdb, 0xfb, 0xa6, 0x0e, 0x15, 0x23, 0xeb, 0x80, 0x95, 0x09, 0x6c,
0x8c, 0x61, 0xb8, 0x26, 0x26, 0xa6, 0x7a, 0xe3, 0x57, 0xc7, 0xb4, 0xad, 0x15, 0xbf, 0xc5, 0xc0,
0x7a, 0xff, 0xdf, 0x5b, 0xb0, 0x3d, 0x23, 0xf8, 0x15, 0x21, 0x21, 0x3a, 0x82, 0xde, 0x8c, 0xc4,
0x61, 0xf1, 0x47, 0x6e, 0xcf, 0x52, 0xce, 0xa9, 0xe3, 0xef, 0x6c, 0xa2, 0xe6, 0xbd, 0xe9, 0xc6,
0xd4, 0xf9, 0xd8, 0x41, 0xcf, 0xa0, 0xf7, 0x98, 0x90, 0xf4, 0x20, 0x89, 0x63, 0x12, 0x70, 0x12,
0xa2, 0xf7, 0xec, 0x0e, 0xb9, 0xfe, 0x04, 0x1a, 0xdf, 0x5e, 0x2b, 0xd4, 0x26, 0x5a, 0x6d, 0xf1,
0x39, 0x74, 0xed, 0xc9, 0xbf, 0x64, 0x70, 0xc3, 0x3b, 0x65, 0x7c, 0xf7, 0x9a, 0x27, 0x83, 0x7b,
0x03, 0x7d, 0x06, 0x4d, 0x35, 0x8a, 0xa2, 0x91, 0x25, 0x5c, 0x9a, 0xb5, 0x4b, 0x71, 0x95, 0xe7,
0x56, 0xf7, 0x06, 0x7a, 0x0c, 0x50, 0x0c, 0x73, 0xc8, 0xc6, 0x65, 0x6d, 0x9a, 0x1c, 0xdf, 0xb9,
0x84, 0x9b, 0x1b, 0xfb, 0x25, 0xf4, 0xcb, 0x23, 0x07, 0x9a, 0x6c, 0x9c, 0x2a, 0xac, 0xbc, 0x1b,
0xdf, 0xbb, 0x42, 0x22, 0x37, 0xfc, 0x6b, 0x18, 0x54, 0x27, 0x09, 0xe4, 0x6e, 0x54, 0x2c, 0x4d,
0x25, 0xe3, 0xf7, 0xaf, 0x94, 0xb1, 0x41, 0x28, 0x52, 0xbf, 0x04, 0xc2, 0x5a, 0x9d, 0x28, 0x81,
0xb0, 0x5e, 0x2f, 0x14, 0x08, 0xe5, 0x7c, 0x29, 0x81, 0xb0, 0x31, 0xbb, 0x4b, 0x20, 0x6c, 0x4e,
0x36, 0xf7, 0xc6, 0xbc, 0x29, 0x7f, 0x3e, 0x7f, 0xf2, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3,
0x20, 0x0c, 0x55, 0x8c, 0x16, 0x00, 0x00,
// 1832 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xd4, 0x58, 0xcd, 0x6f, 0x1c, 0x49,
0x15, 0x4f, 0xcf, 0x8c, 0xed, 0x99, 0x37, 0x1f, 0x9e, 0x29, 0x3b, 0xde, 0xc9, 0x2c, 0xd9, 0x4c,
0x7a, 0x91, 0xd6, 0x1b, 0x16, 0xb3, 0x64, 0x57, 0x02, 0x09, 0xd0, 0x2a, 0x71, 0xbc, 0x60, 0x25,
0x9b, 0x4d, 0x7a, 0x42, 0x90, 0x90, 0x50, 0x53, 0xee, 0x7e, 0xb6, 0x4b, 0xee, 0xe9, 0x6e, 0xba,
0x6a, 0x1c, 0xcf, 0x72, 0xe0, 0x00, 0x37, 0x24, 0x2e, 0x9c, 0xb9, 0xf3, 0x37, 0x70, 0xe0, 0xc2,
0x91, 0xbf, 0x82, 0x03, 0xff, 0x00, 0x57, 0x84, 0x84, 0xea, 0xab, 0x3f, 0x66, 0xc6, 0xf6, 0x66,
0xa5, 0x1c, 0x72, 0xab, 0x7e, 0x5f, 0xf5, 0xea, 0xf7, 0xea, 0x7d, 0x54, 0x43, 0x67, 0x4a, 0xb9,
0xc0, 0x6c, 0x2f, 0xcd, 0x12, 0x91, 0x90, 0x96, 0xfe, 0xf2, 0xd3, 0x23, 0xf7, 0x8f, 0xeb, 0xd0,
0xfa, 0x19, 0xd2, 0x4c, 0x1c, 0x21, 0x15, 0xa4, 0x07, 0x35, 0x96, 0x0e, 0x9d, 0xb1, 0xb3, 0xdb,
0xf2, 0x6a, 0x2c, 0x25, 0x04, 0x1a, 0x69, 0x92, 0x89, 0x61, 0x6d, 0xec, 0xec, 0x76, 0x3d, 0xb5,
0x26, 0xb7, 0x01, 0xd2, 0xd9, 0x51, 0xc4, 0x02, 0x7f, 0x96, 0x45, 0xc3, 0xba, 0x92, 0x6d, 0x69,
0xca, 0xcf, 0xb3, 0x88, 0xec, 0x42, 0x7f, 0x4a, 0x2f, 0xfc, 0xf3, 0x24, 0x9a, 0x4d, 0xd1, 0x0f,
0x92, 0x59, 0x2c, 0x86, 0x0d, 0xa5, 0xde, 0x9b, 0xd2, 0x8b, 0x97, 0x8a, 0xbc, 0x2f, 0xa9, 0x64,
0x2c, 0xbd, 0xba, 0xf0, 0x8f, 0x59, 0x84, 0xfe, 0x19, 0xce, 0x87, 0x6b, 0x63, 0x67, 0xb7, 0xe1,
0xc1, 0x94, 0x5e, 0x7c, 0xce, 0x22, 0x7c, 0x8c, 0x73, 0x72, 0x07, 0xda, 0x21, 0x15, 0xd4, 0x0f,
0x30, 0x16, 0x98, 0x0d, 0xd7, 0xd5, 0x5e, 0x20, 0x49, 0xfb, 0x8a, 0x22, 0xfd, 0xcb, 0x68, 0x70,
0x36, 0xdc, 0x50, 0x1c, 0xb5, 0x96, 0xfe, 0xd1, 0x70, 0xca, 0x62, 0x5f, 0x79, 0xde, 0x54, 0x5b,
0xb7, 0x14, 0xe5, 0x99, 0x74, 0xff, 0x27, 0xb0, 0xa1, 0x7d, 0xe3, 0xc3, 0xd6, 0xb8, 0xbe, 0xdb,
0xbe, 0xff, 0xfe, 0x5e, 0x8e, 0xc6, 0x9e, 0x76, 0xef, 0x30, 0x3e, 0x4e, 0xb2, 0x29, 0x15, 0x2c,
0x89, 0xbf, 0x40, 0xce, 0xe9, 0x09, 0x7a, 0x56, 0x87, 0x1c, 0x42, 0x3b, 0xc6, 0x57, 0xbe, 0x35,
0x01, 0xca, 0xc4, 0xee, 0x92, 0x89, 0xc9, 0x69, 0x92, 0x89, 0x15, 0x76, 0x20, 0xc6, 0x57, 0x2f,
0x8d, 0xa9, 0xe7, 0xb0, 0x19, 0x62, 0x84, 0x02, 0xc3, 0xdc, 0x5c, 0xfb, 0x35, 0xcd, 0xf5, 0x8c,
0x01, 0x6b, 0xf2, 0xdb, 0xd0, 0x3b, 0xa5, 0xdc, 0x8f, 0x93, 0xdc, 0x62, 0x67, 0xec, 0xec, 0x36,
0xbd, 0xce, 0x29, 0xe5, 0x4f, 0x13, 0x2b, 0xf5, 0x53, 0x68, 0x61, 0xe0, 0xf3, 0x53, 0x9a, 0x85,
0x7c, 0xd8, 0x57, 0x5b, 0xde, 0x5b, 0xda, 0xf2, 0x20, 0x98, 0x48, 0x81, 0x15, 0x9b, 0x36, 0x51,
0xb3, 0x38, 0x79, 0x0a, 0x5d, 0x09, 0x46, 0x61, 0x6c, 0xf0, 0xda, 0xc6, 0x24, 0x9a, 0x07, 0xd6,
0xde, 0x4b, 0x18, 0x58, 0x44, 0x0a, 0x9b, 0xe4, 0xb5, 0x6d, 0x5a, 0x58, 0x73, 0xbb, 0x1f, 0x40,
0xdf, 0xc0, 0x52, 0x98, 0xdd, 0x52, 0xc0, 0x74, 0x15, 0x30, 0x56, 0xd0, 0xfd, 0x9b, 0x03, 0x83,
0x3c, 0x1b, 0x3c, 0xe4, 0x69, 0x12, 0x73, 0x24, 0xf7, 0x60, 0x60, 0xae, 0x33, 0x67, 0x5f, 0xa1,
0x1f, 0xb1, 0x29, 0x13, 0x2a, 0x49, 0x1a, 0xde, 0xa6, 0x66, 0x4c, 0xd8, 0x57, 0xf8, 0x44, 0x92,
0xc9, 0x0e, 0xac, 0x47, 0x48, 0x43, 0xcc, 0x54, 0xce, 0xb4, 0x3c, 0xf3, 0x45, 0x3e, 0x80, 0xcd,
0x29, 0x8a, 0x8c, 0x05, 0xdc, 0xa7, 0x61, 0x98, 0x21, 0xe7, 0x26, 0x75, 0x7a, 0x86, 0xfc, 0x40,
0x53, 0xc9, 0x0f, 0x61, 0x68, 0x05, 0x99, 0xbc, 0xe3, 0xe7, 0x34, 0xf2, 0x39, 0x06, 0x49, 0x1c,
0x72, 0x93, 0x47, 0x3b, 0x86, 0x7f, 0x68, 0xd8, 0x13, 0xcd, 0x75, 0xff, 0x52, 0x87, 0xe1, 0x65,
0x17, 0x58, 0x65, 0x76, 0xa8, 0x9c, 0xee, 0x7a, 0x35, 0x16, 0xca, 0xcc, 0x91, 0x87, 0x51, 0x5e,
0x36, 0x3c, 0xb5, 0x26, 0xef, 0x01, 0x04, 0x49, 0x14, 0x61, 0x20, 0x15, 0x8d, 0x7b, 0x25, 0x8a,
0xcc, 0x2c, 0x95, 0xac, 0x45, 0x52, 0x37, 0xbc, 0x96, 0xa4, 0xe8, 0x7c, 0xbe, 0x0b, 0x1d, 0x0d,
0xbc, 0x11, 0xd0, 0xf9, 0xdc, 0xd6, 0x34, 0x2d, 0xf2, 0x11, 0x10, 0x1b, 0xe0, 0xa3, 0x79, 0x2e,
0xb8, 0xae, 0x04, 0xfb, 0x86, 0xf3, 0x70, 0x6e, 0xa5, 0xdf, 0x85, 0x56, 0x86, 0x34, 0xf4, 0x93,
0x38, 0x9a, 0xab, 0x14, 0x6f, 0x7a, 0x4d, 0x49, 0xf8, 0x32, 0x8e, 0xe6, 0xe4, 0x3b, 0x30, 0xc8,
0x30, 0x8d, 0x58, 0x40, 0xfd, 0x34, 0xa2, 0x01, 0x4e, 0x31, 0xb6, 0xd9, 0xde, 0x37, 0x8c, 0x67,
0x96, 0x4e, 0x86, 0xb0, 0x71, 0x8e, 0x19, 0x97, 0xc7, 0x6a, 0x29, 0x11, 0xfb, 0x49, 0xfa, 0x50,
0x17, 0x22, 0x1a, 0x82, 0xa2, 0xca, 0x25, 0xf9, 0x10, 0xfa, 0x41, 0x32, 0x4d, 0x69, 0x20, 0xfc,
0x0c, 0xcf, 0x99, 0x52, 0x6a, 0x2b, 0xf6, 0xa6, 0xa1, 0x7b, 0x86, 0x2c, 0x8f, 0x33, 0x4d, 0x42,
0x76, 0xcc, 0x30, 0xf4, 0xa9, 0x30, 0x61, 0x52, 0x29, 0x57, 0xf7, 0xfa, 0x96, 0xf3, 0x40, 0xe8,
0x00, 0xb9, 0x7f, 0x75, 0xe0, 0xf6, 0x95, 0xe9, 0xbc, 0x14, 0xa4, 0xeb, 0x02, 0xf2, 0xa6, 0x30,
0x70, 0x67, 0x70, 0xe7, 0x9a, 0x24, 0xbb, 0xc6, 0xd7, 0xda, 0x92, 0xaf, 0x2e, 0x74, 0x31, 0xf0,
0x59, 0x1c, 0xe2, 0x85, 0x7f, 0xc4, 0x84, 0xbe, 0xfe, 0x5d, 0xaf, 0x8d, 0xc1, 0xa1, 0xa4, 0x3d,
0x64, 0x82, 0xbb, 0x1b, 0xb0, 0x76, 0x30, 0x4d, 0xc5, 0xdc, 0xfd, 0xbb, 0x03, 0x9b, 0x93, 0x59,
0x8a, 0xd9, 0xc3, 0x28, 0x09, 0xce, 0x0e, 0x2e, 0x44, 0x46, 0xc9, 0x97, 0xd0, 0xc3, 0x8c, 0xf2,
0x59, 0x26, 0xaf, 0x4d, 0xc8, 0xe2, 0x13, 0xb5, 0x79, 0xb5, 0x5a, 0x2e, 0xe8, 0xec, 0x1d, 0x68,
0x85, 0x7d, 0x25, 0xef, 0x75, 0xb1, 0xfc, 0x39, 0xfa, 0x25, 0x74, 0x2b, 0x7c, 0x99, 0x13, 0xb2,
0xb7, 0x98, 0x43, 0xa9, 0xb5, 0xcc, 0xe7, 0x94, 0x66, 0x4c, 0xcc, 0x4d, 0x0f, 0x34, 0x5f, 0x32,
0x17, 0x4c, 0x4d, 0x60, 0xa1, 0x3c, 0x4b, 0x5d, 0x76, 0x19, 0x4d, 0x39, 0x0c, 0xb9, 0xfb, 0x21,
0x6c, 0xed, 0x47, 0x0c, 0x63, 0xf1, 0x84, 0x71, 0x81, 0xb1, 0x87, 0xbf, 0x99, 0x21, 0x17, 0x72,
0x87, 0x98, 0x4e, 0xd1, 0x74, 0x58, 0xb5, 0x76, 0x7f, 0x07, 0x3d, 0x8d, 0xf5, 0x93, 0x24, 0x50,
0x08, 0xcb, 0x78, 0xc8, 0xd6, 0xaa, 0x85, 0xe4, 0x72, 0xa1, 0xe7, 0xd6, 0x16, 0x7b, 0xee, 0x2d,
0x68, 0xaa, 0xa6, 0x54, 0xb8, 0xb2, 0x21, 0xfb, 0x0c, 0x0b, 0x79, 0x91, 0x94, 0xa1, 0x66, 0x37,
0x14, 0xbb, 0x6d, 0xfb, 0x06, 0x0b, 0xb9, 0xfb, 0x02, 0xb6, 0x9e, 0x24, 0xc9, 0xd9, 0x2c, 0xd5,
0x6e, 0x58, 0x5f, 0xab, 0x27, 0x74, 0xc6, 0x75, 0xb9, 0x67, 0x7e, 0xc2, 0xeb, 0xe2, 0xed, 0xfe,
0xc7, 0x81, 0xed, 0xaa, 0x59, 0x53, 0x4d, 0x7f, 0x0d, 0x5b, 0xb9, 0x5d, 0x3f, 0x32, 0x67, 0xd6,
0x1b, 0xb4, 0xef, 0x7f, 0x5c, 0x0a, 0xe6, 0x2a, 0x6d, 0xdb, 0xa1, 0x43, 0x0b, 0x96, 0x37, 0x38,
0x5f, 0xa0, 0xf0, 0xd1, 0x05, 0xf4, 0x17, 0xc5, 0x64, 0x2d, 0xc9, 0x77, 0x35, 0xc8, 0x36, 0xad,
0x26, 0xf9, 0x3e, 0xb4, 0x0a, 0x47, 0x6a, 0xca, 0x91, 0xad, 0x8a, 0x23, 0x66, 0xaf, 0x42, 0x8a,
0x6c, 0xc3, 0x1a, 0x66, 0x59, 0x92, 0x99, 0xac, 0xd4, 0x1f, 0xee, 0x8f, 0xa0, 0xf9, 0x8d, 0xa3,
0xe8, 0xfe, 0xd3, 0x81, 0xee, 0x03, 0xce, 0xd9, 0x49, 0x7e, 0x5d, 0xb6, 0x61, 0x4d, 0x57, 0x48,
0xdd, 0x6c, 0xf4, 0x07, 0x19, 0x43, 0xdb, 0x24, 0x77, 0x09, 0xfa, 0x32, 0xe9, 0xda, 0xba, 0x61,
0x12, 0xbe, 0xa1, 0x5d, 0x93, 0x45, 0x6f, 0x61, 0xd2, 0x5a, 0xbb, 0x74, 0xd2, 0x5a, 0x2f, 0x4d,
0x5a, 0xef, 0x42, 0x4b, 0x29, 0xc5, 0x49, 0x88, 0x66, 0x04, 0x6b, 0x4a, 0xc2, 0xd3, 0x24, 0x44,
0xf7, 0xcf, 0x0e, 0xf4, 0xec, 0x69, 0x4c, 0xe4, 0xfb, 0x50, 0x3f, 0xce, 0xd1, 0x97, 0x4b, 0x8b,
0x51, 0xed, 0x32, 0x8c, 0x96, 0xa6, 0xcb, 0x1c, 0x91, 0x46, 0x19, 0x91, 0x3c, 0x18, 0x6b, 0xa5,
0x60, 0x48, 0x97, 0xe9, 0x4c, 0x9c, 0x5a, 0x97, 0xe5, 0xda, 0x3d, 0x81, 0xc1, 0x44, 0x50, 0xc1,
0xb8, 0x60, 0x01, 0xb7, 0x30, 0x2f, 0x00, 0xea, 0x5c, 0x07, 0x68, 0xed, 0x32, 0x40, 0xeb, 0x39,
0xa0, 0xee, 0x3f, 0x1c, 0x20, 0xe5, 0x9d, 0x0c, 0x04, 0x6f, 0x60, 0x2b, 0x09, 0x99, 0x48, 0x84,
0x1c, 0x13, 0x64, 0x43, 0x37, 0x6d, 0x59, 0x51, 0xe4, 0x58, 0x22, 0xa3, 0x34, 0xe3, 0x18, 0x6a,
0xae, 0xee, 0xc9, 0x4d, 0x49, 0x50, 0xcc, 0x6a, 0x4b, 0x5f, 0x5f, 0x68, 0xe9, 0xee, 0x03, 0x68,
0x4f, 0x44, 0x92, 0xd1, 0x13, 0x7c, 0x31, 0x4f, 0xbf, 0x8e, 0xf7, 0xc6, 0xbb, 0x5a, 0x01, 0xc4,
0x18, 0x60, 0xbf, 0xf0, 0x7e, 0x55, 0x01, 0xfc, 0x2d, 0xdc, 0x2c, 0x24, 0x64, 0xbd, 0xb4, 0x71,
0xf9, 0x14, 0x76, 0x58, 0x1c, 0x44, 0xb3, 0x10, 0xfd, 0x58, 0xb6, 0x9f, 0x28, 0x9f, 0x6a, 0x1d,
0x35, 0x0c, 0x6c, 0x1b, 0xee, 0x53, 0xc5, 0xb4, 0xd3, 0xed, 0x47, 0x40, 0xac, 0x16, 0x06, 0xb9,
0x46, 0x4d, 0x69, 0xf4, 0x0d, 0xe7, 0x20, 0x30, 0xd2, 0xee, 0x73, 0xd8, 0x59, 0xdc, 0xdc, 0x84,
0xea, 0x07, 0xd0, 0x2e, 0x60, 0xb7, 0xf5, 0xe9, 0x66, 0xa9, 0x2c, 0x14, 0x7a, 0x5e, 0x59, 0xd2,
0xfd, 0x2e, 0xbc, 0x53, 0xb0, 0x1e, 0xa9, 0x42, 0x7b, 0x55, 0xfd, 0x1f, 0xc1, 0x70, 0x59, 0x5c,
0xfb, 0xe0, 0xfe, 0xab, 0x06, 0x9d, 0x47, 0x26, 0xa3, 0x64, 0x0f, 0x2e, 0x75, 0xdd, 0x96, 0xea,
0xba, 0x77, 0xa1, 0x53, 0x79, 0x69, 0xe9, 0x71, 0xae, 0x7d, 0x5e, 0x7a, 0x66, 0xad, 0x7a, 0x90,
0xd5, 0x95, 0xd8, 0xe2, 0x83, 0xec, 0x1e, 0x0c, 0x8e, 0x33, 0xc4, 0xe5, 0xb7, 0x5b, 0xc3, 0xdb,
0x94, 0x8c, 0xb2, 0xec, 0x1e, 0x6c, 0xd1, 0x40, 0xb0, 0xf3, 0x05, 0x69, 0x7d, 0xbf, 0x06, 0x9a,
0x55, 0x96, 0xff, 0x3c, 0x77, 0x94, 0xc5, 0xc7, 0x09, 0x1f, 0xae, 0x7f, 0xfd, 0xb7, 0x97, 0x39,
0x8d, 0xe4, 0x70, 0xf2, 0x0c, 0x7a, 0x76, 0x86, 0x37, 0x96, 0x36, 0x5e, 0xfb, 0x7d, 0xd0, 0xc1,
0x82, 0xc5, 0xdd, 0x3f, 0xd4, 0xa0, 0xe9, 0xd1, 0xe0, 0xec, 0xed, 0xc6, 0xf7, 0x33, 0xd8, 0xcc,
0x6b, 0x71, 0x05, 0xe2, 0x77, 0x4a, 0xc0, 0x94, 0xaf, 0x92, 0xd7, 0x0d, 0x4b, 0x5f, 0xdc, 0xfd,
0x9f, 0x03, 0xbd, 0x47, 0x79, 0xbd, 0x7f, 0xbb, 0xc1, 0xb8, 0x0f, 0x20, 0x1b, 0x54, 0x05, 0x87,
0x72, 0x43, 0xb7, 0xe1, 0xf6, 0x5a, 0x99, 0x59, 0x71, 0xf7, 0x4f, 0x35, 0xe8, 0xbc, 0x48, 0xd2,
0x24, 0x4a, 0x4e, 0xe6, 0x6f, 0xf7, 0xe9, 0x0f, 0x60, 0x50, 0xea, 0xe5, 0x15, 0x10, 0x6e, 0x2d,
0x5c, 0x86, 0x22, 0xd8, 0xde, 0x66, 0x58, 0xf9, 0xe6, 0xee, 0x16, 0x0c, 0xcc, 0x5c, 0x5a, 0x94,
0x64, 0xf7, 0xf7, 0x0e, 0x90, 0x32, 0xd5, 0xd4, 0xca, 0x1f, 0x43, 0x57, 0x18, 0xec, 0xd4, 0x7e,
0x66, 0x34, 0x2f, 0xdf, 0xbd, 0x32, 0xb6, 0x5e, 0x47, 0x94, 0x91, 0xfe, 0x1e, 0x6c, 0x2f, 0xbd,
0xaf, 0xfd, 0xe9, 0x91, 0x41, 0x78, 0xb0, 0xf0, 0xc4, 0xfe, 0xe2, 0xc8, 0xfd, 0x14, 0x6e, 0xea,
0xe1, 0xd0, 0xd6, 0x71, 0x5b, 0x5f, 0x97, 0xa6, 0xbc, 0x6e, 0x31, 0xe5, 0xb9, 0xff, 0x75, 0x60,
0x67, 0x51, 0xcd, 0xf8, 0x7f, 0x95, 0x1e, 0xa1, 0x40, 0x4c, 0xbd, 0x29, 0xcf, 0xab, 0x7a, 0x4c,
0xfc, 0x64, 0x69, 0x5e, 0x5d, 0xb4, 0xbd, 0x67, 0xeb, 0x50, 0x31, 0xb2, 0xf6, 0x79, 0x95, 0xc0,
0x47, 0x14, 0x06, 0x4b, 0x62, 0x72, 0xaa, 0xb7, 0xfb, 0x1a, 0x9f, 0x36, 0x8c, 0xe2, 0x37, 0x18,
0x58, 0xef, 0xff, 0x7b, 0x0d, 0x36, 0x26, 0x48, 0x5f, 0x21, 0x86, 0xe4, 0x10, 0xba, 0x13, 0x8c,
0xc3, 0xe2, 0xbf, 0xdf, 0x76, 0x49, 0x39, 0xa7, 0x8e, 0xbe, 0xb5, 0x8a, 0x9a, 0xf7, 0xa6, 0x1b,
0xbb, 0xce, 0xc7, 0x0e, 0x79, 0x06, 0xdd, 0xc7, 0x88, 0xe9, 0x7e, 0x12, 0xc7, 0x18, 0x08, 0x0c,
0xc9, 0x7b, 0xe5, 0x0e, 0xb9, 0xfc, 0x04, 0x1a, 0xdd, 0x5a, 0x2a, 0xd4, 0xd6, 0x5b, 0x63, 0xf1,
0x39, 0x74, 0xca, 0x93, 0x7f, 0xc5, 0xe0, 0x8a, 0x77, 0xca, 0xe8, 0xce, 0x35, 0x4f, 0x06, 0xf7,
0x06, 0xf9, 0x0c, 0xd6, 0xf5, 0x28, 0x4a, 0x86, 0x25, 0xe1, 0xca, 0xac, 0x5d, 0xf1, 0xab, 0x3a,
0xb7, 0xba, 0x37, 0xc8, 0x63, 0x80, 0x62, 0x98, 0x23, 0x65, 0x5c, 0x96, 0xa6, 0xc9, 0xd1, 0xed,
0x4b, 0xb8, 0xb9, 0xb1, 0x5f, 0x40, 0xaf, 0x3a, 0x72, 0x90, 0xf1, 0xca, 0xa9, 0xa2, 0x94, 0x77,
0xa3, 0xbb, 0x57, 0x48, 0xe4, 0x86, 0x7f, 0x05, 0xfd, 0xc5, 0x49, 0x82, 0xb8, 0x2b, 0x15, 0x2b,
0x53, 0xc9, 0xe8, 0xfd, 0x2b, 0x65, 0xca, 0x20, 0x14, 0xa9, 0x5f, 0x01, 0x61, 0xa9, 0x4e, 0x54,
0x40, 0x58, 0xae, 0x17, 0x1a, 0x84, 0x6a, 0xbe, 0x54, 0x40, 0x58, 0x99, 0xdd, 0x15, 0x10, 0x56,
0x27, 0x9b, 0x7b, 0xe3, 0x68, 0x5d, 0xfd, 0xe2, 0xfe, 0xe4, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff,
0x76, 0xec, 0xe7, 0x98, 0xf2, 0x16, 0x00, 0x00,
}

5
weed/server/filer_server.go

@ -87,7 +87,10 @@ func NewFilerServer(defaultMux, readonlyMux *http.ServeMux, option *FilerOption)
readonlyMux.HandleFunc("/", fs.readonlyFilerHandler)
}
stats.StartPushingMetric("filer", stats.SourceName(option.Port), stats.FilerGather, option.MetricsAddress, option.MetricsIntervalSec)
go stats.LoopPushingMetric("filer", stats.SourceName(option.Port), stats.FilerGather,
func() (addr string, intervalSeconds int) {
return option.MetricsAddress, option.MetricsIntervalSec
})
return fs, nil
}

4
weed/server/master_grpc_server.go

@ -156,7 +156,9 @@ func (ms *MasterServer) SendHeartbeat(stream master_pb.Seaweed_SendHeartbeatServ
return err
}
if err := stream.Send(&master_pb.HeartbeatResponse{
Leader: newLeader,
Leader: newLeader,
MetricsAddress: ms.metricsAddress,
MetricsIntervalSeconds: uint32(ms.metricsIntervalSec),
}); err != nil {
return err
}

6
weed/server/master_server.go

@ -34,6 +34,8 @@ type MasterServer struct {
defaultReplicaPlacement string
garbageThreshold float64
guard *security.Guard
metricsAddress string
metricsIntervalSec int
Topo *topology.Topology
vg *topology.VolumeGrowth
@ -56,6 +58,8 @@ func NewMasterServer(r *mux.Router, port int, metaFolder string,
garbageThreshold float64,
whiteList []string,
disableHttp bool,
metricsAddress string,
metricsIntervalSec int,
) *MasterServer {
v := viper.GetViper()
@ -80,6 +84,8 @@ func NewMasterServer(r *mux.Router, port int, metaFolder string,
garbageThreshold: garbageThreshold,
clientChans: make(map[string]chan *master_pb.VolumeLocation),
grpcDialOpiton: security.LoadClientTLS(v.Sub("grpc"), "master"),
metricsAddress: metricsAddress,
metricsIntervalSec: metricsIntervalSec,
}
ms.bounedLeaderChan = make(chan int, 16)
seq := sequence.NewMemorySequencer()

4
weed/server/volume_grpc_client_to_master.go

@ -86,6 +86,10 @@ func (vs *VolumeServer) doHeartbeat(ctx context.Context, masterNode, masterGrpcA
doneChan <- nil
return
}
if in.GetMetricsAddress() != "" && vs.MetricsAddress != in.GetMetricsAddress() {
vs.MetricsAddress = in.GetMetricsAddress()
vs.MetricsIntervalSec = int(in.GetMetricsIntervalSeconds())
}
}
}()

7
weed/server/volume_server.go

@ -41,8 +41,6 @@ func NewVolumeServer(adminMux, publicMux *http.ServeMux, ip string,
fixJpgOrientation bool,
readRedirect bool,
compactionMBPerSecond int,
metricsAddress string,
metricsIntervalSec int,
) *VolumeServer {
v := viper.GetViper()
@ -88,7 +86,10 @@ func NewVolumeServer(adminMux, publicMux *http.ServeMux, ip string,
go vs.heartbeat()
hostAddress := fmt.Sprintf("%s:%d", ip, port)
stats.StartPushingMetric("volumeServer", hostAddress, stats.VolumeServerGather, metricsAddress, metricsIntervalSec)
go stats.LoopPushingMetric("volumeServer", hostAddress, stats.VolumeServerGather,
func() (addr string, intervalSeconds int) {
return vs.MetricsAddress, vs.MetricsIntervalSec
})
return vs
}

30
weed/stats/metrics.go

@ -86,25 +86,29 @@ func init() {
}
func StartPushingMetric(name, instance string, gatherer *prometheus.Registry, addr string, intervalSeconds int) {
if intervalSeconds == 0 || addr == "" {
glog.V(0).Info("disable metrics reporting")
return
}
glog.V(0).Infof("push metrics to %s every %d seconds", addr, intervalSeconds)
go loopPushMetrics(name, instance, gatherer, addr, intervalSeconds)
}
func loopPushMetrics(name, instance string, gatherer *prometheus.Registry, addr string, intervalSeconds int) {
func LoopPushingMetric(name, instance string, gatherer *prometheus.Registry, fnGetMetricsDest func() (addr string, intervalSeconds int)) {
addr, intervalSeconds := fnGetMetricsDest()
pusher := push.New(addr, name).Gatherer(gatherer).Grouping("instance", instance)
currentAddr := addr
for {
err := pusher.Push()
if err != nil {
glog.V(0).Infof("could not push metrics to prometheus push gateway %s: %v", addr, err)
if currentAddr != "" {
err := pusher.Push()
if err != nil {
glog.V(0).Infof("could not push metrics to prometheus push gateway %s: %v", addr, err)
}
}
if intervalSeconds <= 0 {
intervalSeconds = 15
}
time.Sleep(time.Duration(intervalSeconds) * time.Second)
addr, intervalSeconds = fnGetMetricsDest()
if currentAddr != addr {
pusher = push.New(addr, name).Gatherer(gatherer).Grouping("instance", instance)
currentAddr = addr
}
}
}

Loading…
Cancel
Save