[Nagiosplug-devel] Kickoff for 1.5 (SNMP traps)

Subhendu Ghosh sghosh at sghosh.org
Wed Mar 9 17:40:59 CET 2005


An FYI-

I have been working on defining some SNMP objects for Nagios to allow 
feeding to other NMS.

Currently have a ROOT and NOTIFY mibs defined.

Have a working but not ready for release notification script that sends 
out a trap based on these objects. Use v2b macros.

The Nagios tree is officially registered under IANA's enterprises 
namespace.

-- 
-sg
-------------- next part --------------
NAGIOS-ROOT-MIB DEFINITIONS ::= BEGIN
IMPORTS
	MODULE-IDENTITY,  enterprises 
		FROM SNMPv2-SMI
	TEXTUAL-CONVENTION
		FROM SNMPv2-TC;


nagios MODULE-IDENTITY
		LAST-UPDATED "200501200000Z" -- January 20, 2005
		ORGANIZATION "Nagios"
		CONTACT-INFO
			" Subhendu Ghosh
			
			Telephone: +1 201 232 2851
			Email: sghosh at users.sourceforge.net

			Nagios Information:
				http://www.nagios.org
			"
		DESCRIPTION
			"Objects for Nagion(tm) NMS"
		REVISION "200501200000Z" --January 20, 2005
		DESCRIPTION
			"Initial Version"
		::= {enterprises 20006}

--
-- Textual Conventions
--

NotifyType ::= TEXTUAL-CONVENTION
	STATUS current
	DESCRIPTION
		"A string identifying the type of notification that is being sent 
		(PROBLEM, RECOVERY, ACKNOWLEDGEMENT, FLAPPINGSTART or FLAPPINGSTOP).
		"
	SYNTAX INTEGER {
		problem(0),
		recovery(1),
		acknowledgement(2),
		flappingstart(3),
		flappingstop(4)
		}

HostStateID ::= TEXTUAL-CONVENTION
	STATUS current
	DESCRIPTION
		"A number that corresponds to the current state of the host: 0=UP, 1=DOWN, 
		2=UNREACHABLE."
	SYNTAX INTEGER {
		up(0),
		down(1),
		unreachable(3)
		}
				
HostStateType ::= TEXTUAL-CONVENTION
	STATUS current
	DESCRIPTION
		"A string indicating the state type for the current host check (HARD or 
		SOFT). Soft states occur when host checks return a non-OK (non-UP) state 
		and are in the process of being retried. Hard states result when host 
		checks have been checked a specified maximum number of times."
	SYNTAX INTEGER {
		hard(0),
		soft(1)
		}

ServiceStateID ::= TEXTUAL-CONVENTION
	STATUS current
	DESCRIPTION
		"A number that corresponds to the current state of the service: 0=OK, 
		1=WARNING, 2=CRITICAL, 3=UNKNOWN.
		"
	SYNTAX INTEGER{
		ok(0),
		warning(1),
		critical(2),
		unknown(3)
		}


END
-------------- next part --------------
NAGIOS-NOTIFY-MIB DEFINITIONS ::= BEGIN
  IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,  NOTIFICATION-TYPE,
    Integer32
      FROM SNMPv2-SMI
    nagios,NotifyType,HostStateID,HostStateType,ServiceStateID
      FROM NAGIOS-ROOT-MIB;

nagiosNotify MODULE-IDENTITY
  LAST-UPDATED "200501200000Z" -- January 20, 2005
  ORGANIZATION "Nagios"
  CONTACT-INFO
      " Subhendu Ghosh
      
      Telephone: +1 201 232 2851
      Email: sghosh at users.sourceforge.net

      Nagios Information:
        http://www.nagios.org
      "
  DESCRIPTION
      "Objects for Nagion(tm) events.  There are 2 primary table
      reflecting the division in Nagios for Host events and
      Service events.

      The 2 tables are extended the HostNotifyTable and the 
      ServiceNotifyTable to keep track of the notifications based on events.
      
      The tables entries themselves are not accessible but are used for OID
      entries for TRAP/INFORM notifications.

      These objects are based on the macros defined in Nagios v2.0
      "
  REVISION "200501200000Z" --January 20, 2005
  DESCRIPTION
      "Initial Version"
  ::= { nagios 1 }


nagiosHostEventTable OBJECT-TYPE 
  SYNTAX      SEQUENCE OF HostEventEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
    "Table of Nagios host events"
  ::= { nagiosNotify 1 }

