apmNameMachineName OBJECT-TYPE SYNTAX SnmpAdminString MAX-ACCESS read-only STATUS current DESCRIPTION "The human readable name of the client machine. If the client has no machine name or the agent is unable to learn the machine name, this object will be a zero-length string." ::= { apmNameEntry 4 } apmNameUserName OBJECT-TYPE SYNTAX SnmpAdminString MAX-ACCESS read-only STATUS current DESCRIPTION "The human readable name of a human user using the client machine. If more than one user name are available simultaneously, it is an implementation-dependent matter as to which is used here. However, if the user name changes, this object should change to reflect that change. Non-human user names like 'root' or 'administrator' aren't intended as values for this object. If the client has no recorded user name or the agent is unable to learn a user name, this object will be a zero-length string." ::= { apmNameEntry 5 } -- The APM Report Group apmReportControlTable OBJECT-TYPE SYNTAX SEQUENCE OF ApmReportControlEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Parameters that control the creation of a set of reports that aggregate application performance." ::= { apmMibObjects 9 } apmReportControlEntry OBJECT-TYPE SYNTAX ApmReportControlEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A conceptual row in the apmReportControlTable. An example of the indexing of this table is
apmReportControlInterval.3" INDEX { apmReportControlIndex } ::= { apmReportControlTable 1 } ApmReportControlEntry ::= SEQUENCE { apmReportControlIndex Unsigned32, apmReportControlDataSource DataSourceOrZero, apmReportControlAggregationType TransactionAggregationType, apmReportControlInterval Unsigned32, apmReportControlRequestedSize Unsigned32, apmReportControlGrantedSize Unsigned32, apmReportControlRequestedReports Unsigned32, apmReportControlGrantedReports Unsigned32, apmReportControlStartTime TimeStamp, apmReportControlReportNumber Unsigned32, apmReportControlDeniedInserts Counter32, apmReportControlDroppedFrames Counter32, apmReportControlOwner OwnerString, apmReportControlStorageType StorageType, apmReportControlStatus RowStatus } apmReportControlIndex OBJECT-TYPE SYNTAX Unsigned32 (1..65535) MAX-ACCESS not-accessible STATUS current DESCRIPTION "An index that uniquely identifies an entry in the apmReportControlTable. Each such entry defines a unique report whose results are placed in the apmReportTable on behalf of this apmReportControlEntry." ::= { apmReportControlEntry 1 } apmReportControlDataSource OBJECT-TYPE SYNTAX DataSourceOrZero MAX-ACCESS read-create STATUS current DESCRIPTION "The source of the data for APM Reports generated on behalf of this apmReportControlEntry. If the measurement is being performed by a probe, this should be set to interface or port where data was received for analysis. If the measurement isn't being performed by a probe, this should be set to the primary interface over which the measurement is being performed. If the measurement isn't being performed by a probe and there is no primary interface or this
information isn't known, this object should be set to 0.0. This object may not be modified if the associated apmReportControlStatus object is equal to active(1)." ::= { apmReportControlEntry 2 } apmReportControlAggregationType OBJECT-TYPE SYNTAX TransactionAggregationType -- INTEGER { -- flows(1), -- clients(2), -- servers(3), -- applications(4) -- } MAX-ACCESS read-create STATUS current DESCRIPTION "The type of aggregation being performed for this set of reports. The metrics for a single transaction are the responsiveness of the transaction and whether the transaction succeeded (a boolean). When such metrics are aggregated in this MIB Module, these metrics are replaced by averages and distributions of responsiveness and availability. The metrics describing aggregates are constant no matter which type of aggregation is being performed. These metrics may be found in the apmReportTable. The flows(1) aggregation is the simplest. All transactions that share common application/server/client 3-tuples are aggregated together, resulting in a set of metrics for all such unique 3-tuples. The clients(2) aggregation results in somewhat more aggregation (i.e., fewer resulting records). All transactions that share common application/client tuples are aggregated together, resulting in a set of metrics for all such unique tuples. The servers(3) aggregation usually results in still more aggregation (i.e., fewer resulting records). All transactions that share common application/server tuples are aggregated together, resulting in a set of metrics for all such unique tuples. The applications(4) aggregation results in the most aggregation (i.e., the fewest resulting records). All
transactions that share a common application are aggregated together, resulting in a set of metrics for all such unique applications. Note that it is not meaningful to aggregate applications, as different applications have widely varying characteristics. As a result, this set of aggregations is complete. This object may not be modified if the associated apmReportControlStatus object is equal to active(1)." ::= { apmReportControlEntry 3 } apmReportControlInterval OBJECT-TYPE SYNTAX Unsigned32 UNITS "Seconds" MAX-ACCESS read-create STATUS current DESCRIPTION "The interval in seconds over which data is accumulated before being aggregated into a report in the apmReportTable. All reports with the same apmReportControlIndex will be based on the same interval. This object must be greater than zero. Many users desire that these reports be synchronized to within seconds of the beginning of the hour because the results may be correlated more meaningfully to business behavior and so that data from multiple agents is aggregated over the same time periods. Thus management software may take extra effort to synchronize reports to the beginning of the hour and to one another. However, the agent must not allow reports to 'drift' over time as they will quickly become unsynchronized. In particular, if there is any fixed processing delay between reports, the reports should deduct this time from the interval so that reports don't drift. This object may not be modified if the associated apmReportControlStatus object is equal to active(1)." DEFVAL { 3600 } ::= { apmReportControlEntry 4 } apmReportControlRequestedSize OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-create STATUS current DESCRIPTION "The number of entries requested to be allocated for each report generated on behalf of this entry." ::= { apmReportControlEntry 5 }
apmReportControlGrantedSize OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of entries per report the agent has allocated based on the requested amount in apmReportControlRequestedSize. Since multiple reports are saved, the total number of entries allocated will be this number multiplied by the value of apmReportControlGrantedReports, or 1 if that object doesn't exist. When the associated apmReportControlRequestedSize object is created or modified, the agent should set this object as closely to the requested value as is possible for the particular implementation and available resources. When considering resources available, the agent must consider its ability to allocate this many entries for all reports. Note that while the actual number of entries stored in the reports may fluctuate due to changing conditions, the agent must continue to have storage available to satisfy the full report size for all reports when necessary. Further, the agent must not lower this value except as a result of a set to the associated apmReportControlRequestedSize object." ::= { apmReportControlEntry 6 } apmReportControlRequestedReports OBJECT-TYPE SYNTAX Unsigned32 (0..65535) MAX-ACCESS read-create STATUS current DESCRIPTION "The number of saved reports requested to be allocated on behalf of this entry." ::= { apmReportControlEntry 7 } apmReportControlGrantedReports OBJECT-TYPE SYNTAX Unsigned32 (0..65535) MAX-ACCESS read-only STATUS current DESCRIPTION "The number of saved reports the agent has allocated based on the requested amount in apmReportControlRequestedReports. Since each report can have many entries, the total number of entries allocated will be this number multiplied by the value of apmReportControlGrantedSize, or 1 if that object doesn't exist.
When the associated apmReportControlRequestedReports object is
created or modified, the agent should set this object as
closely to the requested value as is possible for the
particular implementation and available resources. When
considering resources available, the agent must consider its
ability to allocate this many reports each with the number of
entries represented by apmReportControlGrantedSize, or 1 if
that object doesn't exist.
Note that while the storage required for each report may
fluctuate due to changing conditions, the agent must continue
to have storage available to satisfy the full report size for
all reports when necessary. Further, the agent must not lower
this value except as a result of a set to the associated
apmReportControlRequestedSize object."
::= { apmReportControlEntry 8 }
apmReportControlStartTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime when the system began processing the
report in progress. Note that the report in progress is not
available.
This object may be used by the management station to figure
out the start time for all previous reports saved for this
apmReportControlEntry, as reports are started at fixed
intervals."
::= { apmReportControlEntry 9 }
apmReportControlReportNumber OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of the report in progress. When an
apmReportControlEntry is activated, the first report will be
numbered one."
::= { apmReportControlEntry 10 }
apmReportControlDeniedInserts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of failed attempts to add an entry to reports for
this apmReportControlEntry because the number of entries would have exceeded apmReportControlGrantedSize. This number is valuable in determining if enough entries have been allocated for reports in light of fluctuating network usage. Note that since an entry that is denied will often be attempted again, this number will not predict the exact number of additional entries needed, but can be used to understand the relative magnitude of the problem. Also note that there is no ordering specified for the entries in the report, thus there are no rules for which entries will be omitted when not enough entries are available. As a consequence, the agent is not required to delete 'least valuable' entries first." ::= { apmReportControlEntry 11 } apmReportControlDroppedFrames OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of frames which were received by the agent and therefore not accounted for in the *StatsDropEvents, but for which the agent chose not to count for this entry for whatever reason. Most often, this event occurs when the agent is out of some resources and decides to shed load from this collection. This count does not include packets that were not counted because they had MAC-layer errors. This counter is only relevant if this apm report is based on a data source whose collection methodology is based on analyzing network traffic. Note that if the apmReportTables are inactive because no applications are enabled in the application directory, this value should be 0. Note that, unlike the dropEvents counter, this number is the exact number of frames dropped." ::= { apmReportControlEntry 12 } apmReportControlOwner OBJECT-TYPE SYNTAX OwnerString MAX-ACCESS read-create STATUS current
DESCRIPTION "The entity that configured this entry and is therefore using the resources assigned to it." ::= { apmReportControlEntry 13 } apmReportControlStorageType OBJECT-TYPE SYNTAX StorageType MAX-ACCESS read-create STATUS current DESCRIPTION "The storage type of this apmReportControlEntry. If the value of this object is 'permanent', no objects in this row need to be writable." ::= { apmReportControlEntry 14 } apmReportControlStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "The status of this apmReportControlEntry. An entry may not exist in the active state unless all objects in the entry have an appropriate value. The only objects in the entry that may be modified while the entry is in the active state are apmReportControlRequestedSize and apmReportControlRequestedReports. If this object is not equal to active(1), all associated entries in the apmReportTable shall be deleted by the agent." ::= { apmReportControlEntry 15 } -- The APM Report Table apmReportTable OBJECT-TYPE SYNTAX SEQUENCE OF ApmReportEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The data resulting from aggregated APM reports. Consult the definition of apmReportControlAggregationType for the definition of the various types of aggregations." ::= { apmMibObjects 10 } apmReportEntry OBJECT-TYPE SYNTAX ApmReportEntry MAX-ACCESS not-accessible
STATUS current DESCRIPTION "A conceptual row in the apmReportTable. The apmReportControlIndex value in the index identifies the apmReportControlEntry on whose behalf this entry was created. The apmReportIndex value in the index identifies which report (in the series of reports) this entry is a part of. The apmAppDirAppLocalIndex value in the index identifies the common application of the transactions aggregated in this entry. The apmAppDirResponsivenessType value in the index identifies the type of responsiveness metric reported by this entry and uniquely identifies this entry when more than one responsiveness metric is measured for a flow. Entries will only exist in this table for those combinations of AppLocalIndex and ResponsivenessType that are configured 'on(1)'. The protocolDirLocalIndex value in the index identifies the network layer protocol of the apmReportServerAddress. When the associated apmReportControlAggregationType value is equal to applications(4) or clients(2), this protocolDirLocalIndex value will equal 0. The apmReportServerAddress value in the index identifies the network layer address of the server in transactions aggregated in this entry. The apmNameClientID value in the index identifies the client in transactions aggregated in this entry. If the associated apmReportControlAggregationType is equal to applications(4) or servers(3), then this protocolDirLocalIndex value will equal 0. An example of the indexing of this entry is apmReportTransactionCount.3.15.3.1.8.4.192.168.1.2.3232235788 Note that some combinations of index values may result in an index that exceeds 128 sub-identifiers in length which exceeds the maximum for the SNMP protocol. Implementations should take care to avoid such combinations." INDEX { apmReportControlIndex, apmReportIndex, apmAppDirAppLocalIndex, apmAppDirResponsivenessType, protocolDirLocalIndex, apmReportServerAddress, apmNameClientID } ::= { apmReportTable 1 } ApmReportEntry ::= SEQUENCE { apmReportIndex Unsigned32, apmReportServerAddress ProtocolDirNetworkAddress,
apmReportTransactionCount Unsigned32, apmReportSuccessfulTransactions Unsigned32, apmReportResponsivenessMean Unsigned32, apmReportResponsivenessMin Unsigned32, apmReportResponsivenessMax Unsigned32, apmReportResponsivenessB1 Unsigned32, apmReportResponsivenessB2 Unsigned32, apmReportResponsivenessB3 Unsigned32, apmReportResponsivenessB4 Unsigned32, apmReportResponsivenessB5 Unsigned32, apmReportResponsivenessB6 Unsigned32, apmReportResponsivenessB7 Unsigned32 } apmReportIndex OBJECT-TYPE SYNTAX Unsigned32 (1..4294967295) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The value of apmReportControlReportNumber for the report to which this entry belongs." ::= { apmReportEntry 1 } apmReportServerAddress OBJECT-TYPE SYNTAX ProtocolDirNetworkAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The network server address for this apmReportEntry. This is represented as an octet string with specific semantics and length as identified by the protocolDirLocalIndex component of the index. Since this object is an index variable, it is encoded in the index according to the index encoding rules. For example, if the protocolDirLocalIndex indicates an encapsulation of ip, this object is encoded as a length octet of 4, followed by the 4 octets of the ip address, in network byte order. Care should be taken to avoid values of this object that, in conjunction with the other index variables, would result in an index longer than SNMP's maximum of 128 subidentifiers. If the associated apmReportControlAggregationType is equal to applications(4) or clients(2), then this object will be a null string and will be encoded simply as a length octet of 0." ::= { apmReportEntry 2 }
apmReportTransactionCount OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of transactions aggregated into this record." ::= { apmReportEntry 3 } apmReportSuccessfulTransactions OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of successful transactions aggregated into this record." ::= { apmReportEntry 4 } apmReportResponsivenessMean OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The arithmetic mean of the responsiveness metrics for all successful transactions aggregated into this record." ::= { apmReportEntry 5 } apmReportResponsivenessMin OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The minimum of the responsiveness metrics for all successful transactions aggregated into this record." ::= { apmReportEntry 6 } apmReportResponsivenessMax OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum of the responsiveness metrics for all successful transactions aggregated into this record." ::= { apmReportEntry 7 } -- Note that when updating a report entry, a transaction will not be -- counted in more than 1 bucket in an entry. It will be counted in -- the first bucket that matches, starting with Bucket 1 (B1). Note -- that if a transaction matches 2 application types, it will update
-- one bucket in each of 2 entries in this table. apmReportResponsivenessB1 OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of successful transactions aggregated into this record whose responsiveness was less than boundary1 value for this application." ::= { apmReportEntry 8 } apmReportResponsivenessB2 OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of successful transactions aggregated into this record whose responsiveness did not fall into Bucket 1 and was greater than or equal to the boundary1 value for this application and less than the boundary2 value for this application." ::= { apmReportEntry 9 } apmReportResponsivenessB3 OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of successful transactions aggregated into this record whose responsiveness did not fall into Bucket 1 or 2 and as greater than or equal to the boundary2 value for this application and less than the boundary3 value for this application." ::= { apmReportEntry 10 } apmReportResponsivenessB4 OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of successful transactions aggregated into this record whose responsiveness did not fall into Buckets 1 through 3 and was greater than or equal to the boundary3 value for this application and less than the boundary4 value for this application." ::= { apmReportEntry 11 }
apmReportResponsivenessB5 OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of successful transactions aggregated into this record whose responsiveness did not fall into Buckets 1 through 4 and was greater than or equal to the boundary4 value for this application and less than the boundary5 value for this application." ::= { apmReportEntry 12 } apmReportResponsivenessB6 OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of successful transactions aggregated into this record whose responsiveness did not fall into Buckets 1 through 5 and was greater than or equal to the boundary5 value for this application and less than the boundary6 value for this application." ::= { apmReportEntry 13 } apmReportResponsivenessB7 OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of successful transactions aggregated into this record whose responsiveness did not fall into Buckets 1 through 6 and was greater than or equal to the boundary6 value for this application." ::= { apmReportEntry 14 } -- APM Transaction Table apmTransactionTable OBJECT-TYPE SYNTAX SEQUENCE OF ApmTransactionEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains transactions that are currently running or have recently finished." ::= { apmMibObjects 11 } apmTransactionEntry OBJECT-TYPE SYNTAX ApmTransactionEntry
MAX-ACCESS not-accessible STATUS current DESCRIPTION "A conceptual row in the apmTransactionTable. The apmAppDirAppLocalIndex value in the index identifies the application of the transaction represented by this entry. The apmAppDirResponsivenessType value in the index identifies the type of responsiveness metric reported by this entry and uniquely identifies this entry when more than one responsiveness metric is measured for a flow. Entries will only exist in this table for those combinations of AppLocalIndex and ResponsivenessType that are configured 'on(1)'. The protocolDirLocalIndex value in the index identifies the network layer protocol of the apmTransactionServerAddress. The apmTransactionServerAddress value in the index identifies the network layer address of the server in the transaction represented by this entry. The apmNameClientID value in the index identifies the client in the transaction represented by this entry. An example of the indexing of this entry is apmTransactionCount.3.1.8.4.192.168.1.2.3232235788.2987 Note that some combinations of index values may result in an index that exceeds 128 sub-identifiers in length which exceeds the maximum for the SNMP protocol. Implementations should take care to avoid such combinations." INDEX { apmAppDirAppLocalIndex, apmAppDirResponsivenessType, protocolDirLocalIndex, apmTransactionServerAddress, apmNameClientID, apmTransactionID } ::= { apmTransactionTable 1 } ApmTransactionEntry ::= SEQUENCE { apmTransactionServerAddress ProtocolDirNetworkAddress, apmTransactionID Unsigned32, apmTransactionResponsiveness Unsigned32, apmTransactionAge TimeInterval, apmTransactionSuccess TruthValue } apmTransactionServerAddress OBJECT-TYPE SYNTAX ProtocolDirNetworkAddress (SIZE (1..255)) MAX-ACCESS not-accessible STATUS current DESCRIPTION
"The network server address for this apmTransactionEntry. This is represented as an octet string with specific semantics and length as identified by the protocolDirLocalIndex component of the index. This object may not be the zero length string. For example, if the protocolDirLocalIndex indicates an encapsulation of ip, this object is encoded as a length octet of 4, followed by the 4 octets of the ip address, in network byte order. Care should be taken to avoid values of this object that, in conjunction with the other index variables, would result in an index longer than SNMP's maximum of 128 subidentifiers." ::= { apmTransactionEntry 1 } apmTransactionID OBJECT-TYPE SYNTAX Unsigned32 (0..4294967295) MAX-ACCESS not-accessible STATUS current DESCRIPTION "A unique value for this transaction amongst other transactions sharing the same application layer protocol and server and client addresses. Implementations may choose to use the value of the client's source port, when possible." ::= { apmTransactionEntry 2 } apmTransactionResponsiveness OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current value of the responsiveness metric for this transaction. If this transaction has completed, the final value of the metric will be available. Note that this value may change over the lifetime of the transaction and it is the final value of this metric that is recorded as the responsiveness of the transaction for use in other APM MIB functions." ::= { apmTransactionEntry 3 } apmTransactionAge OBJECT-TYPE SYNTAX TimeInterval MAX-ACCESS read-only STATUS current DESCRIPTION "If this transaction is still executing, this value shall be
the length of time since it was started. If it has completed, this value shall be the length of time it was executing." ::= { apmTransactionEntry 4 } apmTransactionSuccess OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "The success of this transaction up to this time. Once a transaction has been marked as failed, it cannot move back into the successful state." ::= { apmTransactionEntry 5 } apmTransactionsRequestedHistorySize OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of completed transactions desired to be retained in the apmTransactionTable. If the agent doesn't have enough resources to retain this many, it will retain as many as possible. Regardless of this value, the agent must attempt to keep records for all current transactions it is monitoring. The value of this object must persist across reboots." ::= { apmMibObjects 12 } -- The APM Exception table -- The APM Exception Table creates filters so that a management -- station can get immediate notification of a transaction that has -- had poor availability or responsiveness. -- -- This function is particularly helpful in unaggregated situations -- where the numbers of agents is relatively high and the transaction -- rate per agent is relatively low (such as agents for desktops or -- dedicated to small workgroups). Polling agents in such an -- environment would either cause scalability problems (high rate) or -- lead to long notification delays (low rate). apmExceptionTable OBJECT-TYPE SYNTAX SEQUENCE OF ApmExceptionEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table creates filters so that a management station can get immediate notification of a transaction that has had poor
availability or responsiveness. Each apmExceptionEntry is associated with a particular type of transaction and is applied to all transactions of that type. Multiple apmExceptionEntries may be associated with a particular type of transaction. A transaction type is identified by the value of the apmAppDirAppLocalIndex component of the index. Because the quality of a transaction is not known until it is completed, these thresholds are only applied after the transaction has completed." ::= { apmMibObjects 13 } apmExceptionEntry OBJECT-TYPE SYNTAX ApmExceptionEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A conceptual row in the apmExceptionTable. The apmAppDirAppLocalIndex value in the index identifies the application this entry will monitor. The apmAppDirResponsivenessType value in the index identifies the type of responsiveness metric this entry will monitor." INDEX { apmAppDirAppLocalIndex, apmAppDirResponsivenessType, apmExceptionIndex } ::= { apmExceptionTable 1 } ApmExceptionEntry ::= SEQUENCE { apmExceptionIndex Unsigned32, apmExceptionResponsivenessComparison INTEGER, apmExceptionResponsivenessThreshold Unsigned32, apmExceptionUnsuccessfulException INTEGER, apmExceptionResponsivenessEvents Counter32, apmExceptionUnsuccessfulEvents Counter32, apmExceptionOwner OwnerString, apmExceptionStorageType StorageType, apmExceptionStatus RowStatus } apmExceptionIndex OBJECT-TYPE SYNTAX Unsigned32 (1..65535) MAX-ACCESS not-accessible STATUS current DESCRIPTION
"An index that uniquely identifies an entry in the apmExceptionTable amongst other entries with equivalent index values for apmAppDirAppLocalIndex and apmAppDirResponsivenessType. Each such entry sets up thresholds for a particular measurement of a particular application." ::= { apmExceptionEntry 1 } apmExceptionResponsivenessComparison OBJECT-TYPE SYNTAX INTEGER { none(1), greater(2), less(3) } MAX-ACCESS read-create STATUS current DESCRIPTION "If this value is greater(2) or less(3), the associated apmExceptionResponsivenessThreshold will be compared to this value and an exception will be created if the responsiveness is greater than the threshold (greater(2)) or less than the threshold (less(3))." ::= { apmExceptionEntry 2 } apmExceptionResponsivenessThreshold OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-create STATUS current DESCRIPTION "The threshold that responsiveness metrics are compared to." ::= { apmExceptionEntry 3 } apmExceptionUnsuccessfulException OBJECT-TYPE SYNTAX INTEGER { off(1), on(2) } MAX-ACCESS read-create STATUS current DESCRIPTION "If this value is on(2), an exception will be created if a transaction of the associated type is unsuccessful." ::= { apmExceptionEntry 4 } apmExceptionResponsivenessEvents OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current
DESCRIPTION "The total number of responsiveness exceptions generated. This counter will be incremented even if no notification was sent due to notifications not being configured or due to exceeding the apmNotificationMaxRate value." ::= { apmExceptionEntry 5 } apmExceptionUnsuccessfulEvents OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of unsuccessful exceptions generated. This counter will be incremented even if no notification was sent due to notifications not being configured or due to exceeding the apmNotificationMaxRate value." ::= { apmExceptionEntry 6 } apmExceptionOwner OBJECT-TYPE SYNTAX OwnerString MAX-ACCESS read-create STATUS current DESCRIPTION "The entity that configured this entry and is therefore using the resources assigned to it." ::= { apmExceptionEntry 7 } apmExceptionStorageType OBJECT-TYPE SYNTAX StorageType MAX-ACCESS read-create STATUS current DESCRIPTION "The storage type of this apmReportControlEntry. If the value of this object is 'permanent', no objects in this row need to be writable." ::= { apmExceptionEntry 8 } apmExceptionStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "The status of this apmExceptionEntry. The only objects in the entry that may be modified while the entry is in the active state are apmExceptionResponsivenessComparison, apmExceptionResponsivenessThreshold and apmExceptionUnsuccessfulException." ::= { apmExceptionEntry 9 }
apmThroughputExceptionMinTime OBJECT-TYPE SYNTAX Unsigned32 UNITS "seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "Because the responsiveness for throughput-oriented transactions is divided by the elapsed time, it can be very sensitive to short-term performance variations for transactions that take a short period of time. For example, when downloading a very short file, a single dropped packet could double or triple the total response time. Further, throughput is usually examined for applications that transfer a lot of data, and when doing so it is helpful to conceptualize transaction costs that are proportional to the amount of data separately from those costs that are relatively fixed (i.e., independent of the amount of data). For very short transactions, these fixed transaction costs (handshake, setup time, authentication, round-trip time) may dominate the total response time for the transaction, resulting in throughput measurements that aren't really proportional to the network's, server's and client's combined data throughput capability. This object controls the minimum number of seconds that an throughput-based transaction must exceed before an exception can be generated for it. If this object is set to zero, then all throughput-based transactions are candidates for exceptions. The value of this object must persist across reboots." DEFVAL { 10 } ::= { apmMibObjects 14 } apmNotificationMaxRate OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of notifications that can be generated from this agent by the apmExceptionTable in any 60 second period. The value of this object must persist across reboots." DEFVAL { 1 } ::= { apmMibObjects 15 }
-- APM Notifications apmNotifications OBJECT IDENTIFIER ::= { apm 0 } apmTransactionResponsivenessAlarm NOTIFICATION-TYPE OBJECTS { apmExceptionResponsivenessThreshold, apmTransactionResponsiveness } STATUS current DESCRIPTION "Notification sent when a transaction exceeds a threshold defined in the apmException table. The index of the included apmExceptionResponsivenessThreshold object identifies the apmExceptionEntry that specified the threshold. The apmTransactionResponsiveness variable identifies the actual transaction and its responsiveness. Agent implementors are urged to include additional data objects in the alarm that may explain the reason for the alarm. It is helpful to include such data in the alarm because it describes the situation at the time the alarm was generated, where polls after the fact may not provide meaningful information. Examples of such information are CPU load, memory utilization, network utilization, and transaction statistics." ::= { apmNotifications 1 } apmTransactionUnsuccessfulAlarm NOTIFICATION-TYPE OBJECTS { apmExceptionResponsivenessThreshold } STATUS current DESCRIPTION "Notification sent when a transaction is unsuccessful. The index of the included apmExceptionResponsivenessThreshold object identifies both the type of the transaction that caused this notification as well as the apmExceptionEntry that specified the threshold. Agent implementors are urged to include additional data objects in the alarm that may explain the reason for the alarm. It is helpful to include such data in the alarm because it describes the situation at the time the alarm was generated, where polls after the fact may not provide meaningful information. Examples of such information are CPU load, memory utilization, network utilization, and transaction statistics." ::= { apmNotifications 2 } apmCompliance MODULE-COMPLIANCE STATUS current
DESCRIPTION "Describes the requirements for conformance to the APM MIB" MODULE -- this module MANDATORY-GROUPS { apmAppDirGroup, apmReportGroup } GROUP apmUserDefinedApplicationsGroup DESCRIPTION "Implementation of the apmUserDefinedApplicationsGroup is optional." GROUP apmTransactionGroup DESCRIPTION "Implementation of the apmTransactionGroup is optional." GROUP apmExceptionGroup DESCRIPTION "Implementation of the apmExceptionGroup is optional." GROUP apmNotificationGroup DESCRIPTION "Implementation of the apmNotificationGroup is optional." ::= { apmCompliances 1 } apmAppDirGroup OBJECT-GROUP OBJECTS { apmAppDirConfig, apmAppDirResponsivenessBoundary1, apmAppDirResponsivenessBoundary2, apmAppDirResponsivenessBoundary3, apmAppDirResponsivenessBoundary4, apmAppDirResponsivenessBoundary5, apmAppDirResponsivenessBoundary6, apmBucketBoundaryLastChange, apmAppDirID, apmNameMachineName, apmNameUserName } STATUS current DESCRIPTION "The APM MIB directory of applications and application verbs." ::= { apmGroups 1 } apmUserDefinedApplicationsGroup OBJECT-GROUP OBJECTS { apmHttpFilterAppLocalIndex, apmHttpFilterServerProtocol, apmHttpFilterServerAddress, apmHttpFilterURLPath, apmHttpFilterMatchType, apmHttpFilterOwner, apmHttpFilterStorageType, apmHttpFilterRowStatus, apmHttpIgnoreUnregisteredURLs, apmHttp4xxIsFailure, apmUserDefinedAppParentIndex,
apmUserDefinedAppApplication } STATUS current DESCRIPTION "Objects used for creating and managing user-defined applications." ::= { apmGroups 2 } apmReportGroup OBJECT-GROUP OBJECTS { apmReportControlDataSource, apmReportControlAggregationType, apmReportControlInterval, apmReportControlRequestedSize, apmReportControlGrantedSize, apmReportControlRequestedReports, apmReportControlGrantedReports, apmReportControlStartTime, apmReportControlReportNumber, apmReportControlDeniedInserts, apmReportControlDroppedFrames, apmReportControlOwner, apmReportControlStorageType, apmReportControlStatus, apmReportTransactionCount, apmReportSuccessfulTransactions, apmReportResponsivenessMean, apmReportResponsivenessMin, apmReportResponsivenessMax, apmReportResponsivenessB1, apmReportResponsivenessB2, apmReportResponsivenessB3, apmReportResponsivenessB4, apmReportResponsivenessB5, apmReportResponsivenessB6, apmReportResponsivenessB7 } STATUS current DESCRIPTION "The apm report group controls the creation and retrieval of reports that aggregate application performance." ::= { apmGroups 3 } apmTransactionGroup OBJECT-GROUP OBJECTS { apmTransactionResponsiveness, apmTransactionAge, apmTransactionSuccess, apmTransactionsRequestedHistorySize } STATUS current DESCRIPTION "The apm transaction group contains statistics for individual transactions."
::= { apmGroups 4 } apmExceptionGroup OBJECT-GROUP OBJECTS { apmExceptionResponsivenessComparison, apmExceptionResponsivenessThreshold, apmExceptionUnsuccessfulException, apmExceptionResponsivenessEvents, apmExceptionUnsuccessfulEvents, apmExceptionOwner, apmExceptionStorageType, apmExceptionStatus, apmThroughputExceptionMinTime, apmNotificationMaxRate } STATUS current DESCRIPTION "The apm exception group causes notifications to be sent whenever transactions are detected that had poor availability or responsiveness." ::= { apmGroups 5 } apmNotificationGroup NOTIFICATION-GROUP NOTIFICATIONS { apmTransactionResponsivenessAlarm, apmTransactionUnsuccessfulAlarm } STATUS current DESCRIPTION "Notifications sent by an APM MIB agent." ::= { apmGroups 6 } END4. Security Considerations
There are a number of management objects defined in this MIB module with a MAX-ACCESS clause of read-write and/or read-create. Such objects may be considered sensitive or vulnerable in some network environments. The support for SET operations in a non-secure environment without proper protection can have a negative effect on network operations. Specifically, most of the read-write and read-create objects in this MIB module may be used to configure an agent to reveal network addresses, application usage information and conversation statistics that may be considered sensitive in some environments. Some of the readable objects in this MIB module (i.e., objects with a MAX-ACCESS other than not-accessible) may be considered sensitive or vulnerable in some network environments. It is thus important to control even GET and/or NOTIFY access to these objects and possibly to even encrypt the values of these objects when sending them over the network via SNMP.
Specifically, this MIB contains network addresses, machines names, user names, application usage information, and conversation statistics. Data of this nature should be considered sensitive and the privacy of the users from whom it was gathered protected. Administrators should restrict read access to this data to specifically authorized individuals or agents that recognize the privacy implications of its release. In situations where read access to this data cannot be restricted, it should not be gathered. Systems that implement the objects in this MIB module have the capability of measuring the time taken to execute transactions. Depending on the transaction type, some or all of this transaction time may be associated with the time taken to perform security calculations. Such data may help an attacker to use timing attacks to extract secrets from the systems involved in the transactions. See [10] for more information. SNMP versions prior to SNMPv3 did not include adequate security. Even if the network itself is secure (for example by using IPSec), even then, there is no control as to who on the secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB module. It is RECOMMENDED that implementers consider the security features as provided by the SNMPv3 framework (see [8], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy). Further, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to enable cryptographic security. It is then a customer/operator responsibility to ensure that the SNMP entity giving access to an instance of this MIB module is properly configured to give access to the objects only to those principals (users) that have legitimate rights to indeed GET or SET (change/create/delete) them.
5. References
5.1. Normative References
[1] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. [2] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999. [3] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999. [4] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB", RFC 2863, June 2000. [5] Waldbusser, S., "Remote Network Monitoring Management Information Base Version 2 using SMIv2", RFC 2021, January 1997. [6] Bierman, A., Bucci, C. and R. Iddon, "Remote Network Monitoring MIB Protocol Identifiers", RFC 2895, August 2000. [7] Waldbusser, S., "Remote Network Monitoring Management Information Base", STD 59, RFC 2819, May 2000.5.2. Informative References
[8] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002. [9] Berners-Lee, T., Masinter, L. and M. McCahill, "Uniform Resource Locators (URL)", RFC 1738, December 1994. [10] Boneh, D. and D. Brumley, "Remote timing attacks are practical", Proceedings of 12th USENIX Security Symposium, August 2003.6. Author's Address
Steven Waldbusser EMail: waldbusser@nextbeacon.com
7. Full Copyright Statement
Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78 and except as set forth therein, the authors retain all their rights. This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Intellectual Property The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf- ipr@ietf.org. Acknowledgement Funding for the RFC Editor function is currently provided by the Internet Society.