From f79abd54b05dd727981de448f0dd115b0e96f1e6 Mon Sep 17 00:00:00 2001 From: Victor Amorim dos Santos Date: Tue, 20 Feb 2024 08:31:41 -0300 Subject: [PATCH] vmalert: add filter by group or rule name to UI (#5791) Co-authored-by: Yury Molodov (cherry picked from commit b60dcbe11f5f6a6782ac7efe046ec2dfab07ef53) --- app/vmalert/static/js/custom.js | 83 +++ app/vmalert/web.qtpl | 28 +- app/vmalert/web.qtpl.go | 1166 ++++++++++++++++--------------- 3 files changed, 696 insertions(+), 581 deletions(-) diff --git a/app/vmalert/static/js/custom.js b/app/vmalert/static/js/custom.js index 5a1f7f2e7c..e75235efce 100644 --- a/app/vmalert/static/js/custom.js +++ b/app/vmalert/static/js/custom.js @@ -1,8 +1,10 @@ function expandAll() { + $(".group-heading").show() $('.collapse').addClass('show'); } function collapseAll() { + $(".group-heading").show() $('.collapse').removeClass('show'); } @@ -15,6 +17,87 @@ function toggleByID(id) { } } +function debounce(func, delay) { + let timer; + return function(...args) { + clearTimeout(timer); + timer = setTimeout(() => { + func.apply(this, args); + }, delay); + }; +} + +$('#filter').on("keyup", debounce(filter, 500)); + +function filter(){ + $(".rule-table").removeClass('show'); + $(".rule").show(); + + if($("#filter").val().length === 0){ + $(".group-heading").show() + return + } + + $(".group-heading").hide() + + filterRuleByName(); + filterRuleByLabels(); + filterGroupsByName(); +} + +function filterGroupsByName(){ + $( ".group-heading" ).each(function() { + const groupName = $(this).attr('data-group-name'); + const filter = $("#filter").val() + const hasValue = groupName.indexOf(filter) >= 0 + + if (hasValue){ + const target = $(this).attr("data-bs-target"); + + $(this).show(); + $(`div[id="${target}"] .rule`).show(); + } + }); +} + +function filterRuleByName(){ + $( ".rule" ).each(function() { + const ruleName = $(this).attr("data-rule-name"); + const filter = $("#filter").val() + const hasValue = ruleName.indexOf(filter) >= 0 + + if (hasValue){ + const target = $(this).attr('data-bs-target') + + $(`#rules-${target}`).addClass('show'); + $(`div[data-bs-target='rules-${target}']`).show(); + $(this).show(); + }else{ + $(this).hide(); + } + }); +} + +function filterRuleByLabels(){ + $( ".rule" ).each(function() { + const filter = $("#filter").val() + + const matches = $( ".label", this ).filter(function() { + const label = $(this).text(); + const hasValue = label.indexOf(filter) >= 0 + return hasValue; + }).length; + + if (matches > 0){ + const target = $(this).attr('data-bs-target') + + $(`#rules-${target}`).addClass('show'); + $(`div[data-bs-target='rules-${target}']`).show(); + $(this).show(); + } + }); +} + $(document).ready(function () { $(".group-heading a").click(function (e) { e.stopPropagation(); // prevent collapse logic on link click diff --git a/app/vmalert/web.qtpl b/app/vmalert/web.qtpl index 6186319e03..120981e73d 100644 --- a/app/vmalert/web.qtpl +++ b/app/vmalert/web.qtpl @@ -70,15 +70,25 @@ btn-primary } } %} - All - Collapse All - Expand All - Unhealthy - NoMatch + All + Collapse All + Expand All + Unhealthy + NoMatch +
+
+
+ + + +
+ +
+
{% if len(groups) > 0 %} {% for _, g := range groups %}
+ class="group-heading{% if rNotOk[g.ID] > 0 %} alert-danger{%endif%}" data-bs-target="rules-{%s g.ID %}" data-group-name="{%s g.Name %}"> {%s g.Name %}{% if g.Type != "prometheus" %} ({%s g.Type %}){% endif %} (every {%f.0 g.Interval %}s) # {% if rNotOk[g.ID] > 0 %}{%d rNotOk[g.ID] %} {% endif %} @@ -100,7 +110,7 @@ btn-primary
{% endif %} -
+
@@ -111,7 +121,7 @@ btn-primary {% for _, r := range g.Rules %} - +
@@ -134,7 +144,7 @@ btn-primary
{% if len(r.Labels) > 0 %} Labels:{% endif %} {% for k, v := range r.Labels %} - {%s k %}={%s v %} + {%s k %}={%s v %} {% endfor %}
{% if r.LastError != "" %} diff --git a/app/vmalert/web.qtpl.go b/app/vmalert/web.qtpl.go index 6a656c0d7a..9330ed61f2 100644 --- a/app/vmalert/web.qtpl.go +++ b/app/vmalert/web.qtpl.go @@ -242,170 +242,184 @@ func StreamListGroups(qw422016 *qt422016.Writer, r *http.Request, originGroups [ //line app/vmalert/web.qtpl:72 qw422016.N().S(` - All - Collapse All - Expand All - Collapse All + Expand All + Unhealthy - NoMatch +
+
+
+ + + +
+ +
+
`) -//line app/vmalert/web.qtpl:78 +//line app/vmalert/web.qtpl:88 if len(groups) > 0 { -//line app/vmalert/web.qtpl:78 +//line app/vmalert/web.qtpl:88 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:79 +//line app/vmalert/web.qtpl:89 for _, g := range groups { -//line app/vmalert/web.qtpl:79 +//line app/vmalert/web.qtpl:89 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:83 +//line app/vmalert/web.qtpl:93 qw422016.E().S(g.Name) -//line app/vmalert/web.qtpl:83 +//line app/vmalert/web.qtpl:93 if g.Type != "prometheus" { -//line app/vmalert/web.qtpl:83 +//line app/vmalert/web.qtpl:93 qw422016.N().S(` (`) -//line app/vmalert/web.qtpl:83 +//line app/vmalert/web.qtpl:93 qw422016.E().S(g.Type) -//line app/vmalert/web.qtpl:83 +//line app/vmalert/web.qtpl:93 qw422016.N().S(`)`) -//line app/vmalert/web.qtpl:83 +//line app/vmalert/web.qtpl:93 } -//line app/vmalert/web.qtpl:83 +//line app/vmalert/web.qtpl:93 qw422016.N().S(` (every `) -//line app/vmalert/web.qtpl:83 +//line app/vmalert/web.qtpl:93 qw422016.N().FPrec(g.Interval, 0) -//line app/vmalert/web.qtpl:83 +//line app/vmalert/web.qtpl:93 qw422016.N().S(`s) # `) -//line app/vmalert/web.qtpl:84 +//line app/vmalert/web.qtpl:94 if rNotOk[g.ID] > 0 { -//line app/vmalert/web.qtpl:84 +//line app/vmalert/web.qtpl:94 qw422016.N().S(``) -//line app/vmalert/web.qtpl:84 +//line app/vmalert/web.qtpl:94 qw422016.N().D(rNotOk[g.ID]) -//line app/vmalert/web.qtpl:84 +//line app/vmalert/web.qtpl:94 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:84 +//line app/vmalert/web.qtpl:94 } -//line app/vmalert/web.qtpl:84 +//line app/vmalert/web.qtpl:94 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:85 +//line app/vmalert/web.qtpl:95 if rNoMatch[g.ID] > 0 { -//line app/vmalert/web.qtpl:85 +//line app/vmalert/web.qtpl:95 qw422016.N().S(``) -//line app/vmalert/web.qtpl:85 +//line app/vmalert/web.qtpl:95 qw422016.N().D(rNoMatch[g.ID]) -//line app/vmalert/web.qtpl:85 +//line app/vmalert/web.qtpl:95 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:85 +//line app/vmalert/web.qtpl:95 } -//line app/vmalert/web.qtpl:85 +//line app/vmalert/web.qtpl:95 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:86 +//line app/vmalert/web.qtpl:96 qw422016.N().D(rOk[g.ID]) -//line app/vmalert/web.qtpl:86 +//line app/vmalert/web.qtpl:96 qw422016.N().S(`

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

`) -//line app/vmalert/web.qtpl:88 +//line app/vmalert/web.qtpl:98 if len(g.Params) > 0 { -//line app/vmalert/web.qtpl:88 +//line app/vmalert/web.qtpl:98 qw422016.N().S(`
Extra params `) -//line app/vmalert/web.qtpl:90 +//line app/vmalert/web.qtpl:100 for _, param := range g.Params { -//line app/vmalert/web.qtpl:90 +//line app/vmalert/web.qtpl:100 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:91 +//line app/vmalert/web.qtpl:101 qw422016.E().S(param) -//line app/vmalert/web.qtpl:91 +//line app/vmalert/web.qtpl:101 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:92 +//line app/vmalert/web.qtpl:102 } -//line app/vmalert/web.qtpl:92 +//line app/vmalert/web.qtpl:102 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:94 +//line app/vmalert/web.qtpl:104 } -//line app/vmalert/web.qtpl:94 +//line app/vmalert/web.qtpl:104 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:95 +//line app/vmalert/web.qtpl:105 if len(g.Headers) > 0 { -//line app/vmalert/web.qtpl:95 +//line app/vmalert/web.qtpl:105 qw422016.N().S(`
Extra headers `) -//line app/vmalert/web.qtpl:97 +//line app/vmalert/web.qtpl:107 for _, header := range g.Headers { -//line app/vmalert/web.qtpl:97 +//line app/vmalert/web.qtpl:107 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:98 +//line app/vmalert/web.qtpl:108 qw422016.E().S(header) -//line app/vmalert/web.qtpl:98 +//line app/vmalert/web.qtpl:108 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:99 +//line app/vmalert/web.qtpl:109 } -//line app/vmalert/web.qtpl:99 +//line app/vmalert/web.qtpl:109 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:101 +//line app/vmalert/web.qtpl:111 } -//line app/vmalert/web.qtpl:101 +//line app/vmalert/web.qtpl:111 qw422016.N().S(`
-
@@ -417,300 +431,308 @@ func StreamListGroups(qw422016 *qt422016.Writer, r *http.Request, originGroups [ `) -//line app/vmalert/web.qtpl:113 +//line app/vmalert/web.qtpl:123 for _, r := range g.Rules { -//line app/vmalert/web.qtpl:113 +//line app/vmalert/web.qtpl:123 qw422016.N().S(` - +//line app/vmalert/web.qtpl:124 + qw422016.N().S(`" data-rule-name="`) +//line app/vmalert/web.qtpl:124 + qw422016.E().S(r.Name) +//line app/vmalert/web.qtpl:124 + qw422016.N().S(`" data-bs-target="`) +//line app/vmalert/web.qtpl:124 + qw422016.E().S(g.ID) +//line app/vmalert/web.qtpl:124 + qw422016.N().S(`"> `) -//line app/vmalert/web.qtpl:153 +//line app/vmalert/web.qtpl:163 } -//line app/vmalert/web.qtpl:153 +//line app/vmalert/web.qtpl:163 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:118 +//line app/vmalert/web.qtpl:128 if r.Type == "alerting" { -//line app/vmalert/web.qtpl:118 +//line app/vmalert/web.qtpl:128 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:119 +//line app/vmalert/web.qtpl:129 if r.KeepFiringFor > 0 { -//line app/vmalert/web.qtpl:119 +//line app/vmalert/web.qtpl:129 qw422016.N().S(` alert: `) -//line app/vmalert/web.qtpl:120 +//line app/vmalert/web.qtpl:130 qw422016.E().S(r.Name) -//line app/vmalert/web.qtpl:120 +//line app/vmalert/web.qtpl:130 qw422016.N().S(` (for: `) -//line app/vmalert/web.qtpl:120 +//line app/vmalert/web.qtpl:130 qw422016.E().V(r.Duration) -//line app/vmalert/web.qtpl:120 +//line app/vmalert/web.qtpl:130 qw422016.N().S(` seconds, keep_firing_for: `) -//line app/vmalert/web.qtpl:120 +//line app/vmalert/web.qtpl:130 qw422016.E().V(r.KeepFiringFor) -//line app/vmalert/web.qtpl:120 +//line app/vmalert/web.qtpl:130 qw422016.N().S(` seconds) `) -//line app/vmalert/web.qtpl:121 +//line app/vmalert/web.qtpl:131 } else { -//line app/vmalert/web.qtpl:121 +//line app/vmalert/web.qtpl:131 qw422016.N().S(` alert: `) -//line app/vmalert/web.qtpl:122 +//line app/vmalert/web.qtpl:132 qw422016.E().S(r.Name) -//line app/vmalert/web.qtpl:122 +//line app/vmalert/web.qtpl:132 qw422016.N().S(` (for: `) -//line app/vmalert/web.qtpl:122 +//line app/vmalert/web.qtpl:132 qw422016.E().V(r.Duration) -//line app/vmalert/web.qtpl:122 +//line app/vmalert/web.qtpl:132 qw422016.N().S(` seconds) `) -//line app/vmalert/web.qtpl:123 +//line app/vmalert/web.qtpl:133 } -//line app/vmalert/web.qtpl:123 +//line app/vmalert/web.qtpl:133 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:124 +//line app/vmalert/web.qtpl:134 } else { -//line app/vmalert/web.qtpl:124 +//line app/vmalert/web.qtpl:134 qw422016.N().S(` record: `) -//line app/vmalert/web.qtpl:125 +//line app/vmalert/web.qtpl:135 qw422016.E().S(r.Name) -//line app/vmalert/web.qtpl:125 +//line app/vmalert/web.qtpl:135 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:126 +//line app/vmalert/web.qtpl:136 } -//line app/vmalert/web.qtpl:126 +//line app/vmalert/web.qtpl:136 qw422016.N().S(` | `) -//line app/vmalert/web.qtpl:128 +//line app/vmalert/web.qtpl:138 streamseriesFetchedWarn(qw422016, r) -//line app/vmalert/web.qtpl:128 +//line app/vmalert/web.qtpl:138 qw422016.N().S(` Details
`)
-//line app/vmalert/web.qtpl:132
+//line app/vmalert/web.qtpl:142
 				qw422016.E().S(r.Query)
-//line app/vmalert/web.qtpl:132
+//line app/vmalert/web.qtpl:142
 				qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:135 +//line app/vmalert/web.qtpl:145 if len(r.Labels) > 0 { -//line app/vmalert/web.qtpl:135 +//line app/vmalert/web.qtpl:145 qw422016.N().S(` Labels:`) -//line app/vmalert/web.qtpl:135 +//line app/vmalert/web.qtpl:145 } -//line app/vmalert/web.qtpl:135 +//line app/vmalert/web.qtpl:145 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:136 +//line app/vmalert/web.qtpl:146 for k, v := range r.Labels { -//line app/vmalert/web.qtpl:136 +//line app/vmalert/web.qtpl:146 qw422016.N().S(` - `) -//line app/vmalert/web.qtpl:137 + `) +//line app/vmalert/web.qtpl:147 qw422016.E().S(k) -//line app/vmalert/web.qtpl:137 +//line app/vmalert/web.qtpl:147 qw422016.N().S(`=`) -//line app/vmalert/web.qtpl:137 +//line app/vmalert/web.qtpl:147 qw422016.E().S(v) -//line app/vmalert/web.qtpl:137 +//line app/vmalert/web.qtpl:147 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:138 +//line app/vmalert/web.qtpl:148 } -//line app/vmalert/web.qtpl:138 +//line app/vmalert/web.qtpl:148 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:140 +//line app/vmalert/web.qtpl:150 if r.LastError != "" { -//line app/vmalert/web.qtpl:140 +//line app/vmalert/web.qtpl:150 qw422016.N().S(`
Error:
`) -//line app/vmalert/web.qtpl:144 +//line app/vmalert/web.qtpl:154 qw422016.E().S(r.LastError) -//line app/vmalert/web.qtpl:144 +//line app/vmalert/web.qtpl:154 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:147 +//line app/vmalert/web.qtpl:157 } -//line app/vmalert/web.qtpl:147 +//line app/vmalert/web.qtpl:157 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:150 +//line app/vmalert/web.qtpl:160 qw422016.N().D(r.LastSamples) -//line app/vmalert/web.qtpl:150 +//line app/vmalert/web.qtpl:160 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:151 +//line app/vmalert/web.qtpl:161 qw422016.N().FPrec(time.Since(r.LastEvaluation).Seconds(), 3) -//line app/vmalert/web.qtpl:151 +//line app/vmalert/web.qtpl:161 qw422016.N().S(`s ago
`) -//line app/vmalert/web.qtpl:157 +//line app/vmalert/web.qtpl:167 } -//line app/vmalert/web.qtpl:157 +//line app/vmalert/web.qtpl:167 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:158 +//line app/vmalert/web.qtpl:168 } else { -//line app/vmalert/web.qtpl:158 +//line app/vmalert/web.qtpl:168 qw422016.N().S(`

No groups...

`) -//line app/vmalert/web.qtpl:162 +//line app/vmalert/web.qtpl:172 } -//line app/vmalert/web.qtpl:162 +//line app/vmalert/web.qtpl:172 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:164 +//line app/vmalert/web.qtpl:174 tpl.StreamFooter(qw422016, r) -//line app/vmalert/web.qtpl:164 +//line app/vmalert/web.qtpl:174 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 } -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 func WriteListGroups(qq422016 qtio422016.Writer, r *http.Request, originGroups []apiGroup) { -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 StreamListGroups(qw422016, r, originGroups) -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 } -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 func ListGroups(r *http.Request, originGroups []apiGroup) string { -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 WriteListGroups(qb422016, r, originGroups) -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 return qs422016 -//line app/vmalert/web.qtpl:166 +//line app/vmalert/web.qtpl:176 } -//line app/vmalert/web.qtpl:169 +//line app/vmalert/web.qtpl:179 func StreamListAlerts(qw422016 *qt422016.Writer, r *http.Request, groupAlerts []groupAlerts) { -//line app/vmalert/web.qtpl:169 +//line app/vmalert/web.qtpl:179 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:170 +//line app/vmalert/web.qtpl:180 prefix := utils.Prefix(r.URL.Path) -//line app/vmalert/web.qtpl:170 +//line app/vmalert/web.qtpl:180 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:171 +//line app/vmalert/web.qtpl:181 tpl.StreamHeader(qw422016, r, navItems, "Alerts", getLastConfigError()) -//line app/vmalert/web.qtpl:171 +//line app/vmalert/web.qtpl:181 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:172 +//line app/vmalert/web.qtpl:182 if len(groupAlerts) > 0 { -//line app/vmalert/web.qtpl:172 +//line app/vmalert/web.qtpl:182 qw422016.N().S(` Collapse All Expand All `) -//line app/vmalert/web.qtpl:175 +//line app/vmalert/web.qtpl:185 for _, ga := range groupAlerts { -//line app/vmalert/web.qtpl:175 +//line app/vmalert/web.qtpl:185 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:176 +//line app/vmalert/web.qtpl:186 g := ga.Group -//line app/vmalert/web.qtpl:176 +//line app/vmalert/web.qtpl:186 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:185 +//line app/vmalert/web.qtpl:195 var keys []string alertsByRule := make(map[string][]*apiAlert) for _, alert := range ga.Alerts { @@ -721,20 +743,20 @@ func StreamListAlerts(qw422016 *qt422016.Writer, r *http.Request, groupAlerts [] } sort.Strings(keys) -//line app/vmalert/web.qtpl:194 +//line app/vmalert/web.qtpl:204 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:196 +//line app/vmalert/web.qtpl:206 for _, ruleID := range keys { -//line app/vmalert/web.qtpl:196 +//line app/vmalert/web.qtpl:206 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:198 +//line app/vmalert/web.qtpl:208 defaultAR := alertsByRule[ruleID][0] var labelKeys []string for k := range defaultAR.Labels { @@ -742,28 +764,28 @@ func StreamListAlerts(qw422016 *qt422016.Writer, r *http.Request, groupAlerts [] } sort.Strings(labelKeys) -//line app/vmalert/web.qtpl:204 +//line app/vmalert/web.qtpl:214 qw422016.N().S(`
alert: `) -//line app/vmalert/web.qtpl:206 +//line app/vmalert/web.qtpl:216 qw422016.E().S(defaultAR.Name) -//line app/vmalert/web.qtpl:206 +//line app/vmalert/web.qtpl:216 qw422016.N().S(` (`) -//line app/vmalert/web.qtpl:206 +//line app/vmalert/web.qtpl:216 qw422016.N().D(len(alertsByRule[ruleID])) -//line app/vmalert/web.qtpl:206 +//line app/vmalert/web.qtpl:216 qw422016.N().S(`) | Source
expr:
`)
-//line app/vmalert/web.qtpl:209
+//line app/vmalert/web.qtpl:219
 				qw422016.E().S(defaultAR.Expression)
-//line app/vmalert/web.qtpl:209
+//line app/vmalert/web.qtpl:219
 				qw422016.N().S(`
@@ -777,213 +799,213 @@ func StreamListAlerts(qw422016 *qt422016.Writer, r *http.Request, groupAlerts [] `) -//line app/vmalert/web.qtpl:221 +//line app/vmalert/web.qtpl:231 for _, ar := range alertsByRule[ruleID] { -//line app/vmalert/web.qtpl:221 +//line app/vmalert/web.qtpl:231 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:239 +//line app/vmalert/web.qtpl:249 } -//line app/vmalert/web.qtpl:239 +//line app/vmalert/web.qtpl:249 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:224 +//line app/vmalert/web.qtpl:234 for _, k := range labelKeys { -//line app/vmalert/web.qtpl:224 +//line app/vmalert/web.qtpl:234 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:225 +//line app/vmalert/web.qtpl:235 qw422016.E().S(k) -//line app/vmalert/web.qtpl:225 +//line app/vmalert/web.qtpl:235 qw422016.N().S(`=`) -//line app/vmalert/web.qtpl:225 +//line app/vmalert/web.qtpl:235 qw422016.E().S(ar.Labels[k]) -//line app/vmalert/web.qtpl:225 +//line app/vmalert/web.qtpl:235 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:226 +//line app/vmalert/web.qtpl:236 } -//line app/vmalert/web.qtpl:226 +//line app/vmalert/web.qtpl:236 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:228 +//line app/vmalert/web.qtpl:238 streambadgeState(qw422016, ar.State) -//line app/vmalert/web.qtpl:228 +//line app/vmalert/web.qtpl:238 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:230 +//line app/vmalert/web.qtpl:240 qw422016.E().S(ar.ActiveAt.Format("2006-01-02T15:04:05Z07:00")) -//line app/vmalert/web.qtpl:230 +//line app/vmalert/web.qtpl:240 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:231 +//line app/vmalert/web.qtpl:241 if ar.Restored { -//line app/vmalert/web.qtpl:231 +//line app/vmalert/web.qtpl:241 streambadgeRestored(qw422016) -//line app/vmalert/web.qtpl:231 +//line app/vmalert/web.qtpl:241 } -//line app/vmalert/web.qtpl:231 +//line app/vmalert/web.qtpl:241 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:232 +//line app/vmalert/web.qtpl:242 if ar.Stabilizing { -//line app/vmalert/web.qtpl:232 +//line app/vmalert/web.qtpl:242 streambadgeStabilizing(qw422016) -//line app/vmalert/web.qtpl:232 +//line app/vmalert/web.qtpl:242 } -//line app/vmalert/web.qtpl:232 +//line app/vmalert/web.qtpl:242 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:234 +//line app/vmalert/web.qtpl:244 qw422016.E().S(ar.Value) -//line app/vmalert/web.qtpl:234 +//line app/vmalert/web.qtpl:244 qw422016.N().S(` Details
`) -//line app/vmalert/web.qtpl:242 +//line app/vmalert/web.qtpl:252 } -//line app/vmalert/web.qtpl:242 +//line app/vmalert/web.qtpl:252 qw422016.N().S(`

`) -//line app/vmalert/web.qtpl:245 +//line app/vmalert/web.qtpl:255 } -//line app/vmalert/web.qtpl:245 +//line app/vmalert/web.qtpl:255 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:247 +//line app/vmalert/web.qtpl:257 } else { -//line app/vmalert/web.qtpl:247 +//line app/vmalert/web.qtpl:257 qw422016.N().S(`

No active alerts...

`) -//line app/vmalert/web.qtpl:251 +//line app/vmalert/web.qtpl:261 } -//line app/vmalert/web.qtpl:251 +//line app/vmalert/web.qtpl:261 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:253 +//line app/vmalert/web.qtpl:263 tpl.StreamFooter(qw422016, r) -//line app/vmalert/web.qtpl:253 +//line app/vmalert/web.qtpl:263 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 } -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 func WriteListAlerts(qq422016 qtio422016.Writer, r *http.Request, groupAlerts []groupAlerts) { -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 StreamListAlerts(qw422016, r, groupAlerts) -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 } -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 func ListAlerts(r *http.Request, groupAlerts []groupAlerts) string { -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 WriteListAlerts(qb422016, r, groupAlerts) -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 return qs422016 -//line app/vmalert/web.qtpl:255 +//line app/vmalert/web.qtpl:265 } -//line app/vmalert/web.qtpl:257 +//line app/vmalert/web.qtpl:267 func StreamListTargets(qw422016 *qt422016.Writer, r *http.Request, targets map[notifier.TargetType][]notifier.Target) { -//line app/vmalert/web.qtpl:257 +//line app/vmalert/web.qtpl:267 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:258 +//line app/vmalert/web.qtpl:268 tpl.StreamHeader(qw422016, r, navItems, "Notifiers", getLastConfigError()) -//line app/vmalert/web.qtpl:258 +//line app/vmalert/web.qtpl:268 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:259 +//line app/vmalert/web.qtpl:269 if len(targets) > 0 { -//line app/vmalert/web.qtpl:259 +//line app/vmalert/web.qtpl:269 qw422016.N().S(` Collapse All Expand All `) -//line app/vmalert/web.qtpl:264 +//line app/vmalert/web.qtpl:274 var keys []string for key := range targets { keys = append(keys, string(key)) } sort.Strings(keys) -//line app/vmalert/web.qtpl:269 +//line app/vmalert/web.qtpl:279 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:271 +//line app/vmalert/web.qtpl:281 for i := range keys { -//line app/vmalert/web.qtpl:271 +//line app/vmalert/web.qtpl:281 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:272 +//line app/vmalert/web.qtpl:282 typeK, ns := keys[i], targets[notifier.TargetType(keys[i])] count := len(ns) -//line app/vmalert/web.qtpl:274 +//line app/vmalert/web.qtpl:284 qw422016.N().S(`
@@ -994,119 +1016,119 @@ func StreamListTargets(qw422016 *qt422016.Writer, r *http.Request, targets map[n `) -//line app/vmalert/web.qtpl:288 +//line app/vmalert/web.qtpl:298 for _, n := range ns { -//line app/vmalert/web.qtpl:288 +//line app/vmalert/web.qtpl:298 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:297 +//line app/vmalert/web.qtpl:307 } -//line app/vmalert/web.qtpl:297 +//line app/vmalert/web.qtpl:307 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:291 +//line app/vmalert/web.qtpl:301 for _, l := range n.Labels.GetLabels() { -//line app/vmalert/web.qtpl:291 +//line app/vmalert/web.qtpl:301 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:292 +//line app/vmalert/web.qtpl:302 qw422016.E().S(l.Name) -//line app/vmalert/web.qtpl:292 +//line app/vmalert/web.qtpl:302 qw422016.N().S(`=`) -//line app/vmalert/web.qtpl:292 +//line app/vmalert/web.qtpl:302 qw422016.E().S(l.Value) -//line app/vmalert/web.qtpl:292 +//line app/vmalert/web.qtpl:302 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:293 +//line app/vmalert/web.qtpl:303 } -//line app/vmalert/web.qtpl:293 +//line app/vmalert/web.qtpl:303 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:295 +//line app/vmalert/web.qtpl:305 qw422016.E().S(n.Notifier.Addr()) -//line app/vmalert/web.qtpl:295 +//line app/vmalert/web.qtpl:305 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:301 +//line app/vmalert/web.qtpl:311 } -//line app/vmalert/web.qtpl:301 +//line app/vmalert/web.qtpl:311 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:303 +//line app/vmalert/web.qtpl:313 } else { -//line app/vmalert/web.qtpl:303 +//line app/vmalert/web.qtpl:313 qw422016.N().S(`

No targets...

`) -//line app/vmalert/web.qtpl:307 +//line app/vmalert/web.qtpl:317 } -//line app/vmalert/web.qtpl:307 +//line app/vmalert/web.qtpl:317 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:309 +//line app/vmalert/web.qtpl:319 tpl.StreamFooter(qw422016, r) -//line app/vmalert/web.qtpl:309 +//line app/vmalert/web.qtpl:319 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 } -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 func WriteListTargets(qq422016 qtio422016.Writer, r *http.Request, targets map[notifier.TargetType][]notifier.Target) { -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 StreamListTargets(qw422016, r, targets) -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 } -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 func ListTargets(r *http.Request, targets map[notifier.TargetType][]notifier.Target) string { -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 WriteListTargets(qb422016, r, targets) -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 return qs422016 -//line app/vmalert/web.qtpl:311 +//line app/vmalert/web.qtpl:321 } -//line app/vmalert/web.qtpl:313 +//line app/vmalert/web.qtpl:323 func StreamAlert(qw422016 *qt422016.Writer, r *http.Request, alert *apiAlert) { -//line app/vmalert/web.qtpl:313 +//line app/vmalert/web.qtpl:323 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:314 +//line app/vmalert/web.qtpl:324 prefix := utils.Prefix(r.URL.Path) -//line app/vmalert/web.qtpl:314 +//line app/vmalert/web.qtpl:324 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:315 +//line app/vmalert/web.qtpl:325 tpl.StreamHeader(qw422016, r, navItems, "", getLastConfigError()) -//line app/vmalert/web.qtpl:315 +//line app/vmalert/web.qtpl:325 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:317 +//line app/vmalert/web.qtpl:327 var labelKeys []string for k := range alert.Labels { labelKeys = append(labelKeys, k) @@ -1119,28 +1141,28 @@ func StreamAlert(qw422016 *qt422016.Writer, r *http.Request, alert *apiAlert) { } sort.Strings(annotationKeys) -//line app/vmalert/web.qtpl:328 +//line app/vmalert/web.qtpl:338 qw422016.N().S(`
Alert: `) -//line app/vmalert/web.qtpl:329 +//line app/vmalert/web.qtpl:339 qw422016.E().S(alert.Name) -//line app/vmalert/web.qtpl:329 +//line app/vmalert/web.qtpl:339 qw422016.N().S(``) -//line app/vmalert/web.qtpl:329 +//line app/vmalert/web.qtpl:339 qw422016.E().S(alert.State) -//line app/vmalert/web.qtpl:329 +//line app/vmalert/web.qtpl:339 qw422016.N().S(`
@@ -1149,9 +1171,9 @@ func StreamAlert(qw422016 *qt422016.Writer, r *http.Request, alert *apiAlert) {
`) -//line app/vmalert/web.qtpl:336 +//line app/vmalert/web.qtpl:346 qw422016.E().S(alert.ActiveAt.Format("2006-01-02T15:04:05Z07:00")) -//line app/vmalert/web.qtpl:336 +//line app/vmalert/web.qtpl:346 qw422016.N().S(`
@@ -1163,9 +1185,9 @@ func StreamAlert(qw422016 *qt422016.Writer, r *http.Request, alert *apiAlert) {
`)
-//line app/vmalert/web.qtpl:346
+//line app/vmalert/web.qtpl:356
 	qw422016.E().S(alert.Expression)
-//line app/vmalert/web.qtpl:346
+//line app/vmalert/web.qtpl:356
 	qw422016.N().S(`
@@ -1177,23 +1199,23 @@ func StreamAlert(qw422016 *qt422016.Writer, r *http.Request, alert *apiAlert) {
`) -//line app/vmalert/web.qtpl:356 +//line app/vmalert/web.qtpl:366 for _, k := range labelKeys { -//line app/vmalert/web.qtpl:356 +//line app/vmalert/web.qtpl:366 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:357 +//line app/vmalert/web.qtpl:367 qw422016.E().S(k) -//line app/vmalert/web.qtpl:357 +//line app/vmalert/web.qtpl:367 qw422016.N().S(`=`) -//line app/vmalert/web.qtpl:357 +//line app/vmalert/web.qtpl:367 qw422016.E().S(alert.Labels[k]) -//line app/vmalert/web.qtpl:357 +//line app/vmalert/web.qtpl:367 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:358 +//line app/vmalert/web.qtpl:368 } -//line app/vmalert/web.qtpl:358 +//line app/vmalert/web.qtpl:368 qw422016.N().S(`
@@ -1205,24 +1227,24 @@ func StreamAlert(qw422016 *qt422016.Writer, r *http.Request, alert *apiAlert) {
`) -//line app/vmalert/web.qtpl:368 +//line app/vmalert/web.qtpl:378 for _, k := range annotationKeys { -//line app/vmalert/web.qtpl:368 +//line app/vmalert/web.qtpl:378 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:369 +//line app/vmalert/web.qtpl:379 qw422016.E().S(k) -//line app/vmalert/web.qtpl:369 +//line app/vmalert/web.qtpl:379 qw422016.N().S(`:

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

`) -//line app/vmalert/web.qtpl:371 +//line app/vmalert/web.qtpl:381 } -//line app/vmalert/web.qtpl:371 +//line app/vmalert/web.qtpl:381 qw422016.N().S(`
@@ -1234,17 +1256,17 @@ func StreamAlert(qw422016 *qt422016.Writer, r *http.Request, alert *apiAlert) { @@ -1256,66 +1278,66 @@ func StreamAlert(qw422016 *qt422016.Writer, r *http.Request, alert *apiAlert) { `) -//line app/vmalert/web.qtpl:395 +//line app/vmalert/web.qtpl:405 tpl.StreamFooter(qw422016, r) -//line app/vmalert/web.qtpl:395 +//line app/vmalert/web.qtpl:405 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 } -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 func WriteAlert(qq422016 qtio422016.Writer, r *http.Request, alert *apiAlert) { -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 StreamAlert(qw422016, r, alert) -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 } -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 func Alert(r *http.Request, alert *apiAlert) string { -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 WriteAlert(qb422016, r, alert) -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 return qs422016 -//line app/vmalert/web.qtpl:397 +//line app/vmalert/web.qtpl:407 } -//line app/vmalert/web.qtpl:400 +//line app/vmalert/web.qtpl:410 func StreamRuleDetails(qw422016 *qt422016.Writer, r *http.Request, rule apiRule) { -//line app/vmalert/web.qtpl:400 +//line app/vmalert/web.qtpl:410 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:401 +//line app/vmalert/web.qtpl:411 prefix := utils.Prefix(r.URL.Path) -//line app/vmalert/web.qtpl:401 +//line app/vmalert/web.qtpl:411 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:402 +//line app/vmalert/web.qtpl:412 tpl.StreamHeader(qw422016, r, navItems, "", getLastConfigError()) -//line app/vmalert/web.qtpl:402 +//line app/vmalert/web.qtpl:412 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:404 +//line app/vmalert/web.qtpl:414 var labelKeys []string for k := range rule.Labels { labelKeys = append(labelKeys, k) @@ -1339,28 +1361,28 @@ func StreamRuleDetails(qw422016 *qt422016.Writer, r *http.Request, rule apiRule) } } -//line app/vmalert/web.qtpl:427 +//line app/vmalert/web.qtpl:437 qw422016.N().S(`
Rule: `) -//line app/vmalert/web.qtpl:428 +//line app/vmalert/web.qtpl:438 qw422016.E().S(rule.Name) -//line app/vmalert/web.qtpl:428 +//line app/vmalert/web.qtpl:438 qw422016.N().S(``) -//line app/vmalert/web.qtpl:428 +//line app/vmalert/web.qtpl:438 qw422016.E().S(rule.Health) -//line app/vmalert/web.qtpl:428 +//line app/vmalert/web.qtpl:438 qw422016.N().S(`
@@ -1369,17 +1391,17 @@ func StreamRuleDetails(qw422016 *qt422016.Writer, r *http.Request, rule apiRule)
`)
-//line app/vmalert/web.qtpl:435
+//line app/vmalert/web.qtpl:445
 	qw422016.E().S(rule.Query)
-//line app/vmalert/web.qtpl:435
+//line app/vmalert/web.qtpl:445
 	qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:439 +//line app/vmalert/web.qtpl:449 if rule.Type == "alerting" { -//line app/vmalert/web.qtpl:439 +//line app/vmalert/web.qtpl:449 qw422016.N().S(`
@@ -1388,17 +1410,17 @@ func StreamRuleDetails(qw422016 *qt422016.Writer, r *http.Request, rule apiRule)
`) -//line app/vmalert/web.qtpl:446 +//line app/vmalert/web.qtpl:456 qw422016.E().V(rule.Duration) -//line app/vmalert/web.qtpl:446 +//line app/vmalert/web.qtpl:456 qw422016.N().S(` seconds
`) -//line app/vmalert/web.qtpl:450 +//line app/vmalert/web.qtpl:460 if rule.KeepFiringFor > 0 { -//line app/vmalert/web.qtpl:450 +//line app/vmalert/web.qtpl:460 qw422016.N().S(`
@@ -1407,22 +1429,22 @@ func StreamRuleDetails(qw422016 *qt422016.Writer, r *http.Request, rule apiRule)
`) -//line app/vmalert/web.qtpl:457 +//line app/vmalert/web.qtpl:467 qw422016.E().V(rule.KeepFiringFor) -//line app/vmalert/web.qtpl:457 +//line app/vmalert/web.qtpl:467 qw422016.N().S(` seconds
`) -//line app/vmalert/web.qtpl:461 +//line app/vmalert/web.qtpl:471 } -//line app/vmalert/web.qtpl:461 +//line app/vmalert/web.qtpl:471 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:462 +//line app/vmalert/web.qtpl:472 } -//line app/vmalert/web.qtpl:462 +//line app/vmalert/web.qtpl:472 qw422016.N().S(`
@@ -1431,31 +1453,31 @@ func StreamRuleDetails(qw422016 *qt422016.Writer, r *http.Request, rule apiRule)
`) -//line app/vmalert/web.qtpl:469 +//line app/vmalert/web.qtpl:479 for _, k := range labelKeys { -//line app/vmalert/web.qtpl:469 +//line app/vmalert/web.qtpl:479 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:470 +//line app/vmalert/web.qtpl:480 qw422016.E().S(k) -//line app/vmalert/web.qtpl:470 +//line app/vmalert/web.qtpl:480 qw422016.N().S(`=`) -//line app/vmalert/web.qtpl:470 +//line app/vmalert/web.qtpl:480 qw422016.E().S(rule.Labels[k]) -//line app/vmalert/web.qtpl:470 +//line app/vmalert/web.qtpl:480 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:471 +//line app/vmalert/web.qtpl:481 } -//line app/vmalert/web.qtpl:471 +//line app/vmalert/web.qtpl:481 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:475 +//line app/vmalert/web.qtpl:485 if rule.Type == "alerting" { -//line app/vmalert/web.qtpl:475 +//line app/vmalert/web.qtpl:485 qw422016.N().S(`
@@ -1464,24 +1486,24 @@ func StreamRuleDetails(qw422016 *qt422016.Writer, r *http.Request, rule apiRule)
`) -//line app/vmalert/web.qtpl:482 +//line app/vmalert/web.qtpl:492 for _, k := range annotationKeys { -//line app/vmalert/web.qtpl:482 +//line app/vmalert/web.qtpl:492 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:483 +//line app/vmalert/web.qtpl:493 qw422016.E().S(k) -//line app/vmalert/web.qtpl:483 +//line app/vmalert/web.qtpl:493 qw422016.N().S(`:

`) -//line app/vmalert/web.qtpl:484 +//line app/vmalert/web.qtpl:494 qw422016.E().S(rule.Annotations[k]) -//line app/vmalert/web.qtpl:484 +//line app/vmalert/web.qtpl:494 qw422016.N().S(`

`) -//line app/vmalert/web.qtpl:485 +//line app/vmalert/web.qtpl:495 } -//line app/vmalert/web.qtpl:485 +//line app/vmalert/web.qtpl:495 qw422016.N().S(`
@@ -1493,17 +1515,17 @@ func StreamRuleDetails(qw422016 *qt422016.Writer, r *http.Request, rule apiRule)
`) -//line app/vmalert/web.qtpl:495 +//line app/vmalert/web.qtpl:505 qw422016.E().V(rule.Debug) -//line app/vmalert/web.qtpl:495 +//line app/vmalert/web.qtpl:505 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:499 +//line app/vmalert/web.qtpl:509 } -//line app/vmalert/web.qtpl:499 +//line app/vmalert/web.qtpl:509 qw422016.N().S(` @@ -1530,9 +1552,9 @@ func StreamRuleDetails(qw422016 *qt422016.Writer, r *http.Request, rule apiRule)
`) -//line app/vmalert/web.qtpl:512 +//line app/vmalert/web.qtpl:522 if seriesFetchedWarning { -//line app/vmalert/web.qtpl:512 +//line app/vmalert/web.qtpl:522 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:524 +//line app/vmalert/web.qtpl:534 } -//line app/vmalert/web.qtpl:524 +//line app/vmalert/web.qtpl:534 qw422016.N().S(`
Last `) -//line app/vmalert/web.qtpl:525 +//line app/vmalert/web.qtpl:535 qw422016.N().D(len(rule.Updates)) -//line app/vmalert/web.qtpl:525 +//line app/vmalert/web.qtpl:535 qw422016.N().S(`/`) -//line app/vmalert/web.qtpl:525 +//line app/vmalert/web.qtpl:535 qw422016.N().D(rule.MaxUpdates) -//line app/vmalert/web.qtpl:525 +//line app/vmalert/web.qtpl:535 qw422016.N().S(` updates:
@@ -1565,13 +1587,13 @@ func StreamRuleDetails(qw422016 *qt422016.Writer, r *http.Request, rule apiRule) `) -//line app/vmalert/web.qtpl:531 +//line app/vmalert/web.qtpl:541 if seriesFetchedEnabled { -//line app/vmalert/web.qtpl:531 +//line app/vmalert/web.qtpl:541 qw422016.N().S(``) -//line app/vmalert/web.qtpl:531 +//line app/vmalert/web.qtpl:541 } -//line app/vmalert/web.qtpl:531 +//line app/vmalert/web.qtpl:541 qw422016.N().S(` @@ -1581,285 +1603,285 @@ func StreamRuleDetails(qw422016 *qt422016.Writer, r *http.Request, rule apiRule) `) -//line app/vmalert/web.qtpl:539 +//line app/vmalert/web.qtpl:549 for _, u := range rule.Updates { -//line app/vmalert/web.qtpl:539 +//line app/vmalert/web.qtpl:549 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:545 +//line app/vmalert/web.qtpl:555 if seriesFetchedEnabled { -//line app/vmalert/web.qtpl:545 +//line app/vmalert/web.qtpl:555 qw422016.N().S(``) -//line app/vmalert/web.qtpl:545 +//line app/vmalert/web.qtpl:555 } -//line app/vmalert/web.qtpl:545 +//line app/vmalert/web.qtpl:555 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:553 +//line app/vmalert/web.qtpl:563 if u.Err != nil { -//line app/vmalert/web.qtpl:553 +//line app/vmalert/web.qtpl:563 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:559 +//line app/vmalert/web.qtpl:569 } -//line app/vmalert/web.qtpl:559 +//line app/vmalert/web.qtpl:569 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:560 +//line app/vmalert/web.qtpl:570 } -//line app/vmalert/web.qtpl:560 +//line app/vmalert/web.qtpl:570 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:562 +//line app/vmalert/web.qtpl:572 tpl.StreamFooter(qw422016, r) -//line app/vmalert/web.qtpl:562 +//line app/vmalert/web.qtpl:572 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 } -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 func WriteRuleDetails(qq422016 qtio422016.Writer, r *http.Request, rule apiRule) { -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 StreamRuleDetails(qw422016, r, rule) -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 } -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 func RuleDetails(r *http.Request, rule apiRule) string { -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 WriteRuleDetails(qb422016, r, rule) -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 return qs422016 -//line app/vmalert/web.qtpl:563 +//line app/vmalert/web.qtpl:573 } -//line app/vmalert/web.qtpl:567 +//line app/vmalert/web.qtpl:577 func streambadgeState(qw422016 *qt422016.Writer, state string) { -//line app/vmalert/web.qtpl:567 +//line app/vmalert/web.qtpl:577 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:569 +//line app/vmalert/web.qtpl:579 badgeClass := "bg-warning text-dark" if state == "firing" { badgeClass = "bg-danger" } -//line app/vmalert/web.qtpl:573 +//line app/vmalert/web.qtpl:583 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:574 +//line app/vmalert/web.qtpl:584 qw422016.E().S(state) -//line app/vmalert/web.qtpl:574 +//line app/vmalert/web.qtpl:584 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 } -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 func writebadgeState(qq422016 qtio422016.Writer, state string) { -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 streambadgeState(qw422016, state) -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 } -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 func badgeState(state string) string { -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 writebadgeState(qb422016, state) -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 return qs422016 -//line app/vmalert/web.qtpl:575 +//line app/vmalert/web.qtpl:585 } -//line app/vmalert/web.qtpl:577 +//line app/vmalert/web.qtpl:587 func streambadgeRestored(qw422016 *qt422016.Writer) { -//line app/vmalert/web.qtpl:577 +//line app/vmalert/web.qtpl:587 qw422016.N().S(` restored `) -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 } -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 func writebadgeRestored(qq422016 qtio422016.Writer) { -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 streambadgeRestored(qw422016) -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 } -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 func badgeRestored() string { -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 writebadgeRestored(qb422016) -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 return qs422016 -//line app/vmalert/web.qtpl:579 +//line app/vmalert/web.qtpl:589 } -//line app/vmalert/web.qtpl:581 +//line app/vmalert/web.qtpl:591 func streambadgeStabilizing(qw422016 *qt422016.Writer) { -//line app/vmalert/web.qtpl:581 +//line app/vmalert/web.qtpl:591 qw422016.N().S(` stabilizing `) -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 } -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 func writebadgeStabilizing(qq422016 qtio422016.Writer) { -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 streambadgeStabilizing(qw422016) -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 } -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 func badgeStabilizing() string { -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 writebadgeStabilizing(qb422016) -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 return qs422016 -//line app/vmalert/web.qtpl:583 +//line app/vmalert/web.qtpl:593 } -//line app/vmalert/web.qtpl:585 +//line app/vmalert/web.qtpl:595 func streamseriesFetchedWarn(qw422016 *qt422016.Writer, r apiRule) { -//line app/vmalert/web.qtpl:585 +//line app/vmalert/web.qtpl:595 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:586 +//line app/vmalert/web.qtpl:596 if isNoMatch(r) { -//line app/vmalert/web.qtpl:586 +//line app/vmalert/web.qtpl:596 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:595 +//line app/vmalert/web.qtpl:605 } -//line app/vmalert/web.qtpl:595 +//line app/vmalert/web.qtpl:605 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 } -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 func writeseriesFetchedWarn(qq422016 qtio422016.Writer, r apiRule) { -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 qw422016 := qt422016.AcquireWriter(qq422016) -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 streamseriesFetchedWarn(qw422016, r) -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 qt422016.ReleaseWriter(qw422016) -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 } -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 func seriesFetchedWarn(r apiRule) string { -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 qb422016 := qt422016.AcquireByteBuffer() -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 writeseriesFetchedWarn(qb422016, r) -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 qs422016 := string(qb422016.B) -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 qt422016.ReleaseByteBuffer(qb422016) -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 return qs422016 -//line app/vmalert/web.qtpl:596 +//line app/vmalert/web.qtpl:606 } -//line app/vmalert/web.qtpl:599 +//line app/vmalert/web.qtpl:609 func isNoMatch(r apiRule) bool { return r.LastSamples == 0 && r.LastSeriesFetched != nil && *r.LastSeriesFetched == 0 }
Updated at SamplesSeries fetchedDuration Executed at
`) -//line app/vmalert/web.qtpl:542 +//line app/vmalert/web.qtpl:552 qw422016.E().S(u.Time.Format(time.RFC3339)) -//line app/vmalert/web.qtpl:542 +//line app/vmalert/web.qtpl:552 qw422016.N().S(` `) -//line app/vmalert/web.qtpl:544 +//line app/vmalert/web.qtpl:554 qw422016.N().D(u.Samples) -//line app/vmalert/web.qtpl:544 +//line app/vmalert/web.qtpl:554 qw422016.N().S(``) -//line app/vmalert/web.qtpl:545 +//line app/vmalert/web.qtpl:555 if u.SeriesFetched != nil { -//line app/vmalert/web.qtpl:545 +//line app/vmalert/web.qtpl:555 qw422016.N().D(*u.SeriesFetched) -//line app/vmalert/web.qtpl:545 +//line app/vmalert/web.qtpl:555 } -//line app/vmalert/web.qtpl:545 +//line app/vmalert/web.qtpl:555 qw422016.N().S(``) -//line app/vmalert/web.qtpl:546 +//line app/vmalert/web.qtpl:556 qw422016.N().FPrec(u.Duration.Seconds(), 3) -//line app/vmalert/web.qtpl:546 +//line app/vmalert/web.qtpl:556 qw422016.N().S(`s `) -//line app/vmalert/web.qtpl:547 +//line app/vmalert/web.qtpl:557 qw422016.E().S(u.At.Format(time.RFC3339)) -//line app/vmalert/web.qtpl:547 +//line app/vmalert/web.qtpl:557 qw422016.N().S(`
`) -//line app/vmalert/web.qtpl:556 +//line app/vmalert/web.qtpl:566 qw422016.E().V(u.Err) -//line app/vmalert/web.qtpl:556 +//line app/vmalert/web.qtpl:566 qw422016.N().S(`