Skip to content

Commit

Permalink
Implemented Last-Modified HTTP header metric
Browse files Browse the repository at this point in the history
This feature returns a probe_http_last_modified metric with the content
of the Last-Modified HTTP response header, if it is set by the server.

Signed-off-by: Johannes Visintini <[email protected]>
  • Loading branch information
joker234 committed Jan 16, 2019
1 parent 22be143 commit 80cfb20
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions prober/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,11 @@ func ProbeHTTP(ctx context.Context, target string, module config.Module, registr
Name: "probe_failed_due_to_regex",
Help: "Indicates if probe failed due to regex",
})

probeHTTPLastModified = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "probe_http_last_modified_timestamp_seconds",
Help: "Returns the Last-Modified HTTP response header in unixtime",
})
)

for _, lv := range []string{"resolve", "connect", "tls", "processing", "transfer"} {
Expand Down Expand Up @@ -337,6 +342,12 @@ func ProbeHTTP(ctx context.Context, target string, module config.Module, registr
// At this point body is fully read and we can write end time.
tt.current.end = time.Now()

// Check if there is a Last-Modified HTTP response header.
if t, err := http.ParseTime(resp.Header.Get("Last-Modified")); err == nil {
registry.MustRegister(probeHTTPLastModified)
probeHTTPLastModified.Set(float64(t.Unix()))
}

var httpVersionNumber float64
httpVersionNumber, err = strconv.ParseFloat(strings.TrimPrefix(resp.Proto, "HTTP/"), 64)
if err != nil {
Expand Down

0 comments on commit 80cfb20

Please sign in to comment.