diff --git a/app/vmalert/notifier/alertmanager_request.qtpl.go b/app/vmalert/notifier/alertmanager_request.qtpl.go index 8a6ce45e2..f3f7b193a 100644 --- a/app/vmalert/notifier/alertmanager_request.qtpl.go +++ b/app/vmalert/notifier/alertmanager_request.qtpl.go @@ -1,135 +1,135 @@ // Code generated by qtc from "alertmanager_request.qtpl". DO NOT EDIT. // See https://github.com/valyala/quicktemplate for details. -//line app/vmalert/notifier/alertmanager_request.qtpl:1 +//line notifier/alertmanager_request.qtpl:1 package notifier -//line app/vmalert/notifier/alertmanager_request.qtpl:1 +//line notifier/alertmanager_request.qtpl:1 import ( "time" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promrelabel" ) -//line app/vmalert/notifier/alertmanager_request.qtpl:8 +//line notifier/alertmanager_request.qtpl:8 import ( qtio422016 "io" qt422016 "github.com/valyala/quicktemplate" ) -//line app/vmalert/notifier/alertmanager_request.qtpl:8 +//line notifier/alertmanager_request.qtpl:8 var ( _ = qtio422016.Copy _ = qt422016.AcquireByteBuffer ) -//line app/vmalert/notifier/alertmanager_request.qtpl:8 +//line notifier/alertmanager_request.qtpl:8 func streamamRequest(qw422016 *qt422016.Writer, alerts []Alert, generatorURL func(Alert) string, relabelCfg *promrelabel.ParsedConfigs) { -//line app/vmalert/notifier/alertmanager_request.qtpl:8 +//line notifier/alertmanager_request.qtpl:8 qw422016.N().S(`[`) -//line app/vmalert/notifier/alertmanager_request.qtpl:10 +//line notifier/alertmanager_request.qtpl:10 for i, alert := range alerts { -//line app/vmalert/notifier/alertmanager_request.qtpl:10 +//line notifier/alertmanager_request.qtpl:10 qw422016.N().S(`{"startsAt":`) -//line app/vmalert/notifier/alertmanager_request.qtpl:12 +//line notifier/alertmanager_request.qtpl:12 qw422016.N().Q(alert.Start.Format(time.RFC3339Nano)) -//line app/vmalert/notifier/alertmanager_request.qtpl:12 +//line notifier/alertmanager_request.qtpl:12 qw422016.N().S(`,"generatorURL":`) -//line app/vmalert/notifier/alertmanager_request.qtpl:13 +//line notifier/alertmanager_request.qtpl:13 qw422016.N().Q(generatorURL(alert)) -//line app/vmalert/notifier/alertmanager_request.qtpl:13 +//line notifier/alertmanager_request.qtpl:13 qw422016.N().S(`,`) -//line app/vmalert/notifier/alertmanager_request.qtpl:14 +//line notifier/alertmanager_request.qtpl:14 if !alert.End.IsZero() { -//line app/vmalert/notifier/alertmanager_request.qtpl:14 +//line notifier/alertmanager_request.qtpl:14 qw422016.N().S(`"endsAt":`) -//line app/vmalert/notifier/alertmanager_request.qtpl:15 +//line notifier/alertmanager_request.qtpl:15 qw422016.N().Q(alert.End.Format(time.RFC3339Nano)) -//line app/vmalert/notifier/alertmanager_request.qtpl:15 +//line notifier/alertmanager_request.qtpl:15 qw422016.N().S(`,`) -//line app/vmalert/notifier/alertmanager_request.qtpl:16 +//line notifier/alertmanager_request.qtpl:16 } -//line app/vmalert/notifier/alertmanager_request.qtpl:16 +//line notifier/alertmanager_request.qtpl:16 qw422016.N().S(`"labels": {"alertname":`) -//line app/vmalert/notifier/alertmanager_request.qtpl:18 +//line notifier/alertmanager_request.qtpl:18 qw422016.N().Q(alert.Name) -//line app/vmalert/notifier/alertmanager_request.qtpl:19 +//line notifier/alertmanager_request.qtpl:19 lbls := alert.toPromLabels(relabelCfg) -//line app/vmalert/notifier/alertmanager_request.qtpl:20 +//line notifier/alertmanager_request.qtpl:20 for _, l := range lbls { -//line app/vmalert/notifier/alertmanager_request.qtpl:20 +//line notifier/alertmanager_request.qtpl:20 qw422016.N().S(`,`) -//line app/vmalert/notifier/alertmanager_request.qtpl:21 +//line notifier/alertmanager_request.qtpl:21 qw422016.N().Q(l.Name) -//line app/vmalert/notifier/alertmanager_request.qtpl:21 +//line notifier/alertmanager_request.qtpl:21 qw422016.N().S(`:`) -//line app/vmalert/notifier/alertmanager_request.qtpl:21 +//line notifier/alertmanager_request.qtpl:21 qw422016.N().Q(l.Value) -//line app/vmalert/notifier/alertmanager_request.qtpl:22 +//line notifier/alertmanager_request.qtpl:22 } -//line app/vmalert/notifier/alertmanager_request.qtpl:22 +//line notifier/alertmanager_request.qtpl:22 qw422016.N().S(`},"annotations": {`) -//line app/vmalert/notifier/alertmanager_request.qtpl:25 +//line notifier/alertmanager_request.qtpl:25 c := len(alert.Annotations) -//line app/vmalert/notifier/alertmanager_request.qtpl:26 +//line notifier/alertmanager_request.qtpl:26 for k, v := range alert.Annotations { -//line app/vmalert/notifier/alertmanager_request.qtpl:27 +//line notifier/alertmanager_request.qtpl:27 c = c - 1 -//line app/vmalert/notifier/alertmanager_request.qtpl:28 +//line notifier/alertmanager_request.qtpl:28 qw422016.N().Q(k) -//line app/vmalert/notifier/alertmanager_request.qtpl:28 +//line notifier/alertmanager_request.qtpl:28 qw422016.N().S(`:`) -//line app/vmalert/notifier/alertmanager_request.qtpl:28 +//line notifier/alertmanager_request.qtpl:28 qw422016.N().Q(v) -//line app/vmalert/notifier/alertmanager_request.qtpl:28 +//line notifier/alertmanager_request.qtpl:28 if c > 0 { -//line app/vmalert/notifier/alertmanager_request.qtpl:28 +//line notifier/alertmanager_request.qtpl:28 qw422016.N().S(`,`) -//line app/vmalert/notifier/alertmanager_request.qtpl:28 +//line notifier/alertmanager_request.qtpl:28 } -//line app/vmalert/notifier/alertmanager_request.qtpl:29 +//line notifier/alertmanager_request.qtpl:29 } -//line app/vmalert/notifier/alertmanager_request.qtpl:29 +//line notifier/alertmanager_request.qtpl:29 qw422016.N().S(`}}`) -//line app/vmalert/notifier/alertmanager_request.qtpl:32 +//line notifier/alertmanager_request.qtpl:32 if i != len(alerts)-1 { -//line app/vmalert/notifier/alertmanager_request.qtpl:32 +//line notifier/alertmanager_request.qtpl:32 qw422016.N().S(`,`) -//line app/vmalert/notifier/alertmanager_request.qtpl:32 +//line notifier/alertmanager_request.qtpl:32 } -//line app/vmalert/notifier/alertmanager_request.qtpl:33 +//line notifier/alertmanager_request.qtpl:33 } -//line app/vmalert/notifier/alertmanager_request.qtpl:33 +//line notifier/alertmanager_request.qtpl:33 qw422016.N().S(`]`) -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 } -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 func writeamRequest(qq422016 qtio422016.Writer, alerts []Alert, generatorURL func(Alert) string, relabelCfg *promrelabel.ParsedConfigs) { -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 streamamRequest(qw422016, alerts, generatorURL, relabelCfg) -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 } -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 func amRequest(alerts []Alert, generatorURL func(Alert) string, relabelCfg *promrelabel.ParsedConfigs) string { -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 writeamRequest(qb422016, alerts, generatorURL, relabelCfg) -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 qs422016 := string(qb422016.B) -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 return qs422016 -//line app/vmalert/notifier/alertmanager_request.qtpl:35 +//line notifier/alertmanager_request.qtpl:35 } diff --git a/app/vmalert/tpl/footer.qtpl.go b/app/vmalert/tpl/footer.qtpl.go index fd5a0a1ce..7100c36bc 100644 --- a/app/vmalert/tpl/footer.qtpl.go +++ b/app/vmalert/tpl/footer.qtpl.go @@ -1,25 +1,25 @@ // Code generated by qtc from "footer.qtpl". DO NOT EDIT. // See https://github.com/valyala/quicktemplate for details. -//line app/vmalert/tpl/footer.qtpl:1 +//line tpl/footer.qtpl:1 package tpl -//line app/vmalert/tpl/footer.qtpl:1 +//line tpl/footer.qtpl:1 import ( qtio422016 "io" qt422016 "github.com/valyala/quicktemplate" ) -//line app/vmalert/tpl/footer.qtpl:1 +//line tpl/footer.qtpl:1 var ( _ = qtio422016.Copy _ = qt422016.AcquireByteBuffer ) -//line app/vmalert/tpl/footer.qtpl:1 +//line tpl/footer.qtpl:1 func StreamFooter(qw422016 *qt422016.Writer) { -//line app/vmalert/tpl/footer.qtpl:1 +//line tpl/footer.qtpl:1 qw422016.N().S(` @@ -56,31 +56,31 @@ func StreamFooter(qw422016 *qt422016.Writer) { `) -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 } -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 func WriteFooter(qq422016 qtio422016.Writer) { -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 StreamFooter(qw422016) -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 } -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 func Footer() string { -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 WriteFooter(qb422016) -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 qs422016 := string(qb422016.B) -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 return qs422016 -//line app/vmalert/tpl/footer.qtpl:36 +//line tpl/footer.qtpl:36 } diff --git a/app/vmalert/tpl/header.qtpl b/app/vmalert/tpl/header.qtpl index 00410519c..5f755c32e 100644 --- a/app/vmalert/tpl/header.qtpl +++ b/app/vmalert/tpl/header.qtpl @@ -27,8 +27,27 @@ .group-heading:hover { background-color: #f8f9fa!important; } + .table { + table-layout: fixed; + } .table .error-cell{ word-break: break-word; + font-size: 14px; + } + pre { + overflow: scroll; + min-height: 30px; + max-width: 100%; + } + pre::-webkit-scrollbar { + -webkit-appearance: none; + width: 0px; + height: 5px; + } + pre::-webkit-scrollbar-thumb { + border-radius: 5px; + background-color: rgba(0,0,0,.5); + -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5); } diff --git a/app/vmalert/tpl/header.qtpl.go b/app/vmalert/tpl/header.qtpl.go index a91b9cb5c..386cefac0 100644 --- a/app/vmalert/tpl/header.qtpl.go +++ b/app/vmalert/tpl/header.qtpl.go @@ -1,39 +1,39 @@ // Code generated by qtc from "header.qtpl". DO NOT EDIT. // See https://github.com/valyala/quicktemplate for details. -//line app/vmalert/tpl/header.qtpl:1 +//line tpl/header.qtpl:1 package tpl -//line app/vmalert/tpl/header.qtpl:1 +//line tpl/header.qtpl:1 import ( qtio422016 "io" qt422016 "github.com/valyala/quicktemplate" ) -//line app/vmalert/tpl/header.qtpl:1 +//line tpl/header.qtpl:1 var ( _ = qtio422016.Copy _ = qt422016.AcquireByteBuffer ) -//line app/vmalert/tpl/header.qtpl:1 +//line tpl/header.qtpl:1 func StreamHeader(qw422016 *qt422016.Writer, title string, pages []NavItem) { -//line app/vmalert/tpl/header.qtpl:1 +//line tpl/header.qtpl:1 qw422016.N().S(` vmalert`) -//line app/vmalert/tpl/header.qtpl:5 +//line tpl/header.qtpl:5 if title != "" { -//line app/vmalert/tpl/header.qtpl:5 +//line tpl/header.qtpl:5 qw422016.N().S(` - `) -//line app/vmalert/tpl/header.qtpl:5 +//line tpl/header.qtpl:5 qw422016.E().S(title) -//line app/vmalert/tpl/header.qtpl:5 +//line tpl/header.qtpl:5 } -//line app/vmalert/tpl/header.qtpl:5 +//line tpl/header.qtpl:5 qw422016.N().S(` `) -//line app/vmalert/tpl/header.qtpl:36 +//line tpl/header.qtpl:55 StreamPrintNavItems(qw422016, title, pages) -//line app/vmalert/tpl/header.qtpl:36 +//line tpl/header.qtpl:55 qw422016.N().S(`
`) -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 } -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 func WriteHeader(qq422016 qtio422016.Writer, title string, pages []NavItem) { -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 StreamHeader(qw422016, title, pages) -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 } -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 func Header(title string, pages []NavItem) string { -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 WriteHeader(qb422016, title, pages) -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 qs422016 := string(qb422016.B) -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 return qs422016 -//line app/vmalert/tpl/header.qtpl:38 +//line tpl/header.qtpl:57 } diff --git a/app/vmalert/tpl/nav.qtpl.go b/app/vmalert/tpl/nav.qtpl.go index 85b56266f..d4e7f56a0 100644 --- a/app/vmalert/tpl/nav.qtpl.go +++ b/app/vmalert/tpl/nav.qtpl.go @@ -1,96 +1,96 @@ // Code generated by qtc from "nav.qtpl". DO NOT EDIT. // See https://github.com/valyala/quicktemplate for details. -//line app/vmalert/tpl/nav.qtpl:1 +//line tpl/nav.qtpl:1 package tpl -//line app/vmalert/tpl/nav.qtpl:1 +//line tpl/nav.qtpl:1 import ( qtio422016 "io" qt422016 "github.com/valyala/quicktemplate" ) -//line app/vmalert/tpl/nav.qtpl:1 +//line tpl/nav.qtpl:1 var ( _ = qtio422016.Copy _ = qt422016.AcquireByteBuffer ) -//line app/vmalert/tpl/nav.qtpl:2 +//line tpl/nav.qtpl:2 type NavItem struct { Name string Url string } -//line app/vmalert/tpl/nav.qtpl:8 +//line tpl/nav.qtpl:8 func StreamPrintNavItems(qw422016 *qt422016.Writer, current string, items []NavItem) { -//line app/vmalert/tpl/nav.qtpl:8 +//line tpl/nav.qtpl:8 qw422016.N().S(` `) -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 } -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 func WritePrintNavItems(qq422016 qtio422016.Writer, current string, items []NavItem) { -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 StreamPrintNavItems(qw422016, current, items) -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 } -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 func PrintNavItems(current string, items []NavItem) string { -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 WritePrintNavItems(qb422016, current, items) -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 qs422016 := string(qb422016.B) -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 return qs422016 -//line app/vmalert/tpl/nav.qtpl:23 +//line tpl/nav.qtpl:23 } diff --git a/app/vmalert/web.qtpl b/app/vmalert/web.qtpl index 4e9d56039..d90280cff 100644 --- a/app/vmalert/web.qtpl +++ b/app/vmalert/web.qtpl @@ -61,31 +61,44 @@ - - - - + + + {% for _, r := range g.Rules %} - - - + + {% endfor %} diff --git a/app/vmalert/web.qtpl.go b/app/vmalert/web.qtpl.go index fde6567ea..c0720c1bb 100644 --- a/app/vmalert/web.qtpl.go +++ b/app/vmalert/web.qtpl.go @@ -1,10 +1,10 @@ // Code generated by qtc from "web.qtpl". DO NOT EDIT. // See https://github.com/valyala/quicktemplate for details. -//line app/vmalert/web.qtpl:1 +//line web.qtpl:1 package main -//line app/vmalert/web.qtpl:3 +//line web.qtpl:3 import ( "path" "sort" @@ -14,111 +14,111 @@ import ( "github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/tpl" ) -//line app/vmalert/web.qtpl:13 +//line web.qtpl:13 import ( qtio422016 "io" qt422016 "github.com/valyala/quicktemplate" ) -//line app/vmalert/web.qtpl:13 +//line web.qtpl:13 var ( _ = qtio422016.Copy _ = qt422016.AcquireByteBuffer ) -//line app/vmalert/web.qtpl:13 +//line web.qtpl:13 func StreamWelcome(qw422016 *qt422016.Writer) { -//line app/vmalert/web.qtpl:13 +//line web.qtpl:13 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:14 +//line web.qtpl:14 tpl.StreamHeader(qw422016, "vmalert", navItems) -//line app/vmalert/web.qtpl:14 +//line web.qtpl:14 qw422016.N().S(`

