Using Ganglia on AIX
~~~~~~~~~~~~~~~~~~~~

This version has been tested on the following AIX levels:
- AIX5L V5.1 ML 04
- AIX5L V5.2 ML 01
- AIX5L V5.3 ML 01
- AIX5L V5.3 TL 07
- AIX V6.1 TL 00
- AIX V6.1 TL 03


Installation
~~~~~~~~~~~~

1. You can compile Ganglia on AIX either with the IBM XLC/C++ or GNU GCC.

2. Ganglia should be compiled with shared libraries to enable DSOs.
   For DSOs to work you need to set the "-Wl,-brtl" flag to $LDFLAGS.

3. To compile Ganglia you will need some additional tools, all of which
   you can obtain from http://www.perzl.org/aix/
   As a minimum the following additional tools are required to compile:
   - gmond only
     * apr
     * expat
     * libconfuse
     * pcre (can be disabled with "--with-libpcre=no")
   - gmetad
     * requirements of gmond
     * rrdtool

   Please note that no package of the IBM AIX Toolbox for Linux Applications
   currently provides the required functionality to compile Ganglia.

4. In order to speed up the configure process under AIX you should install
   bash and use the following environment settings:

   export CONFIG_SHELL=/opt/freeware/bin/bash
   export CONFIG_ENV_ARGS=/opt/freeware/bin/bash

Recommended settings for IBM XLC/C++ (tested with V7 and V9):
-------------------------------------------------------------
export CC=xlc_r
export CFLAGS="-qmaxmem=16384 -DSYSV -D_AIX -D_AIX32 -D_AIX41 -D_AIX43 -D_AIX51 -D_ALL_SOURCE -DFUNCPROTO=15 -O -I/opt/freeware/include"
export LD=ld
export LDFLAGS="-L/opt/freeware/lib -Wl,-bmaxdata:0x80000000 -Wl,-brtl"

Recommended settings for GNU GCC (tested with V4.2.3):
------------------------------------------------------
export CC=gcc
export CFLAGS="-DSYSV -D_AIX -D_AIX32 -D_AIX41 -D_AIX43 -D_AIX51 -D_ALL_SOURCE -DFUNCPROTO=15 -O -I/opt/freeware/include"
export LD=ld
export LDFLAGS="-L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib:/usr/lib:/lib -Wl,-bmaxdata:0x80000000 -Wl,-brtl"

In case you are running a higher AIX level then V5.1 you should add the following
defines to $CFLAGS depending on your AIX level:

-D_AIX52 -D_AIX53 -D_AIX61

For example, for AIX V6.1 you would set $CFLAGS for XLC/C++ as follows:
export CFLAGS="-qmaxmem=16384 -DSYSV -D_AIX -D_AIX32 -D_AIX41 -D_AIX43 -D_AIX51 -D_AIX52 -D_AIX53 -D_AIX61 -D_ALL_SOURCE -DFUNCPROTO=15 -O -I/opt/freeware/include"


Known problems and Limitations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- No IBM Power metrics are included.
  If you want those you can get them from http://www.perzl.org/ganglia/
- Python support was not tested up to now, therefore you should use the
  "--disable-python" configure flag.
- When compiling a new version of Ganglia please make sure no earlier
  versions are installed in the default paths (-I/opt/freeware/include,
  -L/opt/freeware/lib).
- On AIX V6.1 TL 03 using GNU GCC the compilation of gmond runs into an
  error with the system include file /usr/include/netinet/in6_var.h
  The only solution at the moment is to comment out the offending line
  in /usr/include/netinet/in6_var.h
  Compilation with IBM XLC/C++ is fine though.


Recommended configure setup:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Using the environment settings above depending whether you are using
IBM XLC/C++ or GNU GCC you should use the following "./configure" command
to set up and compile Ganglia on AIX:

./configure \
    --prefix=<PREFIX> \
    --sysconfdir=<SYSCONFDIR> \
    --enable-shared --enable-static \
    --with-gmetad \
    --disable-python

where <PREFIX> is your preferred prefix, the default is "/usr/local" whereas
you *have* to set the value for <SYSCONFDIR> (recommended "/etc/ganglia/").


Upgrading to 3.1 from 3.0
~~~~~~~~~~~~~~~~~~~~~~~~~

Starting with 3.1, the disk metrics units had changed from MB to GB for
consistency with other platforms, therefore when upgrading a system you
should expect to see a step function in the graphs from the time that the
new version starts reporting.

If you would rather avoid that jump, you could then prepare before upgrading
to normalize your disk metrics rrd to store instead values in the new units
which are 1/1000th smaller (ex: 1.5660300000e+05 to 1.5660300000e+02) for all
stored values, using rrdtool's dump/restore functionality :

1) stop gmond in the node to upgrade (ex: aix.example.com)
2) locate the directory in the gmetad server where the metrics for that node
   are being stored (ex: /var/lib/ganglia/rrds/unspecified/aix.example.com)
3) locate the rrd metric files for the disk metrics that will be affected
   (ex: disk_free.rrd and disk_total.rrd)
4) stop gmetad
5) dump the data to an XML file that can then be edited
   (ex: rrdtool dump disk_free.rrd > disk_free.xml)
6) edit all values to reflect the new metric unit
   (ex: perl -pi -e "s/e\+05/e+02/g" disk_total.xml)
7) restore the "normalized" data back into the RRD
   (ex: rm -f disk_free.rrd && rrdtool restore -f disk_free.xml disk_free.rrd)
8) remove the temporary files and be sure that permissions are correct and
   start gmetad (ex: rm -f disk_free.xml && chown nobody disk_free.rrd)
9) upgrade ganglia and start gmond in the node that was going to be updated
