Config File

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 can be configured to 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 various types of things

  • key-value pairs, aka. data frequency: 300
  • specifications of things to monitor, aka. Services Service TCP/SMTP
  • groups of services, aka. Groups Group “Foo” { hostname: foo.example.com Service TCP/SMTP Service TCP/HTTP }
  • alternate names for things, aka. Aliases Alias “Foo” “Top:Servers:Foo” Aliases are described further in the advanced documentation
  • definitions of notification methods notification methods are described in notification documentation
  • definitions of special features, such as DARP

In the config file, the parameter-value data must come first, followed by notification methods and special features, followed by groups and services.

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.

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)

Time Units

Many parameters specify amounts of time. Times can be specified using units of secs, mins, hours, days, weeks, and years, all may be abbreviated to one letter. For example: 36y, or 12m.