API:
`) -//line app/vmalert/web.qtpl:17 +//line web.qtpl:17 for _, p := range apiLinks { -//line app/vmalert/web.qtpl:17 +//line web.qtpl:17 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:19 +//line web.qtpl:19 p, doc := p[0], p[1] -//line app/vmalert/web.qtpl:20 +//line web.qtpl:20 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:21 +//line web.qtpl:21 qw422016.E().S(p) -//line app/vmalert/web.qtpl:21 +//line web.qtpl:21 qw422016.N().S(` - `) -//line app/vmalert/web.qtpl:21 +//line web.qtpl:21 qw422016.E().S(doc) -//line app/vmalert/web.qtpl:21 +//line web.qtpl:21 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:22 +//line web.qtpl:22 } -//line app/vmalert/web.qtpl:22 +//line web.qtpl:22 qw422016.N().S(`

`) -//line app/vmalert/web.qtpl:24 +//line web.qtpl:24 tpl.StreamFooter(qw422016) -//line app/vmalert/web.qtpl:24 +//line web.qtpl:24 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 } -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 func WriteWelcome(qq422016 qtio422016.Writer) { -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 StreamWelcome(qw422016) -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 } -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 func Welcome() string { -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 WriteWelcome(qb422016) -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 return qs422016 -//line app/vmalert/web.qtpl:25 +//line web.qtpl:25 } -//line app/vmalert/web.qtpl:27 +//line web.qtpl:27 func StreamListGroups(qw422016 *qt422016.Writer, groups []APIGroup) { -//line app/vmalert/web.qtpl:27 +//line web.qtpl:27 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:28 +//line web.qtpl:28 tpl.StreamHeader(qw422016, "Groups", navItems) -//line app/vmalert/web.qtpl:28 +//line web.qtpl:28 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:29 +//line web.qtpl:29 if len(groups) > 0 { -//line app/vmalert/web.qtpl:29 +//line web.qtpl:29 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:31 +//line web.qtpl:31 rOk := make(map[string]int) rNotOk := make(map[string]int) for _, g := range groups { @@ -131,347 +131,372 @@ func StreamListGroups(qw422016 *qt422016.Writer, groups []APIGroup) { } } -//line app/vmalert/web.qtpl:42 +//line web.qtpl:42 qw422016.N().S(` Collapse AllExpand All `) -//line app/vmalert/web.qtpl:45 +//line web.qtpl:45 for _, g := range groups { -//line app/vmalert/web.qtpl:45 +//line web.qtpl:45 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:48 +//line web.qtpl:48 qw422016.E().S(g.Name) -//line app/vmalert/web.qtpl:48 +//line web.qtpl:48 if g.Type != "prometheus" { -//line app/vmalert/web.qtpl:48 +//line web.qtpl:48 qw422016.N().S(` (`) -//line app/vmalert/web.qtpl:48 +//line web.qtpl:48 qw422016.E().S(g.Type) -//line app/vmalert/web.qtpl:48 +//line web.qtpl:48 qw422016.N().S(`)`) -//line app/vmalert/web.qtpl:48 +//line web.qtpl:48 } -//line app/vmalert/web.qtpl:48 +//line web.qtpl:48 qw422016.N().S(` (every `) -//line app/vmalert/web.qtpl:48 +//line web.qtpl:48 qw422016.N().FPrec(g.Interval, 0) -//line app/vmalert/web.qtpl:48 +//line web.qtpl:48 qw422016.N().S(`s) `) -//line app/vmalert/web.qtpl:49 +//line web.qtpl:49 if rNotOk[g.Name] > 0 { -//line app/vmalert/web.qtpl:49 +//line web.qtpl:49 qw422016.N().S(``) -//line app/vmalert/web.qtpl:49 +//line web.qtpl:49 qw422016.N().D(rNotOk[g.Name]) -//line app/vmalert/web.qtpl:49 +//line web.qtpl:49 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:49 +//line web.qtpl:49 } -//line app/vmalert/web.qtpl:49 +//line web.qtpl:49 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:50 +//line web.qtpl:50 qw422016.N().D(rOk[g.Name]) -//line app/vmalert/web.qtpl:50 +//line web.qtpl:50 qw422016.N().S(`

