mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
* update vendor directory, add go.opencensus.io * update imports * oops * s/opentracing/opencensus/ & remove prometheus / zipkin stuff & remove old stats * the dep train rides again * fix gin build * deps from last guy * start in on the agent metrics * she builds * remove tags for now, cardinality error is fussing. subscribe instead of register * update to patched version of opencensus to proceed for now TODO switch to a release * meh fix imports * println debug the bad boys * lace it with the tags * update deps again * fix all inconsistent cardinality errors * add our own logger * fix init * fix oom measure * remove bugged removal code * fix s3 measures * fix prom handler nil
104 lines
2.6 KiB
Go
104 lines
2.6 KiB
Go
package http
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"fmt"
|
|
"net/http/httptrace"
|
|
"strings"
|
|
"time"
|
|
|
|
zipkin "github.com/openzipkin/zipkin-go"
|
|
)
|
|
|
|
type spanTrace struct {
|
|
zipkin.Span
|
|
c *httptrace.ClientTrace
|
|
}
|
|
|
|
func (s *spanTrace) getConn(hostPort string) {
|
|
s.Annotate(time.Now(), "Connecting")
|
|
s.Tag("httptrace.get_connection.host_port", hostPort)
|
|
}
|
|
|
|
func (s *spanTrace) gotConn(info httptrace.GotConnInfo) {
|
|
s.Annotate(time.Now(), "Connected")
|
|
s.Tag("httptrace.got_connection.reused", fmt.Sprintf("%t", info.Reused))
|
|
s.Tag("httptrace.got_connection.was_idle", fmt.Sprintf("%t", info.WasIdle))
|
|
if info.WasIdle {
|
|
s.Tag("httptrace.got_connection.idle_time", info.IdleTime.String())
|
|
}
|
|
}
|
|
|
|
func (s *spanTrace) putIdleConn(err error) {
|
|
s.Annotate(time.Now(), "Put Idle Connection")
|
|
if err != nil {
|
|
s.Tag("httptrace.put_idle_connection.error", err.Error())
|
|
}
|
|
}
|
|
|
|
func (s *spanTrace) gotFirstResponseByte() {
|
|
s.Annotate(time.Now(), "First Response Byte")
|
|
}
|
|
|
|
func (s *spanTrace) got100Continue() {
|
|
s.Annotate(time.Now(), "Got 100 Continue")
|
|
}
|
|
|
|
func (s *spanTrace) dnsStart(info httptrace.DNSStartInfo) {
|
|
s.Annotate(time.Now(), "DNS Start")
|
|
s.Tag("httptrace.dns_start.host", info.Host)
|
|
}
|
|
|
|
func (s *spanTrace) dnsDone(info httptrace.DNSDoneInfo) {
|
|
s.Annotate(time.Now(), "DNS Done")
|
|
var addrs []string
|
|
for _, addr := range info.Addrs {
|
|
addrs = append(addrs, addr.String())
|
|
}
|
|
s.Tag("httptrace.dns_done.addrs", strings.Join(addrs, " , "))
|
|
if info.Err != nil {
|
|
s.Tag("httptrace.dns_done.error", info.Err.Error())
|
|
}
|
|
}
|
|
|
|
func (s *spanTrace) connectStart(network, addr string) {
|
|
s.Annotate(time.Now(), "Connect Start")
|
|
s.Tag("httptrace.connect_start.network", network)
|
|
s.Tag("httptrace.connect_start.addr", addr)
|
|
}
|
|
|
|
func (s *spanTrace) connectDone(network, addr string, err error) {
|
|
s.Annotate(time.Now(), "Connect Done")
|
|
s.Tag("httptrace.connect_done.network", network)
|
|
s.Tag("httptrace.connect_done.addr", addr)
|
|
if err != nil {
|
|
s.Tag("httptrace.connect_done.error", err.Error())
|
|
}
|
|
}
|
|
|
|
func (s *spanTrace) tlsHandshakeStart() {
|
|
s.Annotate(time.Now(), "TLS Handshake Start")
|
|
}
|
|
|
|
func (s *spanTrace) tlsHandshakeDone(_ tls.ConnectionState, err error) {
|
|
s.Annotate(time.Now(), "TLS Handshake Done")
|
|
if err != nil {
|
|
s.Tag("httptrace.tls_handshake_done.error", err.Error())
|
|
}
|
|
}
|
|
|
|
func (s *spanTrace) wroteHeaders() {
|
|
s.Annotate(time.Now(), "Wrote Headers")
|
|
}
|
|
|
|
func (s *spanTrace) wait100Continue() {
|
|
s.Annotate(time.Now(), "Wait 100 Continue")
|
|
}
|
|
|
|
func (s *spanTrace) wroteRequest(info httptrace.WroteRequestInfo) {
|
|
s.Annotate(time.Now(), "Wrote Request")
|
|
if info.Err != nil {
|
|
s.Tag("httptrace.wrote_request.error", info.Err.Error())
|
|
}
|
|
}
|