summaryrefslogtreecommitdiff
path: root/man/man3/pmwebapi.3
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/pmwebapi.3')
-rw-r--r--man/man3/pmwebapi.3252
1 files changed, 252 insertions, 0 deletions
diff --git a/man/man3/pmwebapi.3 b/man/man3/pmwebapi.3
new file mode 100644
index 0000000..e4ad6f4
--- /dev/null
+++ b/man/man3/pmwebapi.3
@@ -0,0 +1,252 @@
+'\" t macro stdmacro
+.\"
+.\" Copyright (c) 2013-2014 Red Hat, Inc. All Rights Reserved.
+.\"
+.\" This program is free software; you can redistribute it and/or modify it
+.\" under the terms of the GNU General Public License as published by the
+.\" Free Software Foundation; either version 2 of the License, or (at your
+.\" option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful, but
+.\" WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+.\" or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" for more details.
+.\"
+.\"
+.TH PMWEBAPI 3 "PCP" "Performance Co-Pilot"
+.SH NAME
+\f3PMWEBAPI\f1 \- introduction to the Performance Metrics Web Application Programming Interface
+
+.de SAMPLE
+.br
+.RS
+.nf
+.nh
+..
+.de ESAMPLE
+.hy
+.fi
+.RE
+..
+
+.SH OVERVIEW
+
+The PMWEBAPI interface is a binding of a subset of the PMAPI to the
+web. It uses HTTP as transport, REST as organizational style for
+request/parameter encoding (the GET and POST methods are
+interchangeable), and JSON as response encoding. A context identifier
+is used as a persistent way to refer to PMAPI contexts across related
+web requests. These context identifiers expire after a configurable
+period of disuse. Errors generally result in HTTP-level error responses.
+An
+.nh
+.B Access-Control-Allow-Origin: *
+.hy
+header is added to all JSON responses.
+
+.SH CONTEXT CREATION: pmNewContext
+
+To create a new web context identifier, a web client invokes:
+.TP
+.B /pmapi/context?local=ANYTHING
+Creates a PM_CONTEXT_LOCAL PMAPI context.
+.TP
+.B /pmapi/context?hostname=STRING
+.TP
+.B /pmapi/context?hostspec=STRING
+Creates a PM_CONTEXT_HOST PMAPI context with the given host name and/or extended
+specification. If the host specification contains a userid/password combination,
+then the corresponding pmapi context operations will require HTTP Basic authentication
+credentials with matching userid/password.
+.TP
+.B /pmapi/context?archivefile=ARCHIVE
+Creates a PM_CONTEXT_ARCHIVE PMAPI context with the given file name.
+.PP
+In addition, the web client may add the parameter
+.B &polltimeout=MMMM
+for a maximum interval (in seconds) between expected accesses to the
+given context. This value is limited by pmwebd configuration, and is
+a courtesy to allow pmwebd to free up memory earlier in case of sudden
+web application shutdown.
+
+If successful, the response from these requests is a JSON document of the form:
+
+.SAMPLE
+{ "context" : NNNNN }
+.ESAMPLE
+
+The number (a 32-bit unsigned decimal) is then used in all later operations.
+
+.SH PMAPI OPERATIONS
+
+The general form of the requests is as follows:
+.B /pmapi/NNNNN/OPERATION
+where
+.TP
+.B /pmapi
+is the fixed prefix for all PMWEBAPI operations,
+.TP
+.B NNNNN
+is a PMWEBAPI context number returned from a context-creation call, or
+assigned permanently at pmwebd startup, and
+.TP
+.B OPERATION?PARAM1=VALUE2&PARAM2=VALUE2
+identifies the operation and its URL-encoded parameters. Some
+parameters may be optional.
+
+.SS METRIC METADATA: pmLookupName, pmLookupDesc, pmTraversePMNS_r
+
+The general form of the requests is as follows:
+.TP
+.B /pmapi/NNNNN/_metric
+Traverse the entire PMNS.
+.TP
+.B /pmapi/NNNNN/_metric?prefix=NAME
+Traverse the subtree of PMNS with the prefix NAME.
+.PP
+The response is a JSON document that provides the metric metadata
+as an array. For example:
+
+.SAMPLE
+{ "metrics": [
+ { "name":"foo.bar", "pmID":PPPP, "indom":DDDD,
+ "type":"32", "sem":"instant", "units":"MHz",
+ "text-oneline":"foo bar", "text-help":"blah blah blah" },
+ { "name":"foo.bar2", ... }
+ ...
+ ] }
+.ESAMPLE
+
+Most of the fields are self-explanatory.
+.TP
+PPPP
+the PMID
+.TP
+DDDD
+the instance domain
+.TP
+type
+from pmTypeStr
+.TP
+units
+from pmUnitsStr
+.TP
+sem
+an abbreviation of the metric semantic:
+.TS
+l l.
+PM_SEM_COUNTER "counter"
+PM_SEM_INSTANT "instant"
+PM_SEM_DISCRETE "discrete"
+.TE
+
+.SS METRIC VALUE: pmFetch
+
+The general form of the requests is as follows:
+.TP
+.B /pmapi/NNNNN/_fetch?names=NAME1,NAME2
+Fetch current values for given named metrics.
+.TP
+.B /pmapi/NNNNN/_fetch?pmids=PPPP1,PPPP2
+Fetch current values for given PMIDs.
+.PP
+The response is a JSON document that provides the values for
+all requested metrics, for all their instances.
+
+.SAMPLE
+{ "timestamp": { "s":SEC, "us":USEC },
+ "values": [
+ { "pmid":PPPP1, "name":"NAME1",
+ "instances:" [
+ { "instance":IIII1, "value":VALUE1 }
+ { "instance":IIII2, "value":VALUE2 }
+ ...
+ ] },
+ { "pmid":PPPP2, "name":"NAME2", ... }
+ ...
+ ] }
+.ESAMPLE
+
+Most of the fields are self-explanatory. Numeric metric types
+are represented as JSON integer or floating-point values. Strings
+are passed verbatim, except that non-ASCII values are replaced
+with a Unicode 0xFFFD REPLACEMENT CHARACTER code. Event type metrics
+are not currently supported.
+
+.SS INSTANCE DOMAINS METADATA: pmGetInDom, pmNameInDom, pmLookupInDom
+
+The general form of the requests is as follows:
+.TP
+.B /pmapi/NNNN/_indom?indom=DDDD
+List instances of the given instance domain.
+.TP
+.B /pmapi/NNNN/_indom?name=NAME
+List instances of the instance domain belonging to the named metric.
+.PP
+In addition, either query may be suffixed with:
+.TP
+.B &instance=IIII,JJJJ
+Restrict listings to given instance code numbers.
+.TP
+.B &iname=INAME1,INAME2
+Restrict listings to given instance names.
+.PP
+
+The response is a JSON document that provides the metric metadata
+as an array. For example:
+
+.SAMPLE
+{ "indom":DDDD,
+ "instances": [
+ { "instance":IIII, "name":"INAME" }
+ ...
+ ] }
+.ESAMPLE
+
+.SS INSTANCE PROFILE: pmAddProfile, pmDelProfile
+
+.TP
+.B /pmapi/NNNN/_profile_reset?
+These are not currently supported.
+.TP
+.B /pmapi/NNNN/_profile_reset?indom=DDDD
+These are not currently supported.
+.TP
+.B /pmapi/NNNN/_profile_add?indom=DDDD&instance=IIII,JJJJ
+These are not currently supported.
+.TP
+.B /pmapi/NNNN/_profile_add?indom=DDDD&iname=IIII,JJJJ
+These are not currently supported.
+.TP
+.B /pmapi/NNNN/_profile_del?indom=DDDD&instance=JJJJ
+These are not currently supported.
+.TP
+.B /pmapi/NNNN/_profile_del?indom=DDDD&iname=INAME1,INAME2
+These are not currently supported.
+
+.SS DERIVED METRICS: pmRegisterDerived
+
+.TP
+.B /pmapi/NNNNN/_derive?name=NAME&expr=EXPRESSION
+These are not currently supported.
+
+.SS CONTEXT COPY: pmDupContext
+
+.TP
+.B /pmapi/NNNNN/copy
+These are not currently supported.
+
+.SS CONTEXT CLOSE: pmDestroyContext
+
+.TP
+.B /pmapi/NNNNN/destroy
+This is not likely to be supported, as it is destructive and would offer
+a tempting target to brute-force attackers. Instead, the pmwebd timeout
+is used to automatically free unused contexts.
+
+.SH SEE ALSO
+.BR PCPIntro (1),
+.BR PCPIntro (3),
+.BR pmwebd (3),
+and
+.BR PMAPI (3)