host_port objects - Enhancement Request
Jason Frisvold
frisvolj at lafayette.edu
Thu Oct 28 17:16:01 CEST 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Greetings,
We are planning on submitting an enhancement request to Nagios with the
intention of having their professional services group code this for us.
We are interested in having our changes made available to the community
as well, so we wanted to get feedback from the community before we
submit the proposal. Any and all feedback is welcome.
Thanks.
Nagios Enhancement Proposal
Overview
Currently, there are two primary ways to add individual physical ports
for a port-based device. Each method has both advantages and
disadvantages, but neither fully satisfies the needs of Lafayette and,
likely, other institutions.
Service-based Ports
The first method is to treat ports as a service of a host and add them
as service entries. The following configuration snippet demonstrates this :
define host {
use cisco-switch-standard
host_name switch.lafayette.edu
address 192.168.0.100
hostgroups cisco-switch-standard
parents router.lafayette.edu
}
define service {
use service-standard
hosts switch.lafayette.edu
servicegroups cisco-switch-standard
service_description Switch Port Gi1/0/1
check_command check_snmp_traffic!-N Gi1/0/1!-C $USER2$
}
In short, this configuration defines a host and then a service for that
host which is, essentially, an snmp check that monitors the traffic on a
specific port.
Advantages
* Cleanly links a port to a switch
* Somewhat easy to add/remove specific hosts that need that port monitored
Disadvantages
* Parent/child relationships are difficult, if not impossible, to define
* Making service changes for a single port requires creating a unique
new service
* Service descriptions can get a bit long when they need to have a
meaningful description associated with them
* Ports with associated addresses are more difficult to define
Host-based Ports
Another method to accomplish this is to create a “fake” host entry for
each port and then assign services to those ports for monitoring. The
following configuration snippet demonstrates this :
define host {
use cisco-switch-standard
host_name switch.lafayette.edu
address 192.168.0.100
hostgroups cisco-switch-standard
parents router.lafayette.edu
}
define host {
use cisco-switch-standard
host_name switch-g1-0-1.lafayette.edu
address 192.168.0.100
hostgroups cisco-switch-standard
_PORT Gi1/0/1
parents switch.lafayette.edu
}
define service {
use service-standard
hosts switch.lafayette.edu
servicegroups cisco-switch-standard
service_description Port Traffic
check_command check_snmp_traffic!-N $_HOSTPORT$!-C $USER2$
}
This configuration defines two hosts, a switch and a port on that
switch, and then a service linked to the port.
Advantages
* Parent/child relationships work as expected
* A single service entry can be used for many port entries
* Very easy to deal with address-assigned ports such as router interfaces
Disadvantages
* Every port on every switch has to be defined
* Port host_name entries are often fake
* Port address entries are often duplicated
Proposed Solution
host-port object
define host {
use cisco-switch-standard
host_name switch.lafayette.edu
address 192.168.0.100
hostgroups cisco-switch-standard
parents router.lafayette.edu
}
define host_port {
use cisco-switch-standard
host switch.lafayette.edu
port_name Gi1/0/1
}
define service {
use service-standard
host switch.lafayette.edu
port_based true
servicegroups cisco-switch-standard
service_description Port Traffic
check_command check_snmp_traffic!-N $PORTNAME$!-C $USER2$
}
In this proposed configuration, a host is defined, as normal. A new
object, the host_port object, is defined with port-based information.
The host_port object imports information such as address and host_name
from the host but can override this information if needed. For
instance, a router interface may have an ip address and hostname.
Finally, a new tag, port_name, identifies the port name to use. When
displaying the host_port in the GUI, or identifying it in email/SMS, the
port_name should be appended to the host_name. A similar syntax could
be used for parent/child relationships as well.
The service definition uses a new tag, port_based, to identify that this
service is for the ports of a host, not for the host itself. This
service should be applied to all ports. port_name can be used in a
manner similar to host or hostgroups to restrict the service to specific
ports.
Advantages
* Clearly links ports to hosts
* Parent/child relationships can be clearly defined
* A single service entry can be used for many port entries
* Very easy to deal with address-assigned ports such as router interfaces
Disadvantages
* Every port has to be defined
* Concatenated host/port names can get a bit long
- --
- ---------------------------
Jason Frisvold
Network Engineer
frisvolj at lafayette.edu
- ---------------------------
"What I cannot create, I do not understand"
- Richard Feynman
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/
iEYEARECAAYFAkzJk7EACgkQO80o6DJ8UvkfDACeLtvq+tm2W+Muz32SOopnqo4J
/6MAmgM5Gvmp26npPTOl2oY93NBh+hn0
=u3pW
-----END PGP SIGNATURE-----
------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue.
::: Messages without supporting info will risk being sent to /dev/null
More information about the Users
mailing list