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.
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
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.
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.
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)
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.