mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-13 23:10:12 -08:00
Merge pull request #1379 from prometheus/fix-target-init
Fix target update error handling.
This commit is contained in:
commit
1c1dcd0255
|
@ -184,7 +184,7 @@ type Target struct {
|
|||
}
|
||||
|
||||
// NewTarget creates a reasonably configured target for querying.
|
||||
func NewTarget(cfg *config.ScrapeConfig, baseLabels, metaLabels model.LabelSet) *Target {
|
||||
func NewTarget(cfg *config.ScrapeConfig, baseLabels, metaLabels model.LabelSet) (*Target, error) {
|
||||
t := &Target{
|
||||
url: &url.URL{
|
||||
Scheme: string(baseLabels[model.SchemeLabel]),
|
||||
|
@ -194,8 +194,8 @@ func NewTarget(cfg *config.ScrapeConfig, baseLabels, metaLabels model.LabelSet)
|
|||
scraperStopping: make(chan struct{}),
|
||||
scraperStopped: make(chan struct{}),
|
||||
}
|
||||
t.Update(cfg, baseLabels, metaLabels)
|
||||
return t
|
||||
err := t.Update(cfg, baseLabels, metaLabels)
|
||||
return t, err
|
||||
}
|
||||
|
||||
// Status returns the status of the target.
|
||||
|
@ -205,14 +205,13 @@ func (t *Target) Status() *TargetStatus {
|
|||
|
||||
// Update overwrites settings in the target that are derived from the job config
|
||||
// it belongs to.
|
||||
func (t *Target) Update(cfg *config.ScrapeConfig, baseLabels, metaLabels model.LabelSet) {
|
||||
func (t *Target) Update(cfg *config.ScrapeConfig, baseLabels, metaLabels model.LabelSet) error {
|
||||
t.Lock()
|
||||
defer t.Unlock()
|
||||
|
||||
httpClient, err := newHTTPClient(cfg)
|
||||
if err != nil {
|
||||
log.Errorf("cannot create HTTP client: %v", err)
|
||||
return
|
||||
return fmt.Errorf("cannot create HTTP client: %v", err)
|
||||
}
|
||||
t.httpClient = httpClient
|
||||
|
||||
|
@ -257,6 +256,7 @@ func (t *Target) Update(cfg *config.ScrapeConfig, baseLabels, metaLabels model.L
|
|||
t.baseLabels[model.InstanceLabel] = model.LabelValue(t.InstanceIdentifier())
|
||||
}
|
||||
t.metricRelabelConfigs = cfg.MetricRelabelConfigs
|
||||
return nil
|
||||
}
|
||||
|
||||
func newHTTPClient(cfg *config.ScrapeConfig) (*http.Client, error) {
|
||||
|
|
|
@ -423,7 +423,7 @@ func TestURLParams(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
|
||||
target := NewTarget(
|
||||
target, err := NewTarget(
|
||||
&config.ScrapeConfig{
|
||||
JobName: "test_job1",
|
||||
ScrapeInterval: model.Duration(1 * time.Minute),
|
||||
|
@ -439,6 +439,9 @@ func TestURLParams(t *testing.T) {
|
|||
"__param_foo": "bar",
|
||||
},
|
||||
nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
app := &collectResultAppender{}
|
||||
if err = target.scrape(app); err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -639,3 +642,18 @@ func newTLSConfig(t *testing.T) *tls.Config {
|
|||
tlsConfig.BuildNameToCertificate()
|
||||
return tlsConfig
|
||||
}
|
||||
|
||||
func TestNewTargetWithBadTLSConfig(t *testing.T) {
|
||||
cfg := &config.ScrapeConfig{
|
||||
ScrapeTimeout: model.Duration(1 * time.Second),
|
||||
TLSConfig: config.TLSConfig{
|
||||
CAFile: "testdata/nonexistent_ca.cer",
|
||||
CertFile: "testdata/nonexistent_client.cer",
|
||||
KeyFile: "testdata/nonexistent_client.key",
|
||||
},
|
||||
}
|
||||
_, err := NewTarget(cfg, nil, nil)
|
||||
if err == nil {
|
||||
t.Fatalf("Expected error, got nil.")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -278,7 +278,9 @@ func (tm *TargetManager) updateTargetGroup(tgroup *config.TargetGroup, cfg *conf
|
|||
// to build up.
|
||||
wg.Add(1)
|
||||
go func(t *Target) {
|
||||
match.Update(cfg, t.fullLabels(), t.metaLabels)
|
||||
if err := match.Update(cfg, t.fullLabels(), t.metaLabels); err != nil {
|
||||
log.Errorf("Error updating target %v: %v", t, err)
|
||||
}
|
||||
wg.Done()
|
||||
}(tnew)
|
||||
newTargets[i] = match
|
||||
|
@ -516,7 +518,10 @@ func (tm *TargetManager) targetsFromGroup(tg *config.TargetGroup, cfg *config.Sc
|
|||
delete(labels, ln)
|
||||
}
|
||||
}
|
||||
tr := NewTarget(cfg, labels, preRelabelLabels)
|
||||
tr, err := NewTarget(cfg, labels, preRelabelLabels)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error while creating instance %d in target group %s: %s", i, tg, err)
|
||||
}
|
||||
targets = append(targets, tr)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue