ClickHouse/base/daemon/GraphiteWriter.cpp
Ivan b7ef5a699c
Move FastMemcpy to contribs (#9219)
* Get rid of non-existent vectorclass
* Move FastMemcpy to contribs
* Restore comments
* Disable FastMemcpy on non-Linux
* Fix cmake file
* Don't build FastMemcpy for ARM64
* Replace FastMemcpy submodule with its contents
* Fix cmake file
* Move widechar_width to contrib/
* Move sumbur to contrib/
* Move consistent-hashing to contrib/
* Fix UBSan tests
2020-03-13 01:26:16 +03:00

48 lines
1.5 KiB
C++

#include <daemon/GraphiteWriter.h>
#include <daemon/BaseDaemon.h>
#include <Poco/Util/LayeredConfiguration.h>
#include <Poco/Util/Application.h>
#include <Common/getFQDNOrHostName.h>
#include <mutex>
#include <iomanip>
GraphiteWriter::GraphiteWriter(const std::string & config_name, const std::string & sub_path)
{
Poco::Util::LayeredConfiguration & config = Poco::Util::Application::instance().config();
port = config.getInt(config_name + ".port", 42000);
host = config.getString(config_name + ".host", "localhost");
timeout = config.getDouble(config_name + ".timeout", 0.1);
root_path = config.getString(config_name + ".root_path", "one_min");
if (config.getBool(config_name + ".hostname_in_path", true))
{
if (!root_path.empty())
root_path += ".";
std::string hostname_in_path = getFQDNOrHostName();
/// Replace dots to underscores so that Graphite does not interpret them as path separators
std::replace(std::begin(hostname_in_path), std::end(hostname_in_path), '.', '_');
root_path += hostname_in_path;
}
if (!sub_path.empty())
{
if (!root_path.empty())
root_path += ".";
root_path += sub_path;
}
}
std::string GraphiteWriter::getPerServerPath(const std::string & server_name, const std::string & root_path)
{
std::string path = root_path + "." + server_name;
std::replace(path.begin() + root_path.size() + 1, path.end(), '.', '_');
return path;
}