HostEventEntry ::= SEQUENCE {
  nHostEventIndex    Integer32,
  nHostname          OCTET STRING,
  nHostAlias         OCTET STRING,
  nHostStateID       HostStateID,
  nHostStateType     HostStateType,
  nHostAttempt       Integer32,
  nHostDurationSec   Integer32,
  nHostGroupName     OCTET STRING,
  nHostLastCheck     INTEGER,
  nHostLastChange    INTEGER,
  nHostLastUp        INTEGER,
  nHostLastDown      INTEGER,
  nHostLastUnreachable INTEGER,
  nHostOutput        OCTET STRING,
  nHostPerfData      OCTET STRING
  }
  
nagiosHostEventEntry  OBJECT-TYPE
  SYNTAX      HostEventEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
    "Each notification event"
  INDEX { nHostEventIndex }
  ::= { nagiosHostEventTable 1 }
  
nHostEventIndex OBJECT-TYPE
  SYNTAX     Integer32 (1..65535)
  MAX-ACCESS not-accessible
  STATUS     current
  DESCRIPTION 
    "This object uniquely identifies this host event entry"
  ::= { nagiosHostEventEntry 1 }

nHostname    OBJECT-TYPE
  SYNTAX     OCTET STRING
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION 
    "Hostname as specified in the Nagios configuration file."
  ::= { nagiosHostEventEntry 2 }

nHostAlias   OBJECT-TYPE
  SYNTAX     OCTET STRING
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "The host alias as specified in the Nagios configuration file"
  ::= { nagiosHostEventEntry 3 }
  
nHostStateID OBJECT-TYPE
  SYNTAX     HostStateID
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "The host state as defined by the HOSTSTATEID macro"
  ::= { nagiosHostEventEntry 4 }

nHostStateType  OBJECT-TYPE
  SYNTAX     HostStateType
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "The host state as defined by the HOSTSTATETYPE macro"
  ::= { nagiosHostEventEntry 5 }
  
nHostAttempt  OBJECT-TYPE
  SYNTAX     Integer32
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "The number of the current host check retry. For instance, if this is the 
    second time that the host is being rechecked, this will be the number two. 
    Current attempt number is really only useful when writing host event 
    handlers for soft states that take a specific action based on the host retry 
    number. The host state as defined by the HOSTSTATEID macro"
  ::= { nagiosHostEventEntry 6 }

nHostDurationSec   OBJECT-TYPE
  SYNTAX     Integer32
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
   "A number indicating the number of seconds that the host has spent in its 
   current state"
  ::= { nagiosHostEventEntry 7 }
  
nHostGroupName   OBJECT-TYPE
  SYNTAX     OCTET STRING
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "The short name of the hostgroup that this host belongs to. This value is 
    taken from the hostgroup_name directive in the hostgroup definition. If the 
    host belongs to more than one hostgroup this macro will contain the name of
    just one of them."
  ::= { nagiosHostEventEntry 8 }
  
nHostLastCheck  OBJECT-TYPE
  SYNTAX     INTEGER
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
   "This is a timestamp in time_t format (seconds since the UNIX epoch) 
   indicating the time at which a check of the host was last performed."
  ::= { nagiosHostEventEntry 9 }

nHostLastChange  OBJECT-TYPE
  SYNTAX     INTEGER
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
   "This is a timestamp in time_t format (seconds since the UNIX epoch)
   indicating the time the host last changed state."
  ::= { nagiosHostEventEntry 10 }

nHostLastUp  OBJECT-TYPE
  SYNTAX     INTEGER
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "This is a timestamp in time_t format (seconds since the UNIX epoch)
    indicating the time at which the host was last detected as being in an UP
    state."
  ::= { nagiosHostEventEntry 11 }
  
nHostLastDown OBJECT-TYPE
  SYNTAX     INTEGER
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "This is a timestamp in time_t format (seconds since the UNIX epoch)
    indicating the time at which the host was last detected as being in an
    DOWN state."
  ::= { nagiosHostEventEntry 12 }

nHostLastUnreachable OBJECT-TYPE
  SYNTAX     INTEGER
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "This is a timestamp in time_t format (seconds since the UNIX epoch)
    indicating the time at which the host was last detected as being in an
    UNREACHABLE state."
  ::= { nagiosHostEventEntry 13 }
  
