Service management
Systemd
The agent runs asinsaion-agent.service:
Docker
Manage the container with standard Docker commands:Configure the agent
Systemd
Runtime configuration is stored in/etc/default/insaion-agent. Edit the file and restart the service to apply changes:
Docker
Docker configuration is supplied through environment variables. To make a persistent change, stop and remove the container, then run the command generated by the Add Device page again with the updated values:/var/lib/insaion-agent host directory.
Common variables
ENROLLMENT_KEY: automatically register the deviceROS_DISTRO: ROS2 distribution sourced before launchCUSTOM_ROS_SETUP: path to an additional ROS workspace setup scriptRMW_IMPLEMENTATION: DDS middleware selection, such as CycloneDDS or Fast DDSROS_DOMAIN_ID: ROS domain ID for discovery isolationROS_AUTOMATIC_DISCOVERY_RANGE: ROS discovery rangeROS_STATIC_PEERS: static peer list for ROS discoveryROS_LOCALHOST_ONLY: restrict ROS traffic to localhost when requiredFASTRTPS_DEFAULT_PROFILES_FILE: Fast DDS profile pathROS_DISCOVERY_SERVER: Fast DDS discovery server addressCYCLONEDDS_URI: CycloneDDS configuration URIZENOH_ROUTER_CONFIG_URI: Zenoh router configuration locationZENOH_SESSION_CONFIG_URI: Zenoh session configuration locationZENOH_ROUTER_CHECK_ATTEMPTS: retry count for Zenoh router availability checks
Telemetry settings
These settings tune how live ROS 2 telemetry is sent and buffered. The defaults suit most robots; change them only for a specific need. They require agent 1.0.0 or later.Logging and diagnostics
The agent uses a standardized log format across its components. Each record includes a timestamp, severity level, and thread identifier. Persistent agent logs also include the source file and line number. Output from managed Telegraf and ReductStore processes is captured in the same stream with a component tag, making events easier to follow in chronological order. For systemd, follow live service logs with:/var/lib/insaion-agent/. Mount this directory as persistent storage in Docker to retain diagnostics across container restarts.
Check the agent’s status
The agent writes a status summary to/var/lib/insaion-agent/agent_status.json every 10 seconds. It is a quick way to see, on the robot, what the agent is doing:
cdr_uplink: live telemetry.records_publishedandbytes_publishedgrow while telemetry flows;spool_bytes_pendingshows telemetry buffered during an outage, waiting to be sent;records_droppedandrecords_throttledcount telemetry dropped or reduced because the buffer was full;spool_low_diskistruewhen the buffer is shrinking to leave room for recordings.recording: recording health.segments_droppedcounts recorded data dropped because storage could not keep up.ros2: the topics being monitored and recorded, andrejected_oversize_messages_count, the messages dropped from telemetry for being too large.
Create a support bundle
When reporting an issue, generate a redacted support bundle:.tar.gz archive to /tmp and prints the full path when complete.
Choose a specific output path with:
[REDACTED], and device tokens are not included. Review the archive before attaching it to an issue or sending it to Insaion support.
For Docker, create the bundle inside the container and copy it to the host:
Update the agent
Systemd
If the Insaion package repository is still configured, update the agent with the standard system upgrade workflow:/etc/default/insaion-agent and the state stored under /var/lib/insaion-agent, then restarts the service after the agent upgrade.
You can also re-run the installation command generated by the Add Device page. This is useful when you want to update only the agent or restore its package repository configuration.
If APT keeps the agent back or reports a Telegraf version conflict, re-run the current installation command to remove package holds created by older installer versions, then run the upgrade again.
Upgrading from 0.10.x to 1.0.0
The upgrade needs no extra steps. The device keeps its registration, its configuration and the recordings already in its rolling buffer, and recordings made by the older agent can still be uploaded. After the upgrade:- ROS 2 telemetry moves from HTTPS to the agent’s existing secure MQTT connection. No firewall change is needed: it uses the same host and port 443.
- The recording split duration disappears from Data Collection for this device: 1.0.0 writes recordings about once a second and ignores it.
- The Uploads settings appear in the rolling buffer panel.
- Topics with messages over 64 KiB are flagged as too large for live telemetry. They were already too heavy to monitor well; record them instead.
Docker
Pull the current image and recreate the container with the same configuration and persistent state mount:latest-jazzy with the image tag used by your deployment.
Troubleshooting
The service or container is not running
For systemd:The device does not register automatically
Confirm thatENROLLMENT_KEY is present in the systemd configuration:
Custom ROS messages are missing
SetCUSTOM_ROS_SETUP to the workspace setup.bash path. For Docker, also mount that workspace into the container at the configured path. Restart or recreate the agent after the change.
DDS settings are not applied
Check the configured middleware variables and verify that referenced files exist:Live telemetry stopped but the device is online
Check whether the topic is flagged too large in Data Collection. Then check the telemetry section of the status file:spool_bytes_pending keeps growing, telemetry is being buffered instead of sent: the agent cannot reach wss://app.insaion.com/mqtt. Check that outbound WebSocket connections on port 443 are allowed. Buffered telemetry is delivered once the connection returns.
The disk is filling up
The rolling buffer is limited by its size in Device configuration, and the telemetry buffer byINSAION_TELEMETRY_SPOOL_MAX_BYTES. Check what is using the space:
INSAION_TELEMETRY_SPOOL_MAX_BYTES.
Docker state is not persisting
Confirm that/var/lib/insaion-agent is mounted and writable on the host:
