Skip to content

Commit

Permalink
Correct escaping of metric and tag names for OpenTSDB perfdata plugin
Browse files Browse the repository at this point in the history
fixes #9665
  • Loading branch information
Tobias von der Krone authored and gunnarbeutner committed Jul 20, 2015
1 parent 4ebbceb commit 80d0d7d
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions lib/perfdata/opentsdbwriter.cpp
Expand Up @@ -107,16 +107,16 @@ void OpenTsdbWriter::CheckResultHandler(const Checkable::Ptr& checkable, const C
else
host = static_pointer_cast<Host>(checkable);

String hostName = host->GetName();

String metric;
std::map<String, String> 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 {
Expand All @@ -135,8 +135,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";
}
Expand Down Expand Up @@ -170,8 +170,7 @@ void OpenTsdbWriter::SendPerfdata(const String& metric, const std::map<String, S
}
}

String escaped_key = pdv->GetLabel();
EscapeMetric(escaped_key);
String escaped_key = EscapeMetric(pdv->GetLabel());
boost::algorithm::replace_all(escaped_key, "::", ".");

SendMetric(metric + "." + escaped_key, tags, pdv->GetValue());
Expand Down

0 comments on commit 80d0d7d

Please sign in to comment.