nHostOutput  OBJECT-TYPE
  SYNTAX     OCTET STRING
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "The text output from the last host check (i.e. Ping OK)."
  ::= { nagiosHostEventEntry 14 }

nHostPerfData OBJECT-TYPE
  SYNTAX     OCTET STRING
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "This object contains any performance data that may have been returned 
    by the last host check."
  ::= { nagiosHostEventEntry 15 }



--
-- Host Notifications

nagiosHostNotifyTable OBJECT-TYPE
  SYNTAX     SEQUENCE OF HostNotifyEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
    "Table of Nagios host notifications"
  ::= {nagiosNotify 2}

HostNotifyEntry ::= SEQUENCE {
  nHostNotifyType    NotifyType,
  nHostNotifyNum     Integer32,
  nHostAckAuthor     OCTET STRING,
  nHostAckComment    OCTET STRING
  }

nagiosHostNotifyEntry  OBJECT-TYPE
  SYNTAX      HostNotifyEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
   "Nagios host notifications extends the nagiosHostEventTable when a
   notification is generated for an event."
  INDEX { nHostEventIndex }
  ::= { nagiosHostNotifyTable 1 }

nHostNotifyType  OBJECT-TYPE
  SYNTAX     NotifyType
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION 
    "This identifies the type of "
  ::= { nagiosHostNotifyEntry 1 }
  
nHostNotifyNum OBJECT-TYPE
  SYNTAX     NotifyType
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION 
    "This identifies the type of "
  ::= { nagiosHostNotifyEntry 2 }

nHostAckAuthor  OBJECT-TYPE
  SYNTAX     OCTET STRING
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "A string containing the name of the user who acknowledged the host 
    problem. This macro is only valid in notifications where the 
    $NOTIFICATIONTYPE$ macro is set to ACKNOWLEDGEMENT."
  ::= { nagiosHostNotifyEntry 3 } 
  
nHostAckComment   OBJECT-TYPE
  SYNTAX     OCTET STRING
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
    "A string containing the acknowledgement comment that was entered by 
    the user who acknowledged the host problem. This macro is only valid 
    in notifications where the $NOTIFICATIONTYPE$ macro is set to ACKNOWLEDGEMENT"  
  ::= { nagiosHostNotifyEntry 4 } 


-- 
-- Service Events 
-- 


nagiosSvcEventTable OBJECT-TYPE
  SYNTAX      SEQUENCE OF SvcEventEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
    "Table of Nagios service notifications"
  ::= { nagiosNotify 3 }

SvcEventEntry ::= SEQUENCE {
  nSvcEventIndex    Integer32,
  nSvcHostname      OCTET STRING,
  nSvcHostAlias     OCTET STRING,
  nSvcHostStateID   HostStateID,
  nSvcHostStateType HostStateType,
  nSvcDesc          OCTET STRING,
  nSvcStateID       ServiceStateID,
  nSvcAttempt       Integer32,
  nSvcDurationSec   Integer32,
  nSvcGroupName     OCTET STRING,
  nSvcLastCheck     INTEGER,
  nSvcLastChange    INTEGER,
  nSvcLastOK        INTEGER,
  nSvcLastWarn      INTEGER,
  nSvcLastCrit      INTEGER,
  nSvcLastUnkn      INTEGER,
  nSvcOutput        OCTET STRING,
  nSvcPerfData      OCTET STRING
  }

nagiosSvcEventEntry OBJECT-TYPE
  SYNTAX        SvcEventEntry
  MAX-ACCESS    not-accessible
  STATUS        current
  DESCRIPTION
    "Table of Nagios service events."
  INDEX { nSvcEventIndex }
  ::= { nagiosSvcEventTable 1 }

nSvcEventIndex OBJECT-TYPE
  SYNTAX       Integer32 (1..65535)
  MAX-ACCESS   not-accessible
  STATUS       current
  DESCRIPTION
   "This object uniquely identifies this service event entry"
  ::= { nagiosSvcEventEntry 1 }
  
nSvcHostname      OBJECT-TYPE
  SYNTAX          OCTET STRING
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "Hostname as specified in the Nagios configuration file."
  ::= { nagiosSvcEventEntry 2 }

nSvcHostAlias     OBJECT-TYPE
  SYNTAX          OCTET STRING
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "The host alias as specified in the Nagios configuration file"
  ::= { nagiosSvcEventEntry 3 }
  
