Table Of Contents

Previous topic

Manifest DTD

The asagent MIBs

This section includes the asagent-specific MIB files. Some of the MIBS Abilisoft have defined underpin main MIBS of interest. The diligent user of asagent will review these MIBS for a complete understanding of any MIBS they will use however it is not essential. The main MIBS of interest include:

  • ASA-HOST-MIB - Provides data related to general host health and includes metrics like system uptime, CPU, memory and swap usage, used disk space and process count.
  • ASA-STORE-MIB - Provides a view of the agent’s internal data store as a set of MIB tables. Using these tables one can see the sample data gathered by the monitoring engine, the observations made by the analysis engine and actions taken by the notification engine.

AS-ROOT-MIB

-- -*- mode: snmpv2 -*-
AS-ROOT-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-IDENTITY, OBJECT-TYPE, enterprises
        FROM SNMPv2-SMI
    OBJECT-GROUP, MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    DisplayString
        FROM SNMPv2-TC;

asRootMIB MODULE-IDENTITY
    LAST-UPDATED        "201111040000Z"
    ORGANIZATION        "Abilisoft Ltd."
    CONTACT-INFO
        "Contact:   development@abilisoft.com

        Editor:     Floris Bruynooghe
                    Abilisoft Ltd.
        Postal:     9 Doolittle Mill
                    Froghall Road
                    Ampthill
                    Bedfordshire
                    MK45 2ND
                    United Kingdom
        EMail:      floris@abilisoft.com
        Phone:      +44 (0) 7909 624 322"
    DESCRIPTION
        "The global registration module for Abilisoft.

        Copyright (C) 2011 Abilisoft Ltd.
        http://abilisoft.com"
    REVISION           "201111040000Z"
    DESCRIPTION
        "Rev 0.1    07 Nov 2011
        Initial alpha version."
    ::= { asModules 1 }


abilisoft OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The root of the OID sub-tree assigned to Abilisoft Ltd. by
        the Internet Assigned Numbers Authority (IANA)."
    ::= { enterprises 26788 }


historic OBJECT-IDENTITY
    STATUS      obsolete
    DESCRIPTION
        "This subtree has been used in the past without any
        registration.  To avoid possible conflicts it should not be
        used and no registrations should be made."
    ::= { abilisoft 1 }


asHelloWorld OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A simple scalar test value who's instance contains 'Hello World'"
    ::= { abilisoft 2 }


asReg OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "Sub-tree for registrations"
    ::= { abilisoft 3 }


asModules OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "Sub-tree for module registrations"
    ::= { asReg 1 }


asGeneric OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "Sub-tree for common object and event definitions"
    ::= { abilisoft 4 }


asProducts OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "Sub-tree for specific object and event definitions"
    ::= { abilisoft 5 }

-- This OID is just reserved for asagent which is in asExperimental
-- for now.
asagent OBJECT IDENTIFIER ::= { asProducts 1 }


asCaps OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "Sub-tree for agent profiles"
    ::= { abilisoft 6 }


asReqs OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "Sub-tree for management application requirements"
    ::= { abilisoft 7 }


asExperimental OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "Sub-tree for experimental definitions"
    ::= { abilisoft 8 }


asCustomers OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The root of the OID sub-tree reserved for customers to use

        Abilisoft itself won't register any OIDs in this subtree so
        customers are free to create their own registrations for event
        notfications or otherwise.  They must be aware however that
        this is not an official registration and other sites may have
        conflicting registrations.  So it is clearly desirable for
        customers to get their own enterprise OID from IANA instead."
    ::= { abilisoft 200 }


-- The Compliance Statements
-- =========================

asRootConformances      OBJECT IDENTIFIER ::= { asRootMIB 1 }

asRootGroups            OBJECT IDENTIFIER ::= { asRootConformances 1 }
asRootCompliances       OBJECT IDENTIFIER ::= { asRootConformances 2 }


asRootTestGroup OBJECT-GROUP
    OBJECTS     { asHelloWorld }
    STATUS      current
    DESCRIPTION
        "Group for test objects"
    ::= { asRootGroups 1 }

asRootCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "Basic asRootModule compliance"
    MODULE
        GROUP   asRootTestGroup
        DESCRIPTION
            "Since this group only contains test objects, it is optional"
    ::= { asRootCompliances 1 }


END

AS-SNMPREG-MIB

-- -*- mode: snmpv2 -*-
AS-SNMPREG-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-IDENTITY
        FROM SNMPv2-SMI

    abilisoft, asReg, asModules
        FROM AS-ROOT-MIB;

asSnmpRegMIB MODULE-IDENTITY
    LAST-UPDATED "201111040000Z"
    ORGANIZATION "Abilisoft Ltd."
    CONTACT-INFO
            "Contact:    development@abilisoft.com

             Editor:     Floris Bruynooghe
                         Abilisoft Ltd.
             postal:     9 Doolittle Mill
                         Froghall Road
                         Ampthill
                         Bedfordshire
                         MK45 2ND
                         United Kingdom
             EMail:      floris@abilisoft.com
             phone:      +44 (0) 7909 624 322"

    DESCRIPTION
            "The MIB module for Abilisoft SNMP related OID registrations

            SNMP related protocols require various OIDs as
            identifications, e.g. in the mib2.sysObjectID type or in
            agentx-Open PDUs.

            Copyright (C) 2011 Abilisoft Ltd.
            http://abilisoft.com"
    REVISION      "201111040000Z"
    DESCRIPTION
            "Rev 0.1    24 Oct 2011
             Initial alpha version."
    ::= { asModules 2 }


snmpReg OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The root of the OID sub-tree used to identify abilisoft
        entities for SNMP.  These identities might be used in
        e.g. mib2.sysObjectID or agentx-Open PDUs etc.

        This sub-tree should really have been rooted in asReg but was
        already defined here before that structure was in place."
    REFERENCE
        "See RFC 1213 for mib2, RFC 2741 for AgentX."
    ::= { asReg 2 }


snmpRegOld OBJECT-IDENTITY
    STATUS      deprecated
    DESCRIPTION
        "This is an old location for the snmpReg sub-tree, it should
        no longer be used for new identities."
    REFERENCE
        "See the snmpReg sub-tree"
    ::= { abilisoft 100 }


-- Our wiki defines snmpReg.100.1-16,255 for different platforms, not
-- sure if they are used however so just leave those unregistered for
-- now.
snmpRegAgentOids OBJECT IDENTIFIER ::= { snmpRegOld 100 }


snmpRegDefaultTrapOid OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "This is an OID identifying the default trap OID used by
        asagent.  It is recommended to use more specific OIDs which
        have a useful meaning registered as trap OID however."
    REFERENCE
        "See appendix D.1 of the Abilisoft Monitoring Agent Technical
        Guide which describes trap actions.  See also the standards
        defining SNMP notifications."
    ::= { snmpRegOld 200 }

END

ASA-ROOT-MIB

-- -*- mode: snmpv2 -*-
ASA-ROOT-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-IDENTITY
        FROM SNMPv2-SMI

    asModules, asExperimental
        FROM AS-ROOT-MIB;

