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, 6 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

# Content
1 # 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 # 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: tdb $
13 # $Id: system.conf,v 1.70 2003/02/23 12:45:21 tdb Exp $
14 #
15 # http://www.i-scream.org.uk/
16 #
17
18 ############################################################
19 #### Configuration Files & Groups
20 ############################################################
21
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 # 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
62
63 ############################################################
64 #### Misc system-wide configuration
65 ############################################################
66
67 # The ConfigurationProxy caches configuration for various
68 # parts of the server. This setting defines how often, in
69 # seconds, the proxy will check if the data it contains
70 # is still valid.
71 ConfigurationProxy.updateTime=60
72
73 # The internal Queue's can be monitored. This specifies
74 # the interval, in seconds, at which their state should
75 # be monitored.
76 Queue.MonitorInterval=15
77 # The maximum size a Queue can be before items are
78 # dropped when new ones arrive.
79 Queue.SizeLimit=1000
80 # And which items we should drop when the queue is full
81 # and new items arrive. Choices are:
82 # RANDOM - drop a random item from the queue
83 # FIRST - drop the first item from the queue
84 # LAST - drop the last item from the queue
85 # DROP - drop the new item from the queue
86 Queue.RemoveAlgorithm=FIRST
87
88 # The XMLCache caches data passing through the system.
89 # This setting specifies the time, in seconds, at which
90 # the caches contents will be rotated. In real terms
91 # this means the minimum age at which an XMLPacket can
92 # be before it is up for deletion from the cache.
93 XMLCache.cleanupPeriod=30
94
95
96 ############################################################
97 #### FilterManager configuration
98 ############################################################
99
100 # The FilterManager accepts connections from hosts
101 # upon startup. It provides them with configuration
102 # and details of which filter to talk to. This setting
103 # specifies which port (TCP) it listens on.
104 FilterManager.listenPort=4567
105
106 # An Access Control List for the FilterManager. One
107 # might consider something like this:
108 #
109 # FilterManager.ACL=DEFAULT:DENY;*.example.com:ALLOW
110 FilterManager.ACL=DEFAULT:ALLOW
111
112
113 ############################################################
114 #### Filter configuration
115 ############################################################
116
117 # A Filter accepts data from hosts on a UDP port. It is
118 # specified here.
119 Filter.UDPListenPort=4589
120
121 # Filters contain plugins for checking the data passing
122 # through them. This plugins do the job of "filtering".
123 # This setting specifies the java package they're
124 # contained in.
125 Filter.PluginsPackage=uk.org.iscream.cms.server.filter.plugins
126 # And the names of the plugins to be loaded.
127 Filter.Plugins=TypeChecker;EnforceEssentialData;SourceChecker
128
129 # The special filter known as the "Root Filter" needs
130 # a name within the system.
131 RootFilter.name=root
132
133 # Every Filter, except the root, needs a parent to
134 # send their data to. This is usually the root filter,
135 # although in more complex setups it might be another
136 # filter - giving a tree structure.
137 Filter.parentFilter=root
138
139 # A Filter can accept data through UDP, or from
140 # an upstream Filter (CORBA). These methods can be
141 # individually turned of on a filter. The default
142 # is to have them all on.
143 # (comment or set to 0 to disable)
144 Filter.ActivateUDPReader=1
145 Filter.ActivateCORBAReader=1
146
147 # We can also specify Access Control Lists for the
148 # UDP input of the Filters. One might want something
149 # restrictive like this:
150 #
151 # Filter.UDPACL=DEFAULT:DENY;*.example.com:ALLOW
152 Filter.UDPACL=DEFAULT:ALLOW
153
154 # A Filter plugin called the SourceChecker verifies
155 # that packets come from permitted hosts. It is
156 # given an ACL to check the hosts against. A possible
157 # ACL might be:
158 #
159 # Filter.SourceCheckerPluginACL=DEFAULT:DENY;*.example.com:ALLOW
160 Filter.SourceCheckerPluginACL=DEFAULT:ALLOW
161
162
163 ############################################################
164 #### Root filter interfaces configuration
165 ############################################################
166
167 # The Root FIlter can send data to various upstream
168 # data processors. There are two of these at present
169 # in the server - the DBInterface and the ClientInterface.
170 # Their component names are given here as defined below.
171 # (the DBInterface is switched off - commented - by default)
172 #RootFilter.dbInterfaceName=database
173 RootFilter.realtimeInterfaceName=realtimeclients
174
175
176 ############################################################
177 #### Client interface configuration
178 ############################################################
179
180 # The client interface listens for connections from clients
181 # on a TCP port. It is specified here.
182 ClientInterface.listenPort=4510
183 # The component name for the Client Interface. This should
184 # match the name specified to the Root Filter above.
185 ClientInterface.name=realtimeclients
186
187 # The Client Interface has two channels, control and data.
188 # Each of these can have an ACL for allowing connections.
189 # As per previous examples in this configuration file they
190 # could be set restrictively, but we'll leave them open
191 # by default
192 ClientInterface.TCPControlChannelACL=DEFAULT:ALLOW
193 ClientInterface.TCPDataChannelACL=DEFAULT:ALLOW
194
195
196 ############################################################
197 #### Database interface configuration
198 ############################################################
199
200 # The name for the Database Interface. This should match
201 # the name given to the Root Filter.
202 DBInterface.name=database
203
204
205 ############################################################
206 #### Host Configuration
207 ############################################################
208
209 # A host can use any filter. We'll set the default filter
210 # for all hosts to be 'filter1'. This can be a list.
211 Host.filter=filter1;
212
213 # Hosts send data every UDPUpdateTime, in seconds.
214 Host.UDPUpdateTime=10
215
216 # We can run service checks on a host. The java package
217 # which contains them is specified here.
218 Host.serviceChecksPackage=uk.org.iscream.cms.server.filter.plugins
219
220
221 ############################################################
222 #### Monitor Configuration
223 ############################################################
224
225 # Monitors allow data to be watched for possible problems.
226 # This setting specifies which java package they're in.
227 Monitor.PluginsPackage=uk.org.iscream.cms.server.client.monitors
228 # And which ones should be loaded.
229 Monitor.Plugins=CPU;Load;Process;Disk;Memory;Swap;Services;\
230 Heartbeat;Queue;UserCount;WebFeeder;
231
232 # 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 Monitor.alertTimeout.NOTICE=60
236 Monitor.alertTimeout.WARNING=900
237 Monitor.alertTimeout.CAUTION=1800
238 Monitor.alertTimeout.CRITICAL=3600
239
240 ## Threshold values
241 #
242 # 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
248 # CPU monitor threshold values
249 Monitor.CPU.threshold.LOWER=90
250 Monitor.CPU.threshold.UPPER=95
251
252 # Load monitor threshold values
253 Monitor.Load.threshold.LOWER=10.0
254 Monitor.Load.threshold.UPPER=20.0
255
256 # Process Count threshold values
257 Monitor.Process.threshold.LOWER=500
258 Monitor.Process.threshold.UPPER=1000
259
260 # Memory monitor threshold values
261 Monitor.Memory.threshold.LOWER=80
262 Monitor.Memory.threshold.UPPER=90
263 # Whether to include 'cache' in the 'free' value
264 # (1 is true, anything else is false)
265 Monitor.Memory.useCacheAsFree=1
266
267 # Swap monitor threshold values
268 Monitor.Swap.threshold.LOWER=80
269 Monitor.Swap.threshold.UPPER=90
270
271 # UserCount monitor threshold values
272 Monitor.UserCount.threshold.LOWER=100
273 Monitor.UserCount.threshold.UPPER=200
274
275 # Disk monitor threshold values
276 Monitor.Disk.threshold.LOWER=90
277 Monitor.Disk.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
283 # Queue monitor threshold values
284 Monitor.Queue.threshold.LOWER=50
285 Monitor.Queue.threshold.UPPER=80
286 # Thresholds given are PERCENTAGE or VALUE
287 # where PERCENTAGE is a percentage of the queue in use
288 # and VALUE is an absolute value of free space
289 Monitor.Queue.thresholdMeasure=PERCENTAGE
290
291 # Services monitor threshold values
292 #
293 # THE SERVICES MONITOR USES A HACK
294 # WHEREBY IT USES THE SERVICE STATUS
295 # AS THE THRESHOLD LEVEL. THIS SHOULD
296 # BE LOOKED AT!
297 #
298 # how many times we should be at the highest level before
299 # we go to a FINAL alert
300 Monitor.Services.reachFINALcount=5
301
302 # Heartbeat threshold values
303 # these are values in seconds from when the heartbeat
304 # was *expected* to arrive (ie. last + hearbeat period)
305 Monitor.Heartbeat.threshold.LOWER=180
306 Monitor.Heartbeat.threshold.UPPER=300
307 # this is how often we will run a "check" of heartbeats
308 Monitor.Heartbeat.checkPeriod=50
309 # how many times we should be at the highest level before
310 # we go to a FINAL alert
311 Monitor.Heartbeat.reachFINALcount=5
312 # 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 #Monitor.Heartbeat.initialHosts=importantserver.example.com;myserver.example.com
316
317
318 ############################################################
319 #### Alerter Configuration
320 ############################################################
321 # The following variables are understood by ALL alerters
322 # for messages. They will be substituted for their
323 # appropriate value.
324 #
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
336 # The java package containing the alerters
337 Alerter.PluginsPackage=uk.org.iscream.cms.server.client.alerters
338 # 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
344 # Configuration for the EMail alerter
345 # The level alerts have to bypass to be e-mailed out
346 Alerter.EMail.level = WARNING
347 # 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 Alerter.EMail.subject = i-scream alert: %level% alert on %source% for %attributeName%
355 # The message in the e-mail
356 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 # Configuration for the IRC alerter
359 # The level alerts have to bypass to be sent
360 Alerter.IRC.level = OK
361 # The IRC server name
362 Alerter.IRC.IRCServer = irc.example.com
363 # and it's port
364 Alerter.IRC.IRCPort = 6667
365 # A list of nicks to try and be
366 Alerter.IRC.nickList = iscreamBot;_iscreamBot;i-screamBot
367 # Username to be
368 Alerter.IRC.user = i-scream
369 # Responses to CTCP prods
370 Alerter.IRC.comment = i-scream alerting bot (based on PircBot)
371 Alerter.IRC.finger = i-scream alerting bot (based on PircBot)
372 # Channel to join
373 Alerter.IRC.channel = #i-scream
374 # Message to use when sending an alert
375 Alerter.IRC.message = %level%: %attributeName% on %source% has passed %threshold%(%thresholdValue%) threshold with %value% - time till next alert (should one occur), %timeTillNextAlert%
376 # How long to wait before reconnecting
377 Alerter.IRC.reconnectDelay = 30
378 # Notice to send when starting up
379 Alerter.IRC.startupNotice = i-scream alerting bot activated
380 # Commands the bot will recognise
381 Alerter.IRC.stopCommand = stop alerts
382 Alerter.IRC.startCommand = start alerts
383 Alerter.IRC.lastAlertCommand = last alert
384 Alerter.IRC.joinCommand = join
385 Alerter.IRC.nickChangeCommand = nick
386 Alerter.IRC.statCommand = statistics
387 Alerter.IRC.uptimeCommand = uptime
388 Alerter.IRC.timeSinceLastAlertCommand = time since last alert
389 Alerter.IRC.versionCommand = version
390 Alerter.IRC.helpCommand = help
391 # Message to send when the bot is addressed and
392 # doesn't understand the command
393 Alerter.IRC.rejectMessage = sorry, I don't understand your request
394
395 # 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 Alerter.Logging.level = WARNING
399 # The message to use when logging the alert
400 Alerter.Logging.message = %level%: %attributeName% on %source% has passed %threshold%(%thresholdValue%) threshold with %value%
401
402
403 ############################################################
404 #### WebFeeder Configuration
405 ############################################################
406
407 # 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 WebFeeder.latestActive = true
414 WebFeeder.alertActive = true
415
416 # 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 Alerter.WebFeeder.level = OK
420
421 # 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 WebFeeder.checkPeriod = 120
425
426 # Delete alerts older than this, in seconds.
427 WebFeeder.alertDeleteOlderThan = 300
428
429 # 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 WebFeeder.latestSubDir = latest
439 WebFeeder.latestFileName = latest_data
440
441 # As above, but for the alerts.
442 WebFeeder.alertSubDir = alert
443 WebFeeder.alertFileName = alert_data
444
445
446 ############################################################