Added description of system parameters and related database tables.
[gnucomo.git] / doc / manifest.xml
index d483283..4e9c7a5 100644 (file)
@@ -11,9 +11,9 @@
 
    <author>Brenno J.S.A.A.F. de Winter, De Winter Information Solutions</author>
    <author>Arjen Baart, Andromeda Technology &amp; Automation</author>
-   <date>November 07, 2002.</date>
+   <date>November 15, 2002.</date>
    <docinfo>
-      <infoitem label="Version">0.21</infoitem>
+      <infoitem label="Version">0.22</infoitem>
    </docinfo>
 
 </titlepage>
@@ -117,6 +117,12 @@ and not run into unneeded disappointments.
       Combined chapters 4 through 7 into one chapter (4).
     </col>
   </row>
+  <row>
+    <col>0.22</col><col>Arjen Baart</col><col>Nov 15, 2002</col>
+    <col>
+      Added parameters of monitored objects.
+    </col>
+  </row>
 </table>
 
 </section>
@@ -382,9 +388,26 @@ However it may be obvious that both sides of the application can very
 well be installed on a single system.
 </para>
 <para>
-When events<footnote>A signal can be the outcome of process that finished,
+To monitor a system, Gnucomo uses two kinds of input: <emph>event</emph> and
+<emph>parameters</emph>. Events occur on a system while it is running and reflect
+the transient behaviour of the system.
+Parameters reflect the current state of the system.
+The most obvious way to gather events from a monitored system is to read
+the system log files.
+Examples of events are IP packets that are rejected by the firewall or clients
+that access the http daemon.
+Parameters are obtained for example by reading configuration files or kernel
+data structures.
+Examples of parameters are the size and free space of a filesystem or
+the users that are listed in the password file.
+Both kinds of input are obtained actively or passively, i.e. by installing probe
+agents in the system which regularly aquire the system's parameters or passively
+by sending the output of programs to the Gnucomo server.
+</para>
+<para>
+When signals<footnote>A signal can be the outcome of process that finished,
 logbook entries, warnings from intrusion detection systems,
-etc. </footnote> happen they will be stored in a file.
+etc. </footnote> arrive they will be stored in a file.
 When this file is delivered to a certain directory a daemon will detect
 this and start the transfer of the file. The file will be transferred
 to the central application or the client. This transfer will be triggered
@@ -412,6 +435,8 @@ only two mechanisms will be supported:
 <para>
 
   <picture src="architecture.png" eps="architecture"/>
+</para>
+<para>
        Illustration 1 Basic overview of the processes on the server.
 </para>
 
@@ -474,10 +499,56 @@ processing of the data.
     action is taken in a certain amount of time.
   </item>
 </itemize>
+
+<subsection>
+<heading>System Parameters</heading>
+
+<para>
+Gnucomo maintains the operational parameters of a monitored system for a
+number of reasons.
+The most important reason is to create notifications when somthing about a
+parameter changes while the parameter is not supposed to change.
+Such a change may be intended by the system administrator, e.g. when a
+package is upgraded, or there may be something wrong.
+In any case, you will want to know about a change in your system when it happens.
+Furthermore, a change history of a parameter's values will come in
+handy when you want to look back in time and figure out
+what happened in the past.
+Another usefull application of parameters concerns the maintenance of a 
+large number of similar systems.
+When the parameters of each system are reported regularly to Gnucomo,
+deviations from the 'standard' system configuration can be easily spotted.
+</para>
+<para>
+Some properties of parameters are supposed to change regularly.
+A changed value of such a property will of course not lead to any
+notification.
+On the other hand, the change history of these parameters may provide
+interesting information about the monitored system.
+This leads to the distiction between static and dynamic properties of parameters.
+The difference between dynamic and static properties manifests itself mainly
+in the change history of the parameter's property.
+Dynamic properties typically have a change record once a day or even a couple
+of times a day.
+Change records for static properties are usually months apart.
+</para>
+<para>
+The state of parameters is scanned or probed regularly on a client system
+and reported to the Gnucomo server.
+These reports can be created in a variety of ways.
+For example, filesystems are reported with 'df', installled packages with 'rpm -qa',
+users by reading /etc/passwd, etc.
+Many other probing methods may be implemented.
+Each report from a probe holds the current value of several parameters.
+Gnucomo will check each property of these parameters against the stored knwon value.
+If the property's value changed, the actual value in the database is updated
+and a record is added to the change history of the parameter.
+</para>
+</subsection>
 </section>
 
 <section>
