mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-24 05:04:05 -08:00
Added humanizePercentage formatting to templates (#5670)
Lots of alerts are based on ratios (eg. disk usage), and humans are used to values in percentage in textual descriptions. Signed-off-by: Jens Erat <email@jenserat.de>
This commit is contained in:
parent
0c0638b080
commit
375aeb9158
|
@ -36,6 +36,7 @@ var PATH_PREFIX = "{{ pathPrefix }}";
|
|||
{{ define "humanizeNoSmallPrefix" }}{{ if and (lt . 1.0) (gt . -1.0) }}{{ printf "%.3g" . }}{{ else }}{{ humanize . }}{{ end }}{{ end }}
|
||||
{{ define "humanize1024" }}{{ humanize1024 . }}{{ end }}
|
||||
{{ define "humanizeDuration" }}{{ humanizeDuration . }}{{ end }}
|
||||
{{ define "humanizePercentage" }}{{ humanizePercentage . }}{{ end }}
|
||||
{{ define "humanizeTimestamp" }}{{ humanizeTimestamp . }}{{ end }}
|
||||
{{ define "printf.1f" }}{{ printf "%.1f" . }}{{ end }}
|
||||
{{ define "printf.3g" }}{{ printf "%.3g" . }}{{ end }}
|
||||
|
|
|
@ -56,6 +56,7 @@ If functions are used in a pipeline, the pipeline value is passed as the last ar
|
|||
| humanize | number | string | Converts a number to a more readable format, using [metric prefixes](https://en.wikipedia.org/wiki/Metric_prefix).
|
||||
| humanize1024 | number | string | Like `humanize`, but uses 1024 as the base rather than 1000. |
|
||||
| humanizeDuration | number | string | Converts a duration in seconds to a more readable format. |
|
||||
| humanizePercentage | number | string | Converts a ratio value to a fraction of 100. |
|
||||
| humanizeTimestamp | number | string | Converts a Unix timestamp in seconds to a more readable format. |
|
||||
|
||||
Humanizing functions are intended to produce reasonable output for consumption
|
||||
|
|
|
@ -243,6 +243,9 @@ func NewTemplateExpander(
|
|||
}
|
||||
return fmt.Sprintf("%.4g%ss", v, prefix)
|
||||
},
|
||||
"humanizePercentage": func(v float64) string {
|
||||
return fmt.Sprintf("%.4g%%", v*100)
|
||||
},
|
||||
"humanizeTimestamp": func(v float64) string {
|
||||
if math.IsNaN(v) || math.IsInf(v, 0) {
|
||||
return fmt.Sprintf("%.4g", v)
|
||||
|
|
|
@ -197,6 +197,11 @@ func TestTemplateExpansion(t *testing.T) {
|
|||
input: []float64{math.Inf(1), math.Inf(-1), math.NaN()},
|
||||
output: "+Inf:+Inf:+Inf:+Inf:-Inf:-Inf:-Inf:-Inf:NaN:NaN:NaN:NaN:",
|
||||
},
|
||||
{
|
||||
// HumanizePercentage - model.SampleValue input.
|
||||
text: "{{ -0.22222 | humanizePercentage }}:{{ 0.0 | humanizePercentage }}:{{ 0.1234567 | humanizePercentage }}:{{ 1.23456 | humanizePercentage }}",
|
||||
output: "-22.22%:0%:12.35%:123.5%",
|
||||
},
|
||||
{
|
||||
// HumanizeTimestamp - model.SampleValue input.
|
||||
text: "{{ 1435065584.128 | humanizeTimestamp }}",
|
||||
|
|
Loading…
Reference in a new issue