NDTS Gateway Installation: Difference between revisions
Mmaciejewski (talk | contribs) |
Mmaciejewski (talk | contribs) |
||
Line 146: | Line 146: | ||
| <code>gateway_configuration.json</code> || Gateway configuration file containing operational parameters | | <code>gateway_configuration.json</code> || Gateway configuration file containing operational parameters | ||
|- | |- | ||
| <code>data/</code> || | | <code>data/received/</code>|| Temporary storage location for incoming dataset files until data is successfully forwarded to the receiver | ||
|- | |- | ||
| <code>data/retransmitter.pid</code>||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 | |||
| <code>data/retransmitter.pid</code> || PID | |||
|- | |- | ||
| <code>data/users.dat</code> || Cached user/sample/project list pulled from the receiver | | <code>data/users.dat</code> || Cached user/sample/project list pulled from the receiver |
Revision as of 14:56, 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 user/sample/project list pulled from the receiver |
data/user_checksum.dat |
Checksum file used to determine when the user list should be refreshed |
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. :contentReference[oaicite:2]{index=2} - 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 15 s 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 is controlled by the "logging_level"
key in gateway_configuration.json
.
Levels (high → low volume): fatal
, error
, warning
, info
, debug
.
Default is info
. The log file path defaults to /opt/nandt-gateway/nan-gateway.log
. :contentReference[oaicite:3]{index=3}
Example log excerpt:
2022-06-06 09:22:23,130 INFO main [61393]: Starting gateway retransmitter instance... 2022-06-06 09:22:23,132 INFO main [61393]: Starting gateway receiver network endpoint... 2022-06-06 09:23:12,829 INFO GatewayTransmitter [61512]: Heartbeat sent to https://receiver.usnan.org/heartbeat
:contentReference[oaicite:4]{index=4}