Version:3.14 Date:02/02/2006

  • In TPlotMaker.C use yValues[(i*varNumber)*binNumber+varUsed*firstBin+firstBin],with varUsed = 0 instead of yValues[(i*varNumber)*binNumber+0+0]. Functionally it is the same with with varUsed = 0, but can in future use for different varUsed
  • in had a space in an export declaration. removed
  • Plots could not be shown as had $id_ phrases. Changed to ${id}_ in calendar.php
  • AffairMonitor could not handle the -V option, thought there were too many parameters. Now MUST have format: nodeListFile monitorSet offlineStorageFlag (optional -V or -v flag)
  • In AffairControl addeded code to SetPlotList to generate plot names if they do not exist for a monitoring set/computer. Before trhe plot names had to be generated by the web interface. This also required to add to tDataProcess the method UnsetPlotName() with which all plots are generated and their names stored in the mysql table
  • In Init of TDataProcess.h, if there are no rrd files do a return 0 statement to prevent crashes of program

Version:3.13 Date:25/01/2006

  • Removed from AffairControl.cxx the DoWarning procedure, as it crashed the gui on some systems.

Version:3.12 Date:24/01/2006

  • Plots could not be shown as had $id_ phrases. Changed to ${id}_
  • ./ has a -V options, giving verbose output, for debugging

Version:3.11 Date:13/11/2006

  • In the php code changed many instances of for example, ${id} to $id, or $ret[data][$ii] to $ret['data'][$ii], as this caused errors reported to the apache error_log.

Version:3.10 Date:05/11/2006

  • added color coding in affaircontrol for status if a monitoring set is monitored, if offline storage is used and if web plots are up
  • in affaircontrol on monitor control tab, the offline storage radio button were reversed for default DATE process button.
  • fixed memory leak caused in initquick method in tdataprocess.h when getting number of rrd files. Memory leak occured when have more than one monitor set, as then always get larger number of rrd files from the mysql table. By specifying the monitor set in the select statement bug fixed.
  • default in affairControl for no offline storage, instead of with offline storage
  • ;
  • changed and startAffair.csh to use DIM_DNS_NODE instead of AFFAIR_DNS_NODE if AFFAIR_DNS_NODE not defined
  • In AffairControl added button to import all nodes from date mysql tables, that are ldc or gdc. Also added a text field with default value of the machine domain, as the date table does not contain the domain name
  • removed some default comments from CollectorDATE.c
  • explicitly added LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DIMBIN:$SMIBIN to and to make sure these are in the path, as it seems DATE does not sometimes have them in the path. for same reason $AFFAIR_MONITOR/rrdtool/lib:$AFFAIR_MONITOR/src/root added to
  • make gif production instead of png the mode for plot.php and calendar.php, as in slc4 the convert command does not work for png, due to old library assumed
  • in change computers.conf to computerpars.conf
  • in add prefix \'user\' to $type\_PlotList.log and $type\_EachPlotList.log in getParametersForOneType and getParametersForOneTypeAndOneName
  • in TAffairSql.C change \'IS NOT NUL\' to \'IS NOT NULL\' in FillComputerListTableFromRolesTable
  • in TAffairSql.C change \'INSERT INTO affair.AFFAIR_COMPUTERLIST VALUES\' to \'REPLACE INTO affair.AFFAIR_COMPUTERLIST VALUES\' in FillComputerListTableFromRolesTable
  • In TAffairDim.h had AFFAIR_RRRDLIST instead of AFFAIR_RRDLIST
  • in types.php adapt the hostinfo function to use mysql to get data from AFFAIR_HOSTINFO
  • in TDataProcess::MakeGlobalSuperimposedGraphs had tmpCount = 0 instead of the correct = 1 as the initial value of additional plots. This bug caused the 1st and second comps to be merged
  • support/httpd.conf.sed had disbaled instead of disabled
  • Add code to PlotMaker.C to touch log/$monitorSet_2 or log/$monitorSet_3, depending if it is a global or current plot, each time such an eps plot is created. This is checked in to see if for some reason the dataProcessor went dead (still exists, but no plots made), and to kill it and restart it in that case
  • Added code to TAffairDim.h also store the current rootfiles as part of the rootfile list, to enable offline analysis also of current files still being filled
  • In TAffairSql.C the fillrrdlistdefaultvalues() method first truncates the tables, before inserting rrd table names. This avoids spurious old rrds appearing in plots
  • In TAffairSql.C the GetRootfilelist() method was broken.
  • the web interface for offline analysis did not read file names from the mysql database. corrected
  • Add a script to the root affair dir. This will be read by cronjobs, and by the web interface to get environment variables