asagentMIB MODULE-IDENTITY
    LAST-UPDATED        "201111140000Z"
    ORGANIZATION        "Abilisoft Ltd."
    CONTACT-INFO
        "Contact:   development@abilisoft.com

        Editor:     Floris Bruynooghe
                    Abilisoft Ltd.
        Postal:     9 Doolittle Mill
                    Froghall Road
                    Ampthill
                    Bedfordshire
                    MK45 2ND
                    United Kingdom
        EMail:      floris@abilisoft.com
        Phone:      +44 (0) 7909 624 322"
    DESCRIPTION
        "Root MIB module to for asagent

        Copyright (C) 2011 Abilisoft Ltd.
        http://abilisoft.com"

    REVISION            "201111140000Z"
    DESCRIPTION

        "Rev 0.2    14 Nov 2011

        Addition of the asaHost group.  The OID of asaStore group was
        changed."

    REVISION            "201111070000Z"
    DESCRIPTION
        "Rev 0.1    07 Nov 2011

        Initial alpha version."
    ::= { asModules 3 }


-- Root

asagent OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for asagent"
    ::= { asExperimental 1 }


-- The asaReg subtree is for asagent-specific registrations.
--
-- ??-FB: At the moment I'm not sure if these should have their own
--        subtree or not.  But this seems to make sense.

asaReg OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for asagent-specific registrations and identities"
    ::= { asagent 1 }


asaCfg OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree containing asagent configuration"
    ::= { asagent 2 }


asaHost OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The root of the OID sub-tree for asagent-specific host information

        This sub-tree provides convenient access to generic
        host-related information.  Some of this might also be
        available from the IETF's HOST-RESOURCES-MIB but is still
        included here for convenience.  Most objects will be useful
        information not covered by the HOST-RESOURCES-MIB."
    ::= { asagent 10 }


asaStore OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The root of the OID sub-tree for access to the asagent store

        This sub-tree allows you to access the monitoring data
        collected by asagent via various tables."
    ::= { asagent 50 }


END

ASA-TC-MIB

-- -*- mode: snmpv2 -*-
ASA-TC-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    asModules
        FROM AS-ROOT-MIB;

asaTcMIB MODULE-IDENTITY
    LAST-UPDATED        "201112060000Z"
    ORGANIZATION        "Abilisoft Ltd."
    CONTACT-INFO
        "Contact:   development@abilisoft.com

        Editor:     Floris Bruynooghe
                    Abilisoft Ltd.
        Postal:     9 Doolittle Mill
                    Froghall Road
                    Ampthill
                    Bedfordshire
                    MK45 2ND
                    United Kingdom
        EMail:      floris@abilisoft.com
        Phone:      +44 (0) 7909 624 322"
    DESCRIPTION
        "MIB module for asagent textual conventions

        Copyright (C) 2011 Abilisoft Ltd.
        http://abilisoft.com"

    REVISION            "201112060000Z"
    DESCRIPTION
        "Rev 0.1    06 Dec 2011

        Initial alpha version."
    ::= { asModules 8 }


ManifestName ::= TEXTUAL-CONVENTION
    DISPLAY-HINT        "255a"
    STATUS              current
    DESCRIPTION
        "A name to be used in the asagent manifest

        There are various elements which use a *name* attribute in the
        manifest, e.g. <Component/>, <Monitor/>, <Observation/>,
        <Trap/> etc.  This textual convention specifies what
        characters you can use in those names.

        A name must conform to the following regular expression:

           [a-zA-Z_][a-zA-Z0-9_]{0,48}

        That means only ASCII letters, numbers and the underscore can
        be used but it must not start with a number.  The minimum
        length is 1 character and maximum length is 49 characters."
    SYNTAX      OCTET STRING (SIZE (1..50))


-- QualifiedManifestName ::= TEXTUAL-CONVENTION
--     DISPLAY-HINT        "255a"
--     STATUS              current
--     DESCRIPTION
--         "A qualified name of asagent manifest items

--         This is most commonly used for referring to a specific
--         monitor.  The qualified name of a monitor is the ManifestName
--         of it's component joined with the ManifestName of the monitor
--         itself using a dot.  E.g. with <Component name='ssh'/> and
--         <Monitor name='sshd'/> the qualified name would be
--         'ssh.sshd'."
--     SYNTAX  OCTET STRING (SIZE (1..100))


END

ASA-REG-MIB

-- -*- mode: snmpv2 -*-
ASA-REG-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-IDENTITY
        FROM SNMPv2-SMI
    asModules
        FROM AS-ROOT-MIB
    asaReg
        FROM ASA-ROOT-MIB;

asaRegMIB MODULE-IDENTITY
    LAST-UPDATED        "201111070000Z"
    ORGANIZATION        "Abilisoft Ltd."
    CONTACT-INFO
        "Contact:   development@abilisoft.com

        Editor:     Floris Bruynooghe
                    Abilisoft Ltd.
        Postal:     9 Doolittle Mill
                    Froghall Road
                    Ampthill
                    Bedfordshire
                    MK45 2ND
                    United Kingdom
        EMail:      floris@abilisoft.com
        Phone:      +44 (0) 7909 624 322"
    DESCRIPTION
        "MIB module for asagent registrations

        Copyright (C) 2011 Abilisoft Ltd.
        http://abilisoft.com"
    REVISION           "201111070000Z"
    DESCRIPTION
        "Rev 0.1    07 Nov 2011
        Initial alpha version."
    ::= { asModules 5 }



-- SNMP Identities
-- ===============

asaRegSnmp OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for SNMP related identities"
    ::= { asaReg 1 }


asaRegAsagent OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The Abilisoft asagent Monitoring Agent"
    ::= { asaRegSnmp 1 }


-- Monitor Types
-- =============
--
-- The monitors are split up in several sub-trees based on the middle
-- part of their full dotted name.  E.g. asagent.cpu.cpuUsage has
-- "cpu" as middle part.  First we register all the sub-trees, then we
-- register the actual monitors.

asaRegMonitors OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for asagent monitor-type registrations"
    ::= { asaReg 10 }


-- Monitor Sub-trees
-- ~~~~~~~~~~~~~~~~~
--
-- The sub-trees are used to group the monitors by family.  The name
-- is made of "asaRegMonType" where Type is a name describing the
-- family (and family is the middle part of the full dotted name of a
-- monitor).

asaRegMonGeneric OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for generic monitors

        These are the monitors with 'mon' in their middle part."
    ::= { asaRegMonitors 1 }

asaRegMonMemory OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for memory related monitors

        These are the monitors with 'mem' in their middle part."
    ::= { asaRegMonitors 2 }

asaRegMonCpu OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for CPU related monitors"
    ::= { asaRegMonitors 3 }

asaRegMonDisk OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for disk related monitors"
    ::= { asaRegMonitors 4 }

asaRegMonNet OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for network related monitors"
    ::= { asaRegMonitors 5 }

asaRegMonSnmp OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for SNMP related monitors"
    ::= { asaRegMonitors 6 }


-- The Monitor Types
-- ~~~~~~~~~~~~~~~~~
--
-- The identifiers are basically "asaMon" followed by the last
-- component of the full monitor name, which happens to be unique
-- enough.  They should be part of the correct sub-tree depending on
-- the leading part of the full monitor name however, one of the
-- asaRegMon* OIDs defined above.

asaMonCpuUsage OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.cpu.cpuUsage monitor type"
    ::= { asaRegMonCpu 1 }

asaMonLoadAvg OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.cpu.loadAvg monitor type"
    ::= { asaRegMonCpu 2 }

asaMonDiskIO OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.disk.diskIO monitor type"
    ::= { asaRegMonDisk 1 }

