2021-09-07 21:39:22 +02:00
// Code generated by qtc from "web.qtpl". DO NOT EDIT.
// See https://github.com/valyala/quicktemplate for details.
2022-05-04 19:26:38 +02:00
//line app/vmalert/web.qtpl:1
2021-09-07 21:39:22 +02:00
package main
2022-05-04 19:26:38 +02:00
//line app/vmalert/web.qtpl:3
2021-09-07 21:39:22 +02:00
import (
2022-07-06 10:46:01 +02:00
"net/http"
2021-09-07 21:39:22 +02:00
"sort"
"time"
2022-02-02 13:11:41 +01:00
"github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/notifier"
2021-09-07 21:39:22 +02:00
"github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/tpl"
2022-07-08 10:26:13 +02:00
"github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/utils"
2021-09-07 21:39:22 +02:00
)
2022-07-06 10:46:01 +02:00
//line app/vmalert/web.qtpl:14
2021-09-07 21:39:22 +02:00
import (
qtio422016 "io"
qt422016 "github.com/valyala/quicktemplate"
)
2022-07-06 10:46:01 +02:00
//line app/vmalert/web.qtpl:14
2021-09-07 21:39:22 +02:00
var (
_ = qtio422016 . Copy
_ = qt422016 . AcquireByteBuffer
)
2022-05-04 19:26:38 +02:00
//line app/vmalert/web.qtpl:14
2022-07-06 10:46:01 +02:00
func StreamWelcome ( qw422016 * qt422016 . Writer , r * http . Request ) {
2022-05-04 19:26:38 +02:00
//line app/vmalert/web.qtpl:14
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2022-07-06 10:46:01 +02:00
` )
//line app/vmalert/web.qtpl:15
2023-07-03 14:59:52 +02:00
tpl . StreamHeader ( qw422016 , r , navItems , "vmalert" , configError ( ) )
2022-07-06 10:46:01 +02:00
//line app/vmalert/web.qtpl:15
qw422016 . N ( ) . S ( `
2021-09-07 21:39:22 +02:00
< p >
API : < br >
` )
2022-07-06 10:46:01 +02:00
//line app/vmalert/web.qtpl:18
2021-09-21 13:41:01 +02:00
for _ , p := range apiLinks {
2022-07-06 10:46:01 +02:00
//line app/vmalert/web.qtpl:18
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:19
2021-09-07 21:39:22 +02:00
p , doc := p [ 0 ] , p [ 1 ]
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:19
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2022-12-09 20:43:54 +01:00
< a href = " ` )
//line app/vmalert/web.qtpl:20
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( p )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:20
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` "> ` )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:20
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( p )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:20
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` </a> - ` )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:20
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( doc )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:20
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < br / >
` )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:21
2021-09-07 21:39:22 +02:00
}
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:21
qw422016 . N ( ) . S ( `
` )
//line app/vmalert/web.qtpl:22
if r . Header . Get ( "X-Forwarded-For" ) == "" {
//line app/vmalert/web.qtpl:22
qw422016 . N ( ) . S ( `
System : < br >
` )
//line app/vmalert/web.qtpl:24
for _ , p := range systemLinks {
//line app/vmalert/web.qtpl:24
qw422016 . N ( ) . S ( `
` )
//line app/vmalert/web.qtpl:25
p , doc := p [ 0 ] , p [ 1 ]
//line app/vmalert/web.qtpl:25
qw422016 . N ( ) . S ( `
< a href = " ` )
//line app/vmalert/web.qtpl:26
qw422016 . E ( ) . S ( p )
//line app/vmalert/web.qtpl:26
qw422016 . N ( ) . S ( ` "> ` )
//line app/vmalert/web.qtpl:26
qw422016 . E ( ) . S ( p )
//line app/vmalert/web.qtpl:26
qw422016 . N ( ) . S ( ` </a> - ` )
//line app/vmalert/web.qtpl:26
qw422016 . E ( ) . S ( doc )
//line app/vmalert/web.qtpl:26
qw422016 . N ( ) . S ( ` < br / >
` )
//line app/vmalert/web.qtpl:27
}
//line app/vmalert/web.qtpl:27
qw422016 . N ( ) . S ( `
` )
//line app/vmalert/web.qtpl:28
}
//line app/vmalert/web.qtpl:28
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< / p >
` )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:30
2022-07-06 10:46:01 +02:00
tpl . StreamFooter ( qw422016 , r )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:30
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2021-09-07 21:39:22 +02:00
}
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2022-07-06 10:46:01 +02:00
func WriteWelcome ( qq422016 qtio422016 . Writer , r * http . Request ) {
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2021-09-07 21:39:22 +02:00
qw422016 := qt422016 . AcquireWriter ( qq422016 )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2022-07-06 10:46:01 +02:00
StreamWelcome ( qw422016 , r )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2021-09-07 21:39:22 +02:00
qt422016 . ReleaseWriter ( qw422016 )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2021-09-07 21:39:22 +02:00
}
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2022-07-06 10:46:01 +02:00
func Welcome ( r * http . Request ) string {
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2021-09-07 21:39:22 +02:00
qb422016 := qt422016 . AcquireByteBuffer ( )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2022-07-06 10:46:01 +02:00
WriteWelcome ( qb422016 , r )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2021-09-07 21:39:22 +02:00
qs422016 := string ( qb422016 . B )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2021-09-07 21:39:22 +02:00
qt422016 . ReleaseByteBuffer ( qb422016 )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2021-09-07 21:39:22 +02:00
return qs422016
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:31
2021-09-07 21:39:22 +02:00
}
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:33
2023-05-10 14:38:13 +02:00
func streambuttonActive ( qw422016 * qt422016 . Writer , filter , expValue string ) {
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:33
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2022-12-09 20:43:54 +01:00
//line app/vmalert/web.qtpl:34
2023-05-10 14:38:13 +02:00
if filter != expValue {
//line app/vmalert/web.qtpl:34
qw422016 . N ( ) . S ( `
btn - secondary
` )
//line app/vmalert/web.qtpl:36
} else {
//line app/vmalert/web.qtpl:36
qw422016 . N ( ) . S ( `
btn - primary
` )
//line app/vmalert/web.qtpl:38
}
//line app/vmalert/web.qtpl:38
qw422016 . N ( ) . S ( `
` )
//line app/vmalert/web.qtpl:39
}
//line app/vmalert/web.qtpl:39
func writebuttonActive ( qq422016 qtio422016 . Writer , filter , expValue string ) {
//line app/vmalert/web.qtpl:39
qw422016 := qt422016 . AcquireWriter ( qq422016 )
//line app/vmalert/web.qtpl:39
streambuttonActive ( qw422016 , filter , expValue )
//line app/vmalert/web.qtpl:39
qt422016 . ReleaseWriter ( qw422016 )
//line app/vmalert/web.qtpl:39
}
//line app/vmalert/web.qtpl:39
func buttonActive ( filter , expValue string ) string {
//line app/vmalert/web.qtpl:39
qb422016 := qt422016 . AcquireByteBuffer ( )
//line app/vmalert/web.qtpl:39
writebuttonActive ( qb422016 , filter , expValue )
//line app/vmalert/web.qtpl:39
qs422016 := string ( qb422016 . B )
//line app/vmalert/web.qtpl:39
qt422016 . ReleaseByteBuffer ( qb422016 )
//line app/vmalert/web.qtpl:39
return qs422016
//line app/vmalert/web.qtpl:39
}
//line app/vmalert/web.qtpl:41
func StreamListGroups ( qw422016 * qt422016 . Writer , r * http . Request , originGroups [ ] APIGroup ) {
//line app/vmalert/web.qtpl:41
qw422016 . N ( ) . S ( `
` )
//line app/vmalert/web.qtpl:42
2022-09-14 14:04:24 +02:00
prefix := utils . Prefix ( r . URL . Path )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:42
2022-07-06 10:46:01 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:43
2023-07-03 14:59:52 +02:00
tpl . StreamHeader ( qw422016 , r , navItems , "Groups" , configError ( ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:43
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
2021-09-07 21:39:22 +02:00
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:45
filter := r . URL . Query ( ) . Get ( "filter" )
rOk := make ( map [ string ] int )
rNotOk := make ( map [ string ] int )
rNoMatch := make ( map [ string ] int )
var groups [ ] APIGroup
for _ , g := range originGroups {
var rules [ ] APIRule
for _ , r := range g . Rules {
if r . LastError != "" {
rNotOk [ g . ID ] ++
} else {
rOk [ g . ID ] ++
}
if isNoMatch ( r ) {
rNoMatch [ g . ID ] ++
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
if ( filter == "unhealthy" && r . LastError == "" ) ||
( filter == "noMatch" && ! isNoMatch ( r ) ) {
continue
}
rules = append ( rules , r )
}
if len ( rules ) > 0 {
g . Rules = rules
groups = append ( groups , g )
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
}
2021-09-07 21:39:22 +02:00
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:72
qw422016 . N ( ) . S ( `
< a class = " btn ` )
//line app/vmalert/web.qtpl:73
streambuttonActive ( qw422016 , filter , "" )
//line app/vmalert/web.qtpl:73
qw422016 . N ( ) . S ( ` " role=" button " onclick=" window . location = window . location . pathname " > All < / a >
2021-09-07 21:39:22 +02:00
< a class = "btn btn-primary" role = "button" onclick = "collapseAll()" > Collapse All < / a >
< a class = "btn btn-primary" role = "button" onclick = "expandAll()" > Expand All < / a >
2023-05-10 14:38:13 +02:00
< a class = " btn ` )
//line app/vmalert/web.qtpl:76
streambuttonActive ( qw422016 , filter , "unhealthy" )
//line app/vmalert/web.qtpl:76
2023-05-11 16:38:08 +02:00
qw422016 . N ( ) . S ( ` " role=" button " onclick=" location . href = ' ? filter = unhealthy ' " title=" Show only rules with errors " > Unhealthy < / a >
2023-05-10 14:38:13 +02:00
< a class = " btn ` )
//line app/vmalert/web.qtpl:77
streambuttonActive ( qw422016 , filter , "noMatch" )
//line app/vmalert/web.qtpl:77
2023-05-11 16:38:08 +02:00
qw422016 . N ( ) . S ( ` " role=" button " onclick=" location . href = ' ? filter = noMatch ' " title=" Show only rules matching no time series during last evaluation " > NoMatch < / a >
2021-09-07 21:39:22 +02:00
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:78
if len ( groups ) > 0 {
//line app/vmalert/web.qtpl:78
qw422016 . N ( ) . S ( `
` )
//line app/vmalert/web.qtpl:79
2021-09-07 21:39:22 +02:00
for _ , g := range groups {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:79
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< div
class = " group - heading ` )
//line app/vmalert/web.qtpl:81
2023-02-08 14:34:03 +01:00
if rNotOk [ g . ID ] > 0 {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:81
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` alert-danger ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:81
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:81
qw422016 . N ( ) . S ( ` " data-bs-target="rules- ` )
//line app/vmalert/web.qtpl:81
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . ID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:81
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` " >
2023-05-10 14:38:13 +02:00
< span class = "anchor" id = " group - ` )
//line app/vmalert/web.qtpl:82
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . ID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:82
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` " > < / span >
2023-05-10 14:38:13 +02:00
< a href = " # group - ` )
//line app/vmalert/web.qtpl:83
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . ID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:83
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` "> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:83
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . Name )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:83
2021-09-07 21:39:22 +02:00
if g . Type != "prometheus" {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:83
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` ( ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:83
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . Type )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:83
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` ) ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:83
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:83
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` (every ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:83
2022-03-15 12:54:53 +01:00
qw422016 . N ( ) . FPrec ( g . Interval , 0 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:83
2023-03-27 17:51:33 +02:00
qw422016 . N ( ) . S ( ` s ) # < / a >
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:84
2023-02-08 14:34:03 +01:00
if rNotOk [ g . ID ] > 0 {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:84
2021-10-22 11:30:38 +02:00
qw422016 . N ( ) . S ( ` <span class="badge bg-danger" title="Number of rules with status Error"> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:84
2023-02-08 14:34:03 +01:00
qw422016 . N ( ) . D ( rNotOk [ g . ID ] )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:84
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` </span> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:84
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:84
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:85
if rNoMatch [ g . ID ] > 0 {
//line app/vmalert/web.qtpl:85
qw422016 . N ( ) . S ( ` <span class="badge bg-warning" title="Number of rules with status NoMatch"> ` )
//line app/vmalert/web.qtpl:85
qw422016 . N ( ) . D ( rNoMatch [ g . ID ] )
//line app/vmalert/web.qtpl:85
qw422016 . N ( ) . S ( ` </span> ` )
//line app/vmalert/web.qtpl:85
}
//line app/vmalert/web.qtpl:85
qw422016 . N ( ) . S ( `
< span class = "badge bg-success" title = "Number of rules withs status Ok" > ` )
//line app/vmalert/web.qtpl:86
2023-02-08 14:34:03 +01:00
qw422016 . N ( ) . D ( rOk [ g . ID ] )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:86
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / span >
2023-05-10 14:38:13 +02:00
< p class = "fs-6 fw-lighter" > ` )
//line app/vmalert/web.qtpl:87
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . File )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:87
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / p >
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:88
2021-12-02 13:45:08 +01:00
if len ( g . Params ) > 0 {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:88
2021-09-13 13:11:38 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< div class = "fs-6 fw-lighter" > Extra params
` )
//line app/vmalert/web.qtpl:90
2021-12-02 13:45:08 +01:00
for _ , param := range g . Params {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:90
2021-09-13 13:11:38 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< span class = "float-left badge bg-primary" > ` )
//line app/vmalert/web.qtpl:91
2021-12-02 13:45:08 +01:00
qw422016 . E ( ) . S ( param )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:91
2021-09-13 13:11:38 +02:00
qw422016 . N ( ) . S ( ` < / span >
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:92
2021-09-13 13:11:38 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:92
2021-09-13 13:11:38 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< / div >
` )
//line app/vmalert/web.qtpl:94
2021-09-13 13:11:38 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:94
2021-09-13 13:11:38 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:95
2022-07-21 15:59:55 +02:00
if len ( g . Headers ) > 0 {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:95
2022-07-21 15:59:55 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< div class = "fs-6 fw-lighter" > Extra headers
` )
//line app/vmalert/web.qtpl:97
2022-07-21 15:59:55 +02:00
for _ , header := range g . Headers {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:97
2022-07-21 15:59:55 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< span class = "float-left badge bg-primary" > ` )
//line app/vmalert/web.qtpl:98
2022-07-21 15:59:55 +02:00
qw422016 . E ( ) . S ( header )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:98
2022-07-21 15:59:55 +02:00
qw422016 . N ( ) . S ( ` < / span >
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:99
2022-07-21 15:59:55 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:99
2022-07-21 15:59:55 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< / div >
` )
//line app/vmalert/web.qtpl:101
2022-07-21 15:59:55 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:101
2022-07-21 15:59:55 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< / div >
< div class = "collapse" id = " rules - ` )
//line app/vmalert/web.qtpl:103
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . ID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:103
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` " >
2023-05-10 14:38:13 +02:00
< table class = "table table-striped table-hover table-sm" >
< thead >
< tr >
< th scope = "col" style = "width: 60%" > Rule < / th >
< th scope = "col" style = "width: 20%" class = "text-center" title = "How many samples were produced by the rule" > Samples < / th >
< th scope = "col" style = "width: 20%" class = "text-center" title = "How many seconds ago rule was executed" > Updated < / th >
< / tr >
< / thead >
< tbody >
` )
//line app/vmalert/web.qtpl:113
2022-03-15 12:54:53 +01:00
for _ , r := range g . Rules {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:113
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< tr ` )
//line app/vmalert/web.qtpl:114
2022-03-15 12:54:53 +01:00
if r . LastError != "" {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:114
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` class="alert-danger" ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:114
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:114
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` >
2023-05-10 14:38:13 +02:00
< td >
< div class = "row" >
< div class = "col-12 mb-2" >
` )
//line app/vmalert/web.qtpl:118
2022-03-15 12:54:53 +01:00
if r . Type == "alerting" {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:118
2022-03-15 12:54:53 +01:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< b > alert : < / b > ` )
//line app/vmalert/web.qtpl:119
2022-05-04 18:02:18 +02:00
qw422016 . E ( ) . S ( r . Name )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:119
2022-05-04 18:02:18 +02:00
qw422016 . N ( ) . S ( ` (for: ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:119
2022-03-15 12:54:53 +01:00
qw422016 . E ( ) . V ( r . Duration )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:119
2022-05-04 18:02:18 +02:00
qw422016 . N ( ) . S ( ` seconds )
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:120
2022-03-15 12:54:53 +01:00
} else {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:120
2022-03-15 12:54:53 +01:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< b > record : < / b > ` )
//line app/vmalert/web.qtpl:121
2022-03-15 12:54:53 +01:00
qw422016 . E ( ) . S ( r . Name )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:121
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:122
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:122
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
|
` )
//line app/vmalert/web.qtpl:124
2023-05-08 09:36:39 +02:00
streamseriesFetchedWarn ( qw422016 , r )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:124
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< span > < a target = "_blank" href = " ` )
//line app/vmalert/web.qtpl:125
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . S ( prefix + r . WebLink ( ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:125
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` " > Details < / a > < / span >
2023-05-10 14:38:13 +02:00
< / div >
< div class = "col-12" >
< code > < pre > ` )
//line app/vmalert/web.qtpl:128
2022-03-15 12:54:53 +01:00
qw422016 . E ( ) . S ( r . Query )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:128
2022-05-04 18:02:18 +02:00
qw422016 . N ( ) . S ( ` < / pre > < / code >
2023-05-10 14:38:13 +02:00
< / div >
< div class = "col-12 mb-2" >
` )
//line app/vmalert/web.qtpl:131
2022-03-15 12:54:53 +01:00
if len ( r . Labels ) > 0 {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:131
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` <b>Labels:</b> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:131
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:131
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:132
2022-03-15 12:54:53 +01:00
for k , v := range r . Labels {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:132
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< span class = "ms-1 badge bg-primary" > ` )
//line app/vmalert/web.qtpl:133
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( k )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:133
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` = ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:133
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( v )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:133
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / span >
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:134
2022-05-04 18:02:18 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:134
2022-05-04 18:02:18 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< / div >
` )
//line app/vmalert/web.qtpl:136
2022-05-04 18:02:18 +02:00
if r . LastError != "" {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:136
2022-05-04 18:02:18 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< div class = "col-12" >
< b > Error : < / b >
< div class = "error-cell" >
` )
//line app/vmalert/web.qtpl:140
2022-05-04 18:02:18 +02:00
qw422016 . E ( ) . S ( r . LastError )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:140
2022-05-04 18:02:18 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< / div >
2022-05-04 18:02:18 +02:00
< / div >
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:143
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:143
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< / div >
< / td >
< td class = "text-center" > ` )
//line app/vmalert/web.qtpl:146
2022-03-15 12:54:53 +01:00
qw422016 . N ( ) . D ( r . LastSamples )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:146
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / td >
2023-05-10 14:38:13 +02:00
< td class = "text-center" > ` )
//line app/vmalert/web.qtpl:147
2022-03-15 12:54:53 +01:00
qw422016 . N ( ) . FPrec ( time . Since ( r . LastEvaluation ) . Seconds ( ) , 3 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:147
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` s ago < / td >
2023-05-10 14:38:13 +02:00
< / tr >
` )
//line app/vmalert/web.qtpl:149
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:149
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< / tbody >
< / table >
< / div >
` )
//line app/vmalert/web.qtpl:153
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:153
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
` )
//line app/vmalert/web.qtpl:154
2021-09-07 21:39:22 +02:00
} else {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:154
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< div >
< p > No groups ... < / p >
< / div >
` )
//line app/vmalert/web.qtpl:158
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:158
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:160
2022-07-06 10:46:01 +02:00
tpl . StreamFooter ( qw422016 , r )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:160
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:162
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:162
func WriteListGroups ( qq422016 qtio422016 . Writer , r * http . Request , originGroups [ ] APIGroup ) {
//line app/vmalert/web.qtpl:162
2021-09-07 21:39:22 +02:00
qw422016 := qt422016 . AcquireWriter ( qq422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:162
StreamListGroups ( qw422016 , r , originGroups )
//line app/vmalert/web.qtpl:162
2021-09-07 21:39:22 +02:00
qt422016 . ReleaseWriter ( qw422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:162
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:162
func ListGroups ( r * http . Request , originGroups [ ] APIGroup ) string {
//line app/vmalert/web.qtpl:162
2021-09-07 21:39:22 +02:00
qb422016 := qt422016 . AcquireByteBuffer ( )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:162
WriteListGroups ( qb422016 , r , originGroups )
//line app/vmalert/web.qtpl:162
2021-09-07 21:39:22 +02:00
qs422016 := string ( qb422016 . B )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:162
2021-09-07 21:39:22 +02:00
qt422016 . ReleaseByteBuffer ( qb422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:162
2021-09-07 21:39:22 +02:00
return qs422016
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:162
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:165
2022-07-06 10:46:01 +02:00
func StreamListAlerts ( qw422016 * qt422016 . Writer , r * http . Request , groupAlerts [ ] GroupAlerts ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:165
2022-02-08 20:03:42 +01:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:166
2022-07-08 10:26:13 +02:00
prefix := utils . Prefix ( r . URL . Path )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:166
2022-07-06 10:46:01 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:167
2023-07-03 14:59:52 +02:00
tpl . StreamHeader ( qw422016 , r , navItems , "Alerts" , configError ( ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:167
2022-07-08 10:26:13 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:168
2022-07-08 10:26:13 +02:00
if len ( groupAlerts ) > 0 {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:168
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< a class = "btn btn-primary" role = "button" onclick = "collapseAll()" > Collapse All < / a >
< a class = "btn btn-primary" role = "button" onclick = "expandAll()" > Expand All < / a >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:171
2021-09-07 21:39:22 +02:00
for _ , ga := range groupAlerts {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:171
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:172
2021-09-07 21:39:22 +02:00
g := ga . Group
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:172
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< div class = "group-heading alert-danger" data - bs - target = " rules - ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:173
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . ID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:173
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` " >
< span class = "anchor" id = " group - ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:174
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . ID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:174
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` " > < / span >
< a href = " # group - ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:175
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . ID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:175
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` "> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:175
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . Name )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:175
2021-09-07 21:39:22 +02:00
if g . Type != "prometheus" {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:175
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` ( ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:175
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . Type )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:175
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` ) ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:175
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:175
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / a >
< span class = "badge bg-danger" title = "Number of active alerts" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:176
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . D ( len ( ga . Alerts ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:176
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / span >
< br >
< p class = "fs-6 fw-lighter" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:178
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . File )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:178
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / p >
< / div >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:181
2021-09-07 21:39:22 +02:00
var keys [ ] string
alertsByRule := make ( map [ string ] [ ] * APIAlert )
for _ , alert := range ga . Alerts {
if len ( alertsByRule [ alert . RuleID ] ) < 1 {
keys = append ( keys , alert . RuleID )
}
alertsByRule [ alert . RuleID ] = append ( alertsByRule [ alert . RuleID ] , alert )
}
sort . Strings ( keys )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:190
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< div class = "collapse" id = " rules - ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:191
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( g . ID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:191
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` " >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:192
2021-09-07 21:39:22 +02:00
for _ , ruleID := range keys {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:192
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:194
2021-09-07 21:39:22 +02:00
defaultAR := alertsByRule [ ruleID ] [ 0 ]
var labelKeys [ ] string
for k := range defaultAR . Labels {
labelKeys = append ( labelKeys , k )
}
sort . Strings ( labelKeys )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:200
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< br >
< b > alert : < / b > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:202
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( defaultAR . Name )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:202
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` ( ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:202
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . D ( len ( alertsByRule [ ruleID ] ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:202
2021-10-13 14:25:11 +02:00
qw422016 . N ( ) . S ( ` )
| < span > < a target = "_blank" href = " ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:203
2021-10-13 14:25:11 +02:00
qw422016 . E ( ) . S ( defaultAR . SourceLink )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:203
2021-10-13 14:25:11 +02:00
qw422016 . N ( ) . S ( ` " > Source < / a > < / span >
< br >
< b > expr : < / b > < code > < pre > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:205
2021-10-13 14:25:11 +02:00
qw422016 . E ( ) . S ( defaultAR . Expression )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:205
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / pre > < / code >
< table class = "table table-striped table-hover table-sm" >
< thead >
< tr >
< th scope = "col" > Labels < / th >
< th scope = "col" > State < / th >
< th scope = "col" > Active at < / th >
< th scope = "col" > Value < / th >
< th scope = "col" > Link < / th >
< / tr >
< / thead >
< tbody >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:217
2021-09-07 21:39:22 +02:00
for _ , ar := range alertsByRule [ ruleID ] {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:217
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< tr >
< td >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:220
2021-09-07 21:39:22 +02:00
for _ , k := range labelKeys {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:220
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< span class = "ms-1 badge bg-primary" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:221
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( k )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:221
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` = ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:221
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( ar . Labels [ k ] )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:221
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / span >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:222
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:222
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< / td >
2021-10-22 11:30:38 +02:00
< td > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:224
2021-10-22 11:30:38 +02:00
streambadgeState ( qw422016 , ar . State )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:224
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / td >
2021-10-22 11:30:38 +02:00
< td >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:226
2021-10-22 11:30:38 +02:00
qw422016 . E ( ) . S ( ar . ActiveAt . Format ( "2006-01-02T15:04:05Z07:00" ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:226
2021-10-22 11:30:38 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:227
2021-10-22 11:30:38 +02:00
if ar . Restored {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:227
2021-10-22 11:30:38 +02:00
streambadgeRestored ( qw422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:227
2021-10-22 11:30:38 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:227
2021-10-22 11:30:38 +02:00
qw422016 . N ( ) . S ( `
< / td >
< td > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:229
2021-10-22 11:30:38 +02:00
qw422016 . E ( ) . S ( ar . Value )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:229
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / td >
< td >
2022-02-08 20:03:42 +01:00
< a href = " ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:231
2022-07-08 10:26:13 +02:00
qw422016 . E ( ) . S ( prefix + ar . WebLink ( ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:231
2022-02-08 20:03:42 +01:00
qw422016 . N ( ) . S ( ` " > Details < / a >
2021-09-07 21:39:22 +02:00
< / td >
< / tr >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:234
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:234
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< / tbody >
< / table >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:237
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:237
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< / div >
< br >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:240
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:240
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:242
2021-09-07 21:39:22 +02:00
} else {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:242
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< div >
2022-09-14 14:04:24 +02:00
< p > No active alerts ... < / p >
2021-09-07 21:39:22 +02:00
< / div >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:246
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:246
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:248
2022-07-06 10:46:01 +02:00
tpl . StreamFooter ( qw422016 , r )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:248
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2022-07-06 10:46:01 +02:00
func WriteListAlerts ( qq422016 qtio422016 . Writer , r * http . Request , groupAlerts [ ] GroupAlerts ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2021-09-07 21:39:22 +02:00
qw422016 := qt422016 . AcquireWriter ( qq422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2022-07-06 10:46:01 +02:00
StreamListAlerts ( qw422016 , r , groupAlerts )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2021-09-07 21:39:22 +02:00
qt422016 . ReleaseWriter ( qw422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2022-07-06 10:46:01 +02:00
func ListAlerts ( r * http . Request , groupAlerts [ ] GroupAlerts ) string {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2021-09-07 21:39:22 +02:00
qb422016 := qt422016 . AcquireByteBuffer ( )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2022-07-06 10:46:01 +02:00
WriteListAlerts ( qb422016 , r , groupAlerts )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2021-09-07 21:39:22 +02:00
qs422016 := string ( qb422016 . B )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2021-09-07 21:39:22 +02:00
qt422016 . ReleaseByteBuffer ( qb422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2021-09-07 21:39:22 +02:00
return qs422016
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:250
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:252
2022-07-06 10:46:01 +02:00
func StreamListTargets ( qw422016 * qt422016 . Writer , r * http . Request , targets map [ notifier . TargetType ] [ ] notifier . Target ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:252
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:253
2023-07-03 14:59:52 +02:00
tpl . StreamHeader ( qw422016 , r , navItems , "Notifiers" , configError ( ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:253
2022-07-06 10:46:01 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:254
2022-07-06 10:46:01 +02:00
if len ( targets ) > 0 {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:254
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
< a class = "btn btn-primary" role = "button" onclick = "collapseAll()" > Collapse All < / a >
< a class = "btn btn-primary" role = "button" onclick = "expandAll()" > Expand All < / a >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:259
2022-02-02 13:11:41 +01:00
var keys [ ] string
for key := range targets {
keys = append ( keys , string ( key ) )
}
sort . Strings ( keys )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:264
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:266
2022-02-02 13:11:41 +01:00
for i := range keys {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:266
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:267
2022-02-02 13:11:41 +01:00
typeK , ns := keys [ i ] , targets [ notifier . TargetType ( keys [ i ] ) ]
count := len ( ns )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:269
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
2023-05-10 14:38:13 +02:00
< div class = "group-heading" data - bs - target = " notifiers - ` )
//line app/vmalert/web.qtpl:270
2022-02-02 13:11:41 +01:00
qw422016 . E ( ) . S ( typeK )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:270
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( ` " >
2023-05-10 14:38:13 +02:00
< span class = "anchor" id = " group - ` )
//line app/vmalert/web.qtpl:271
2022-02-02 13:11:41 +01:00
qw422016 . E ( ) . S ( typeK )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:271
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( ` " > < / span >
2023-05-10 14:38:13 +02:00
< a href = " # group - ` )
//line app/vmalert/web.qtpl:272
2022-02-02 13:11:41 +01:00
qw422016 . E ( ) . S ( typeK )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:272
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( ` "> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:272
2022-02-02 13:11:41 +01:00
qw422016 . E ( ) . S ( typeK )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:272
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( ` ( ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:272
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . D ( count )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:272
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( ` ) < / a >
< / div >
< div class = "collapse show" id = " notifiers - ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:274
2022-02-02 13:11:41 +01:00
qw422016 . E ( ) . S ( typeK )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:274
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( ` " >
< table class = "table table-striped table-hover table-sm" >
< thead >
< tr >
< th scope = "col" > Labels < / th >
< th scope = "col" > Address < / th >
< / tr >
< / thead >
< tbody >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:283
2022-02-02 13:11:41 +01:00
for _ , n := range ns {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:283
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
< tr >
< td >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:286
2022-11-30 06:22:12 +01:00
for _ , l := range n . Labels . GetLabels ( ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:286
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
< span class = "ms-1 badge bg-primary" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:287
2022-02-02 13:11:41 +01:00
qw422016 . E ( ) . S ( l . Name )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:287
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( ` = ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:287
2022-02-02 13:11:41 +01:00
qw422016 . E ( ) . S ( l . Value )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:287
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( ` < / span >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:288
2022-02-02 13:11:41 +01:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:288
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
< / td >
< td > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:290
2022-02-02 13:11:41 +01:00
qw422016 . E ( ) . S ( n . Notifier . Addr ( ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:290
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( ` < / td >
< / tr >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:292
2022-02-02 13:11:41 +01:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:292
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
< / tbody >
< / table >
< / div >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:296
2022-02-02 13:11:41 +01:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:296
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:298
2022-02-02 13:11:41 +01:00
} else {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:298
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
< div >
2022-09-14 14:04:24 +02:00
< p > No targets ... < / p >
2022-02-02 13:11:41 +01:00
< / div >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:302
2022-02-02 13:11:41 +01:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:302
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:304
2022-07-06 10:46:01 +02:00
tpl . StreamFooter ( qw422016 , r )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:304
2022-02-02 13:11:41 +01:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-02-02 13:11:41 +01:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-07-06 10:46:01 +02:00
func WriteListTargets ( qq422016 qtio422016 . Writer , r * http . Request , targets map [ notifier . TargetType ] [ ] notifier . Target ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-02-02 13:11:41 +01:00
qw422016 := qt422016 . AcquireWriter ( qq422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-07-06 10:46:01 +02:00
StreamListTargets ( qw422016 , r , targets )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-02-02 13:11:41 +01:00
qt422016 . ReleaseWriter ( qw422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-02-02 13:11:41 +01:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-07-06 10:46:01 +02:00
func ListTargets ( r * http . Request , targets map [ notifier . TargetType ] [ ] notifier . Target ) string {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-02-02 13:11:41 +01:00
qb422016 := qt422016 . AcquireByteBuffer ( )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-07-06 10:46:01 +02:00
WriteListTargets ( qb422016 , r , targets )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-02-02 13:11:41 +01:00
qs422016 := string ( qb422016 . B )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-02-02 13:11:41 +01:00
qt422016 . ReleaseByteBuffer ( qb422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-02-02 13:11:41 +01:00
return qs422016
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:306
2022-02-02 13:11:41 +01:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:308
2022-07-06 10:46:01 +02:00
func StreamAlert ( qw422016 * qt422016 . Writer , r * http . Request , alert * APIAlert ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:308
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:309
2022-07-08 10:26:13 +02:00
prefix := utils . Prefix ( r . URL . Path )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:309
2022-07-06 10:46:01 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:310
2023-07-03 14:59:52 +02:00
tpl . StreamHeader ( qw422016 , r , navItems , "" , configError ( ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:310
2022-07-08 10:26:13 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:312
2021-09-07 21:39:22 +02:00
var labelKeys [ ] string
for k := range alert . Labels {
labelKeys = append ( labelKeys , k )
}
sort . Strings ( labelKeys )
var annotationKeys [ ] string
for k := range alert . Annotations {
annotationKeys = append ( annotationKeys , k )
}
sort . Strings ( annotationKeys )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:323
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
2022-09-14 14:04:24 +02:00
< div class = "display-6 pb-3 mb-3" > Alert : ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:324
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( alert . Name )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:324
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` <span class="ms-2 badge ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:324
2021-09-07 21:39:22 +02:00
if alert . State == "firing" {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:324
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` bg-danger ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:324
2021-09-07 21:39:22 +02:00
} else {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:324
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` bg-warning text-dark ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:324
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:324
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` "> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:324
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( alert . State )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:324
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / span > < / div >
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
Active at
< / div >
< div class = "col" >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:331
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( alert . ActiveAt . Format ( "2006-01-02T15:04:05Z07:00" ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:331
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< / div >
< / div >
< / div >
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
Expr
< / div >
< div class = "col" >
< code > < pre > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:341
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( alert . Expression )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:341
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / pre > < / code >
< / div >
< / div >
< / div >
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
Labels
< / div >
< div class = "col" >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:351
2021-09-07 21:39:22 +02:00
for _ , k := range labelKeys {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:351
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< span class = "m-1 badge bg-primary" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:352
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( k )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:352
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` = ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:352
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( alert . Labels [ k ] )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:352
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / span >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:353
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:353
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< / div >
< / div >
< / div >
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
Annotations
< / div >
< div class = "col" >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:363
2021-09-07 21:39:22 +02:00
for _ , k := range annotationKeys {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:363
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< b > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:364
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( k )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:364
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` : < / b > < br >
< p > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:365
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( alert . Annotations [ k ] )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:365
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / p >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:366
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:366
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
< / div >
< / div >
< / div >
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
Group
< / div >
< div class = "col" >
2022-07-08 10:26:13 +02:00
< a target = "_blank" href = " ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:376
2022-07-08 10:26:13 +02:00
qw422016 . E ( ) . S ( prefix )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:376
2022-07-08 10:26:13 +02:00
qw422016 . N ( ) . S ( ` groups#group- ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:376
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( alert . GroupID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:376
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` "> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:376
2021-09-07 21:39:22 +02:00
qw422016 . E ( ) . S ( alert . GroupID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:376
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( ` < / a >
< / div >
< / div >
2021-10-13 14:25:11 +02:00
< / div >
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
Source link
< / div >
< div class = "col" >
< a target = "_blank" href = " ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:386
2021-10-13 14:25:11 +02:00
qw422016 . E ( ) . S ( alert . SourceLink )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:386
2021-10-13 14:25:11 +02:00
qw422016 . N ( ) . S ( ` " > Link < / a >
< / div >
< / div >
2021-09-07 21:39:22 +02:00
< / div >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:390
2022-07-06 10:46:01 +02:00
tpl . StreamFooter ( qw422016 , r )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:390
2021-09-07 21:39:22 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2022-07-06 10:46:01 +02:00
func WriteAlert ( qq422016 qtio422016 . Writer , r * http . Request , alert * APIAlert ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2021-09-07 21:39:22 +02:00
qw422016 := qt422016 . AcquireWriter ( qq422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2022-07-06 10:46:01 +02:00
StreamAlert ( qw422016 , r , alert )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2021-09-07 21:39:22 +02:00
qt422016 . ReleaseWriter ( qw422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2021-09-07 21:39:22 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2022-07-06 10:46:01 +02:00
func Alert ( r * http . Request , alert * APIAlert ) string {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2021-09-07 21:39:22 +02:00
qb422016 := qt422016 . AcquireByteBuffer ( )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2022-07-06 10:46:01 +02:00
WriteAlert ( qb422016 , r , alert )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2021-10-22 11:30:38 +02:00
qs422016 := string ( qb422016 . B )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2021-10-22 11:30:38 +02:00
qt422016 . ReleaseByteBuffer ( qb422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2021-10-22 11:30:38 +02:00
return qs422016
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:392
2021-10-22 11:30:38 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:395
2022-09-14 14:04:24 +02:00
func StreamRuleDetails ( qw422016 * qt422016 . Writer , r * http . Request , rule APIRule ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:395
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:396
2022-09-14 14:04:24 +02:00
prefix := utils . Prefix ( r . URL . Path )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:396
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:397
2023-07-03 14:59:52 +02:00
tpl . StreamHeader ( qw422016 , r , navItems , "" , configError ( ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:397
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:399
2022-09-14 14:04:24 +02:00
var labelKeys [ ] string
for k := range rule . Labels {
labelKeys = append ( labelKeys , k )
}
sort . Strings ( labelKeys )
var annotationKeys [ ] string
for k := range rule . Annotations {
annotationKeys = append ( annotationKeys , k )
}
sort . Strings ( annotationKeys )
2023-05-08 09:36:39 +02:00
var seriesFetchedEnabled bool
var seriesFetchedWarning bool
for _ , u := range rule . Updates {
if u . seriesFetched != nil {
seriesFetchedEnabled = true
if * u . seriesFetched == 0 && u . samples == 0 {
seriesFetchedWarning = true
}
}
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:422
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
< div class = "display-6 pb-3 mb-3" > Rule : ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:423
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . S ( rule . Name )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:423
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` <span class="ms-2 badge ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:423
2022-09-14 14:04:24 +02:00
if rule . Health != "ok" {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:423
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` bg-danger ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:423
2022-09-14 14:04:24 +02:00
} else {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:423
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( ` bg-success text-dark ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:423
2022-09-14 14:04:24 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:423
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` "> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:423
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . S ( rule . Health )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:423
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` < / span > < / div >
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
Expr
< / div >
< div class = "col" >
< code > < pre > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:430
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . S ( rule . Query )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:430
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` < / pre > < / code >
< / div >
< / div >
< / div >
2022-09-15 16:15:39 +02:00
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:434
2022-09-15 16:15:39 +02:00
if rule . Type == "alerting" {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:434
2022-09-15 16:15:39 +02:00
qw422016 . N ( ) . S ( `
2022-09-14 14:04:24 +02:00
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
For
< / div >
< div class = "col" >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:441
2022-09-15 16:15:39 +02:00
qw422016 . E ( ) . V ( rule . Duration )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:441
2022-09-15 16:15:39 +02:00
qw422016 . N ( ) . S ( ` seconds
2022-09-14 14:04:24 +02:00
< / div >
< / div >
< / div >
2022-09-15 16:15:39 +02:00
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:445
2022-09-15 16:15:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:445
2022-09-15 16:15:39 +02:00
qw422016 . N ( ) . S ( `
2022-09-14 14:04:24 +02:00
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
Labels
< / div >
< div class = "col" >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:452
2022-09-14 14:04:24 +02:00
for _ , k := range labelKeys {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:452
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
< span class = "m-1 badge bg-primary" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:453
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . S ( k )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:453
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` = ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:453
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . S ( rule . Labels [ k ] )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:453
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` < / span >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:454
2022-09-14 14:04:24 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:454
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
< / div >
< / div >
< / div >
2022-09-15 16:15:39 +02:00
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:458
2022-09-15 16:15:39 +02:00
if rule . Type == "alerting" {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:458
2022-09-15 16:15:39 +02:00
qw422016 . N ( ) . S ( `
2022-09-14 14:04:24 +02:00
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
Annotations
< / div >
< div class = "col" >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:465
2022-09-15 16:15:39 +02:00
for _ , k := range annotationKeys {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:465
2022-09-15 16:15:39 +02:00
qw422016 . N ( ) . S ( `
2022-09-14 14:04:24 +02:00
< b > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:466
2022-09-15 16:15:39 +02:00
qw422016 . E ( ) . S ( k )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:466
2022-09-15 16:15:39 +02:00
qw422016 . N ( ) . S ( ` : < / b > < br >
2022-09-14 14:04:24 +02:00
< p > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:467
2022-09-15 16:15:39 +02:00
qw422016 . E ( ) . S ( rule . Annotations [ k ] )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:467
2022-09-15 16:15:39 +02:00
qw422016 . N ( ) . S ( ` < / p >
2022-09-14 14:04:24 +02:00
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:468
2022-09-15 16:15:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:468
2022-09-15 16:15:39 +02:00
qw422016 . N ( ) . S ( `
2022-09-14 14:04:24 +02:00
< / div >
< / div >
< / div >
2023-02-08 14:34:03 +01:00
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
Debug
< / div >
< div class = "col" >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:478
2023-02-08 14:34:03 +01:00
qw422016 . E ( ) . V ( rule . Debug )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:478
2023-02-08 14:34:03 +01:00
qw422016 . N ( ) . S ( `
< / div >
< / div >
< / div >
2022-09-15 16:15:39 +02:00
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:482
2022-09-15 16:15:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:482
2022-09-15 16:15:39 +02:00
qw422016 . N ( ) . S ( `
2022-09-14 14:04:24 +02:00
< div class = "container border-bottom p-2" >
< div class = "row" >
< div class = "col-2" >
Group
< / div >
< div class = "col" >
< a target = "_blank" href = " ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:489
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . S ( prefix )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:489
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` groups#group- ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:489
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . S ( rule . GroupID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:489
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` "> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:489
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . S ( rule . GroupID )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:489
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` < / a >
< / div >
< / div >
< / div >
< br >
2023-05-08 09:36:39 +02:00
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:495
2023-05-08 09:36:39 +02:00
if seriesFetchedWarning {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:495
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( `
< div class = "alert alert-warning" role = "alert" >
< strong > Warning : < / strong > some of updates have "Series fetched" equal to 0. < br >
It might be that either this data is missing in the datasource or there is a typo in rule ' s expression .
For example , < strong > foo { label = "bar" } > 0 < / strong > could never trigger because < strong > foo { label = "bar" } < / strong >
metric doesn ' t exist .
< br >
Rule ' s expressions without time series selector , like < strong > expr : 42 < / strong > or < strong > expr : time ( ) < / strong >
aren ' t fetching time series from datasource , so they could have "Series fetched" equal to 0 and this won ' t be a problem .
< br >
See more details about this detection < a target = "_blank" href = "https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4039" > here < / a > .
< / div >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:507
2023-05-08 09:36:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:507
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( `
2022-09-14 14:04:24 +02:00
< div class = "display-6 pb-3" > Last ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:508
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . D ( len ( rule . Updates ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:508
2022-12-29 12:36:44 +01:00
qw422016 . N ( ) . S ( ` / ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:508
2022-12-29 12:36:44 +01:00
qw422016 . N ( ) . D ( rule . MaxUpdates )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:508
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` updates < / span > : < / div >
< table class = "table table-striped table-hover table-sm" >
< thead >
< tr >
2022-09-15 12:40:22 +02:00
< th scope = "col" title = "The time when event was created" > Updated at < / th >
< th scope = "col" style = "width: 10%" class = "text-center" title = "How many samples were returned" > Samples < / th >
2023-05-08 09:36:39 +02:00
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:514
2023-05-08 09:36:39 +02:00
if seriesFetchedEnabled {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:514
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( ` <th scope="col" style="width: 10%" class="text-center" title="How many series were scanned by datasource during the evaluation">Series fetched</th> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:514
2023-05-08 09:36:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:514
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( `
2022-09-15 12:40:22 +02:00
< th scope = "col" style = "width: 10%" class = "text-center" title = "How many seconds request took" > Duration < / th >
< th scope = "col" class = "text-center" title = "Time used for rule execution" > Executed at < / th >
< th scope = "col" class = "text-center" title = "cURL command with request example" > cURL < / th >
2022-09-14 14:04:24 +02:00
< / tr >
< / thead >
< tbody >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:522
2022-09-14 14:04:24 +02:00
for _ , u := range rule . Updates {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:522
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
< tr ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:523
2022-09-14 14:04:24 +02:00
if u . err != nil {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:523
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` class="alert-danger" ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:523
2022-09-14 14:04:24 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:523
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` >
< td >
< span class = "badge bg-primary rounded-pill me-3" title = "Updated at" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:525
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . S ( u . time . Format ( time . RFC3339 ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:525
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` < / span >
< / td >
2023-05-08 09:36:39 +02:00
< td class = "text-center" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:527
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . D ( u . samples )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:527
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` < / td >
2023-05-08 09:36:39 +02:00
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:528
2023-05-08 09:36:39 +02:00
if seriesFetchedEnabled {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:528
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( ` <td class="text-center"> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:528
2023-05-08 09:36:39 +02:00
if u . seriesFetched != nil {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:528
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . D ( * u . seriesFetched )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:528
2023-05-08 09:36:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:528
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( ` </td> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:528
2023-05-08 09:36:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:528
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( `
2022-09-14 14:04:24 +02:00
< td class = "text-center" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:529
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . FPrec ( u . duration . Seconds ( ) , 3 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:529
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` s < / td >
< td class = "text-center" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:530
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . S ( u . at . Format ( time . RFC3339 ) )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:530
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` < / td >
2022-09-15 12:40:22 +02:00
< td >
< textarea class = "curl-area" rows = "1" onclick = "this.focus();this.select()" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:532
2022-12-09 16:13:29 +01:00
qw422016 . E ( ) . S ( u . curl )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:532
2022-09-15 12:40:22 +02:00
qw422016 . N ( ) . S ( ` < / textarea >
< / td >
2022-09-14 14:04:24 +02:00
< / tr >
< / li >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:536
2022-09-14 14:04:24 +02:00
if u . err != nil {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:536
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
< tr ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:537
2022-09-14 14:04:24 +02:00
if u . err != nil {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:537
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` class="alert-danger" ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:537
2022-09-14 14:04:24 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:537
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` >
2023-05-08 09:36:39 +02:00
< td colspan = " ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:538
2023-05-08 09:36:39 +02:00
if seriesFetchedEnabled {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:538
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( ` 6 ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:538
2023-05-08 09:36:39 +02:00
} else {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:538
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( ` 5 ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:538
2023-05-08 09:36:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:538
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( ` " >
2022-09-14 14:04:24 +02:00
< span class = "alert-danger" > ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:539
2022-09-14 14:04:24 +02:00
qw422016 . E ( ) . V ( u . err )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:539
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( ` < / span >
< / td >
< / tr >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:542
2022-09-14 14:04:24 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:542
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:543
2022-09-14 14:04:24 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:543
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:545
2022-09-14 14:04:24 +02:00
tpl . StreamFooter ( qw422016 , r )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:545
2022-09-14 14:04:24 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
func WriteRuleDetails ( qq422016 qtio422016 . Writer , r * http . Request , rule APIRule ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
qw422016 := qt422016 . AcquireWriter ( qq422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
StreamRuleDetails ( qw422016 , r , rule )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
qt422016 . ReleaseWriter ( qw422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
func RuleDetails ( r * http . Request , rule APIRule ) string {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
qb422016 := qt422016 . AcquireByteBuffer ( )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
WriteRuleDetails ( qb422016 , r , rule )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
qs422016 := string ( qb422016 . B )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
qt422016 . ReleaseByteBuffer ( qb422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
return qs422016
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:546
2022-09-14 14:04:24 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:550
2021-10-22 11:30:38 +02:00
func streambadgeState ( qw422016 * qt422016 . Writer , state string ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:550
2021-10-22 11:30:38 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:552
2021-10-22 11:30:38 +02:00
badgeClass := "bg-warning text-dark"
if state == "firing" {
badgeClass = "bg-danger"
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:556
2021-10-22 11:30:38 +02:00
qw422016 . N ( ) . S ( `
< span class = " badge ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:557
2021-10-22 11:30:38 +02:00
qw422016 . E ( ) . S ( badgeClass )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:557
2021-10-22 11:30:38 +02:00
qw422016 . N ( ) . S ( ` "> ` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:557
2021-10-22 11:30:38 +02:00
qw422016 . E ( ) . S ( state )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:557
2021-10-22 11:30:38 +02:00
qw422016 . N ( ) . S ( ` < / span >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
func writebadgeState ( qq422016 qtio422016 . Writer , state string ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
qw422016 := qt422016 . AcquireWriter ( qq422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
streambadgeState ( qw422016 , state )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
qt422016 . ReleaseWriter ( qw422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
func badgeState ( state string ) string {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
qb422016 := qt422016 . AcquireByteBuffer ( )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
writebadgeState ( qb422016 , state )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
qs422016 := string ( qb422016 . B )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
qt422016 . ReleaseByteBuffer ( qb422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
return qs422016
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:558
2021-10-22 11:30:38 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:560
2021-10-22 11:30:38 +02:00
func streambadgeRestored ( qw422016 * qt422016 . Writer ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:560
2021-10-22 11:30:38 +02:00
qw422016 . N ( ) . S ( `
2021-10-27 18:59:13 +02:00
< span class = "badge bg-warning text-dark" title = "Alert state was restored after the service restart from remote storage" > restored < / span >
2021-10-22 11:30:38 +02:00
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2021-10-22 11:30:38 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2021-10-22 11:30:38 +02:00
func writebadgeRestored ( qq422016 qtio422016 . Writer ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2021-10-22 11:30:38 +02:00
qw422016 := qt422016 . AcquireWriter ( qq422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2021-10-22 11:30:38 +02:00
streambadgeRestored ( qw422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2021-10-22 11:30:38 +02:00
qt422016 . ReleaseWriter ( qw422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2021-10-22 11:30:38 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2021-10-22 11:30:38 +02:00
func badgeRestored ( ) string {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2021-10-22 11:30:38 +02:00
qb422016 := qt422016 . AcquireByteBuffer ( )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2021-10-22 11:30:38 +02:00
writebadgeRestored ( qb422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2023-05-08 09:36:39 +02:00
qs422016 := string ( qb422016 . B )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2023-05-08 09:36:39 +02:00
qt422016 . ReleaseByteBuffer ( qb422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2023-05-08 09:36:39 +02:00
return qs422016
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:562
2023-05-08 09:36:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:564
2023-05-08 09:36:39 +02:00
func streamseriesFetchedWarn ( qw422016 * qt422016 . Writer , r APIRule ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:564
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:565
if isNoMatch ( r ) {
//line app/vmalert/web.qtpl:565
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( `
< svg xmlns = "http://www.w3.org/2000/svg"
data - bs - toggle = "tooltip"
2023-05-19 12:45:15 +02:00
title = " No match ! This rule ' s last evaluation hasn ' t selected any time series from the datasource .
2023-05-08 09:36:39 +02:00
It might be that either this data is missing in the datasource or there is a typo in rule ' s expression .
See more in Details . "
width = "18" height = "18" fill = "currentColor" class = "bi bi-exclamation-triangle-fill flex-shrink-0 me-2" viewBox = "0 0 16 16" role = "img" aria - label = "Warning:" >
< path d = "M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z" / >
< / svg >
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:574
2023-05-08 09:36:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:574
2023-05-08 09:36:39 +02:00
qw422016 . N ( ) . S ( `
` )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2023-05-08 09:36:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2023-05-08 09:36:39 +02:00
func writeseriesFetchedWarn ( qq422016 qtio422016 . Writer , r APIRule ) {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2023-05-08 09:36:39 +02:00
qw422016 := qt422016 . AcquireWriter ( qq422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2023-05-08 09:36:39 +02:00
streamseriesFetchedWarn ( qw422016 , r )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2023-05-08 09:36:39 +02:00
qt422016 . ReleaseWriter ( qw422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2023-05-08 09:36:39 +02:00
}
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2023-05-08 09:36:39 +02:00
func seriesFetchedWarn ( r APIRule ) string {
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2023-05-08 09:36:39 +02:00
qb422016 := qt422016 . AcquireByteBuffer ( )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2023-05-08 09:36:39 +02:00
writeseriesFetchedWarn ( qb422016 , r )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2021-09-07 21:39:22 +02:00
qs422016 := string ( qb422016 . B )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2021-09-07 21:39:22 +02:00
qt422016 . ReleaseByteBuffer ( qb422016 )
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
2021-09-07 21:39:22 +02:00
return qs422016
2023-05-10 14:38:13 +02:00
//line app/vmalert/web.qtpl:575
}
//line app/vmalert/web.qtpl:578
func isNoMatch ( r APIRule ) bool {
return r . LastSamples == 0 && r . LastSeriesFetched != nil && * r . LastSeriesFetched == 0
2021-09-07 21:39:22 +02:00
}