- Common
- Disk
- Network
- Netstat
- Processes
- Jvm zookeeper
- Jvm cassandra
- Jvm elasticsearch
- Memcached
- Redis
- Cassandra
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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
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 labela
equals fixed string'b'
c='d*'
matches metrics with labelc
starts with'd'
e=['f', 'g*']
matches metrics with labele
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 isignore_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 oflabel_name
label and aggregate metrics in the same group into one metric - Accepts parametr
ignore_nan=False|True
, just like ordinarysum
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 inEXPR
on moving time windowwindow_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 fromEXPR
byews|exp
(exponentialy weighted sum) orsum
ormax
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 whichFILTER_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 processes1
if there is data fromEXPR
in this time-point or0
if there is NaNlines: - 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 ofold_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 rightmetric
) 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 leftXXX_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
togreen
- or from
green
tored
ifsemaphore 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
)
- in alphabetical(
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