asaMonDiskUsage OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.disk.diskUsage monitor type"
    ::= { asaRegMonDisk 2 }

asaMonBufferCache OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mem.bufferCache monitor type"
    ::= { asaRegMonMemory 5 }

asaMonMemUsage OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mem.memUsage monitor type"
    ::= { asaRegMonMemory 6 }

asaMonSwapUsage OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mem.swapUsage monitor type"
    ::= { asaRegMonMemory 7 }

asaMonDbMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.dbMonitor monitor type"
    ::= { asaRegMonGeneric 1 }

asaMonDirMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.dirMonitor monitor type"
    ::= { asaRegMonGeneric 2 }

asaMonEsxFolderMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.esxFolderMonitor monitor type"
    ::= { asaRegMonGeneric 3 }

asaMonEsxHostInfoMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.esxHostInfoMonitor monitor type"
    ::= { asaRegMonGeneric 4 }

asaMonEsxHostMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.esxHostMonitor monitor type"
    ::= { asaRegMonGeneric 5 }

asaMonEsxServiceMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.esxServiceMonitor monitor type"
    ::= { asaRegMonGeneric 6 }

asaMonFileMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.fileMonitor monitor type"
    ::= { asaRegMonGeneric 7 }

asaMonHeartbeat OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.heartbeat monitor type"
    ::= { asaRegMonGeneric 8 }

asaMonHttpMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.httpMonitor monitor type"
    ::= { asaRegMonGeneric 9 }

asaMonIfStats OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.ifStats monitor type"
    ::= { asaRegMonGeneric 10 }

asaMonLogMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.logMonitor monitor type"
    ::= { asaRegMonGeneric 11 }

asaMonMultiProcessMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.multiProcessMonitor monitor type"
    ::= { asaRegMonGeneric 12 }

asaMonOidGet OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.oidGet monitor type"
    ::= { asaRegMonGeneric 13 }

asaMonOidWalk OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.oidWalk monitor type"
    ::= { asaRegMonGeneric 14 }

asaMonOsCmd OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.osCmd monitor type"
    ::= { asaRegMonGeneric 15 }

asaMonPeerMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.peerMonitor monitor type"
    ::= { asaRegMonGeneric 16 }

asaMonProcessMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.processMonitor monitor type"
    ::= { asaRegMonGeneric 17 }

asaMonSelfMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.selfMonitor monitor type"
    ::= { asaRegMonGeneric 18 }

asaMonSnmpGet OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.snmpGet monitor type"
    ::= { asaRegMonGeneric 19 }

asaMonSystemInfo OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.systemInfo monitor type"
    ::= { asaRegMonGeneric 20 }

asaMonWinEventLogMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.winEventLogMonitor monitor type"
    ::= { asaRegMonGeneric 21 }

asaMonWmiMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.wmiMonitor monitor type"
    ::= { asaRegMonGeneric 22 }

asaMonXenHostInfoMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.xenHostInfoMonitor monitor type"
    ::= { asaRegMonGeneric 23 }

asaMonXenHostMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.xenHostMonitor monitor type"
    ::= { asaRegMonGeneric 24 }

asaMonXenPoolMonitor OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.mon.xenPoolMonitor monitor type"
    ::= { asaRegMonGeneric 25 }

asaMonIcmp OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.net.icmp monitor type"
    ::= { asaRegMonNet 1 }

-- The agent.snmp.* monitors break the naming rule slightly since they
-- are not clear enough otherwise.  So they all start with asaMonSnmp
-- and are then followed by their basename.

asaMonSnmpDisk OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.snmp.disk monitor type"
    ::= { asaRegMonSnmp 1 }

asaMonSnmpMem OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.snmp.mem monitor type"
    ::= { asaRegMonSnmp 2 }

asaMonSnmpProc OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.snmp.proc monitor type"
    ::= { asaRegMonSnmp 3 }

asaMonSnmpSysinfo OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.snmp.sysinfo monitor type"
    ::= { asaRegMonSnmp 4 }

asaMonSnmpVmem OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The agent.snmp.vmem monitor type"
    ::= { asaRegMonSnmp 5 }


-- Facet Types
-- ===========
--
-- The identifiers are named "asaTypeFacet" where Type is the name of
-- the facet type.

asaRegFacets OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for asagent facet-type registrations"
    ::= { asaReg 11 }

asaBoolFacet OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "This denotes a boolean facet

        It's assosciated value is encoded as the ASCII character 0 or
        1.

        bool ::= '0' | '1' "
    ::= { asaRegFacets 1 }

asaIntFacet OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "This denotes an integer facet

        An integer can be both negative and positive, it is encoded as
        an ASCII string containing one or more digits and optionally a
        leading minus character.

        int ::= '-'? [0-9]+"
    ::= { asaRegFacets 2 }

asaFloatFacet OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "This denotes a floating point facet

        A floating point can be both negative and positive, it is
        encoded as an ASCII string containing digits, a period and an
        optionally leading minus sign.

        float ::= '-'? [0-9]+ '.' [0-9]"
    ::= { asaRegFacets 3 }

asaStringFacet OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "This denotes a string facet

        A string is UTF-8 encoded, just like the SnmpAdminString
        textual convention in the SNMP-FRAMEWORK-MIB."
    ::= { asaRegFacets 4 }


-- Test Types
-- ==========

asaRegTests OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for asagent test-type registrations"
    ::= { asaReg 12 }


-- Action Types
-- ============
--
-- The identifiers of actions should be "asaNameAction" where Name is
-- the name of the action.

asaRegActions OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree for asagent action-type registrations"
    ::= { asaReg 13 }

asaTrapAction OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The trap action type"
    ::= { asaRegActions 1 }

asaSmtpAction OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The smtp action type"
    ::= { asaRegActions 2 }

asaCmdAction OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The cmd action type"
    ::= { asaRegActions 3 }

asaControlAction OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The control action type"
    ::= { asaRegActions 4 }

asaNotifyAction OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The notify action type"
    ::= { asaRegActions 5 }


END

ASA-STORE-MIB

-- -*- mode: snmpv2 -*-
ASA-STORE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Unsigned32
        FROM SNMPv2-SMI
    OBJECT-GROUP, MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    DisplayString, DateAndTime, TruthValue
        FROM SNMPv2-TC
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    asModules
        FROM AS-ROOT-MIB
    ManifestName
        FROM ASA-TC-MIB
    asaStore
        FROM ASA-ROOT-MIB;

asaStoreMIB MODULE-IDENTITY
    LAST-UPDATED        "201204230000Z"
    ORGANIZATION        "Abilisoft Ltd."
    CONTACT-INFO
        "Contact:   development@abilisoft.com

        Editor:     Floris Bruynooghe
                    Abilisoft Ltd.
        Postal:     9 Doolittle Mill
                    Froghall Road
                    Ampthill
                    Bedfordshire
                    MK45 2ND
                    United Kingdom
        EMail:      floris@abilisoft.com
        Phone:      +44 (0) 7909 624 322"
    DESCRIPTION
        "MIB module to expose the asagent store

        Copyright (C) 2011-2012 Abilisoft Ltd.
        http://abilisoft.com"

    REVISION            "201204230000Z"
    DESCRIPTION
        "Rev 0.2    23 Apr 2012

        * All object labels ending in Count have been renamed to their
          plural instead.  This is more in line with MIB conventions.

        * Component and monitor names can not be empty strings."

    REVISION            "201111070000Z"
    DESCRIPTION
        "Rev 0.1    07 Nov 2011
        Initial alpha version.

        This has basic sample, observation and action tables."

    ::= { asModules 4 }