`) -//line app/vmalert/web.qtpl:51 +//line web.qtpl:51 qw422016.E().S(g.File) -//line app/vmalert/web.qtpl:51 +//line web.qtpl:51 qw422016.N().S(`

`) -//line app/vmalert/web.qtpl:52 +//line web.qtpl:52 if len(g.Params) > 0 { -//line app/vmalert/web.qtpl:52 +//line web.qtpl:52 qw422016.N().S(`
Extra params `) -//line app/vmalert/web.qtpl:54 +//line web.qtpl:54 for _, param := range g.Params { -//line app/vmalert/web.qtpl:54 +//line web.qtpl:54 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:55 +//line web.qtpl:55 qw422016.E().S(param) -//line app/vmalert/web.qtpl:55 +//line web.qtpl:55 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:56 +//line web.qtpl:56 } -//line app/vmalert/web.qtpl:56 +//line web.qtpl:56 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:58 +//line web.qtpl:58 } -//line app/vmalert/web.qtpl:58 +//line web.qtpl:58 qw422016.N().S(`
RuleErrorSamplesUpdatedRuleSamplesUpdated
- {% if r.Type == "alerting" %} - alert: (for: {%v r.Duration %}) - {% else %} - record: {%s r.Name %} - {% endif %} -
-
{%s r.Query %}