Version:3.01 Date:30/09/2006

  • in TAffairSql.C for filling default valus first check if tables opened before reading, to avoid crashes if do not exist
  • in TAffairDim.C a wrong SQL format for selecting from AFFAIR_COMPUTERPARS
  • added AFFAIR_DB_MYSQL varialbe to explictly tell to NOT use mysql, even if DATE uses it
  • used a Char_t in CollectorDATE.c evem though it is not a ROOT related file. Change to char
  • removed some default comments from CollectorSYSMON.c, TAffairDim.h
  • at line 77 has a return from if/fi statement, which is wrong

Version:3.0 Date:27/09/2006

  • Added mysql to affair (class TAffairSql). If mysqld is up, it is used for all tables, for affaircontrol, affairmonitor, dataprocessor, and web interface
  • AffairControl rewritten in large part to add a setup tab, from where all tables, as well as their default values are filled. Also, a window is made where all tables can be inspected row by row, and if necessary edited.
  • Removed 3rd column from monsetDefault.conf, as it is not used, and creaes a mismatch between monsetDefault.conf and computers.conf. This caused wrong initial par readings in the Collectors. Thus, in CollectorDATE.c par1Index is 5 and not 4 (4 is DUMMY in CollectorDATE and CollectorSYSMON. 5 and 6 are DUMMY pars in LDC and GDC).
  • Increased canvas size to improve resolution of plots
  • AffairControl canvas display has been fixed to display also plots for individual nodes (box plots still not fixed. next step)
  • In monsetDefault, mysql version-AFFAIR_MONSET_DEFAULTPARS, added option to have labels for a parameter, by wrting in front of par a label_(e.g: ethdevice_eth0)

Version:2.7 Date:10/04/2006

  • Added calendar.php page to access all previous global plots (24 hour plots only). AffarDataProcesses modifed accrodingly to create at midnight new dir DDMMYYYY and copy all eps files to it
  • Modify computers.php and getComputersOrTypes() function to NOT assume (i.e. to ignore) site names existence in computers.conf. This way site names not needed.This was actually a bug before, as, unlike stated in manual, one NEEDS a site name
  • CollectorDATE.c was adding to the parameters an empty string (storageTypeX). This has been removed
  • Corrected as it gave an extra useless string, thus losing a default disk name. Also in CollectorSysmon.c the command calling had a stray string to it,giving useless disk names
  • numerous old files removed from the config directory, while the parsed ones, and auto generated ones moved to log directory
  • Completely rewrote the offline analysis web interface. Now no root file is created, as it was pretty useless anyway. The format of the date is now written directly as one string. One can create summary plots, and plots for an individual node. Previous plots created for a user can also be accessed (this way the need for saved root is removed). Plots are grouped by types, by monitoring set, and by histogrm or graph
  • Redesigned graphs and histograms (background color, label sizes,grid, automatic high/low level,statistics label, ...) to make them more legible
  • AffairControl can now handle the new format of plots, with type label.This was broken in 2.6.X. However, current plots are not displayed.
  • computers.php has now the ability to sort ascending/descing any field, to see labels for any field,and to group fields by type
  • Added posibility to simulate dummy nodes to test the Affair Monitoring performance for an arbitrary number of nodes. This is invoked with $AFFAIR/src/dim/CollectorSYSMON SYSMON -V -h madeupname.madeupdomain

Version:2.6.2 Date:01/01/2006

  • always change ownership of plot directory, even if it already exists. This way transfer between systems does not require chmod a+w . of plots dir
  • have a significantly improved manual
  • web related files for automatic button creation removed, as not used anymore by affair

Version:2.6.1 Date:16/11/2005

  • CollectorDATEMON.c modified to read DDL information from shared mem
  • monsetDefault.conf modified to have names of DDLs as set of parameters (24 max)
  • plots divided into types, such as IO, CURRENT, SYSTEM etc, based on flags on conf files
  • Makefile modified to have independent of AFFAIR_MONITOR path.It is a bit of a kludge. To the main Makefile for RRD the folowing is added: gcc -shared -Wl,--rpath -Wl,./modules -Wl,--rpath -Wl,./ rrdtool.lo -L ./ -lrrd -lc -Wl,-soname -Wl, -o .libs/; cp .libs/ ${AFFAIR_MONITOR}/web

