sys_info_collector.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License").
5  * You may not use this file except in compliance with the License.
6  * A copy of the License is located at
7  *
8  * http://aws.amazon.com/apache2.0
9  *
10  * or in the "license" file accompanying this file. This file is distributed
11  * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12  * express or implied. See the License for the specific language governing
13  * permissions and limitations under the License.
14  */
15 
17 #include <ros_monitoring_msgs/MetricData.h>
18 #include <sys/sysinfo.h>
19 
20 #include <fstream>
21 #include <iostream>
22 
23 using namespace ros_monitoring_msgs;
24 
25 
26 #define MEGA (1048576.0)
27 
28 
30 {
31  // Obtain system statistics
32  struct sysinfo si = {0};
33  sysinfo(&si);
34 
35  AddMetric("system_uptime", si.uptime, MetricData::UNIT_SEC);
36  AddMetric("free_ram", si.freeram * si.mem_unit / MEGA, MetricData::UNIT_MEGABYTES);
37  AddMetric("total_ram", si.totalram * si.mem_unit / MEGA, MetricData::UNIT_MEGABYTES);
38  AddMetric("process_count", si.procs, MetricData::UNIT_NONE);
39 }
40 
41 void SysInfoCollector::AddMetric(const std::string & name, const double value,
42  const std::string & unit)
43 {
44  ros_monitoring_msgs::MetricData md = mgr_.CreateMetric();
45  md.metric_name = name;
46  md.unit = unit;
47  md.value = value;
48  mgr_.AddMetric(md);
49 }
void AddMetric(const std::string &name, const double value, const std::string &unit)
#define MEGA
void Collect() overridefinal
callback for collecting metrics.


health_metric_collector
Author(s): AWS RoboMaker
autogenerated on Fri Mar 5 2021 03:32:41