-- The Local Root
-- ==============
-- 
-- This is actually imported from ASA-ROOT-MIB, just here for your
-- convenience.

-- asaStore OBJECT-IDENTITY
--     STATUS      current
--     DESCRIPTION
--         "The root of the OID sub-tree for access to the asagent store

--         This sub-tree allows you to access the monitoring data
--         collected by asagent via various tables."
--     ::= { asagent 50 }


-- The Managed Objects
-- ===================


asaDbSize OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "bytes"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The size the asagent store takes on disk"
    ::= { asaStore 1 }
    

-- The SAMPLE table
-- ~~~~~~~~~~~~~~~~

asaSampleRows OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current row count of the SAMPLE table in the asagent store.

        This is dependent on the monitor_window runtime setting in
        asagent and the number of monitors and their periodicities."
    ::= { asaStore 2 }


asaSampleTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AsaSampleEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The SAMPLE table from the asagent store

        This table provides information on all the samples and their
        facets in the asagent store, exposing all the monitored data.
        This data is unordered and indexed by the primary key in the
        store, which will most likely be roughly chronological.

        The number of rows is also available as asaSampleRows and
        can be controlled by the monitor_windows runtime setting of
        asagent.  Note that the setting only specifies the time to keep
        samples, the amount kept will also depend on the number of
        monitors configured and their periodicities."
    ::= { asaStore 3 }

asaSampleEntry OBJECT-TYPE
    SYNTAX      AsaSampleEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the sample table of asagent.  Each row denotes a
        facet in a sample with the type and value.  Managers can only
        read rows in this table and not create any."
    INDEX       { asaSampleIndex }
    ::= { asaSampleTable 1 }

AsaSampleEntry ::= SEQUENCE {
    asaSampleIndex      Unsigned32,
    asaSampleComponent  ManifestName,
    asaSampleMonitor    ManifestName,
    asaSampleType       OBJECT IDENTIFIER,
    asaSampleSampleId   Unsigned32,
    asaSampleSubId      DisplayString,
    asaSampleTimestamp  DateAndTime,
    asaSampleFacetName  DisplayString,
    asaSampleFacetValue OCTET STRING,
    asaSampleFacetType  OBJECT IDENTIFIER
}

asaSampleIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A value greater than zero for each row in the sample table.
        These are the primary keys in the database and will generally
        be assigned in chronological order."
    ::= { asaSampleEntry 1 }

asaSampleComponent OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The component name of the monitor that took the sample
        containing this facet."
    ::= { asaSampleEntry 2 }

asaSampleMonitor OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the monitor which took the sample containing this
        facet."
    ::= { asaSampleEntry 3 }

asaSampleType OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of the monitor which created this sample

        The possible values are sub-OIDs of the asaRegMonitors OID in
        the ASA-REG-MIB."
    ::= { asaSampleEntry 4 }

asaSampleSampleId OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The ID of the sample this facet is part of

        The rows in this table each represent a facet in a sample.
        But since one sample can have multiple facets there can be
        multiple rows originating from the same sample.  This object
        specifies the ID of the sample this row belongs to."
    ::= { asaSampleEntry 5 }

asaSampleSubId OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The sample sub-id of this facet.  The sample sub-id is a
        string which can be used to create more than one sample from a
        monitor which will be treated as different monitors by the
        analysis engine.  This is required when e.g. one disk monitor
        monitors multiple disks so that when one disk full alert is
        being suppressed, the others are not suppressed with them."
    ::= { asaSampleEntry 6 }

asaSampleTimestamp OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date and time this sample was taken"
    ::= { asaSampleEntry 7 }

asaSampleFacetName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the facet."
    ::= { asaSampleEntry 8 }

asaSampleFacetValue OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of the facet.  The actual data is a string
        representation of the value according to asagent's internal
        rules.  You need to know the asaSampleFacetType to make sense
        of this value."
    ::= { asaSampleEntry 9 }

asaSampleFacetType OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of the facet value

        The possible values are sub-OIDs of the asaRegFacets OID in
        the ASA-ROOT-MIB, currently they are asaRegFacetsBool,
        asaRegFacetsInt, asaRegFacetsFloat and asaRegFacetsStrings."
    ::= { asaSampleEntry 10 }


-- The OBSERVATION table
-- ~~~~~~~~~~~~~~~~~~~~~

asaObsRows OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current row count of the OBSERVATION table in the asagent store.

        This is dependent on the analysis_window runtime setting in
        asagent and the number of monitors and their periodicities."
    ::= { asaStore 4 }


asaObsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AsaObsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The OBSERVATION table from the asagent store

        This table provides information on all the observations.

        The number of rows is also available as asaObsRows and can
        be controlled by the analysis_window runtime setting of
        asagent.  Note that the setting only specifies the time to
        keep observations, the amount kept will also depend on the
        number of observations made."
    ::= { asaStore 5 }

asaObsEntry OBJECT-TYPE
    SYNTAX      AsaObsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the observation table of asagent.  Each row will
        contain the observation details, timestamp and processed
        flag."
    INDEX       { asaObsIndex }
    ::= { asaObsTable 1 }

AsaObsEntry ::= SEQUENCE {
    asaObsIndex         Unsigned32,
    asaObsSampleId      Unsigned32,
    asaObsComponent     ManifestName,
    asaObsMonitor       ManifestName,
    asaObsObservation   ManifestName,
    asaObsTimestamp     DateAndTime,
    asaObsMessage       SnmpAdminString,
    asaObsProcessed     TruthValue
}

asaObsIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A value greater than zero for each row in the observation
        table.  These are the primary keys in the database and will
        generally be assigned in chronological order."
    ::= { asaObsEntry 1 }

asaObsSampleId OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The ID of the sample this observation was created for.  This
        ID can be used as value of asaSampleIndex to look up the
        sample in the asaSampleTable."
    ::= { asaObsEntry 2 }

asaObsComponent OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The component name of the sample this observation was created
        for."
    ::= { asaObsEntry 3 }

asaObsMonitor OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The monitor name of the sample this observation was created
        for."
    ::= { asaObsEntry 4 }

asaObsObservation OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the observation."
    ::= { asaObsEntry 5 }

asaObsTimestamp OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time when this observation was created."
    ::= { asaObsEntry 6 }

asaObsMessage OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The message associated with the observation."
    ::= { asaObsEntry 7 }

asaObsProcessed OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A flag indicating whether the observation has been processed
        by the notification engine.  When the notification engine
        starts up it will collect all unprocessed notifications."
    ::= { asaObsEntry 8 }


-- The ACTION table
-- ~~~~~~~~~~~~~~~~

asaActionRows OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current row count of the ACTION table in the asagent store.

        This is dependent on the analysis_window runtime setting in
        asagent and the number of monitors and their periodicities."
    ::= { asaStore 6 }


asaActionTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AsaActionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The ACTION table from the asagent store

        This table contains all the actions which have been executed
        by asagent.

        The number or rows is also available as asaActionRows and
        can be controlled by the analysis_window runtime setting.
        However it will also depend on the number of monitors,
        observers and actions defined and how many observations are
        made."
    ::= { asaStore 7 }