- {% if len(r.Labels) > 0 %} Labels:{% endif %} - {% for k, v := range r.Labels %} - {%s k %}={%s v %} - {% endfor %} +
+
+ {% if r.Type == "alerting" %} + alert: {%s r.Name %} (for: {%v r.Duration %} seconds) + {% else %} + record: {%s r.Name %} + {% endif %} +
+
+
{%s r.Query %}
+
+
+ {% if len(r.Labels) > 0 %} Labels:{% endif %} + {% for k, v := range r.Labels %} + {%s k %}={%s v %} + {% endfor %} +
+ {% if r.LastError != "" %} +
+ Error: +
+ {%s r.LastError %} +
+
+ {% endif %} +
{%s r.LastError %}
{%d r.LastSamples %}{%f.3 time.Since(r.LastEvaluation).Seconds() %}s ago{%d r.LastSamples %}{%f.3 time.Since(r.LastEvaluation).Seconds() %}s ago
- - - - + + + `) -//line app/vmalert/web.qtpl:71 +//line web.qtpl:70 for _, r := range g.Rules { -//line app/vmalert/web.qtpl:71 +//line web.qtpl:70 qw422016.N().S(` - - - `) -//line app/vmalert/web.qtpl:90 +//line web.qtpl:103 } -//line app/vmalert/web.qtpl:90 +//line web.qtpl:103 qw422016.N().S(`
RuleErrorSamplesUpdatedRuleSamplesUpdated
- `) -//line app/vmalert/web.qtpl:74 +
+
+ `) +//line web.qtpl:75 if r.Type == "alerting" { -//line app/vmalert/web.qtpl:74 +//line web.qtpl:75 qw422016.N().S(` - alert: (for: `) -//line app/vmalert/web.qtpl:75 - qw422016.E().V(r.Duration) -//line app/vmalert/web.qtpl:75 - qw422016.N().S(`) - `) -//line app/vmalert/web.qtpl:76 - } else { -//line app/vmalert/web.qtpl:76 - qw422016.N().S(` - record: `) -//line app/vmalert/web.qtpl:77 + alert: `) +//line web.qtpl:76 qw422016.E().S(r.Name) -//line app/vmalert/web.qtpl:77 +//line web.qtpl:76 + qw422016.N().S(` (for: `) +//line web.qtpl:76 + qw422016.E().V(r.Duration) +//line web.qtpl:76 + qw422016.N().S(` seconds) + `) +//line web.qtpl:77 + } else { +//line web.qtpl:77 qw422016.N().S(` - `) -//line app/vmalert/web.qtpl:78 + record: `) +//line web.qtpl:78 + qw422016.E().S(r.Name) +//line web.qtpl:78 + qw422016.N().S(` + `) +//line web.qtpl:79 } -//line app/vmalert/web.qtpl:78 +//line web.qtpl:79 qw422016.N().S(` -
-
`)
-//line app/vmalert/web.qtpl:80
+                                    
+
+
`)
+//line web.qtpl:82
 				qw422016.E().S(r.Query)
