1 a.dunfey 1.1 // ===================================================================
2 // Title: Metrics_BaseMetric
3 // $State: Exp $
4 // $Date: 2004/12/07 16:24:14 $
5 // $RCSfile: Metrics_BaseMetric.mof,v $
6 // $Revision: 1.4.2.4 $
7 // ===================================================================
8 //#pragma inLine ("Includes/copyright.inc")
9 // Copyright 1998-2005 Distributed Management Task Force, Inc. (DMTF).
10 // All rights reserved.
11 // DMTF is a not-for-profit association of industry members dedicated
12 // to promoting enterprise and systems management and interoperability.
13 // DMTF specifications and documents may be reproduced for uses
14 // consistent with this purpose by members and non-members,
15 // provided that correct attribution is given.
16 // As DMTF specifications may be revised from time to time,
17 // the particular version and release date should always be noted.
18 //
19 // Implementation of certain elements of this standard or proposed
20 // standard may be subject to third party patent rights, including
21 // provisional patent rights (herein "patent rights"). DMTF makes
22 a.dunfey 1.1 // no representations to users of the standard as to the existence
23 // of such rights, and is not responsible to recognize, disclose, or
24 // identify any or all such third party patent right, owners or
25 // claimants, nor for any incomplete or inaccurate identification or
26 // disclosure of such rights, owners or claimants. DMTF shall have no
27 // liability to any party, in any manner or circumstance, under any
28 // legal theory whatsoever, for failure to recognize, disclose, or
29 // identify any such third party patent rights, or for such party's
30 // reliance on the standard or incorporation thereof in its product,
31 // protocols or testing procedures. DMTF shall have no liability to
32 // any party implementing such standard, whether such implementation
33 // is foreseeable or not, nor to any patent owner or claimant, and shall
34 // have no liability or responsibility for costs or losses incurred if
35 // a standard is withdrawn or modified after publication, and shall be
36 // indemnified and held harmless by any party implementing the
37 // standard from any and all claims of infringement by a patent owner
38 // for such implementations.
39 //
40 // For information about patents held by third-parties which have
41 // notified the DMTF that, in their opinion, such patent may relate to
42 // or impact implementations of DMTF standards, visit
43 a.dunfey 1.1 // http://www.dmtf.org/about/policies/disclosures.php.
44 //#pragma inLine
45 // ===================================================================
46 // Description:
47 // Additions to the V2.6 Metrics MOF to support a more generic
48 // approach.
49 //
50 // CIM users often desire metric objects that model designers have
51 // not
52 // provided. Furthermore, such needs vary from one management
53 // philosophy
54 // to another. Rather than fill more and more CIM models with
55 // standardized objects, the Metrics model supports externally
56 // defined
57 // expressions of existing objects, such as properties of
58 // CIM_StatisticalData and its subclasses. In addition, the
59 // classes described in this file enable users to define their own
60 // metrics at runtime (rather than at provider implementation time).
61 // A newly defined metric (aka CIM_BaseMetricDefinition) may be
62 // given a value by instantiating CIM_BaseMetricValue.
63 // Both CIM_BaseMetricDefinitions and CIM_BaseMetricValues may be
64 a.dunfey 1.1 // associated with a ManagedElement.
65 // ==================================================================
66 // CIM 2.9 (
67 // CR1296 - Add meta data properties to CIM_BaseMetricDefinition
68 // that describe the Metric type and add
69 // ModelCorrespondence to BaseMetricValue
70 // CR1580 - Move changes in CR1296 to Final
71 // CR1581 - Change InstanceId property name to InstanceID in
72 // class CIM_BaseMetricValue
73 // CIM 2.8 (Final) - None
74 // CIM 2.8 (Preliminary) - None
75 //
76 // CIM 2.7.0 (Preliminary) 5 June 2002
77 // CR820 - Defined Base Metrics Classes and associations
78 // CR851 - Change the Description of BaseMetricValue.Duration
79 // to define the timestamp as the end of the duration
80 // CIM 2.7.0 (Final) 17 March 2003
81 // CR987 - Remove experimental qualifier from:
82 // -CIM_BaseMetricDefinition
83 // -CIM_BaseMetricValue
84 // -CIM_MetricInstance
85 a.dunfey 1.1 // -CIM_MetricDefForME
86 // -CIM_MetricForME
87 // ==================================================================
88
89 #pragma Locale ("en_US")
90
91
92 // ==================================================================
93 // BaseMetricDefinition
94 // ==================================================================
95 [Version ( "2.9.0" ), Description (
96 "CIM_BaseMetricDefinition represents the definitional aspects "
97 "of a metric, i.e., a definition template containing meta data "
98 "about a new metric. Since CIM_BaseMetricDefinition does not "
99 "capture metric instance information, it does not contain the "
100 "value of the metric. The associated class CIM_BaseMetricValue "
101 "holds the metric value and encapsulates its runtime behavior. "
102 "The purpose of CIM_BaseMetricDefinition is to provide a "
103 "convenient mechanism for introducing a new metric definition "
104 "at runtime and capturing its instance values in a separate "
105 "class. This mechanism is targeted specifically at CIM users "
106 a.dunfey 1.1 "who would like to enhance existing CIM schemas by introducing "
107 "domain-specific metrics that are not captured in the existing "
108 "CIM schemas. In addition, vendors of managed resources may "
109 "make use of this mechanism if a small subset of a potentially "
110 "large and heterogeneous amount of performance-related data "
111 "needs to be exposed, based on the context in which the data is "
112 "captured. Additional meta data for a metric can be provided by "
113 "subclassing from CIM_BaseMetricDefinition. The "
114 "CIM_BaseMetricDefinition should be associated with the "
115 "CIM_ManagedElement(s) to which it applies.")]
116 class CIM_BaseMetricDefinition : CIM_ManagedElement {
117
118 [Key, Description (
119 "A string that uniquely identifies the metric definition. "
120 "The use of OSF UUID/GUIDs is recommended.")]
121 string Id;
122
123 [Description (
124 "The name of the metric. This name does not have to be "
125 "unique, but should be descriptive and may contain blanks.")]
126 string Name;
127 a.dunfey 1.1
128 [Description (
129 "The data type of the metric. For example, \"boolean\" "
130 "(value=1) or \"datetime\" (=3) may be specified. These "
131 "types represent the datatypes defined for CIM."),
132 ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
133 "11", "12", "13", "14" },
134 Values { "boolean", "char16", "datetime", "real32", "real64",
135 "sint16", "sint32", "sint64", "sint8", "string", "uint16",
136 "uint32", "uint64", "uint8" }]
137 uint16 DataType;
138
139 [Description (
140 "An enumerated value that describes the characteristics of "
141 "the metric, for purposes of performing calculations. The "
142 "property can take one of the following values: \n"
143 "1=\"Non-calculable\" -> a string. Arithmetic makes no "
144 "sense. \n"
145 "2=\"Summable\" -> It is reasonable to sum this value over "
146 "many instances of e.g., UnitOfWork, such as the number of "
147 "files processed in a backup job. For example, if each "
148 a.dunfey 1.1 "backup job is a UnitOfWork, and each job backs up 27,000 "
149 "files on average, then it makes sense to say that 100 "
150 "backup jobs processed 2,700,000 files. \n"
151 "3=\"Non-summable\" -> It does not make sense to sum this "
152 "value over many instances of UnitOfWork. An example would "
153 "be a metric that measures the queue length when a job "
154 "arrives at a server. If each job is a UnitOfWork, and the "
155 "average queue length when each job arrives is 33, it does "
156 "not make sense to say that the queue length for 100 jobs is "
157 "3300. It does make sense to say that the mean is 33."),
158 ValueMap { "1", "2", "3" },
159 Values { "Non-calculable", "Summable", "Non-summable" }]
160 uint16 Calculable;
161
162 [Description (
163 "Identifies the specific units of a value. Examples are "
164 "Bytes, Packets, Jobs, Files, Milliseconds, and Amps.")]
165 string Units;
166
167 [Description (
168 "Defines one or more strings that can be used to refine "
169 a.dunfey 1.1 "(break down) queries against the BaseMetricValues along a "
170 "certain dimension. An example is a transaction name, "
171 "allowing the break down of the total value for all "
172 "transactions into a set of values, one for each transaction "
173 "name. Other examples might be application system or user "
174 "group name. The strings are free format and should be "
175 "meaningful to the end users of the metric data. The strings "
176 "indicate which break down dimensions are supported for this "
177 "metric definition, by the underlying instrumentation.")]
178 string BreakdownDimensions[];
179
180 [Description (
181 "IsContinuous indicates whether or not the metric value is "
182 "continuous or scalar. Performance metrics are an example of "
183 "a linear metric. Examples of non-linear metrics include "
184 "error codes or operational states. Continuous metrics can "
185 "be compared using the \"greater than\" relation.")]
186 boolean IsContinuous;
187
188 [Description (
189 "ChangeType indicates how the metric value changes, in the "
190 a.dunfey 1.1 "form of typical combinations of finer grain attributes such "
191 "as direction change, minimum and maximum values, and "
192 "wrapping semantics. \n"
193 "0=\"Unknown\": The metric designer did not qualify the "
194 "ChangeType. \n"
195 "2=\"N/A\": If the \"IsContinuous\" property is \"false\", "
196 "ChangeType does not make sense and MUST be is set to "
197 "\"N/A\". \n"
198 "3=\"Counter\": The metric is a counter metric. These have "
199 "non-negative integer values which increase monotonically "
200 "until reaching the maximum representable number and then "
201 "wrap around and start increasing from 0. Such counters, "
202 "also known as rollover counters, can be used for instance "
203 "to count the number of network errors or the number of "
204 "transactions processed. The only way for a client "
205 "application to keep track of wrap arounds is to retrieve "
206 "the value of the counter in appropriately short intervals. "
207 "\n4=\"Gauge\": The metric is a gauge metric. These have "
208 "integer or float values that can increase and decrease "
209 "arbitrarily. A gauge MUST NOT wrap when reaching the "
210 "minimum or maximum representable number, instead, the value "
211 a.dunfey 1.1 "\"sticks\" at that number. Minimum or maximum values inside "
212 "of the representable value range at which the metric value "
213 "\"sticks\", may or may not be defined. \n"
214 "Vendors may extend this property in the vendor reserved "
215 "range."),
216 ValueMap { "0", "2", "3", "4", "5..32767", "32768..65535" },
217 Values { "Unknown", "N/A", "Counter", "Gauge", "DMTF Reserved",
218 "Vendor Reserved" },
219 ModelCorrespondence { "CIM_BaseMetricDefinition.IsContinuous" }]
220 uint16 ChangeType;
221
222 [Description (
223 "TimeScope indicates the time scope to which the metric "
224 "value applies. \n"
225 "0=\"Unknown\" indicates the time scope was not qualified by "
226 "the metric designer, or is unknown to the provider. \n"
227 "2=\"Point\" indicates that the metric applies to a point in "
228 "time. On the corresponding BaseMetricValue instances, "
229 "TimeStamp specifies the point in time and Duration is "
230 "always 0. \n"
231 "3=\"Interval\" indicates that the metric applies to a time "
232 a.dunfey 1.1 "interval. On the corresponding BaseMetricValue instances, "
233 "TimeStamp specifies the end of the time interval and "
234 "Duration specifies its duration. \n"
235 "4=\"StartupInterval\" indicates that the metric applies to "
236 "a time interval that began at the startup of the measured "
237 "resource (i.e. the ManagedElement associated by "
238 "MetricDefForMe). On the corresponding BaseMetricValue "
239 "instances, TimeStamp specifies the end of the time "
240 "interval. If Duration is 0, this indicates that the startup "
241 "time of the measured resource is unknown. Else, Duration "
242 "specifies the duration between startup of the resource and "
243 "TimeStamp."),
244 ValueMap { "0", "2", "3", "4", "5..32767", "32768..65535" },
245 Values { "Unknown", "Point", "Interval", "StartupInterval",
246 "DMTF Reserved", "Vendor Reserved" },
247 ModelCorrespondence { "CIM_BaseMetricValue.TimeStamp",
248 "CIM_BaseMetricValue.Duration" }]
249 uint16 TimeScope;
250
251 [Description (
252 "GatheringType indicates how the metric values are gathered "
253 a.dunfey 1.1 "by the underlying instrumentation. This allows the client "
254 "application to choose the right metric for the purpose. \n"
255 "0=\"Unknown\": Indicates that the GatheringType is not "
256 "known. \n"
257 "2=\"OnChange\": Indicates that the CIM metric values get "
258 "updated immediately when the values inside of the measured "
259 "resource change. The values of OnChange metrics truly "
260 "reflect the current situation within the resource at any "
261 "time. An example is the number of logged on users that gets "
262 "updated immediately as users log on and off. \n"
263 "3=\"Periodic\": Indicates that the CIM metric values get "
264 "updated periodically. For instance, to a client "
265 "application, a metric value applying to the current time "
266 "will appear constant during each gathering interval, and "
267 "then jumps to the new value at the end of each gathering "
268 "interval. \n"
269 "4=\"OnRequest\": Indicates that the CIM metric value is "
270 "determined each time a client application reads it. The "
271 "values of OnRequest metrics truly return the current "
272 "situation within the resource if somebody asks for it. "
273 "However, they do not change \"unobserved\", and therefore "
274 a.dunfey 1.1 "subscribing for value changes of OnRequest metrics is NOT "
275 "RECOMMENDED."),
276 ValueMap { "0", "2", "3", "4", "5..32767", "32768..65535" },
277 Values { "Unknown", "OnChange", "Periodic", "OnRequest",
278 "DMTF Reserved", "Vendor Reserved" }]
279 uint16 GatheringType;
280 };
281
282
283 // ==================================================================
284 // BaseMetricValue
285 // ==================================================================
286 [Version ( "2.9.0" ), Description (
287 "Each CIM_BaseMetricValue object represents the instance value "
288 "of a metric. Since the gathering of metric information can "
289 "involve large quantities of information there may be many "
290 "instances of this class. The use of this class as an "
291 "instrumentation source may be inefficient unless the rate of "
292 "metrics are known. The length of time a CIM_BaseMetricValue "
293 "instance exists after the metric information is captured is "
294 "not defined and is implementation dependent. \n"
295 a.dunfey 1.1 "Most metric data values change over time. There are two ways "
296 "of mapping this into CIM_BaseMetricValue objects: The value "
297 "for the next point in time may use the same object and just "
298 "change its properties (such as the value or timestamp), or the "
299 "existing objects remain unchanged and a new object is created "
300 "for the new point in time. The first method is typically used "
301 "for snapshot data and the second method for historical data. "
302 "Which method is used, is indicated by the Volatile property.")]
303 class CIM_BaseMetricValue : CIM_ManagedElement {
304
305 [Key, Description (
306 "Within the scope of the instantiating Namespace, InstanceID "
307 "opaquely and uniquely identifies an instance of this class. "
308 "In order to ensure uniqueness within the NameSpace, the "
309 "value of InstanceID SHOULD be constructed using the "
310 "following 'preferred' algorithm: \n"
311 ": \n"
312 "Where and are separated by a colon ':', and where MUST "
313 "include a copyrighted, trademarked or otherwise unique name "
314 "that is owned by the business entity creating/defining the "
315 "InstanceID, or is a registered ID that is assigned to the "
316 a.dunfey 1.1 "business entity by a recognized global authority (This is "
317 "similar to the <Schema Name>_<Class Name> structure of "
318 "Schema class names.) In addition, to ensure uniqueness MUST "
319 "NOT contain a colon (':'). When using this algorithm, the "
320 "first colon to appear in InstanceID MUST appear between and "
321 ". \n"
322 "is chosen by the business entity and SHOULD not be re-used "
323 "to identify different underlying (real-world) elements. If "
324 "the above 'preferred' algorithm is not used, the defining "
325 "entity MUST assure that the resultant InstanceID is not "
326 "re-used across any InstanceIDs produced by this or other "
327 "providers for this instance's NameSpace. \n"
328 "For DMTF defined instances, the 'preferred' algorithm MUST "
329 "be used with the set to 'CIM'.")]
330 string InstanceID;
331
332 [Required, Description (
333 "The key of the BaseMetricDefinition instance for this "
334 "CIM_BaseMetricValue instance value."),
335 ModelCorrespondence { "CIM_BaseMetricDefinition.Id" }]
336 string MetricDefinitionId;
337 a.dunfey 1.1
338 [Description (
339 "A descriptive name for the element to which the metric "
340 "value belongs (i.e., the measured element). This property "
341 "is required by behavior if there is no association defined "
342 "to a ManagedElement, but may be used in other cases to "
343 "provide supplemental information. This allows metrics to be "
344 "captured independently of any ManagedElement. An example is "
345 "where a metric value belongs to a combination of elements, "
346 "such as the input and output ports of the traffic in a "
347 "switch. If there are multiple ManagedElements associated "
348 "with the metric value, then usually there is one that "
349 "naturally belongs to the metric value and that one should "
350 "be used to create the supplemental information. The "
351 "property is not meant to be used as a foreign key to search "
352 "on the measured element. Instead, the association to the "
353 "ManagedElement should be used.")]
354 string MeasuredElementName;
355
356 [Description (
357 "Identifies the time when the value of a metric instance is "
358 a.dunfey 1.1 "computed. Note that this is different from the time when "
359 "the instance is created. For a given CIM_BaseMetricValue "
360 "instance, the TimeStamp changes whenever a new measurement "
361 "snapshot is taken if Volatile is true. A managmenet "
362 "application may establish a time series of metric data by "
363 "retrieving the instances of CIM_BaseMetricValue and sorting "
364 "them according to their TimeStamp."),
365 ModelCorrespondence { "CIM_BaseMetricDefinition.TimeScope",
366 "CIM_BaseMetricValue.Duration" }]
367 datetime TimeStamp;
368
369 [Description (
370 "Property that represents the time duration over which this "
371 "metric value is valid. This property should not exist for "
372 "timestamps that apply only to a point in time but should be "
373 "defined for values that are considered valid for a certain "
374 "time period (ex. sampling). If the \"Duration\" property "
375 "exists and is nonNull, the TimeStamp is to be considered "
376 "the end of the interval."),
377 ModelCorrespondence { "CIM_BaseMetricDefinition.TimeScope",
378 "CIM_BaseMetricValue.TimeStamp" }]
379 a.dunfey 1.1 datetime Duration;
380
381 [Required, Description (
382 "The value of the metric represented as a string. Its "
383 "original data type is specified in "
384 "CIM_BaseMetricDefinition.")]
385 string MetricValue;
386
387 [Description (
388 "If present, specifies one BreakdownDimension from the "
389 "BreakdownDimensions array defined in the associated CIM_ "
390 "BaseMetricDefinition. This is the dimension along which "
391 "this set of metric values is broken down. For a description "
392 "of the concept, see the class CIM_BaseMetricDefinition.")]
393 string BreakdownDimension;
394
395 [Description (
396 "Defines a value of the BreakdownDimension property defined "
397 "for this metric value instance. For instance, if the "
398 "BreakdownDimension is \"TransactionName\", this property "
399 "could name the actual transaction to which this particular "
400 a.dunfey 1.1 "metric value applies.")]
401 string BreakdownValue;
402
403 [Description (
404 "If true, Volatile indicates that the value for the next "
405 "point in time may use the same object and just change its "
406 "properties (such as the value or timestamp). If false, the "
407 "existing objects remain unchanged and a new object is "
408 "created for the new point in time.")]
409 boolean Volatile;
410 };
411
412
413 // ===================================================================
414 // MetricInstance
415 // ===================================================================
416 [Association, Version ( "2.7.0" ), Description (
417 "Weak association of metric value objects with their metric "
418 "definition. This association ties an instance of "
419 "CIM_BaseMetricValue to its CIM_BaseMetricDefinition; it is "
420 "weak because the existence of a CIM_BaseMetricValue depends on "
421 a.dunfey 1.1 "the existence of its associated CIM_BaseMetricDefinition: An "
422 "instance of CIM_BaseMetricValue must not exist without being "
423 "associated to its corresponding CIM_BaseMetricDefinition.")]
424 class CIM_MetricInstance : CIM_Dependency {
425
426 [Override ( "Antecedent" ), Min ( 1 ), Max ( 1 ), Description (
427 "The CIM_BaseMetricDefinition for this particular "
428 "CIM_BaseMetricValue.")]
429 CIM_BaseMetricDefinition REF Antecedent;
430
431 [Override ( "Dependent" ), Description (
432 "A CIM_BaseMetricValue instance holding the Value.")]
433 CIM_BaseMetricValue REF Dependent;
434 };
435
436
437 // ===================================================================
438 // MetricDefForME
439 // ===================================================================
440 [Association, Version ( "2.7.0" ), Description (
441 "This association ties a CIM_BaseMetricDefinition to a "
442 a.dunfey 1.1 "CIM_ManagedElement to define metrics for the latter. The "
443 "metrics definition is given context by the ManagedElement, "
444 "which is why the definition is dependent on the element.")]
445 class CIM_MetricDefForME : CIM_Dependency {
446
447 [Override ( "Antecedent" ), Description (
448 "The CIM_ManagedElement that can have metrics of this type "
449 "associated with it.")]
450 CIM_ManagedElement REF Antecedent;
451
452 [Override ( "Dependent" ), Description (
453 "A CIM_BaseMetricDefinition for a CIM_ManagedElement.")]
454 CIM_BaseMetricDefinition REF Dependent;
455 };
456
457
458 // ===================================================================
459 // MetricForME
460 // ===================================================================
461 [Association, Version ( "2.7.0" ), Description (
462 "This association links a ManagedElement to the metric values "
463 a.dunfey 1.1 "being maintained for it.")]
464 class CIM_MetricForME : CIM_Dependency {
465
466 [Override ( "Antecedent" ), Description (
467 "ManagedElement to which the metric values belong.")]
468 CIM_ManagedElement REF Antecedent;
469
470 [Override ( "Dependent" ), Description (
471 "A metric value for the ManagedElement.")]
472 CIM_BaseMetricValue REF Dependent;
473 };
474
475
476 // ==================================================================
477 // end of file
478 // ==================================================================
|