Implement centralized health monitoring node that: - Subscribes to /saltybot/<node>/heartbeat from all tracked nodes - Tracks expected nodes from YAML configuration - Marks nodes DEAD if silent >5 seconds - Triggers auto-restart via ros2 launch when nodes fail - Publishes /saltybot/system_health JSON with full status - Alerts face display on critical node failures Features: - Configurable heartbeat timeout (default 5s) - Automatic dead node detection and restart - System health JSON publishing (timestamp, uptime, node status, critical alerts) - Face alert system for critical failures - Rate-limited alerting to avoid spam - Comprehensive monitoring config with critical/important node tiers Package structure: - saltybot_health_monitor: Main health monitoring node - health_config.yaml: Configurable list of monitored nodes - health_monitor.launch.py: Launch file with parameters - Unit tests for heartbeat parsing and health status generation Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
30 lines
1022 B
XML
30 lines
1022 B
XML
<?xml version="1.0"?>
|
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
|
<package format="3">
|
|
<name>saltybot_health_monitor</name>
|
|
<version>0.1.0</version>
|
|
<description>
|
|
ROS2 system health monitor for SaltyBot. Central node that monitors heartbeats
|
|
from all critical nodes, detects when nodes go down (>5s silent), triggers
|
|
auto-restart, publishes /saltybot/system_health JSON, and alerts face display
|
|
on critical failures.
|
|
</description>
|
|
<maintainer email="sl-controls@saltylab.local">sl-controls</maintainer>
|
|
<license>MIT</license>
|
|
|
|
<depend>rclpy</depend>
|
|
<depend>std_msgs</depend>
|
|
<depend>geometry_msgs</depend>
|
|
|
|
<buildtool_depend>ament_python</buildtool_depend>
|
|
|
|
<test_depend>ament_copyright</test_depend>
|
|
<test_depend>ament_flake8</test_depend>
|
|
<test_depend>ament_pep257</test_depend>
|
|
<test_depend>python3-pytest</test_depend>
|
|
|
|
<export>
|
|
<build_type>ament_python</build_type>
|
|
</export>
|
|
</package>
|