Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
doodoocoder
prometheus
提交
8b53ffb0
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,体验更适合开发者的 AI 搜索 >>
提交
8b53ffb0
编写于
7月 09, 2015
作者:
F
Fabian Reinartz
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #885 from prometheus/fabxc/retrace
retrieval: avoid race conditions
上级
b0efbf8c
d53cc793
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
10 deletion
+17
-10
retrieval/target.go
retrieval/target.go
+17
-10
未找到文件。
retrieval/target.go
浏览文件 @
8b53ffb0
...
...
@@ -142,20 +142,17 @@ func (ts *TargetStatus) setLastError(err error) {
type
Target
struct
{
// The status object for the target. It is only set once on initialization.
status
*
TargetStatus
// The HTTP client used to scrape the target's endpoint.
httpClient
*
http
.
Client
// Closing scraperStopping signals that scraping should stop.
scraperStopping
chan
struct
{}
// Closing scraperStopped signals that scraping has been stopped.
scraperStopped
chan
struct
{}
// Channel to buffer ingested samples.
ingestedSamples
chan
clientmodel
.
Samples
// Metric relabel configuration.
metricRelabelConfigs
[]
*
config
.
RelabelConfig
// Mutex protects the members below.
sync
.
RWMutex
// The HTTP client used to scrape the target's endpoint.
httpClient
*
http
.
Client
// url is the URL to be scraped. Its host is immutable.
url
*
url
.
URL
// Labels before any processing.
...
...
@@ -169,6 +166,8 @@ type Target struct {
// Whether the target's labels have precedence over the base labels
// assigned by the scraping instance.
honorLabels
bool
// Metric relabel configuration.
metricRelabelConfigs
[]
*
config
.
RelabelConfig
}
// NewTarget creates a reasonably configured target for querying.
...
...
@@ -331,6 +330,14 @@ func (t *Target) scrape(sampleAppender storage.SampleAppender) (err error) {
start
:=
time
.
Now
()
baseLabels
:=
t
.
BaseLabels
()
t
.
RLock
()
var
(
honorLabels
=
t
.
honorLabels
httpClient
=
t
.
httpClient
metricRelabelConfigs
=
t
.
metricRelabelConfigs
)
t
.
RUnlock
()
defer
func
()
{
t
.
status
.
setLastError
(
err
)
recordScrapeHealth
(
sampleAppender
,
clientmodel
.
TimestampFromTime
(
start
),
baseLabels
,
t
.
status
.
Health
(),
time
.
Since
(
start
))
...
...
@@ -342,7 +349,7 @@ func (t *Target) scrape(sampleAppender storage.SampleAppender) (err error) {
}
req
.
Header
.
Add
(
"Accept"
,
acceptHeader
)
resp
,
err
:=
t
.
httpClient
.
Do
(
req
)
resp
,
err
:=
httpClient
.
Do
(
req
)
if
err
!=
nil
{
return
err
}
...
...
@@ -368,7 +375,7 @@ func (t *Target) scrape(sampleAppender storage.SampleAppender) (err error) {
for
samples
:=
range
t
.
ingestedSamples
{
for
_
,
s
:=
range
samples
{
if
t
.
honorLabels
{
if
honorLabels
{
// Merge the metric with the baseLabels for labels not already set in the
// metric. This also considers labels explicitly set to the empty string.
for
ln
,
lv
:=
range
baseLabels
{
...
...
@@ -387,10 +394,10 @@ func (t *Target) scrape(sampleAppender storage.SampleAppender) (err error) {
}
}
// Avoid the copy in Relabel if there are no configs.
if
len
(
t
.
metricRelabelConfigs
)
>
0
{
labels
,
err
:=
Relabel
(
clientmodel
.
LabelSet
(
s
.
Metric
),
t
.
metricRelabelConfigs
...
)
if
len
(
metricRelabelConfigs
)
>
0
{
labels
,
err
:=
Relabel
(
clientmodel
.
LabelSet
(
s
.
Metric
),
metricRelabelConfigs
...
)
if
err
!=
nil
{
log
.
Errorf
(
"Error while relabeling metric %s of instance %s: %s"
,
s
.
Metric
,
t
.
url
,
err
)
log
.
Errorf
(
"Error while relabeling metric %s of instance %s: %s"
,
s
.
Metric
,
req
.
URL
,
err
)
continue
}
// Check if the timeseries was dropped.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录