Lines expression syntax:
lines:
- expression: metric(a='b', c='d*', e=['f', 'g*']) #example some load averages
 
- select all metrics with labels matching values
 
a='b' matches metrics with label a equals fixed string 'b' 
c='d*' matches metrics with label c starts with 'd' 
e=['f', 'g*'] matches metrics with label e equals fixed string 'f' or starts with 'g' 
lines:
- expression: rate(EXPR) #example python cpu_user
 
- derivative for each metric in 
EXPR 
lines:
- expression: counter_rate(EXPR) #example python cpu_user
 
- derivative for counters – like 
rate but doesn`t spikes for counter reset 
lines:
- expression: sum(EXPR [, ignore_nan=True|False]) #example all python's cpu_user and cpu_system
 
- sum of all metrics in 
EXPR 
- If 
ignore_nan=False, then result is NaN if one metric in EXPR was NaN. Default is ignore_nan=True 
lines:
- expression: max(EXPR)
- expression: min(EXPR)
- expression: std(EXPR) #standard deviation
- expression: average(EXPR) #same as mean
- expression: mean(EXPR) #example mean load average
 
- at each time-point take aggregation function for all metrics in 
EXPR  
lines:
- expression: sum_by(label_name, [other_label,] EXPR) #example processes cpu usage
- expression: max_by(label_name, [other_label,] EXPR)
- expression: min_by(label_name, [other_label,] EXPR)
- expression: std_by(label_name, [other_label,] EXPR) #standard deviation
- expression: mean_by(label_name, [other_label,] EXPR) #same as average
- expression: average_by(label_name, [other_label,] EXPR) #example mean load average
 
- group all metrics in 
EXPR by value of label_name label and aggregate metrics in the same group into one metric 
- Accepts parametr
ignore_nan=False|True, just like ordinary sum 
lines:
- expression: win_sum(window_size_in_seconds, EXPR)
- expression: win_mean(window_size_in_seconds, EXPR) #same as win_avg
- expression: win_min(window_size_in_seconds, EXPR)
- expression: win_max(window_size_in_seconds, EXPR)
- expression: win_std(window_size_in_seconds, EXPR)
- expression: win_avg(window_size_in_seconds, EXPR) #example mean load average on hour window
 
- Applies specified function 
sum|mean|min|max|std for each metric in EXPR on moving time window window_size_in_seconds. See Moving average 
lines:
- expression: cum_sum(EXPR) #example
 
- Cumulative sum for each metric in 
EXPR. 
lines:
- expression: top(N, EXPR[, include_other=true|false][, by="exp"|"sum"|"max"]) #example top 5 processes by CPU
- expression: bottom(N, EXPR[, by="exp"|"sum"|"max"])
 
- show top|bottom 
N metrics from EXPR by ews|exp(exponentialy weighted sum) or sum or max in current timespan 
lines:
- expression: filter_with(EXPR, FILTER_EXPR) #example memory usage of long running processes
 
- filters metrics in 
EXPR returning only those for which FILTER_EXPR not zero (or NaN). 
lines:
- expression: const(v[, label="value", ...]) #example
 
- constant metric with value 
v and additonal labels for legend 
lines:
- expression: time()
 
- timestamp from x-axis as y-value
 
lines:
- expression: from_string("1,2,3,3,2,1,", [,repeat=false] [,sep=' '] [,label="value", ...]) #example
 
- construct metric from string like 
"1,2,3,3,2,1,", where each number becomes the value of the metric for corresponding minute 
lines:
- expression: defined(EXPR) #example all processes
 
1 if there is data from EXPR in this time-point or 0 if there is NaN 
lines:
- expression: replace(old_val, new_val, EXPR) #example
- expression: n2z(EXPR) #shortcut for "replace(nan, 0, EXPR)"
- expression: zero_if_none(EXPR) #shortcut for "replace(nan, 0, EXPR)"
- expression: z2n(EXPR) #shortcut for "replace(0, nan, EXPR)"
- expression: zero_if_negative(EXPR)
- expression: none_if_zero(EXPR) #shortcut for "replace(0, nan, EXPR)"
- expression: remove_below(EXPR, value)
- expression: remove_above(EXPR, value)
- expression: clamp_min(EXPR, min)
- expression: clamp_max(EXPR, max)
 
- sets 
new_val instead of old_val 
lines:
- expression: sum_by(label, [other_label,] metric(..)) / max_by(label, [other_label,] metric(.))
- expression: sum_by(label, [other_label,] metric(..)) * sum_by(label, [other_label,] metric(.))
- expression: sum_by(label, [other_label,] metric(..)) - min_by(label, [other_label,] metric(.))
 
- if labels for both
sum_by are the same than it evaluates as / * or - for each pair of metrics (one from left and one from right metric)  
lines:
- expression: sum_by(label, [other_label,] metric(..)) / EXPR
- expression: min_by(label, [other_label,] metric(..)) * EXPR
- expression: max_by(label, [other_label,] metric(..)) - EXPR
 
- Applies 
/ EXPR * EXPR or - EXPR for each metric from left XXX_by(label, ...) 
Lines legend syntax:
lines:
- expression: metric(...)
  legend: '%s'
 
- for each line show all 
label_name:label_value pairs in legend 
lines:
- expression: metric(...)
  legend: '%(label_name)s anything'
 
- for each line show 
`label_value` anything in legend 
Colors syntax:
lines:
- expression: metric(...)
  color: '#81ff22'
- expression: metric(...)
  color: 'red'
 
- color is color
 
lines:
- expression: metric(...)
  colors: ['#80AB00', 'red', 'rgb(127,0,20)', 'hsla(100,10%,20%,0.8)']
 
- will cycle through specified colors
 
lines:
- expression: metric(...)
  colors: 
    /regex.*/: '#fff'
    /regex2/: 'gold'
 
- will match legend to regexes
 
lines:
- expression: metric(...)
options:
  colors: semaphore
  #OR
  colors: semaphore inv
 
- will color all, previously uncolored lines, with a gradient from 
red to green 
- or from 
greento red if semaphore inv 
Sorting syntax:
lines:
- expression: metric(...)
options:
  sort: alpha|num
 
- sort all lines by legend in alphabetical or numeric (default) order
 
lines:
- expression: metric(...)
options:
  sort: ['fixed', 'order', 'for', 'legend', 'items']
 
- fixed sort order by item's 
legend 
lines:
- expression: metric(...)
options:
  sort: ...
  order: DESC
 
- change sort order to descending
 
Sorting tooltip syntax:
lines:
- expression: metric(...)
options:
  tooltip:
    sort_order: name|-name|value|-value
 
- 
  Sorting lines in tooltip (no sorting by default):
  
    -  in alphabetical(
name | -name).
     -  by values(
value | -value)
   
 
Captions:
lines:
- expression: metric(...)
- expression: metric(...)
title: 'some %(label_name)s'
 
- format chart title with labels from all expressions combined
 
lines:
- expression: metric(...)
- expression: metric(...)
options:
  y_title: 'some text'
 
- Y-axis vertical title as plain text