asaActionEntry OBJECT-TYPE
    SYNTAX      AsaActionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row in the action table of asagent.  Each row will contain
        the observation ID, the action and a timestamp when the action
        was taken.."
    INDEX       { asaActionIndex }
    ::= { asaActionTable 1 }

AsaActionEntry ::= SEQUENCE {
    asaActionIndex              Unsigned32,
    asaActionObsId              Unsigned32,
    asaActionSampleId           Unsigned32,
    asaActionComponent          ManifestName,
    asaActionMonitor            ManifestName,
    asaActionObservation        ManifestName,
    asaActionAction             ManifestName,
    asaActionTimestamp          DateAndTime,
    asaActionType               OBJECT IDENTIFIER,
    asaActionSuccess            TruthValue
}

asaActionIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A value greater than zero for each row in the action table.
        These are the primary keys in the database and will generally
        be assigned in chronological order."
    ::= { asaActionEntry 1 }

asaActionObsId OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of the observation which resulted in this action.
        This value can be used as asaObsIndex to retrieve the
        observation from the asaObsTable."
    ::= { asaActionEntry 2 }

asaActionSampleId OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of the sample which resulted in this action.  This
        value can be used as asaSampleIndex to retrieve the sample
        from the asaSampleTable."
    ::= { asaActionEntry 3 }

asaActionComponent OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the component in which this action was defined."
    ::= { asaActionEntry 4 }

asaActionMonitor OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the monitor in which this action was defined."
    ::= { asaActionEntry 5 }

asaActionObservation OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the observation for which the action was taken.
        This is also the name of the observation in which this action
        was defined."
    ::= { asaActionEntry 6 }

asaActionAction OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the action definition which gave rise to this
        action."
    ::= { asaActionEntry 7 }

asaActionTimestamp OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time when this action was executed."
    ::= { asaActionEntry 8 }

-- ??-FB: Should we define a Textual Convention for this?  Currently I
--        don't think so, when we are using those asaRegActions OIDs
--        in other places I might change my mind.
asaActionType OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of action

        The possible OIDs are sub-OIDs of the asaRegActions OID.
        Currently they are asaRegActionsTrap, asaRegActionsSmtp,
        asaRegActionsCmd, asaRegActionsControl and
        asaRegActionsNotify"

    ::= { asaActionEntry 9 }

asaActionSuccess OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A flag whether or not the action was successfully executed."
    ::= { asaActionEntry 10 }


-- Alternative Sample Table View
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
-- This view is indexed by component and monitor name but provides the
-- same samples as the basic asaSampleTable.


asaSampleViewTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AsaSampleViewEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An alternative view of the asaSampleTable

        The main difference is that this view uses a different
        indexing scheme which allows you to walk samples for a
        particular monitor based on the component, monitor name and
        sample ID.

        The number of rows is the same as for asaSampleTable and can
        thus be retrieved from asaSampleRows."
    ::= { asaStore 11 }

asaSampleViewEntry OBJECT-TYPE
    SYNTAX      AsaSampleViewEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry into the asaSampleViewTable

        Each row denotes a facet in a sample taken by a monitor.
        Managers can only read rows and not create any."
    INDEX       { asaSampleViewComponent, asaSampleViewMonitor,
                  asaSampleViewSampleId, asaSampleViewIndex }
    ::= { asaSampleViewTable 1 }

AsaSampleViewEntry ::= SEQUENCE {
    asaSampleViewComponent      ManifestName,
    asaSampleViewMonitor        ManifestName,
    asaSampleViewSampleId       Unsigned32,
    asaSampleViewIndex          Unsigned32,
    asaSampleViewType           OBJECT IDENTIFIER,
    asaSampleViewSubId          DisplayString,
    asaSampleViewTimestamp      DateAndTime,
    asaSampleViewFacetName      DisplayString,
    asaSampleViewFacetValue     OCTET STRING,
    asaSampleViewFacetType      OBJECT IDENTIFIER
}

asaSampleViewComponent OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The component name of the monitor which created this sample

        Since this is a variable-length string which is the index of a
        table it is transformed to an OID by taking the ASCII value of
        each letter and using it as a sub-OID.  The resulting sub-OID
        then needs to be prefixed with another sub-OID which indicates
        the length of the name/OID."
    ::= { asaSampleViewEntry 1 }

asaSampleViewMonitor OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The name of the monitor which created this sample

        Since this is a variable-length string which is the index of a
        table it is transformed to an OID by taking the ASCII value of
        each letter and using it as a sub-OID.  The resulting sub-OID
        then needs to be prefixed with another sub-OID which indicates
        the length of the name/OID."
    ::= { asaSampleViewEntry 2 }

asaSampleViewSampleId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The sample ID this row is part of

        Each entry in this table denotes a facet of a sample.  This
        index represents the sampleid of the sample this facet belongs
        too."
    ::= { asaSampleViewEntry 3 }

asaSampleViewIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this row in the asaSampleTable

        This is also the facetid internally in asagent"
    ::= { asaSampleViewEntry 4 }

asaSampleViewType OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of the monitor which created this sample

        The possible values are sub-OIDs of the asaRegMonitors OID in
        the ASA-REG-MIB."
    ::= { asaSampleViewEntry 5 }

asaSampleViewSubId OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The sample sub-id of this sample

        The sample sub-id is a string which can be used to create more
        than one sample from a monitor which will be treated as
        different monitors by the analysis engine.  This is required
        when e.g. one disk monitor monitors multiple disks so that
        when one disk full alert is being suppressed, the others are
        not suppressed with them."
    ::= { asaSampleViewEntry 6 }

asaSampleViewTimestamp OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date and time this sample was taken"
    ::= { asaSampleViewEntry 7 }

asaSampleViewFacetName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the facet"
    ::= { asaSampleViewEntry 8 }

asaSampleViewFacetValue OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of the facet

        The actual data is a string representation of the value
        according to asagent's internal rules.  You need to know the
        asaSampleFacetType to make sense of this value."
    ::= { asaSampleViewEntry 9 }

asaSampleViewFacetType OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of the facet value

        The possible values are sub-OIDs of the asaRegFacets OID in
        the ASA-ROOT-MIB, currently they are asaRegFacetsBool,
        asaRegFacetsInt, asaRegFacetsFloat and asaRegFacetsStrings."
    ::= { asaSampleViewEntry 10 }


-- Alternative Observation Table View
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
-- This view is indexed by component name, monitor name, sample ID and
-- observation ID but provides the same observation information as the
-- basic asaObsTable.

asaObsViewTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AsaObsViewEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An alternative view of the asaObsTable

        The main difference is that this view uses a different
        indexing scheme which allows you to walk observations
        based on the component name, monitor name, sample ID and
        observation ID.

        The number of rows is the same as for asaObsTable and can thus
        be retrieved from asaObsRows."
    ::= { asaStore 12 }

asaObsViewEntry OBJECT-TYPE
    SYNTAX      AsaObsViewEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry into the asaObsViewTable

        Each row denotes an observation.  Managers can only read rows
        and not create any."
    INDEX       { asaObsViewComponent, asaObsViewMonitor,
                  asaObsViewSampleId, asaObsViewIndex }
    ::= { asaObsViewTable 1 }

