func parseMetric(buf []byte, schemas persister.WhisperSchemas) *schema.MetricData { msg := strings.TrimSpace(string(buf)) elements := strings.Fields(msg) if len(elements) != 3 { log.Error("RouteGrafanaNet: %q error: need 3 fields", msg) return nil } name := elements[0] val, err := strconv.ParseFloat(elements[1], 64) if err != nil { log.Error("RouteGrafanaNet: %q error: %s", msg, err.Error()) return nil } timestamp, err := strconv.ParseUint(elements[2], 10, 32) if err != nil { log.Error("RouteGrafanaNet: %q error: %s", msg, err.Error()) return nil } s, ok := schemas.Match(name) if !ok { panic(fmt.Errorf("couldn't find a schema for %q - this is impossible since we asserted there was a default with patt .*", name)) } md := schema.MetricData{ Name: name, Metric: name, Interval: s.Retentions[0].SecondsPerPoint(), Value: val, Unit: "unknown", Time: int64(timestamp), Mtype: "gauge", Tags: []string{}, OrgId: 1, // the hosted tsdb service will adjust to the correct OrgId if using a regular key. orgid 1 is only retained with admin key. } return &md }
func parseMetric(buf []byte, schemas persister.WhisperSchemas) *schema.MetricData { msg := strings.TrimSpace(string(buf)) elements := strings.Fields(msg) if len(elements) != 3 { log.Error("RouteGrafanaNet: %q error: need 3 fields", str) return nil } name := elements[0] val, err := strconv.ParseFloat(elements[1], 64) if err != nil { log.Error("RouteGrafanaNet: %q error: %s", str, err.Error()) return nil } timestamp, err := strconv.ParseUint(elements[2], 10, 32) if err != nil { log.Error("RouteGrafanaNet: %q error: %s", str, err.Error()) return nil } s, ok := schemas.Match(name) if !ok { panic(fmt.Errorf("couldn't find a schema for %q - this is impossible since we asserted there was a default with patt .*", name)) } md := schema.MetricData{ Name: name, Interval: s.Retentions[0].SecondsPerPoint(), Value: val, Unit: "", Time: int64(timestamp), TargetType: "gauge", Tags: []string{}, } return &md }