Product SiteDocumentation Site

2.2. PMDA Architecture

This section discusses the two methods of connecting a PMDA to a PMCD process:
  • As a separate process using some interprocess communication (IPC) protocol.
  • As a dynamically attached library (that is, a dynamic shared object or DSO).

2.2.1. Overview

All PMDAs are launched and controlled by the PMCD process on the local host. PMCD receives requests from the monitoring tools and forwards them to the PMDAs. Responses, when required, are returned through PMCD to the clients. The requests fall into a small number of categories, and the PMDA must handle each request type. For a DSO PMDA, each request type corresponds to a method in the agent. For a daemon PMDA, each request translates to a message or protocol data unit (PDU) that may be sent to a PMDA from PMCD.
For a daemon PMDA, the following request PDUs must be supported:
PDU_FETCH
Request for metric values (see the pmFetch(3) man page.)
PDU_PROFILE
A list of instances required for the corresponding metrics in subsequent fetches (see the pmAddProfile(3) man page).
PDU_INSTANCE_REQ
Request for a particular instance domain for instance descriptions (see the pmGetInDom(3) man page).
PDU_DESC_REQ
Request for metadata describing metrics (see the pmLookupDesc(3) man page).
PDU_TEXT_REQ
Request for metric help text (see the pmLookupText(3) man page).
PDU_RESULT
Values to store into metrics (see the pmStore(3) man page).
The following request PDUs may optionally be supported:
PDU_PMNS_NAMES
Request for metric names, given one or more identifiers (see the pmLookupName(3) man page.)
PDU_PMNS_CHILD
A list of immediate descendent nodes of a given namespace node (see the pmGetChildren(3) man page).
PDU_PMNS_TRAVERSE
Request for a particular sub-tree of a given namespace node (see the pmTraversePMNS(3) man page).
PDU_PMNS_IDS
Perform a reverse name lookup, mapping a metric identifier to a name (see the pmNameID(3) man page).
PDU_AUTH
Handle connection attributes (key/value pairs), such as client credentials and other authentication information (see the __pmParseHostAttrsSpec(3) man page).
Each PMDA is associated with a unique domain number that is encoded in the domain field of metric and instance identifiers, and PMCD uses the domain number to determine which PMDA can handle the components of any given client request.