Browse Source

Remember and display last scrape errors in web UI.

pull/260/head
Julius Volz 12 years ago
parent
commit
081191afb8
  1. 15
      retrieval/target.go
  2. 4
      retrieval/targetmanager_test.go
  3. 8
      web/static/css/prometheus.css
  4. 4
      web/templates/status.html

15
retrieval/target.go

@ -90,6 +90,8 @@ type Target interface {
//
// Right now, this is used as the sorting key in TargetPool.
scheduledFor() time.Time
// Return the last encountered scrape error, if any.
LastError() error
// The address to which the Target corresponds. Out of all of the available
// points in this interface, this one is the best candidate to change given
// the ways to express the endpoint.
@ -110,14 +112,18 @@ type target struct {
// scheduler provides the scheduling strategy that is used to formulate what
// is returned in Target.scheduledFor.
scheduler scheduler
state TargetState
// The current health state of the target.
state TargetState
// The last encountered scrape error, if any.
lastError error
address string
// What is the deadline for the HTTP or HTTPS against this endpoint.
Deadline time.Duration
// Any base labels that are added to this target and its metrics.
baseLabels model.LabelSet
client http.Client
// The HTTP client used to scrape the target's endpoint.
client http.Client
}
// Furnish a reasonably configured target for querying.
@ -176,6 +182,7 @@ func (t *target) Scrape(earliest time.Time, results chan format.Result) (err err
t.scheduler.Reschedule(earliest, futureState)
t.state = futureState
t.lastError = err
return err
}
@ -221,6 +228,10 @@ func (t target) scheduledFor() time.Time {
return t.scheduler.ScheduledFor()
}
func (t target) LastError() error {
return t.lastError
}
func (t target) Address() string {
return t.address
}

4
retrieval/targetmanager_test.go

@ -31,6 +31,10 @@ type fakeTarget struct {
scheduleIndex int
}
func (t fakeTarget) LastError() error {
return nil
}
func (t fakeTarget) Address() string {
return "fake"
}

8
web/static/css/prometheus.css

@ -82,4 +82,10 @@ input[name=end_input], input[name=range_input] {
.literal_output td {
font-family: monospace;
}
}
.error_text {
background-color: #f2dede;
border: 1px solid #c0a0a0;
padding: 0 2px 0 2px;
}

4
web/templates/status.html

@ -36,6 +36,10 @@
{{range $pool.Targets}}
<li>
<a href="{{.GlobalAddress}}">{{.Address}}</a> (State: {{.State}}, Base Labels: {{.BaseLabels}})
{{if .LastError}}
<br/>
<span class="error_text"><b>Scrape error:</b> "{{.LastError}}"</span>
{{end}}
</li>
{{end}}
</ul>

Loading…
Cancel
Save