Senedsa is a small utility and library that wraps around the Nagios
send_nsca utility, which must be available in your system. Senedsa assumes by default that
send_nsca is available in your PATH and that
send_nsca's configuration file is in its default location. Both of these items can be overriden via options in the configuration file or in the command line.
Senedsa is available as a Rubygem: gem install senedsa
senedsa [options] svc_output
Options are as follows:
Senedsa options -c, --config CONFIG senedsa configuration file NSCA options: -H, --nsca_hostname HOSTNAME NSCA server hostname [REQUIRED] -P, --nsca_port PORT NSCA server port Send_Nsca options: -T, --send_nsca_timeout TIMEOUT send_nsca connection timeout -D, --send_nsca_delim DELIM send_nsca field delimited -C, --send_nsca_config CONFIG send_nsca configuration file -B, --send_nsca_binary BINARY send_nsca binary path Service options: -h, --svc_hostname HOSTNAME service hostname [REQUIRED] -S, --svc_descr DESCR service description [REQUIRED] -s, --svc_status STATUS service status: ok, warning, critical, unknown [REQUIRED] General options: -d, --debug Enable debug mode -a, --about Display senedsa information -V, --version Display senedsa version --help Show this message
With no options or arguments,
senedsa displays help (as shown above).
--svc_status are mandatory (unless specified in the configuration file).
svc_output need not be quoted: anything passed as an argument is considered part of
The priority of options is: command line options
> configuration file options
> default options
A YAML-based configuration (default location is
~/.senedsa/config) can be used to set defaults for any option (except
senedsa_config), which can then be overriden in the command line. This is useful, for instance, if the
send_nsca binary is not in the PATH, its configuration file is not in the default location, or so that the NSCA server hostname need not be specified on the command line in every invocation. Use long option names to set the corresponding values:
--- :send_nsca_binary: /usr/local/bin/send_nsca :send_nsca_config: /local/etc/nagios/send_nsca.cfg :nsca_hostname: nsca.example.com
Thus, we can now run
senedsa like so:
senedsa -h myhost.example.com -S mypassiveservice -s ok Everthing ok with myservice
In cases where
senedsa is being used by some external script for a specific host and service (assuming
send_nsca is in the PATH and the configuration is its standard location), the configuration file
/etc/senedsa/script_service could be:
--- :nsca_hostname: nsca.example.com :send_nsca_hostname: my.hostname.example.com :send_nsca_descr: script_service
Then, the script would invoke
senedsa as follows:
senedsa -c /etc/senedsa/script_service -s ok service is doing great
To use Senedsa as a library, simply:
require 'senedsa' svc_hostname = "foo.example.com" svc_descr = "sample service description" begin s = SendNsca.new svc_hostname, svc_descr, :nsca_hostname => "nsca.example.com" s.send :ok, "Everything ok with my service" rescue => e # rescue logic end
Senedsa accepts four different constructors, aimed at fitting different situations.
config_fileis a path to a valid configuration file
config_hashis a hash keyed by long option names with their corresponding values
svc_hostnameis the hostname of the service hostname
svc_descris the service description of the service
An instance does not need all options defined until the
send method is invoked.
Senedsa has sensible defaults for the following options, mostly following
send_nsca's documented defaults:
nsca_port = 5667
send_nsca_timeout = 10
send_nsca_delim = '\t'
send_nsca_binary = 'send_nsca'
It is therefore not necessary to set these if your environment doesn't need them changed.
SETTERS, GETTERS and CONFIGURATION FILES
All options are settable (and gettable) through attribute methods. For instance:
sn = SendNsca.new "foo.example.com", "web_service" sn.nsca_hostname = "nsca.example.com" sn.send :ok, "Service ok"
sn = SendNsca.new "foo.example.com", "web_service", :nsca_hostname => "nsca.example.com" sn.nsca_port = 55667 sn.send :ok, Service ok"
If you wish to use a configuration file to set some defaults:
--- :nsca_hostname: nsca.example.com :send_nsca_hostname: my.hostname.example.com
config_file = '/etc/senedsa.cfg' s = SendNsca.new config_file s.svc_descr = "web_service" s = s.send :ok, "Everything ok with web_service"
Alternatively you can set defaults in the
SendNsca class before creating any instances:
SendNsca.defaults[:nsca_hostname] = "nsca.example.com" s = SendNsca.new svc_hostname, svc_descr s.send :ok, "Everything ok with my service"
After a SendNsca instance is created, changing the defaults has no effect on said instance. You must then make changes to the instance itself.