Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
Loading...
Searching...
No Matches
kcenon::thread::metrics::JsonBackend Class Reference

JSON format backend. More...

#include <metrics_backend.h>

Inheritance diagram for kcenon::thread::metrics::JsonBackend:
Inheritance graph
Collaboration diagram for kcenon::thread::metrics::JsonBackend:
Collaboration graph

Public Member Functions

 JsonBackend ()=default
 Default constructor.
 
 ~JsonBackend () override=default
 Destructor.
 
std::string name () const override
 Get the backend name.
 
std::string export_base (const BaseSnapshot &snapshot) const override
 Export base metrics snapshot.
 
std::string export_enhanced (const EnhancedSnapshot &snapshot) const override
 Export enhanced metrics snapshot.
 
void set_pretty (bool pretty)
 Enable or disable pretty printing.
 
- Public Member Functions inherited from kcenon::thread::metrics::MetricsBackend
virtual ~MetricsBackend ()=default
 Virtual destructor for proper cleanup.
 
virtual void set_prefix (const std::string &prefix)
 Set metric name prefix.
 
const std::string & prefix () const
 Get current metric name prefix.
 
virtual void add_label (const std::string &key, const std::string &value)
 Add a label to all exported metrics.
 
const std::map< std::string, std::string > & labels () const
 Get all configured labels.
 

Private Attributes

bool pretty_ {true}
 

Additional Inherited Members

- Protected Member Functions inherited from kcenon::thread::metrics::MetricsBackend
 MetricsBackend ()=default
 Default constructor.
 
- Protected Attributes inherited from kcenon::thread::metrics::MetricsBackend
std::string prefix_ {"thread_pool"}
 Metric name prefix.
 
std::map< std::string, std::string > labels_
 Labels to attach to all metrics.
 

Detailed Description

JSON format backend.

Exports metrics as JSON objects, suitable for REST APIs, logging systems, or web dashboards.

Output Format

{
"tasks": {
"submitted": 1234,
"executed": 1200,
"failed": 5
}
}

Definition at line 196 of file metrics_backend.h.

Constructor & Destructor Documentation

◆ JsonBackend()

kcenon::thread::metrics::JsonBackend::JsonBackend ( )
default

Default constructor.

◆ ~JsonBackend()

kcenon::thread::metrics::JsonBackend::~JsonBackend ( )
overridedefault

Destructor.

Member Function Documentation

◆ export_base()

std::string kcenon::thread::metrics::JsonBackend::export_base ( const BaseSnapshot & snapshot) const
nodiscardoverridevirtual

Export base metrics snapshot.

Parameters
snapshotThe base metrics snapshot to export.
Returns
Formatted string representation.

Implements kcenon::thread::metrics::MetricsBackend.

Definition at line 153 of file metrics_backend.cpp.

153 {
154 std::ostringstream oss;
155 oss << std::fixed << std::setprecision(2);
156
157 if (pretty_) {
158 oss << "{\n";
159 oss << " \"tasks\": {\n";
160 oss << " \"submitted\": " << snapshot.tasks_submitted << ",\n";
161 oss << " \"executed\": " << snapshot.tasks_executed << ",\n";
162 oss << " \"failed\": " << snapshot.tasks_failed << "\n";
163 oss << " },\n";
164 oss << " \"timing_ns\": {\n";
165 oss << " \"busy\": " << snapshot.total_busy_time_ns << ",\n";
166 oss << " \"idle\": " << snapshot.total_idle_time_ns << "\n";
167 oss << " }\n";
168 oss << "}";
169 } else {
170 oss << "{\"tasks\":{\"submitted\":" << snapshot.tasks_submitted
171 << ",\"executed\":" << snapshot.tasks_executed
172 << ",\"failed\":" << snapshot.tasks_failed
173 << "},\"timing_ns\":{\"busy\":" << snapshot.total_busy_time_ns
174 << ",\"idle\":" << snapshot.total_idle_time_ns << "}}";
175 }
176
177 return oss.str();
178}