Version:2.4.1 Date:29/06/2005

  • Added page for offline analysis
  • Added buttons for selection of type of graph one wants plotted. This also involved redefining plot names
  • Made labeling of multigraphs more flexible. CPU and IO labels before hardcoded in TPLotMaker.C, now in monitorSet.conf file in column 8, after the underscore
  • Added scripts to easily add new data sources to existing Also, made easier addition of new data sources to CollectorSYSMON, using myMonitoredValues.c: a skeleton c file where none of the communication and setup code is shown
  • Startup of DataProcessor more efficient in reading in labels, as some shell commands removed
  • Rewrote startup scripts to have a simple, straightforward output, with verbose option on all processes. completely bypassed
  • Added one more type of plots: for global superimposed graphs have multiple variables for each plots. Also, they are only plotted if some other variabled is active (needed for ALICE DAQ LDC DDL plotting). Code made compatible with old and new configuration files
  • Removed automatic link from script,to give more flexibility to the user
  • Redid a lot of offline analysis code, anabling histogram and graph generation without crashing. Both canvases, and where appropriate, histograms are stored
  • Manual seriously rewritten. Separate manual for DATE(in progress) and non DATE monitoring
  • Removed direct references to SYSMON etc on the web page and Affair Control. They are all now automatically read in from monsetDefault.conf

Version:2.3 Date:02/02/2005

  • Offline storage, dead time plots, some bugs removed . more later

Version:2.13 Date:11/01/2005

  • When doing time x values for graphs,start from zero and not from first time, as the large numbers cause rounding of x values, and thus for eg last 20 min one has only 20 x values instead of 120. In TPlotMaker->Graph then use gStyle->SetTimeOffset(kTimeOffset+gTimeMin) instead of gStyle->SetTimeOffset(kTimeOffset) to get correct values.This significantly increases the resolution of graphs
  • gEachValueLast was not initialized to zero. Corrected

Version:2.12 Date:5/01/2005

  • web does not wrok on php 4.3 as variables passed on extended url cannot be read like ordinary ones, but need to be extracted (_GET()...). Corrected this
  • On pcald30 error given for, as the rrdtool.c in php4-rrdtool-1.03 uses rrd_graph, which is removed from code. Remove rrd_graph stuff from rrdtool.c to correct this
  • On web add color coded links on main page, and other appropriate ones, each color corresponding to appropriate node
  • php 4.3 does not have Table.php module as default, so in computers.php add table rows explicitly
  • Some png files did not have both height and width predefined, so when loading the page was jumping around. Corrected this
  • Added Average to computers.php table and corrected bug which prevented sum values display
  • Made box plots nicer, added current time to it

Version:2.11 Date:05/01/2005

  • Add in TDataCollector and TPlotMaker the GraphBox function to make box graphs of current value, one for each node, height==value
  • On web add color coded links on main page, and other appropriate ones, each color corresponding to appropriate node
  • Add the box graphs to web, on main page
  • Add the GraphMultiBox, showing stacked CPU and network io

Version:2.02 Date:01/01/2005

  • Change on web affair logo to gif, so IE can see transparency
  • On error,web goes to ./index.php and not ../index.php -Ulrich

Version:2.01 Date:07/12/2004

  • Modified startAffar.csh and to also work if DATE_ROLE not declared, by not running CollectorDATE in that case.
  • AFFAIR_DNS_NODE should be read by both nodes and monitor. Corrected in
  • Rewrote monitorPars.csh and startAffair.csh, as they were broken

Version:2.0-release version Date:03/12/2004

  • Rewrote the affair manual, the README. Made some minor changes in the homepage

Version:1.7.5 Date:01/12/2004

  • Move from support to main dir, and add code to it to use sed to automatically configure httpd.conf,and create link to the affair web
  • Time on the eps plot was automatically incremented by two hours, using the kTimeOffset constant. Set it to zero. This assumes the hardware clock is same as system clock, as it should be.
  • Some cosmetic improvements to the affair web interface
  • Remove DEBUG_MODE from CollectorSYSMON and code related to it, as it has no place in the distribution since if set gives faulty network data
  • For default network device selection, use the first match of the last character of the most active device. Used to be last match, causing error if devices are: eth0, sit0. In future might use full string

Version:1.7.4 Date:28/11/2004

  • Add buttons in affair control for installation of nodes running date, using the support/ script. This includes also inserting in the appropriate AFFAIR_DNS_NODE, using sed. Also create monitorPars.csh, also doing the above insertion, to take into account case if DATE run control uses the csh and not bash.
  • Added option to start monitoring with or without web-related processes. This significantly reduces the overhead
  • fixed bug in affair where occasionally no nodes for DATEMON node lsit is displayed, even though they are in the computerlist.conf file

Version:1.7.3 Date:24/11/2004

  • added code to plot performance data in affair Control for individual nodes, and not just aggregate plots. Automatic plot list, node list generated for each monitor set
  • Instead of just network plots, enable in affair control monitoring of all aggregate plots, which are automatically created for each monitor set
  • Corrected in AffairMonitor.cxx a reference to AFFAIR, which should have been AFFAIR_MONITOR. This caused faulty default parameters to be used from monsetDefault.conf
  • affairControl can be started now without defining he AFFAIR_MONITOR variable. It is assumed to be $PWD, if not defined
  • When saving plot in affair control, place it in AFFAIR_MONITOR directory, and inform user of location and place
  • Add in first page of the affair web interface page plots of aggregate throughputs for all monitoring sets, with changeable time period

