Skip to content

Commit bd37612

Browse files
committed
[metrics] Add monitoring
1 parent abc5718 commit bd37612

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

src/CommandLineUtilities/ProgramMetrics.cxx

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
#include <boost/property_tree/ptree.hpp>
2626
#include <boost/property_tree/json_parser.hpp>
2727

28+
#include <Monitoring/MonitoringFactory.h>
29+
using namespace o2::monitoring;
30+
2831
using namespace AliceO2::roc::CommandLineUtilities;
2932
using namespace AliceO2::roc;
3033
using namespace AliceO2::InfoLogger;
@@ -37,7 +40,9 @@ class ProgramMetrics : public Program
3740
virtual Description getDescription()
3841
{
3942
return { "Metrics", "Return current RoC parameters",
40-
"roc-metrics \n" };
43+
"roc-metrics \n"
44+
"roc-metrics --json \n"
45+
"roc-metrics --monitoring\n" };
4146
}
4247

4348
virtual void addOptions(boost::program_options::options_description& options)
@@ -48,6 +53,9 @@ class ProgramMetrics : public Program
4853
options.add_options()("csv-out",
4954
po::bool_switch(&mOptions.csvOut),
5055
"Toggle csv-formatted output");
56+
options.add_options()("monitoring",
57+
po::bool_switch(&mOptions.monitoring),
58+
"Toggle monitoring metrics sending");
5159
}
5260

5361
virtual void run(const boost::program_options::variables_map& /*map*/)
@@ -69,6 +77,14 @@ class ProgramMetrics : public Program
6977

7078
auto cardsFound = AliceO2::roc::RocPciDevice::findSystemDevices();
7179

80+
// Monitoring instance to send metrics
81+
std::unique_ptr<Monitoring> monitoring;
82+
if (mOptions.monitoring) {
83+
monitoring = MonitoringFactory::Get("stdout://");
84+
monitoring->addGlobalTag(tags::Key::Subsystem, tags::Value::CRU);
85+
}
86+
87+
// Used for the JSON output
7288
pt::ptree root;
7389
int i = 0;
7490
for (const auto& card : cardsFound) {
@@ -87,7 +103,17 @@ class ProgramMetrics : public Program
87103
float localClock = bar2->getLocalClock() / 1e6;
88104
uint32_t totalPacketsPerSecond = bar2->getTotalPacketsPerSecond(0);
89105

90-
if (mOptions.jsonOut) {
106+
if (mOptions.monitoring) {
107+
monitoring->send(Metric{ std::to_string(i), "card" }
108+
.addValue(CardType::toString(card.cardType), "type")
109+
.addValue(card.pciAddress.toString(), "pciAddress")
110+
.addValue(temperature, "temperature")
111+
.addValue(dropped, "droppedPackets")
112+
.addValue(ctpClock, "ctpClock")
113+
.addValue(localClock, "localClock")
114+
.addValue((int)totalPacketsPerSecond, "totalPacketsPerSecond"));
115+
116+
} else if (mOptions.jsonOut) {
91117
pt::ptree cardNode;
92118

93119
// add kv pairs for this card
@@ -116,7 +142,7 @@ class ProgramMetrics : public Program
116142

117143
if (mOptions.jsonOut) {
118144
pt::write_json(std::cout, root);
119-
} else if (!mOptions.csvOut) {
145+
} else if (!mOptions.csvOut && !mOptions.monitoring) {
120146
auto lineFat = std::string(header.length(), '=') + '\n';
121147
table << lineFat;
122148
std::cout << table.str();
@@ -127,6 +153,7 @@ class ProgramMetrics : public Program
127153
struct OptionsStruct {
128154
bool jsonOut = false;
129155
bool csvOut = false;
156+
bool monitoring = false;
130157
} mOptions;
131158
};
132159

0 commit comments

Comments
 (0)