Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
doodoocoder
prometheus
提交
04ad8897
P
prometheus
项目概览
doodoocoder
/
prometheus
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
prometheus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
04ad8897
编写于
4月 25, 2017
作者:
D
David Symonds
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Preserve Alertmanager URLs as *url.URL.
Render a nicer link in the web UI.
上级
9eb1a5d6
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
70 addition
and
60 deletion
+70
-60
notifier/notifier.go
notifier/notifier.go
+8
-9
notifier/notifier_test.go
notifier/notifier_test.go
+7
-2
web/api/v1/api.go
web/api/v1/api.go
+4
-3
web/api/v1/api_test.go
web/api/v1/api_test.go
+8
-4
web/ui/bindata.go
web/ui/bindata.go
+40
-40
web/ui/templates/status.html
web/ui/templates/status.html
+2
-1
web/web.go
web/web.go
+1
-1
未找到文件。
notifier/notifier.go
浏览文件 @
04ad8897
...
...
@@ -316,13 +316,13 @@ func (n *Notifier) setMore() {
}
}
// Alertmanagers returns a
list
Alertmanager URLs.
func
(
n
*
Notifier
)
Alertmanagers
()
[]
string
{
// Alertmanagers returns a
slice of
Alertmanager URLs.
func
(
n
*
Notifier
)
Alertmanagers
()
[]
*
url
.
URL
{
n
.
mtx
.
RLock
()
amSets
:=
n
.
alertmanagers
n
.
mtx
.
RUnlock
()
var
res
[]
string
var
res
[]
*
url
.
URL
for
_
,
ams
:=
range
amSets
{
ams
.
mtx
.
RLock
()
...
...
@@ -364,7 +364,7 @@ func (n *Notifier) sendAll(alerts ...*model.Alert) bool {
defer
cancel
()
go
func
(
am
alertmanager
)
{
u
:=
am
.
url
()
u
:=
am
.
url
()
.
String
()
if
err
:=
n
.
sendOne
(
ctx
,
ams
.
client
,
u
,
b
);
err
!=
nil
{
log
.
With
(
"alertmanager"
,
u
)
.
With
(
"count"
,
len
(
alerts
))
.
Errorf
(
"Error sending alerts: %s"
,
err
)
...
...
@@ -412,20 +412,19 @@ func (n *Notifier) Stop() {
// alertmanager holds Alertmanager endpoint information.
type
alertmanager
interface
{
url
()
string
url
()
*
url
.
URL
}
type
alertmanagerLabels
model
.
LabelSet
const
pathLabel
=
"__alerts_path__"
func
(
a
alertmanagerLabels
)
url
()
string
{
u
:=
&
url
.
URL
{
func
(
a
alertmanagerLabels
)
url
()
*
url
.
URL
{
return
&
url
.
URL
{
Scheme
:
string
(
a
[
model
.
SchemeLabel
]),
Host
:
string
(
a
[
model
.
AddressLabel
]),
Path
:
string
(
a
[
pathLabel
]),
}
return
u
.
String
()
}
// alertmanagerSet contains a set of Alertmanagers discovered via a group of service
...
...
@@ -476,7 +475,7 @@ func (s *alertmanagerSet) Sync(tgs []*config.TargetGroup) {
seen
:=
map
[
string
]
struct
{}{}
for
_
,
am
:=
range
all
{
us
:=
am
.
url
()
us
:=
am
.
url
()
.
String
()
if
_
,
ok
:=
seen
[
us
];
ok
{
continue
}
...
...
notifier/notifier_test.go
浏览文件 @
04ad8897
...
...
@@ -19,6 +19,7 @@ import (
"io/ioutil"
"net/http"
"net/http/httptest"
"net/url"
"reflect"
"testing"
"time"
...
...
@@ -415,6 +416,10 @@ type alertmanagerMock struct {
urlf
func
()
string
}
func
(
a
alertmanagerMock
)
url
()
string
{
return
a
.
urlf
()
func
(
a
alertmanagerMock
)
url
()
*
url
.
URL
{
u
,
err
:=
url
.
Parse
(
a
.
urlf
())
if
err
!=
nil
{
panic
(
err
)
}
return
u
}
web/api/v1/api.go
浏览文件 @
04ad8897
...
...
@@ -19,6 +19,7 @@ import (
"fmt"
"math"
"net/http"
"net/url"
"sort"
"strconv"
"time"
...
...
@@ -74,7 +75,7 @@ type targetRetriever interface {
}
type
alertmanagerRetriever
interface
{
Alertmanagers
()
[]
string
Alertmanagers
()
[]
*
url
.
URL
}
type
response
struct
{
...
...
@@ -430,8 +431,8 @@ func (api *API) alertmanagers(r *http.Request) (interface{}, *apiError) {
urls
:=
api
.
alertmanagerRetriever
.
Alertmanagers
()
ams
:=
&
AlertmanagerDiscovery
{
ActiveAlertmanagers
:
make
([]
*
AlertmanagerTarget
,
len
(
urls
))}
for
i
:=
range
urls
{
ams
.
ActiveAlertmanagers
[
i
]
=
&
AlertmanagerTarget
{
URL
:
url
s
[
i
]
}
for
i
,
url
:=
range
urls
{
ams
.
ActiveAlertmanagers
[
i
]
=
&
AlertmanagerTarget
{
URL
:
url
.
String
()
}
}
return
ams
,
nil
...
...
web/api/v1/api_test.go
浏览文件 @
04ad8897
...
...
@@ -39,9 +39,9 @@ func (f targetRetrieverFunc) Targets() []*retrieval.Target {
return
f
()
}
type
alertmanagerRetrieverFunc
func
()
[]
string
type
alertmanagerRetrieverFunc
func
()
[]
*
url
.
URL
func
(
f
alertmanagerRetrieverFunc
)
Alertmanagers
()
[]
string
{
func
(
f
alertmanagerRetrieverFunc
)
Alertmanagers
()
[]
*
url
.
URL
{
return
f
()
}
...
...
@@ -77,8 +77,12 @@ func TestEndpoints(t *testing.T) {
}
})
ar
:=
alertmanagerRetrieverFunc
(
func
()
[]
string
{
return
[]
string
{
"http://alertmanager.example.com:8080/api/v1/alerts"
}
ar
:=
alertmanagerRetrieverFunc
(
func
()
[]
*
url
.
URL
{
return
[]
*
url
.
URL
{{
Scheme
:
"http"
,
Host
:
"alertmanager.example.com:8080"
,
Path
:
"/api/v1/alerts"
,
}}
})
api
:=
&
API
{
...
...
web/ui/bindata.go
浏览文件 @
04ad8897
此差异已折叠。
点击以展开。
web/ui/templates/status.html
浏览文件 @
04ad8897
...
...
@@ -54,7 +54,8 @@
</tr>
{{range .Alertmanagers}}
<tr>
<td>
{{.}}
</td>
{{/* Alertmanager URLs always have Scheme, Host and Path set */}}
<td>
{{.Scheme}}://
<a
href=
"{{.Scheme}}://{{.Host}}"
>
{{.Host}}
</a>
{{.Path}}
</td>
</tr>
{{end}}
</tbody>
...
...
web/web.go
浏览文件 @
04ad8897
...
...
@@ -347,7 +347,7 @@ func (h *Handler) status(w http.ResponseWriter, r *http.Request) {
Birth
time
.
Time
CWD
string
Version
*
PrometheusVersion
Alertmanagers
[]
string
Alertmanagers
[]
*
url
.
URL
}{
Birth
:
h
.
birth
,
CWD
:
h
.
cwd
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录