11#include " tracer_telemetry.h"
22
3- #include " json.hpp"
43#include " logger.h"
54#include " platform_util.h"
65#include " span_defaults.h"
@@ -52,51 +51,49 @@ TracerTelemetry::TracerTelemetry(
5251 }
5352}
5453
55- std::string TracerTelemetry::app_started (nlohmann::json&& tracer_config) {
54+ nlohmann::json TracerTelemetry::generate_telemetry_body (
55+ std::string request_type) {
5656 time_t tracer_time = std::chrono::duration_cast<std::chrono::seconds>(
5757 clock_ ().wall .time_since_epoch ())
5858 .count ();
59-
60- seq_id++;
61- auto payload =
62- nlohmann::json::object (
63- {
64- { " api_version " , " v2 " },
65- { " seq_id " , seq_id },
66- { " request_type " , " app-started " },
67- { " tracer_time " , tracer_time},
68- { " runtime_id " , span_defaults_->runtime_id },
69- { " debug " , debug_ },
70- { " application " ,
71- nlohmann::json::object ({
72- { " service_name " , span_defaults_-> service },
73- { " env " , span_defaults_-> environment },
74- { " tracer_version " , tracer_version_string},
75- { " language_name " , " cpp " },
76- {" language_version " , std::to_string (__cplusplus) },
59+ seq_id_++;
60+ return nlohmann::json::object ({
61+ { " api_version " , " v2 " },
62+ { " seq_id " , seq_id_},
63+ { " request_type " , request_type},
64+ { " tracer_time " , tracer_time },
65+ { " runtime_id " , span_defaults_-> runtime_id },
66+ { " debug " , debug_ },
67+ { " application " , nlohmann::json::object ({
68+ { " service_name " , span_defaults_->service },
69+ { " env " , span_defaults_-> environment },
70+ { " tracer_version " , tracer_version_string} ,
71+ { " language_name " , " cpp " },
72+ { " language_version " , std::to_string (__cplusplus) },
73+ }) },
74+ // TODO: host information (os, os_version, kernel, etc)
75+ { " host " , nlohmann::json::object ({
76+ {" hostname " , hostname_ },
7777 })},
78- // TODO: host information (os, os_version, kernel, etc)
79- {" host" , nlohmann::json::object ({
80- {" hostname" , hostname_},
81- })},
82- {" payload" ,
83- nlohmann::json::object ({
84- {" configuration" , nlohmann::json::array ({
85- // TODO: environment variables or
86- // finalized config details
87- })},
78+ });
79+ }
8880
89- })},
90- // TODO: Until we figure out "configuration", above, include a
91- // JSON dump of the tracer configuration as "additional_payload".
92- {" additional_payload" ,
93- nlohmann::json::array ({nlohmann::json::object ({
94- {" name" , " tracer_config_json" },
95- {" value" , tracer_config.dump ()},
96- })})},
97- })
98- .dump ();
99- return payload;
81+ std::string TracerTelemetry::app_started (nlohmann::json&& tracer_config) {
82+ auto telemetry_body = generate_telemetry_body (" app-started" );
83+ // TODO: environment variables or finalized config details
84+ telemetry_body[" payload" ] = nlohmann::json::object ({
85+ {" configuration" , nlohmann::json::array ({})},
86+
87+ });
88+ // TODO: Until we figure out "configuration", above, include a
89+ // JSON dump of the tracer configuration as "additional_payload".
90+ telemetry_body[" additional_payload" ] =
91+ nlohmann::json::array ({nlohmann::json::object ({
92+ {" name" , " tracer_config_json" },
93+ {" value" , tracer_config.dump ()},
94+ })});
95+ auto app_started_payload = telemetry_body.dump ();
96+ return app_started_payload;
10097}
10198
10299void TracerTelemetry::capture_metrics () {
@@ -113,9 +110,6 @@ void TracerTelemetry::capture_metrics() {
113110}
114111
115112std::string TracerTelemetry::heartbeat_and_telemetry () {
116- time_t tracer_time = std::chrono::duration_cast<std::chrono::seconds>(
117- clock_ ().wall .time_since_epoch ())
118- .count ();
119113 auto batch_payloads = nlohmann::json::array ();
120114
121115 auto heartbeat = nlohmann::json::object ({
@@ -151,38 +145,13 @@ std::string TracerTelemetry::heartbeat_and_telemetry() {
151145 batch_payloads.emplace_back (std::move (generate_metrics));
152146 }
153147
154- seq_id++;
155- auto payload =
156- nlohmann::json::object (
157- {
158- {" api_version" , " v2" },
159- {" seq_id" , seq_id},
160- {" request_type" , " message-batch" },
161- {" tracer_time" , tracer_time},
162- {" runtime_id" , span_defaults_->runtime_id },
163- {" debug" , debug_},
164- {" application" ,
165- nlohmann::json::object ({
166- {" service_name" , span_defaults_->service },
167- {" env" , span_defaults_->environment },
168- {" tracer_version" , tracer_version_string},
169- {" language_name" , " cpp" },
170- {" language_version" , std::to_string (__cplusplus)},
171- })},
172- // TODO: host information (hostname, os, os_version, kernel, etc)
173- {" host" , nlohmann::json::object ({
174- {" hostname" , hostname_},
175- })},
176- {" payload" , batch_payloads},
177- })
178- .dump ();
179- return payload;
148+ auto telemetry_body = generate_telemetry_body (" message-batch" );
149+ telemetry_body[" payload" ] = batch_payloads;
150+ auto message_batch_payload = telemetry_body.dump ();
151+ return message_batch_payload;
180152}
181153
182154std::string TracerTelemetry::app_closing () {
183- time_t tracer_time = std::chrono::duration_cast<std::chrono::seconds>(
184- clock_ ().wall .time_since_epoch ())
185- .count ();
186155 auto batch_payloads = nlohmann::json::array ();
187156
188157 auto app_closing = nlohmann::json::object ({
@@ -218,32 +187,10 @@ std::string TracerTelemetry::app_closing() {
218187 batch_payloads.emplace_back (std::move (generate_metrics));
219188 }
220189
221- seq_id++;
222- auto payload =
223- nlohmann::json::object (
224- {
225- {" api_version" , " v2" },
226- {" seq_id" , seq_id},
227- {" request_type" , " message-batch" },
228- {" tracer_time" , tracer_time},
229- {" runtime_id" , span_defaults_->runtime_id },
230- {" debug" , debug_},
231- {" application" ,
232- nlohmann::json::object ({
233- {" service_name" , span_defaults_->service },
234- {" env" , span_defaults_->environment },
235- {" tracer_version" , tracer_version_string},
236- {" language_name" , " cpp" },
237- {" language_version" , std::to_string (__cplusplus)},
238- })},
239- // TODO: host information (hostname, os, os_version, kernel, etc)
240- {" host" , nlohmann::json::object ({
241- {" hostname" , hostname_},
242- })},
243- {" payload" , batch_payloads},
244- })
245- .dump ();
246- return payload;
190+ auto telemetry_body = generate_telemetry_body (" message-batch" );
191+ telemetry_body[" payload" ] = batch_payloads;
192+ auto message_batch_payload = telemetry_body.dump ();
193+ return message_batch_payload;
247194}
248195
249196} // namespace tracing
0 commit comments