-  <heading>Web interface.</heading>
+  <heading>Web interface</heading>
 
 <para>
 The web interface will used to interact with the user.
@@ -519,7 +590,6 @@ of the issue. How each priority will be dealt with is something that can
 be set per server. The priority mechanism is a simple system of five
 categories (can be more or less).
 </para>
-<para/>
 </section>
 
 <section>
@@ -1566,6 +1636,67 @@ Since no data is delivered automatically a couple of sample records are shown he
 </subsection>
 
 <subsection>
+<heading>history</heading>
+<para>
+The history table records all changes to properties of parameters.
+</para>
+
+<subsubsection>
+<heading>The fields</heading>
+<para>
+The fields of the <emph>history</emph> table are listed below:
+</para>
+<table cpos='lllp{6cm}'>
+      <thead>
+        <col> Fieldname </col> <col> Fieldtype </col> <col> Size </col>
+        <col> Remarks </col>
+      </thead>
+      <row>
+        <col>paramid</col><col>bigint</col><col>8</col>
+        <col>The parameter to which this history belongs. Refers to the parameter table</col>
+      </row>
+      <row>
+        <col>modified</col><col>timestamp</col><col> </col>
+        <col>Time at which the property value or parameter changed</col>
+      </row>
+      <row>
+        <col>change_nature</col><col>enum</col><col> </col>
+        <col>Parameter created to destroyed; property value changed</col>
+      </row>
+      <row>
+        <col>changed_property</col><col>text</col><col> </col>
+        <col>Name of the parameter's property that changed.</col>
+      </row>
+      <row>
+        <col>new_value</col><col>text</col><col> </col>
+        <col>The new actual value of the property at the time of modification</col>
+      </row>
+      <row>
+        <col>remark</col><col>text</col><col> </col>
+        <col>A short explanation of why the property changed</col>
+      </row>
+</table>
+
+<para>
+Each time something about a parameter changes, this is recorded in the
+change history of the paraneter.
+When such a change happens, one of three things may occur to a parameter,
+as stated in the 'change_nature' field:
+
+<enumerate>
+<item>A new parameter is created.</item>
+<item>The value of one of the properties was altered.</item>
+<item>The parameter is removed.</item>
+</enumerate>
+
+When  a parameter is created or destroyed, the fields 'changed_property' and
+'new_value' are irrelevant.
+</para>
+
+</subsubsection>
+</subsection>
+
+<subsection>
   <heading>log &amp; log_adv. </heading>
 
 <para>
@@ -2554,115 +2685,59 @@ left column and the data in the right column.
 </para>
 <table cpos='lp{6cm}'>
       <thead>
-        <col>
-          <para>Fieldname</para>
-        </col>
-        <col>
-          <para>Sample data</para>
-        </col>
+        <col> Fieldname </col>
+        <col> Sample data </col>
       </thead>
       <row>
-        <col>
-          <para>Objectid</para>
-        </col>
-        <col>
-          <para>1</para>
-        </col>
+        <col> Objectid </col>
+        <col> 1 </col>
       </row>
       <row>
-        <col>
-          <para>Objectname</para>
-        </col>
-        <col>
-          <para>webber.dewinter.com</para>
-        </col>
+        <col> Objectname </col>
+        <col> webber.dewinter.com </col>
       </row>
       <row>
-        <col>
-          <para>Objectcode</para>
-        </col>
-        <col>
-          <para>7f0100</para>
-        </col>
+        <col> Objectcode </col>
+        <col> 7f0100 </col>
       </row>
       <row>
-        <col>
-          <para>Scp_enabled</para>
-        </col>
-        <col>
-          <para>T</para>
-        </col>
+        <col> Scp_enabled </col>
+        <col> T </col>
       </row>
       <row>
-        <col>
-          <para>Scp_inet</para>
-        </col>
-        <col>
-          <para>192.168.221.212</para>
-        </col>
+        <col> Scp_inet </col>
+        <col> 192.168.221.212 </col>
       </row>
       <row>