AsaObsViewEntry ::= SEQUENCE {
    asaObsViewComponent      ManifestName,
    asaObsViewMonitor        ManifestName,
    asaObsViewSampleId       Unsigned32,
    asaObsViewIndex          Unsigned32,
    asaObsViewObservation    ManifestName,
    asaObsViewTimestamp      DateAndTime,
    asaObsViewMessage        SnmpAdminString,
    asaObsViewProcessed      TruthValue
}

asaObsViewComponent OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The component name of the monitor whose sample gave rise to
        the observation.

        Since this is a variable-length string which is the index of a
        table it is transformed to an OID by taking the ASCII value of
        each letter and using it as a sub-OID.  The resulting sub-OID
        then needs to be prefixed with another sub-OID which indicates
        the length of the name/OID."
    ::= { asaObsViewEntry 1 }

asaObsViewMonitor OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The name of the monitor whose sample gave rise to the 
        observation.

        Since this is a variable-length string which is the index of a
        table it is transformed to an OID by taking the ASCII value of
        each letter and using it as a sub-OID.  The resulting sub-OID
        then needs to be prefixed with another sub-OID which indicates
        the length of the name/OID."
    ::= { asaObsViewEntry 2 }

asaObsViewSampleId OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The sample ID of the sample that gave rise to the
        observation.

        Each entry in this table represents an observation raised and
        this index represents the responsible sample."
    ::= { asaObsViewEntry 3 }

asaObsViewIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this row in the asaObsTable"
    ::= { asaObsViewEntry 4 }

asaObsViewObservation OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the observation."
    ::= { asaObsViewEntry 5 }

asaObsViewTimestamp OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date and time this observation was raised."
    ::= { asaObsViewEntry 6 }

asaObsViewMessage OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The message associated with the observation."
    ::= { asaObsViewEntry 7 }

asaObsViewProcessed OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A flag indicating whether the observation has been processed
        by the notification engine.  When the notification engine
        starts up it will collect all unprocessed notifications."
    ::= { asaObsViewEntry 8 }


-- Alternative Action Table View
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
-- This view is indexed by component name, monitor name, sample ID,
-- observation ID and action ID  but provides the same action data
-- as the basic asaActionTable.

asaActionViewTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AsaActionViewEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An alternative view of the asaActionTable

        The main difference is that this view uses a different
        indexing scheme which allows you to walk actions
        based on the component name, monitor name, sample ID,
        observation ID and action ID.

        The number of rows is the same as for asaActionTable and can thus
        be retrieved from asaActionRows."
    ::= { asaStore 13 }

asaActionViewEntry OBJECT-TYPE
    SYNTAX      AsaActionViewEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry into the asaActionViewTable

        Each row denotes an action.  Managers can only read rows 
        and not create any."
    INDEX       { asaActionViewComponent, asaActionViewMonitor,
                  asaActionViewSampleId, asaActionViewObsId, 
                  asaActionViewIndex }
    ::= { asaActionViewTable 1 }

AsaActionViewEntry ::= SEQUENCE {
    asaActionViewComponent      ManifestName,
    asaActionViewMonitor        ManifestName,
    asaActionViewSampleId       Unsigned32,
    asaActionViewObsId          Unsigned32,
    asaActionViewIndex          Unsigned32,
    asaActionViewAction         ManifestName,
    asaActionViewTimestamp      DateAndTime,
    asaActionViewType           OBJECT IDENTIFIER,
    asaActionViewSuccess        TruthValue
}

asaActionViewComponent OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The component name of the observation that gave rise to
        the action.

        Since this is a variable-length string which is the index of a
        table it is transformed to an OID by taking the ASCII value of
        each letter and using it as a sub-OID.  The resulting sub-OID
        then needs to be prefixed with another sub-OID which indicates
        the length of the name/OID."
    ::= { asaActionViewEntry 1 }

asaActionViewMonitor OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The monitor name of the observation that gave rise to the
        action.

        Since this is a variable-length string which is the index of a
        table it is transformed to an OID by taking the ASCII value of
        each letter and using it as a sub-OID.  The resulting sub-OID
        then needs to be prefixed with another sub-OID which indicates
        the length of the name/OID."
    ::= { asaActionViewEntry 2 }

asaActionViewSampleId OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The sample ID of the sample that was ultimately responsible
        for this action.

        Each entry in this table represents an action raised and
        this index represents the responsible sample."
    ::= { asaActionViewEntry 3 }

asaActionViewObsId OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The observation ID of the observation that gave rise to
        this action.

        Each entry in this table represents an action raised and
        this index represents the responsible observation."
    ::= { asaActionViewEntry 4 }

asaActionViewIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this row in the asaActionTable"
    ::= { asaActionViewEntry 5 }

asaActionViewAction OBJECT-TYPE
    SYNTAX      ManifestName
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the action."
    ::= { asaActionViewEntry 6 }

asaActionViewTimestamp OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date and time this action was raised."
    ::= { asaActionViewEntry 7 }

asaActionViewType OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of action.

        The possible OIDs are sub-OIDs of the asaRegActions OID.
        Currently they are asaRegActionsTrap, asaRegActionsSmtp,
        asaRegActionsCmd, asaRegActionsControl and
        asaRegActionsNotify"
    ::= { asaActionViewEntry 8 }

asaActionViewSuccess OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A flag whether or not the action was successfully executed."
    ::= { asaActionViewEntry 9 }


-- XXX Consider adding a view which uses the full OID of the monitor
--     type as index.  Maybe with a secondary index of the component
--     (name or index).  This would allow you to walk a specific
--     monitor type and also walk a monitor type just in one
--     component.


-- The Events
-- ==========

-- XXX Rooting/hiding these under the module seems a bit odd.

-- asaStoreEvents OBJECT-IDENTITY
--     STATUS      current
--     DESCRIPTION
--         "The OID sub-tree for asagent store related event OIDs"
--     ::= { asaStoreModule 2 }


-- The Compliance Statements
-- =========================

asaStoreConformances    OBJECT IDENTIFIER ::= { asaStoreMIB 1 }

asaStoreGroups          OBJECT IDENTIFIER ::= { asaStoreConformances 1 }
asaStoreCompliances     OBJECT IDENTIFIER ::= { asaStoreConformances 2 }


asaStoreBasicGroup OBJECT-GROUP
    OBJECTS     {

        asaDbSize,

        asaSampleRows, asaSampleComponent, asaSampleMonitor,
        asaSampleType, asaSampleSampleId, asaSampleSubId,
        asaSampleTimestamp, asaSampleFacetName, asaSampleFacetValue,
        asaSampleFacetType,

        asaObsRows, asaObsSampleId, asaObsComponent, asaObsMonitor,
        asaObsObservation, asaObsTimestamp, asaObsMessage,
        asaObsProcessed,

        asaActionRows, asaActionSampleId, asaActionObsId,
        asaActionComponent, asaActionMonitor, asaActionObservation,
        asaActionAction, asaActionTimestamp, asaActionType,
        asaActionSuccess

    }
    STATUS      current
    DESCRIPTION
        "Group containing all asagent store objects"
    ::= { asaStoreGroups 1 }

