Pretty print exporter added. Panic counter added to metrics
This commit is contained in:
parent
276b248ebb
commit
59757607eb
20
exporter/pprint.go
Normal file
20
exporter/pprint.go
Normal file
@ -0,0 +1,20 @@
|
||||
package exporter
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// PrettyPrint logs exported data to console as pretty printed
|
||||
type PrettyPrint struct{}
|
||||
|
||||
// Export logs exported data to console as pretty printed
|
||||
func (*PrettyPrint) Export(exports chan interface{}) {
|
||||
for res := range exports {
|
||||
dat, err := json.MarshalIndent(res, "", " ")
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
fmt.Println(string(dat))
|
||||
}
|
||||
}
|
@ -197,7 +197,7 @@ func (g *Geziyor) do(req *Request, callback func(g *Geziyor, r *Response)) {
|
||||
if !req.Synchronized {
|
||||
defer g.wg.Done()
|
||||
}
|
||||
defer recoverMiddleware()
|
||||
defer recoverMiddleware(g, req)
|
||||
|
||||
for _, middlewareFunc := range g.requestMiddlewares {
|
||||
middlewareFunc(g, req)
|
||||
|
@ -26,6 +26,7 @@ const (
|
||||
type Metrics struct {
|
||||
RequestCounter metrics.Counter
|
||||
ResponseCounter metrics.Counter
|
||||
PanicCounter metrics.Counter
|
||||
}
|
||||
|
||||
// NewMetrics creates new metrics with given metrics.Type
|
||||
@ -35,11 +36,13 @@ func NewMetrics(metricsType Type) *Metrics {
|
||||
return &Metrics{
|
||||
RequestCounter: discard.NewCounter(),
|
||||
ResponseCounter: discard.NewCounter(),
|
||||
PanicCounter: discard.NewCounter(),
|
||||
}
|
||||
case ExpVar:
|
||||
return &Metrics{
|
||||
RequestCounter: expvar.NewCounter("request_count"),
|
||||
ResponseCounter: expvar.NewCounter("response_count"),
|
||||
PanicCounter: expvar.NewCounter("panic_count"),
|
||||
}
|
||||
case Prometheus:
|
||||
return &Metrics{
|
||||
@ -53,6 +56,11 @@ func NewMetrics(metricsType Type) *Metrics {
|
||||
Name: "response_count",
|
||||
Help: "Response count",
|
||||
}, []string{"method"}),
|
||||
PanicCounter: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
|
||||
Namespace: "geziyor",
|
||||
Name: "panic_count",
|
||||
Help: "Panic count",
|
||||
}, []string{}),
|
||||
}
|
||||
default:
|
||||
return nil
|
||||
|
@ -28,9 +28,10 @@ func init() {
|
||||
|
||||
// recoverMiddleware recovers scraping being crashed.
|
||||
// Logs error and stack trace
|
||||
func recoverMiddleware() {
|
||||
func recoverMiddleware(g *Geziyor, r *Request) {
|
||||
if r := recover(); r != nil {
|
||||
log.Println(r, string(debug.Stack()))
|
||||
g.metrics.PanicCounter.Add(1)
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,7 +76,7 @@ func delayMiddleware(g *Geziyor, r *Request) {
|
||||
|
||||
// logMiddleware logs requests
|
||||
func logMiddleware(g *Geziyor, r *Request) {
|
||||
//log.Println("Fetching: ", r.URL.String())
|
||||
log.Println("Fetching: ", r.URL.String())
|
||||
}
|
||||
|
||||
// metricsRequestMiddleware sets stats
|
||||
|
Loading…
x
Reference in New Issue
Block a user