-//line app/vmalert/web.qtpl:80
-				qw422016.N().S(`

- `) -//line app/vmalert/web.qtpl:81 +//line web.qtpl:82 + qw422016.N().S(`
+
+
+ `) +//line web.qtpl:85 if len(r.Labels) > 0 { -//line app/vmalert/web.qtpl:81 +//line web.qtpl:85 qw422016.N().S(` Labels:`) -//line app/vmalert/web.qtpl:81 +//line web.qtpl:85 } -//line app/vmalert/web.qtpl:81 +//line web.qtpl:85 qw422016.N().S(` - `) -//line app/vmalert/web.qtpl:82 + `) +//line web.qtpl:86 for k, v := range r.Labels { -//line app/vmalert/web.qtpl:82 +//line web.qtpl:86 qw422016.N().S(` - `) -//line app/vmalert/web.qtpl:83 + `) +//line web.qtpl:87 qw422016.E().S(k) -//line app/vmalert/web.qtpl:83 +//line web.qtpl:87 qw422016.N().S(`=`) -//line app/vmalert/web.qtpl:83 +//line web.qtpl:87 qw422016.E().S(v) -//line app/vmalert/web.qtpl:83 +//line web.qtpl:87 qw422016.N().S(` - `) -//line app/vmalert/web.qtpl:84 + `) +//line web.qtpl:88 } -//line app/vmalert/web.qtpl:84 +//line web.qtpl:88 qw422016.N().S(` +
+ `) +//line web.qtpl:90 + if r.LastError != "" { +//line web.qtpl:90 + qw422016.N().S(` +
+ Error: +
+ `) +//line web.qtpl:94 + qw422016.E().S(r.LastError) +//line web.qtpl:94 + qw422016.N().S(` +
+
+ `) +//line web.qtpl:97 + } +//line web.qtpl:97 + qw422016.N().S(` +
`) -//line app/vmalert/web.qtpl:86 - qw422016.E().S(r.LastError) -//line app/vmalert/web.qtpl:86 - qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:87 + `) +//line web.qtpl:100 qw422016.N().D(r.LastSamples) -//line app/vmalert/web.qtpl:87 +//line web.qtpl:100 qw422016.N().S(``) -//line app/vmalert/web.qtpl:88 + `) +//line web.qtpl:101 qw422016.N().FPrec(time.Since(r.LastEvaluation).Seconds(), 3) -//line app/vmalert/web.qtpl:88 +//line web.qtpl:101 qw422016.N().S(`s ago
`) -//line app/vmalert/web.qtpl:94 +//line web.qtpl:107 } -//line app/vmalert/web.qtpl:94 +//line web.qtpl:107 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:96 +//line web.qtpl:109 } else { -//line app/vmalert/web.qtpl:96 +//line web.qtpl:109 qw422016.N().S(`

No items...

`) -//line app/vmalert/web.qtpl:100 +//line web.qtpl:113 } -//line app/vmalert/web.qtpl:100 +//line web.qtpl:113 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:102 +//line web.qtpl:115 tpl.StreamFooter(qw422016) -//line app/vmalert/web.qtpl:102 +//line web.qtpl:115 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 } -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 func WriteListGroups(qq422016 qtio422016.Writer, groups []APIGroup) { -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 StreamListGroups(qw422016, groups) -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 } -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 func ListGroups(groups []APIGroup) string { -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 WriteListGroups(qb422016, groups) -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 return qs422016 -//line app/vmalert/web.qtpl:104 +//line web.qtpl:117 } -//line app/vmalert/web.qtpl:107 +//line web.qtpl:120 func StreamListAlerts(qw422016 *qt422016.Writer, pathPrefix string, groupAlerts []GroupAlerts) { -//line app/vmalert/web.qtpl:107 +//line web.qtpl:120 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:108 +//line web.qtpl:121 tpl.StreamHeader(qw422016, "Alerts", navItems) -//line app/vmalert/web.qtpl:108 +//line web.qtpl:121 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:109 +//line web.qtpl:122 if len(groupAlerts) > 0 { -//line app/vmalert/web.qtpl:109 +//line web.qtpl:122 qw422016.N().S(` Collapse All Expand All `) -//line app/vmalert/web.qtpl:112 +//line web.qtpl:125 for _, ga := range groupAlerts { -//line app/vmalert/web.qtpl:112 +//line web.qtpl:125 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:113 +//line web.qtpl:126 g := ga.Group -//line app/vmalert/web.qtpl:113 +//line web.qtpl:126 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:116 +//line web.qtpl:129 qw422016.E().S(g.Name) -//line app/vmalert/web.qtpl:116 +//line web.qtpl:129 if g.Type != "prometheus" { -//line app/vmalert/web.qtpl:116 +//line web.qtpl:129 qw422016.N().S(` (`) -//line app/vmalert/web.qtpl:116 +//line web.qtpl:129 qw422016.E().S(g.Type) -//line app/vmalert/web.qtpl:116 +//line web.qtpl:129 qw422016.N().S(`)`) -//line app/vmalert/web.qtpl:116 +//line web.qtpl:129 } -//line app/vmalert/web.qtpl:116 +//line web.qtpl:129 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:117 +//line web.qtpl:130 qw422016.N().D(len(ga.Alerts)) -//line app/vmalert/web.qtpl:117 +//line web.qtpl:130 qw422016.N().S(`