nSvcHostStateID   OBJECT-TYPE
  SYNTAX          HostStateID
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "A number that corresponds to the current state of the service: 0=OK,
    1=WARNING, 2=CRITICAL, 3=UNKNOWN."
  ::= { nagiosSvcEventEntry 4 }
  
nSvcHostStateType OBJECT-TYPE 
  SYNTAX          HostStateType
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "Whether the host is in a hard or soft state."
  ::= { nagiosSvcEventEntry 5 }
  
nSvcDesc          OBJECT-TYPE
  SYNTAX          OCTET STRING
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "This value is taken from the description directive of the service
    definition."
  ::= { nagiosSvcEventEntry 6 }
nSvcStateID       OBJECT-TYPE
  SYNTAX          ServiceStateID
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    " A number that corresponds to the current state of the service: 0=OK,
    1=WARNING, 2=CRITICAL, 3=UNKNOWN"
  ::= {  nagiosSvcEventEntry 7 }
  
nSvcAttempt       OBJECT-TYPE
  SYNTAX          Integer32
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "The number of the current service check retry. For instance, if this is
    the second time that the service is being rechecked, this will be the
    number two. Current attempt number is really only useful when writing
    service event handlers for soft states that take a specific action based
    on the service retry number."
  ::= { nagiosSvcEventEntry 8 }

nSvcDurationSec   OBJECT-TYPE
  SYNTAX          Integer32
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "A number indicating the number of seconds that the service has spent in
    its current state."
  ::= { nagiosSvcEventEntry 9 }

nSvcGroupName     OBJECT-TYPE
  SYNTAX          OCTET STRING
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "The short name of the servicegroup that this service belongs to. This
    value is taken from the servicegroup_name directive in the servicegroup
    definition. If the service belongs to more than one servicegroup this
    object will contain the name of just one of them."
  ::= { nagiosSvcEventEntry 10 }

nSvcLastCheck     OBJECT-TYPE
  SYNTAX          INTEGER
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "This is a timestamp in time_t format (seconds since the UNIX epoch)
    indicating the time at which a check of the service was last performed."
  ::= { nagiosSvcEventEntry 11 }

nSvcLastChange    OBJECT-TYPE
  SYNTAX          INTEGER
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "This is a timestamp in time_t format (seconds since the UNIX epoch)
    indicating the time the service last changed state."
  ::= { nagiosSvcEventEntry 12 }

nSvcLastOK        OBJECT-TYPE
  SYNTAX          INTEGER
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "This is a timestamp in time_t format (seconds since the UNIX epoch)
    indicating the time at which the service was last detected as being in an
    OK state."
  ::= { nagiosSvcEventEntry 13 }

nSvcLastWarn      OBJECT-TYPE
  SYNTAX          INTEGER
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "This is a timestamp in time_t format (seconds since the UNIX epoch)
    indicating the time at which the service was last detected as being in a
    WARNING state."
  ::= { nagiosSvcEventEntry 14 }

nSvcLastCrit      OBJECT-TYPE
  SYNTAX          INTEGER
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "This is a timestamp in time_t format (seconds since the UNIX epoch)
    indicating the time at which the service was last detected as being in a
    CRITICAL state."
  ::= { nagiosSvcEventEntry 15 }

nSvcLastUnkn      OBJECT-TYPE
  SYNTAX          INTEGER
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "This is a timestamp in time_t format (seconds since the UNIX epoch)
    indicating the time at which the service was last detected as being in an
    UNKNOWN state."
  ::= { nagiosSvcEventEntry 16 }
  
nSvcOutput        OBJECT-TYPE
  SYNTAX          OCTET STRING
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "The text output from the last service check (i.e. Ping OK)."
  ::= { nagiosSvcEventEntry 17 }

nSvcPerfData      OBJECT-TYPE
  SYNTAX          OCTET STRING
  MAX-ACCESS      read-only
  STATUS          current
  DESCRIPTION
    "This object contains any performance data that may have been returned by
    the last service check."
  ::= { nagiosSvcEventEntry 18 }


-- 
-- Service Notifications
-- 

nagiosSvcNotifyTable OBJECT-TYPE
  SYNTAX       SEQUENCE OF SvcNotifyEntry
  MAX-ACCESS   not-accessible
  STATUS       current
  DESCRIPTION
    "Table of Nagios service notifications."
  ::= { nagiosNotify 4 }
  
