HowTo install reconnoiter on Debian Lenny

Ever since I sow the oscon presentation of reconnoiter I wanted to check it out and play with it. Yesterday, I finally had some time to do this and thought it would be a good idea to document it as a short howto. Most of the infos I used are from the readme (BUILDING), the wiki and the excellent writeup of Thomas Dudziak on how to install reconnoiter on ubuntu.

The daemons noitd and stratcond are written in C, and the database used is postgressql, while the web interface is written in php. We will need to install a few dependencies to be able to compile noitd/stratcond:

Dependencies

apt-get install autoconf build-essential \
zlib1g-dev uuid-dev libpcre3-dev libssl-dev libpq-dev \
libxslt-dev libapr1-dev libaprutil1-dev xsltproc \
libncurses5-dev python libssh2-1-dev libsnmp-dev \
sun-java6-jdk

In case you don’t have already installed svn, we will need that also (to download the sources):
apt-get install subversion

Compiling

Next we will download the source and compile it. I used the trunk version bellow, but you might want use a stable tag (Urskek is the latest when writing this):
cd /usr/local/src/
svn co https://labs.omniti.com/reconnoiter/trunk reconnoiter
cd reconnoiter
autoconf
./configure
make
make install

Database

We need to instal PostgreSQL 8.4 and this is not available in lenny; the simplest way we can do this is to use the backports package. To enable the backports sources add this line
deb http://www.backports.org/debian lenny-backports main contrib non-free
to your /etc/apt/sources.list and run apt-get update to refresh your apt indexes. And finally add the backports key into apt:
apt-get install debian-backports-keyring

Now we can install postgres 8.4 using:
apt-get -t lenny-backports install postgresql

Next we’ll need to edit /etc/postgresql/8.4/main/pg_hba.conf and replace this line
local all all identwith
local all all trust
and restart postgres:
/etc/init.d/postgresql-8.4 restart
to allow local access without password.

Next we can install the dbs, using:
su postgres
cd /usr/local/src/reconnoiter/sql
psql
\i scaffolding.sql
\q

DB crontab

You can find a sample crontab in the sql folder that needs to be customized for our particular setup (/opt/psql835/bin -> /usr/bin/), and it should look like this:

su postgres
crontab -l
# m h  dom mon dow   command
#rollup jobs
* * * * * /usr/bin/psql -d reconnoiter -U stratcon -c "select stratcon.rollup_metric_numeric(rollup) from metric_numeric_rollup_config order by seconds asc;" >/tmp/rollup.log 2>&1
#cleanup jobs
01 00 * * * /usr/bin/psql -d reconnoiter -U reconnoiter -c "select stratcon.archive_part_maint('noit.metric_numeric_archive', 'whence', 'day', 7);" 1>/dev/null
01 00 * * * /usr/bin/psql -d reconnoiter -U reconnoiter -c "select stratcon.archive_part_maint('noit.metric_text_archive', 'whence', 'day', 7);" 1>/dev/null
01 00 * * * /usr/bin/psql -d reconnoiter -U reconnoiter -c "select stratcon.archive_part_maint('noit.check_status_archive', 'whence', 'day', 7);" 1>/dev/null
01 00 * * * /usr/bin/psql -d reconnoiter -U reconnoiter -c "select stratcon.archive_part_maint('noit.check_archive', 'whence', 'day', 7);" 1>/dev/null
01 00 * * * /usr/bin/psql -d reconnoiter -U reconnoiter -c "delete from prism.saved_graphs where saved = false and last_update/dev/null

!!! I would suggest to run the daily crons manually once as they create the needed tables and in case you don’t have them you will receive various errors (I know I lost a lot of time trying to figure out why those were not there). This should be just like:
/usr/bin/psql -d reconnoiter -U reconnoiter -c "select stratcon.archive_part_maint('noit.metric_text_archive', 'whence', 'day', 7);"
and so on for each of the 5 daily crons from above.

keys

For a production install you will obviously create some real certs, but in my case where I was just testing this out the test certs build by the installer are just fine:
cd /usr/local/src/reconnoiter/test
cp test-*.crt test-*.key /usr/local/etc/

In dealing with the configuration files uuid’s you will find useful the uuidgen program from the uuid-runtime package:
apt-get install uuid-runtime
that will generate a new uuid on each run:
uuidgen
22426aa0-db34-437d-a891-e759ffbdb494

noitd

We will start from the sample configuration:
mv /usr/local/etc/noit.conf.sample /usr/local/etc/noit.conf
and edit/remove it as needed. Be sure to edit the sslconfig part with the keys you copied above. For more details on the config file look on the wiki.

Finally run noitd and see if all is good:
/usr/local/sbin/noitd -c /usr/local/etc/noit.conf -D
If there are no errors stop it, and run it in the background (without -D):
/usr/local/sbin/noitd -c /usr/local/etc/noit.conf

stratcon

For stratcon we are going to use a similar approach:
mv /usr/local/etc/stratcon.conf.sample /usr/local/etc/stratcon.conf
and then customize the config based on our needs. Set the keys in sslconfig section and the db details

    <dbconfig>
      <host>localhost</host>
      <dbname>reconnoiter</dbname>
      <user>stratcon</user>
      <password>unguessable</password>
    </dbconfig>    

the password is “stratcon” or whatever you set in scaffolding.sql if you customized it (a good idea ;) ).
and finally run it with debuging in the foreground:
/usr/local/sbin/stratcond -c /usr/local/etc/stratcon.conf -D
and if all is good (you did ran the db creation task, right?) you can start it in the background without -D and move to the final step:
/usr/local/sbin/stratcond -c /usr/local/etc/stratcon.conf

Web interface

Finally the last step is to configure the web interface. For this we need to be sure we have apache/php installed and the pgsql module:
apt-get install apache2 libapache2-mod-php5 php5-pgsql
and to enable the rewrite module
a2enmod rewrite
Next we would copy the web files ui to some place like /var/www/ui and create a vhost for reconnoiter inside /etc/apache2/sites-available:

<VirtualHost *:80>
  DocumentRoot /var/www/ui/web/htdocs

  <Directory "/">
      Options None
      AllowOverride None
      Order allow,deny
      Deny from all
  </Directory>
  <FilesMatch "^\.ht">
      Order allow,deny
      Deny from all
      Satisfy All
  </FilesMatch>
  <Directory "/var/www/ui/web/htdocs/">
      php_value include_path /var/www/ui/web/lib
      php_value short_open_tag off
      Options FollowSymLinks Indexes
      AllowOverride All
      Order deny,allow
      Allow from all
  </Directory>

  LogLevel warn
  LogFormat "%h %l %u %t \"%r\" %>s %b" common

  ErrorLog /var/www/ui/web/logs/error_log
  CustomLog /var/www/ui/web/logs/access_log common

  AddType application/x-compress .Z
  AddType application/x-gzip .gz .tgz
  AddType application/x-httpd-php .php
  DefaultType text/plain

  RewriteEngine On
  RewriteRule ^(/data/.+)$ http://localhost:80$1 [P,L,QSA]
</VirtualHost>

enable the config:
a2ensite reconnoiter
and restart apache to enable it: /etc/init.d/apache2 restart

After this hopefully you can open the web interface and start adding some metrics. My goal was to test this with collectd and if there is interest I could describe the details on how to make reconnoiter work with collectd in another post. let me know…

Tags:

Random Posts:

8 Responses to “HowTo install reconnoiter on Debian Lenny

Leave a Reply

Marius on Twitter