`) -//line app/vmalert/web.qtpl:119 +//line web.qtpl:132 qw422016.E().S(g.File) -//line app/vmalert/web.qtpl:119 +//line web.qtpl:132 qw422016.N().S(`

`) -//line app/vmalert/web.qtpl:122 +//line web.qtpl:135 var keys []string alertsByRule := make(map[string][]*APIAlert) for _, alert := range ga.Alerts { @@ -482,20 +507,20 @@ func StreamListAlerts(qw422016 *qt422016.Writer, pathPrefix string, groupAlerts } sort.Strings(keys) -//line app/vmalert/web.qtpl:131 +//line web.qtpl:144 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:133 +//line web.qtpl:146 for _, ruleID := range keys { -//line app/vmalert/web.qtpl:133 +//line web.qtpl:146 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:135 +//line web.qtpl:148 defaultAR := alertsByRule[ruleID][0] var labelKeys []string for k := range defaultAR.Labels { @@ -503,28 +528,28 @@ func StreamListAlerts(qw422016 *qt422016.Writer, pathPrefix string, groupAlerts } sort.Strings(labelKeys) -//line app/vmalert/web.qtpl:141 +//line web.qtpl:154 qw422016.N().S(`
alert: `) -//line app/vmalert/web.qtpl:143 +//line web.qtpl:156 qw422016.E().S(defaultAR.Name) -//line app/vmalert/web.qtpl:143 +//line web.qtpl:156 qw422016.N().S(` (`) -//line app/vmalert/web.qtpl:143 +//line web.qtpl:156 qw422016.N().D(len(alertsByRule[ruleID])) -//line app/vmalert/web.qtpl:143 +//line web.qtpl:156 qw422016.N().S(`) | Source
expr:
`)
-//line app/vmalert/web.qtpl:146
+//line web.qtpl:159
 				qw422016.E().S(defaultAR.Expression)
-//line app/vmalert/web.qtpl:146
+//line web.qtpl:159
 				qw422016.N().S(`