asaStoreViewGroup OBJECT-GROUP
    OBJECTS     {

        asaSampleViewType, asaSampleViewSubId, asaSampleViewTimestamp,
        asaSampleViewFacetName, asaSampleViewFacetValue,
        asaSampleViewFacetType,

        asaObsViewObservation, asaObsViewTimestamp, asaObsViewMessage,
        asaObsViewProcessed,

        asaActionViewAction, asaActionViewTimestamp, asaActionViewType,
        asaActionViewSuccess

    }
    STATUS      current
    DESCRIPTION
        "Group containing extended views of the asagent store

        These views are in a separate table since they are not
        strictly required to present the asagent store information.
        They just provide more convenient access."
    ::= { asaStoreGroups 2 }

asaStoreCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "Basic asaStoreModule compliance"
    MODULE
        MANDATORY-GROUPS        { asaStoreBasicGroup }

        GROUP           asaStoreViewGroup
        DESCRIPTION
            "Alternative views to the asagent store

            Strictly speaking these views are optional since they do
            not provide extra information but just provide more
            convenient indexing."

    ::= { asaStoreCompliances 1 }

    
END

ASA-HOST-MIB

-- -*- mode: snmpv2 -*-
ASA-HOST-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-IDENTITY, OBJECT-TYPE, Unsigned32, Counter32,
    Gauge32, TimeTicks
        FROM SNMPv2-SMI
    OBJECT-GROUP, MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    DateAndTime, TimeInterval
        FROM SNMPv2-TC
    asModules
        FROM AS-ROOT-MIB
    asaHost
        FROM ASA-ROOT-MIB;

asaHostMIB MODULE-IDENTITY
    LAST-UPDATED        "201204230000Z"
    ORGANIZATION        "Abilisoft Ltd."
    CONTACT-INFO
        "Contact:   development@abilisoft.com

        Editor:     Floris Bruynooghe
                    Abilisoft Ltd.
        Postal:     9 Doolittle Mill
                    Froghall Road
                    Ampthill
                    Bedfordshire
                    MK45 2ND
                    United Kingdom
        EMail:      floris@abilisoft.com
        Phone:      +44 (0) 7909 624 322"
    DESCRIPTION
        "Host MIB module for asagent

        Copyright (C) 2011-2012 Abilisoft Ltd.
        http://abilisoft.com

        This module contains extra information on the host operating
        system asagent is running on.  Most of the information here is
        complementary to parts of the mib-2 sub-tree defined in RFC
        1213 and the host sub-tree of the HOST-RESOURCEES-MIB (rfc
        2790) and similar in nature."

    REVISION            "201204230000Z"
    DESCRIPTION
        "Rev 0.2    23 Apr 2012

        All object labels ending in Count have been renamed to their
        plural instead.  This is more in line with MIB conventions."

    REVISION           "201111140000Z"
    DESCRIPTION
        "Rev 0.1    14 Nov 2011
        Initial alpha version."

    ::= { asModules 6 }


-- The Local Root
-- ==============
-- 
-- This is actually imported from ASA-ROOT-MIB, just here as a comment
-- for your convenience.

-- asaHost OBJECT-IDENTITY
--     STATUS      current
--     DESCRIPTION
--         "The root of the OID sub-tree for asagent-specific host information

--         This sub-tree provides access to generic host-related
--         information.  Some of this might also be available from
--         the IETF's HOST-RESOURCES-MIB but is still included here
--         for convenience.  Most objects will be useful information
--         not covered by the HOST-RESOURCES-MIB."
--     ::= { asagent 10 }


-- The Host Overview Group
-- =======================


asaHostOverview OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The OID sub-tree containing host overview objects

        The purpose of this sub-tree is so that it can be walked in its
        entirety and provide a quick glance at the overall status of
        the host."
    ::= { asaHost 1 }


asaHoSystemUptime OBJECT-TYPE
    SYNTAX      TimeTicks
    UNITS       "0.01 seconds"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time since the system was last initialised

        This is the uptime of the operating system, i.e. the time
        elapsed since it last booted.  The TimeTicks are expressed in
        one hundredths of a second, i.e. 0.01s."
    ::= { asaHostOverview 1 }


asaHoLoadAvg1 OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The load average for the last minute, multiplied by 100

        The load average represents the average number of processes in
        the run queue.  On Windows this value is not available."
    ::= { asaHostOverview 2 }


asaHoLoadAvg5 OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The load average for the last five minutes, multiplied by 100

        The load average represents the average number of processes in
        the run queue.  On Windows this value is not available."
    ::= { asaHostOverview 3 }


asaHoLoadAvg15 OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The load average for the last fifteen minutes, multiplied by 100

        The load average represents the average number of processes in
        the run queue.  On Windows this value is not available."
    ::= { asaHostOverview 4 }


asaHoProcesses OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of processes currently running"
    ::= { asaHostOverview 5 }


asaHoRunQueueSize OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The instantaneous size of the system run queue

        This is the number of processes which are eligible to run
        right now and are running or waiting for a processor to become
        free to run them."
    ::= { asaHostOverview 6 }


asaHoPctCpuUsage OBJECT-TYPE
    SYNTAX      Unsigned32(0..100)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The percentage of total CPU usage over the last asaHoUpdateInterval

        Refer to asaHoUpdateInterval for details on the interval
        definition, default value etc."
    ::= { asaHostOverview 7 }


asaHoTotalMemory OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Mb"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The total available physical memory

        This is the total memory as seen by the host operating system.
        Any memory not visible by the operating system, e.g. disabled
        in the BIOS, will not be included.  Since this is expressed in
        megabytes (1024**2 bytes) the maximum supported value is
        4095Tb.  Note that if this object actually reports 4095Tb then
        it would be safe to assume the value is invalid as the actual
        amount of memory could be larger."
    ::= { asaHostOverview 8 }


asaHoUsedMemory OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Mb"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The amount of memory used by processes

        This is the amount of memory used by processes executing on
        the host.  This does not include any memory used by the
        operating system for buffering and caching purposes.

        Refer to asaHoTotalMemory for a note on the maximum supported
        size."
    ::= { asaHostOverview 9 }


asaHoFreeMemory OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Mb"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION

        "The amount of free memory

        This is the amount of memory not used by processes executing
        on the host.  Some of this memory may be used by the operating
        system for caching and buffering purposes.  Since this is
        expressed in megabytes (1024**2 bytes) the maximum supported
        value is 4095Tb.  Note that if this object actually reports
        4095Tb then it would be safe to assume the value is invalid
        as the actual amount of memory could be larger."
    ::= { asaHostOverview 10 }


asaHoPctUsedMemory OBJECT-TYPE
    SYNTAX      Unsigned32(0..100)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The percentage of physical memory used by running processes

        This is the percentage of physical memory visible to the
        operating system used by running programs.  Like
        asaHoUsedMemory this excludes any memory used for buffering
        and caching purposes.  This value is equivalent to
        100*asaHoUsedMemory/asaHoTotalMemory."
    ::= { asaHostOverview 11 }


asaHoTotalSwap OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Mb"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The total amount of swap space

        On UNIX this is the total size of all swap partitions and
        files available.  On Windows this is the total on-disk size of
        all the page files in use.

        Note that on Windows NT based systems before Windows 7 this
        value will not correspond with any value displayed in the task
        manager since it is calculated differently."
    ::= { asaHostOverview 12 }


asaHoUsedSwap OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Mb"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The amount of swap space used by applications

        On both UNIX and Windows this is the sum of all the paged out
        memory pages.

        Note that on Windows NT based systems before Windows 7 this
        value will not correspond with any value displayed in the task
        manager since it is calculated differently."
    ::= { asaHostOverview 13 }


