#include "dnsdist-idstate.hh"
#include "dnsdist-doh-common.hh"
+#include "dnsdist-opentelemetry.hh"
#include "dnsdist-protobuf.hh"
#include "doh3.hh"
#include "doq.hh"
}
}
- if (!ottraceLoggers.empty()) {
- pbBuf.clear();
- pdns::ProtoZero::Message minimalMsg{pbBuf};
- minimalMsg.setType(pdns::ProtoZero::Message::MessageType::DNSQueryType);
- minimalMsg.setOpenTelemetryData(OTData);
- minimalMsg.setOpenTelemetryTraceID(d_OTTracer->getTraceID());
- for (auto const& msg_logger : ottraceLoggers) {
- msg_logger->queueData(pbBuf);
- }
- }
+ pdns::trace::dnsdist::sendTracesToRemoteLoggers(d_OTTracer, ottraceLoggers);
}
catch (...) {
/* We don't want any uncaught exceptions in a dtor and
#include <vector>
#ifndef DISABLE_PROTOBUF
+#include "protozero.hh"
#include "protozero-trace.hh"
#endif
#endif
return std::nullopt;
}
+
+void sendTracesToRemoteLoggers(const std::shared_ptr<Tracer>& tracer, [[maybe_unused]] const std::vector<std::shared_ptr<RemoteLoggerInterface>>& remoteloggers)
+{
+ if (tracer == nullptr || remoteloggers.empty()) {
+ return;
+ }
+
+#ifndef DISABLE_PROTOBUF
+ static thread_local string pbBuf;
+ pbBuf.clear();
+ pdns::ProtoZero::Message minimalMsg{pbBuf};
+ minimalMsg.setType(pdns::ProtoZero::Message::MessageType::InternalType);
+ minimalMsg.setOpenTelemetryTraceID(tracer->getTraceID());
+ minimalMsg.setOpenTelemetryData(tracer->getOTProtobuf());
+ for (const auto& remotelogger : remoteloggers) {
+ remotelogger->queueData(pbBuf);
+ }
+#endif // DISABLE_PROTOBUF
+}
} // namespace pdns::trace::dnsdist
#include <optional>
#include "ednsoptions.hh"
+#include "remote_logger.hh"
#ifndef DISABLE_PROTOBUF
#include "protozero-trace.hh"
* @param spanName The name of the span
*/
std::optional<pdns::trace::dnsdist::Tracer::Closer> getCloserForInternalSpan([[maybe_unused]] std::shared_ptr<pdns::trace::dnsdist::Tracer>& tracer, [[maybe_unused]] const std::string& spanName);
+
+/*
+ * @brief sends the protobuf for tracer to remoteloggers
+ */
+void sendTracesToRemoteLoggers(const std::shared_ptr<Tracer>& tracer, const std::vector<std::shared_ptr<RemoteLoggerInterface>>& remoteloggers);
} // namespace pdns::trace::dnsdist
#ifndef DISABLE_PROTOBUF
if (tracer != nullptr) {
maint_closer = std::nullopt; // set the stop time by destructing the Closer
- static thread_local string pbBuf;
- pbBuf.clear();
- pdns::ProtoZero::Message minimalMsg{pbBuf};
- minimalMsg.setType(pdns::ProtoZero::Message::MessageType::InternalType);
- minimalMsg.setOpenTelemetryTraceID(tracer->getTraceID());
- minimalMsg.setOpenTelemetryData(tracer->getOTProtobuf());
- for (const auto& remotelogger : dnsdist::configuration::getCurrentRuntimeConfiguration().d_maintenanceRemoteLoggers) {
- remotelogger->queueData(pbBuf);
- }
+ pdns::trace::dnsdist::sendTracesToRemoteLoggers(tracer, dnsdist::configuration::getCurrentRuntimeConfiguration().d_maintenanceRemoteLoggers);
}
#endif
}