Skip to content

Commit 4f6b1d2

Browse files
Logging
1 parent 302ef88 commit 4f6b1d2

File tree

4 files changed

+55
-29
lines changed

4 files changed

+55
-29
lines changed

src/datadog/telemetry/telemetry.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,18 +105,19 @@ void error(std::string message, std::string stacktrace) {
105105

106106
namespace counter {
107107
void increment(const Counter& counter) {
108-
std::visit(
109-
details::Overload{
110-
[&](Telemetry& telemetry) { telemetry.increment_counter(counter); },
111-
[](auto&&) {},
112-
},
113-
instance());
108+
std::visit(details::Overload{
109+
[&](Telemetry& telemetry) {
110+
telemetry.increment_counter(counter, nullptr);
111+
},
112+
[](auto&&) {},
113+
},
114+
instance());
114115
}
115116

116117
void increment(const Counter& counter, const std::vector<std::string>& tags) {
117118
std::visit(details::Overload{
118119
[&](Telemetry& telemetry) {
119-
telemetry.increment_counter(counter, tags);
120+
telemetry.increment_counter(counter, tags, nullptr);
120121
},
121122
[](auto&&) {},
122123
},

src/datadog/telemetry/telemetry_impl.cpp

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,13 @@ Telemetry::Telemetry(FinalizedConfiguration config,
208208
host_info_(get_host_info()) {
209209
// Callback for successful telemetry HTTP requests, to examine HTTP
210210
// status.
211+
logger_->log_error("Constructing telemetry object");
211212
send_telemetry("app-started", app_started());
213+
logger_->log_error("Draining from constructor");
212214
http_client_->drain(clock_().tick + 2s);
215+
logger_->log_error("Drain called");
213216
schedule_tasks();
217+
logger_->log_error("Finished constructor");
214218
}
215219

216220
void Telemetry::schedule_tasks() {
@@ -226,16 +230,21 @@ void Telemetry::schedule_tasks() {
226230
}
227231

228232
Telemetry::~Telemetry() {
233+
logger_->log_error("Destructor called");
229234
shutting_down_.store(true, std::memory_order_release);
230235
if (!tasks_.empty()) {
236+
logger_->log_error("Tasks wasnt empty");
231237
cancel_tasks(tasks_);
232238
capture_metrics();
233239
// The app-closing message is bundled with a message containing the
234240
// final metric values.
241+
logger_->log_error("Sending closing telemetry");
235242
send_telemetry("app-closing", app_closing());
243+
logger_->log_error("Draining closing telemetry");
236244
http_client_->drain(clock_().tick + 2s);
237245
}
238246
http_client_.reset();
247+
logger_->log_error("Exiting destructor");
239248
}
240249

241250
Telemetry::Telemetry(Telemetry&& rhs)
@@ -284,23 +293,24 @@ Telemetry& Telemetry::operator=(Telemetry&& rhs) {
284293

285294
void Telemetry::log_error(std::string message) {
286295
if (!config_.report_logs) return;
287-
increment_counter(internal_metrics::logs_created, {"level:error"});
296+
increment_counter(internal_metrics::logs_created, {"level:error"}, nullptr);
288297
log(std::move(message), LogLevel::ERROR);
289298
}
290299

291300
void Telemetry::log_error(std::string message, std::string stacktrace) {
292301
if (!config_.report_logs) return;
293-
increment_counter(internal_metrics::logs_created, {"level:error"});
302+
increment_counter(internal_metrics::logs_created, {"level:error"}, nullptr);
294303
log(std::move(message), LogLevel::ERROR, stacktrace);
295304
}
296305

297306
void Telemetry::log_warning(std::string message) {
298307
if (!config_.report_logs) return;
299-
increment_counter(internal_metrics::logs_created, {"level:warning"});
308+
increment_counter(internal_metrics::logs_created, {"level:warning"}, nullptr);
300309
log(std::move(message), LogLevel::WARNING);
301310
}
302311

303312
void Telemetry::send_telemetry(StringView request_type, std::string payload) {
313+
logger_->log_error("Sending telemetry");
304314
auto set_telemetry_headers = [request_type, payload_size = payload.size(),
305315
debug_enabled = config_.debug,
306316
tracer_signature =
@@ -327,19 +337,19 @@ void Telemetry::send_telemetry(StringView request_type, std::string payload) {
327337
std::string response_body) {
328338
if (response_status >= 500) {
329339
increment_counter(internal_metrics::responses,
330-
{"status_code:5xx", "endpoint:agent"});
340+
{"status_code:5xx", "endpoint:agent"}, logger_);
331341
} else if (response_status >= 400) {
332342
increment_counter(internal_metrics::responses,
333-
{"status_code:4xx", "endpoint:agent"});
343+
{"status_code:4xx", "endpoint:agent"}, logger_);
334344
} else if (response_status >= 300) {
335345
increment_counter(internal_metrics::responses,
336-
{"status_code:3xx", "endpoint:agent"});
346+
{"status_code:3xx", "endpoint:agent"}, logger_);
337347
} else if (response_status >= 200) {
338348
increment_counter(internal_metrics::responses,
339-
{"status_code:2xx", "endpoint:agent"});
349+
{"status_code:2xx", "endpoint:agent"}, logger_);
340350
} else if (response_status >= 100) {
341351
increment_counter(internal_metrics::responses,
342-
{"status_code:1xx", "endpoint:agent"});
352+
{"status_code:1xx", "endpoint:agent"}, logger_);
343353
}
344354

345355
if (response_status < 200 || response_status >= 300) {
@@ -353,13 +363,14 @@ void Telemetry::send_telemetry(StringView request_type, std::string payload) {
353363

354364
// Callback for unsuccessful telemetry HTTP requests.
355365
auto telemetry_on_error = [this, logger = logger_](Error error) {
366+
logger->log_error("Telemetry on error called");
356367
increment_counter(internal_metrics::errors,
357-
{"type:network", "endpoint:agent"});
368+
{"type:network", "endpoint:agent"}, logger);
358369
logger->log_error(error.with_prefix(
359370
"Error occurred during HTTP request for telemetry: "));
360371
};
361372

362-
increment_counter(internal_metrics::requests, {"endpoint:agent"});
373+
increment_counter(internal_metrics::requests, {"endpoint:agent"}, logger_);
363374
add_datapoint(internal_metrics::bytes_sent, {"endpoint:agent"},
364375
payload.size());
365376

@@ -368,8 +379,9 @@ void Telemetry::send_telemetry(StringView request_type, std::string payload) {
368379
std::move(payload), std::move(telemetry_on_response),
369380
std::move(telemetry_on_error), clock_().tick + 5s);
370381
if (auto* error = post_result.if_error()) {
382+
logger_->log_error("Error posting");
371383
increment_counter(internal_metrics::errors,
372-
{"type:network", "endpoint:agent"});
384+
{"type:network", "endpoint:agent"}, logger_);
373385
logger_->log_error(
374386
error->with_prefix("Unexpected error submitting telemetry event: "));
375387
}
@@ -749,16 +761,27 @@ void Telemetry::log(std::string message, telemetry::LogLevel level,
749761
telemetry::LogMessage{std::move(message), level, stacktrace, timestamp});
750762
}
751763

752-
void Telemetry::increment_counter(const Counter& id) {
753-
increment_counter(id, {});
764+
void Telemetry::increment_counter(const Counter& id,
765+
std::shared_ptr<tracing::Logger> logger) {
766+
increment_counter(id, {}, logger);
754767
}
755768

756769
void Telemetry::increment_counter(const Counter& id,
757-
const std::vector<std::string>& tags) {
770+
const std::vector<std::string>& tags,
771+
std::shared_ptr<tracing::Logger> logger) {
772+
if (logger != nullptr) {
773+
logger->log_error("increment_counter called");
774+
}
758775
std::lock_guard l{counter_mutex_};
759776
if (shutting_down_.load(std::memory_order_acquire)) {
777+
if (logger != nullptr) {
778+
logger->log_error("was derstroying, returning");
779+
}
760780
return;
761781
}
782+
if (logger != nullptr) {
783+
logger->log_error("was not destroying, changing variable");
784+
}
762785
counters_[{id, tags}] += 1;
763786
}
764787

src/datadog/telemetry/telemetry_impl.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,11 @@ class Telemetry final {
110110
const std::vector<tracing::ConfigMetadata>& new_configuration);
111111

112112
/// Counter
113-
void increment_counter(const Counter& counter);
114113
void increment_counter(const Counter& counter,
115-
const std::vector<std::string>& tags);
114+
std::shared_ptr<tracing::Logger> logger);
115+
void increment_counter(const Counter& counter,
116+
const std::vector<std::string>& tags,
117+
std::shared_ptr<tracing::Logger> logger);
116118
void decrement_counter(const Counter& counter);
117119
void decrement_counter(const Counter& counter,
118120
const std::vector<std::string>& tags);

test/telemetry/test_telemetry.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -344,13 +344,13 @@ TELEMETRY_IMPLEMENTATION_TEST("Tracer telemetry API") {
344344
/// - can't decrement below zero. -> is that a telemetry requirements?
345345
/// - rates or counter reset to zero after capture.
346346
const Counter my_counter{"my_counter", "counter-test", true};
347-
telemetry.increment_counter(my_counter); // = 1
348-
telemetry.increment_counter(my_counter); // = 2
349-
telemetry.increment_counter(my_counter); // = 3
350-
telemetry.decrement_counter(my_counter); // = 2
347+
telemetry.increment_counter(my_counter, nullptr); // = 1
348+
telemetry.increment_counter(my_counter, nullptr); // = 2
349+
telemetry.increment_counter(my_counter, nullptr); // = 3
350+
telemetry.decrement_counter(my_counter); // = 2
351351
scheduler->trigger_metrics_capture();
352352

353-
telemetry.increment_counter(my_counter); // = 1
353+
telemetry.increment_counter(my_counter, nullptr); // = 1
354354
scheduler->trigger_metrics_capture();
355355

356356
telemetry.set_counter(my_counter, 42);
@@ -626,7 +626,7 @@ TELEMETRY_IMPLEMENTATION_TEST("Tracer telemetry API") {
626626
{
627627
Telemetry tmp_telemetry{*finalize_config(), logger, client,
628628
scheduler, *url, clock};
629-
tmp_telemetry.increment_counter(my_counter); // = 1
629+
tmp_telemetry.increment_counter(my_counter, nullptr); // = 1
630630
tmp_telemetry.add_datapoint(response_time, 128);
631631
tmp_telemetry.set_rate(rps, 1000);
632632
client->clear();

0 commit comments

Comments
 (0)