@@ -538,204 +563,204 @@ func StreamListAlerts(qw422016 *qt422016.Writer, pathPrefix string, groupAlerts `) -//line app/vmalert/web.qtpl:158 +//line web.qtpl:171 for _, ar := range alertsByRule[ruleID] { -//line app/vmalert/web.qtpl:158 +//line web.qtpl:171 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:175 +//line web.qtpl:188 } -//line app/vmalert/web.qtpl:175 +//line web.qtpl:188 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:161 +//line web.qtpl:174 for _, k := range labelKeys { -//line app/vmalert/web.qtpl:161 +//line web.qtpl:174 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:162 +//line web.qtpl:175 qw422016.E().S(k) -//line app/vmalert/web.qtpl:162 +//line web.qtpl:175 qw422016.N().S(`=`) -//line app/vmalert/web.qtpl:162 +//line web.qtpl:175 qw422016.E().S(ar.Labels[k]) -//line app/vmalert/web.qtpl:162 +//line web.qtpl:175 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:163 +//line web.qtpl:176 } -//line app/vmalert/web.qtpl:163 +//line web.qtpl:176 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:165 +//line web.qtpl:178 streambadgeState(qw422016, ar.State) -//line app/vmalert/web.qtpl:165 +//line web.qtpl:178 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:167 +//line web.qtpl:180 qw422016.E().S(ar.ActiveAt.Format("2006-01-02T15:04:05Z07:00")) -//line app/vmalert/web.qtpl:167 +//line web.qtpl:180 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:168 +//line web.qtpl:181 if ar.Restored { -//line app/vmalert/web.qtpl:168 +//line web.qtpl:181 streambadgeRestored(qw422016) -//line app/vmalert/web.qtpl:168 +//line web.qtpl:181 } -//line app/vmalert/web.qtpl:168 +//line web.qtpl:181 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:170 +//line web.qtpl:183 qw422016.E().S(ar.Value) -//line app/vmalert/web.qtpl:170 +//line web.qtpl:183 qw422016.N().S(` Details
`) -//line app/vmalert/web.qtpl:178 +//line web.qtpl:191 } -//line app/vmalert/web.qtpl:178 +//line web.qtpl:191 qw422016.N().S(`

`) -//line app/vmalert/web.qtpl:181 +//line web.qtpl:194 } -//line app/vmalert/web.qtpl:181 +//line web.qtpl:194 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:183 +//line web.qtpl:196 } else { -//line app/vmalert/web.qtpl:183 +//line web.qtpl:196 qw422016.N().S(`

No items...

`) -//line app/vmalert/web.qtpl:187 +//line web.qtpl:200 } -//line app/vmalert/web.qtpl:187 +//line web.qtpl:200 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:189 +//line web.qtpl:202 tpl.StreamFooter(qw422016) -//line app/vmalert/web.qtpl:189 +//line web.qtpl:202 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 } -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 func WriteListAlerts(qq422016 qtio422016.Writer, pathPrefix string, groupAlerts []GroupAlerts) { -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 StreamListAlerts(qw422016, pathPrefix, groupAlerts) -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 } -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 func ListAlerts(pathPrefix string, groupAlerts []GroupAlerts) string { -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 WriteListAlerts(qb422016, pathPrefix, groupAlerts) -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 return qs422016 -//line app/vmalert/web.qtpl:191 +//line web.qtpl:204 } -//line app/vmalert/web.qtpl:193 +//line web.qtpl:206 func StreamListTargets(qw422016 *qt422016.Writer, targets map[notifier.TargetType][]notifier.Target) { -//line app/vmalert/web.qtpl:193 +//line web.qtpl:206 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:194 +//line web.qtpl:207 tpl.StreamHeader(qw422016, "Notifiers", navItems) -//line app/vmalert/web.qtpl:194 +//line web.qtpl:207 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:195 +//line web.qtpl:208 if len(targets) > 0 { -//line app/vmalert/web.qtpl:195 +//line web.qtpl:208 qw422016.N().S(` Collapse All Expand All `) -//line app/vmalert/web.qtpl:200 +//line web.qtpl:213 var keys []string for key := range targets { keys = append(keys, string(key)) } sort.Strings(keys) -//line app/vmalert/web.qtpl:205 +//line web.qtpl:218 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:207 +//line web.qtpl:220 for i := range keys { -//line app/vmalert/web.qtpl:207 +//line web.qtpl:220 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:208 +//line web.qtpl:221 typeK, ns := keys[i], targets[notifier.TargetType(keys[i])] count := len(ns) -//line app/vmalert/web.qtpl:210 +//line web.qtpl:223 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:213 +//line web.qtpl:226 qw422016.E().S(typeK) -//line app/vmalert/web.qtpl:213 +//line web.qtpl:226 qw422016.N().S(` (`) -//line app/vmalert/web.qtpl:213 +//line web.qtpl:226 qw422016.N().D(count) -//line app/vmalert/web.qtpl:213 +//line web.qtpl:226 qw422016.N().S(`)
@@ -746,113 +771,113 @@ func StreamListTargets(qw422016 *qt422016.Writer, targets map[notifier.TargetTyp `) -//line app/vmalert/web.qtpl:224 +//line web.qtpl:237 for _, n := range ns { -//line app/vmalert/web.qtpl:224 +//line web.qtpl:237 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:233 +//line web.qtpl:246 } -//line app/vmalert/web.qtpl:233 +//line web.qtpl:246 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:227 +//line web.qtpl:240 for _, l := range n.Labels { -//line app/vmalert/web.qtpl:227 +//line web.qtpl:240 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:228 +//line web.qtpl:241 qw422016.E().S(l.Name) -//line app/vmalert/web.qtpl:228 +//line web.qtpl:241 qw422016.N().S(`=`) -//line app/vmalert/web.qtpl:228 +//line web.qtpl:241 qw422016.E().S(l.Value) -//line app/vmalert/web.qtpl:228 +//line web.qtpl:241 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:229 +//line web.qtpl:242 } -//line app/vmalert/web.qtpl:229 +//line web.qtpl:242 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:231 +//line web.qtpl:244 qw422016.E().S(n.Notifier.Addr()) -//line app/vmalert/web.qtpl:231 +//line web.qtpl:244 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:237 +//line web.qtpl:250 } -//line app/vmalert/web.qtpl:237 +//line web.qtpl:250 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:239 +//line web.qtpl:252 } else { -//line app/vmalert/web.qtpl:239 +//line web.qtpl:252 qw422016.N().S(`

No items...

`) -//line app/vmalert/web.qtpl:243 +//line web.qtpl:256 } -//line app/vmalert/web.qtpl:243 +//line web.qtpl:256 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:245 +//line web.qtpl:258 tpl.StreamFooter(qw422016) -//line app/vmalert/web.qtpl:245 +//line web.qtpl:258 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 } -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 func WriteListTargets(qq422016 qtio422016.Writer, targets map[notifier.TargetType][]notifier.Target) { -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 StreamListTargets(qw422016, targets) -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 } -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 func ListTargets(targets map[notifier.TargetType][]notifier.Target) string { -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 WriteListTargets(qb422016, targets) -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 return qs422016 -//line app/vmalert/web.qtpl:247 +//line web.qtpl:260 } -//line app/vmalert/web.qtpl:249 +//line web.qtpl:262 func StreamAlert(qw422016 *qt422016.Writer, pathPrefix string, alert *APIAlert) { -//line app/vmalert/web.qtpl:249 +//line web.qtpl:262 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:250 +//line web.qtpl:263 tpl.StreamHeader(qw422016, "", navItems) -//line app/vmalert/web.qtpl:250 +//line web.qtpl:263 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:252 +//line web.qtpl:265 var labelKeys []string for k := range alert.Labels { labelKeys = append(labelKeys, k) @@ -865,28 +890,28 @@ func StreamAlert(qw422016 *qt422016.Writer, pathPrefix string, alert *APIAlert) } sort.Strings(annotationKeys) -//line app/vmalert/web.qtpl:263 +//line web.qtpl:276 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:264 +//line web.qtpl:277 qw422016.E().S(alert.Name) -//line app/vmalert/web.qtpl:264 +//line web.qtpl:277 qw422016.N().S(``) -//line app/vmalert/web.qtpl:264 +//line web.qtpl:277 qw422016.E().S(alert.State) -//line app/vmalert/web.qtpl:264 +//line web.qtpl:277 qw422016.N().S(`
@@ -895,9 +920,9 @@ func StreamAlert(qw422016 *qt422016.Writer, pathPrefix string, alert *APIAlert)
`) -//line app/vmalert/web.qtpl:271 +//line web.qtpl:284 qw422016.E().S(alert.ActiveAt.Format("2006-01-02T15:04:05Z07:00")) -//line app/vmalert/web.qtpl:271 +//line web.qtpl:284 qw422016.N().S(`
@@ -909,9 +934,9 @@ func StreamAlert(qw422016 *qt422016.Writer, pathPrefix string, alert *APIAlert)
`)
-//line app/vmalert/web.qtpl:281
+//line web.qtpl:294
 	qw422016.E().S(alert.Expression)
-//line app/vmalert/web.qtpl:281
+//line web.qtpl:294
 	qw422016.N().S(`
@@ -923,23 +948,23 @@ func StreamAlert(qw422016 *qt422016.Writer, pathPrefix string, alert *APIAlert)
`) -//line app/vmalert/web.qtpl:291 +//line web.qtpl:304 for _, k := range labelKeys { -//line app/vmalert/web.qtpl:291 +//line web.qtpl:304 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:292 +//line web.qtpl:305 qw422016.E().S(k) -//line app/vmalert/web.qtpl:292 +//line web.qtpl:305 qw422016.N().S(`=`) -//line app/vmalert/web.qtpl:292 +//line web.qtpl:305 qw422016.E().S(alert.Labels[k]) -//line app/vmalert/web.qtpl:292 +//line web.qtpl:305 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:293 +//line web.qtpl:306 } -//line app/vmalert/web.qtpl:293 +//line web.qtpl:306 qw422016.N().S(`
@@ -951,24 +976,24 @@ func StreamAlert(qw422016 *qt422016.Writer, pathPrefix string, alert *APIAlert)
`) -//line app/vmalert/web.qtpl:303 +//line web.qtpl:316 for _, k := range annotationKeys { -//line app/vmalert/web.qtpl:303 +//line web.qtpl:316 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:304 +//line web.qtpl:317 qw422016.E().S(k) -//line app/vmalert/web.qtpl:304 +//line web.qtpl:317 qw422016.N().S(`:

`) -//line app/vmalert/web.qtpl:305 +//line web.qtpl:318 qw422016.E().S(alert.Annotations[k]) -//line app/vmalert/web.qtpl:305 +//line web.qtpl:318 qw422016.N().S(`

`) -//line app/vmalert/web.qtpl:306 +//line web.qtpl:319 } -//line app/vmalert/web.qtpl:306 +//line web.qtpl:319 qw422016.N().S(`
@@ -980,17 +1005,17 @@ func StreamAlert(qw422016 *qt422016.Writer, pathPrefix string, alert *APIAlert)
`) -//line app/vmalert/web.qtpl:316 +//line web.qtpl:329 qw422016.E().S(alert.GroupID) -//line app/vmalert/web.qtpl:316 +//line web.qtpl:329 qw422016.N().S(`
@@ -1002,132 +1027,132 @@ func StreamAlert(qw422016 *qt422016.Writer, pathPrefix string, alert *APIAlert)
Link
`) -//line app/vmalert/web.qtpl:330 +//line web.qtpl:343 tpl.StreamFooter(qw422016) -//line app/vmalert/web.qtpl:330 +//line web.qtpl:343 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 } -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 func WriteAlert(qq422016 qtio422016.Writer, pathPrefix string, alert *APIAlert) { -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 StreamAlert(qw422016, pathPrefix, alert) -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 } -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 func Alert(pathPrefix string, alert *APIAlert) string { -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 WriteAlert(qb422016, pathPrefix, alert) -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 return qs422016 -//line app/vmalert/web.qtpl:332 +//line web.qtpl:345 } -//line app/vmalert/web.qtpl:334 +//line web.qtpl:347 func streambadgeState(qw422016 *qt422016.Writer, state string) { -//line app/vmalert/web.qtpl:334 +//line web.qtpl:347 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:336 +//line web.qtpl:349 badgeClass := "bg-warning text-dark" if state == "firing" { badgeClass = "bg-danger" } -//line app/vmalert/web.qtpl:340 +//line web.qtpl:353 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:341 +//line web.qtpl:354 qw422016.E().S(state) -//line app/vmalert/web.qtpl:341 +//line web.qtpl:354 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 } -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 func writebadgeState(qq422016 qtio422016.Writer, state string) { -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 streambadgeState(qw422016, state) -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 } -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 func badgeState(state string) string { -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 writebadgeState(qb422016, state) -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 return qs422016 -//line app/vmalert/web.qtpl:342 +//line web.qtpl:355 } -//line app/vmalert/web.qtpl:344 +//line web.qtpl:357 func streambadgeRestored(qw422016 *qt422016.Writer) { -//line app/vmalert/web.qtpl:344 +//line web.qtpl:357 qw422016.N().S(` restored `) -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 } -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 func writebadgeRestored(qq422016 qtio422016.Writer) { -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 streambadgeRestored(qw422016) -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 } -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 func badgeRestored() string { -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 writebadgeRestored(qb422016) -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 return qs422016 -//line app/vmalert/web.qtpl:346 +//line web.qtpl:359 } diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index d94ab07d6..a4b93c057 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -46,6 +46,7 @@ The following tip changes can be tested by building VictoriaMetrics components f * BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): properly show `scrape_timeout` and `scrape_interval` options at `http://vmagent:8429/config` page. Previously these options weren't displayed even if they were set in `-promscrape.config`. * BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): handle non-standard http redirect status codes, which may be returned by scrape targets, in the same way as Prometheus does. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2482). * BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert.html): skip template execution during rules' validation. This should prevent from `error evaluating annotation template` errors when some template functions expect non-empty args. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2514). +* BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert.html): fixed truncating alerts expression in table, updated table cell layout. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2484). * BUGFIX: [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html): properly handle joins on time series filtered by values. For example, `kube_pod_container_resource_requests{resource="cpu"} * on (namespace,pod) group_left() (kube_pod_status_phase{phase=~"Pending|Running"}==1)`. This query could result in `duplicate time series on the right side` error even if `==1` filter leaves only a single time series per `(namespace,pod)` labels. Now such query is properly executed. * BUGFIX: [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html): properly handle `scalar default vector`, `scalar if vector` and `scalar ifnot vector` queries. Previously such queries could return unexpected results from the `vector` part. * BUGFIX: [Official Grafana dashboards for VictoriaMetrics](https://grafana.com/orgs/victoriametrics): take into account `indexdb` when calculating disk space usage. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2368).