Argus - System and Network Monitoring Software

# Configuring

You have the choice of creating a single config file, or a directory of separate config files, which are effectively concatenated together.

The latter is useful so that different parts can be generated by different people or different scripts.

For example, the author has one file for each of: unix servers, NT servers, routers, terminal servers, BGP sessions, T1 connections, DSL connections, etc. Certain files are built by scripts from various databases, and others are maintained by people.

The application will automatically notice if a config file changes and will reload.

By default, argus will look in the configured `data` directory for a file or subdirectory named `config`. This can be overridden with the `-c` command line option.

## Config File Structure

The config file defines what and how things are monitored as well as the layout and relationships of the various items.

It contains 4 types of things

1. key-value pairs, aka. data
   `frequency: 300`
2. specifications of things to monitor, aka. Services
   `Service TCP/SMTP`
3. grouping constructions, aka. Groups

       	Group "Foo" {
       		hostname: foo.example.com
       		Service TCP/SMTP
       		Service TCP/HTTP
       	}

4. alternate names for things, aka. Aliases
   `Alias "Foo" "Top:Servers:Foo"`
   Aliases are described further in the advanced documentation

There are an extremely large number of parameters (data) that can be (or need to be) defined. In general, everything tries to default to reasonable and "Do What I Mean" values.

There is an auto-generated list of all of the parameters, etc, here

Probably good to show an example:

         syslog: local1
         notify: mail:staff@example.com

         Group "Servers" {
                 Group "mail" {
                         # Here, we specify data (hostname) for the group
                         # Note: hostname data is not used by Groups
                         # but the enclosed Services will inherit
                         # the value and use it
                         hostname: mail.example.com
                         Service TCP/SMTP
                         Service TCP/IMAP
                         Service UDP/DNS
                         Service Ping
                         # Notice, Services can either be standalone, or have
                         # data attached
                         # in the next case, we give the Ping a different
                         # address to check
                         Service Ping {
                                 hostname: 10.4.3.2
                         }
                 }
                 Group "www" {
                         # Note, unlike C or Perl, you cannot
                         # place the opening { on a different line
                         hostname: www.example.com
                         Service TCP/HTTP
                         Service TCP/HTTPS
                         Service Ping
                         Service TCP {
                                 port: 12345
                                 info: YoyoDyne Application Server
                         }
                         # Also, the closing } must be on
                         # a line by itself (with optional whitespace)
                 }
         }

Since it is quite common to create a group representing a single host, and enclosing a number of services to test on that host, a shorthand notation is provided for this:

    	Host "www.example.com" {
    		Service TCP/HTTP
    		Service TCP/HTTPS
    		Service Ping
    		Service TCP {
    			port: 12345
    			info: YoyoDyne Application Server
    		}
    	}

This does the same thing as the "www" group in the other example.

Hmmm, OK, perhaps it isn't much shorter. How about "A more self-documenting-hand", instead?

Other sections of the documentation will explain some of the more common parameters and show additional examples.

## Config File - Other Notes

### Case Sensitivity

In general, the everything is case-sensitive. Often, argus can figure out what you mean if you mis-case something, but not always, so you should you use the same casing as shown.

### Include Files

You can include another file in a config file by saying:

    	Include "file"

Include files may in turn include other files to any level of nesting (well, up to what ever resource limits your Operating System may have)

Include support was added in version 3.2