-        <col>
-          <para>Mail_enabled</para>
-        </col>
-        <col>
-          <para>T</para>
-        </col>
+        <col> Mail_enabled </col>
+        <col> T </col>
       </row>
       <row>
-        <col>
-          <para>Mail_from</para>
-        </col>
-        <col>
-          <para>
-            <reference href="mailto:gnucomo@maintenance.dewinter.com">gnucomo@maintenance.dewinter.com</reference>
-          </para>
-        </col>
+        <col> Mail_from </col>
+        <col> <reference href="mailto:gnucomo@maintenance.dewinter.com">gnucomo@maintenance.dewinter.com</reference> </col>
       </row>
       <row>
-        <col>
-          <para>Sms_enabled</para>
-        </col>
-        <col>
-          <para>T</para>
-        </col>
+        <col> Sms_enabled </col>
+        <col> T </col>
       </row>
       <row>
-        <col>
-          <para>Sms_number</para>
-        </col>
-        <col>
-          <para>06-XXXXXXXX</para>
-        </col>
+        <col> Sms_number </col>
+        <col> 06-XXXXXXXX </col>
       </row>
       <row>
-        <col>
-          <para>Fax_enabled</para>
-        </col>
-        <col>
-          <para>T</para>
-        </col>
+        <col> Fax_enabled </col>
+        <col> T </col>
       </row>
       <row>
-        <col>
-          <para>Fax_number</para>
-        </col>
-        <col>
-          <para>0318-XXXXXX</para>
-        </col>
+        <col> Fax_number </col>
+        <col> 0318-XXXXXX </col>
       </row>
       <row>
-        <col>
-          <para>Object_description</para>
-        </col>
-        <col>
-          <para>19 inch 4 units, AMD-300 with two 27Gb disks (RAID-0), 256Mb memory</para>
-        </col>
+        <col> Object_description </col>
+        <col> 19 inch 4 units, AMD-300 with two 27Gb disks (RAID-0), 256Mb memory </col>
       </row>
       <row>
-        <col>
-          <para>Object_owner</para>
-        </col>
+        <col> Object_owner </col>
         <col>
           <para>Brenno de Winter</para>
           <para>De Winter Information Solutions</para>
@@ -2673,23 +2748,19 @@ left column and the data in the right column.
         </col>
       </row>
       <row>
-        <col>
-          <para>Physical_location</para>
-        </col>
+        <col> Physical_location </col>
         <col>
           <para>Internet Provider XYZ</para>
           <para>Your street here 38</para>
           <para>9999 XX YOUR CITY</para>
           <para>THE NETHERLANDS</para>
           <para>Phone: +31 XXX XXX XXX</para>
-          <para/>
+          
           <para>Dataroom. System: Q7845</para>
         </col>
       </row>
       <row>
-        <col>
-          <para>Remark</para>
-        </col>
+        <col> Remark </col>
         <col>
           <para>A replacement system is available at the office location. The following persons have been authorized to enter the data room at the ISP:</para>
           <para>* Arjen Baart</para>
@@ -3981,7 +4052,7 @@ The indices of the <emph>object_user</emph> table:
   <heading>The relationships.</heading>
 
 <para>
-Relationshiips with other tables:
+Relationships with other tables:
 </para>
 
 <table cpos='llp{8cm}'>
@@ -4027,6 +4098,79 @@ Relationshiips with other tables:
 </subsection>
 
 <subsection>