References pretty_, kcenon::thread::metrics::BaseSnapshot::tasks_executed, kcenon::thread::metrics::BaseSnapshot::tasks_failed, kcenon::thread::metrics::BaseSnapshot::tasks_submitted, kcenon::thread::metrics::BaseSnapshot::total_busy_time_ns, and kcenon::thread::metrics::BaseSnapshot::total_idle_time_ns.

◆ export_enhanced()

std::string kcenon::thread::metrics::JsonBackend::export_enhanced ( const EnhancedSnapshot & snapshot) const
nodiscardoverridevirtual

Export enhanced metrics snapshot.

Parameters
snapshotThe enhanced metrics snapshot to export.
Returns
Formatted string representation.

Implements kcenon::thread::metrics::MetricsBackend.

Definition at line 180 of file metrics_backend.cpp.

180 {
181 std::ostringstream oss;
182 oss << std::fixed << std::setprecision(2);
183
184 if (pretty_) {
185 oss << "{\n";
186 oss << " \"tasks\": {\n";
187 oss << " \"submitted\": " << snapshot.tasks_submitted << ",\n";
188 oss << " \"executed\": " << snapshot.tasks_executed << ",\n";
189 oss << " \"failed\": " << snapshot.tasks_failed << "\n";
190 oss << " },\n";
191
192 oss << " \"latency_us\": {\n";
193 oss << " \"enqueue\": { \"p50\": " << snapshot.enqueue_latency_p50_us
194 << ", \"p90\": " << snapshot.enqueue_latency_p90_us
195 << ", \"p99\": " << snapshot.enqueue_latency_p99_us << " },\n";
196 oss << " \"execution\": { \"p50\": " << snapshot.execution_latency_p50_us
197 << ", \"p90\": " << snapshot.execution_latency_p90_us
198 << ", \"p99\": " << snapshot.execution_latency_p99_us << " },\n";
199 oss << " \"wait_time\": { \"p50\": " << snapshot.wait_time_p50_us
200 << ", \"p90\": " << snapshot.wait_time_p90_us
201 << ", \"p99\": " << snapshot.wait_time_p99_us << " }\n";
202 oss << " },\n";
203
204 oss << " \"throughput\": {\n";
205 oss << " \"rate_1s\": " << snapshot.throughput_1s << ",\n";
206 oss << " \"rate_1m\": " << snapshot.throughput_1m << "\n";
207 oss << " },\n";
208
209 oss << " \"queue\": {\n";
210 oss << " \"current_depth\": " << snapshot.current_queue_depth << ",\n";
211 oss << " \"peak_depth\": " << snapshot.peak_queue_depth << ",\n";
212 oss << " \"avg_depth\": " << snapshot.avg_queue_depth << "\n";
213 oss << " },\n";
214
215 oss << " \"workers\": {\n";
216 oss << " \"active\": " << snapshot.active_workers << ",\n";
217 oss << " \"utilization\": " << snapshot.worker_utilization << ",\n";
218 oss << " \"per_worker_utilization\": [";
219 for (std::size_t i = 0; i < snapshot.per_worker_utilization.size(); ++i) {
220 if (i > 0) {
221 oss << ", ";
222 }
223 oss << snapshot.per_worker_utilization[i];
224 }
225 oss << "]\n";
226 oss << " }\n";
227
228 oss << "}";
229 } else {
230 oss << "{\"tasks\":{\"submitted\":" << snapshot.tasks_submitted
231 << ",\"executed\":" << snapshot.tasks_executed
232 << ",\"failed\":" << snapshot.tasks_failed
233 << "},\"latency_us\":{\"enqueue\":{\"p50\":" << snapshot.enqueue_latency_p50_us
234 << ",\"p90\":" << snapshot.enqueue_latency_p90_us
235 << ",\"p99\":" << snapshot.enqueue_latency_p99_us
236 << "},\"execution\":{\"p50\":" << snapshot.execution_latency_p50_us
237 << ",\"p90\":" << snapshot.execution_latency_p90_us
238 << ",\"p99\":" << snapshot.execution_latency_p99_us
239 << "},\"wait_time\":{\"p50\":" << snapshot.wait_time_p50_us
240 << ",\"p90\":" << snapshot.wait_time_p90_us
241 << ",\"p99\":" << snapshot.wait_time_p99_us
242 << "}},\"throughput\":{\"rate_1s\":" << snapshot.throughput_1s
243 << ",\"rate_1m\":" << snapshot.throughput_1m
244 << "},\"queue\":{\"current_depth\":" << snapshot.current_queue_depth
245 << ",\"peak_depth\":" << snapshot.peak_queue_depth
246 << ",\"avg_depth\":" << snapshot.avg_queue_depth
247 << "},\"workers\":{\"active\":" << snapshot.active_workers
248 << ",\"utilization\":" << snapshot.worker_utilization
249 << ",\"per_worker_utilization\":[";
250 for (std::size_t i = 0; i < snapshot.per_worker_utilization.size(); ++i) {
251 if (i > 0) {
252 oss << ",";
253 }
254 oss << snapshot.per_worker_utilization[i];
255 }
256 oss << "]}}";
257 }
258
259 return oss.str();
260}

