Only released in EOL distros:
Package Summary
scriptable_monitoring
- Maintainer: Igor Makhtes <igor AT cogniteam DOT com>
- Author: Igor Makhtes <igor AT cogniteam DOT com>
- License: MIT
- Source: git https://github.com/cogniteam/scriptable_monitoring.git (branch: master)
The node manages script addition, removal and execution. It also provides an information retrieval interface for available scripts and some useful details about each script.
Example script
Suppose we have a node that publishes current CPU usage to the /cpu topic. Each message contains an array named cores with usage information for each core. We also have a topic with configuration information: /config.
Now we will create a simple script which will warn about high cpu usage.
Predicate
1 #! type predicate
2 #! name cpu_monitor
3 #! interval 1
4 #! hardware_id lab_pc_1
5 #! fail warn
6 core1 = {/cpu/cores[0:1]}
7 core2 = {/cpu/cores[1:2]}
8 core3 = {/cpu/cores[2:3]}
9 core4 = {/cpu/cores[3:4]}
10 cpu_th = {/config/cpu_threshold}
11 core_th = {/config/core_threshold}
12 average = (core1 + core2 + core3 + core4) / 4.0
13 average < cpu_th
14 core1 < core_th
15 core2 < core_th
16 core3 < core_th
17 core4 < core_th
Python
1 #! name cpu_monitor
2 #! interval 1
3 #! hardware_id lab_pc_1
4 #! fail warn
5 core1 = topic("/cpu/cores[0:1]")
6 core2 = topic("/cpu/cores[1:2]")
7 core3 = topic("/cpu/cores[2:3]")
8 core4 = topic("/cpu/cores[3:4]")
9 cpu_th = topic("/config/cpu_threshold")
10 core_th = topic("/config/core_threshold")
11 average = (core1 + core2 + core3 + core4) / 4.0
12 validate.is_true(average < cpu_th, "Cpu usage too high")
13 validate.is_true(core1 < core_th, "core1 usage too high")
14 validate.is_true(core2 < core_th, "core2 usage too high")
15 validate.is_true(core3 < core_th, "core3 usage too high")
16 validate.is_true(core4 < core_th, "core4 usage too high")
You can activate the script using rqt plugin - http://wiki.ros.org/scriptable_monitor_rqt
Documentation
Scripts
Configuration parameters
Parameters are preceded by '#!'. Syntax:
#! parameter_name parameter_value
There is one required parameter: "name" - the identification name of the script, it must be unique.
Example:
#! name cpu_monitor