| 5 | 
   | 
 # configuration system has this file as its  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 6 | 
   | 
 # root of configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 7 | 
   | 
 # | 
 
 
 
 
 
 
 
 
 | 8 | 
 + | 
 # This is a working sample configuration, which | 
 
 
 
 
 
 
 
 
 | 9 | 
 + | 
 # aims to provide a working "out of the box" | 
 
 
 
 
 
 
 
 
 | 10 | 
 + | 
 # setup, aswell as a some example configuration. | 
 
 
 
 
 
 
 
 
 | 11 | 
 + | 
 # | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 12 | 
   | 
 # $Author$ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 13 | 
   | 
 # $Id$ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 14 | 
   | 
 # | 
 
 
 
 
 
 
 
 
 | 15 | 
 + | 
 # http://www.i-scream.org.uk/ | 
 
 
 
 
 
 
 
 
 | 16 | 
 + | 
 # | 
 
 
 
 
 
 
 
 
 | 17 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 18 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 19 | 
   | 
 #### Configuration Files & Groups | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 20 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 21 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 22 | 
 < | 
 # for computing machines | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 23 | 
 < | 
 group.computing=Host.129.12.4.*; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 24 | 
 < | 
 config.computing=computing.conf | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 22 | 
 > | 
 # All components, such as hosts, will take their configuration | 
 
 
 
 
 
 | 23 | 
 > | 
 # as given in this file. Unless, that is, they have an extra | 
 
 
 
 
 
 | 24 | 
 > | 
 # configuration file specified here, or they're in a group | 
 
 
 
 
 
 | 25 | 
 > | 
 # that has a configuration file. If this is the case the extra | 
 
 
 
 
 
 | 26 | 
 > | 
 # configuration will override what is given in this file. | 
 
 
 
 
 
 
 
 
 
 
 
 | 27 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 28 | 
 < | 
 # for library machines | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 29 | 
 < | 
 group.library=Host.129.12.58.*; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 30 | 
 < | 
 config.library=library.conf | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 28 | 
 > | 
 # We can define an extra configuration file for any component | 
 
 
 
 
 
 | 29 | 
 > | 
 # of the system. This is done by specifying the following: | 
 
 
 
 
 
 | 30 | 
 > | 
 # | 
 
 
 
 
 
 | 31 | 
 > | 
 # config.component=someconfigfile.conf | 
 
 
 
 
 
 | 32 | 
 > | 
 # | 
 
 
 
 
 
 | 33 | 
 > | 
 # Component names will be defined in the documentation for | 
 
 
 
 
 
 | 34 | 
 > | 
 # the component. An example is that a host component is | 
 
 
 
 
 
 | 35 | 
 > | 
 # known by the name "Host.hostname" or "Host.ip". | 
 
 
 
 
 
 | 36 | 
 > | 
 # It is also possible to use the wildcard "*" in a | 
 
 
 
 
 
 | 37 | 
 > | 
 # hostname or IP address. | 
 
 
 
 
 
 
 
 
 
 
 
 | 38 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 39 | 
 < | 
 # for SSB machines | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 40 | 
 < | 
 group.ssb=Host.stue*.ukc.ac.uk; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 41 | 
 < | 
 config.ssb=ssb.conf | 
 
 
 
 
 
 
 
 
 
 | 39 | 
 > | 
 # This defines that server.example.com has some extra | 
 
 
 
 
 
 | 40 | 
 > | 
 # configuration in the file 'server.conf'. | 
 
 
 
 
 
 | 41 | 
 > | 
 config.Host.server.example.com=exserver.conf | 
 
 
 
 
 
 
 
 
 
 
 
 | 42 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 43 | 
 < | 
 # mySQL configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 44 | 
 < | 
 config.mySQL=mySQL.conf | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 43 | 
 > | 
 # All webservers are placed in a group named 'www'. | 
 
 
 
 
 
 | 44 | 
 > | 
 group.www=Host.www1.example.com;Host.www2.example.com | 
 
 
 
 
 
 | 45 | 
 > | 
 # Then we define some extra config for them. | 
 
 
 
 
 
 | 46 | 
 > | 
 config.www=webservers.conf | 
 
 
 
 
 
 
 
 
 
 
 
 | 47 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 48 | 
 + | 
 # Our workstations are in their own subnet. | 
 
 
 
 
 
 
 
 
 | 49 | 
 + | 
 group.workstations=Host.192.168.10.*; | 
 
 
 
 
 
 
 
 
 | 50 | 
 + | 
 # They can have their own config too. | 
 
 
 
 
 
 
 
 
 | 51 | 
 + | 
 config.workstations=workstations.conf | 
 
 
 
 
 
 
 
 
 | 52 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 53 | 
 + | 
 # Any hosts not specified by now have the default | 
 
 
 
 
 
 
 
 
 | 54 | 
 + | 
 # config as given in this file. | 
 
 
 
 
 
 
 
 
 | 55 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 56 | 
 + | 
 # Another component of the system is the mySQL | 
 
 
 
 
 
 
 
 
 | 57 | 
 + | 
 # database part of the server call the DBInterface. | 
 
 
 
 
 
 
 
 
 | 58 | 
 + | 
 # This has it's own config so the passwords for the | 
 
 
 
 
 
 
 
 
 | 59 | 
 + | 
 # mySQL database can be kept seperate. | 
 
 
 
 
 
 
 
 
 | 60 | 
 + | 
 #config.mySQL=mySQL.conf | 
 
 
 
 
 
 
 
 
 | 61 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 62 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 63 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 64 | 
   | 
 #### Misc system-wide configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 65 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 66 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 67 | 
 < | 
 # the time (in seconds) that checks should be made for | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 68 | 
 < | 
 # changes in configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 67 | 
 > | 
 # The ConfigurationProxy caches configuration for various | 
 
 
 
 
 
 | 68 | 
 > | 
 # parts of the server. This setting defines how often, in | 
 
 
 
 
 
 | 69 | 
 > | 
 # seconds, the proxy will check if the data it contains | 
 
 
 
 
 
 | 70 | 
 > | 
 # is still valid. | 
 
 
 
 
 
 
 
 
 
 
 
 | 71 | 
   | 
 ConfigurationProxy.updateTime=60 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 72 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 73 | 
 < | 
 # The time interval at which the Queue's should be monitored | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 73 | 
 > | 
 # The internal Queue's can be monitored. This specifies | 
 
 
 
 
 
 | 74 | 
 > | 
 # the interval, in seconds, at which their state should | 
 
 
 
 
 
 | 75 | 
 > | 
 # be monitored. | 
 
 
 
 
 
 
 
 
 
 
 
 | 76 | 
   | 
 Queue.MonitorInterval=15 | 
 
 
 
 
 
 
 
 
 | 77 | 
 + | 
 # The maximum size a Queue can be before items are | 
 
 
 
 
 
 
 
 
 | 78 | 
 + | 
 # dropped when new ones arrive. | 
 
 
 
 
 
 
 
 
 | 79 | 
 + | 
 Queue.SizeLimit=1000 | 
 
 
 
 
 
 
 
 
 | 80 | 
 + | 
 # And which items we should drop when the queue is full | 
 
 
 
 
 
 
 
 
 | 81 | 
 + | 
 # and new items arrive. Choices are: | 
 
 
 
 
 
 
 
 
 | 82 | 
 + | 
 # RANDOM - drop a random item from the queue | 
 
 
 
 
 
 
 
 
 | 83 | 
 + | 
 # FIRST  - drop the first item from the queue | 
 
 
 
 
 
 
 
 
 | 84 | 
 + | 
 # LAST   - drop the last item from the queue | 
 
 
 
 
 
 
 
 
 | 85 | 
 + | 
 # DROP   - drop the new item from the queue | 
 
 
 
 
 
 
 
 
 | 86 | 
 + | 
 Queue.RemoveAlgorithm=FIRST | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 87 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 88 | 
 + | 
 # The XMLCache caches data passing through the system. | 
 
 
 
 
 
 
 
 
 | 89 | 
 + | 
 # This setting specifies the time, in seconds, at which | 
 
 
 
 
 
 
 
 
 | 90 | 
 + | 
 # the caches contents will be rotated. In real terms | 
 
 
 
 
 
 
 
 
 | 91 | 
 + | 
 # this means the minimum age at which an XMLPacket can | 
 
 
 
 
 
 
 
 
 | 92 | 
 + | 
 # be before it is up for deletion from the cache. | 
 
 
 
 
 
 
 
 
 | 93 | 
 + | 
 XMLCache.cleanupPeriod=30 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 94 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 95 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 96 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 97 | 
   | 
 #### FilterManager configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 98 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 99 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 100 | 
 < | 
 # The default port to listen for new host connections | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 100 | 
 > | 
 # The FilterManager accepts connections from hosts | 
 
 
 
 
 
 | 101 | 
 > | 
 # upon startup. It provides them with configuration | 
 
 
 
 
 
 | 102 | 
 > | 
 # and details of which filter to talk to. This setting | 
 
 
 
 
 
 | 103 | 
 > | 
 # specifies which port (TCP) it listens on. | 
 
 
 
 
 
 
 
 
 
 
 
 | 104 | 
   | 
 FilterManager.listenPort=4567 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 105 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 106 | 
 + | 
 # An Access Control List for the FilterManager. One | 
 
 
 
 
 
 
 
 
 | 107 | 
 + | 
 # might consider something like this: | 
 
 
 
 
 
 
 
 
 | 108 | 
 + | 
 # | 
 
 
 
 
 
 
 
 
 | 109 | 
 + | 
 # FilterManager.ACL=DEFAULT:DENY;*.example.com:ALLOW | 
 
 
 
 
 
 
 
 
 | 110 | 
 + | 
 FilterManager.ACL=DEFAULT:ALLOW | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 111 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 112 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 113 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 114 | 
   | 
 #### Filter configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 115 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 116 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 117 | 
 < | 
 # The default port for Filter's to listen on | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 117 | 
 > | 
 # A Filter accepts data from hosts on a UDP port. It is | 
 
 
 
 
 
 | 118 | 
 > | 
 # specified here. | 
 
 
 
 
 
 
 
 
 
 
 
 | 119 | 
   | 
 Filter.UDPListenPort=4589 | 
 
 
 
 
 
 
 
 
 
 | 58 | 
 – | 
 Filter.TCPListenPort=4589 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 120 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 121 | 
 < | 
 # Plugin Information | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 122 | 
 < | 
 Filter.PluginsPackage=uk.ac.ukc.iscream.filter.plugins | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 123 | 
 < | 
 Filter.Plugins=TypeChecker;EnforceEssentialData | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 121 | 
 > | 
 # Filters contain plugins for checking the data passing | 
 
 
 
 
 
 | 122 | 
 > | 
 # through them. This plugins do the job of "filtering". | 
 
 
 
 
 
 | 123 | 
 > | 
 # This setting specifies the java package they're | 
 
 
 
 
 
 | 124 | 
 > | 
 # contained in. | 
 
 
 
 
 
 | 125 | 
 > | 
 Filter.PluginsPackage=uk.org.iscream.cms.server.filter.plugins | 
 
 
 
 
 
 | 126 | 
 > | 
 # And the names of the plugins to be loaded. | 
 
 
 
 
 
 | 127 | 
 > | 
 Filter.Plugins=TypeChecker;EnforceEssentialData;SourceChecker | 
 
 
 
 
 
 
 
 
 
 
 
 | 128 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 129 | 
 < | 
 # The name for the root filter | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 129 | 
 > | 
 # The special filter known as the "Root Filter" needs | 
 
 
 
 
 
 | 130 | 
 > | 
 # a name within the system. | 
 
 
 
 
 
 
 
 
 
 
 
 | 131 | 
   | 
 RootFilter.name=root | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 132 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 133 | 
 < | 
 # The default parent filter (should almost always be the same as Filter.rootFilter) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 133 | 
 > | 
 # Every Filter, except the root, needs a parent to | 
 
 
 
 
 
 | 134 | 
 > | 
 # send their data to. This is usually the root filter, | 
 
 
 
 
 
 | 135 | 
 > | 
 # although in more complex setups it might be another | 
 
 
 
 
 
 | 136 | 
 > | 
 # filter - giving a tree structure. | 
 
 
 
 
 
 
 
 
 
 
 
 | 137 | 
   | 
 Filter.parentFilter=root | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 138 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 139 | 
 + | 
 # A Filter can accept data through UDP, or from | 
 
 
 
 
 
 
 
 
 | 140 | 
 + | 
 # an upstream Filter (CORBA). These methods can be | 
 
 
 
 
 
 
 
 
 | 141 | 
 + | 
 # individually turned of on a filter. The default | 
 
 
 
 
 
 
 
 
 | 142 | 
 + | 
 # is to have them all on. | 
 
 
 
 
 
 
 
 
 | 143 | 
 + | 
 # (comment or set to 0 to disable) | 
 
 
 
 
 
 
 
 
 | 144 | 
 + | 
 Filter.ActivateUDPReader=1 | 
 
 
 
 
 
 
 
 
 | 145 | 
 + | 
 Filter.ActivateCORBAReader=1 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 146 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 147 | 
 + | 
 # We can also specify Access Control Lists for the | 
 
 
 
 
 
 
 
 
 | 148 | 
 + | 
 # UDP input of the Filters. One might want something | 
 
 
 
 
 
 
 
 
 | 149 | 
 + | 
 # restrictive like this: | 
 
 
 
 
 
 
 
 
 | 150 | 
 + | 
 # | 
 
 
 
 
 
 
 
 
 | 151 | 
 + | 
 # Filter.UDPACL=DEFAULT:DENY;*.example.com:ALLOW | 
 
 
 
 
 
 
 
 
 | 152 | 
 + | 
 Filter.UDPACL=DEFAULT:ALLOW | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 153 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 154 | 
 + | 
 # A Filter plugin called the SourceChecker verifies | 
 
 
 
 
 
 
 
 
 | 155 | 
 + | 
 # that packets come from permitted hosts. It is | 
 
 
 
 
 
 
 
 
 | 156 | 
 + | 
 # given an ACL to check the hosts against. A possible | 
 
 
 
 
 
 
 
 
 | 157 | 
 + | 
 # ACL might be: | 
 
 
 
 
 
 
 
 
 | 158 | 
 + | 
 # | 
 
 
 
 
 
 
 
 
 | 159 | 
 + | 
 # Filter.SourceCheckerPluginACL=DEFAULT:DENY;*.example.com:ALLOW | 
 
 
 
 
 
 
 
 
 | 160 | 
 + | 
 Filter.SourceCheckerPluginACL=DEFAULT:ALLOW | 
 
 
 
 
 
 
 
 
 | 161 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 162 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 163 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 164 | 
   | 
 #### Root filter interfaces configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 165 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 166 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 167 | 
 < | 
 # Comment either of these (or delete them) and | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 168 | 
 < | 
 # that interface won't be started | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 167 | 
 > | 
 # The Root FIlter can send data to various upstream | 
 
 
 
 
 
 | 168 | 
 > | 
 # data processors. There are two of these at present | 
 
 
 
 
 
 | 169 | 
 > | 
 # in the server - the DBInterface and the ClientInterface. | 
 
 
 
 
 
 | 170 | 
 > | 
 # Their component names are given here as defined below. | 
 
 
 
 
 
 | 171 | 
 > | 
 # (the DBInterface is switched off - commented - by default) | 
 
 
 
 
 
 | 172 | 
 > | 
 #RootFilter.dbInterfaceName=database | 
 
 
 
 
 
 
 
 
 
 
 
 | 173 | 
   | 
 RootFilter.realtimeInterfaceName=realtimeclients | 
 
 
 
 
 
 
 
 
 
 | 79 | 
 – | 
 RootFilter.dbInterfaceName=database | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 174 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 175 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 | 82 | 
 – | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 176 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 177 | 
   | 
 #### Client interface configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 178 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 179 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 180 | 
 < | 
 # The port for the client interface to listen on | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 180 | 
 > | 
 # The client interface listens for connections from clients | 
 
 
 
 
 
 | 181 | 
 > | 
 # on a TCP port. It is specified here. | 
 
 
 
 
 
 
 
 
 
 
 
 | 182 | 
   | 
 ClientInterface.listenPort=4510 | 
 
 
 
 
 
 
 
 
 | 183 | 
 + | 
 # The component name for the Client Interface. This should | 
 
 
 
 
 
 
 
 
 | 184 | 
 + | 
 # match the name specified to the Root Filter above. | 
 
 
 
 
 
 
 
 
 | 185 | 
 + | 
 ClientInterface.name=realtimeclients | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 186 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 187 | 
 + | 
 # The Client Interface has two channels, control and data. | 
 
 
 
 
 
 
 
 
 | 188 | 
 + | 
 # Each of these can have an ACL for allowing connections. | 
 
 
 
 
 
 
 
 
 | 189 | 
 + | 
 # As per previous examples in this configuration file they | 
 
 
 
 
 
 
 
 
 | 190 | 
 + | 
 # could be set restrictively, but we'll leave them open | 
 
 
 
 
 
 
 
 
 | 191 | 
 + | 
 # by default | 
 
 
 
 
 
 
 
 
 | 192 | 
 + | 
 ClientInterface.TCPControlChannelACL=DEFAULT:ALLOW | 
 
 
 
 
 
 
 
 
 | 193 | 
 + | 
 ClientInterface.TCPDataChannelACL=DEFAULT:ALLOW | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 194 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 195 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 196 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 | 197 | 
 + | 
 #### Database interface configuration | 
 
 
 
 
 
 
 
 
 | 198 | 
 + | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 | 199 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 200 | 
 + | 
 # The name for the Database Interface. This should match | 
 
 
 
 
 
 
 
 
 | 201 | 
 + | 
 # the name given to the Root Filter. | 
 
 
 
 
 
 
 
 
 | 202 | 
 + | 
 DBInterface.name=database | 
 
 
 
 
 
 
 
 
 | 203 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 204 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 205 | 
 + | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 206 | 
   | 
 #### Host Configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 207 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 208 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 209 | 
 < | 
 # The default filter for a new host | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 209 | 
 > | 
 # A host can use any filter. We'll set the default filter | 
 
 
 
 
 
 | 210 | 
 > | 
 # for all hosts to be 'filter1'. This can be a list. | 
 
 
 
 
 
 
 
 
 
 
 
 | 211 | 
   | 
 Host.filter=filter1; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 212 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 213 | 
 < | 
 # The default update times for a new host | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 214 | 
 < | 
 Host.UDPUpdateTime=10 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 101 | 
 < | 
 Host.TCPUpdateTime=60 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 102 | 
 < | 
 Host.AveragerUpdateTime=5 | 
 
 
 
 
 
 
 
 
 
 | 213 | 
 > | 
 # Hosts send data every UDPUpdateTime, in seconds. | 
 
 
 
 
 
 | 214 | 
 > | 
 Host.UDPUpdateTime=60 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 215 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 216 | 
 < | 
 # The services checks to run on a host | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 217 | 
 < | 
 Host.serviceChecksPackage=uk.ac.ukc.iscream.filter.plugins | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 218 | 
 < | 
 Host.serviceChecks=HTTP;SMTP;POP3;SSH;POP3;IMAP | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 216 | 
 > | 
 # How long a hosts config is valid for (a TTL effectively) | 
 
 
 
 
 
 | 217 | 
 > | 
 # after this time, in seconds, has passed a host should | 
 
 
 
 
 
 | 218 | 
 > | 
 # consider it's configuration invalid and check for a new | 
 
 
 
 
 
 | 219 | 
 > | 
 # configuration as soon as it can. | 
 
 
 
 
 
 | 220 | 
 > | 
 Host.ConfigTTL=3600 | 
 
 
 
 
 
 
 
 
 
 
 
 | 221 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 222 | 
 + | 
 # We can run service checks on a host. The java package | 
 
 
 
 
 
 
 
 
 | 223 | 
 + | 
 # which contains them is specified here. | 
 
 
 
 
 
 
 
 
 | 224 | 
 + | 
 Host.serviceChecksPackage=uk.org.iscream.cms.server.filter.plugins | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 225 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 226 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 227 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 228 | 
   | 
 #### Monitor Configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 229 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 230 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 231 | 
 < | 
 # the monitors to run | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 232 | 
 < | 
 Monitor.PluginsPackage=uk.ac.ukc.iscream.client.monitors | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 233 | 
 < | 
 Monitor.Plugins=CPU;Memory;Swap;Heartbeat; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 231 | 
 > | 
 # Monitors allow data to be watched for possible problems. | 
 
 
 
 
 
 | 232 | 
 > | 
 # This setting specifies which java package they're in. | 
 
 
 
 
 
 | 233 | 
 > | 
 Monitor.PluginsPackage=uk.org.iscream.cms.server.client.monitors | 
 
 
 
 
 
 | 234 | 
 > | 
 # And which ones should be loaded. | 
 
 
 
 
 
 | 235 | 
 > | 
 Monitor.Plugins=CPU;Load;Process;Disk;Memory;Swap;Services;\ | 
 
 
 
 
 
 | 236 | 
 > | 
                 Heartbeat;Queue;UserCount;WebFeeder; | 
 
 
 
 
 
 
 
 
 
 
 
 | 237 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 238 | 
 + | 
 # Alerts timeout after a given time in seconds and go up | 
 
 
 
 
 
 
 
 
 | 239 | 
 + | 
 # to the next level. These can be overridden for monitors | 
 
 
 
 
 
 
 
 
 | 240 | 
 + | 
 # on an individual basis. | 
 
 
 
 
 
 
 
 
 | 241 | 
 + | 
 Monitor.alertTimeout.NOTICE=60 | 
 
 
 
 
 
 
 
 
 | 242 | 
 + | 
 Monitor.alertTimeout.WARNING=900 | 
 
 
 
 
 
 
 
 
 | 243 | 
 + | 
 Monitor.alertTimeout.CAUTION=1800 | 
 
 
 
 
 
 
 
 
 | 244 | 
 + | 
 Monitor.alertTimeout.CRITICAL=3600 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 245 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 246 | 
 < | 
 ## CPU monitor configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 247 | 
 < | 
 # threshold values | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 248 | 
 < | 
 #  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 249 | 
 < | 
 # note: if the UPPER threshold is broken, | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 250 | 
 < | 
 # the alertTimeout values are halved. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 251 | 
 < | 
 # This is to escalate the alert quicker. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 246 | 
 > | 
 ## Threshold values | 
 
 
 
 
 
 | 247 | 
 > | 
 # | 
 
 
 
 
 
 | 248 | 
 > | 
 # Here we specify the threshold for each monitor. When | 
 
 
 
 
 
 | 249 | 
 > | 
 # a threshold is broken an alert is raised. If the | 
 
 
 
 
 
 | 250 | 
 > | 
 # UPPER threshold is broken the alertTimeout values | 
 
 
 
 
 
 | 251 | 
 > | 
 # given above are halved to make the alert escalate | 
 
 
 
 
 
 | 252 | 
 > | 
 # quicker. | 
 
 
 
 
 
 | 253 | 
 > | 
  | 
 
 
 
 
 
 | 254 | 
 > | 
 # CPU monitor threshold values | 
 
 
 
 
 
 
 
 
 
 
 
 | 255 | 
   | 
 Monitor.CPU.threshold.LOWER=90 | 
 
 
 
 
 
 
 
 
 
 
 
 | 256 | 
 < | 
 Monitor.CPU.threshold.UPPER=99 | 
 
 
 
 
 
 
 
 
 
 | 256 | 
 > | 
 Monitor.CPU.threshold.UPPER=95 | 
 
 
 
 
 
 
 
 
 
 
 
 | 257 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 258 | 
 < | 
 # timings of the alerts (in seconds) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 259 | 
 < | 
 Monitor.CPU.alertTimeout.NOTICE=60 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 260 | 
 < | 
 Monitor.CPU.alertTimeout.WARNING=900 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 131 | 
 < | 
 Monitor.CPU.alertTimeout.CAUTION=1800 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 132 | 
 < | 
 Monitor.CPU.alertTimeout.CRITICAL=3600 | 
 
 
 
 
 
 
 
 
 
 | 258 | 
 > | 
 # Load monitor threshold values | 
 
 
 
 
 
 | 259 | 
 > | 
 Monitor.Load.threshold.LOWER=10.0 | 
 
 
 
 
 
 | 260 | 
 > | 
 Monitor.Load.threshold.UPPER=20.0 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 261 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 262 | 
 + | 
 # Process Count threshold values | 
 
 
 
 
 
 
 
 
 | 263 | 
 + | 
 Monitor.Process.threshold.LOWER=500 | 
 
 
 
 
 
 
 
 
 | 264 | 
 + | 
 Monitor.Process.threshold.UPPER=1000 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 265 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 266 | 
 < | 
 ## Memory monitor configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 136 | 
 < | 
 # threshold values | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 137 | 
 < | 
 #  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 138 | 
 < | 
 # note: if the UPPER threshold is broken, | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 139 | 
 < | 
 # the alertTimeout values are halved. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 140 | 
 < | 
 # This is to escalate the alert quicker. | 
 
 
 
 
 
 
 
 
 
 | 266 | 
 > | 
 # Memory monitor threshold values | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 267 | 
   | 
 Monitor.Memory.threshold.LOWER=80 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 268 | 
   | 
 Monitor.Memory.threshold.UPPER=90 | 
 
 
 
 
 
 
 
 
 | 269 | 
 + | 
 # Whether to include 'cache' in the 'free' value | 
 
 
 
 
 
 
 
 
 | 270 | 
 + | 
 # (1 is true, anything else is false) | 
 
 
 
 
 
 
 
 
 | 271 | 
 + | 
 Monitor.Memory.useCacheAsFree=1 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 272 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 273 | 
 < | 
 # timings of the alerts (in seconds) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 145 | 
 < | 
 Monitor.Memory.alertTimeout.NOTICE=60 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 146 | 
 < | 
 Monitor.Memory.alertTimeout.WARNING=900 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 147 | 
 < | 
 Monitor.Memory.alertTimeout.CAUTION=1800 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 148 | 
 < | 
 Monitor.Memory.alertTimeout.CRITICAL=3600 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 149 | 
 < | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 150 | 
 < | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 151 | 
 < | 
 ## Swap monitor configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 152 | 
 < | 
 # threshold values | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 153 | 
 < | 
 #  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 154 | 
 < | 
 # note: if the UPPER threshold is broken, | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 155 | 
 < | 
 # the alertTimeout values are halved. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 156 | 
 < | 
 # This is to escalate the alert quicker. | 
 
 
 
 
 
 
 
 
 
 | 273 | 
 > | 
 # Swap monitor threshold values | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 274 | 
   | 
 Monitor.Swap.threshold.LOWER=80 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 275 | 
   | 
 Monitor.Swap.threshold.UPPER=90 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 276 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 277 | 
 < | 
 # timings of the alerts (in seconds) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 278 | 
 < | 
 Monitor.Swap.alertTimeout.NOTICE=60 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 279 | 
 < | 
 Monitor.Swap.alertTimeout.WARNING=900 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 163 | 
 < | 
 Monitor.Swap.alertTimeout.CAUTION=1800 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 164 | 
 < | 
 Monitor.Swap.alertTimeout.CRITICAL=3600 | 
 
 
 
 
 
 
 
 
 
 | 277 | 
 > | 
 # UserCount monitor threshold values | 
 
 
 
 
 
 | 278 | 
 > | 
 Monitor.UserCount.threshold.LOWER=100 | 
 
 
 
 
 
 | 279 | 
 > | 
 Monitor.UserCount.threshold.UPPER=200 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 280 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 281 | 
 + | 
 # Disk monitor threshold values | 
 
 
 
 
 
 
 
 
 | 282 | 
 + | 
 Monitor.Disk.threshold.LOWER=90 | 
 
 
 
 
 
 
 
 
 | 283 | 
 + | 
 Monitor.Disk.threshold.UPPER=95 | 
 
 
 
 
 
 
 
 
 | 284 | 
 + | 
 # Thresholds given are PERCENTAGE or VALUE | 
 
 
 
 
 
 
 
 
 | 285 | 
 + | 
 # where PERCENTAGE is a percentage of disk in use | 
 
 
 
 
 
 
 
 
 | 286 | 
 + | 
 # and VALUE is an absolute value of space free | 
 
 
 
 
 
 
 
 
 | 287 | 
 + | 
 Monitor.Disk.thresholdMeasure=PERCENTAGE | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 288 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 289 | 
 < | 
 ## Heartbeat monitor configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 290 | 
 < | 
 # threshold values | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 289 | 
 > | 
 # Queue monitor threshold values | 
 
 
 
 
 
 | 290 | 
 > | 
 Monitor.Queue.threshold.LOWER=50 | 
 
 
 
 
 
 | 291 | 
 > | 
 Monitor.Queue.threshold.UPPER=80 | 
 
 
 
 
 
 | 292 | 
 > | 
 # Thresholds given are PERCENTAGE or VALUE | 
 
 
 
 
 
 | 293 | 
 > | 
 # where PERCENTAGE is a percentage of the queue in use | 
 
 
 
 
 
 | 294 | 
 > | 
 # and VALUE is an absolute value of free space | 
 
 
 
 
 
 | 295 | 
 > | 
 Monitor.Queue.thresholdMeasure=PERCENTAGE | 
 
 
 
 
 
 | 296 | 
 > | 
  | 
 
 
 
 
 
 | 297 | 
 > | 
 # Services monitor threshold values | 
 
 
 
 
 
 
 
 
 
 
 
 | 298 | 
   | 
 #  | 
 
 
 
 
 
 
 
 
 
 
 
 | 299 | 
 < | 
 # note: if the UPPER threshold is broken, | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 300 | 
 < | 
 # the alertTimeout values are halved. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 301 | 
 < | 
 # This is to escalate the alert quicker. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 302 | 
 < | 
 Monitor.Heartbeat.checkPeriod=50 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 299 | 
 > | 
 # THE SERVICES MONITOR USES A HACK | 
 
 
 
 
 
 | 300 | 
 > | 
 # WHEREBY IT USES THE SERVICE STATUS | 
 
 
 
 
 
 | 301 | 
 > | 
 # AS THE THRESHOLD LEVEL. THIS SHOULD | 
 
 
 
 
 
 | 302 | 
 > | 
 # BE LOOKED AT! | 
 
 
 
 
 
 | 303 | 
 > | 
 # | 
 
 
 
 
 
 | 304 | 
 > | 
 # how many times we should be at the highest level before | 
 
 
 
 
 
 | 305 | 
 > | 
 # we go to a FINAL alert | 
 
 
 
 
 
 | 306 | 
 > | 
 Monitor.Services.reachFINALcount=5 | 
 
 
 
 
 
 | 307 | 
 > | 
  | 
 
 
 
 
 
 | 308 | 
 > | 
 # Heartbeat threshold values | 
 
 
 
 
 
 
 
 
 
 
 
 | 309 | 
   | 
 # these are values in seconds from when the heartbeat | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 310 | 
   | 
 # was *expected* to arrive (ie. last + hearbeat period) | 
 
 
 
 
 
 
 
 
 
 
 
 | 311 | 
 < | 
 Monitor.Heartbeat.threshold.LOWER=120 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 312 | 
 < | 
 Monitor.Heartbeat.threshold.LOWER=300 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 313 | 
 < | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 314 | 
 < | 
 # timings of the alerts (in seconds) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 315 | 
 < | 
 Monitor.Heartbeat.alertTimeout.NOTICE=60 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 316 | 
 < | 
 Monitor.Heartbeat.alertTimeout.WARNING=900 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 182 | 
 < | 
 Monitor.Heartbeat.alertTimeout.CAUTION=1800 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 183 | 
 < | 
 Monitor.Heartbeat.alertTimeout.CRITICAL=3600 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 184 | 
 < | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 185 | 
 < | 
 # this means it will reach a FINAL level, | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 186 | 
 < | 
 # and thus the host will be removed from the monitor list, | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 187 | 
 < | 
 # if the highest level alert is reached and occours this | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 188 | 
 < | 
 # number of times. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 189 | 
 < | 
 # | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 190 | 
 < | 
 # int this setup, that means 5 CRITICAL alerts would occour | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 191 | 
 < | 
 # on a Heartbeat before reaching FINAL. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 192 | 
 < | 
 # If this value is wrong or not present, FINAL is never reached | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 193 | 
 < | 
 # | 
 
 
 
 
 
 
 
 
 
 | 311 | 
 > | 
 Monitor.Heartbeat.threshold.LOWER=180 | 
 
 
 
 
 
 | 312 | 
 > | 
 Monitor.Heartbeat.threshold.UPPER=300 | 
 
 
 
 
 
 | 313 | 
 > | 
 # this is how often we will run a "check" of heartbeats | 
 
 
 
 
 
 | 314 | 
 > | 
 Monitor.Heartbeat.checkPeriod=50 | 
 
 
 
 
 
 | 315 | 
 > | 
 # how many times we should be at the highest level before | 
 
 
 
 
 
 | 316 | 
 > | 
 # we go to a FINAL alert | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 317 | 
   | 
 Monitor.Heartbeat.reachFINALcount=5 | 
 
 
 
 
 
 
 
 
 | 318 | 
 + | 
 # list of hosts we expect to have at startup | 
 
 
 
 
 
 
 
 
 | 319 | 
 + | 
 # this ensures we notice hosts that aren't running, not | 
 
 
 
 
 
 
 
 
 | 320 | 
 + | 
 # just those that have gone down recently. | 
 
 
 
 
 
 
 
 
 | 321 | 
 + | 
 #Monitor.Heartbeat.initialHosts=importantserver.example.com;myserver.example.com | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 322 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 323 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 324 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 325 | 
   | 
 #### Alerter Configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 326 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 | 327 | 
 < | 
 # The following var's are understood by ALL alerters for messages | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 327 | 
 > | 
 # The following variables are understood by ALL alerters | 
 
 
 
 
 
 | 328 | 
 > | 
 # for messages. They will be substituted for their | 
 
 
 
 
 
 | 329 | 
 > | 
 # appropriate value. | 
 
 
 
 
 
 
 
 
 
 
 
 | 330 | 
   | 
 # | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 331 | 
   | 
 # %level%               - the alert level (eg, WARNING) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 332 | 
   | 
 # %threshold%           - the threshold broken (eg, LOWER) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 339 | 
   | 
 # %timeOfFirstAlert%    - the time the first alert was sent | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 340 | 
   | 
 # | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 341 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 342 | 
 < | 
 # alerters to run | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 343 | 
 < | 
 Alerter.PluginsPackage=uk.ac.ukc.iscream.client.alerters | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 344 | 
 < | 
 Alerter.Plugins=EMail;IRC; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 342 | 
 > | 
 # The java package containing the alerters | 
 
 
 
 
 
 | 343 | 
 > | 
 Alerter.PluginsPackage=uk.org.iscream.cms.server.client.alerters | 
 
 
 
 
 
 | 344 | 
 > | 
 # And the names of the ones to activate | 
 
 
 
 
 
 | 345 | 
 > | 
 # You might want to turn them all on, but we only activate | 
 
 
 
 
 
 | 346 | 
 > | 
 # two basic ones by default. | 
 
 
 
 
 
 | 347 | 
 > | 
 # Alerter.Plugins=EMail;IRC;WebFeeder;Logging; | 
 
 
 
 
 
 | 348 | 
 > | 
 Alerter.Plugins=WebFeeder;Logging; | 
 
 
 
 
 
 
 
 
 
 
 
 | 349 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 350 | 
 < | 
 # EMail alerter configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 351 | 
 < | 
 Alerter.EMail.level = CAUTION | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 352 | 
 < | 
 Alerter.EMail.defaultDestList = dev@i-scream.org.uk | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 353 | 
 < | 
 Alerter.EMail.sender = dev@i-scream.org.uk | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 354 | 
 < | 
 Alerter.EMail.smtpServer = mercury.ukc.ac.uk | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 350 | 
 > | 
 # Configuration for the EMail alerter | 
 
 
 
 
 
 | 351 | 
 > | 
 # The level alerts have to bypass to be e-mailed out | 
 
 
 
 
 
 | 352 | 
 > | 
 Alerter.EMail.level = WARNING | 
 
 
 
 
 
 | 353 | 
 > | 
 # A list of people to send alerts to | 
 
 
 
 
 
 | 354 | 
 > | 
 Alerter.EMail.destList = me@example.com | 
 
 
 
 
 
 | 355 | 
 > | 
 # The sender of the e-mail | 
 
 
 
 
 
 | 356 | 
 > | 
 Alerter.EMail.sender = me@example.com | 
 
 
 
 
 
 | 357 | 
 > | 
 # The SMTP server to send alerts to | 
 
 
 
 
 
 | 358 | 
 > | 
 Alerter.EMail.smtpServer = smtp.example.com | 
 
 
 
 
 
 | 359 | 
 > | 
 # The subject line of the e-mail | 
 
 
 
 
 
 
 
 
 
 
 
 | 360 | 
   | 
 Alerter.EMail.subject = i-scream alert: %level% alert on %source% for %attributeName% | 
 
 
 
 
 
 
 
 
 
 
 
 | 361 | 
 < | 
 Alerter.EMail.message = The i-scream distributed central monitoring system has\nraised a %level% alert for the host %source%.\n\nThe value for %attributeName% of %value% has exceeded the\n%threshold% threshold value of %thresholdValue%.\n\nThe next alert (should one occur) will be sent in %timeTillNextAlert%. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 361 | 
 > | 
 # The message in the e-mail | 
 
 
 
 
 
 | 362 | 
 > | 
 Alerter.EMail.message = The i-scream distributed central monitoring system has\nraised a %level% alert for the host %source%.\n\nThe value for %attributeName% of %value% has exceeded the\n%threshold% threshold value of %thresholdValue%.\n\nThis alert was originally raised at %timeOfFirstAlert%,\nwhich was %timeSinceFirstAlert% ago.\n\nThe next alert (should one occur) will be sent in %timeTillNextAlert%. | 
 
 
 
 
 
 
 
 
 
 
 
 | 363 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 364 | 
 < | 
 # IRC alerter configuration | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 364 | 
 > | 
 # Configuration for the IRC alerter | 
 
 
 
 
 
 | 365 | 
 > | 
 # The level alerts have to bypass to be sent | 
 
 
 
 
 
 
 
 
 
 
 
 | 366 | 
   | 
 Alerter.IRC.level = OK | 
 
 
 
 
 
 
 
 
 
 
 
 | 367 | 
 < | 
 Alerter.IRC.IRCServer = killigrew.ukc.ac.uk | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 367 | 
 > | 
 # The IRC server name | 
 
 
 
 
 
 | 368 | 
 > | 
 Alerter.IRC.IRCServer = irc.example.com | 
 
 
 
 
 
 | 369 | 
 > | 
 # and it's port | 
 
 
 
 
 
 
 
 
 
 
 
 | 370 | 
   | 
 Alerter.IRC.IRCPort = 6667 | 
 
 
 
 
 
 
 
 
 | 371 | 
 + | 
 # A list of nicks to try and be | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 372 | 
   | 
 Alerter.IRC.nickList = iscreamBot;_iscreamBot;i-screamBot | 
 
 
 
 
 
 
 
 
 | 373 | 
 + | 
 # Username to be | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 374 | 
   | 
 Alerter.IRC.user = i-scream | 
 
 
 
 
 
 
 
 
 
 
 
 | 375 | 
 < | 
 Alerter.IRC.comment = i-scream alerting bot | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 375 | 
 > | 
 # Responses to CTCP prods | 
 
 
 
 
 
 | 376 | 
 > | 
 Alerter.IRC.comment = i-scream alerting bot (based on PircBot) | 
 
 
 
 
 
 | 377 | 
 > | 
 Alerter.IRC.finger = i-scream alerting bot (based on PircBot) | 
 
 
 
 
 
 | 378 | 
 > | 
 # Channel to join | 
 
 
 
 
 
 
 
 
 
 
 
 | 379 | 
   | 
 Alerter.IRC.channel = #i-scream | 
 
 
 
 
 
 
 
 
 | 380 | 
 + | 
 # Message to use when sending an alert | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 381 | 
   | 
 Alerter.IRC.message = %level%: %attributeName% on %source% has passed %threshold%(%thresholdValue%) threshold with %value% - time till next alert (should one occur), %timeTillNextAlert% | 
 
 
 
 
 
 
 
 
 | 382 | 
 + | 
 # How long to wait before reconnecting | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 383 | 
   | 
 Alerter.IRC.reconnectDelay = 30 | 
 
 
 
 
 
 
 
 
 | 384 | 
 + | 
 # Notice to send when starting up | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 385 | 
   | 
 Alerter.IRC.startupNotice = i-scream alerting bot activated  | 
 
 
 
 
 
 
 
 
 | 386 | 
 + | 
 # Commands the bot will recognise | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 387 | 
   | 
 Alerter.IRC.stopCommand = stop alerts | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 388 | 
   | 
 Alerter.IRC.startCommand = start alerts | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 389 | 
   | 
 Alerter.IRC.lastAlertCommand = last alert | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 394 | 
   | 
 Alerter.IRC.timeSinceLastAlertCommand = time since last alert | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 395 | 
   | 
 Alerter.IRC.versionCommand = version | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 396 | 
   | 
 Alerter.IRC.helpCommand = help | 
 
 
 
 
 
 
 
 
 | 397 | 
 + | 
 # Message to send when the bot is addressed and | 
 
 
 
 
 
 
 
 
 | 398 | 
 + | 
 # doesn't understand the command | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 399 | 
   | 
 Alerter.IRC.rejectMessage = sorry, I don't understand your request | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 400 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 401 | 
 + | 
 # Configuration for the Logging Alerter | 
 
 
 
 
 
 
 
 
 | 402 | 
 + | 
 # This alerter writes alerts to the i-scream logfile. | 
 
 
 
 
 
 
 
 
 | 403 | 
 + | 
 # The level alerts have to bypass to be logged | 
 
 
 
 
 
 
 
 
 | 404 | 
 + | 
 Alerter.Logging.level = WARNING | 
 
 
 
 
 
 
 
 
 | 405 | 
 + | 
 # The message to use when logging the alert | 
 
 
 
 
 
 
 
 
 | 406 | 
 + | 
 Alerter.Logging.message = %level%: %attributeName% on %source% has passed %threshold%(%thresholdValue%) threshold with %value% | 
 
 
 
 
 
 
 
 
 | 407 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 408 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 409 | 
   | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 | 410 | 
 + | 
 #### WebFeeder Configuration | 
 
 
 
 
 
 
 
 
 | 411 | 
 + | 
 ############################################################ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 412 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 413 | 
 + | 
 # The WebFeeder drops alerts and latest data in to a | 
 
 
 
 
 
 
 
 
 | 414 | 
 + | 
 # directory for the web interface to use. It is essentially | 
 
 
 
 
 
 
 
 
 | 415 | 
 + | 
 # the link between the web interface and the server. | 
 
 
 
 
 
 
 
 
 | 416 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 417 | 
 + | 
 # Set these to something to tell the WebFeeder to drop | 
 
 
 
 
 
 
 
 
 | 418 | 
 + | 
 # latest data, alerts, or both. Comment themt o disable. | 
 
 
 
 
 
 
 
 
 | 419 | 
 + | 
 WebFeeder.latestActive = true | 
 
 
 
 
 
 
 
 
 | 420 | 
 + | 
 WebFeeder.alertActive = true | 
 
 
 
 
 
 
 
 
 | 421 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 422 | 
 + | 
 # We can make the WebFeeder only drop alerts that go | 
 
 
 
 
 
 
 
 
 | 423 | 
 + | 
 # past a certain level. The default is "OK", which makes | 
 
 
 
 
 
 
 
 
 | 424 | 
 + | 
 # all alerts get passed on. | 
 
 
 
 
 
 
 
 
 | 425 | 
 + | 
 Alerter.WebFeeder.level = OK | 
 
 
 
 
 
 
 
 
 | 426 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 427 | 
 + | 
 # The WebFeeder cleans out old and stale alerts when it | 
 
 
 
 
 
 
 
 
 | 428 | 
 + | 
 # performs a check. This setting is the period, in seconds, | 
 
 
 
 
 
 
 
 
 | 429 | 
 + | 
 # at which a check happens. | 
 
 
 
 
 
 
 
 
 | 430 | 
 + | 
 WebFeeder.checkPeriod = 120 | 
 
 
 
 
 
 
 
 
 | 431 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 432 | 
 + | 
 # Delete alerts older than this, in seconds. | 
 
 
 
 
 
 
 
 
 | 433 | 
 + | 
 WebFeeder.alertDeleteOlderThan = 300 | 
 
 
 
 
 
 
 
 
 | 434 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 435 | 
 + | 
 # Data will be dropped to a subdirectory (specified | 
 
 
 
 
 
 
 
 
 | 436 | 
 + | 
 # below) of this directory. | 
 
 
 
 
 
 
 
 
 | 437 | 
 + | 
 WebFeeder.rootPath = /web/i-scream | 
 
 
 
 
 
 
 
 
 | 438 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 439 | 
 + | 
 # SubDir is the directory below rootPath which latest | 
 
 
 
 
 
 
 
 
 | 440 | 
 + | 
 # data will be placed in. Below that a directory will | 
 
 
 
 
 
 
 
 
 | 441 | 
 + | 
 # be created with the machine name, and a file named | 
 
 
 
 
 
 
 
 
 | 442 | 
 + | 
 # FileName (specified here) will be created containg | 
 
 
 
 
 
 
 
 
 | 443 | 
 + | 
 # the data. | 
 
 
 
 
 
 
 
 
 | 444 | 
 + | 
 WebFeeder.latestSubDir = latest | 
 
 
 
 
 
 
 
 
 | 445 | 
 + | 
 WebFeeder.latestFileName = latest_data | 
 
 
 
 
 
 
 
 
 | 446 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 447 | 
 + | 
 # As above, but for the alerts. | 
 
 
 
 
 
 
 
 
 | 448 | 
 + | 
 WebFeeder.alertSubDir = alert | 
 
 
 
 
 
 
 
 
 | 449 | 
 + | 
 WebFeeder.alertFileName = alert_data | 
 
 
 
 
 
 
 
 
 | 450 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 451 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 452 | 
 + | 
 ############################################################ |