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.78
Committed: Mon Nov 27 10:51:54 2006 UTC (18 years ago) by tdb
Branch: MAIN
Changes since 1.77: +8 -2 lines
Log Message:
Add monitor to analyse mail queue sizes.

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.78 # $Id: system.conf,v 1.77 2004/08/01 10:40:39 tdb Exp $
14 tdb 1.70 #
15 tdb 1.77 # http://www.i-scream.org/
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 ajm 1.14
57 ajm 1.16 ############################################################
58     #### Misc system-wide configuration
59     ############################################################
60    
61 tdb 1.70 # 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 ajm 1.16 ConfigurationProxy.updateTime=60
66    
67 tdb 1.70 # The internal Queue's can be monitored. This specifies
68     # the interval, in seconds, at which their state should
69     # be monitored.
70 tdb 1.73 Queue.MonitorInterval=300
71 tdb 1.70 # The maximum size a Queue can be before items are
72     # dropped when new ones arrive.
73 tdb 1.40 Queue.SizeLimit=1000
74 tdb 1.70 # 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 tdb 1.40 Queue.RemoveAlgorithm=FIRST
81 tdb 1.2
82 tdb 1.70 # 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 tdb 1.68 XMLCache.cleanupPeriod=30
88 ajm 1.14
89 tdb 1.70
90 ajm 1.14 ############################################################
91     #### FilterManager configuration
92     ############################################################
93 tdb 1.2
94 tdb 1.70 # 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 tdb 1.2 FilterManager.listenPort=4567
99    
100 tdb 1.70 # 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 ajm 1.14
106    
107     ############################################################
108     #### Filter configuration
109     ############################################################
110    
111 tdb 1.71 # A Filter accepts data from hosts on a UDP port. It is
112     # specified here.
113 tdb 1.2 Filter.UDPListenPort=4589
114    
115 tdb 1.70 # 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 tdb 1.55 Filter.PluginsPackage=uk.org.iscream.cms.server.filter.plugins
120 tdb 1.70 # And the names of the plugins to be loaded.
121 tdb 1.71 Filter.Plugins=TypeChecker;EnforceEssentialData;SourceChecker
122 ajm 1.14
123 tdb 1.70 # 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 ajm 1.14 Filter.parentFilter=root
128    
129 tdb 1.71 # A Filter can accept data through UDP, or from
130 tdb 1.70 # 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 tdb 1.61 # (comment or set to 0 to disable)
134     Filter.ActivateUDPReader=1
135     Filter.ActivateCORBAReader=1
136 tdb 1.62
137 tdb 1.70 # We can also specify Access Control Lists for the
138 tdb 1.71 # UDP input of the Filters. One might want something
139     # restrictive like this:
140 tdb 1.70 #
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 tdb 1.65
152 ajm 1.14
153     ############################################################
154 tdb 1.75 #### Root filter configuration
155 ajm 1.14 ############################################################
156    
157 tdb 1.75 # The special filter known as the "Root Filter" needs
158     # a name within the system.
159     RootFilter.name=root
160 ajm 1.14
161    
162     ############################################################
163     #### Client interface configuration
164     ############################################################
165    
166 tdb 1.70 # The client interface listens for connections from clients
167     # on a TCP port. It is specified here.
168 tdb 1.2 ClientInterface.listenPort=4510
169 tdb 1.75
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 tdb 1.63
175 tdb 1.70 # 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 tdb 1.52
183    
184     ############################################################
185 tdb 1.75 #### LocalClient Configuration
186 tdb 1.52 ############################################################
187    
188 tdb 1.75 # The parent for the Local Client
189     Client.parent=clientinterface1
190 tdb 1.2
191 ajm 1.14
192     ############################################################
193     #### Host Configuration
194     ############################################################
195 tdb 1.2
196 tdb 1.70 # 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 tdb 1.13
200 tdb 1.71 # Hosts send data every UDPUpdateTime, in seconds.
201 tdb 1.72 Host.UDPUpdateTime=60
202    
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 tdb 1.2
209 tdb 1.70 # We can run service checks on a host. The java package
210     # which contains them is specified here.
211 tdb 1.55 Host.serviceChecksPackage=uk.org.iscream.cms.server.filter.plugins
212 tdb 1.2
213 ajm 1.14
214     ############################################################
215     #### Monitor Configuration
216     ############################################################
217    
218 tdb 1.70 # Monitors allow data to be watched for possible problems.
219     # This setting specifies which java package they're in.
220 tdb 1.55 Monitor.PluginsPackage=uk.org.iscream.cms.server.client.monitors
221 tdb 1.70 # And which ones should be loaded.
222 tdb 1.51 Monitor.Plugins=CPU;Load;Process;Disk;Memory;Swap;Services;\
223 tdb 1.74 Heartbeat;Queue;UserCount;WebFeeder;DiskIO;\
224 tdb 1.78 NetIO;Paging;MailQ;
225 tdb 1.24
226 tdb 1.70 # 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 tdb 1.47 Monitor.alertTimeout.NOTICE=60
230     Monitor.alertTimeout.WARNING=900
231     Monitor.alertTimeout.CAUTION=1800
232     Monitor.alertTimeout.CRITICAL=3600
233 ajm 1.14
234 tdb 1.76 # Is monitoring enabled? (comment or set to 0 to disable)
235     Monitor.enable=1
236    
237 tdb 1.47 ## Threshold values
238     #
239 tdb 1.70 # Here we specify the threshold for each monitor. When
240     # a threshold is broken an alert is raised. If the
241     # UPPER threshold is broken the alertTimeout values
242     # given above are halved to make the alert escalate
243     # quicker.
244 tdb 1.47
245     # CPU monitor threshold values
246 ajm 1.16 Monitor.CPU.threshold.LOWER=90
247 tdb 1.70 Monitor.CPU.threshold.UPPER=95
248 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
249     Monitor.CPU.enable=1
250 tdb 1.44
251 tdb 1.47 # Load monitor threshold values
252 tdb 1.44 Monitor.Load.threshold.LOWER=10.0
253     Monitor.Load.threshold.UPPER=20.0
254 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
255     Monitor.Load.enable=1
256 tdb 1.44
257 tdb 1.74 # Paging monitor threshold values
258     Monitor.Paging.threshold.LOWER=1000
259     Monitor.Paging.threshold.UPPER=5000
260 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
261     Monitor.Paging.enable=1
262 tdb 1.74
263 tdb 1.47 # Process Count threshold values
264 tdb 1.70 Monitor.Process.threshold.LOWER=500
265     Monitor.Process.threshold.UPPER=1000
266 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
267     Monitor.Process.enable=1
268 tdb 1.24
269 tdb 1.47 # Memory monitor threshold values
270 tdb 1.24 Monitor.Memory.threshold.LOWER=80
271     Monitor.Memory.threshold.UPPER=90
272 tdb 1.67 # Whether to include 'cache' in the 'free' value
273     # (1 is true, anything else is false)
274     Monitor.Memory.useCacheAsFree=1
275 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
276     Monitor.Memory.enable=1
277 tdb 1.24
278 tdb 1.47 # Swap monitor threshold values
279 tdb 1.24 Monitor.Swap.threshold.LOWER=80
280     Monitor.Swap.threshold.UPPER=90
281 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
282     Monitor.Swap.enable=1
283 tdb 1.50
284     # UserCount monitor threshold values
285     Monitor.UserCount.threshold.LOWER=100
286     Monitor.UserCount.threshold.UPPER=200
287 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
288     Monitor.UserCount.enable=1
289 tdb 1.24
290 tdb 1.47 # Disk monitor threshold values
291 tdb 1.42 Monitor.Disk.threshold.LOWER=90
292     Monitor.Disk.threshold.UPPER=95
293 tdb 1.74 Monitor.DiskInode.threshold.LOWER=90
294     Monitor.DiskInode.threshold.UPPER=95
295 tdb 1.47 # Thresholds given are PERCENTAGE or VALUE
296     # where PERCENTAGE is a percentage of disk in use
297     # and VALUE is an absolute value of space free
298 tdb 1.46 Monitor.Disk.thresholdMeasure=PERCENTAGE
299 tdb 1.74 Monitor.DiskInode.thresholdMeasure=PERCENTAGE
300 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
301     Monitor.Disk.enable=1
302     Monitor.DiskInode.enable=1
303 tdb 1.74
304     # DiskIO monitor threshold values (in bytes)
305     Monitor.DiskIO.rbytes.threshold.LOWER=10000000
306     Monitor.DiskIO.rbytes.threshold.UPPER=50000000
307     Monitor.DiskIO.wbytes.threshold.LOWER=10000000
308     Monitor.DiskIO.wbytes.threshold.UPPER=50000000
309 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
310     Monitor.DiskIO.enable=1
311 tdb 1.74
312     # NetIO monitor threshold values (in bytes)
313     Monitor.NetIO.rxbytes.threshold.LOWER=10000000
314     Monitor.NetIO.rxbytes.threshold.UPPER=50000000
315     Monitor.NetIO.txbytes.threshold.LOWER=10000000
316     Monitor.NetIO.txbytes.threshold.UPPER=50000000
317 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
318     Monitor.NetIO.enable=1
319 ajm 1.33
320 tdb 1.56 # Queue monitor threshold values
321 tdb 1.49 Monitor.Queue.threshold.LOWER=50
322     Monitor.Queue.threshold.UPPER=80
323 tdb 1.47 # Thresholds given are PERCENTAGE or VALUE
324 tdb 1.70 # where PERCENTAGE is a percentage of the queue in use
325     # and VALUE is an absolute value of free space
326 tdb 1.46 Monitor.Queue.thresholdMeasure=PERCENTAGE
327 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
328     Monitor.Queue.enable=1
329 tdb 1.46
330 tdb 1.47 # Services monitor threshold values
331 ajm 1.34 #
332     # THE SERVICES MONITOR USES A HACK
333     # WHEREBY IT USES THE SERVICE STATUS
334 tdb 1.70 # AS THE THRESHOLD LEVEL. THIS SHOULD
335 ajm 1.34 # BE LOOKED AT!
336     #
337 tdb 1.47 # how many times we should be at the highest level before
338     # we go to a FINAL alert
339 tdb 1.38 Monitor.Services.reachFINALcount=5
340    
341 tdb 1.47 # Heartbeat threshold values
342 tdb 1.25 # these are values in seconds from when the heartbeat
343     # was *expected* to arrive (ie. last + hearbeat period)
344 tdb 1.48 Monitor.Heartbeat.threshold.LOWER=180
345 tdb 1.38 Monitor.Heartbeat.threshold.UPPER=300
346 tdb 1.47 # this is how often we will run a "check" of heartbeats
347 tdb 1.48 Monitor.Heartbeat.checkPeriod=50
348 tdb 1.47 # how many times we should be at the highest level before
349     # we go to a FINAL alert
350     Monitor.Heartbeat.reachFINALcount=5
351 tdb 1.58 # list of hosts we expect to have at startup
352     # this ensures we notice hosts that aren't running, not
353     # just those that have gone down recently.
354 tdb 1.70 #Monitor.Heartbeat.initialHosts=importantserver.example.com;myserver.example.com
355 tdb 1.76 # enable this monitor (comment or set to 0 to disable)
356     Monitor.Heartbeat.enable=1
357 ajm 1.14
358 tdb 1.78 # MailQ monitor threshold values
359     Monitor.NetIO.size.threshold.LOWER=100
360     Monitor.NetIO.size.threshold.UPPER=1000
361     # enable this monitor (comment or set to 0 to disable)
362     Monitor.NetIO.enable=1
363    
364 ajm 1.23
365 ajm 1.14 ############################################################
366     #### Alerter Configuration
367     ############################################################
368 tdb 1.70 # The following variables are understood by ALL alerters
369     # for messages. They will be substituted for their
370     # appropriate value.
371 ajm 1.23 #
372     # %level% - the alert level (eg, WARNING)
373     # %threshold% - the threshold broken (eg, LOWER)
374     # %source% - the source of the alert (eg, raptor.ukc.ac.uk)
375     # %value% - the value reached (eg, 95)
376     # %thresholdValue% - the value of the threshold broken (eg, 90)
377     # %attributeName% - the attribute that has caused the alert (eg, CPU User)
378     # %timeTillNextAlert% - the time the next alert will be sent out
379     # %timeSinceFirstAlert% - the time elapsed since the first alert for this problem
380     # %timeOfFirstAlert% - the time the first alert was sent
381     #
382 ajm 1.14
383 tdb 1.70 # The java package containing the alerters
384 tdb 1.55 Alerter.PluginsPackage=uk.org.iscream.cms.server.client.alerters
385 tdb 1.70 # And the names of the ones to activate
386     # You might want to turn them all on, but we only activate
387     # two basic ones by default.
388     # Alerter.Plugins=EMail;IRC;WebFeeder;Logging;
389     Alerter.Plugins=WebFeeder;Logging;
390 tdb 1.47
391 tdb 1.70 # Configuration for the EMail alerter
392     # The level alerts have to bypass to be e-mailed out
393 tdb 1.38 Alerter.EMail.level = WARNING
394 tdb 1.70 # A list of people to send alerts to
395     Alerter.EMail.destList = me@example.com
396     # The sender of the e-mail
397     Alerter.EMail.sender = me@example.com
398     # The SMTP server to send alerts to
399     Alerter.EMail.smtpServer = smtp.example.com
400     # The subject line of the e-mail
401 ajm 1.16 Alerter.EMail.subject = i-scream alert: %level% alert on %source% for %attributeName%
402 tdb 1.70 # The message in the e-mail
403 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%.
404    
405 tdb 1.70 # Configuration for the IRC alerter
406     # The level alerts have to bypass to be sent
407 ajm 1.16 Alerter.IRC.level = OK
408 tdb 1.70 # The IRC server name
409     Alerter.IRC.IRCServer = irc.example.com
410     # and it's port
411 ajm 1.14 Alerter.IRC.IRCPort = 6667
412 tdb 1.70 # A list of nicks to try and be
413 tdb 1.19 Alerter.IRC.nickList = iscreamBot;_iscreamBot;i-screamBot
414 tdb 1.70 # Username to be
415 tdb 1.17 Alerter.IRC.user = i-scream
416 tdb 1.70 # Responses to CTCP prods
417 tdb 1.59 Alerter.IRC.comment = i-scream alerting bot (based on PircBot)
418     Alerter.IRC.finger = i-scream alerting bot (based on PircBot)
419 tdb 1.70 # Channel to join
420 ajm 1.14 Alerter.IRC.channel = #i-scream
421 tdb 1.70 # Message to use when sending an alert
422 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%
423 tdb 1.70 # How long to wait before reconnecting
424 tdb 1.17 Alerter.IRC.reconnectDelay = 30
425 tdb 1.70 # Notice to send when starting up
426 tdb 1.17 Alerter.IRC.startupNotice = i-scream alerting bot activated
427 tdb 1.70 # Commands the bot will recognise
428 tdb 1.17 Alerter.IRC.stopCommand = stop alerts
429     Alerter.IRC.startCommand = start alerts
430     Alerter.IRC.lastAlertCommand = last alert
431     Alerter.IRC.joinCommand = join
432 tdb 1.18 Alerter.IRC.nickChangeCommand = nick
433     Alerter.IRC.statCommand = statistics
434     Alerter.IRC.uptimeCommand = uptime
435     Alerter.IRC.timeSinceLastAlertCommand = time since last alert
436 tdb 1.19 Alerter.IRC.versionCommand = version
437 tdb 1.17 Alerter.IRC.helpCommand = help
438 tdb 1.70 # Message to send when the bot is addressed and
439     # doesn't understand the command
440 tdb 1.17 Alerter.IRC.rejectMessage = sorry, I don't understand your request
441 tdb 1.54
442 tdb 1.70 # Configuration for the Logging Alerter
443     # This alerter writes alerts to the i-scream logfile.
444     # The level alerts have to bypass to be logged
445 tdb 1.54 Alerter.Logging.level = WARNING
446 tdb 1.70 # The message to use when logging the alert
447 tdb 1.57 Alerter.Logging.message = %level%: %attributeName% on %source% has passed %threshold%(%thresholdValue%) threshold with %value%
448 tdb 1.29
449 tdb 1.47
450 tdb 1.29 ############################################################
451     #### WebFeeder Configuration
452     ############################################################
453    
454 tdb 1.70 # The WebFeeder drops alerts and latest data in to a
455     # directory for the web interface to use. It is essentially
456     # the link between the web interface and the server.
457    
458     # Set these to something to tell the WebFeeder to drop
459     # latest data, alerts, or both. Comment themt o disable.
460 tdb 1.32 WebFeeder.latestActive = true
461     WebFeeder.alertActive = true
462 tdb 1.43
463 tdb 1.70 # We can make the WebFeeder only drop alerts that go
464     # past a certain level. The default is "OK", which makes
465     # all alerts get passed on.
466 tdb 1.53 Alerter.WebFeeder.level = OK
467 tdb 1.37
468 tdb 1.70 # The WebFeeder cleans out old and stale alerts when it
469     # performs a check. This setting is the period, in seconds,
470     # at which a check happens.
471 tdb 1.42 WebFeeder.checkPeriod = 120
472 tdb 1.37
473     # Delete alerts older than this, in seconds.
474 tdb 1.42 WebFeeder.alertDeleteOlderThan = 300
475 tdb 1.32
476 tdb 1.70 # Data will be dropped to a subdirectory (specified
477     # below) of this directory.
478     WebFeeder.rootPath = /web/i-scream
479    
480     # SubDir is the directory below rootPath which latest
481     # data will be placed in. Below that a directory will
482     # be created with the machine name, and a file named
483     # FileName (specified here) will be created containg
484     # the data.
485 tdb 1.29 WebFeeder.latestSubDir = latest
486 tdb 1.31 WebFeeder.latestFileName = latest_data
487 tdb 1.32
488 tdb 1.70 # As above, but for the alerts.
489 tdb 1.32 WebFeeder.alertSubDir = alert
490     WebFeeder.alertFileName = alert_data
491 ajm 1.16
492 tdb 1.47
493 tdb 1.17 ############################################################