SvcNotifyEntry ::= SEQUENCE {
  nSvcNotifyType    NotifyType,
  nSvcNotifyNum     Integer32,
  nSvcAckAuthor     OCTET STRING,
  nSvcAckComment    OCTET STRING
  }

nagiosSvcNotifyEntry OBJECT-TYPE
  SYNTAX       SvcNotifyEntry
  MAX-ACCESS   not-accessible
  STATUS       current
  DESCRIPTION
    "Nagios service notifications extends the nagiosSvcEnevtsTable when
    a notification is generated for an event."
  INDEX { nSvcEventIndex }
  ::= { nagiosSvcNotifyTable 1}
  
  
nSvcNotifyType OBJECT-TYPE
  SYNTAX       NotifyType
  MAX-ACCESS   read-only
  STATUS       current
  DESCRIPTION
    "A string identifying the type of notification that is being sent
    (PROBLEM, RECOVERY, ACKNOWLEDGEMENT, FLAPPINGSTART or FLAPPINGSTOP)."
  ::= { nagiosSvcNotifyEntry 1 }

nSvcNotifyNum  OBJECT-TYPE
  SYNTAX       Integer32
  MAX-ACCESS   read-only
  STATUS       current
  DESCRIPTION
    "The current notification number for the service or host. The notification
    number increases by one (1) each time a new notification is sent out for a
    host or service (except for acknowledgements). The notification number is
    reset to 0 when the host or service recovers (after the recovery
    notification has gone out). Acknowledgements do not cause the notification
    number to increase."
  ::= { nagiosSvcNotifyEntry 2 }

nSvcAckAuthor  OBJECT-TYPE
  SYNTAX       OCTET STRING
  MAX-ACCESS   read-only
  STATUS       current
  DESCRIPTION
    "A string containing the name of the user who acknowledged the service
    problem. This object is only valid in notifications where the
    nSvcNotifyType object is set to ACKNOWLEDGEMENT."
  ::= { nagiosSvcNotifyEntry 3 }

nSvcAckComment OBJECT-TYPE
  SYNTAX       OCTET STRING
  MAX-ACCESS   read-only
  STATUS       current
  DESCRIPTION
    "A string containing the acknowledgement comment that was entered by the
    user who acknowledged the service problem.  This object is only valid in
    notifications where the nSvcNotifyType object is set to ACKNOWLEDGEMENT."
  ::= { nagiosSvcNotifyEntry 4 }
    

--
-- Events and Notifications
--

nHostEvent  NOTIFICATION-TYPE
  OBJECTS { nHostname, nHostStateID, nHostStateType, nHostAttempt,
            nHostDurationSec, nHostGroupName, nHostLastCheck, nHostLastChange, 
            nHostOutput }
  STATUS  current
  DESCRIPTION
    "The SNMP trap that is generated as a result of an event with the host
    in Nagios."

  ::= { nagiosNotify 5 }

nHostNotify NOTIFICATION-TYPE
  OBJECTS { nHostNotifyType, nHostNotifyNum, nHostAckAuthor, nHostAckComment,
            nHostname, nHostStateID, nHostStateType, nHostAttempt,
            nHostDurationSec, nHostGroupName, nHostLastCheck, nHostLastChange,
            nHostOutput  }
  STATUS  current
  DESCRIPTION
    "The SNMP trap that is generated as a result of an event requiring
    notification for a host in Nagios."
  ::= { nagiosNotify 6 }

nSvcEvent  NOTIFICATION-TYPE
  OBJECTS { nHostname, nHostStateID, nSvcDesc, nSvcStateID, nSvcAttempt,
            nSvcDurationSec, nSvcGroupName, nSvcLastCheck, nSvcLastChange,
            nSvcOutput }
  STATUS  current
  DESCRIPTION
    "The SNMP trap that is generated as a result of an event with the service
    in Nagios."

  ::= { nagiosNotify 7 }

nSvcNotify NOTIFICATION-TYPE
  OBJECTS { nSvcNotifyType, nSvcNotifyNum, nSvcAckAuthor, nSvcAckComment,
            nHostname, nHostStateID, nSvcDesc, nSvcStateID, nSvcAttempt,
            nSvcDurationSec, nSvcGroupName, nSvcLastCheck, nSvcLastChange,
            nSvcOutput }
  STATUS  current
  DESCRIPTION
    "The SNMP trap that is generated as a result of an event requiring
    notification for a service in Nagios."
  ::= { nagiosNotify 8 }


END


More information about the Devel mailing list