Ejemplo n.º 1
0
func (d *Datadog) convertToDatadog(incomingMetric metric.Metric) (datapoint datadogMetric) {
	dog := new(datadogMetric)
	dog.Metric = incomingMetric.Name
	dog.Points = makeDatadogPoints(incomingMetric)
	dog.MetricType = incomingMetric.MetricType
	if host, ok := incomingMetric.GetDimensionValue("host", d.DefaultDimensions()); ok {
		dog.Host = host
	} else {
		dog.Host = "unknown"
	}
	dog.Tags = d.serializedDimensions(incomingMetric)
	return *dog
}
Ejemplo n.º 2
0
func writeToHandlers(handlers []handler.Handler, metric metric.Metric) {
	for _, handler := range handlers {
		value, ok := metric.GetDimensionValue("collector")
		isBlackListed, _ := handler.IsCollectorBlackListed(value)
		if ok && isBlackListed {
			// This collector is black listed by
			// this handler. Therefore we are dropping this
			log.Debug("Not forwarding metrics from", value, "collector to", handler.Name(), "handler, since it has blacklisted this collector")
		} else {
			handler.Channel() <- metric
		}
	}
}
Ejemplo n.º 3
0
func canSendMetric(handler handler.Handler, metric metric.Metric) bool {
	// If the handler's whitelist is set, then only metrics from collectors in it will be emitted. If the same
	// collector is also in the blacklist, it will be skipped.
	// If the handler's whitelist is not set and its blacklist is not empty, only metrics from collectors not in
	// the blacklist will be emitted.
	value, _ := metric.GetDimensionValue("collector")
	isWhiteListed, _ := handler.IsCollectorWhiteListed(value)
	isBlackListed, _ := handler.IsCollectorBlackListed(value)

	// If the handler's whitelist is not nil and not empty, only the whitelisted collectors should be considered
	if handler.CollectorWhiteList() != nil && len(handler.CollectorWhiteList()) > 0 {
		if isWhiteListed && !isBlackListed {
			return true
		}
		return false
	}

	// If the handler's whitelist is nil, all collector except the ones in the blacklist are enabled
	if !isBlackListed {
		return true
	}
	return false
}