// timeSeriesToPoint transfers the contents holding in the given pointer of sink_api.Timeseries // into the instance of opentsdbclient.DataPoint func (tsdbSink *openTSDBSink) metricToPoint(name string, value core.MetricValue, timestamp time.Time, labels map[string]string) opentsdbclient.DataPoint { seriesName := strings.Replace(toValidOpenTsdbName(name), "/", "_", -1) if value.MetricType.String() != "" { seriesName = fmt.Sprintf("%s_%s", seriesName, value.MetricType.String()) } datapoint := opentsdbclient.DataPoint{ Metric: seriesName, Tags: make(map[string]string, len(labels)), Timestamp: timestamp.Unix(), } if value.ValueType == core.ValueInt64 { datapoint.Value = value.IntValue } else { datapoint.Value = value.FloatValue } for key, value := range labels { key = toValidOpenTsdbName(key) value = toValidOpenTsdbName(value) if value != "" { datapoint.Tags[key] = value } } tsdbSink.secureTags(&datapoint) return datapoint }
// eventToPoint transfers the contents holding in the given pointer of sink_api.Event // into the instance of opentsdbclient.DataPoint func (tsdbSink *openTSDBSink) eventToPoint(event *kube_api.Event) *opentsdbclient.DataPoint { datapoint := opentsdbclient.DataPoint{ Metric: eventMetricName, Tags: map[string]string{ eventUID: string(event.UID), eventHost: event.Source.Host, }, Timestamp: event.LastTimestamp.Time.Unix(), } if valueStr, err := getEventValue(event); err == nil { datapoint.Value = valueStr } else { glog.Errorf("error occurs when trying to get event info - %v", err) return nil } if event.InvolvedObject.Kind == "Pod" { datapoint.Tags[eventPodID] = string(event.InvolvedObject.UID) datapoint.Tags[eventPodName] = event.InvolvedObject.Name } return &datapoint }