Application Performance Measurement MIB
Extracted elements (26)
A push model is recommended for desktop-based agents because desktops have dynamic addresses, are frequently unavailable due to reboots and user control, and laptops on dialup are only sporadically reachable—all of which make polling unreliable. The push model specifies exact varbind sets for APM Reports, Transactions, and Exceptions.
AppLocalIndex values are drawn from a single shared number space that includes both protocolDirLocalIndex values from RMON2 and apmHttpFilterAppLocalIndex values. This design ensures that the same integer uniquely identifies an application across all APM tables without ambiguity and allows direct cross-table linkage without translation.
Four aggregation levels are defined—flows (app/server/client 3-tuple), clients (app/client), servers (app/server), and applications—forming a complete set because aggregating across different applications is explicitly excluded as their performance characteristics and responsiveness metrics are incompatible.
The APM MIB defines three distinct responsiveness types because different application paradigms require incompatible metrics: transaction-oriented apps use millisecond response time, throughput-oriented apps use kilobits per second, and streaming-oriented apps use a parts-per-million signal quality ratio. Mixing these across applications would make statistical analysis meaningless.
The apmAppDirID object allows managers to skip downloading the full application directory when they recognize a known configuration, enabling efficient operation across thousands of distributed APM agents that likely share the same directory. Registrations are scoped to an administrative domain, not globally, permitting custom configurations without a global registry.
Every protocolDirLocalIndex value registered by the agent in the RMON2 protocolDirTable automatically occupies the same value in the AppLocalIndex number space. Implementations must ensure no apmHttpFilterAppLocalIndex value collides with any existing protocolDirLocalIndex value, and must track all assigned values jointly.
Index combinations in apmNameTable involving long network addresses can exceed SNMP's maximum index length of 128 sub-identifiers. Implementations must take care to avoid such combinations when constructing the compound index of ClientID, protocolDirLocalIndex, ClientAddress, and MappingStartTime.
When HTTP filtering is active, some HTTP transactions may be counted twice—once under a filter-defined virtual application and again under the generic HTTP application. If filter entries overlap, transactions may be counted additional times. Implementors and operators must account for this double-counting in analysis.
apmReportControlGrantedSize and apmReportControlGrantedReports must not be lowered by the agent except as a result of a SET to the corresponding Requested objects. The agent must maintain sufficient storage to satisfy the full report size for all reports at all times.
apmReportControlInterval must be greater than zero. To prevent drift, any fixed processing delay between reports must be deducted from the interval rather than allowed to accumulate over successive report cycles.
AppLocalIndex values must remain constant across agent re-initializations. If an application is deleted and re-created, it must be assigned a new value not used since the last re-initialization, and values must not be re-used until the next agent restart.
Conformance to the APM MIB specification requires that collected data match the semantic definitions herein—response time, throughput, streaming responsiveness, and availability—regardless of the measurement methodology (probe-based, client-based, synthetic-transaction, etc.) used. No specific methodology is mandated.
If any of the six apmAppDirResponsivenessBoundary objects is modified, the agent must delete all entries in the apmReportTable. This ensures histogram data is not mixed across incompatible bucket definitions.
When an agent uses the push model for APM Exceptions, the notification must include apmAppDirID, apmNameTable updates, the relevant apmTransactionEntry, and the apmExceptionEntry. This list supersedes the OBJECTS clauses of the apmTransactionResponsivenessAlarm and apmTransactionUnsuccessfulAlarm notifications.
When apmAppDirConfig changes from on(2) to off(1), the agent SHALL delete all related entries in all tables in this MIB Module. The value of apmAppDirConfig must persist across reboots.
apmAppDirTable is the central directory of applications monitored by the agent, indexed by AppLocalIndex and ResponsivenessType. It is read-write (no add/delete via SNMP) and carries six per-application histogram bucket boundaries (apmAppDirResponsivenessBoundary1–6) plus an on/off config flag.
apmHttpFilterTable creates virtual applications tracking performance of specific web pages or URL sets. Entries are indexed by apmHttpFilterIndex and specify a server address, URL path, and match type (exact, stripTrailingSlash, or prefix). When an entry is created, the agent automatically adds corresponding entries to apmAppDirTable.
apmNameTable records the history of client address mappings, indexed by RmonClientID, protocolDirLocalIndex, network address, and mapping start time. It provides machine name and user name and has defined aging rules ensuring entries referenced by active reports or transactions are not deleted.
apmReportControlTable parameterizes recurring aggregated reports: it records data source, aggregation type, interval (default 3600 seconds), and negotiated size and count (RequestedSize/GrantedSize, RequestedReports/GrantedReports). It also exposes DeniedInserts and DroppedFrames counters for capacity planning.
apmUserDefinedAppTable allows the agent to advertise proprietary or custom applications it is monitoring that are not registered in the protocolDirTable. It is read-only and provides a parent protocolDirLocalIndex and a human-readable application name; the agent automatically creates apmAppDirTable entries for each.
AppLocalIndex is a textual convention (Unsigned32, 1..2147483647) providing a locally unique identifier for an application or application verb. All AppLocalIndex values—whether derived from protocolDirLocalIndex or assigned to HTTP filter entries—must not overlap and must not be reused after an agent restart until the next re-initialization.
RmonClientID is a textual convention (Unsigned32, 0..4294967295) providing a long-lived stable identifier for an end-system that persists across address changes. Agents assign it via an implementation-specific algorithm; if address-to-client tracking is not possible, the ID may map to a client address rather than a distinct machine.
The seven-bucket histogram per application is configured via apmAppDirResponsivenessBoundary1–6, which define six boundary values separating seven bins. Bucket counts (ResponsivenessBx) are stored per report entry alongside ResponsivenessMean, ResponsivenessMin, and ResponsivenessMax statistics for successful transactions.
TransactionAggregationType is a textual convention enumerating four aggregation modes: flows(1) aggregates by app/server/client 3-tuple, clients(2) by app/client, servers(3) by app/server, and applications(4) by application alone. This is declared a complete set because cross-application aggregation is not meaningful.
The APM MIB contains read-write and read-create objects that can significantly affect agent operation, including enabling or disabling application monitoring (apmAppDirConfig), configuring HTTP error classification (apmHttp4xxIsFailure), and filtering monitored URLs (apmHttpIgnoreUnregisteredURLs). Modification of these objects should be performed only by managers acting in an administrator role, and management software must not enforce specific configurations.
The apmNameTable records client machine names, user names, and network addresses, constituting personally identifiable information. Agents and managers must apply appropriate SNMP access controls to restrict read access to authorized management stations.