NDTS Gateway Installation: Difference between revisions
Mmaciejewski (talk | contribs) |
Mmaciejewski (talk | contribs) |
||
Line 158: | Line 158: | ||
== '''NDTS Operation''' == | == '''NDTS Operation''' == | ||
* '''Experiment transfer''' – Workstation daemons connect on TCP 60195, announce a dataset, and stream it to <code>received/</code>. Successful transfers spawn a | * '''Experiment transfer''' – Workstation daemons connect on TCP 60195, announce a dataset, and stream it to <code>received/</code>. Successful transfers spawn a '''Transmitter''' process that forwards the data to the receiver; on success the local copy is deleted. | ||
* '''Retransmit''' – At start-up and after each daemon heartbeat, a | * '''Retransmit''' – At start-up and after each daemon heartbeat, a '''Retransmitter''' scans <code>received/</code>. If a dataset’s original retry window has expired, it launches a new transmitter until delivery succeeds or the file is manually removed. | ||
* '''Heartbeat forwarding''' – Every daemon heartbeat is wrapped with the gateway UUID, local and UTC timestamps, then sent to the receiver by a short-lived | * '''Heartbeat forwarding''' – Every daemon heartbeat is wrapped with the gateway UUID, local and UTC timestamps, then sent to the receiver by a short-lived '''Heartbeat Transmitter''' | ||
* '''User list propagation''' – Every | * '''User list propagation''' – Every 15s the gateway requests an updated list from the receiver; if the checksum differs it saves the new list to <code>users.dat</code> and serves it to workstations on demand. | ||
---- | ---- | ||
Line 167: | Line 167: | ||
== '''NDTS Logging''' == | == '''NDTS Logging''' == | ||
Logging level | Logging level are controlled by the logging_level parameter in the JSON configuration file (see [[NDTS Gateway Installation#Configuration Options|above]]) | ||
Example log excerpt: | Example log excerpt: | ||
<pre>2022-06-06 09:22:23,130 INFO main [61393]: Starting gateway retransmitter instance... | <pre>2022-06-06 09:22:23,130 INFO main [61393]: Starting gateway retransmitter instance... | ||
2022-06-06 09:22:23,130 INFO main [61393]: Experiment file path = /opt/nandt-gateway/data/received | |||
2022-06-06 09:22:23,132 INFO main [61393]: Starting gateway receiver network endpoint... | 2022-06-06 09:22:23,132 INFO main [61393]: Starting gateway receiver network endpoint... | ||
2022-06-06 09:22:23,133 INFO GatewayReceiver [61393]: Starting file receiver... | |||
2022-06-06 09:22:23,133 INFO GatewayRetransmitter [61405]: In GatewayRetransmit handle() method... | |||
2022-06-06 09:22:23,134 INFO GatewayRetransmitter [61405]: No experiments to retransmit -- exiting... | |||
2022-06-06 09:22:23,134 INFO GatewayRetransmitter [61405]: GatewayRetransmit handle() method completed... | |||
2022-06-06 09:23:12,829 INFO GatewayTransmitter [61512]: Heartbeat sent to https://receiver.usnan.org/heartbeat | 2022-06-06 09:23:12,829 INFO GatewayTransmitter [61512]: Heartbeat sent to https://receiver.usnan.org/heartbeat | ||
</pre> : | </pre> From the log file note: | ||
* The first message shows the spawning of the retransmitter. The subsequent lines that contain “INFO GatewayRetransmitter” after the timestamp show that there are no experiments to retransmit, so the retransmitter just exits. | |||
* The line that starts with “INFO GatewayReceiver” after the timestamp shows the file receiver starting, which means that it is awaiting connects from NDTS Daemons. | |||
* The last lines shows that a heartbeat came in from an NDTS Daemon, and the Gateway is forwarding it to the Receiver. |
Revision as of 15:25, 3 June 2025
Gateway Installation
Prerequisites
- A Gateway UUID supplied by the NAN Repository administrator
- A Linux host (Ubuntu 20.04 or later recommended) reachable by all workstations
- TCP port 60195 open inbound from those workstations
Installation Steps
# Copy the .gz file to the gateway computer tar xf data-transport-gateway-<version>.tar.gz cd dtgateway-installer sudo ./install.sh # → You will be prompted only for the Gateway UUID
Firewall Note
Open port 60195 to each NDTS workstation; no other inbound ports are required.
Verifying the Service
sudo systemctl status data-transport-gateway # should show “active (running)” sudo systemctl start data-transport-gateway # start if not running
Updating the Gateway
# Run the same installer script from a newer package cd dtgateway-installer sudo ./install.sh # auto-detects an existing install; no prompts
Follow the directions above for verifying the service after updating the Gateway to ensure that the service is running.
Uninstalling the Gateway
sudo ./uninstall.sh # script is included inside every package
Rolling Back the Gateway
Obtain the desired older package and run its install.sh
.
Rolling back more than one or two versions is not recommended.
NDTS Gateway Configuration
The following are optional configuration values that can be specified in the /opt/nandt- gateway/gateway_configuration.json file. The file must adhere to proper JSON formatting:
Configuration Options
Option | Description | Default |
---|---|---|
log_file_path | Path to write the gateway log file | /opt/nandt-gateway/nan-gateway.log |
logging_level | Minimum severity written to the log (fatal → debug) | info |
logging_format | Python logging format string for each line |
%(asctime)s %(levelname)s %(module)s [%(process)d]: %(message)s |
base_output_path | Directory used for incoming experiment data | /opt/nandt-gateway/data/received |
https_endpoint | HTTPS endpoint of the NDTS Receiver | https://receiver.usnan.org |
retry_limit | Attempts to forward each dataset to the Receiver | 5 |
retry_delay | Seconds to wait between retry attempts | 300 |
rsync_username | SSH/rsync account on the Receiver | nandt |
rsync_node | Node to which experiment files are rsync’d | receiver.usnan.org |
request_queue_size | Outstanding daemon connections accepted before new ones are rejected. Increase this value if the gateway is rejecting requests from spectrometers evident in the workstation daemon log file showing network communication errors | 50 |
Example JSON configuration file
{ "log_file_path": "/opt/nandt-gateway/nan-gateway.log", "logging_level": "info", "logging_format": "%(asctime)s %(levelname)s %(module)s [%(process)d]: %(message)s", "base_output_path": "/opt/nandt-gateway/data/received", "https_endpoint": "https://receiver.usnan.org", "retry_limit": 5, "retry_delay": 300, "rsync_username": "nandt", "rsync_node": "receiver.usnan.org", "request_queue_size": 50 }
Logging Levels
Nothing below the set log level will be logged.
Level | Description | verbosity | default |
---|---|---|---|
fatal | Critical events only | very low | |
error | Problems that must be addressed for normal operation | low | |
warning | Unusual events that generally require no action | medium | |
info | Unusual or noteworthy events (recommended for production) | high | yes |
debug | Detailed diagnostic messages useful for troubleshooting, but should not be left on for normal operation | extremely high |
NDTS Gateway Components
All files reside under /opt/nandt-gateway
unless noted. :contentReference[oaicite:1]{index=1}
main.py
– entry point for the Python service/etc/systemd/system/data-transport-gateway.service
– systemd unit filenan-gateway.log
– runtime log (path overridable vialog_file_path
)gateway_configuration.json
– configuration described abovedata/
received/
– transient storage for incoming experiment dataretransmitter.pid
– PID of the active retransmitter helperusers.dat
– current user / sample / project listuser_checksum.dat
– checksum that governs list refreshes
NDTS Gateway Components
The NDTS Gateway consists of several key components installed under /opt/nandt-gateway
, unless otherwise noted. Each plays a specific role in data transfer, configuration, or monitoring.
File or Directory | Description |
---|---|
main.py |
Entry point for the gateway's Python-based service |
/etc/systemd/system/data-transport-gateway.service |
systemd unit file used to control the gateway service |
nan-gateway.log |
Runtime log file (location can be changed via log_file_path in config)
|
gateway_configuration.json |
Gateway configuration file containing operational parameters |
data/received/ |
Temporary storage location for incoming dataset files until data is successfully forwarded to the receiver |
data/retransmitter.pid |
Contains the PID of the process that is attempting to re-send data that previously failed to be sent to the receiver. This is used internally by the gateway software to manage retransmitting data |
data/users.dat |
Cached list of user/sample/project/study data pulled from the receiver |
data/user_checksum.dat |
Checksum file used to determine when the users.dat file should be refreshed |
All other files int he nandt-gateway directory are for the operation of the gateway, and are not of general interest
NDTS Operation
- Experiment transfer – Workstation daemons connect on TCP 60195, announce a dataset, and stream it to
received/
. Successful transfers spawn a Transmitter process that forwards the data to the receiver; on success the local copy is deleted. - Retransmit – At start-up and after each daemon heartbeat, a Retransmitter scans
received/
. If a dataset’s original retry window has expired, it launches a new transmitter until delivery succeeds or the file is manually removed. - Heartbeat forwarding – Every daemon heartbeat is wrapped with the gateway UUID, local and UTC timestamps, then sent to the receiver by a short-lived Heartbeat Transmitter
- User list propagation – Every 15s the gateway requests an updated list from the receiver; if the checksum differs it saves the new list to
users.dat
and serves it to workstations on demand.
NDTS Logging
Logging level are controlled by the logging_level parameter in the JSON configuration file (see above)
Example log excerpt:
2022-06-06 09:22:23,130 INFO main [61393]: Starting gateway retransmitter instance... 2022-06-06 09:22:23,130 INFO main [61393]: Experiment file path = /opt/nandt-gateway/data/received 2022-06-06 09:22:23,132 INFO main [61393]: Starting gateway receiver network endpoint... 2022-06-06 09:22:23,133 INFO GatewayReceiver [61393]: Starting file receiver... 2022-06-06 09:22:23,133 INFO GatewayRetransmitter [61405]: In GatewayRetransmit handle() method... 2022-06-06 09:22:23,134 INFO GatewayRetransmitter [61405]: No experiments to retransmit -- exiting... 2022-06-06 09:22:23,134 INFO GatewayRetransmitter [61405]: GatewayRetransmit handle() method completed... 2022-06-06 09:23:12,829 INFO GatewayTransmitter [61512]: Heartbeat sent to https://receiver.usnan.org/heartbeat
From the log file note:
- The first message shows the spawning of the retransmitter. The subsequent lines that contain “INFO GatewayRetransmitter” after the timestamp show that there are no experiments to retransmit, so the retransmitter just exits.
- The line that starts with “INFO GatewayReceiver” after the timestamp shows the file receiver starting, which means that it is awaiting connects from NDTS Daemons.
- The last lines shows that a heartbeat came in from an NDTS Daemon, and the Gateway is forwarding it to the Receiver.