From 74e058c8a010ef6feb539248a550d0bb169c1e94 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 27 Dec 2010 00:04:44 +0000 Subject: import torrus 1.0.9 --- torrus/doc/Makefile.am | 105 ++ torrus/doc/Makefile.in | 620 +++++++ torrus/doc/devdoc/architecture.pod | 511 ++++++ torrus/doc/devdoc/devdiscover.pod | 296 ++++ torrus/doc/devdoc/progstyle.pod | 138 ++ torrus/doc/devdoc/reqs.0.0.pod | 166 ++ torrus/doc/devdoc/reqs.0.1.pod | 210 +++ torrus/doc/devdoc/torrus_roadmap.pod | 249 +++ torrus/doc/devdoc/wd.distributed.pod | 198 +++ torrus/doc/devdoc/wd.messaging.pod | 128 ++ torrus/doc/devdoc/wd.monitor-escalation.pod | 117 ++ torrus/doc/devdoc/wd.uptime-mon.pod | 162 ++ torrus/doc/install.pod.in | 630 +++++++ torrus/doc/manpages/Makefile.am | 134 ++ torrus/doc/manpages/Makefile.in | 445 +++++ torrus/doc/manpages/torrus.pod.in | 98 ++ torrus/doc/manpages/torrus_acledit.pod.in | 212 +++ torrus/doc/manpages/torrus_action_notify.pod.in | 100 ++ .../doc/manpages/torrus_action_printemail.pod.in | 101 ++ torrus/doc/manpages/torrus_action_snmptrap.pod.in | 97 ++ torrus/doc/manpages/torrus_buildsearchdb.pod.in | 79 + torrus/doc/manpages/torrus_cleanup.pod.in | 60 + torrus/doc/manpages/torrus_clearcache.pod.in | 47 + torrus/doc/manpages/torrus_collector.pod.in | 129 ++ torrus/doc/manpages/torrus_compilexml.pod.in | 91 ++ torrus/doc/manpages/torrus_configinfo.pod.in | 46 + torrus/doc/manpages/torrus_configsnapshot.pod.in | 144 ++ torrus/doc/manpages/torrus_devdiscover.pod.in | 114 ++ torrus/doc/manpages/torrus_flushmonitors.pod.in | 68 + torrus/doc/manpages/torrus_genddx.pod.in | 136 ++ torrus/doc/manpages/torrus_genlist.pod.in | 71 + torrus/doc/manpages/torrus_genreport.pod.in | 93 ++ torrus/doc/manpages/torrus_install_plugin.pod.in | 51 + torrus/doc/manpages/torrus_monitor.pod.in | 96 ++ torrus/doc/manpages/torrus_nodeid.pod.in | 124 ++ torrus/doc/manpages/torrus_rrddir2xml.pod.in | 112 ++ torrus/doc/manpages/torrus_schedulerinfo.pod.in | 154 ++ torrus/doc/manpages/torrus_snmpfailures.pod.in | 155 ++ torrus/doc/manpages/torrus_srvderive.pod.in | 136 ++ torrus/doc/manpages/torrus_ttproclist.pod.in | 144 ++ torrus/doc/nodeid_usage.pod.in | 210 +++ torrus/doc/reporting_setup.pod.in | 365 +++++ torrus/doc/rpnexpr.pod.in | 106 ++ torrus/doc/rrfw_torrus_migration.pod.in | 238 +++ torrus/doc/scalability.pod.in | 274 ++++ torrus/doc/snmpdiscovery.pod.in | 1115 +++++++++++++ torrus/doc/stylingprofile.pod.in | 217 +++ torrus/doc/userguide.pod.in | 869 ++++++++++ torrus/doc/vendorsupport.pod.in | 222 +++ torrus/doc/webintf.pod.in | 280 ++++ torrus/doc/xmlconfig.pod.in | 1725 ++++++++++++++++++++ 51 files changed, 12388 insertions(+) create mode 100644 torrus/doc/Makefile.am create mode 100644 torrus/doc/Makefile.in create mode 100644 torrus/doc/devdoc/architecture.pod create mode 100644 torrus/doc/devdoc/devdiscover.pod create mode 100644 torrus/doc/devdoc/progstyle.pod create mode 100644 torrus/doc/devdoc/reqs.0.0.pod create mode 100644 torrus/doc/devdoc/reqs.0.1.pod create mode 100644 torrus/doc/devdoc/torrus_roadmap.pod create mode 100644 torrus/doc/devdoc/wd.distributed.pod create mode 100644 torrus/doc/devdoc/wd.messaging.pod create mode 100644 torrus/doc/devdoc/wd.monitor-escalation.pod create mode 100644 torrus/doc/devdoc/wd.uptime-mon.pod create mode 100644 torrus/doc/install.pod.in create mode 100644 torrus/doc/manpages/Makefile.am create mode 100644 torrus/doc/manpages/Makefile.in create mode 100644 torrus/doc/manpages/torrus.pod.in create mode 100644 torrus/doc/manpages/torrus_acledit.pod.in create mode 100644 torrus/doc/manpages/torrus_action_notify.pod.in create mode 100644 torrus/doc/manpages/torrus_action_printemail.pod.in create mode 100644 torrus/doc/manpages/torrus_action_snmptrap.pod.in create mode 100644 torrus/doc/manpages/torrus_buildsearchdb.pod.in create mode 100644 torrus/doc/manpages/torrus_cleanup.pod.in create mode 100644 torrus/doc/manpages/torrus_clearcache.pod.in create mode 100644 torrus/doc/manpages/torrus_collector.pod.in create mode 100644 torrus/doc/manpages/torrus_compilexml.pod.in create mode 100644 torrus/doc/manpages/torrus_configinfo.pod.in create mode 100644 torrus/doc/manpages/torrus_configsnapshot.pod.in create mode 100644 torrus/doc/manpages/torrus_devdiscover.pod.in create mode 100644 torrus/doc/manpages/torrus_flushmonitors.pod.in create mode 100644 torrus/doc/manpages/torrus_genddx.pod.in create mode 100644 torrus/doc/manpages/torrus_genlist.pod.in create mode 100644 torrus/doc/manpages/torrus_genreport.pod.in create mode 100644 torrus/doc/manpages/torrus_install_plugin.pod.in create mode 100644 torrus/doc/manpages/torrus_monitor.pod.in create mode 100644 torrus/doc/manpages/torrus_nodeid.pod.in create mode 100644 torrus/doc/manpages/torrus_rrddir2xml.pod.in create mode 100644 torrus/doc/manpages/torrus_schedulerinfo.pod.in create mode 100644 torrus/doc/manpages/torrus_snmpfailures.pod.in create mode 100644 torrus/doc/manpages/torrus_srvderive.pod.in create mode 100644 torrus/doc/manpages/torrus_ttproclist.pod.in create mode 100644 torrus/doc/nodeid_usage.pod.in create mode 100644 torrus/doc/reporting_setup.pod.in create mode 100644 torrus/doc/rpnexpr.pod.in create mode 100644 torrus/doc/rrfw_torrus_migration.pod.in create mode 100644 torrus/doc/scalability.pod.in create mode 100644 torrus/doc/snmpdiscovery.pod.in create mode 100644 torrus/doc/stylingprofile.pod.in create mode 100644 torrus/doc/userguide.pod.in create mode 100644 torrus/doc/vendorsupport.pod.in create mode 100644 torrus/doc/webintf.pod.in create mode 100644 torrus/doc/xmlconfig.pod.in (limited to 'torrus/doc') diff --git a/torrus/doc/Makefile.am b/torrus/doc/Makefile.am new file mode 100644 index 000000000..336762e20 --- /dev/null +++ b/torrus/doc/Makefile.am @@ -0,0 +1,105 @@ + +# Copyright (C) 2002 Stanislav Sinyagin +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + +# $Id: Makefile.am,v 1.1 2010-12-27 00:04:32 ivan Exp $ +# Stanislav Sinyagin +# + +SUBDIRS = . manpages + +SUBST = @abs_top_builddir@/setup_tools/substvars.sh + +CLEANFILES = $(POD_FILES) $(nodist_pkgdoc_DATA) +EXTRA_DIST = $(SRCPOD) + +SRCPOD = \ + install.pod.in \ + nodeid_usage.pod.in \ + reporting_setup.pod.in \ + rpnexpr.pod.in \ + rrfw_torrus_migration.pod.in \ + scalability.pod.in \ + snmpdiscovery.pod.in \ + stylingprofile.pod.in \ + userguide.pod.in \ + vendorsupport.pod.in \ + webintf.pod.in \ + xmlconfig.pod.in + +POD_FILES = \ + install.pod \ + nodeid_usage.pod \ + reporting_setup.pod \ + rpnexpr.pod \ + rrfw_torrus_migration.pod \ + scalability.pod \ + snmpdiscovery.pod \ + stylingprofile.pod \ + userguide.pod \ + vendorsupport.pod \ + webintf.pod \ + xmlconfig.pod + + +pkgdocdir = @pkgdocdir@ + +if POD2TEXT_PRESENT +nodist_pkgdoc_DATA = \ + install.txt \ + nodeid_usage.txt \ + reporting_setup.txt \ + rpnexpr.txt \ + rrfw_torrus_migration.txt \ + scalability.txt \ + snmpdiscovery.txt \ + stylingprofile.txt \ + userguide.txt \ + vendorsupport.txt \ + webintf.txt \ + xmlconfig.txt +endif + +devdocdir = $(pkgdocdir)/devdoc + +dist_devdoc_DATA = \ + devdoc/architecture.pod \ + devdoc/devdiscover.pod \ + devdoc/progstyle.pod \ + devdoc/reqs.0.0.pod \ + devdoc/reqs.0.1.pod \ + devdoc/torrus_roadmap.pod \ + devdoc/wd.distributed.pod \ + devdoc/wd.messaging.pod \ + devdoc/wd.monitor-escalation.pod \ + devdoc/wd.uptime-mon.pod + +SUFFIXES = .pod.in .pod .txt + +.PRECIOUS: $(POD_FILES) + +.pod.in.pod: + $(SUBST) $< > $@ + +if POD2TEXT_PRESENT +.pod.txt: + $(POD2TEXT) $< > $@ +endif + +htdocs: $(POD_FILES) + cd manpages; make pods + HTMLDIR=@abs_top_builddir@/../htdocs $(SHELL) mkhtdocs.sh + diff --git a/torrus/doc/Makefile.in b/torrus/doc/Makefile.in new file mode 100644 index 000000000..6c768bbfd --- /dev/null +++ b/torrus/doc/Makefile.in @@ -0,0 +1,620 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002 Stanislav Sinyagin +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + +# $Id: Makefile.in,v 1.1 2010-12-27 00:04:31 ivan Exp $ +# Stanislav Sinyagin +# + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +DIST_COMMON = $(dist_devdoc_DATA) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(devdocdir)" "$(DESTDIR)$(pkgdocdir)" +dist_devdocDATA_INSTALL = $(INSTALL_DATA) +nodist_pkgdocDATA_INSTALL = $(INSTALL_DATA) +DATA = $(dist_devdoc_DATA) $(nodist_pkgdoc_DATA) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +FIND = @FIND@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KILL = @KILL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PERLINC = @PERLINC@ +POD2MAN = @POD2MAN@ +POD2MAN_PRESENT_FALSE = @POD2MAN_PRESENT_FALSE@ +POD2MAN_PRESENT_TRUE = @POD2MAN_PRESENT_TRUE@ +POD2TEXT = @POD2TEXT@ +POD2TEXT_PRESENT_FALSE = @POD2TEXT_PRESENT_FALSE@ +POD2TEXT_PRESENT_TRUE = @POD2TEXT_PRESENT_TRUE@ +RM = @RM@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SLEEP = @SLEEP@ +STRIP = @STRIP@ +SU = @SU@ +VERSION = @VERSION@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +cachedir = @cachedir@ +cfgdefdir = @cfgdefdir@ +datadir = @datadir@ +dbhome = @dbhome@ +defrrddir = @defrrddir@ +distxmldir = @distxmldir@ +enable_pkgonly = @enable_pkgonly@ +enable_varperm = @enable_varperm@ +exec_prefix = @exec_prefix@ +exmpdir = @exmpdir@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +logdir = @logdir@ +mandir = @mandir@ +mansec_misc = @mansec_misc@ +mansec_usercmd = @mansec_usercmd@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +perlithreads = @perlithreads@ +perllibdir = @perllibdir@ +perllibdirs = @perllibdirs@ +piddir = @piddir@ +pkgbindir = @pkgbindir@ +pkgdocdir = @pkgdocdir@ +pkghome = @pkghome@ +plugdevdisccfgdir = @plugdevdisccfgdir@ +pluginsdir = @pluginsdir@ +plugtorruscfgdir = @plugtorruscfgdir@ +plugwrapperdir = @plugwrapperdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +reportsdir = @reportsdir@ +sbindir = @sbindir@ +scriptsdir = @scriptsdir@ +seslockdir = @seslockdir@ +sesstordir = @sesstordir@ +sharedstatedir = @sharedstatedir@ +siteconfdir = @siteconfdir@ +sitedir = @sitedir@ +sitexmldir = @sitexmldir@ +supdir = @supdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +tmpldir = @tmpldir@ +tmpluserdir = @tmpluserdir@ +torrus_user = @torrus_user@ +var_group = @var_group@ +var_mode = @var_mode@ +var_user = @var_user@ +varprefix = @varprefix@ +webplaindir = @webplaindir@ +webscriptsdir = @webscriptsdir@ +wrapperdir = @wrapperdir@ +SUBDIRS = . manpages +SUBST = @abs_top_builddir@/setup_tools/substvars.sh +CLEANFILES = $(POD_FILES) $(nodist_pkgdoc_DATA) +EXTRA_DIST = $(SRCPOD) +SRCPOD = \ + install.pod.in \ + nodeid_usage.pod.in \ + reporting_setup.pod.in \ + rpnexpr.pod.in \ + rrfw_torrus_migration.pod.in \ + scalability.pod.in \ + snmpdiscovery.pod.in \ + stylingprofile.pod.in \ + userguide.pod.in \ + vendorsupport.pod.in \ + webintf.pod.in \ + xmlconfig.pod.in + +POD_FILES = \ + install.pod \ + nodeid_usage.pod \ + reporting_setup.pod \ + rpnexpr.pod \ + rrfw_torrus_migration.pod \ + scalability.pod \ + snmpdiscovery.pod \ + stylingprofile.pod \ + userguide.pod \ + vendorsupport.pod \ + webintf.pod \ + xmlconfig.pod + +@POD2TEXT_PRESENT_TRUE@nodist_pkgdoc_DATA = \ +@POD2TEXT_PRESENT_TRUE@ install.txt \ +@POD2TEXT_PRESENT_TRUE@ nodeid_usage.txt \ +@POD2TEXT_PRESENT_TRUE@ reporting_setup.txt \ +@POD2TEXT_PRESENT_TRUE@ rpnexpr.txt \ +@POD2TEXT_PRESENT_TRUE@ rrfw_torrus_migration.txt \ +@POD2TEXT_PRESENT_TRUE@ scalability.txt \ +@POD2TEXT_PRESENT_TRUE@ snmpdiscovery.txt \ +@POD2TEXT_PRESENT_TRUE@ stylingprofile.txt \ +@POD2TEXT_PRESENT_TRUE@ userguide.txt \ +@POD2TEXT_PRESENT_TRUE@ vendorsupport.txt \ +@POD2TEXT_PRESENT_TRUE@ webintf.txt \ +@POD2TEXT_PRESENT_TRUE@ xmlconfig.txt + +devdocdir = $(pkgdocdir)/devdoc +dist_devdoc_DATA = \ + devdoc/architecture.pod \ + devdoc/devdiscover.pod \ + devdoc/progstyle.pod \ + devdoc/reqs.0.0.pod \ + devdoc/reqs.0.1.pod \ + devdoc/torrus_roadmap.pod \ + devdoc/wd.distributed.pod \ + devdoc/wd.messaging.pod \ + devdoc/wd.monitor-escalation.pod \ + devdoc/wd.uptime-mon.pod + +SUFFIXES = .pod.in .pod .txt +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .pod.in .pod .txt +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: +install-dist_devdocDATA: $(dist_devdoc_DATA) + @$(NORMAL_INSTALL) + test -z "$(devdocdir)" || $(mkdir_p) "$(DESTDIR)$(devdocdir)" + @list='$(dist_devdoc_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(dist_devdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(devdocdir)/$$f'"; \ + $(dist_devdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(devdocdir)/$$f"; \ + done + +uninstall-dist_devdocDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_devdoc_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(devdocdir)/$$f'"; \ + rm -f "$(DESTDIR)$(devdocdir)/$$f"; \ + done +install-nodist_pkgdocDATA: $(nodist_pkgdoc_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgdocdir)" || $(mkdir_p) "$(DESTDIR)$(pkgdocdir)" + @list='$(nodist_pkgdoc_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(nodist_pkgdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdocdir)/$$f'"; \ + $(nodist_pkgdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdocdir)/$$f"; \ + done + +uninstall-nodist_pkgdocDATA: + @$(NORMAL_UNINSTALL) + @list='$(nodist_pkgdoc_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgdocdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgdocdir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/devdoc + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(devdocdir)" "$(DESTDIR)$(pkgdocdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-dist_devdocDATA install-nodist_pkgdocDATA + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-dist_devdocDATA uninstall-info-am \ + uninstall-nodist_pkgdocDATA + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-recursive ctags ctags-recursive \ + distclean distclean-generic distclean-recursive distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am \ + install-dist_devdocDATA install-exec install-exec-am \ + install-info install-info-am install-man \ + install-nodist_pkgdocDATA install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-dist_devdocDATA uninstall-info-am \ + uninstall-nodist_pkgdocDATA + + +.PRECIOUS: $(POD_FILES) + +.pod.in.pod: + $(SUBST) $< > $@ + +@POD2TEXT_PRESENT_TRUE@.pod.txt: +@POD2TEXT_PRESENT_TRUE@ $(POD2TEXT) $< > $@ + +htdocs: $(POD_FILES) + cd manpages; make pods + HTMLDIR=@abs_top_builddir@/../htdocs $(SHELL) mkhtdocs.sh +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/torrus/doc/devdoc/architecture.pod b/torrus/doc/devdoc/architecture.pod new file mode 100644 index 000000000..4cf9c9ccb --- /dev/null +++ b/torrus/doc/devdoc/architecture.pod @@ -0,0 +1,511 @@ +# architecture.pod: The Torrus internals +# Copyright (C) 2002-2005 Stanislav Sinyagin +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + +# $Id: architecture.pod,v 1.1 2010-12-27 00:04:37 ivan Exp $ +# Stanislav Sinyagin +# +# + +=head1 Torrus Framework Architecture + +=head2 Configuration Processing + +The XML configuration is compiled into the database representation by +operator's manual request. + +The compiled version of configuration is not a one-to-one +representation of the XML version. All aliases and templates are +expanded. The backwards restoration of XML from the database +is available with the snapshot utility. + +Aliases are the way to represent the data in a more convenient format. +An alias can point to a subtree or a leaf, and it works similarly as +a symbolic link in a filesystem. + +A template defines a piece of configuration which can be used in +multiple places. Templates can be nested. + +The configuration can consist of several XML files. They will be +processed in the specified order. Each new file is treated as an additive +information to the existing tree. + +The XML configuration compiler validates all the mandatory parameters. + + +=head2 Database Architecture + +All runtime data is stored in +B database environment (http://www.sleepycat.com). + +The compiled version of the configuration XML is stored in +the B and B. +These databases have similar structure, and +B keeps all datasource-related information. +C and C stand for the productive instance number, +and have values of 0 or 1. +Current productive instance numbers are stored in B +database. + +For each datasource tree, the database files are resided in +Ftree_nameE> directory. + +The runtime modules access the configuration via C objects. + +Each datasource subtree or leaf is identified by a I. +A token is a short alphanumeric string, generated internally. +Two types of tokens are recognized: single tokens and token sets. + +Single token starts with letter I. The rest is made with decimal digts. + +Token set name starts with letter I. The rest is an arbitrary sequence of +word characters. + +The special token I is reserved for tokensets list. Also tokenset +parameters are inherited from this token's parameters. + +View and monitor names must be unique, and must +start with a lower case letter. + +B is a I database, with keys of form +Ctree_nameE> or Ctree_nameE>, and 0 or 1 as +values. Also the compiler adds an entry Ctree_nameE> +during the compilation time, in order to avoid two compiler processes +running at the same time on the same tree. + +B is a I database, with the keys and values +defined as follows: + +=over 4 + +=item * tp:EpathE -- EtokenE + +Gives the token correspondig to the given element name. + +=item * pt:EtokenE -- EpathE + +Gives the path name by the given token. + +=item * c:EtokenE -- EctokenE,... + +For given subtree, contains the list of child tokens separated by comma. + +=item * p:EtokenE -- EptokenE + +For given subtree or leaf, contains the parent token. + +=item * P:EtokenE:EpnameE -- EvalueE + +Contains the parameter value for specified leaf or subtree. +Each leaf or subtree inherits parameters from its parent. +Thus, we must climb up the tree in order to get the parameter's +value if not defined locally. + +=item * Pl:EtokenE -- EpnameE,... + +Contains the list of parameter names for specified leaf or subtree. + +=item * a:EtokenE -- EtokenE + +If this subtree or leaf is an alias, specifies the reference to the real node. + +=item * ar:EtokenE -- EtokenE,... + +Specifies all alias subtrees or leaves pointing to this token. + +=item * d:EnameE -- EvalueE + +Definition value for the given name + +=item * D: -- EnameE,EnameE,... + +List of all known definitions + +=item * n:EtokenE -- EtypeE + +Defines a node type. Type is a number with the following values: +0 for subtree, 1 for leaf, 2 for alias. + +=back + +B is a I database, with the keys and values +defined as follows: + +=over 4 + +=item * ConfigurationReady -- 1:0 + +When nonzero, the configuration is ready for usage. +Otherwise, the configuration status is undefined. + +=item * P:EnameE:EpnameE -- EvalueE + +Contains the parameter value for specified view, monitor or action. + +=item * Pl:EnameE -- EpnameE,... + +Contains the list of parameter names for specified view, +monitor, or action. + +=item * V: -- EvnameE,... + +Specifies comma-separated list of all views defined. + +=item * v:EtokenE -- EvnameE,... + +Specifies comma-separated list of view names for the path given. +The first view in the list is interpreted as default. + +=item * M: -- EmnameE,... + +Specifies comma-separated list of all monitor names defined + +=item * A: -- EanameE,... + +Comma-separated list of actions defined + +=back + + + + +B is a I database for storing the +datasource parameter properties, such as expandable, list parameters, +searchable, etc.: + +=over 4 + +=item * EpnameE:EpropertyE -- EvalueE + +=back + + + + + +B is a I database with alias paths as keys +and target tokens as values. It is used for quick alias expansion. + +B is a I database containing the token sets. +The keys and values are as follows: + +=over 4 + +=item * S: -- EtokensetE,... + +Keeps the list of all known token sets. + +=item * s:EtokensetE -- EtokenE,... + +For given tokenset, keeps its contents. + +=item * o:EtokensetE:EtokenE -- EoriginE + +Defines the origin of the member. Currently two types of origin are known: +C and C + +=back + +B is a I database containing the cached +node parameter values. The keys and values are as follows: + +=over 4 + +=item * EnameE:EpnameE -- EstatusEEvalueE + +Keeps the status and the value for a given token and parameter. +Status is a one-byte prefix, with values C for undefined parameter, and +C for a parameter with value. + +=back + + +B is a I database that stores the mapping between +NodeID values and tokens. Database keys are NodeID strings, and values +are tokens. One NodeID corresponds to maximum one token. + + + +B is a I database which contains the informaton +about active processes which read the configuration. The configuration +compiler waits until all readers finish using the current configuration +database. Process IDs are used as keys, and the values contain timestamps. + +B is a I database containing various kinds of +timestamps. The timestamp name is the key, and the number of seconds +since epoch is the value. + +B keeps the status information about the graphs +ready to display. Last known timestamp of the configuration is +compared with the actual one. When the actual timestamp +differs from known, the renderer cache is cleaned up. +This is a I database, with the following +keys and values: + +=over 4 + +=item * EtokenE:EvnameE -- + Et_renderE:Et_expiresE:EfilenameE:Emime_typeE + +For the leaf/subtree and view name given, specifies two timestamps: the +moment of last rendering and expiration time. The filename is automatically +generated unique name in the spool directory. The contents type is determined +by the MIME type. + +=back + +B is a I database used in order to avoid the +unneccessary configuration tree walk. The keys are the leaf tokens, and +the values are comma-separated monitor names. At each monitor invocation, +the confguration timestamp is compared against the last known, and the +cache database is rebuilt if needed. + +B is a I database that keeps alarm status information +from previous runs of Monitor, with the keys and values as follows: + +=over 4 + +=item * EmnameE:EpathE -- +Et_setE:Et_expiresE:EstatusE: +Et_last_changeE + +Key consists of the monitor name and leaf path. In the value, B +is the time when the alarm was raised. If two subsequent runs of Monitor +raise the same alarm, B does not change. B is the +timestamp that shows when it's still important to keep the entry after the +alarm is cleared. B is 1 if the alarm is active, and 0 otherwise. +B is the timestamp of last status change. + +When B is 1, the record is kept regardless of timestamps. +When B is 0, and the current time is more than B, +the record is not reliable and may be deleted by Monitor. + +=back + +B is a I database used in order to avoid the +unneccessary configuration tree walk. X is the collector instance number, and +Y is the datasource configuration instance number. +Keys and values are as follows: + +=over 4 + +=item * EtokenE -- EperiodE:EoffsetE + +For each leaf token, period and time offset values are stored. + +=back + + +B is a I database which stores the runtime +statistics of Scheduler tasks. Each key is of structure +BtasknameE:EperiodE:EoffsetE:EvariableE>, +and the value is a number representing the current value of the variable. +Depending on variable purpose, the number is floating point or integer. + + +B is a I database containing user details, passwords, +and group membership: + +=over 4 + +=item * ua:EuidE:EattrE -- EvalueE + +User attributes, such as C (Common name) or C, are stored +here. For each user, there is a record consisting of the attribute C, +with the value equal to the user identifier. + +=item * uA:EuidE -- EattrE, ... + +Comma-separated list of attribute names for the given user. + +=item * gm:EuidE -- EgroupE, ... + +For each user ID, stores the comma-separated list of groups it belongs to. + +=item * ga:EgroupE:EattrE -- EvalueE + +Group attributes, such as group description. + +=item * gA:EgroupE -- EattrE, ... + +Comma-separated list of attribute names for the given group. + +=item * G: -- EgroupE, ... + +List of all groups + +=back + + +B is a I database containing group privileges information: + +=over 4 + +=item * u:EgroupE:EobjectE:EprivilegeE -- 1 + +The entry exists if and only if the group members have this privilege +over the object given. Most common privilege is C, where +the object is the tree name. + +=back + + +B is a I database containing properties +for each Service ID (exported collector information, usually stored in +an SQL database): + +=over 4 + +=item * a: EserviceidE,... + +Lists all known service IDs + +=item * t:EtreeE -- EserviceidE,... + +Lists service IDs exported by a given datasource tree. + +=item * p:EserviceidE:EparamE -- EvalueE + +Parameter value for a given service ID. Mandatory parameters are: +C, C, C. Optional: C. + +=item * P:EserviceidE -- EparamE, ... + +List of parameter names for a service ID. + +=back + + +B is a I database with DB_DUP and DB_DUPSORT flags. +It contains the search strings for the given tree: + +=over 4 + +=item * EkeywordE -- EpathE[:EparamE] + +For a given keyword, refer to a path of a node that contains this word. +If the node name matches the keyword, the I element +is omitted. Otherwise it refers to the parameter that matches the keyword. + +=back + + + +B is a I database with DB_DUP and DB_DUPSORT flags. +It contains the search strings for all trees: + +=over 4 + +=item * EkeywordE -- EtreeE:EpathE[:EparamE] + +For a given keyword, refer to a path of a node that contains this word. +If the node name matches the keyword, the I element +is omitted. Otherwise it refers to the parameter that matches the keyword. + +=back + + +B is a I database containing SNMP collector +failures information for a given collector instance for a tree. + +=over 4 + +=item * c:EcounterE -- ENE + +A counter with a name. Known names: I, I. + + +=item * h:EhosthashE -- EfailureE:EtimestampE + +SNMP host failure information. Hosthash is a concatenation of hostname, UDP +port, and SNMP community, separated by "|". Known failures: I, +I. Timestamp is a UNIX time of the event. + +=item * m:EhosthashE -- EpathE:EtimestampE + +MIB failures (I, I, and I) +for a given host, with the tree path of their occurence and the UNIX timestamp. + +=item * M:EhosthashE -- ENE + +Count of MIB failures per SNMP host. + +=back + + + + + + + +=head2 Modular Structure + +The Torrus framework consists of several functional modules: + +=over 4 + +=item * Configuration management + +Once the configuration XML files get changed, the configuration compiler +should be run manually. This guarantees that the actual framework +configuration is changed only when the files are ready. + +The configuration management module provides access methods for +enumeration and enquery of the configuratin objects. + +=item * Data Collector module + +Collector program runs as a separate process for each datasource tree. +Upon startup, it first runs all registered collectors. After that, +the collectors are grouped depending on period and time offset, and launched +periodically at the moments defined by formula: + + time + period - (time mod period) + timeoffset + +The datasources are grouped by collector type. +For SNMP collector type, the datasources are grouped by host. +SNMP requests are sent in non-blocking mode (see Net::SNMP Perl module +manual). + +For each SNMP host, system uptime is verified. For RRD datasource types +"COUNTER", if the device reload is +detected, the corresponding RRD file is updated with "undefined" +value at the calculated moment of reload. + +=item * Data threshold monitoring + +This module performs the monitoring tasks periodically, based on each +monitored leaf schedule. +It checks the conditions for each leaf having a monitor. +In case of the alarm, it executes the action instructions synchronously. + +=item * Rendering module + +Upon a request, this module generates the graph and HTML files for the +requested view and its subviews. It first checks availability of +cached objects and avoids unneeded regeneration. It must be possible +to force the renderer to flush the cache. + +=item * Web interface module + +Web interface module passes the Renderer output to an HTTP client. + + +=back + +=head1 Author + +Copyright (c) 2002-2005 Stanislav Sinyagin ssinyagin@yahoo.com diff --git a/torrus/doc/devdoc/devdiscover.pod b/torrus/doc/devdoc/devdiscover.pod new file mode 100644 index 000000000..8386c1755 --- /dev/null +++ b/torrus/doc/devdoc/devdiscover.pod @@ -0,0 +1,296 @@ +# devdiscover.pod - Guide to devdiscover +# Copyright (C) 2003 Shawn Ferry, Stanislav Sinyagin +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + +# $Id: devdiscover.pod,v 1.1 2010-12-27 00:04:36 ivan Exp $ +# Shawn Ferry +# Stanislav Sinyagin +# + +=head1 Torrus SNMP Device Discovery Developer's Guide + +=head2 C overview + +C is an extensible, module based, SNMP device discovery +utility. It is intended to automatically generate Torrus configuration +files, based on SNMP discovery results and templates. + +See I for command usage and functionality overview. + +In general, C consists of the following files and functional +parts: + +=over 4 + +=item * C + +This file is installed as C in Torrus installation directory, +with certain variables substituted. The program provides all the commandline +functionality and options processing. Once the CLI options are processed and +verified, the control is passed to the C object. + +=item * C + +This Perl module is responsible for the SNMP discovery process organization: + +=over 8 + +=item * + +it registers the discovery modules; + +=item * + +establishes an SNMP session to the target host; + +=item * + +initiates a new C object for the target host; + +=item * + +stores the connection-specific parameters to the device object; + +=item * + +for each registered discovery module, executes C in +I order; + +=item * + +for those discovery modules which paid interest in this target host, +executes C in I order; + +=item * + +upon request from C, builds the configuration +XML tree, by calling C in I order for each +relevant discovery module for each target host. + +=back + +=item * C + +This Perl module is defined in F, and provides +the functionality to store the results of SNMP device discovery. + +=item * C + +This module is an encapsulation wrapper for XML configuration builder. +It provides methods for every element of Torrus configuration. + +=item * Discovery Modules + +These provide all the functionality for SNMP discovery. Normally +one module covers one MIB, or sometimes several vendor-specific MIBs, +and it is responsible for finding out the device details necessary +for Torrus configuration building. Usually a discovery module refers to one or +several I