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.74
Committed: Sun Mar 9 21:49:12 2003 UTC (21 years, 8 months ago) by tdb
Branch: MAIN
Changes since 1.73: +22 -2 lines
Log Message:
Added support for all the new stuff that ihost provides us with. Ideally
this lot needs to be revamped some day, but for now this brings it all back
up to date.

The biggest change is in the Disk monitor. It wasn't overly neat before,
so I've tidied that up, and also added support for inode monitoring.

Created the DiskIO, NetIO, and Paging monitors to support new types of data
we now handle. The first two sprung from the Disk monitor, whilst the last
is pretty normal.

Configuration has been updated to support the new monitors, although I
don't really have a feel for thresholds for the new types of data.

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.74 # $Id: system.conf,v 1.73 2003/02/28 15:19:09 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 tdb 1.73 Queue.MonitorInterval=300
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.72 Host.UDPUpdateTime=60
215    
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 tdb 1.2
222 tdb 1.70 # We can run service checks on a host. The java package
223     # which contains them is specified here.
224 tdb 1.55 Host.serviceChecksPackage=uk.org.iscream.cms.server.filter.plugins
225 tdb 1.2
226 ajm 1.14
227     ############################################################
228     #### Monitor Configuration
229     ############################################################
230    
231 tdb 1.70 # Monitors allow data to be watched for possible problems.
232     # This setting specifies which java package they're in.
233 tdb 1.55 Monitor.PluginsPackage=uk.org.iscream.cms.server.client.monitors
234 tdb 1.70 # And which ones should be loaded.
235 tdb 1.51 Monitor.Plugins=CPU;Load;Process;Disk;Memory;Swap;Services;\
236 tdb 1.74 Heartbeat;Queue;UserCount;WebFeeder;DiskIO;\
237     NetIO;Paging;
238 tdb 1.24
239 tdb 1.70 # Alerts timeout after a given time in seconds and go up
240     # to the next level. These can be overridden for monitors
241     # on an individual basis.
242 tdb 1.47 Monitor.alertTimeout.NOTICE=60
243     Monitor.alertTimeout.WARNING=900
244     Monitor.alertTimeout.CAUTION=1800
245     Monitor.alertTimeout.CRITICAL=3600
246 ajm 1.14
247 tdb 1.47 ## Threshold values
248     #
249 tdb 1.70 # Here we specify the threshold for each monitor. When
250     # a threshold is broken an alert is raised. If the
251     # UPPER threshold is broken the alertTimeout values
252     # given above are halved to make the alert escalate
253     # quicker.
254 tdb 1.47
255     # CPU monitor threshold values
256 ajm 1.16 Monitor.CPU.threshold.LOWER=90
257 tdb 1.70 Monitor.CPU.threshold.UPPER=95
258 tdb 1.44
259 tdb 1.47 # Load monitor threshold values
260 tdb 1.44 Monitor.Load.threshold.LOWER=10.0
261     Monitor.Load.threshold.UPPER=20.0
262    
263 tdb 1.74 # Paging monitor threshold values
264     Monitor.Paging.threshold.LOWER=1000
265     Monitor.Paging.threshold.UPPER=5000
266    
267 tdb 1.47 # Process Count threshold values
268 tdb 1.70 Monitor.Process.threshold.LOWER=500
269     Monitor.Process.threshold.UPPER=1000
270 tdb 1.24
271 tdb 1.47 # Memory monitor threshold values
272 tdb 1.24 Monitor.Memory.threshold.LOWER=80
273     Monitor.Memory.threshold.UPPER=90
274 tdb 1.67 # Whether to include 'cache' in the 'free' value
275     # (1 is true, anything else is false)
276     Monitor.Memory.useCacheAsFree=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.50
282     # UserCount monitor threshold values
283     Monitor.UserCount.threshold.LOWER=100
284     Monitor.UserCount.threshold.UPPER=200
285 tdb 1.24
286 tdb 1.47 # Disk monitor threshold values
287 tdb 1.42 Monitor.Disk.threshold.LOWER=90
288     Monitor.Disk.threshold.UPPER=95
289 tdb 1.74 Monitor.DiskInode.threshold.LOWER=90
290     Monitor.DiskInode.threshold.UPPER=95
291 tdb 1.47 # Thresholds given are PERCENTAGE or VALUE
292     # where PERCENTAGE is a percentage of disk in use
293     # and VALUE is an absolute value of space free
294 tdb 1.46 Monitor.Disk.thresholdMeasure=PERCENTAGE
295 tdb 1.74 Monitor.DiskInode.thresholdMeasure=PERCENTAGE
296    
297     # DiskIO monitor threshold values (in bytes)
298     Monitor.DiskIO.rbytes.threshold.LOWER=10000000
299     Monitor.DiskIO.rbytes.threshold.UPPER=50000000
300     Monitor.DiskIO.wbytes.threshold.LOWER=10000000
301     Monitor.DiskIO.wbytes.threshold.UPPER=50000000
302    
303     # NetIO monitor threshold values (in bytes)
304     Monitor.NetIO.rxbytes.threshold.LOWER=10000000
305     Monitor.NetIO.rxbytes.threshold.UPPER=50000000
306     Monitor.NetIO.txbytes.threshold.LOWER=10000000
307     Monitor.NetIO.txbytes.threshold.UPPER=50000000
308 ajm 1.33
309 tdb 1.56 # Queue monitor threshold values
310 tdb 1.49 Monitor.Queue.threshold.LOWER=50
311     Monitor.Queue.threshold.UPPER=80
312 tdb 1.47 # Thresholds given are PERCENTAGE or VALUE
313 tdb 1.70 # where PERCENTAGE is a percentage of the queue in use
314     # and VALUE is an absolute value of free space
315 tdb 1.46 Monitor.Queue.thresholdMeasure=PERCENTAGE
316    
317 tdb 1.47 # Services monitor threshold values
318 ajm 1.34 #
319     # THE SERVICES MONITOR USES A HACK
320     # WHEREBY IT USES THE SERVICE STATUS
321 tdb 1.70 # AS THE THRESHOLD LEVEL. THIS SHOULD
322 ajm 1.34 # BE LOOKED AT!
323     #
324 tdb 1.47 # how many times we should be at the highest level before
325     # we go to a FINAL alert
326 tdb 1.38 Monitor.Services.reachFINALcount=5
327    
328 tdb 1.47 # Heartbeat threshold values
329 tdb 1.25 # these are values in seconds from when the heartbeat
330     # was *expected* to arrive (ie. last + hearbeat period)
331 tdb 1.48 Monitor.Heartbeat.threshold.LOWER=180
332 tdb 1.38 Monitor.Heartbeat.threshold.UPPER=300
333 tdb 1.47 # this is how often we will run a "check" of heartbeats
334 tdb 1.48 Monitor.Heartbeat.checkPeriod=50
335 tdb 1.47 # how many times we should be at the highest level before
336     # we go to a FINAL alert
337     Monitor.Heartbeat.reachFINALcount=5
338 tdb 1.58 # list of hosts we expect to have at startup
339     # this ensures we notice hosts that aren't running, not
340     # just those that have gone down recently.
341 tdb 1.70 #Monitor.Heartbeat.initialHosts=importantserver.example.com;myserver.example.com
342 ajm 1.14
343 ajm 1.23
344 ajm 1.14 ############################################################
345     #### Alerter Configuration
346     ############################################################
347 tdb 1.70 # The following variables are understood by ALL alerters
348     # for messages. They will be substituted for their
349     # appropriate value.
350 ajm 1.23 #
351     # %level% - the alert level (eg, WARNING)
352     # %threshold% - the threshold broken (eg, LOWER)
353     # %source% - the source of the alert (eg, raptor.ukc.ac.uk)
354     # %value% - the value reached (eg, 95)
355     # %thresholdValue% - the value of the threshold broken (eg, 90)
356     # %attributeName% - the attribute that has caused the alert (eg, CPU User)
357     # %timeTillNextAlert% - the time the next alert will be sent out
358     # %timeSinceFirstAlert% - the time elapsed since the first alert for this problem
359     # %timeOfFirstAlert% - the time the first alert was sent
360     #
361 ajm 1.14
362 tdb 1.70 # The java package containing the alerters
363 tdb 1.55 Alerter.PluginsPackage=uk.org.iscream.cms.server.client.alerters
364 tdb 1.70 # And the names of the ones to activate
365     # You might want to turn them all on, but we only activate
366     # two basic ones by default.
367     # Alerter.Plugins=EMail;IRC;WebFeeder;Logging;
368     Alerter.Plugins=WebFeeder;Logging;
369 tdb 1.47
370 tdb 1.70 # Configuration for the EMail alerter
371     # The level alerts have to bypass to be e-mailed out
372 tdb 1.38 Alerter.EMail.level = WARNING
373 tdb 1.70 # A list of people to send alerts to
374     Alerter.EMail.destList = me@example.com
375     # The sender of the e-mail
376     Alerter.EMail.sender = me@example.com
377     # The SMTP server to send alerts to
378     Alerter.EMail.smtpServer = smtp.example.com
379     # The subject line of the e-mail
380 ajm 1.16 Alerter.EMail.subject = i-scream alert: %level% alert on %source% for %attributeName%
381 tdb 1.70 # The message in the e-mail
382 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%.
383    
384 tdb 1.70 # Configuration for the IRC alerter
385     # The level alerts have to bypass to be sent
386 ajm 1.16 Alerter.IRC.level = OK
387 tdb 1.70 # The IRC server name
388     Alerter.IRC.IRCServer = irc.example.com
389     # and it's port
390 ajm 1.14 Alerter.IRC.IRCPort = 6667
391 tdb 1.70 # A list of nicks to try and be
392 tdb 1.19 Alerter.IRC.nickList = iscreamBot;_iscreamBot;i-screamBot
393 tdb 1.70 # Username to be
394 tdb 1.17 Alerter.IRC.user = i-scream
395 tdb 1.70 # Responses to CTCP prods
396 tdb 1.59 Alerter.IRC.comment = i-scream alerting bot (based on PircBot)
397     Alerter.IRC.finger = i-scream alerting bot (based on PircBot)
398 tdb 1.70 # Channel to join
399 ajm 1.14 Alerter.IRC.channel = #i-scream
400 tdb 1.70 # Message to use when sending an alert
401 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%
402 tdb 1.70 # How long to wait before reconnecting
403 tdb 1.17 Alerter.IRC.reconnectDelay = 30
404 tdb 1.70 # Notice to send when starting up
405 tdb 1.17 Alerter.IRC.startupNotice = i-scream alerting bot activated
406 tdb 1.70 # Commands the bot will recognise
407 tdb 1.17 Alerter.IRC.stopCommand = stop alerts
408     Alerter.IRC.startCommand = start alerts
409     Alerter.IRC.lastAlertCommand = last alert
410     Alerter.IRC.joinCommand = join
411 tdb 1.18 Alerter.IRC.nickChangeCommand = nick
412     Alerter.IRC.statCommand = statistics
413     Alerter.IRC.uptimeCommand = uptime
414     Alerter.IRC.timeSinceLastAlertCommand = time since last alert
415 tdb 1.19 Alerter.IRC.versionCommand = version
416 tdb 1.17 Alerter.IRC.helpCommand = help
417 tdb 1.70 # Message to send when the bot is addressed and
418     # doesn't understand the command
419 tdb 1.17 Alerter.IRC.rejectMessage = sorry, I don't understand your request
420 tdb 1.54
421 tdb 1.70 # Configuration for the Logging Alerter
422     # This alerter writes alerts to the i-scream logfile.
423     # The level alerts have to bypass to be logged
424 tdb 1.54 Alerter.Logging.level = WARNING
425 tdb 1.70 # The message to use when logging the alert
426 tdb 1.57 Alerter.Logging.message = %level%: %attributeName% on %source% has passed %threshold%(%thresholdValue%) threshold with %value%
427 tdb 1.29
428 tdb 1.47
429 tdb 1.29 ############################################################
430     #### WebFeeder Configuration
431     ############################################################
432    
433 tdb 1.70 # The WebFeeder drops alerts and latest data in to a
434     # directory for the web interface to use. It is essentially
435     # the link between the web interface and the server.
436    
437     # Set these to something to tell the WebFeeder to drop
438     # latest data, alerts, or both. Comment themt o disable.
439 tdb 1.32 WebFeeder.latestActive = true
440     WebFeeder.alertActive = true
441 tdb 1.43
442 tdb 1.70 # We can make the WebFeeder only drop alerts that go
443     # past a certain level. The default is "OK", which makes
444     # all alerts get passed on.
445 tdb 1.53 Alerter.WebFeeder.level = OK
446 tdb 1.37
447 tdb 1.70 # The WebFeeder cleans out old and stale alerts when it
448     # performs a check. This setting is the period, in seconds,
449     # at which a check happens.
450 tdb 1.42 WebFeeder.checkPeriod = 120
451 tdb 1.37
452     # Delete alerts older than this, in seconds.
453 tdb 1.42 WebFeeder.alertDeleteOlderThan = 300
454 tdb 1.32
455 tdb 1.70 # Data will be dropped to a subdirectory (specified
456     # below) of this directory.
457     WebFeeder.rootPath = /web/i-scream
458    
459     # SubDir is the directory below rootPath which latest
460     # data will be placed in. Below that a directory will
461     # be created with the machine name, and a file named
462     # FileName (specified here) will be created containg
463     # the data.
464 tdb 1.29 WebFeeder.latestSubDir = latest
465 tdb 1.31 WebFeeder.latestFileName = latest_data
466 tdb 1.32
467 tdb 1.70 # As above, but for the alerts.
468 tdb 1.32 WebFeeder.alertSubDir = alert
469     WebFeeder.alertFileName = alert_data
470 ajm 1.16
471 tdb 1.47
472 tdb 1.17 ############################################################