Version:1.7.2 Date:15/11/2004

  • Added in affair control code for network plots for different time periods and for LDC, GDC, and DATEMON
  • Clean up the code in src/dim and src/root to not give numerous warnings. Only warning left is a bug in gcc when parsing time with strftime option %y

Version:1.7.1 Date:12/11/2004

  • Add to affair control a new tab showing plots with network throughput for last hour for SYSMON. This is done directly, not via eps file on disk, so itis a fast process
  • Create an affair home page with all the code and links at put it at
  • Rewrote the affair web interface page, with clearer monitoring set links, link to home page, customization link, and a default plot of DATEMON aggregate input and output network bandwidth

Version:1.6.1 Date:02/11/2004

  • gethostname sometimes gives full name, sometimes without the domain name. This causes different declarations of services at the Monitor and collector sides, preventing DIM communication. Corrected by adding a gethostbyname call from collectorlib.c.
  • corrected bug which prevented plots for individual computers to be generated, if the full name of the node contains dot. done by substituting the dot with a string
  • added refresh to customized plots, with adjustable time

Version:1.6.0 Date:25/10/2004

  • a rudimentary affairControl.C gui is created,with accompanying scripts in support dir, to make installation and startup across nodes easy, using ssh.
  • removed the nonfunctionihisto button from web page.
  • as the individual computer plot generation seems to work only for the default period, remove the other periods(in file This is a kludge.
  • separate out compilation for AFFAIR and AFFAIR_MONITOR, so there is no more mixups between them
  • To ensure a good clean of rrdtool, in rrdtool/perl-piped need to firstperl Makefile.PL, and in rrdtool/php4-rrdtool-1.03 do ./configure
  • rename AffairMonitor.c to AffairMonitor.cxx to compile under Fedora Core 1
  • insert namespace std {};using namespace std; in AffairMonitor.h to compile under Fedora Core 1
  • to avoid error:
         /usr/include/bits/mathcalls.h:235: error: declaration of `int isnan(double)     	throw ()' throws different exceptions
    	/home/anticic/affair1.8/rrdtool/src/rrd_tool.h:79: error: than previous
       	declaration `int isnan(double)'
    in rrdtool.h comment out(as not needed):
    	//#ifndef isnan
    	//int isnan(double value);

Version:1.5.1 Date:15/09/2004

  • complete rewrite of startup scripts, as numerous problems kept occuring in different setups. removed, so crontab needs to be adjusted accordingly.
  • logging into log file now with time stamp. different log for AffairMonitor, and for Collector.
  • updated manual with new startup and running procedure.

Version:1.5.0 Date:01/07/2004

  • removed need for separate instalation of rrdtool for creating on one hand, and AffairMonitor for filling and TDataProcess for fetching on other hand. Solved by defining DNAN and DINF on top in the particular .c files, and not in rrd_format.h
  • kludged AFFAIR_DNS_NODE in to pcald30. In future call this from cron job, or if not set, then auto set to monitor station
  • kludged to explicitly set ROOTSYS as it is not defined in /etc/profile on pcald30
  • Add in main Makefile automatic mafor monitor or collector, based on existence of AFFAIR_MONITOR environment variable. So no more source, or source, just make (which for the time being also automatically does a clean). Tobackward compatible with DATE formalism, source still works
  • now correctly installed in web directory, and code correctly links to it
  • to use from user rrdtool (not from /usr/local/rrdtool) modify $AFFAIR_MONITOR/rrdtool/php4-rrdtool-1.03/configureline:
     for i in /usr/local /usr /opt/rrdtool /usr/local/rrdtool $PHP_RRDTOOL; do
    for i in /usr/local /usr /opt/rrdtool /usr/local/rrdtool $AFFAIR_MONITOR/rrdtool $PHP_RRDTOOL; do


  • TDataCollector.C and AffairMonitor.c do not use system calls anymore to gather data from rrd files, but do so directly.
  • rrdtool: Make from rrdtool a standalone .so file, and link to web with php. This enabled fast table generation of performance monitroring on the fly, with no system calls
  • rrdtool: from compilation remove files related to graphing, as it is done by root anyway.
  • change in rrd_fetch.c:
    if(cal_end >= *end  &&
    cal_start <= *start){
    if(cal_start <= *start){
    This avoids a weird bug ,when wrong frequancy of data extracted