+<heading>parameter</heading>
+<para>
+The parameter table stores the operational parameters of a monitored object.
+The parameters of an object describe the object's resources and configurations.
+For each object, a large set of parameters can be defined. They range from
+anything like file systems and installed packages to the system's users.
+</para>
+
+<subsubsection>
+<heading>The fields</heading>
+<para>
+The fields of the <emph>parameter</emph> table are listed below:
+</para>
+<table cpos='lllp{6cm}'>
+      <thead>
+        <col> Fieldname </col> <col> Fieldtype </col> <col> Size </col>
+        <col> Remarks </col>
+      </thead>
+      <row>
+        <col>paramid</col><col>bigserial</col><col>8</col>
+        <col>Uniquely identifies the parameter. Used in property and history tables.</col>
+      </row>
+      <row>
+        <col>objectid</col><col>bigint</col><col>8</col>
+        <col>The object of which this is a parameter. Refers to the object table.</col>
+      </row>
+      <row>
+        <col>name</col><col>text</col><col> </col>
+        <col>Name of the parameter to identify the resource</col>
+      </row>
+      <row>
+        <col>class</col><col>text</col><col> </col>
+        <col>Similar parameters are in the same class</col>
+      </row>
+      <row>
+        <col>description</col><col>text</col><col> </col>
+        <col>A verbose description of the parameter</col>
+      </row>
+      
+</table>
+
+<para>
+The combination of objectid, name and class must be unique.
+</para>
+
+</subsubsection>
+<subsubsection>
+<heading>Sample data</heading>
+
+<para>
+The table below lists a few examples of parameters
+</para>
+<table cpos='lllll'>
+   <thead>
+      <col>paramid</col><col>objectid</col><col>name</col><col>class</col><col>description</col>
+   </thead>
+   <row>
+      <col>1</col><col>1</col><col>/</col><col>filesystem</col><col>The root filesystem</col>
+   </row>
+   <row>
+      <col>2</col><col>1</col><col>/home</col><col>filesystem</col><col>Our users' homedirs</col>
+   </row>
+   <row>
+      <col>3</col><col>1</col><col>glibc</col><col>package</col><col>The standard C library</col>
+   </row>
+   <row>
+      <col>4</col><col>1</col><col>arjen</col><col>user</col><col>Arjen Baart</col>
+   </row>
+</table>
+</subsubsection>
+</subsection>
+
+<subsection>
   <heading>priority</heading>
 
 <para>
@@ -4218,6 +4362,86 @@ Relationships with other tables:
 </subsection>
 
 <subsection>
+<heading>property</heading>
+<para>
+The property table stores the actual values of the properties of
+operational parameters of a monitored object.
+</para>
+
+<subsubsection>
+<heading>The fields</heading>
+<para>
+The fields of the <emph>property</emph> table are listed below:
+</para>
+<table cpos='lllp{6cm}'>
+      <thead>
+        <col> Fieldname </col> <col> Fieldtype </col> <col> Size </col>
+        <col> Remarks </col>
+      </thead>
+      <row>
+        <col>paramid</col><col>bigint</col><col>8</col>
+        <col>The parameter to which this property belongs. Refers to the parameter table</col>
+      </row>
+      <row>
+        <col>name</col><col>text</col><col> </col>
+        <col>Name of the property</col>
+      </row>
+      <row>
+        <col>value</col><col>text</col><col> </col>
+        <col>The current value of the property</col>
+      </row>
+      <row>
+        <col>type</col><col>enum</col><col> </col>
+        <col>Dynamic or Static</col>
+      </row>
+      <row>
+        <col>minimum</col><col>float</col><col>8</col>
+        <col>The minimum value of the property (for numerical properties only)</col>
+      </row>
+      <row>
+        <col>maximum</col><col>float</col><col>8</col>
+        <col>The maximum value of the property (for numerical properties only)</col>
+      </row>
+      
+</table>
+
+</subsubsection>
+<subsubsection>
+<heading>Sample data</heading>
+
+<para>
+The table below lists a few examples of properties
+</para>
+<table cpos='llllll'>
+   <thead>
+      <col>paramid</col><col>name</col><col>value</col>
+      <col>type</col><col>minimum</col><col>maximum</col>
+   </thead>
+   <row>
+      <col>1</col><col>size</col><col>400000</col>
+      <col>STATIC</col><col>100000</col><col>999999999</col>
+   </row>
+   <row>
+      <col>1</col><col>used</col><col>200000</col>
+      <col>DYNAMIC</col><col>50000</col><col>400000</col>
+   </row>
+   <row>
+      <col>2</col><col>size</col><col>3000000</col>
+      <col>STATIC</col><col>100000</col><col>999999999</col>
+   </row>
+   <row>
+      <col>2</col><col>used</col><col>2000000</col>
+      <col>DYNAMIC</col><col>50000</col><col>2700000</col>
+   </row>
+   <row>
+      <col>3</col><col>version</col><col>2.2.5-39</col>
+      <col>STATIC</col><col>0</col><col>0</col>
+   </row>
+</table>
+</subsubsection>
+</subsection>
+
+<subsection>
   <heading>service</heading>
 
 <para>