spong-message8
Send out alerts when there is a problem
Usage
spong-message [--debug]
[{--file
filename | --message
"detailed
message
text"}]
color
host
service
time
message
spong-message {[--debug]
--color | --status
color
--host
hostname
--service
service
--time
time
--summary
"summary
message
text"
[{--file
filename | --message
"detailed
message
text"}]}
Overview
This program is called by the spong-server to send out alerts. The spong-server only makes a quick determination for send out alerts. It's only criteria is a change in status of a service. The spong-message make a more thorough determination of transmitting the alerts according to the message rules defined in the spong.message configuration file. spong-message also has throttling mechanisms to prevent an excessive number of messages from being send within a short amount of time.
Options
-
--debug -
Enables the printing of detailed debugging lines. Can be used in conjunction with
--testto test new messaging rules.
--color|--statuscolor-
Specified the status color of the event being reported. color can be green, yellow or red.
-
--host hostname -
The hostname of the server that is being reported on.
-
--service service -
The name of the service that is being reported on.
-
--time time -
The time of the event being reported in epoch format (i.e. time()).
--summary"summary text"-
This is the summary message field of the event being reported on.
-
--file filename -
The name of a file to read the detailed message text from. If the filename is '-', the text is read from stdin.
--message"message text"-
Detailed message text of the event being reported.
The following parameters can be specified on the command line with the accompanying command line parameters.
- color
-
the status color of the message (
red,yellow, orgreen)
- host
-
the hostname being of the alert
- service
-
the name of the service of the alert
- time
-
the date/time (in time() format) of the problem
- message
-
a summary line of the problem
Theory of Operation
When spong-message is called, the information passed in the arguments is run through a list of rules which determine who is contacted, when they are contacted and how often. The information is also run through a number of checks to determine if the message should be sent.
A small database in the $SPONGTMP directory is kept so that spong-message can keep track how many pages have been sent, when was the last page sent, etc. These checks help to direct problems to the correct people, and also help to throttle messages when there are wide-spread problems (such as a networking outage).
If you are going to be performing maintenance on a machine, or have standard down time for a machine, you can specify that down time in the spong.hosts file using the down attribute in a %HOSTS variable. If a problem is reported during the time indicated, spong-message will not send any messages.
spong-message also checks for any acknowledgements active for a machine. If there an active acknowledgement found for a machine and service, no messages will be sent.
spong-message uses the %HUMANS entries defined in the contacts attributes of the messaging rules of spong.message to determine who is to be contacted. A list of contacts is generated from all of the message rules that are matched. (See the spong.message and spong.hosts documentation for information on the file formats.)
Message Templates
Notification messages are formatted by message templates in the %TEMPLATES configuration variable in the spong.message file. The 'DEFAULT' template is use is no other template is found. Templates override can be defined for any contact, message module, or a combination of the two. See "MESSAGE TEMPLATES" in spong.message for information on the file format.
Messaging Modules
spong-message alerts people via the messaging modules that are installed. New messaging functions can be easily created. See the Message Modules section in the Developer Guide.
Configuration
Configuration Files
- spong.hosts
-
spong.hosts defined attributes for two things of important to <spong-message> 1) the hosts that
Spongis monitoring (%HOSTS), and 2) the contacts that are responsible for the various hosts and how to contact them (%HUMANS).See spong.hosts for a full description of all of the file formats.
- spong.message
-
This file hold the rules that determine who is to be contacted, when and how often. There are some of the important configuration variables in the spong.message file 1) how the messaging rules are to be scanned (
$RULES_MATCH), 2) the messaging rules ($MESSAGING_RULES), 3) how to format the messages being sent (%TEMPLATES).
Configuration Variables
From spong.hosts:
- %HUMANS
-
The %HUMANS configuration variable hold all of possible message recipients (the humans) and the information necessary on how to contact them. Each human contact can be a person, a group of people, or really anything you want.
Each human that is defined should have name attribute associated with it. name is the name or description of the contact.
To send out any notifications at least messaging attribute must be define for the human. A messaging attribute consists of a message module name as a key and contact information as a value. See "EXAMPLES" for a detailed %HUMANS example.
- %HOSTS
-
The %HOSTS configuration variables can hold a list of regularly scheduled maintenance periods (down) for each host. Any alerts that are generated during a maintenance period will be silently discarded.
From spong.message:
- $RULES_MATCH
-
$RULES_MATCHdetermines how the rules in$MESSAGING_RULESare scanned. If it is FIRST_MATCH the rules will be scanned until the first rule that matches the messaging criteria. A value of ALL means that all of the rules are scan with the contacts of all matching rules being adding into the list of contacts to notify. If the value is OLD, then spong-message will fall back to the messaging code used in Spong versions 2.0 - 2.1 for compatibility.
- $MESSAGING_RULES
-
$MESSAGING_RULEScontains the rules that how, who and how often contacts are notified. See$MESSAGING_RULESfor the full rules syntax.
- %TEMPLATES
-
%TEMPLATESdetermined how notification message are formatted. A template format consists a subject and message template strings. Both strings are not required as some message module will not require a subject or a body. See$MESSAGING_RULESfor the full rules syntax.
From spong.conf:
- $SEND_MESSAGE
-
$SEND_MESSAGEdefines when spong-message is called by spong-server. It is not really specific to spong-message, but I think it is useful to describe its behavior here. This variable can contain one of four valid values. If it is RED, thenspong-messageis called for every time a system or service reports a problem. If its value is CHANGE, thenspong-messageis only called when there is a change of state . If this values is RED-CHANGE, thenspong-messageis called every time a service or service reports a problem and when the condition is cleared. (going from green/yellow to red, and then again going from red to green/yellow). If its value is NONE, thenspong-messageis never called.
- $MESSAGES_PER_HOUR
-
$MESSAGES_PER_HOURis the maximum number of messages that are sent to the same person in an hour. All message past this number are just logged to the history file, but are not sent. This helps to prevent against message overload such as when you have a networking problem, and everything appears to go red at once. The default value is 5.
- $IDENT_MESSAGES_PER_HOUR
-
$IDENT_MESSAGES_PER_HOURis the maximum number of identical messages that are sent to the same person in an hour. The default value is 3.
Files
spong.conf, spong.hosts, $SPONGTMP/message-db, spong.message
Examples
Here are some examples to show you possible configurations.
- spong.hosts
-
%HUMANS = ('unix-staff' => { 'name' => 'Midrange On-call Staff','email' => '[email protected]'},'georgew' => { 'name' => 'George Wilson','email' => '[email protected]','skytel' => '1234567' },);%HOSTS = ('grad.cs.school.edu' => { services => 'ftp smtp http','down' => ["*:05:30-06:30","0:00:00-04:00" ] },'www.school.edu' => { services => 'ftp smtp http' },);
- spong.message
-
$RULES_MATCH = 'FIRST-MATCH';$MESSAGING_RULES = [{ hosts => [ 'gard.cs.school.edu' ],contacts => [ 'unix-staff'],exclude_colors => ['green','yellow'],},{ hosts => ['www.school.edu'],contacts => [ 'georgew:email',{ rcpt=>'georgew:skytel', repeat=>900, }, ]},];%TEMPLATES = ('DEFAULT' => { subject => 'spong - !!COLOR!! !!HOST!! !!SERVICE!!',body =>'!!DATETIME!!!!COLOR!! !!HOST!! !!SERVICE!!!!SUMMARY!!',},'email' => { subject => 'spong - !!COLOR!! !!HOST!! !!SERVICE!!',body =>'Host !!HOST!! service has been reported !!COLOR!!.Summary: !!SUMMARY!!Spong Web Page: !!WWWSPONG!!Service Detail Page: !!WWWSPONG!!/service/!!HOST!!/!!SERVICE!!Status event details:!!DETAILED!!',},);
DEPENDENCIE/h1
Perl v5.003 or greater is required.
To receive pages, you currently must have a pager that can be contacted electronically (via email or web interface).
History
- Debian 5.0 (Lenny): the text shown here
- Debian 4.0 (Etch)
- Debian 3.1 (Sarge)
- Debian 3.0 (Woody)
--debug since Debian 5.0 (Lenny);
--file since Debian 5.0 (Lenny);
--host since Debian 5.0 (Lenny);
--service since Debian 5.0 (Lenny);
--time since Debian 5.0 (Lenny).