The SeisNetWatch system is a three-tiered distributed system of agents, NetworkStationInfo (NSI) server, and GUI front-end client. Agents collect data and control the acquisition software and communicate over the network to the NSI server. The NSI server is the centralized decision making tool that receives the agent's messages and passes on filtered data to the client.
The client is provided as a Java Applet and the NSI server is a Java Application. The Collection and Control Agents may be written in C++ or Java. The collection agents provided to CalTech are written in C++ and monitor data from comserv shared memory and datalog files. The control agent, written in Java, provides control over shell scripts which change the "usage" of the station. The communications between the agents and the SeisNetWatch server (NSI server) are accomplished using the CORBA Event Service and communication between the client and the NSI are via CORBA objects.
This software is FREE to all academic institutions. If you are interested in running this software, please contact us at isti.com. If you are not a academic institution and wish to use this software, you must contact ISTI.com for licensing terms.
The collection.ini file for the csagent is described in detail in the csagent manual page and only some of the important configuration settings are described here.
There are three sections to the collection.ini file, [TIMEOUTS], [USAGES], and [STATIONS]. Timeouts for data collection polling are specified in the TIMEOUTS section. The most important of the timeouts is the DPGatherWait which is the number of seconds to wait between polling the comserv shared memory area.
[TIMEOUTS] * SPTimeout - how many microsecs to wait before each SP_MSG is spewed SPTimeout=1000 * * DPTimeout - how many microsecs to wait before each DP_MSG is spewed DPTimeout=1000 * * DPFailoverTimeout - how many SECS to wait before spewing DP messages DPFailoverTimeout=30 * * DPGatherWait - how many SECS to wait before gathering all DP messages DPGatherWait=30The [USAGES] section should map usage level number (as specified in the NSI ruleset.ini file) to a set of comserv processes.
* the usage level mapping section (comlink translates to mserv or comserv) [USAGES] 1=off 2=comlink,dlog 3=comlink,dlog,cwdaThe [STATIONS] section is probably the most important section since it specifies which stations the csagent polls for parameters and the debug level. The "Stations" parameter is a comma separated list of the stations (without network codes) that the csagent will operate on. The "NetworkCode" parameter specifies the FDSN Network Code for the set of stations and is used by the NSI for displaying the station names. The "AgentName" parameter uniquely identifies this agent and all of its dynamic parameters and is mainly used for debugging purposes. If the DebugMode is set to 2 (store to a file), then the AgentName is used to create a AgentName.log file in the directory where the csagent is run. To specify another directory (recommended), the "DebugLogDir" should be set to this location. An example [STATIONS] section is shown below:
* The following section contains Collection Agent details [STATIONS] * * Stations tells which stations to operate on * (Stations=*) means ALL stations specified in Init file Stations=ABL,AGA,AGO,ALP,ALV,ARG,ARV,BAC,BAK,BAL,BAR,BAT NetworkCode=CI * Init - points to an initialization specific file. Init=/etc/stations.ini * AgentName - name of this agent AgentName=TestCA1 ########################################################## * DebugMode - set to 0 for off, 1 to spew messages to stderr, 2 to file DebugMode=2 * DebugLevel - set to the level of debug you want 0-3, higher == more verbose * 0 = sys, 1 = run, 2 = init, 3 = spill your guts DebugLevel=3 DebugLogDir=/home/isti/collection/log[Back to Top]
statParamName="value"where the "statParamName" is the name of the static parameter and the "value" is a numeric or string enclosed in quotes. If the statParamName is set to the reserved word getComservParams, a comma separated list of station.ini keywords is expected and each of these keywords respective values will be retrieved from the station.ini file. An example below shows the use of this for the station.ini file for AGO.
[CAStaticParams] getComservParams="mcastif,udpaddr,ipport" LastUser="AGO station.ini edited by Paul F." LastEdit="July 4, 2000 12:00 PM"In this example, the getComservParams is used and indicates that three comserv parameters from the station.ini file should be sent: mcastif, updaddr, and ipport. In addition, there are two static parameters which indicate who edited the file and when. All of this information will be passed to the NSI and viewable in the GUI station detail tab for this station.
csagent -ORBconfig orb.config collection.iniSince the csagent is a dynamically linked executable program it requires access to some of the GNU C++ libraries (for Solaris, these are stored on the /usr/local/lib directory), and thus the LD_LIBRARY_PATH must be set to include the appropriate directory.
The order of starting of the csagent and NSI are irrelevant. The csagent will wait polling for the event channels to appear before it takes any action. However, if the host computer on which the NSI resides (and thus the event channels) dies, then the csagent will exit with a communications failure and needs to be automatically restarted. This can be done with a simple C shell script as described below:
#! /bin/csh cd /home/isti/csagent/conf while (1) csagent -ORBconfig orb.config collection.ini # wait 60 seconds for the NSI host to reboot sleep 60 endAlternatively, the csagent can be started and maintained in the init process and respawned as necessary. See the init manual page for details and create an /etc/inittab entry if you wish to use this respawning technique.
DynamicParamName="chan1,chan2,chan3,..."where DynamicParamName can be one of the following: DataLatencyChannels, ClockQualityChannels, or MassPositionChannels. The channel list must be quoted, comma separated (no whitespace), list of channels that should be monitored for the given dynamic parameter. An example from a station.ini file is shown below:
[CADynamicParams] DataLatencyChannels="BHZ,HHZ" ClockQualityChannels="HHZ" MassPositionChannels="UMZ,UME,UMN" * end of the dynamic params section[Back to Top]
dlogagent -ORBconfig orb.config collection.iniSince the dlogagent is a dynamically linked executable program it requires access to some of the GNU C++ libraries (for Solaris, these are stored on the /usr/local/lib directory), and thus the LD_LIBRARY_PATH must be set to include the appropriate directory.
The order of starting of the dlogagent and NSI are irrelevant. The dlogagent will wait polling for the event channels to appear before it takes any action. However, if the host computer on which the NSI resides (and thus the event channels) dies, then the dlogagent will exit with a communications failure and needs to be automatically restarted. This can be done with a simple C shell script as described below:
#! /bin/csh cd /home/isti/dlogagent/conf while (1) dlogagent -ORBconfig orb.config collection.ini # wait 60 seconds for the NSI host to reboot sleep 60 endAlternatively, the dlogagent can be started and maintained in the init process and respawned as necessary. See the init manual page for details and create an /etc/inittab entry if you wish to use this respawning technique.