-
Notifications
You must be signed in to change notification settings - Fork 17
How to configure ringserver as a SeedLink streaming server
The IRIS DMC 'ringserver' software is capable of continuously scanning one or more directories for miniSEED data records and serving them as near real-time data streams using the SeedLink protocol. This software allows a data collection center that can create miniSEED data to redistribute their data in near real-time.
- Linux, Solaris or macOS operating system
- C compiler to build the ringserver software
- Process to create 512-byte miniSEED data records
- Download the latest release ringserver source code from: https://github.com/iris-edu/ringserver/releases
- Compile ringserver and copy the binary to a desired directory. Note: for older SunOS/Solaris the
src/Makefile
may need to be edited. - Create configuration file (see below) in a dedicated directory.
- Create required directories like "ring" and, optionally, "tlog" in the dedicated directory.
- Run ringserver, for example:
$ ringserver ring.conf > ring.log 2>&1
- Use dalitool or slinktool to verify that data is flowing as expected.
Any network firewall between the server and the clients must be configured to allow connections from the clients on the SeedLink port (default is TCP port 18000).
The program should operate on any relatively modern releases of Linux, Solaris and macOS operating systems.
Untar/unzip the ringserver source code. In the created 'ringserver' directory typing make
should compile the program.
Compiler options can be tuned by setting the CFLAGS environment variable. For example, building a 32-bit or 64-bit executable can be done by setting the appropriate compiler options in CFLAGS.
Under SunOS/Solaris the 'src/Makefile' needs to be edited to include system networking libraries. Uncomment the LDLIBS line indicated for these systems.
Create a configuration file with some options described in the Configuring the server page, and full details in the config fil
A minimal configuration file for a simple SeedLink server might be:
RingDirectory ring
ListenPort 16000
ListenPort 18000
ServerID "XX Seismic Network"
TransferLogDirectory tlog
TransferLogRX 0
MSeedScan /data/miniseed/ StateFile=scan.state InitCurrentState=y
Ringserver is a single binary that prints log messages to standard out and critical errors to standard error (optionally, all output can be directed to stderr using the -STDERR argument). It can be started from any environment that can start a process. When ringserver receives a TERM or INT signal (i.e. Control-C) it will shut down cleanly, saving it's current ring buffer and scanning state.
Many seismic network data collection centers already have systems that manage continuously running processes, ringserver can usually be incorporated into such systems.
If the server is configured to listen for DataLink connections the DataLink Tool (dalitool) can be used to query the server.
Developed in conjunction with ringserver the dalitool program can be used to monitor data flow from a server, query for data availability in the buffer, query for connected clients and query for server stats.
Alternatively the SeedLink Tool (slinktool) can be used for very similar queries to the server, slinktool uses the same SeedLink interface as client data users.
If configured to write transfer logs ringserver will write packet transfer logs to a specified directory at a specified interval (default is daily). Both transmission (data sent from the server to a client) and reception (data received from a client) can be logged.