ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/build/etc/system.conf
Revision: 1.71
Committed: Mon Feb 24 20:18:45 2003 UTC (21 years, 9 months ago) by tdb
Branch: MAIN
Changes since 1.70: +8 -21 lines
Log Message:
Fairly major commit. This will break the current version of ihost, but this
had to be done really to give Pete something to test the new ihost against.

The main change here is removal of the TCP Heartbeat functionality from the
filter. This meant the following features stopped working :-
  - Heartbeat testing
  - Configuration checking
  - Service checks

The heartbeat testing, specifically the monitor, now looks at the presence
of UDP packets instead. Before it just looked for the presence of a TCP
heartbeat packet, so the change their is fairly negligible. Of course this
means heartbeat testing now relies on the UDP working... but I don't see
this as a problem.

Configuration checking has been repositioned in to the filtermanager. This
is a backwards compatible change - the filtermanager should still perform
as it should for older hosts. But now there's an extra command to check the
configuration is up-to-date, with a similar format to the old TCP protocol
in the filter. (although we may optimise this soon)

The service checks are broken. This isn't a major issue for us as they were
pretty useless in the first place. The concept is good, but the checks are
just far too primitive. I expect at some point I'll work on a seperate
component that just monitors services, which will replace this function.

Further changes in the server include removal of the key checking code,
as this relied on a bolt on to the TCP heartbeat protocol to ship the
key. This got more akward than originally planned, so I'm happy to drop the
idea. In the long term we hope to replace this with a public key systems
for signing and even encryption.

Finally, general tidy up to remove other bits of code that check for
TCP heartbeat packets when they don't need to any more.

File Contents

