Review fixes

This commit is contained in:
Dale Glass 2020-05-17 18:38:37 +02:00
parent bc40bc5e52
commit da5e4d3cfc
2 changed files with 84 additions and 88 deletions

View file

@ -3061,7 +3061,7 @@ void DomainServer::initializeExporter()
if (isExporterEnabled && !_httpExporterManager) {
qCInfo(domain_server) << "Starting Prometheus exporter on port " << exporterPort;
_httpExporterManager = new HTTPManager(QHostAddress::Any, static_cast<quint16>(exporterPort), QString("%1/resources/prometheus_exporter/").arg(QCoreApplication::applicationDirPath()), &_exporter);
_httpExporterManager = new HTTPManager(QHostAddress::Any, (quint16)exporterPort, QString("%1/resources/prometheus_exporter/").arg(QCoreApplication::applicationDirPath()), &_exporter);
}
}

View file

@ -11,7 +11,6 @@
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
// TODO:
//
// Look into the data provided by OctreeServer::handleHTTPRequest in assignment-client/src/octree/OctreeServer.cpp
@ -33,9 +32,7 @@
#include "HTTPConnection.h"
#include "DomainServerNodeData.h"
Q_LOGGING_CATEGORY(domain_server_exporter, "hifi.domain_server.exporter")
Q_LOGGING_CATEGORY(domain_server_exporter, "hifi.domain_server.prometheus_exporter")
static const QMap<QString, DomainServerExporter::MetricType> TYPE_MAP {
{ "asset_server_assignment_stats_num_queued_check_ins" , DomainServerExporter::MetricType::Gauge },
@ -265,14 +262,10 @@ static const QSet<QString> BLACKLIST = {
"messages_mixer_messages_username" // Username
};
DomainServerExporter::DomainServerExporter()
{
DomainServerExporter::DomainServerExporter() {
}
bool DomainServerExporter::handleHTTPRequest(HTTPConnection *connection, const QUrl &url, bool skipSubHandler)
{
bool DomainServerExporter::handleHTTPRequest(HTTPConnection* connection, const QUrl& url, bool skipSubHandler) {
const QString URI_METRICS = "/metrics";
const QString EXPORTER_MIME_TYPE = "text/plain";
@ -283,9 +276,7 @@ bool DomainServerExporter::handleHTTPRequest(HTTPConnection *connection, const Q
QString output = "";
QTextStream out_stream(&output);
nodeList->eachNode([this, &out_stream](const SharedNodePointer& node){
generateMetricsForNode(out_stream, node);
});
nodeList->eachNode([this, &out_stream](const SharedNodePointer& node) { generateMetricsForNode(out_stream, node); });
connection->respond(HTTPConnection::StatusCode200, output.toUtf8(), qPrintable(EXPORTER_MIME_TYPE));
return true;
@ -294,8 +285,7 @@ bool DomainServerExporter::handleHTTPRequest(HTTPConnection *connection, const Q
return false;
}
QString DomainServerExporter::escapeName(const QString &name)
{
QString DomainServerExporter::escapeName(const QString& name) {
QRegularExpression invalid_characters("[^A-Za-z0-9_]");
QString ret = name;
@ -329,13 +319,11 @@ QString DomainServerExporter::escapeName(const QString &name)
return ret;
}
void DomainServerExporter::generateMetricsForNode( QTextStream &stream, const SharedNodePointer &node )
{
void DomainServerExporter::generateMetricsForNode(QTextStream& stream, const SharedNodePointer& node) {
QString ret = "";
QJsonObject statsObject = static_cast<DomainServerNodeData*>(node->getLinkedData())->getStatsJSONObject();
QString node_type = NodeType::getNodeTypeName(static_cast<NodeType_t>(node->getType()));
stream << "\n\n\n";
stream << "###############################################################\n";
stream << "# " << node_type << "\n";
@ -345,11 +333,13 @@ void DomainServerExporter::generateMetricsForNode( QTextStream &stream, const Sh
QJsonDocument doc(statsObject);
ret.append(doc.toJson());
}
void DomainServerExporter::generateMetricsFromJson(QTextStream &stream, QString original_path, QString path, QHash<QString,QString> labels, const QJsonObject &obj)
{
void DomainServerExporter::generateMetricsFromJson(QTextStream& stream,
QString original_path,
QString path,
QHash<QString, QString> labels,
const QJsonObject& obj) {
for (auto iter = obj.constBegin(); iter != obj.constEnd(); ++iter) {
auto key = escapeName(iter.key());
auto val = iter.value();
@ -360,13 +350,13 @@ void DomainServerExporter::generateMetricsFromJson(QTextStream &stream, QString
QUuid possible_uuid = QUuid::fromString(iter.key());
if (possible_uuid.isNull()) {
generateMetricsFromJson(stream, original_path + " -> " + iter.key(), path + "_" + key, labels, iter.value().toObject());
generateMetricsFromJson(stream, original_path + " -> " + iter.key(), path + "_" + key, labels,
iter.value().toObject());
} else {
labels.insert("uuid", possible_uuid.toString(QUuid::WithoutBraces));
generateMetricsFromJson(stream, original_path, path, labels, iter.value().toObject());
}
continue;
}
@ -384,10 +374,10 @@ void DomainServerExporter::generateMetricsFromJson(QTextStream &stream, QString
converted = tmp.toDouble(&conversion_ok);
if (!conversion_ok) {
qCWarning(domain_server_exporter) << "Failed to convert value of " << orig_metric_name << " (" << metric_name << ") to double: " << tmp << "'";
qCWarning(domain_server_exporter) << "Failed to convert value of " << orig_metric_name << " (" << metric_name
<< ") to double: " << tmp << "'";
continue;
}
}
stream << QString("\n# HELP %1 %2 -> %3\n").arg(metric_name).arg(original_path).arg(iter.key());
@ -396,19 +386,25 @@ void DomainServerExporter::generateMetricsFromJson(QTextStream &stream, QString
stream << "# TYPE " << metric_name << " ";
switch (TYPE_MAP[metric_name]) {
case DomainServerExporter::MetricType::Untyped:
stream << "untyped"; break;
stream << "untyped";
break;
case DomainServerExporter::MetricType::Counter:
stream << "counter"; break;
stream << "counter";
break;
case DomainServerExporter::MetricType::Gauge:
stream << "gauge"; break;
stream << "gauge";
break;
case DomainServerExporter::MetricType::Histogram:
stream << "histogram"; break;
stream << "histogram";
break;
case DomainServerExporter::MetricType::Summary:
stream << "summary"; break;
stream << "summary";
break;
}
stream << "\n";
} else {
qCWarning(domain_server_exporter) << "Type for metric " << orig_metric_name << " (" << metric_name << ") not known.";
qCWarning(domain_server_exporter)
<< "Type for metric " << orig_metric_name << " (" << metric_name << ") not known.";
}
stream << path << "_" << key;
@ -447,10 +443,10 @@ void DomainServerExporter::generateMetricsFromJson(QTextStream &stream, QString
// Converted above
stream << converted;
} else {
qCWarning(domain_server_exporter) << "Can't convert metric " << orig_metric_name << "(" << metric_name << ") with value " << val;
qCWarning(domain_server_exporter)
<< "Can't convert metric " << orig_metric_name << "(" << metric_name << ") with value " << val;
}
stream << "\n";
}
}