2016-04-11 25 views
0

http handler, Latency vb. Tarafından kullanılan sistem kaynaklarını yakalamaya çalışıyordum. Yani, bu goRelic aracısını buldum.
i http ölçüyü yakalayabilir folowing yolu kullanarak diyor :Özel http işleyicisinin goRelic aracısını kullanarak HTTP metriklerini yakalama

type appHandler struct { 
    *appContext 
    H func(*appContext, http.ResponseWriter, *http.Request) (int, error) 
} 


func (ah appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 
    // Updated to pass ah.appContext as a parameter to our handler type. 
    status, err := ah.H(ah.appContext, w, r) 
    if err != nil { 
     log.Printf("HTTP %d: %q", status, err) 
     switch status { 
     case http.StatusNotFound: 
      http.NotFound(w, r) 
      // And if we wanted a friendlier error page, we can 
      // now leverage our context instance - e.g. 
      // err := ah.renderTemplate(w, "http_404.tmpl", nil) 
     case http.StatusInternalServerError: 
      http.Error(w, http.StatusText(status), status) 
     default: 
      http.Error(w, http.StatusText(status), status) 
     } 
    } 
} 

func main() { 
    r := web.New() 
    // We pass an instance to our context pointer, and our handler. 
    r.Get("/", appHandler{context, IndexHandler})  
    graceful.ListenAndServe(":8086", r)  

} 

Peki yapın şu şekildedir: i link verilen özel http işleyicisi kullanıyorum edilir

agent.CollectHTTPStat = true 
http.HandleFunc("/", agent.WrapHTTPHandlerFunc(handler)) 

Ancak sorunun Bu tanıtıcı için http metriğini ele geçirdim veya benzer ölçüleri yakalayabileceğim başka bir araç var mı?

+1

Kullanım 'için elithrar teşekkür WrapHandler' yerine: https://godoc.org/github.com/yvasiyarov/gorelic#Agent.WrapHTTPHandler – elithrar

+0

Maalesef bu görmedi. Bu arada teşekkür ederim – Naresh

cevap

0

Sadece WrapHandler kullanmam gerekiyor. Eğer öneri

agent.CollectHTTPStat = true 
http.HandleFunc("/", agent.WrapHandler(handler)