From d4b31bbd0a2d97dbcd1c90b4fedef219161b3244 Mon Sep 17 00:00:00 2001 From: Tobias von der Krone Date: Fri, 17 Jul 2015 18:37:46 +0200 Subject: [PATCH] Correct escaping of metric and tag names for OpenTSDB perfdata plugin fixes #9665 --- lib/perfdata/opentsdbwriter.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/perfdata/opentsdbwriter.cpp b/lib/perfdata/opentsdbwriter.cpp index 20248af95..9d450a902 100644 --- a/lib/perfdata/opentsdbwriter.cpp +++ b/lib/perfdata/opentsdbwriter.cpp @@ -106,16 +106,16 @@ void OpenTsdbWriter::CheckResultHandler(const Checkable::Ptr& checkable, const C else host = static_pointer_cast(checkable); - String hostName = host->GetName(); - String metric; std::map tags; - tags["host"] = hostName; + + String escaped_hostName = EscapeMetric(host->GetName()); + tags["host"] = escaped_hostName; if (service) { String serviceName = service->GetShortName(); - EscapeMetric(serviceName); - metric = "icinga.service." + serviceName; + String escaped_serviceName = EscapeMetric(serviceName); + metric = "icinga.service." + escaped_serviceName; SendMetric(metric + ".state", tags, service->GetState()); } else { @@ -134,8 +134,8 @@ void OpenTsdbWriter::CheckResultHandler(const Checkable::Ptr& checkable, const C if (service) { tags["type"] = "service"; String serviceName = service->GetShortName(); - EscapeTag(serviceName); - tags["service"] = serviceName; + String escaped_serviceName = EscapeTag(serviceName); + tags["service"] = escaped_serviceName; } else { tags["type"] = "host"; } @@ -169,8 +169,7 @@ void OpenTsdbWriter::SendPerfdata(const String& metric, const std::mapGetLabel(); - EscapeMetric(escaped_key); + String escaped_key = EscapeMetric(pdv->GetLabel()); boost::algorithm::replace_all(escaped_key, "::", "."); SendMetric(metric + "." + escaped_key, tags, pdv->GetValue()); -- 2.40.0