Skip to content

Commit 19c87d0

Browse files
committed
introduce output queue telemetry
1 parent 13366bc commit 19c87d0

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

ipfixprobe.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,22 @@ void process_plugin_argline(const std::string &args, std::string &plugin, std::s
152152
trim_str(params);
153153
}
154154

155+
telemetry::Content get_ipx_ring_telemetry(ipx_ring_t* ring)
156+
{
157+
telemetry::Dict dict;
158+
uint64_t size = ipx_ring_size(ring);
159+
uint64_t count = ipx_ring_cnt(ring);
160+
double usage = 0;
161+
if (size) {
162+
usage = (double) count / size * 100;
163+
}
164+
165+
dict["size"] = size;
166+
dict["count"] = count;
167+
dict["usage"] = telemetry::ScalarWithUnit {usage, "%"};
168+
return dict;
169+
}
170+
155171
bool process_plugin_args(ipxp_conf_t &conf, IpfixprobeOptParser &parser)
156172
{
157173
auto deleter = [&](OutputPlugin::Plugins *p) {
@@ -216,6 +232,12 @@ bool process_plugin_args(ipxp_conf_t &conf, IpfixprobeOptParser &parser)
216232
if (output_queue == nullptr) {
217233
throw IPXPError("unable to initialize ring buffer");
218234
}
235+
236+
auto ipxRingTelemetryDir = output_dir->addDir("ipxRing");
237+
telemetry::FileOps statsOps = {[=]() { return get_ipx_ring_telemetry(output_queue); }, nullptr};
238+
auto statsFile = ipxRingTelemetryDir->addFile("stats", statsOps);
239+
conf.holder.add(statsFile);
240+
219241
OutputPlugin *output_plugin = nullptr;
220242
try {
221243
output_plugin = dynamic_cast<OutputPlugin *>(conf.mgr.get(output_name));

ipfixprobe.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ struct ipxp_conf_t {
200200

201201
std::shared_ptr<telemetry::Directory> telemetry_root_node;
202202
std::unique_ptr<telemetry::appFs::AppFsFuse> appFs;
203+
telemetry::Holder holder;
203204

204205
size_t pkt_bufsize;
205206
size_t blocks_cnt;

0 commit comments

Comments
 (0)