这是indexloc提供的服务,不要输入任何密码
Skip to content
This repository was archived by the owner on Feb 13, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion cmd/bosun/sched/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,9 @@ func (s *Schedule) runHistory(r *RunHistory, ak expr.AlertKey, event *Event, sil
wasOpen := state.Open
// render templates and open alert key if abnormal
if event.Status > StNormal {
s.executeTemplates(state, event, a, r)
if event.Status >= last {
s.executeTemplates(state, event, a, r)
}
state.Open = true
if a.Log {
state.Open = false
Expand Down
48 changes: 26 additions & 22 deletions cmd/bosun/sched/sched.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,10 +221,11 @@ func (s *Schedule) GetMetadata(metric string, subset opentsdb.TagSet) ([]metadat
type States map[expr.AlertKey]*State

type StateTuple struct {
NeedAck bool
Active bool
Status Status
Silenced bool
NeedAck bool
Active bool
Status Status
CurrentStatus Status
Silenced bool
}

// GroupStates groups by NeedAck, Active, Status, and Silenced.
Expand All @@ -233,10 +234,11 @@ func (states States) GroupStates(silenced map[expr.AlertKey]Silence) map[StateTu
for ak, st := range states {
_, sil := silenced[ak]
t := StateTuple{
st.NeedAck,
st.IsActive(),
st.AbnormalStatus(),
sil,
NeedAck: st.NeedAck,
Active: st.IsActive(),
Status: st.AbnormalStatus(),
CurrentStatus: st.Status(),
Silenced: sil,
}
if _, present := r[t]; !present {
r[t] = make(States)
Expand Down Expand Up @@ -341,16 +343,17 @@ func (s *Schedule) GetOpenStates() States {
}

type StateGroup struct {
Active bool `json:",omitempty"`
Status Status
Silenced bool
IsError bool `json:",omitempty"`
Subject string `json:",omitempty"`
Alert string `json:",omitempty"`
AlertKey expr.AlertKey `json:",omitempty"`
Ago string `json:",omitempty"`
State *State `json:",omitempty"`
Children []*StateGroup `json:",omitempty"`
Active bool `json:",omitempty"`
Status Status
Silenced bool
CurrentStatus Status
IsError bool `json:",omitempty"`
Subject string `json:",omitempty"`
Alert string `json:",omitempty"`
AlertKey expr.AlertKey `json:",omitempty"`
Ago string `json:",omitempty"`
State *State `json:",omitempty"`
Children []*StateGroup `json:",omitempty"`
}

type StateGroups struct {
Expand Down Expand Up @@ -414,10 +417,11 @@ func (s *Schedule) MarshalGroups(T miniprofiler.Timer, filter string) (*StateGro
})
for name, group := range sets {
g := StateGroup{
Active: tuple.Active,
Status: tuple.Status,
Silenced: tuple.Silenced,
Subject: fmt.Sprintf("%s - %s", tuple.Status, name),
Active: tuple.Active,
Status: tuple.Status,
CurrentStatus: tuple.CurrentStatus,
Silenced: tuple.Silenced,
Subject: fmt.Sprintf("%s - %s", tuple.Status, name),
}
for _, ak := range group {
st := s.status[ak].Copy()
Expand Down
139 changes: 71 additions & 68 deletions cmd/bosun/web/static.go
Original file line number Diff line number Diff line change
Expand Up @@ -9098,7 +9098,7 @@ xitlUKAxazlo8/8JAAD//4NB/DtLfAAA

"/js/bosun.js": {
local: "web/static/js/bosun.js",
size: 99679,
size: 99739,
modtime: 0,
compressed: `
H4sIAAAJbogA/+y9fXvbNrI4+vfpp2C0aUTXsmS7Tbfr1MlNk76d07Q9Tdrd/Sk+XkqkJMYSqZCUXzbx
Expand Down Expand Up @@ -9419,16 +9419,16 @@ rfYq+JZiHVvyEFJFTplF0lmZKLwtzuhmiwdS7pgunsim/q0709dlN2g/K+JVrNUCsKg9W+ZlIi1r7ltg
PkbGK4kZZRWd3vh6hzEnKbUdGdSXop26wj98VBUluPkv971G4sFeYCZwrdxNqtf7jKEU+t1AEezwrjtt
BN6JNpe65niv6tRlgujDHuOmPay/R7dDuQ6gNIaXNSghomCvFZqbaXrIo1ADseoWK0WTJal9qaBspZT9
sz/i5WwZR/H5/wjLU6ZDzOYBA+s6uvfxTYYuVH+wacINDUBDK5caUXQeawiuM4kIaXKfLrGdLbGaPrxp
HZkt8c7sCmQrumK6MAGNe1X5fbHu2e6Rp4mUsVQOwiUjD5VTJeauHbkMdZqrwM3WQbS1mdzUUO3niv6I
1fqE0pdSgm34g5KJCl49szXRIt4o+hT26En8TR5fuZUHbtDL5/PlNgozWiFU20UXuwVFWTVUtW8kGKfx
FvSwZJrNh8Oh5dyneJRG+xVKR8ZJnrzSxl2mzVR+tnCtyQ9l22X0UoSmreIT6gT/NtfSZTjlh9AJZfW0
/AHma4j1eKWZv4Ed74FroYrfQMGHs5Y11AlHdPmEcXOcSuStDUn38yzsM8OVIiKT1mSYx8dMVrXzLptT
t0xESZj+fVH6re0yifecX/ERgmarG0NFjEWd9GwUjgfvrsOdk53RHJeag9ebw/39ie0CAbeNgjjiVb5B
i0jjKbB8dEb72bUsVtaS6dR389e5mls1ZL+dNbvHitXO4/4tBI0t79wnAfCRRCgV4gdbJdOk/LolRahO
6E9A6FOx0lnQjfc7pQ6RS/62WaLaQGoy+djmmN/BSglzKLt0MIUcBNxxoXmAV5c/F3dbtKCiIxA4usLt
1GuuwOjt+Ot4JS6+2LoOuh+jZzvdRTYa2hk49tA+NicHU1cm57Yj2gfivY+9Y5S1ehZEGmFHbK1iferK
Y4Ih2NUhXNifEirvpkEKf+qUVqfL+qfDtB1c8Tsgb3VpgMdx50iYbpBAxqoPQsQUMXcl4zsRYXH3dLBg
DZOQ/zsAAP//Qe8tLV+FAQA=
HZkt8c7sCmQrumK6MAGNe1X5fbHu2e6RZ4sjy0j1Uhy7kEuxsxjushlLAyHcOfIwO9Vp7haSy1CHuwrc
bA1FO53JiQ3Vfo7qj1itTyj1KSXnhj8oEang8zNbEy2ikSJXYX+fxN/k8ZVb8eDGwHw+X26jbKMFQ7V7
dLF5UIRWQ1X7JoRxKW9BD0um2Xw4HFrOjIpHabRfGXVkq+SJL23cZdpb5WcLt5z8UKZeRi9Fd9oqPqFO
8G+RLV2G4mIInVBWT8sfYK6HWI9XEvob2PEOuRaq+O0VfDhrOUWdcEQXVxi3zqlE3toIdT/Pwj4zeini
NWlNpHl8zORcO++yOXXLJJaE6d8Xpd9SL5N4z/kVHyFotrptVMRn1AnTRuF48O463DnZGc1xmTp4vTnc
35/YLh9w2zeII17lG7SmNF4Gy0dnpKBdQ2NlLVlSfbeGnat5WUP221mze6xY7fzMgIWgseWd+xQBPpII
pUL8UKxk1pRft6QX1Qn9CQh9KlY6C7rxfqe0I3LJ3zZLVDlIxSb/3BxzQ1gpYc5ol/6mkIOAOy40D/Da
8+fiXowWVHR8AkdXuKx6zfUZvR1/Ha/EpRlb10F3a/RsJ8PIvkO7Csf+28fm5JzqyuTc7kR7SLwzsneM
slbPoEgj7IjLVSxXXXlMMAS7doQL+1NC5d1wSKFTnVLydFn/dJi2Qy9+5+WtLhzwOP0cydYNEsjQ9UGI
mCLmrmR8J6Iz7p4OFuhhEvJ/BwAA//97bdAGm4UBAA==
`,
},

Expand Down Expand Up @@ -12383,36 +12383,37 @@ dbXyA0j6O1j8GwAA//+4yx/k9A8AAA==

"/js/state.ts": {
local: "web/static/js/state.ts",
size: 5227,
size: 5269,
modtime: 0,
compressed: `
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
lySVFAAA
`,
},

Expand Down Expand Up @@ -12930,21 +12931,23 @@ H4sIAAAJbogA/xzLQQ6CMBCF4atMZoMu0AswJF7AOzzaARtqMZ0magh3p+niJW/x/QPIRZgJTyVRXf/J

"/partials/ackgroup.html": {
local: "web/static/partials/ackgroup.html",
size: 1782,
size: 2142,
modtime: 0,
compressed: `
H4sIAAAJbogA/6RVTW/jKhRd5/0KnlUpjvScLNrVkx2pqjSafZejWWC4NkwIWIDzoSj/ffiy47Ruq9Es
IjD3cu65cA4pKT8gIrAxVdZhCaJoteq7DMm2MEwdqyx8m2z7z2KaSwRg3fCTX1+U7NHn11zSKsNkl42I
vRCFgMZm23LDHkOucWXu4pq3zAachQEBxPpZWettHHtr1bihthK5X0Ghwb2wYW72gS0RnOyqLELkVvew
yrZYiHITIf4KrsHCeDypJEwBy41v55O+0JFbVkQUoJNjxfL8OqwGaj4RDYl3R4Df0u0032N9nqG7d11w
TCxXMl+6m1iuQpRyg2sB7nb+JVg+k92ttEuS6uhirWsMf1DwiLXksv2qIBHKwGzJFx+5FQ2JH5ejWLag
v6rWKN2CnS33LYRu9WLqJwXf3z/T0FTZ5cK4sUqf89X1mm2/x48ENF5+uXHOeGOQYKbE/bbw4ud5sNT6
1WLbm0hfQwfYJrMhLlFynY9xyV2E0xOq0IOzGCTTvXMuA0zdLU0PjCghcGcgd9tXUWcle7rfZrkVEGOL
UuAaxIyMozBT1qLksustsucOXA0GZFerUzbjak9lryiI1No6JCcjDBz9kD/AAaT9L3UYT4UwL4Qq6zuK
LeSrgeQmsEwfGPmrGohNXdiKc8c4UXJ6DZfluFzAyS3usZdTYXgrl//Hc18/O4kd4OpfrcHffwx+UKLf
Q6GaZoR95QIkAToPPL6gKbmvf4Uj/5jD9Pm8XOK2F8YF1SDXrlRr2fWKsABtzRRlNMKGPUUhR/3OaKpW
9Ize/jFw5wz/iskfTlY/k6zc1gB+p/+wMusB49QPaze1oxGG5MEMxLcymmHsLOZZUwQI5Cat7rxVHRlv
0tjZ0NFgzTim4XcAAAD//6h6Z1H2BgAA
H4sIAAAJbogA/6RV34/iNhB+5v4KNz0JUBu4Fnp33Qak7Z6qvu9j1QfHmcTuGjuynQWE+N87/pHAcizb
6rRaJfHMfN/MeL6hsG4vYf1u1lIFMudAK6GaQ6lNBSY3+NXZu0W7++3Yu1RUNWgq9Q69drnltNLbO/JL
uyMfwt/39NflcvkzEcqCO8VtqVEIfSvw8/3HL4vfLwNtxxhYeytw8fDp4+LLZaBQtb4Z9dOnD5/rIaqY
p14UlXgmTFJrV1lEaozu2oxg9pbr7SoL3zZbvxud+zIJ1NRi589HBV94/1KoapVR9pQNiJ2UuYTaZeti
zhfB1yLNC7sRDXcBZ2RBAnP+rSjNOj475/QQUDpF8D+voKaddOHdbkK2TAr2tMoixMSZDqbZmkpZzCPE
N8HVVFqPp7SCc0DsI5Zzoy6yFY7nEQWqs7ZStX/sT0Nq3pH0ji9aQC/TbY3YULO/ku4GqxCUOaHVZIw3
MZ4GayUsLSXg7XzHqLpnTydqdFJ6i7YGC6OvEKZ5fouQSW3hKuWDt5xIg+PrdFF2b7HV2jTgrtL9EUwn
vuh6g/Dr++cG6lV2OHBhnTb7yfR4zNZ/xo8ENFx+MUdlXAgkiCnlfjp48O+TIKnZo6OuszF9Ay1Ql8SG
KiVJdd4mlECLqHZkRd6jxCCJ7ivlpoV2k/ShMwaUS9w/jP3OGJ+3mGkpaWthgoTTOJkFX74kcsJJiLZR
IWkJ8srgx1FOXqNCqLZzxO1bQA4O7AmJsyt7wKey0RXI1IxZcE7S6XP0j8l7eMZKfkw9iX1k3I/OKuva
ijqYTPsk5yHL9EGJv9w+sXPdNnLfcsG0Ou/hYTwc57DDww31A5hb0ajxXbyp2T0O5TMc/Z7rN8L/Bn/W
sttArut6gH0UEhSD6jrwsHOTc1f+E1r+eg7nC/dwSCPBhaxwKGZI1Th+PBIqwTh7jjJIZ86XcfTjxF+Z
wlJXe3L5UyJQS37vqb9wrP5OY4WhAfyFYsLJf1BN79crh/kqBuUMRUU/Z3OLcUDwpTGt1zXmgYpOBxHU
H19RiRd+rL2vuZd7fKbHvwEAAP//1kNQfV4IAAA=
`,
},

Expand Down Expand Up @@ -12981,24 +12984,24 @@ NeZtQ48ZNx5cB0tkPLvkz/bBIAzIu+Vq0mH5U/wNAAD//wJxdrNjAwAA

"/partials/alertstate.html": {
local: "web/static/partials/alertstate.html",
size: 3396,
size: 3440,
modtime: 0,
compressed: `
H4sIAAAJbogA/7RWUW/jNgx+zv0KTQc0LTDHSFcUWGG7uAEdVmx72bV7V2zG1qpImSQ3zXL+76NsOXES
Z7dL0ofWDEV9+kiKpKKMv5JUMGNiOmcSRFAAy7jMKZF5kAqevsTUqjwXcHlFkw+DqLjZtrfcCnArg4iR
QsPUiYPI4GprmIvlvOCpkh60Vq6Ga3UAb6icMctRNjyXwztiLLMwQlM7+oxiacjFRY/yu5gMpdIzJoYV
TaLQHXsEgVclyhkEajrFo9OCi2z0mQuQKWSnwP5dgtl36lnCKxMlirvgzOG4GMYUtFb6F26s0st7JkDb
eLVCQiqDywbmk1NeVQ7im0hNuYa1l4/mwR204RGFrOMoIphCLWLaifyjTHkG0j5mNPm4WvWuVNXdXtAQ
a8JlFlMf33LyF6SWfPniqdT+/ArLrZDsxXxeChFonheWbth5gFxRYg0GG/PWVXYAG/eisLhJPkQhXn78
7JXARGXLGp1jItwJ9cXvmOlGtaVLlQjMLLiljcs91r32P/ilQTTHPFqtZJ7UkSAYChfERhWFcw/RkD6A
9uMabTvk/yzMpWQzuKIk3MXpSKeQdgUJZyO8V+mOOKkzSxpTTLTlM9gyfUIFfS8H/+SwMCc42CnusPCF
/QLLTVnXCXL1/DPeceJr313Y7/cR2rr7oxTwrIXb5UTykHHcdWBTCG9zfe/+4aETq5jvJA+oqQ92AhiD
HesQAvclfs+z+GDt06T9RS4/Hk5sp5GEyVXbePoStxHep+B8rz8puX5lYiXBvyCDKSuFreU3QzshNM1h
91mp64kXj4uLtsF3OntVXViWm92u/4S6OldjUqhSr6N2GoXroyhc1xTMmTjcHsXh9qwcxscFYnzeSFzf
HJeOmx0WZ2+Bn1LH75QmiF2bpS+4zwsbdSqUgWahETdLU6VzsO1AzrUq5+37L8b3XylfpFrIIW12N9b/
PwK7j5zfsDc1jn5bcNw+0mw8PkBtwjckRk/LOVTVzpTsJzx6NqBpMlmSHhy3VlWdt9VgwGz/MO2e7kZq
srXrayR+xxHCctx110fDr24z+Y+ev/72pK1+n9UH/OSebAcmxPjaj4hCh1+bJmjbzqqgsDOxjb/DyX/+
DQAA//9L9sWERA0AAA==
H4sIAAAJbogA/7RWX2/jNgx/zn0KTQc0CTbHSFcUWGG7uA0dVmx72bV7V2zG1qpImSS3yXL+7qP8J7ET
Z7dLcg+tGZL66SdSJBUk/JXEghkT0iWTILwMWMJlSolMvbbhJyeP4lxrkPajZTY342+H3kythrUvj19C
alWaChiNafRuEGQ3XWzLrQBnGQSMZBrmThwEBq2NYyrWy4zHSrYJbIZbtQcrVC6Y5SgbnsrhHTHIBibo
aicVMXJ11aP8JiRDqfSCiWFBo8B3255A4FWJfAGems9x6zjjIpl85AJkDMk5sH/nYA4P9SzhlYkcxX1w
5nBcDEMKWiv9CzdW6fU9E6BtuNkgIZXAqIL54JTjwkF8Eak517A95aN5cBvteAQ+ax0UEUym3kLaivyj
jHmC9+UxodH7zabXUhR3B0FDrBmXSUjr+OazvyC25NOnmkp5nl9h3QnJQcyXuRCe5mlm6Y5dDZAqSqzB
YGPe2soWYHW8wM9uoneBj4WCn4NymalkXaJzTITbobz4LTddqTq6WAnPLLxbWh25x7vX//vaNAiWmEer
lUyjMhIEQ+GCWKkCf1lDVKSPoP2wReuG/J83M5JsAWNK/H2clnQOaVeQcDHCB5XuiJMys6RyxURbvoCO
6xMq6Nc64J8c3swZB2wVt5/Vhf0C611Zlwly9fwz3nFS1767sN8dIjR190cu4FkLt8qJ5CHhuOrIIh9W
S33v/uGmM6tY3UkeUFNu7AQwBjvWMQRel/g9T8KjtU+j5hcZvT+e2FYj8aNx03j6ErcTvk7B1b3+rOTW
lpmVBP+8BOYsF7aUV4a2Qmiqze6TXJcTL5xmV02Db3X2oriyLDX7Xf8JdWWupiRTud5G7TwK1ydRuC4p
mAtxuD2Jw+1FOUxPC8T0spG4vjktHTd7LC7eAj/Ejt85TRC7NotfcF0t7NSxUAYqQyXuTHOlU7DNQE61
ypfN+y/E918uX6R6k0Nara68/38E9h85v2Fvqg76ZcFx60i18PQANQnfkZg8rZdQFHtTsp/w5NmAptFs
TXpwnK0oWm+rwYDZ/mHa3t2N1Kiz6nMkfscRwlJcdddHo7Z2mfxHz99+e9JWvs/KDX50T7YjE2J6XY+I
TPufmybo28wqL7ML0cXf41R//g0AAP//GItLbXANAAA=
`,
},

Expand Down
1 change: 1 addition & 0 deletions cmd/bosun/web/static/js/bosun.js
Original file line number Diff line number Diff line change
Expand Up @@ -2561,6 +2561,7 @@ bosunApp.directive('tsState', ['$sce', '$http', function ($sce, $http) {
templateUrl: '/partials/alertstate.html',
link: function (scope, elem, attrs) {
var myIdx = attrs["tsGrp"];
scope.currentStatus = attrs["tsGrpstatus"];
scope.name = scope.child.AlertKey;
scope.state = scope.child.State;
scope.action = function (type) {
Expand Down
2 changes: 1 addition & 1 deletion cmd/bosun/web/static/js/state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ bosunApp.directive('tsState', ['$sce', '$http', function($sce: ng.ISCEService, $
templateUrl: '/partials/alertstate.html',
link: function(scope: any, elem: any, attrs: any) {
var myIdx = attrs["tsGrp"];

scope.currentStatus = attrs["tsGrpstatus"]
scope.name = scope.child.AlertKey;
scope.state = scope.child.State;
scope.action = (type: string) => {
Expand Down
13 changes: 10 additions & 3 deletions cmd/bosun/web/static/partials/ackgroup.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
<style>
.panel-heading{border-radius:3px;}
.panel-danger-box{box-shadow: 5px 0 0 0 #a94442 inset;}
.panel-warning-box{box-shadow: 5px 0 0 0 #8A6D3B inset;}
.panel-success-box{box-shadow: 5px 0 0 0 #3C763D inset;}
.panel-info-box{box-shadow: 5px 0 0 0 #31708f inset;}
</style>
<div class="panel-group" ng-show="groups">
<div class="clearfix">
<h3 ng-bind="ack" class="pull-left"></h3>
Expand All @@ -17,7 +24,7 @@ <h3 ng-bind="ack" class="pull-left"></h3>
</span>
</div>
<div class="panel" ng-class="panelClass(group.Status)" ng-repeat="group in groups" ng-init="idx = $index">
<div class="panel-heading" ng-click="collapse(idx)">
<div class="panel-heading" ng-class="panelClass(group.CurrentStatus)+'-box'" ng-click="collapse(idx)">
<h4 class="panel-title">
<label class="pull-right select">
<input type="checkbox" class="pull-right" ng-model="group.checked" ng-click="click($event, $index)" ng-change="update()">
Expand All @@ -33,9 +40,9 @@ <h4 class="panel-title">
<div class="panel-body panel-group" ng-if="shown[idx]">
<div
class="panel"
ng-class="panelClass(state.last.Status)"
ng-class="panelClass(group.Status)"
ng-repeat="child in group.Children"
ts-state ts-grp="{{idx}}">
ts-state ts-grp="{{idx}}" ts-grpStatus="{{group.CurrentStatus}}">
</div>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion cmd/bosun/web/static/partials/alertstate.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div class="panel-heading" ng-click="toggle()">
<div class="panel-heading" ng-class="panelClass(currentStatus)+'-box'" ng-click="toggle()">
<h4 class="panel-title">
<a href>
<span class="glyphicon" ng-class="{'glyphicon-exclamation-sign': state.last.Status && state.last.Status != 'normal'}"></span>
Expand Down