in health_metric_collector/src/collector.cpp [44:82]
int main(int argc, char ** argv)
{
ros::init(argc, argv, DEFAULT_NODE_NAME);
auto param_reader = std::make_shared<Ros1NodeParameterReader>();
// get interval param
double interval = DEFAULT_INTERVAL_SEC;
param_reader->ReadParam(ParameterPath(INTERVAL_PARAM_NAME), interval);
// get robot id
std::string robot_id = DEFAULT_ROBOT_ID;
param_reader->ReadParam(ParameterPath(ROBOT_ID_DIMENSION), robot_id);
// advertise
ros::NodeHandle public_nh;
ros::Publisher publisher =
public_nh.advertise<ros_monitoring_msgs::MetricList>(METRICS_TOPIC_NAME, TOPIC_BUFFER_SIZE);
AWS_LOG_INFO(__func__, "Starting Health Metric Collector Node...");
MetricManager mg(publisher);
mg.AddDimension(ROBOT_ID_DIMENSION, robot_id);
mg.AddDimension(CATEGORY_DIMENSION, HEALTH_CATEGORY);
std::vector<MetricCollectorInterface *> collectors;
CPUMetricCollector cpu_collector(mg);
collectors.push_back(&cpu_collector);
SysInfoCollector sys_collector(mg);
collectors.push_back(&sys_collector);
// start metrics collection
CollectAndPublish f(mg, collectors);
ros::NodeHandle nh("~");
ros::Timer timer = nh.createTimer(ros::Duration(interval), f);
ros::spin();
AWS_LOG_INFO(__func__, "Shutting down Health Metric Collector Node...");
return 0;
}