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