3.2.1 Abstract Data Model

This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document.

A data collector set is the basic unit that describes all aspects of data collection, management and reporting. It includes the list of data collectors, scheduling data, data management policies, and reporting configuration. Section 3.2.4 specifies all the interfaces.

Data collector sets are categorized into four different categories; each category references a particular group of data collector sets. A client exercises the PLA protocol by specifying the category of the data collector set it wants to create or control on the server. From the server perspective, the category of the data collector set dictates how it ought to execute the data collector set. The categories are defined as follows:

  1. SystemDataCollectorSet: This is a specific category of data collector sets that MUST run either in the context that is specified through the IDataCollectorSet::SetCredential method or in the context of the client; if no user is specified by the IDataCollectorSet::SetCredential method which has been called, then this category of data collector sets will run at the highest permission level on the server. This category of data collector sets can include the TraceDataCollector, PerformanceCounterDatacollector, ConfigurationDataCollector, and ApiTracingDataCollector; the methods of the IDataManager can also be used to manage the data that is generated by these data collectors. These constituent data collectors can be started, stopped, and queried by a client. However, a client cannot modify any properties of these constituent data collectors; the IDataCollectorSet::Commit method MUST return E_NOTIMPL.

  2. ServerDataCollectorSet: This category of data collector sets supports all of the capabilities that are exposed by the IDataCollectorSet and its derived classes. Clients can use this category to create and delete data collector sets on the server that include the TraceDataCollector, PerformanceCounterDataCollector, ConfigurationDataCollector, and ApiTracingDataCollector. In addition, the methods of the IDataManager interface can be used to manage the data that is generated by the constituent data collectors.

  3. TraceSession: This category references the TraceSession data collector set that is used to control the collection of event traces on the server; the TraceSession data collector set MUST contain a trace data collector. A client can use the PLA protocol to create and control the TraceSession data collector set on the server. However, information about the data collector sets MUST NOT be persisted across server reboots. Moreover, the TraceSession data collector set MUST ignore the segmentation propreties of IDataCollectorSet as well as the ISchedule and IDataManager properties. Please see section 2.2.2.11 for specific properties that are ignored by the TraceSession data collector set. Note that although this functionality can be achieved by using the ServerDataCollectorSet class, the TraceSession class provides a "lightweight" mechanism to control the TraceSession data collector set.

  4. BootTraceSession: This category references a TraceSession data collector set that MUST be started by the server automatically during boot; the TraceSession data collector set MUST contain a trace data collector. A client can use the PLA protocol to create the data collector set; however, if a client attempts to start the data collector set, the server MUST return E_NOTIMPL because the data collector set can only be started upon reboot. Moreover, the server MUST return E_NOTIMPL if the client tries to stop the data collector set once it has started. The BootTraceSession data collector set MUST ignore the same properties that are ignored by the TraceSession data collector set; please see section 2.2.2.11 for these specific properties.

Each of the above categories is identified by two PLA-UIDs that MUST be understood by the server; one PLA-UID is used by a client when it wants to discover all of the data collector sets on the server that belong to that category, while the second PLA-UID is used by the client to actually control a specific data collector set within that category on the server. The below table lists the PLA-UIDs for each category, with the word "collection" appended to the category name to denote a discovery PLA-UID (as opposed to the query PLA-UID).

Parameter

Value

TraceSession

0383751c-098b-11d8-9414-505054503030

TraceSessionCollection

03837530-098b-11d8-9414-505054503030

ServerDataCollectorSet

03837531-098b-11d8-9414-505054503030

ServerDataCollectorSetCollection

03837532-098b-11d8-9414-505054503030

SystemDataCollectorSet

03837546-098b-11d8-9414-505054503030

SystemDataCollectorSetCollection

03837547-098b-11d8-9414-505054503030

BootTraceSession

03837538-098b-11d8-9414-505054503030

BootTraceSessionCollection

03837539-098b-11d8-9414-505054503030