aaron-devel-cvs Mailing List for Aaron: the app, service, and net monitor
Status: Pre-Alpha
Brought to you by:
thetitan
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(25) |
Jul
(8) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|
From: Sean C. <the...@us...> - 2001-07-07 20:54:25
|
Update of /cvsroot/aaron/aaron/doc In directory usw-pr-cvs1:/tmp/cvs-serv24853 Modified Files: architecture Log Message: Changed Action Manager to Module Manager. Index: architecture =================================================================== RCS file: /cvsroot/aaron/aaron/doc/architecture,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** architecture 2001/07/04 22:08:42 1.3 --- architecture 2001/07/07 20:54:21 1.4 *************** *** 22,26 **** | /-----------------------------\ /------------------------------------\ | | | | | | | ! | | Network Queue Manager | | Action Manager | | | | (incoming transactions) | | | | | | | | /------------------------------\ | | --- 22,26 ---- | /-----------------------------\ /------------------------------------\ | | | | | | | ! | | Network Queue Manager | | Module Manager | | | | (incoming transactions) | | | | | | | | /------------------------------\ | | *************** *** 97,103 **** [Config Loader and Data Validator] This routine is called once at startup. Upon the completion of the Loader's ! execution, the Loader registers itself as an Action with the Action Manager ! and schedules itself as a transaction that needs to be rerun as specified in ! its own configuration files or by default (10 min). The Config Loader registers new actions after a successful load and --- 97,103 ---- [Config Loader and Data Validator] This routine is called once at startup. Upon the completion of the Loader's ! execution, the Loader registers itself within the Action Manager within the ! Module Manager and schedules itself as a transaction that needs to be rerun ! as specified in its own configuration files or by default (10 min). The Config Loader registers new actions after a successful load and *************** *** 154,158 **** respond accordingly based on the config of the transaction). ! [Action Manager] Container that holds the Event, Response, and Transaction Pools. All items in the Action Manager are read-only and can be updated only by the Config --- 154,158 ---- respond accordingly based on the config of the transaction). ! [Module Manager] Container that holds the Event, Response, and Transaction Pools. All items in the Action Manager are read-only and can be updated only by the Config |
From: Sean C. <the...@us...> - 2001-07-05 21:51:56
|
Update of /cvsroot/aaron/aaron/src/main In directory usw-pr-cvs1:/tmp/cvs-serv28640 Modified Files: aaron.rb Log Message: Trying to get the Revision RCS tag to work Index: aaron.rb =================================================================== RCS file: /cvsroot/aaron/aaron/src/main/aaron.rb,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** aaron.rb 2001/07/05 21:34:20 1.3 --- aaron.rb 2001/07/05 21:51:53 1.4 *************** *** 215,223 **** =begin =VERSION ! $Revision 1.0 $ =end # This should pull the sticky tag, but the file's revision will work for now def printVersion() ! version = "$Revision 1.0 $" version = version.scan(/\$\s*Revision\s*(.*?)\s*\$/) printf("%s Ver: %s\n", $0, version) --- 215,223 ---- =begin =VERSION ! $Revision$ =end # This should pull the sticky tag, but the file's revision will work for now def printVersion() ! version = "$Revision$" version = version.scan(/\$\s*Revision\s*(.*?)\s*\$/) printf("%s Ver: %s\n", $0, version) |
From: Sean C. <the...@us...> - 2001-07-05 21:45:00
|
Update of /cvsroot/aaron/aaron In directory usw-pr-cvs1:/tmp/cvs-serv27028 Modified Files: TODO Log Message: Updated TODO Index: TODO =================================================================== RCS file: /cvsroot/aaron/aaron/TODO,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** TODO 2001/06/29 05:37:32 1.4 --- TODO 2001/07/05 21:44:56 1.5 *************** *** 1,7 **** --- 1,22 ---- $Id$ + [NEED TO DO'S] Flush out the example configuration files (conf/examples). SMTP and HTTP have been created, but more attention and love needs to be paid to each of the config files. + + Need to define a global configuration file that lets me recursively suck + in more configuration files. Need to write the parser for this. + + Need a command line option that has aaron recursively check the syntax of + all config files. Should use src/test/xml/well_formed_xml_check.rb + + Need to bundle src/test/xml/well_formed_xml_check.rb into an externally + callable module or class that handles all of the well formedness checks + for me easily. + + [WANT TO DO'S] + In the Makefile that installs aaron, it should do a search and replace + and change the default path to the paths.conf file. Need a good system for handling recursive testing operations. Current |
From: Sean C. <the...@us...> - 2001-07-05 21:37:33
|
Update of /cvsroot/aaron/www/docs In directory usw-pr-cvs1:/tmp/cvs-serv25316 Modified Files: index.html Log Message: Updated News. Index: index.html =================================================================== RCS file: /cvsroot/aaron/www/docs/index.html,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** index.html 2001/07/04 22:46:06 1.6 --- index.html 2001/07/05 21:37:30 1.7 *************** *** 7,11 **** <body bgcolor="#ffffff"> ! <A href="http://sourceforge.net"><IMG src="http://sourceforge.net/sflogo.php?group_id=29993" width="88" height="31" border="0" alt="SourceForge Logo"></A> --- 7,11 ---- <body bgcolor="#ffffff"> ! <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=29993" width="88" height="31" border="0" alt="SourceForge Logo"></a> *************** *** 14,17 **** --- 14,18 ---- <h3>News</h3> <ul> + <li><i>2001-07-05</i>: Looks like Source Forge fixed the CVS and email problems... now if they could get the ssh keys working again....</li> <li><i>2001-07-04</i>: Made a second pass at the aaron <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/aaron/aaron/doc/architecture">architecture</a>. Much more complete and more well thought out.</li> <li><i>2001-07-04</i>: Looks like a passwd file is out of sync on the CVS server because it can't look up my UID right now. A correlated problem is CVS commit emails aren't working. I'll post an update when they're working again. I think a security conscious admin was overly zealous with chroot(), but I could be wrong.</li> |
From: Sean C. <the...@us...> - 2001-07-05 21:34:23
|
Update of /cvsroot/aaron/aaron/src/main In directory usw-pr-cvs1:/tmp/cvs-serv24523 Modified Files: aaron.rb Log Message: Added inline RD documentation for aaron. You can create the manpage now by: rd2 -rrd/rd2man-lib.rb aaron.rb > aaron.man Index: aaron.rb =================================================================== RCS file: /cvsroot/aaron/aaron/src/main/aaron.rb,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** aaron.rb 2001/07/05 11:03:16 1.2 --- aaron.rb 2001/07/05 21:34:20 1.3 *************** *** 61,64 **** --- 61,72 ---- # Main file from which aaron runs + =begin + = NAME + aaron - Transaction Scheduling and exception handling machine + = SYNOPSIS + aaron [ ((*options*)) ] + == INTRODUCTION + ((*aaron*)) is an event scheduling and exception handling machine. ((*aaron*)) has a complex rules engine that makes it ideal for both monitoring of service, but also for scheduling the execution of events (ie: cron jobs). + =end # Global includes/requires *************** *** 70,130 **** ! # Loads the file paths for all of the remaining configuration and libraries. ! # The phase one config file is required otherwise Aaron will not know where to ! # go inorder to find the remaining configuration files and misc modules. ! def loadPathConfig(config, path_config_file_name = "./paths.conf") ! unless File.readable?(path_config_file_name) ! $stderr.printf("ERROR[loadPathConfig]: The path config file \"%s\" does not exist.\n\n", path_config_file_name) ! printHelp() ! exit(1) ! end ! ! # Load the file and parse out comments and blank lines ! IO.foreach(path_config_file_name) do |line| ! next if /\A\s*\#/ =~ line # comments ! line.gsub!(/\A\s+\z/, '') # blank lines ! next if line.empty? # empty lines ! /(.*?)\s*=\s*(.*)/ =~ line # find key/value pairs ! config[$1] = $2 ! end ! ! # Expand out the various *_mod_dirs ! config["action_mod_dir"] = config["module_path"] + "/" + config["action_mod_dir"] ! config["response_mod_dir"] = config["module_path"] + "/" + config["response_mod_dir"] ! config["transaction_mod_dir"] = config["module_path"] + "/" + config["transaction_mod_dir"] ! ! ! return(config) ! end ! ! ! ! # Prints out debugging level information ! def printDebugLevel(config) ! print "Debug level: " << config["debug"].to_s << "\n" ! end ! ! ! ! # Prints out a usage/help message ! def printHelp() ! printf("Usage: %s [OPTIONS]\n", $0) ! print " -h, --help\t\tDisplay this help and exit.\n" ! print " -d, --debug [n]\tSet debug level to 'n'\n" ! print " -c, --config <config>\tPath to phase one aaron config (default \"./path.conf\")\n" ! print " -V, --version\t\tDisplay aaron version information\n\n" ! end ! ! ! ! # Prints out the version of aaron. ! # This should pull the sticky tag, but the file's revision will work for now ! def printVersion() ! version = "$Revision 1.0 $" ! version = version.scan(/\$\s*Revision\s*(.*?)\s*\$/) ! printf("%s Ver: %s\n", $0, version) ! end ! ! # Function responsible for processing arguments and setting up config def processArgs(config) --- 78,94 ---- ! =begin ! = COMMAND-LINE OPTIONS ! --- -c|--config=file ! File that aaron uses when it first loads. This file is a necessary ! evil because aaron is currently an interpreted program and not compiled. ! --- -d|--debug[=level] ! Set the debugging level. If no ((*level*)) is specified, then the ! debug level is set to (({1})). ! --- -h|--help ! Display a help/usage message and exit. ! --- -V|--version ! Print the ((*aaron*)) version number and exit. ! =end # Function responsible for processing arguments and setting up config def processArgs(config) *************** *** 134,139 **** begin opts = GetoptLong.new( - [ "--debug", "-d", GetoptLong::OPTIONAL_ARGUMENT ], [ "--config", "-c", GetoptLong::REQUIRED_ARGUMENT ], [ "--help", "-h", GetoptLong::NO_ARGUMENT ], [ "--version", "-V", GetoptLong::NO_ARGUMENT ] --- 98,103 ---- begin opts = GetoptLong.new( [ "--config", "-c", GetoptLong::REQUIRED_ARGUMENT ], + [ "--debug", "-d", GetoptLong::OPTIONAL_ARGUMENT ], [ "--help", "-h", GetoptLong::NO_ARGUMENT ], [ "--version", "-V", GetoptLong::NO_ARGUMENT ] *************** *** 182,186 **** --- 146,227 ---- return(config) + end # End processArgs() + + + # Prints out a usage/help message + def printHelp() + printf("Usage: %s [OPTIONS]\n", $0) + print " -h, --help\t\tDisplay this help and exit.\n" + print " -d, --debug [n]\tSet debug level to 'n'\n" + print " -c, --config <config>\tPath to phase one aaron config (default \"./path.conf\")\n" + print " -V, --version\t\tDisplay aaron version information\n\n" + end # End printHelp + + + + =begin + =PHASE ONE CONFIG + The phase one config file is a simple configuration file that is required by + ((*aaron*)) to tell the program where configuration files and modules are, as + well as the names of the module directories (stats, event, response, etc.). + All information set by phase one configuration directives can be overridden + later by subsequent configuration directives. + ==PHASE ONE CONFIG FILE FORMAT + The phase one config has a simple format. All lines beginning with a (({#})) are ignored. All lines with spaces are ignored. All information in this file is stored in key/value pairs separated by (({=})) signs. + ==PHASE ONE CONFIG VARIABLES + --- module_path + Required. The path to the base modules directory. + --- action_mod_dir + Optional. Name of the directory within the ((*modules*)) directory that has ((*action*)) modules. Defaults to (({action})). + --- response_mod_dir + Optional. Name of the directory within the ((*modules*)) directory that has ((*response*)) modules. Defaults to (({response})). + --- transaction_mod_dir + Optional. Name of the directory within the ((*modules*)) directory that has ((*transaction*)) modules. Defaults to (({transaction})). + =end + def loadPathConfig(config, path_config_file_name = "./paths.conf") + unless File.readable?(path_config_file_name) + $stderr.printf("ERROR[loadPathConfig]: The path config file \"%s\" does not exist.\n\n", path_config_file_name) + printHelp() + exit(1) + end + + # Load the file and parse out comments and blank lines + IO.foreach(path_config_file_name) do |line| + next if /\A\s*\#/ =~ line # comments + line.gsub!(/\A\s+\z/, '') # blank lines + next if line.empty? # empty lines + /(.*?)\s*=\s*(.*)/ =~ line # find key/value pairs + config[$1] = $2 + end + + # Expand out the various *_mod_dirs + config["action_mod_dir"] = config["module_path"] + "/" + config["action_mod_dir"] + config["response_mod_dir"] = config["module_path"] + "/" + config["response_mod_dir"] + config["transaction_mod_dir"] = config["module_path"] + "/" + config["transaction_mod_dir"] + + + return(config) + end + + + + # Prints out debugging level information + def printDebugLevel(config) + print "Debug level: " << config["debug"].to_s << "\n" end + + + + =begin + =VERSION + $Revision 1.0 $ + =end + # This should pull the sticky tag, but the file's revision will work for now + def printVersion() + version = "$Revision 1.0 $" + version = version.scan(/\$\s*Revision\s*(.*?)\s*\$/) + printf("%s Ver: %s\n", $0, version) + end + |
From: Sean C. <the...@us...> - 2001-07-05 19:12:00
|
Update of /cvsroot/aaron/aaron/src/modules In directory usw-pr-cvs1:/tmp/cvs-serv23589/modules Log Message: Directory /cvsroot/aaron/aaron/src/modules added to the repository |
From: Sean C. <the...@us...> - 2001-07-05 19:01:43
|
Update of /cvsroot/aaron/aaron/src/main In directory usw-pr-cvs1:/tmp/cvs-serv8354 Added Files: paths.conf Log Message: Template phase one config file (should eventually be renamed to config.1st or something similar, IMHO) --- NEW FILE: paths.conf --- # Aaron config file # # $Id: paths.conf,v 1.1 2001/07/05 10:59:43 thetitan Exp $ # # Phase one config file # Path to the modules directory module_path = ../modules # Name of the directory that has action modules (inside module_path0 action_mod_dir = action # Name of the directory that has response modules (inside module_path0 response_mod_dir = response # Name of the directory that has transaction modules (inside module_path0 transaction_mod_dir = transaction |
From: Sean C. <the...@us...> - 2001-07-05 19:01:33
|
Update of /cvsroot/aaron/aaron/src/main In directory usw-pr-cvs1:/tmp/cvs-serv8885 Modified Files: aaron.rb Log Message: Added args processing (GetoptLong) Added 1st pass config file parsing Index: aaron.rb =================================================================== RCS file: /cvsroot/aaron/aaron/src/main/aaron.rb,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** aaron.rb 2001/06/29 02:09:30 1.1 --- aaron.rb 2001/07/05 11:03:16 1.2 *************** *** 61,68 **** # Main file from which aaron runs - puts <<AARON - Hello World... oh wait, my bad. ::grin:: ! Off to create some configuration parsing routines and testing routines. I'll ! come back to this file in a while. -sc ! AARON --- 61,197 ---- # Main file from which aaron runs ! # Global includes/requires ! require 'getoptlong' ! ! # Global variables ! config = Hash.new() ! ! ! ! # Loads the file paths for all of the remaining configuration and libraries. ! # The phase one config file is required otherwise Aaron will not know where to ! # go inorder to find the remaining configuration files and misc modules. ! def loadPathConfig(config, path_config_file_name = "./paths.conf") ! unless File.readable?(path_config_file_name) ! $stderr.printf("ERROR[loadPathConfig]: The path config file \"%s\" does not exist.\n\n", path_config_file_name) ! printHelp() ! exit(1) ! end ! ! # Load the file and parse out comments and blank lines ! IO.foreach(path_config_file_name) do |line| ! next if /\A\s*\#/ =~ line # comments ! line.gsub!(/\A\s+\z/, '') # blank lines ! next if line.empty? # empty lines ! /(.*?)\s*=\s*(.*)/ =~ line # find key/value pairs ! config[$1] = $2 ! end ! ! # Expand out the various *_mod_dirs ! config["action_mod_dir"] = config["module_path"] + "/" + config["action_mod_dir"] ! config["response_mod_dir"] = config["module_path"] + "/" + config["response_mod_dir"] ! config["transaction_mod_dir"] = config["module_path"] + "/" + config["transaction_mod_dir"] ! ! ! return(config) ! end ! ! ! ! # Prints out debugging level information ! def printDebugLevel(config) ! print "Debug level: " << config["debug"].to_s << "\n" ! end ! ! ! ! # Prints out a usage/help message ! def printHelp() ! printf("Usage: %s [OPTIONS]\n", $0) ! print " -h, --help\t\tDisplay this help and exit.\n" ! print " -d, --debug [n]\tSet debug level to 'n'\n" ! print " -c, --config <config>\tPath to phase one aaron config (default \"./path.conf\")\n" ! print " -V, --version\t\tDisplay aaron version information\n\n" ! end ! ! ! ! # Prints out the version of aaron. ! # This should pull the sticky tag, but the file's revision will work for now ! def printVersion() ! version = "$Revision 1.0 $" ! version = version.scan(/\$\s*Revision\s*(.*?)\s*\$/) ! printf("%s Ver: %s\n", $0, version) ! end ! ! ! # Function responsible for processing arguments and setting up config ! def processArgs(config) ! ENV["POSIXLY_CORRECT"] = "true" ! ! # Begin exception handling for GetoptLong ! begin ! opts = GetoptLong.new( ! [ "--debug", "-d", GetoptLong::OPTIONAL_ARGUMENT ], ! [ "--config", "-c", GetoptLong::REQUIRED_ARGUMENT ], ! [ "--help", "-h", GetoptLong::NO_ARGUMENT ], ! [ "--version", "-V", GetoptLong::NO_ARGUMENT ] ! ) ! opts.ordering = GetoptLong::REQUIRE_ORDER ! opts.quiet = TRUE ! opts.each do |opt, arg| ! opt.sub!(/\A--/, '') ! config[opt] = arg ! case opt ! when "debug" ! config["debug"].sub!(/\D+/, '') ! config["debug"] = "1" if config["debug"].empty? ! config["debug"] = config["debug"].to_i ! printDebugLevel(config) ! when "help" ! printHelp() ! exit(0) ! when "version" ! printVersion() ! exit(0) ! end ! end ! ! rescue GetoptLong::AmbigousOption ! $stderr.print "Error: #{$!}\n\n" ! printHelp() ! exit(1) ! rescue GetoptLong::InvalidOption ! $stderr.print "Error: #{$!}\n\n" ! printHelp() ! exit(1) ! rescue GetoptLong::MissingArgument ! $stderr.print "Error: #{$!}\n\n" ! printHelp() ! exit(1) ! rescue GetoptLong::NeedlessArgument ! $stderr.print "Error: #{$!}\n\n" ! printHelp() ! exit(1) ! end # End exception handling ! ! # Provide defaults for values that aren't required on the command line ! config["debug"] = 0 unless config.has_key?("debug") ! config["config"] = "./paths.conf" unless config.has_key?("config") ! ! return(config) ! end ! ! ! # Like C, this is the method that contains all of the magic ! def main(config, argv) ! config = processArgs(config) ! config = loadPathConfig(config, config["config"]) ! config.keys.sort.each { |key| puts "Config Key: #{key}\tVal: #{config[key]}" } if config["debug"] > 0 ! ! return(0) ! end ! ! # This should be the last line in the program ! exit(main(config, ARGV)) |
From: Sean C. <the...@us...> - 2001-06-29 09:19:21
|
Update of /cvsroot/aaron/www/docs In directory usw-pr-cvs1:/tmp/cvs-serv5135 Modified Files: index.html Log Message: Added a news bit/link for architecture Added a link for ROADMAP Index: index.html =================================================================== RCS file: /cvsroot/aaron/www/docs/index.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** index.html 2001/06/28 04:31:41 1.4 --- index.html 2001/06/29 09:19:18 1.5 *************** *** 14,19 **** <h3>News</h3> <ul> <li><i>2001-27-06</i>: CVS commit emails should be working</li> ! <li><i>2001-26-06</i>: ROADMAP posted, has basic plan of attack</li> </ul> --- 14,20 ---- <h3>News</h3> <ul> + <li><i>2001-28-06</i>: First cut at the aaron <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/aaron/aaron/doc/architecture">architecture</a> has been defined.</li> <li><i>2001-27-06</i>: CVS commit emails should be working</li> ! <li><i>2001-26-06</i>: <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/aaron/aaron/ROADMAP">ROADMAP</a> posted, has basic plan of attack</li> </ul> |
From: Sean C. <the...@us...> - 2001-06-29 08:53:45
|
Update of /cvsroot/aaron/aaron In directory usw-pr-cvs1:/tmp/cvs-serv28508 Modified Files: ROADMAP Log Message: Updated ROADMAP (used text-mode in emacs). Noted docs/architecture for program layout Index: ROADMAP =================================================================== RCS file: /cvsroot/aaron/aaron/ROADMAP,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** ROADMAP 2001/06/27 02:21:57 1.1 --- ROADMAP 2001/06/29 08:53:42 1.2 *************** *** 1,61 **** $Id$ ! Ahh the joys of software development. Here's an ordered list of ! things that need to happen, some can be accomplished in parallel. ! 1) Need to have people attack the configuration files, flush them out, ! expand on them, and add more protocols and services. Out of this an ! architecture can be developed to accommodate the monitoring of various ! services. ! 2) After sufficient work has been done on the configuration files, an ! API needs to be defined to allow the central monitoring engine to ! perform a query, interpret the results, and perform an action. ! 3) A central monitoring engine needs to be developed that'll be able ! to (note: process = thread for now): ! *) fork and dispatch a worker process that'll perform the ! queries and actions. ! *) monitor workers to make sure they don't grow too large, violate a ! site policy, etc. ! *) fork and dispatch an analytical process that'll run periodically ! to test for SLA violations, or perform some offline AI functions based ! on the data at hand. ! *) fork and dispatch a report process that'll be able to respond to ! queries regarding the status of both services and the aaron service. ! *) fork a child that'll be capable of streaming out information ! about what is being monitored and the status of what is being ! monitored. Ex: machines checking each other at different geographic ! locations. Ex: multiple machines in a location checking the services ! at a 2nd off-site location, etc. ! *) kill workers on shutdown of the aaron service ! 3) Develop the modules that'll run with their appropriate ! configurations (see MODULES_* for a list of complete or desired modules) ! 4) Release a 0.5 version of the software to Freshmeat ! 5) Bug fixes and module enhancements 0.6 ! 6) Refine the API and configuration syntax. ! 7) Use iterative software development cycle to 1.0. Version 1.0 ! should still be written in the prototype language. ! 8) Begin the move from prototype language (probably scripted) to C. ! Port all tier one modules and core monitoring engine. Before 2.0 can ! be released, aaron must: ! *) compile and run on all tier 1 supported operating systems (see OS ! for details) ! *) compile and run all tier one modules ! *) compile and run most tier two modules ! 9 and beyond) Incremental support for more operating systems and ! modules. Release new versions as appropriate. \ No newline at end of file --- 1,75 ---- $Id$ ! Here's an ordered ROADMAP of events that need to happen. Some of ! these can be accomplished in parallel. See doc/architecture for ! the architecture of aaron. This ROADMAP is subject to change based ! on the new program layout specified. ! [config] Need to have people attack the configuration files, flush ! them out, expand on them, and add more protocols and services. Out ! of this an architecture can be developed to accommodate the ! monitoring of various services. ! [devel] Load configuration files. Configuration files should be ! parsed. An event handler should be dynamically load the appropriate ! module and have the newly loaded module extend the XML parsing class ! at module load time. The newly loaded module registers additional ! event handlers that are applicable to the rest of the config file ! and deeply nested nodes. ! [api] After sufficient work has been done on the configuration files, ! an API needs to be defined to allow the central monitoring engine to ! perform a query, interpret the results, and perform an action. ! [devel] A central monitoring engine needs to be developed that'll be ! able to (note: process = thread for now): ! [devel] Fork and dispatch a worker process that'll perform the queries ! and actions. ! [devel] monitor workers to make sure they don't grow too ! large, violate a site policy, etc. ! [devel] fork and dispatch an analytical process that'll run ! periodically to test for SLA violations, or perform some ! offline AI functions based on the data at hand. ! [devel] fork and dispatch a report process that'll be able to ! respond to queries regarding the status of both services and ! the aaron service. ! [devel] fork a child that'll be capable of streaming out ! information about what is being monitored and the status of ! what is being monitored. Ex: machines checking each other ! at different geographic locations. Ex: multiple machines in ! a location checking the services at a 2nd off-site location, ! etc. ! [devel] kill workers on shutdown of the aaron service ! [modules] Develop the modules that'll run with their appropriate ! configurations (see MODULES_* for a list of complete or desired ! modules) ! [pr] Release a 0.5 version of the software to Freshmeat ! [devel] Bug fixes and module enhancements 0.6 ! [devel] Refine the API and configuration syntax. ! [devel] Use an iterative software development cycle to 1.0. Version ! 1.0 should still be written in the prototype language. ! [devel] Begin the move from prototype language (probably scripted) to ! C. Port all tier one modules and core monitoring engine. Before 2.0 ! can be released, aaron must: ! [devel] compile and run on all tier 1 supported operating ! systems (see OS for details) ! ! [modules] compile and run all tier one modules ! ! [modules] compile and run most tier two modules ! ! [devel/modules] Incremental support for more operating systems and ! modules. Release new versions as appropriate. |
From: Sean C. <the...@us...> - 2001-06-29 08:51:40
|
Update of /cvsroot/aaron/aaron/doc In directory usw-pr-cvs1:/tmp/cvs-serv27653 Added Files: architecture Log Message: First cut at aaron's architecture. This needs to get reworked --- NEW FILE: architecture --- $Id: architecture,v 1.1 2001/06/29 08:51:37 thetitan Exp $ Aaron's architecture /--------------------------------------------------------------------------------------------------\ | | | Aaron - Task Scheduling, exception, and monitoring machine | | | | /------------------\ /--------------------------------------\ | | | | | | | | | Stats Manager | | Config Loader and Data Validator | | | | | | | | | \------------------/ \--------------------------------------/ | | | | | | | | /------------------\ /------------------------------------------------------------\ | | | | | | | | | Network sync for | | Action Manager | | | | incoming data in | | | | | | queue (locking | | /------------------------------------------------------\ | | | | and syncing | | | | | | | | mechanism) | | | Event Manager | | | | | | | | | | | | +------------------+ | \ Instances of actions that can be used in AR (action | | | | | |----+ \ reaction) transactions. If an action is removed | | | | | Queue of action and \+ \ from the Action Manager, then the departing | | | | | reaction transactions. | | action instance inspects the queue and will either | | | | | Action and reaction | | invalidate the transaction, or see if the | | | | | transactions are a | | transaction can complete with the missing AR | | | | | collection of action | | component. | | | | | and reaction | | | | | | | references. Upon the | \----------------------------------------------------/ | | | | addition of either an | | | | | action or reaction to | | | | | a transaction | /----------------------------------------------------\ | | | | container, the | | | | | | | instance of the action | | Response Manager (reactive actions) | | | | | or reaction in their | | | | | | | respective manager | | Instances of actions that can be used in AR | | | | | is notified that way | | transactions. If a reaction is removed from the | | | | | when an action or | | the Reactive Manager, then the departing reaction | | | | | reaction is updated or | | instance inspects the queue and will either | | | | | deleted from their | | invalidate the transaction, or see if the | | | | | respective manager, | | transaction can complete with the missing AR | | | | | the transaction can | | component. | | | | | either be invalidated | | | | | | | or can continue | \----------------------------------------------------/ | | | | depending on the | | | | | configuration. | | | | | | If an action is removed from the Action Manager, then | | | +------------------+-----/ the departing action instance inspects the queue and | | | | | | will either invalidate the transaction, or see if the | | | | Network sync for | | transaction can be completed with the missing Action | | | | outgoing data in | | component. | | | | queue (locking | | | | | | and syncing | \------------------------------------------------------------/ | | | mechanism) | | | | | | | \------------------/ | | | | | | /----------------------------------------------------------------------------------\ | | | | | | | Thread manager | | | | | | | | Responsible for making sure that every thread that is delligated to a task | | | | from the AR queue has a timer set to make sure the action doesn't take too | | | | long, a soft memory limit (RAM), and an exception layer that will catch all | | | | possible exceptions that a thread could throw. A thrown exception by a | | | | thread is caught and passed down the stack in an AR transaction until it is | | | | dealth with until it hits the default aaron reaction manager and spits an | | | | error to the log file. If a transaction is flagged as having a system call | | | | (that is executed outside of aaron such as a fork or a system call that | | | | could block the parent), then the thread manager is responsible for spawning | | | | a special thread that will fork once for the transaction management (sets a | | | | semephore for shared memory, locking, etc) and the newly forked process will | | | | fork from itself whenever the system call is made that way the parent aaron | | | | process is never caught waiting for an external system call to finish. | | | | | | | \----------------------------------------------------------------------------------/ | | | | /----------------------------------------------------------------------------------\ | | | | | | | Logging Manager | | | | | | | | As opposed to the Stats Manager which is a data collection device (dynamically | | | | definable collection device based on the configuration), the logging manager | | | | is responsible for outputing anything not caught in an AR Transaction and | | | | logging this uncaught transaction to disk). | | | | | | | \----------------------------------------------------------------------------------/ | | | Notes: Config File Loader and Validator loads once on startup in a special invocation. Upon the completion of the Loader's execution, the Loader registers itself as an Action with the Action Manager and schedules itself as a transaction that needs to be rerun as specified in its own configuration files or as by default (10 minutes). The Config Loader will register new actions after the data that has been read in has been validated. A new Action that is being registered will register itself in the following order: Action Manager Stats Manager |
From: Sean C. <the...@us...> - 2001-06-29 05:37:34
|
Update of /cvsroot/aaron/aaron In directory usw-pr-cvs1:/tmp/cvs-serv25832 Modified Files: TODO Log Message: Updated TODO Index: TODO =================================================================== RCS file: /cvsroot/aaron/aaron/TODO,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** TODO 2001/06/27 01:37:40 1.3 --- TODO 2001/06/29 05:37:32 1.4 *************** *** 4,5 **** --- 4,8 ---- HTTP have been created, but more attention and love needs to be paid to each of the config files. + + Need a good system for handling recursive testing operations. Current + method will get out of hand and won't scale quickly. |
From: Sean C. <the...@us...> - 2001-06-29 05:36:14
|
Update of /cvsroot/aaron/aaron In directory usw-pr-cvs1:/tmp/cvs-serv25262 Modified Files: Makefile Log Message: Updated Makefile, can now test recursively (testing system should get over-hauled eventually). Index: Makefile =================================================================== RCS file: /cvsroot/aaron/aaron/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** Makefile 2001/06/27 02:31:22 1.1 --- Makefile 2001/06/29 05:36:12 1.2 *************** *** 6,9 **** @echo "Usage:" @echo ! @echo " make help - This help message" ! @echo --- 6,13 ---- @echo "Usage:" @echo ! @echo " help: This help message" ! @echo " test: Run tests" ! @echo "" ! ! test: ! @cd src && make tests |
From: Sean C. <the...@us...> - 2001-06-29 05:35:17
|
Update of /cvsroot/aaron/aaron/src In directory usw-pr-cvs1:/tmp/cvs-serv25048 Modified Files: Makefile Log Message: Made tests relative Index: Makefile =================================================================== RCS file: /cvsroot/aaron/aaron/src/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** Makefile 2001/06/29 02:10:11 1.1 --- Makefile 2001/06/29 05:35:14 1.2 *************** *** 16,18 **** tests: ! @make -f test/Makefile --- 16,18 ---- tests: ! @cd test && make all |
From: Sean C. <the...@us...> - 2001-06-29 05:34:27
|
Update of /cvsroot/aaron/aaron/src/test In directory usw-pr-cvs1:/tmp/cvs-serv24638 Modified Files: Makefile Log Message: Added Makefile for the test directory. This is going to be a mess until someone (or myself) impliments a better testing system Index: Makefile =================================================================== RCS file: /cvsroot/aaron/aaron/src/test/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** Makefile 2001/06/29 02:00:20 1.1 --- Makefile 2001/06/29 05:34:24 1.2 *************** *** 1,9 **** # $Id$ - TESTS= xml - - foo: - @echo "Tests not implimented yet" - help: @echo "Usage:" --- 1,4 ---- *************** *** 11,15 **** @echo " all: Run all tests" @echo " help: This message" - @echo " showtests: Prints a list of all of the modules" - @echo " [test]: Runs a specific test" --- 6,18 ---- @echo " all: Run all tests" @echo " help: This message" + all: test_print_start test_xml test_print_end + + test_print_end: + @echo "Tests finished." + + test_print_start: + @echo "Starting tests..." + + test_xml: + @cd xml && make test |
From: Sean C. <the...@us...> - 2001-06-29 05:31:38
|
Update of /cvsroot/aaron/aaron/src/test/xml In directory usw-pr-cvs1:/tmp/cvs-serv23953 Added Files: README Log Message: Added README. Screwed up Makefile's commit (was meant for README). Makefile: controls the directory and all operations (testing primarily) --- NEW FILE: README --- All XML functions are based on the ruby-xmlparser module which can be found at: http://www.yoshidam.net/Ruby.html#xmlparser Files in test: well_formed_xml_check.rb Usage: well_formed_xml_check.rb [xml files] ... |
From: Sean C. <the...@us...> - 2001-06-29 05:30:50
|
Update of /cvsroot/aaron/aaron/src/test/xml In directory usw-pr-cvs1:/tmp/cvs-serv23788 Added Files: Makefile Log Message: Added README file for the directory (few instructions) --- NEW FILE: Makefile --- # $Id: Makefile,v 1.1 2001/06/29 05:30:47 thetitan Exp $ test: test_well_formed_xml_check.rb test_well_formed_xml_check.rb: @echo "Testing well_formed_xml_check.rb..." @ruby well_formed_xml_check.rb ../../../conf/examples/*.conf @echo "Done well_formed_xml_check.rb" |
From: Sean C. <the...@us...> - 2001-06-29 05:30:11
|
Update of /cvsroot/aaron/aaron/src/test/xml In directory usw-pr-cvs1:/tmp/cvs-serv23471 Added Files: well_formed_xml_check.rb Log Message: Added a small ruby script that tests for well formed XML configuration files --- NEW FILE: well_formed_xml_check.rb --- #! /usr/local/bin/ruby ## XML well formedness checker # # Notes: # $< is a kick ass varible! Check it out (wish perl had this) # http://sean.chittenden.org/programming/ruby/programming_ruby/language.html#file_cat_obj print "Loading xmlparser..." require 'xmlparser' print "done\n" def testxml (file) # Begin exception handling begin xml = File.new(file) parser = XMLParser.new parser.parse(xml) # If you're here, then the document is well formed rescue XMLParserError line = parser.line column = parser.column print "\n" print "File:\t#{file}\n" print "Line:\t#{line}\n" print "Char:\t#{column}\n" print "Error:\t#{$!}\n" exit 1 end end ARGV.each { |file| testxml(file) } print "\nWell formed documents:\n" ARGV.each { |file| print "\t#{file}\n" } |
From: Sean C. <the...@us...> - 2001-06-29 05:28:46
|
Update of /cvsroot/aaron/aaron In directory usw-pr-cvs1:/tmp/cvs-serv23001 Added Files: INSTALL Log Message: Updated/created INSTALL to keep a list of all modules needed for aaron --- NEW FILE: INSTALL --- Installation Notes: $Id: INSTALL,v 1.1 2001/06/29 05:28:43 thetitan Exp $ Required Software: Ruby 1.6 (http://www.ruby-lang.org/) expat 1.95 (or newer. See ports tree: textproc/expat2) ruby-xmlparser (See ports tree: textproc/ruby-xmlparser) |
From: Sean C. <the...@us...> - 2001-06-29 04:58:48
|
Update of /cvsroot/aaron/aaron/conf/examples In directory usw-pr-cvs1:/tmp/cvs-serv14733 Modified Files: http.conf smtp.conf Log Message: Made configuration documents well formed xml (thanks to new test scripts) Index: http.conf =================================================================== RCS file: /cvsroot/aaron/aaron/conf/examples/http.conf,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** http.conf 2001/06/27 01:35:06 1.1 --- http.conf 2001/06/29 04:58:45 1.2 *************** *** 1,3 **** ! <?xml version="1.0"? encoding="UTF-8" standalone="yes"> <!-- $Id$ --> --- 1,3 ---- ! <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!-- $Id$ --> *************** *** 9,13 **** <email ondown="yes" onup="yes" ontimeout="yes" onunavailable="yes" frequency="300">sys...@ex...</email> <email ondown="yes" onup="no" ontimeout="yes" onbadresponse="no" frequency="3600">sit...@ex...</email> ! <email onbadresponse="yes" frequency="0">pro...@ex...</example> <email onnetfailure="yes">net...@ex...</email> </emails> --- 9,13 ---- <email ondown="yes" onup="yes" ontimeout="yes" onunavailable="yes" frequency="300">sys...@ex...</email> <email ondown="yes" onup="no" ontimeout="yes" onbadresponse="no" frequency="3600">sit...@ex...</email> ! <email onbadresponse="yes" frequency="0">pro...@ex...</email> <email onnetfailure="yes">net...@ex...</email> </emails> *************** *** 25,29 **** <module name="http"> <uri>/</uri> ! <proto version="1.1"> <host>www.example.com</host> <responses> --- 25,29 ---- <module name="http"> <uri>/</uri> ! <proto version="1.1"/> <host>www.example.com</host> <responses> Index: smtp.conf =================================================================== RCS file: /cvsroot/aaron/aaron/conf/examples/smtp.conf,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** smtp.conf 2001/06/27 01:35:33 1.1 --- smtp.conf 2001/06/29 04:58:45 1.2 *************** *** 1,3 **** ! <?xml version="1.0"? encoding="UTF-8" standalone="yes"> <!-- $Id$ --> --- 1,3 ---- ! <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!-- $Id$ --> *************** *** 13,17 **** <email ondown="yes" onup="yes" ontimeout="yes" onunavailable="yes" frequency="300">sys...@ex...</email> <email ondown="yes" onup="no" ontimeout="yes" onbadresponse="no" frequency="3600">sit...@ex...</email> ! <email onbadresponse="yes" frequency="0">pro...@ex...</example> </emails> </action> --- 13,17 ---- <email ondown="yes" onup="yes" ontimeout="yes" onunavailable="yes" frequency="300">sys...@ex...</email> <email ondown="yes" onup="no" ontimeout="yes" onbadresponse="no" frequency="3600">sit...@ex...</email> ! <email onbadresponse="yes" frequency="0">pro...@ex...</email> </emails> </action> |
From: Sean C. <the...@us...> - 2001-06-29 04:44:41
|
Update of /cvsroot/aaron/aaron/src/test/xml In directory usw-pr-cvs1:/tmp/cvs-serv10609/xml Log Message: Directory /cvsroot/aaron/aaron/src/test/xml added to the repository |
From: Sean C. <the...@us...> - 2001-06-29 02:10:14
|
Update of /cvsroot/aaron/aaron/src In directory usw-pr-cvs1:/tmp/cvs-serv643 Added Files: Makefile Log Message: And one Makefile to bind them all.... --- NEW FILE: Makefile --- # $Id: Makefile,v 1.1 2001/06/29 02:10:11 thetitan Exp $ help: @echo "Usage:" @echo "" @echo " help: This message" @echo " run: Runs aaron from current current directory" @echo " tests: Runs a regression test for aaron" run: @echo "Running aaron..." @echo "" @./main/aaron.rb @echo "" @echo "aaron stopped." tests: @make -f test/Makefile |
From: Sean C. <the...@us...> - 2001-06-29 02:09:33
|
Update of /cvsroot/aaron/aaron/src/main In directory usw-pr-cvs1:/tmp/cvs-serv498/main Added Files: aaron.rb Log Message: First crack at aaron.rb. This is primarily a place holder. --- NEW FILE: aaron.rb --- #!/usr/local/bin/ruby # ==================================================================== # The IT Net App Software License, Version 1.0 # # Copyright (c) 2001 IT Net App. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # 3. The end-user documentation included with the redistribution, # if any, must include the following acknowledgment: # "This product includes software developed by IT Net App # (http://www.itnetapp.com/)." # Alternately, this acknowledgment may appear in the software itself, # if and wherever such third-party acknowledgments normally appear. # # 4. The names "IT Net App" and "Aaron" must not be used to endorse # or promote products derived from this software without prior # written permission. For written permission, please contact # li...@it.... # # 5. Products derived from this software may not be called "Aaron", # nor may "Aaron" appear in their name, without prior written # permission of IT Net App. # # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR # ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ==================================================================== # # This software consists of voluntary contributions made by many # individuals on behalf of IT Net App. For more information on the # IT Net App Open, please see <http://www.itnetapp.com/>. # # Portions of this license are based upon public domain software # license originally written by the Apache Software Foundation. # # See http://aaron.sourceforge.net/ for more details on the Aaron project. # # $Id: aaron.rb,v 1.1 2001/06/29 02:09:30 thetitan Exp $ # # Description: # Main file from which aaron runs puts <<AARON Hello World... oh wait, my bad. ::grin:: Off to create some configuration parsing routines and testing routines. I'll come back to this file in a while. -sc AARON |
From: Sean C. <the...@us...> - 2001-06-29 02:02:29
|
Update of /cvsroot/aaron/aaron/src/os In directory usw-pr-cvs1:/tmp/cvs-serv31734 Added Files: README Log Message: Added a README that contains possible information regarding OS specific information. This list could be very true depending on whether or not this app is developed using the apr run time libraries. --- NEW FILE: README --- Directory to hold all operating system specific settings and information. List of possible OS related specifics: bs2000 cygwin mpeix netware os2 os390 tpf unix win32 |
From: Sean C. <the...@us...> - 2001-06-29 02:00:22
|
Update of /cvsroot/aaron/aaron/src/test In directory usw-pr-cvs1:/tmp/cvs-serv31451 Added Files: Makefile Log Message: Added a Makefile responsible for controlling all testing activity --- NEW FILE: Makefile --- # $Id: Makefile,v 1.1 2001/06/29 02:00:20 thetitan Exp $ TESTS= xml foo: @echo "Tests not implimented yet" help: @echo "Usage:" @echo "" @echo " all: Run all tests" @echo " help: This message" @echo " showtests: Prints a list of all of the modules" @echo " [test]: Runs a specific test" |