in hub/hub.go [155:194]
func (c *MetricHub) ReceiveGRPC(families []*dto.MetricFamily) {
t0 := time.Now()
c.Lock()
defer c.Unlock()
newDatapoints := 0
for _, fam := range families {
newDatapoints += len(fam.Metric)
}
// Check if new datapoints will exceed the specified limit
if c.limit > 0 {
if c.stats.currentCountDatapoints+newDatapoints > c.limit {
errString := fmt.Sprintf("Not accepting push of size %d. Would overfill hub limit of %d. Current hub size: %d\n", newDatapoints, c.limit, c.stats.currentCountDatapoints)
glog.Error(errString)
return
}
}
for _, fam := range families {
if families, ok := c.metricFamiliesByName[fam.GetName()]; ok {
families.addMetrics(fam.Metric)
} else {
c.metricFamiliesByName[fam.GetName()] = newFamilyAndMetrics(fam)
}
}
grpcReceiveTime.Set(time.Since(t0).Seconds())
log.Printf("GRPC Time: %v\n", time.Since(t0))
log.Printf("GRPC Time(seconds): %f\n", time.Since(t0).Seconds())
grpcReceiveSizeFam.Set(float64(len(families)))
grpcReceiveSizeDP.Set(float64(newDatapoints))
c.stats.lastGRPCReceiveTime = time.Now().Unix()
c.stats.lastGRPCReceiveNumFamilies = len(families)
c.stats.lastGRPCReceiveSize = binary.Size(families)
c.stats.currentCountDatapoints += newDatapoints
}