asaHoFreeSwap OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Mb"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION

        "The amount of unused swap space

        This value is equivalent to asaHoTotalSwap-asaHoUsedSwap."
    ::= { asaHostOverview 14 }


asaHoPctUsedSwap OBJECT-TYPE
    SYNTAX      Unsigned32(0..100)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The percentage of swap space in use

        On both Windows and UNIX this is 100*asaHoUsedSwap/asaHoTotalSwap.
        On Windows this means it uses the physical memory and maximum
        page file size as total and the committed page file size as
        used."
    ::= { asaHostOverview 15 }


asaHoTotalDisk OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Mb"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The sum of all disk storage available

        The total size is determined from the sum of all locally mounted
        filesystem sizes.  Since this is expressed in Mb the maximum size
        is 4095Tb.  Note that if this object actually reports 4095Tb then
        it would be safe to assume the value is invalid as the actual
        available disk space could be larger."
    ::= { asaHostOverview 16 }


asaHoUsedDisk OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Mb"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The sum of all used disk storage

        The used size is determined from the sum of the used space on
        all locally mounted filesystems.  See asaHoTotalDisk for a note
        on the maximum size."
    ::= { asaHostOverview 17 }


asaHoFreeDisk OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Mb"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The sum of all free disk storage

        This value is equivalent to asaHoTotalDisk-asaHoUsedDisk.
        Only takes locally mounted filesystems are taken into account.
        See asaHoTotalDisk for a note on the maximum size."
    ::= { asaHostOverview 18 }


asaHoPctUsedDisk OBJECT-TYPE
    SYNTAX      Unsigned32(1..100)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The percentage of used disk space

        This value is equivalent to asaHoDiskUsage/asaHoTotalDisk*100.
        Only locally mounted filesystems are taken into account."
    ::= { asaHostOverview 19 }


asaHoDevices OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of attached devices

        This is equivalent to the row count of the hrDeviceTable in the
        HOST-RESOURCES-MIB."
    ::= { asaHostOverview 20 }


asaHoContextSwitches OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of context switches since system initialisation

        This represents the total number of context switches that have
        occurred on the system since it was initialised.  Note that the
        start value of this counter (i.e. the value at boot time) will
        be zero."
    ::= { asaHostOverview 21 }


asaHoInterrupts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of device interrupts since system initialisation

        This represents the total number of device interrupts which
        have been handled by the operating system since it has been
        initialised.  Note that the start value of this counter (i.e.
        the value at boot time) will be zero."
    ::= { asaHostOverview 22 }


asaHoSystemCalls OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of system calls since system initialisation

        This represents the total number of system calls serviced by
        the operating system since it has been initialised.  Note that
        the start value of this counter (i.e. the value at boot time)
        will be zero."
    ::= { asaHostOverview 23 }


asaHoOpenFiles OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of files currently open"
    ::= { asaHostOverview 24 }


asaHoPageIns OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of pages swapped in since system initialisation

        This represent the number of memory pages which have been
        moved from swap space to the main memory since the operating
        system was initialised.  Note that the start value of this
        counter (i.e. the value at boot time) will be zero."
    ::= { asaHostOverview 25 }


asaHoPageOuts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of pages swapped out since system initialisation

        This represents the number of memory pages which have been
        moved from main memory to swap space since the operating
        system was initialised.  Note that the start value of this
        counter (i.e. the value at boot time) will be zero."
    ::= { asaHostOverview 26 }


asaHoReclaimedPages OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number reclaimed pages since system initialisation

        This represents the number of pages reclaimed from the free
        list (or cache/buffer lists).  On systems with plenty of
        memory this will be a higher value than on systems short on
        memory (where more paging operations will occur instead).
        Note that the start value of this counter (i.e. the value at
        boot time) will be zero."
    ::= { asaHostOverview 27 }


asaHoMajorPageFaults OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of major page faults since system initialisation

        This represents the number of major or hard page faults which
        occurred since the system was initialised.  A major page fault
        occurs when the requested memory page needs to be loaded from
        secondary storage (swap or filesystem).  Note that the start
        value of this counter (i.e. the value at boot time) will
        be zero."
    ::= { asaHostOverview 28 }


asaHoMinorPageFaults OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of minor page faults since system initialisation

        This represents the number of minor or soft page faults which
        occurred since the system was initialised.  A minor page fault
        occurs when the CPU's Memory Management Unit (MMU) does not
        know the page is in memory but the operating system knows this
        page is (e.g. it is in use by another process at a different
        virtual address space).  The main difference between this and
        a major page fault is that the page does not need to be read
        from disk.  Note that the start value of this counter (i.e.
        the value at boot time) will be zero."
    ::= { asaHostOverview 29 }


asaHoUpdateInterval OBJECT-TYPE
    SYNTAX      TimeInterval
    UNITS       "0.01 seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Update interval used by objects in the asaHostOverview group

        Some objects in this group need to periodically update
        information, e.g. to calculate percentage CPU usage.  This
        setting controls the time interval between such updates.  The
        asaHoLastUpdate variable will contain the time of the last
        update.

        By default this is set to 6000, which means periodic updates
        are performed every minute.  Set this to 0 to disable periodic
        updates, the values relying on this will then return Null.

        This value is expressed in one-hundredths of a second (0.01s),
        therefore setting this to 6000 results in an update interval 
        of 60 seconds."
    ::= { asaHostOverview 255 }


asaHoLastUpdate OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time the last update cycle of asaHoUpdateInterval occurred

        Some objects in this group need to periodically update
        information, e.g. to calculate percentage CPU usage.  The
        frequency of these updates is controlled by the
        asaHoUpdateInterval variable and this variable will contain the
        time of the last update."
    ::= { asaHostOverview 256 }


-- The Compliance Statements
-- =========================

asaHostConformances     OBJECT IDENTIFIER ::= { asaHostMIB 1 }

asaHostGroups           OBJECT IDENTIFIER ::= { asaHostConformances 1 }
asaHostCompliances      OBJECT IDENTIFIER ::= { asaHostConformances 2 }


asaHostOverviewGroup OBJECT-GROUP
    OBJECTS     {
        asaHoSystemUptime, asaHoLoadAvg1, asaHoLoadAvg5,
        asaHoLoadAvg15, asaHoProcesses, asaHoRunQueueSize,
        asaHoPctCpuUsage, asaHoTotalMemory, asaHoUsedMemory,
        asaHoFreeMemory, asaHoPctUsedMemory, asaHoTotalSwap,
        asaHoUsedSwap, asaHoFreeSwap, asaHoPctUsedSwap,
        asaHoTotalDisk, asaHoUsedDisk, asaHoFreeDisk,
        asaHoPctUsedDisk, asaHoDevices, asaHoContextSwitches,
        asaHoInterrupts, asaHoSystemCalls, asaHoOpenFiles,
        asaHoPageIns, asaHoPageOuts, asaHoReclaimedPages,
        asaHoMajorPageFaults, asaHoMinorPageFaults,
        asaHoUpdateInterval, asaHoLastUpdate
    }
    STATUS      current
    DESCRIPTION
        "Group containing all asaHostOverview objects"
    ::= { asaHostGroups 1 }

asaHostOverviewCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "Compliance for the asaHostOverview group"
    MODULE
        MANDATORY-GROUPS { asaHostOverviewGroup }
    ::= { asaHostCompliances 1 }


END