# User Rev Content
1 tdb 1.2 # This is the default system configuration file
2     # used by all components of the i-scream system
3     #
4     # ALL configuration that uses the centralised
5     # configuration system has this file as its
6     # root of configuration
7     #
8 tdb 1.70 # 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 tdb 1.59 # $Author: tdb $
13 tdb 1.71 # $Id: system.conf,v 1.70 2003/02/23 12:45:21 tdb Exp $
14 tdb 1.70 #
15     # http://www.i-scream.org.uk/
16 ajm 1.14 #
17 tdb 1.70
18 ajm 1.14 ############################################################
19     #### Configuration Files & Groups
20     ############################################################
21    
22 tdb 1.70 # 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     # 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     # 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     # 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 tdb 1.15
62 ajm 1.14
63 ajm 1.16 ############################################################
64     #### Misc system-wide configuration
65     ############################################################
66    
67 tdb 1.70 # 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 ajm 1.16 ConfigurationProxy.updateTime=60
72    
73 tdb 1.70 # The internal Queue's can be monitored. This specifies
74     # the interval, in seconds, at which their state should
75     # be monitored.
76 ajm 1.16 Queue.MonitorInterval=15
77 tdb 1.70 # The maximum size a Queue can be before items are
78     # dropped when new ones arrive.
79 tdb 1.40 Queue.SizeLimit=1000
80 tdb 1.70 # 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 tdb 1.40 Queue.RemoveAlgorithm=FIRST
87 tdb 1.2
88 tdb 1.70 # 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 tdb 1.68 XMLCache.cleanupPeriod=30
94 ajm 1.14
95 tdb 1.70
96 ajm 1.14 ############################################################
97     #### FilterManager configuration
98     ############################################################
99 tdb 1.2
100 tdb 1.70 # 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 tdb 1.2 FilterManager.listenPort=4567
105    
106 tdb 1.70 # 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 ajm 1.14
112    
113     ############################################################
114     #### Filter configuration
115     ############################################################
116    
117 tdb 1.71 # A Filter accepts data from hosts on a UDP port. It is
118     # specified here.
119 tdb 1.2 Filter.UDPListenPort=4589
120    
121 tdb 1.70 # 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 tdb 1.55 Filter.PluginsPackage=uk.org.iscream.cms.server.filter.plugins
126 tdb 1.70 # And the names of the plugins to be loaded.
127 tdb 1.71 Filter.Plugins=TypeChecker;EnforceEssentialData;SourceChecker
128 ajm 1.14
129 tdb 1.70 # The special filter known as the "Root Filter" needs
130     # a name within the system.
131 tdb 1.2 RootFilter.name=root
132 ajm 1.14
133 tdb 1.70 # 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 ajm 1.14 Filter.parentFilter=root
138    
139 tdb 1.71 # A Filter can accept data through UDP, or from
140 tdb 1.70 # 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 tdb 1.61 # (comment or set to 0 to disable)
144     Filter.ActivateUDPReader=1
145     Filter.ActivateCORBAReader=1
146 tdb 1.62
147 tdb 1.70 # We can also specify Access Control Lists for the
148 tdb 1.71 # UDP input of the Filters. One might want something
149     # restrictive like this:
150 tdb 1.70 #
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 tdb 1.65
162 ajm 1.14
163     ############################################################
164     #### Root filter interfaces configuration
165     ############################################################
166    
167 tdb 1.70 # 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 tdb 1.2 RootFilter.realtimeInterfaceName=realtimeclients
174 ajm 1.14
175    
176     ############################################################
177     #### Client interface configuration
178     ############################################################
179    
180 tdb 1.70 # The client interface listens for connections from clients
181     # on a TCP port. It is specified here.
182 tdb 1.2 ClientInterface.listenPort=4510
183 tdb 1.70 # The component name for the Client Interface. This should
184     # match the name specified to the Root Filter above.
185 tdb 1.52 ClientInterface.name=realtimeclients
186 tdb 1.63
187 tdb 1.70 # 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 tdb 1.52
195    
196     ############################################################
197     #### Database interface configuration
198     ############################################################
199    
200 tdb 1.70 # The name for the Database Interface. This should match
201     # the name given to the Root Filter.
202 tdb 1.52 DBInterface.name=database
203 tdb 1.2
204 ajm 1.14
205     ############################################################
206     #### Host Configuration
207     ############################################################
208 tdb 1.2
209 tdb 1.70 # 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 tdb 1.13
213 tdb 1.71 # Hosts send data every UDPUpdateTime, in seconds.
214 tdb 1.7 Host.UDPUpdateTime=10
215 tdb 1.2
216 tdb 1.70 # We can run service checks on a host. The java package
217     # which contains them is specified here.
218 tdb 1.55 Host.serviceChecksPackage=uk.org.iscream.cms.server.filter.plugins
219 tdb 1.2
220 ajm 1.14
221     ############################################################
222     #### Monitor Configuration
223     ############################################################
224    
225 tdb 1.70 # Monitors allow data to be watched for possible problems.
226     # This setting specifies which java package they're in.
227 tdb 1.55 Monitor.PluginsPackage=uk.org.iscream.cms.server.client.monitors
228 tdb 1.70 # And which ones should be loaded.
229 tdb 1.51 Monitor.Plugins=CPU;Load;Process;Disk;Memory;Swap;Services;\
230     Heartbeat;Queue;UserCount;WebFeeder;
231 tdb 1.24
232 tdb 1.70 # Alerts timeout after a given time in seconds and go up
233     # to the next level. These can be overridden for monitors
234     # on an individual basis.
235 tdb 1.47 Monitor.alertTimeout.NOTICE=60
236     Monitor.alertTimeout.WARNING=900
237     Monitor.alertTimeout.CAUTION=1800
238     Monitor.alertTimeout.CRITICAL=3600
239 ajm 1.14
240 tdb 1.47 ## Threshold values
241     #
242 tdb 1.70 # Here we specify the threshold for each monitor. When
243     # a threshold is broken an alert is raised. If the
244     # UPPER threshold is broken the alertTimeout values
245     # given above are halved to make the alert escalate
246     # quicker.
247 tdb 1.47
248     # CPU monitor threshold values
249 ajm 1.16 Monitor.CPU.threshold.LOWER=90
250 tdb 1.70 Monitor.CPU.threshold.UPPER=95
251 tdb 1.44
252 tdb 1.47 # Load monitor threshold values
253 tdb 1.44 Monitor.Load.threshold.LOWER=10.0
254     Monitor.Load.threshold.UPPER=20.0
255    
256 tdb 1.47 # Process Count threshold values
257 tdb 1.70 Monitor.Process.threshold.LOWER=500
258     Monitor.Process.threshold.UPPER=1000
259 tdb 1.24
260 tdb 1.47 # Memory monitor threshold values
261 tdb 1.24 Monitor.Memory.threshold.LOWER=80
262     Monitor.Memory.threshold.UPPER=90
263 tdb 1.67 # Whether to include 'cache' in the 'free' value
264     # (1 is true, anything else is false)
265     Monitor.Memory.useCacheAsFree=1
266 tdb 1.24
267 tdb 1.47 # Swap monitor threshold values
268 tdb 1.24 Monitor.Swap.threshold.LOWER=80
269     Monitor.Swap.threshold.UPPER=90
270 tdb 1.50
271     # UserCount monitor threshold values
272     Monitor.UserCount.threshold.LOWER=100
273     Monitor.UserCount.threshold.UPPER=200
274 tdb 1.24
275 tdb 1.47 # Disk monitor threshold values
276 tdb 1.42 Monitor.Disk.threshold.LOWER=90
277     Monitor.Disk.threshold.UPPER=95
278 tdb 1.47 # 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 tdb 1.46 Monitor.Disk.thresholdMeasure=PERCENTAGE
282 ajm 1.33
283 tdb 1.56 # Queue monitor threshold values
284 tdb 1.49 Monitor.Queue.threshold.LOWER=50
285     Monitor.Queue.threshold.UPPER=80
286 tdb 1.47 # Thresholds given are PERCENTAGE or VALUE
287 tdb 1.70 # where PERCENTAGE is a percentage of the queue in use
288     # and VALUE is an absolute value of free space
289 tdb 1.46 Monitor.Queue.thresholdMeasure=PERCENTAGE
290    
291 tdb 1.47 # Services monitor threshold values
292 ajm 1.34 #
293     # THE SERVICES MONITOR USES A HACK
294     # WHEREBY IT USES THE SERVICE STATUS
295 tdb 1.70 # AS THE THRESHOLD LEVEL. THIS SHOULD
296 ajm 1.34 # BE LOOKED AT!
297     #
298 tdb 1.47 # how many times we should be at the highest level before
299     # we go to a FINAL alert
300 tdb 1.38 Monitor.Services.reachFINALcount=5
301    
302 tdb 1.47 # Heartbeat threshold values
303 tdb 1.25 # these are values in seconds from when the heartbeat
304     # was *expected* to arrive (ie. last + hearbeat period)
305 tdb 1.48 Monitor.Heartbeat.threshold.LOWER=180
306 tdb 1.38 Monitor.Heartbeat.threshold.UPPER=300
307 tdb 1.47 # this is how often we will run a "check" of heartbeats
308 tdb 1.48 Monitor.Heartbeat.checkPeriod=50
309 tdb 1.47 # how many times we should be at the highest level before
310     # we go to a FINAL alert
311     Monitor.Heartbeat.reachFINALcount=5
312 tdb 1.58 # list of hosts we expect to have at startup
313     # this ensures we notice hosts that aren't running, not
314     # just those that have gone down recently.
315 tdb 1.70 #Monitor.Heartbeat.initialHosts=importantserver.example.com;myserver.example.com
316 ajm 1.14
317 ajm 1.23
318 ajm 1.14 ############################################################
319     #### Alerter Configuration
320     ############################################################
321 tdb 1.70 # The following variables are understood by ALL alerters
322     # for messages. They will be substituted for their
323     # appropriate value.
324 ajm 1.23 #
325     # %level% - the alert level (eg, WARNING)
326     # %threshold% - the threshold broken (eg, LOWER)
327     # %source% - the source of the alert (eg, raptor.ukc.ac.uk)
328     # %value% - the value reached (eg, 95)
329     # %thresholdValue% - the value of the threshold broken (eg, 90)
330     # %attributeName% - the attribute that has caused the alert (eg, CPU User)
331     # %timeTillNextAlert% - the time the next alert will be sent out
332     # %timeSinceFirstAlert% - the time elapsed since the first alert for this problem
333     # %timeOfFirstAlert% - the time the first alert was sent
334     #
335 ajm 1.14
336 tdb 1.70 # The java package containing the alerters
337 tdb 1.55 Alerter.PluginsPackage=uk.org.iscream.cms.server.client.alerters
338 tdb 1.70 # And the names of the ones to activate
339     # You might want to turn them all on, but we only activate
340     # two basic ones by default.
341     # Alerter.Plugins=EMail;IRC;WebFeeder;Logging;
342     Alerter.Plugins=WebFeeder;Logging;
343 tdb 1.47
344 tdb 1.70 # Configuration for the EMail alerter
345     # The level alerts have to bypass to be e-mailed out
346 tdb 1.38 Alerter.EMail.level = WARNING
347 tdb 1.70 # A list of people to send alerts to
348     Alerter.EMail.destList = me@example.com
349     # The sender of the e-mail
350     Alerter.EMail.sender = me@example.com
351     # The SMTP server to send alerts to
352     Alerter.EMail.smtpServer = smtp.example.com
353     # The subject line of the e-mail
354 ajm 1.16 Alerter.EMail.subject = i-scream alert: %level% alert on %source% for %attributeName%
355 tdb 1.70 # The message in the e-mail
356 tdb 1.38 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%.
357    
358 tdb 1.70 # Configuration for the IRC alerter
359     # The level alerts have to bypass to be sent
360 ajm 1.16 Alerter.IRC.level = OK
361 tdb 1.70 # The IRC server name
362     Alerter.IRC.IRCServer = irc.example.com
363     # and it's port
364 ajm 1.14 Alerter.IRC.IRCPort = 6667
365 tdb 1.70 # A list of nicks to try and be
366 tdb 1.19 Alerter.IRC.nickList = iscreamBot;_iscreamBot;i-screamBot
367 tdb 1.70 # Username to be
368 tdb 1.17 Alerter.IRC.user = i-scream
369 tdb 1.70 # Responses to CTCP prods
370 tdb 1.59 Alerter.IRC.comment = i-scream alerting bot (based on PircBot)
371     Alerter.IRC.finger = i-scream alerting bot (based on PircBot)
372 tdb 1.70 # Channel to join
373 ajm 1.14 Alerter.IRC.channel = #i-scream
374 tdb 1.70 # Message to use when sending an alert
375 ajm 1.16 Alerter.IRC.message = %level%: %attributeName% on %source% has passed %threshold%(%thresholdValue%) threshold with %value% - time till next alert (should one occur), %timeTillNextAlert%
376 tdb 1.70 # How long to wait before reconnecting
377 tdb 1.17 Alerter.IRC.reconnectDelay = 30
378 tdb 1.70 # Notice to send when starting up
379 tdb 1.17 Alerter.IRC.startupNotice = i-scream alerting bot activated
380 tdb 1.70 # Commands the bot will recognise
381 tdb 1.17 Alerter.IRC.stopCommand = stop alerts
382     Alerter.IRC.startCommand = start alerts
383     Alerter.IRC.lastAlertCommand = last alert
384     Alerter.IRC.joinCommand = join
385 tdb 1.18 Alerter.IRC.nickChangeCommand = nick
386     Alerter.IRC.statCommand = statistics
387     Alerter.IRC.uptimeCommand = uptime
388     Alerter.IRC.timeSinceLastAlertCommand = time since last alert
389 tdb 1.19 Alerter.IRC.versionCommand = version
390 tdb 1.17 Alerter.IRC.helpCommand = help
391 tdb 1.70 # Message to send when the bot is addressed and
392     # doesn't understand the command
393 tdb 1.17 Alerter.IRC.rejectMessage = sorry, I don't understand your request
394 tdb 1.54
395 tdb 1.70 # Configuration for the Logging Alerter
396     # This alerter writes alerts to the i-scream logfile.
397     # The level alerts have to bypass to be logged
398 tdb 1.54 Alerter.Logging.level = WARNING
399 tdb 1.70 # The message to use when logging the alert
400 tdb 1.57 Alerter.Logging.message = %level%: %attributeName% on %source% has passed %threshold%(%thresholdValue%) threshold with %value%
401 tdb 1.29
402 tdb 1.47
403 tdb 1.29 ############################################################
404     #### WebFeeder Configuration
405     ############################################################
406    
407 tdb 1.70 # The WebFeeder drops alerts and latest data in to a
408     # directory for the web interface to use. It is essentially
409     # the link between the web interface and the server.
410    
411     # Set these to something to tell the WebFeeder to drop
412     # latest data, alerts, or both. Comment themt o disable.
413 tdb 1.32 WebFeeder.latestActive = true
414     WebFeeder.alertActive = true
415 tdb 1.43
416 tdb 1.70 # We can make the WebFeeder only drop alerts that go
417     # past a certain level. The default is "OK", which makes
418     # all alerts get passed on.
419 tdb 1.53 Alerter.WebFeeder.level = OK
420 tdb 1.37
421 tdb 1.70 # The WebFeeder cleans out old and stale alerts when it
422     # performs a check. This setting is the period, in seconds,
423     # at which a check happens.
424 tdb 1.42 WebFeeder.checkPeriod = 120
425 tdb 1.37
426     # Delete alerts older than this, in seconds.
427 tdb 1.42 WebFeeder.alertDeleteOlderThan = 300
428 tdb 1.32
429 tdb 1.70 # Data will be dropped to a subdirectory (specified
430     # below) of this directory.
431     WebFeeder.rootPath = /web/i-scream
432    
433     # SubDir is the directory below rootPath which latest
434     # data will be placed in. Below that a directory will
435     # be created with the machine name, and a file named
436     # FileName (specified here) will be created containg
437     # the data.
438 tdb 1.29 WebFeeder.latestSubDir = latest
439 tdb 1.31 WebFeeder.latestFileName = latest_data
440 tdb 1.32
441 tdb 1.70 # As above, but for the alerts.
442 tdb 1.32 WebFeeder.alertSubDir = alert
443     WebFeeder.alertFileName = alert_data
444 ajm 1.16
445 tdb 1.47
446 tdb 1.17 ############################################################