References kcenon::thread::metrics::EnhancedSnapshot::active_workers, kcenon::thread::metrics::EnhancedSnapshot::avg_queue_depth, kcenon::thread::metrics::EnhancedSnapshot::current_queue_depth, kcenon::thread::metrics::EnhancedSnapshot::enqueue_latency_p50_us, kcenon::thread::metrics::EnhancedSnapshot::enqueue_latency_p90_us, kcenon::thread::metrics::EnhancedSnapshot::enqueue_latency_p99_us, kcenon::thread::metrics::EnhancedSnapshot::execution_latency_p50_us, kcenon::thread::metrics::EnhancedSnapshot::execution_latency_p90_us, kcenon::thread::metrics::EnhancedSnapshot::execution_latency_p99_us, kcenon::thread::metrics::EnhancedSnapshot::peak_queue_depth, kcenon::thread::metrics::EnhancedSnapshot::per_worker_utilization, pretty_, kcenon::thread::metrics::EnhancedSnapshot::tasks_executed, kcenon::thread::metrics::EnhancedSnapshot::tasks_failed, kcenon::thread::metrics::EnhancedSnapshot::tasks_submitted, kcenon::thread::metrics::EnhancedSnapshot::throughput_1m, kcenon::thread::metrics::EnhancedSnapshot::throughput_1s, kcenon::thread::metrics::EnhancedSnapshot::wait_time_p50_us, kcenon::thread::metrics::EnhancedSnapshot::wait_time_p90_us, kcenon::thread::metrics::EnhancedSnapshot::wait_time_p99_us, and kcenon::thread::metrics::EnhancedSnapshot::worker_utilization.

Referenced by kcenon::thread::metrics::EnhancedThreadPoolMetrics::to_json().

Here is the caller graph for this function:

◆ name()

std::string kcenon::thread::metrics::JsonBackend::name ( ) const
inlinenodiscardoverridevirtual

Get the backend name.

Returns
Human-readable backend identifier (e.g., "prometheus", "json").

Implements kcenon::thread::metrics::MetricsBackend.

Definition at line 208 of file metrics_backend.h.

208 {
209 return "json";
210 }

◆ set_pretty()

void kcenon::thread::metrics::JsonBackend::set_pretty ( bool pretty)
inline

Enable or disable pretty printing.

Parameters
prettyTrue for indented output, false for compact.

Definition at line 222 of file metrics_backend.h.

222 {
223 pretty_ = pretty;
224 }

References pretty_.

Member Data Documentation

◆ pretty_

bool kcenon::thread::metrics::JsonBackend::pretty_ {true}
private

Definition at line 227 of file metrics_backend.h.

227{true};

Referenced by export_base(), export_enhanced(), and set_pretty().


The documentation for this class was generated from the following files: