HistoryViewLinks to this page Revision from: 2012 October 11 | 04:08 pm
This is the revision from 2012 October 11 at 04:08 pmView the current live version of the article.

Mapping “Real World” Metrics to the Performance Monitoring Syntax - Samples

The table below needs to be re-synched with the Mother of All Examples file that follows it

  • ems:metric resources that lack pm:metricQualifier are allowed. They may signal qualification that is implicit from the context.
  • If a Performance Monitoring provider exposes any of the metrics below, they MUST be mapped to ems:Measure resources as shown. Other predicates MAY be present, for example dcterms:title; their values are not constrained by the mapping below. Other values of the predicates shown below MAY also be present within the constraints of the resource definition, for example additional qualifier values or RDF types.
Quantity exposed ems:numericValue rdf:type ems:metric pm:metricQualifier ems:unitOfMeasure
Section: Resource usage/consumption metrics
CPU Utilization 10 ems:Measure pm:ResourceUsage pm:CPU
pm:Utilization
dbp:Percentage
Virtual Memory Utilization 50 ems:Measure pm:ResourceUsage pm:Virtual
pm:Memory
dbp:Percentage
Real Memory Utilization 50 ems:Measure pm:ResourceUsage pm:Real
pm:Memory
dbp:Percentage
Percentage Disk Space Used 50 ems:Measure pm:ResourceUsage pm:Disk dbp:Percentage
Heap Usage 52 ems:Measure pm:ResourceUsage pm:Heap dbp:Percentage
% Buffer Pool Used 45 ems:Measure pm:ResourceUsage pm:BufferPool dbp:Percentage
Percentage of Time Thread Pool Maxed 2 ems:Measure pm:ResourceExhausted pm:ThreadPool dbp:Percentage
Percentage of Time JCA Thread Pool Maxed 5 ems:Measure pm:ResourceExhausted pm:ThreadPool
pm:JCA
dbp:Percentage
Percentage of Time DB Thread Pool Maxed 21 ems:Measure pm:ResourceExhausted pm:ThreadPool
pm:Database
dbp:Percentage
Percentage by which space allocated over-commits a Disk 150 ems:Measure pm:ResourceExhausted pm:Disk dbp:Percentage
Section: Available resource metrics
Percentage Free Memory After Garbage Collection 32 ems:Measure pm:ResourceAvailable pm:Virtual
pm:Memory
dbp:Percentage
VM CPU Percent Ready 56 ems:Measure pm:ResourceAvailable pm:CPU
pm:Virtual
dbp:Percentage
CPU Speed 1024 ems:Measure pm:ResourceAvailable pm:CPU qudt:Hertz
Section: Request metrics
Average Login Request Failure Rate 10.5 ems:Measure pm:Request pm:Login
pm:Failure
pm:Average
qudt:PerSecond
Average Login Request Failures Per Minute 2.4 ems:Measure pm:Request pm:Login
pm:Average
pm:PerMinute
Number of failed SQL Statements 310 ems:Measure pm:Request pm:SQL
pm:Failure
qudt:Unitless
Garbage Collection Count 72787723 ems:Measure pm:Request pm:GarbageCollection dbp:Count_data
Request Failure Rate Per Minute 25.3 ems:Measure pm:Request pm:Failure pm:PerMinute
Request Failure Count 45911 ems:Measure pm:Request pm:Failure dbp:Count_data
Request Rate Per Second 1339.2 ems:Measure pm:Request no qualifier value qudt:PerSecond
Section: Response time metrics
Response Time 4.500 ems:Measure dbp:Response_time_(technology) qudt:Second
Average JMS Get Time 3.000 ems:Measure pm:Request pm:JMS
pm:Get
pm:Average
qudt:Second
ems:Measure

Table above in RDF

@prefix pm:     <http://open-services.net/ns/perfmon#> .
@prefix oslc:   <http://open-services.net/ns/core#> .
@prefix xsd:    <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ex:     <http://example.org#> .  
@prefix ems:    <http://open-services.net/ns/ems#> .
@prefix crtv:   <http://open-services.net/ns/crtv#> .
@prefix rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix bp:     <http://open-services.net/ns/basicProfile#> .
@prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#>.

@base <http://perfmon-provider.example.org/> .

# Intent is to match table at http://open-services.net/wiki/performance-monitoring/OSLC-Performance-Monitoring-2.0-Appendix-A:-Samples/

<rec001>   # a record instance
    a pm:PerformanceMonitoringRecord ;
       # see http://open-services.net/bin/view/Main/MetricsEmsMeasure?sortcol=table;up=#Properties
       #     for how SWProjMgmtWG defines a single metric value
       # see http://open-services.net/bin/view/Main/MetricsEMS10RestApiStandardUris?sortcol=table;up=#ems_Metric
       #     for existing ems:metric values defined by SWProjMgmtWG
       ems:observes             <rec001#cpuutil10> ;  
       ems:observes             <rec001#virtmemutil50> ; 
       ems:observes             <rec001#realmemutil50> ;
       ems:observes             <rec001#diskspace50> ;
       ems:observes             <rec001#heapspace52> ;
       ems:observes             <rec001#bufferpoolused45> ;
       # 
       ems:observes             <rec001#threadpoolmaxed02> ;
       ems:observes             <rec001#jcathreadpoolmaxed05> ;
       ems:observes             <rec001#dbthreadpoolmaxed21> ;
       ems:observes             <rec001#diskovercommit150> ;
       # 
       ems:observes             <rec001#postgcfreemem32> ;
       ems:observes             <rec001#vmcpuready56> ;
       ems:observes             <rec001#cpuspeed1024> ;
       # 
       ems:observes             <rec001#avgloginfailsperminute2.4> ;
       ems:observes             <rec001#numfailedsqlstmts310> ;
       ems:observes             <rec001#garbagecollectioncount72787723> ;
       ems:observes             <rec001#avgrequestfailurerate25.3> ;
       ems:observes             <rec001#requestfailurecount45911> ;
       ems:observes             <rec001#requestfailurerate1339.2> ;
       # 
       ems:observes             <rec001#resptime4.500> ;
       ems:observes             <rec001#avgjmsgettime3.000> ;
#      ems:observes             <rec001#> ;
      # 
       pm:collectedAt          "2012-06-13T19:48:09.5Z" ; 
       #
       # Link perf mon record to CS.  They might be separate records, but in this ex they are the same record.
       dcterms:isPartOf         <recCS001> ;    # link to another resource
       # NO time zone on following implementation-specific extension property
       # This is legal in xsd:dateTime, but not great for interop
       ex:aLocalTime           "2002-05-30T09:30:10.5" ;
       ex:fooBar                0;
.
# 
<rec001#cpuutil10>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "CPU Utilization" ;
            ems:metric          <pm:CpuUsed> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    10 ;
.
# 
<rec001#virtmemutil50>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Virtual Memory Utilization" ;
            ems:metric          <pm:VirtualMemoryUsed> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    50 ;
.
# 
<rec001#realmemutil50>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Real Memory Utilization" ;
            ems:metric          <pm:RealMemoryUsed> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    50 ;
.
# 
<rec001#diskspace50>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Percentage Disk Space Used" ;
            ems:metric          <pm:DiskSpaceUsed> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    50 ;
.
# 
<rec001#heapspace52>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Heap Usage" ;
            ems:metric          <pm:HeapMemoryUsed> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    52 ;
.
# 
<rec001#bufferpoolused45>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "% Buffer Pool Used" ;
            ems:metric          <pm:BufferPoolUsed> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    45 ;
.
# 
<rec001#threadpoolmaxed02>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Percentage of Time Thread Pool Maxed" ;
            ems:metric          <pm:TimeThreadPoolExhausted> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    2 ;
.
# 
<rec001#jcathreadpoolmaxed05>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Percentage of Time JCA Thread Pool Maxed" ;
            ems:metric          <pm:TimeJCAThreadPoolExhausted> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    5 ;
.
# 
<rec001#dbthreadpoolmaxed21>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Percentage of Time DB Thread Pool Maxed" ;
            ems:metric          <pm:TimeDatabaseThreadPoolExhausted> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    21 ;
.
# 
<rec001#diskovercommit150>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Percentage by which space allocated over-commits a Disk" ;
            ems:metric          <pm:DiskSpaceOverCommitAmount> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    150 ;
.
# 
<rec001#postgcfreemem32>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Percentage Free Memory After Garbage Collection" ;
            ems:metric          <pm:MemoryAvailableAfterGarbageCollection> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    32 ;
.
# 
<rec001#vmcpuready56>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "VM CPU Percent Ready" ;
            ems:metric          <pm:VmCpuReady> ;
            ems:unitOfMeasure   <dbp:Percentage> ;
            ems:numericValue    56 ;
.
# 
<rec001#cpuspeed1024>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "CPU Speed" ;
            ems:metric          <pm:CpuSpeed> ;
            ems:unitOfMeasure   <qudt:Hertz> ;
            ems:numericValue    1024 ;
.
# 
<rec001#avgloginfailsperminute2.4>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Average Login Request Failures Per Minute" ;
            ems:metric          <pm:AvgLoginRequestFailures> ;
            ems:unitOfMeasure   <pm:PerMinute> ;
            ems:numericValue    2.4 ;
.
# 
<rec001#numfailedsqlstmts310>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Number of failed SQL Statements" ;
            ems:metric          <pm:SqlStatmentFailures> ;
            ems:unitOfMeasure   <dbp:Count_data> ;  # fix on wiki
            ems:numericValue    310 ;
.
# 
<rec001#garbagecollectioncount72787723>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Garbage Collection Count" ;
            ems:metric          <pm:GarbageCollectionRequests> ;
            ems:unitOfMeasure   <dbp:Count_data> ;  # fix on wiki
            ems:numericValue    72787723 ;
.
# 
<rec001#avgrequestfailurerate25.3>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Request Failure Rate Per Minute" ;
            ems:metric          <pm:AvgRequestFailures> ;
            ems:unitOfMeasure   <pm:PerMinute> ;
            ems:numericValue    25.3 ;
.
# 
<rec001#requestfailurecount45911>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Request Failure Count" ;
            ems:metric          <pm:RequestFailures> ;
            ems:unitOfMeasure   <dbp:Count_data> ;  # fix on wiki
            ems:numericValue    45911 ;
.
# 
<rec001#requestfailurerate1339.2>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Request Rate Per Second" ;
            ems:metric          <pm:RequestMetrics> ;
            ems:unitOfMeasure   <qudt:PerSecond> ;
            ems:numericValue    1339.2 ;
.
# 
<rec001#resptime4.500>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Response Time" ;
            ems:metric          <pm:ResponseTimeMetrics> ;
            ems:unitOfMeasure   <qudt:Second> ;
            ems:numericValue    4.500 ;
.
# 
<rec001#avgjmsgettime3.000>
            a                   ems:Measure ; # rdf:type
            dcterms:title       "Average JMS Get Time" ;
            ems:metric          <pm:AvgJmsGetTime> ;
            ems:unitOfMeasure   <qudt:Second> ;
            ems:numericValue    3.000 ;
.

ITM Example - using fenced code blocks, see advanced syntax

<?xml version="1.0"?> 
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:oslc="http://open-services.net/ns/core#"
         xmlns:crtv="http://open-services.net/ns/crtv#"
         xmlns:dcterms="http://purl.org/dc/terms/"
         xmlns:ems="http://open-services.net/ns/ems#"
         xmlns:pm="http://open-services.net/ns/perfmon#"
         xmlns:dbpedia="http://dbpedia.org"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">

ITM Example - original from 2012-09-25

<?xml version="1.0"?> 
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:oslc="http://open-services.net/ns/core#"
     xmlns:crtv="http://open-services.net/ns/crtv#"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:ems="http://open-services.net/ns/ems#"
     xmlns:pm="http://open-services.net/ns/perfmon#"
     xmlns:dbpedia="http://dbpedia.org"
     xmlns:foaf="http://xmlns.com/foaf/0.1/">
<rdf:Description rdf:about="http://itmprovider.org/rec001">
    <rdf:type rdf:resource="http://open-services.net/ns/crtv#ComputerSystem"/>
    <!-- Computer System naming properties -->
    <crtv:manufacturer>IBM</crtv:manufacturer>
    <crtv:model>2007CTO</crtv:model>
    <crtv:serialNumber>LG3G3K2</crtv:serialNumber>
    <crtv:fqdn>
        maxwell.raleigh.ibm.com
    </crtv:fqdn>

    <oslc:serviceProvider>
        itmprovider.org
    </oslc:serviceProvider>

    <dcterms:date>2012-06-13T19:48:09.5Z</dcterms:date>

    <!-- Tells client there are performance metrics associated with ComputerSystem -->
    <rdf:type rdf:resource="http://open-services.net/ns/perfmon#PerformanceMonitoringRecord"/>

    <!-- Processes -->
    <pm:process rdf:resource="http://itmprovider.org/rec001#iexplore.exe"/>

    <!-- Disks -->
    <pm:disk rdf:resource="http://itmprovider.org/rec001#disk1"/>
    <pm:disk rdf:resource="http://itmprovider.org/rec001#disk2"/>

    <!-- Agents -->
    <pm:monitoringAgent rdf:resource="http://itmprovider.org/rec001#knt"/>
</rdf:Description>

<rdf:Description rdf:about="http://itmprovider.org/rec001#disk1">
    <rdf:type rdf:resource="http://open-services.net/ns/crtv#StorageVolume"/>
    <dcterms:title>
        C:\
    </dcterms:title>
    <ems:observes rdf:resource="http://itmprovider.org/rec001#disk1_spaceused"/>
</rdf:Description>

<rdf:Description rdf:about="http://itmprovider.org/rec001#disk1_spaceused">
    <rdf:type rdf:resource="http://open-services.net/ns/ems#Measure"/>
    <dcterms:title>
        Percentage Space Used
    </dcterms:title>
    <ems:metric rdf:resource="http://open-services.net/ns/perfmon#PercentageSpaceUsed"/>
    <ems:numericValue rdf:datatype="http://www.w3.org/2001/XMLSchema#double">
        30
    </ems:numericValue>
    <ems:unitOfMeasure rdf:resource="http://dbpedia.org/Percentage"/>
</rdf:Description>

<rdf:Description rdf:about="http://itmprovider.org/rec001#disk2">
    <rdf:type rdf:resource="http://open-services.net/ns/crtv#StorageVolume"/>
    <dcterms:title>
        D:\
    </dcterms:title>
    <ems:observes rdf:resource="http://itmprovider.org/rec001#disk2_spaceused"/>
</rdf:Description>

<rdf:Description rdf:about="http://itmprovider.org/rec001#disk2_spaceused">
    <rdf:type rdf:resource="http://open-services.net/ns/ems#Measure"/>
    <dcterms:title>
        Percentage Space Used
    </dcterms:title>
    <ems:metric rdf:resource="http://open-services.net/ns/perfmon#PercentageSpaceUsed"/>
    <ems:numericValue rdf:datatype="http://www.w3.org/2001/XMLSchema#double">
        20
    </ems:numericValue>
    <ems:unitOfMeasure rdf:resource="dbpedia.org/Percentage"/>
</rdf:Description>

<rdf:Description rdf:about="http://itmprovider.org/rec001#iexplore">
    <rdf:type rdf:resource="http:open-services.net/ns/crtv#Process"/>
    <dcterms:title>
        iexplore.exe
    </dcterms:title>
    <ems:observes rdf:resource="http://itmprovider.org/rec001#iexplore-virtMem"/>
    <ems:observes rdf:resource="http://itmprovider.org/rec001#iexplore-realMem"/>
    <ems:observes rdf:resource="http://itmprovider.org/rec001#iexplore-cpuUtil"/>
</rdf:Description>

<rdf:Description rdf:about="http://itmprovider.org/rec001#iexplore-virtMem">
    <rdf:type rdf:resource="http://open-services.net/ns/ems#Measure"/>
    <dcterms:title>
        Virtual Memory Utilization
    </dcterms:title>
    <ems:metric rdf:resource="http://open-services.net/ns/perfmon#VirtualMemoryUtilization"/>
    <ems:numericValue rdf:datatype="http://www.w3.org/2001/XMLSchema#double">
        10
    </ems:numericValue>
    <ems:unitOfMeasure rdf:resource="http://dbpedia.org/Percentage"/>
</rdf:Description>

<rdf:Description rdf:about="http://itmprovider.org/rec001#iexplore-realMem">
    <rdf:type rdf:resource="http://open-services.net/ns/ems#Measure"/>
    <dcterms:title>
        Real Memory Utilization
    </dcterms:title>
    <ems:metric rdf:resource="http://open-services.net/ns/perfmon#RealMemoryUtilization"/>
    <ems:numericValue rdf:datatype="http://www.w3.org/2001/XMLSchema#double">
        5
    </ems:numericValue>
    <ems:unitOfMeasure rdf:resource="http://dbpedia.org/Percentage"/>
</rdf:Description>

<rdf:Description rdf:about="http://itmprovider.org/rec001#iexplore-cpuUtil">
    <rdf:type rdf:resource="http://open-services.net/ns/ems#Measure"/>
    <dcterms:title>
        CPU Utilization
    </dcterms:title>
    <ems:metric rdf:resource="http://open-services.net/ns/perfmon#CPUUtilization"/>
    <ems:numericValue rdf:datatype="http://www.w3.org/2001/XMLSchema#double">
        5
    </ems:numericValue>
    <ems:unitOfMeasure rdf:resource="http://dbpedia.org/Percentage"/>
</rdf:Description>

<rdf:Description rdf:about="http://itmprovider.org/rec001#knt">
    <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
    <dcterms:title>
        Windows OS Agent
    </dcterms:title>
    <pm:availabilityStatus rdf:resource="http://open-services.net/ns/perfmon#NotRunning"/>
</rdf:Description>
</rdf:RDF>