Hello, here’s an example of Nagios plugin written in Python interacting with ROS framework. #!/usr/bin/env python import sys sys.path.append("/home/schreiner/catkin_ws_hydro/install/lib/python2.7/dist-packages") sys.path.append("/opt/ros/hydro/lib/python2.7/dist-packages") import os os.environ['PATH'] = "/opt/ros/hydro/bin:" + os.environ['PATH'] os.environ['ROS_PACKAGE_PATH']= '/home/schreiner/catkin_ws_hydro/install/share:/home/schreiner/catkin_ws_hydro/install/stacks:/opt/ros/hydro/share:/opt/ros/hydro/stacks' from optparse import OptionParser import rospy import rosnode import os import roslib import sys roslib.load_manifest('linux_hardware') from linux_hardware.msg import LaptopChargeStatus from diagnostic_msgs.msg import DiagnosticStatus, DiagnosticArray, KeyValue # Exit statuses recognized by Nagios UNKNOWN = -1 OK = 0 WARNING = 1 CRITICAL = 2 # TEMPLATE FOR READING PARAMETERS FROM COMMANDLINE parser = OptionParser() parser.add_option("-H", "--host", dest="host", default='localhost', help="A message to print after OK - ") parser.add_option("-w", "--warning", dest="warning", default='40', help="A message to print after OK - ") parser.add_option("-c", "--critical", dest="critical", default='20', help="A message to print after OK - ") (options, args) = parser.parse_args() # Set turtlebot ROS Master URI os.environ['ROS_MASTER_URI'] = 'http://' + options.host + ':11311' kobuki_charge = None kobuki_percentage = None def callback_kobuki(data): global kobuki_charge global kobuki_percentage ready = False while not ready: for current in data.status: if current.name == "mobile_base_nodelet_manager: Battery": for value in current.values: if value.key == "Charge (Ah)": kobuki_charge = value.value if value.key == "Percent": kobuki_percentage = value.value ready = True time = rospy.get_time() kobuki_percentage = int(float(kobuki_percentage)) rospy.signal_shutdown(0) def listener(): rospy.init_node('check_battery_kobuki', anonymous=True, disable_signals=True) rospy.Subscriber("diagnostics", DiagnosticArray , callback_kobuki) rospy.spin() def myhook(): if kobuki_percentage < int(options.critical): print "CRITICAL - Kobuki Charge Percent %s | kobuki_battery=%s" % (kobuki_percentage,kobuki_percentage) exiting(CRITICAL) elif kobuki_percentage < int(options.warning): print "WARNING - Kobuki Charge Percent %s | kobuki_battery=%s" % (kobuki_percentage,kobuki_percentage) exiting(WARNING) else: print "OK - Kobuki Charge Percent %s | kobuki_battery=%s" % (kobuki_percentage,kobuki_percentage) exiting(OK) def exiting(value): try: sys.stdout.flush() os._exit(value) except: pass if __name__ == '__main__': try: master = rospy.get_master() master.getPid() except Exception: print "UNKNOWN - Roscore not available" exiting(UNKNOWN) try: if len(sys.argv) < 5: print "usage %s -c -w " % (sys.argv[0]) exiting(UNKNOWN) rospy.on_shutdown(myhook) listener() except rospy.ROSInterruptException: exit -- Guillaume Schreiner Research Engineer Network Research Group ICube - UMR CNRS 7357 Strasbourg University Le 25 juin 2014 à 13:47, Dominik Kirchner a écrit : > Hi, > > the Nagios plugin needs to pubish its monitoring data on the /diagnostic topic. Msg type needs to be a DiagnosticArray with DiagnosticStatus items for each entity you have monitored. > > You will find good tutorials on how use the ROS diagnostic stack on http://wiki.ros.org/diagnostics/Tutorials. > > Best Regards, > Dominik Kirchner > > > On 24.06.2014 22:40, Felipe Roman wrote: >> Hi Everyone, >> >> Has anyone have used ROS diagnostics before ? I am working on a research work to integrate ROS with one IT monitoring tool (Nagios). Basically this IT monitoring tool will be able to get information about the Robot Sensor Status. >> >> I already have implemented the communication between them (Nagios plugin reading ROS service information) and now I would like to know how to create and configure a ROS diagnostic topic to test it. >> >> Any ideas will be welcome, thanks in advance >> >> -- >> Best Regards, >> Felipe Roman >> Phone 55 51 8454 8110 >> LinkedIn http://au.linkedin.com/in/feliperoman >> >> >> _______________________________________________ >> ros-users mailing list >> ros-users@lists.ros.org >> http://lists.ros.org/mailman/listinfo/ros-users > > -- > -- > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- > -- Dominik Kirchner - kirchner@vs.uni-kassel.de - T. +49 561 804-6279 > -- Univ. Kassel - FB 16, Wilhelmshöher Allee 73, D-34121 Kassel > -- http://www.uni-kassel.de/eecs/fachgebiete/vs/team/person/677-Dominik-Kirchner.html > ------------------------------------------------------------------------ > _______________________________________________ > ros-users mailing list > ros-users@lists.ros.org > http://lists.ros.org/mailman/listinfo/ros-users