PCP Redis

Introduction

This data source provides a native interface between Grafana and Performance Co-Pilot (PCP), allowing PCP metric data to be presented in Grafana panels, such as graphs, tables, heatmaps, etc. Under the hood, the data source makes REST API query requests to the PCP pmproxy service, which can be running either locally or on a remote host. The pmproxy daemon can be local or remote and uses the Redis time-series database (local or remote) for persistent storage.

Setup Redis and PCP daemons

$ sudo dnf install redis
$ sudo systemctl start redis pmlogger pmproxy

Query Language

Syntax: [metric.name] '{metadata qualifiers}'

Examples:

kernel.all.load
kernel.all.load{hostname == "web01"}
network.interface.in.bytes{agent == "linux"}

Documentation of the pmseries query language can be found in the man page of pmseries.

Query Formats

Time Series

Returns the data as time series. If there are multiple series for a metric, all series will be shown as separate targets (i.e., a line in a line graph). For metrics with instance domains, each instance is shown as a separate target. If there are multiple queries defined, all values will be combined in the same graph.

Table

Transforms the data for the table panel. Two or more queries are required, and it will transform every metric into a column, and every instance into a row. The latest values of the currently selected timeframe will be displayed.

Legend Format Templating

The following variables can be used in the legend format box:

Variable

Description

Example

$expr

query expression

rate(disk.dm.avactive)

$metric

metric name

disk.dev.read

$metric0

last part of metric name

read

$instance

instance name

sda

$some_label

label value

anything

Query Functions

The following functions are available for dashboard variables of type Query:

Function

Description

Example

metrics([pattern])

returns all metrics matching a glob pattern (if no pattern is defined, all metrics are returned)

metrics(disk.*)

label_names([pattern])

returns all label names matching a glob pattern (if no pattern is defined, all metrics are returned)

label_names(host*)

label_values(label)

returns all label values for the specified label

label_values(hostname)