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 {
|
if !req.Synchronized {
|
||||||
defer g.wg.Done()
|
defer g.wg.Done()
|
||||||
}
|
}
|
||||||
defer recoverMiddleware()
|
defer recoverMiddleware(g, req)
|
||||||
|
|
||||||
for _, middlewareFunc := range g.requestMiddlewares {
|
for _, middlewareFunc := range g.requestMiddlewares {
|
||||||
middlewareFunc(g, req)
|
middlewareFunc(g, req)
|
||||||
|
@ -26,6 +26,7 @@ const (
|
|||||||
type Metrics struct {
|
type Metrics struct {
|
||||||
RequestCounter metrics.Counter
|
RequestCounter metrics.Counter
|
||||||
ResponseCounter metrics.Counter
|
ResponseCounter metrics.Counter
|
||||||
|
PanicCounter metrics.Counter
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewMetrics creates new metrics with given metrics.Type
|
// NewMetrics creates new metrics with given metrics.Type
|
||||||
@ -35,11 +36,13 @@ func NewMetrics(metricsType Type) *Metrics {
|
|||||||
return &Metrics{
|
return &Metrics{
|
||||||
RequestCounter: discard.NewCounter(),
|
RequestCounter: discard.NewCounter(),
|
||||||
ResponseCounter: discard.NewCounter(),
|
ResponseCounter: discard.NewCounter(),
|
||||||
|
PanicCounter: discard.NewCounter(),
|
||||||
}
|
}
|
||||||
case ExpVar:
|
case ExpVar:
|
||||||
return &Metrics{
|
return &Metrics{
|
||||||
RequestCounter: expvar.NewCounter("request_count"),
|
RequestCounter: expvar.NewCounter("request_count"),
|
||||||
ResponseCounter: expvar.NewCounter("response_count"),
|
ResponseCounter: expvar.NewCounter("response_count"),
|
||||||
|
PanicCounter: expvar.NewCounter("panic_count"),
|
||||||
}
|
}
|
||||||
case Prometheus:
|
case Prometheus:
|
||||||
return &Metrics{
|
return &Metrics{
|
||||||
@ -53,6 +56,11 @@ func NewMetrics(metricsType Type) *Metrics {
|
|||||||
Name: "response_count",
|
Name: "response_count",
|
||||||
Help: "Response count",
|
Help: "Response count",
|
||||||
}, []string{"method"}),
|
}, []string{"method"}),
|
||||||
|
PanicCounter: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
|
||||||
|
Namespace: "geziyor",
|
||||||
|
Name: "panic_count",
|
||||||
|
Help: "Panic count",
|
||||||
|
}, []string{}),
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return nil
|
return nil
|
||||||
|
@ -28,9 +28,10 @@ func init() {
|
|||||||
|
|
||||||
// recoverMiddleware recovers scraping being crashed.
|
// recoverMiddleware recovers scraping being crashed.
|
||||||
// Logs error and stack trace
|
// Logs error and stack trace
|
||||||
func recoverMiddleware() {
|
func recoverMiddleware(g *Geziyor, r *Request) {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
log.Println(r, string(debug.Stack()))
|
log.Println(r, string(debug.Stack()))
|
||||||
|
g.metrics.PanicCounter.Add(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +76,7 @@ func delayMiddleware(g *Geziyor, r *Request) {
|
|||||||
|
|
||||||
// logMiddleware logs requests
|
// logMiddleware logs requests
|
||||||
func logMiddleware(g *Geziyor, r *Request) {
|
func logMiddleware(g *Geziyor, r *Request) {
|
||||||
//log.Println("Fetching: ", r.URL.String())
|
log.Println("Fetching: ", r.URL.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// metricsRequestMiddleware sets stats
|
// metricsRequestMiddleware sets stats
|
||||||
|
Loading…
x
Reference in New Issue
Block a user