Configuration¶
Watchghost configuration lives within four files within a single directory. These files describe our monitored infrastructure. Each file contains one kind of configured element.
The four kind of configuration element (and their filenames) are:
servers
groups
watchers
loggers
The default directory is ~/.config/watchghost
. This folder can be changed
using the config
option of Watchghost executables.
The format of these files is TOML and each file contains a list of elements.
Servers¶
-
class
watchghost.config.
Server
(name, config)¶ A Server is only represented by its name. This name is a string that must be unique amongst all servers and groups.
Any other pair of key/value can be configured.
Example:
[jupiter] ipv4 = "100.10.10.10" ipv6 = "2001:db8:100:0:bda1:1c51:c598:6ef8" [ceres] ipv4 = "100.10.10.11" ipv6 = "2001:db8:100:0:2df2:b059:4067:437e" [vulcan] ipv4 = "100.10.10.12" ipv6 = "2001:db8:100:0:eccf:6af2:e2:9e"
Groups¶
A Group is only represented by its name. This name is a string that must be unique amongst all servers and groups. Values must be a list of valid server names.
Example:
postgres = ["jupiter", "vulcan"]
linux = ["jupiter", "ceres"]
windows = ["vulcan"]
This example defines three groups named postgres
(including the jupiter
and vulcan
servers), linux
(including the jupiter
and ceres
servers), and windows
(including the vulcan
server).
Watchers¶
-
class
watchghost.services.
Service
(name, group=None, server=None)¶ A Service is responsible for checking something.
A Watcher is a Service applied to a server or a group, with custom attributes.
Any watcher must have the following attribute:
- service: the service class name.
Any watcher can have the following attributes:
- server or group: the server name or group name.
- description: a string representing the watcher (default: None).
- repeat: the time period between two checks, in seconds (default: 3600).
- after: the hour when the checks must start (default: 00:00:00).
- before: the hour when the checks must stop (default: 23:59:59).
- retry: the number of checks giving the same result before declaring the state as hard (default: 2).
- retry_interval: the time period (in seconds), between two checks when the state is not hard (default: 15).
- status: a mapping between statuses and filters that trigger these statuses.
Example:
[ping4] service = "network.Ping" group = "postgres" description = "Ping IPv4" ip_version = 4 [ceres] service = "network.HTTP" server = "ceres" description = "HTTP" url = "http://test.org:8888/" [ceres.status] warning = [ { code = 404 } ]
This example defines two watchers. The first one pings the IPv4 of the postgres group’s servers. The second one fetches the “http://test.org:8888/” page on the “ceres” server and gives a warning status when the status code is 404 (otherwise gives what the HTTP watcher’s default config does).
Loggers¶
-
class
watchghost.loggers.
Logger
¶ A logger make a recording of services watches.
All loggers share the following properties:
- type: the name of the class to use as logger. This class must be found in watchghost.loggers module.
- status: a list of status level that the logger accepts. A status
level is one of
info
,warning
,error
,critical
orunknown
. - only_hard: whether or not the logger should act only on hard statuses or not. A status is hard when a watcher gives the same result N times (N being defined on the watcher).
Example:
[console] type = "Console" status = ["error", "critical"] only_hard = True
This example defines a logger that will use the class
watchghost.loggers.Console
. This logger will only logerror
andcritical
statuses when these statuses are hard.