Beispiel #1
0
// 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
}
Beispiel #2
0
// 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
}