func isPeer(event *events.HttpStartStop) int64 { if event.GetPeerType() == events.PeerType_Client { return 1 } else { return 0 } }
func (p *HttpStartStopProcessor) ProcessHttpStartStopHttpRequestCount(event *events.HttpStartStop) *metrics.CounterMetric { statPrefix := "http.requests." hostname := strings.Replace(strings.Split(event.GetUri(), "/")[0], ".", "_", -1) stat := statPrefix + hostname metric := metrics.NewCounterMetric(stat, isPeer(event)) return metric }
func (p *HttpStartStopProcessor) ProcessHttpStartStopStatusCodeCount(event *events.HttpStartStop) *metrics.CounterMetric { statPrefix := "http.statuscodes." hostname := strings.Replace(strings.Split(event.GetUri(), "/")[0], ".", "_", -1) stat := statPrefix + hostname + "." + strconv.Itoa(int(event.GetStatusCode())) metric := metrics.NewCounterMetric(stat, isPeer(event)) return metric }
func (p *HttpStartStopProcessor) ProcessHttpStartStopHttpErrorCount(event *events.HttpStartStop) *metrics.CounterMetric { var incrementValue int64 statPrefix := "http.errors." hostname := strings.Replace(strings.Split(event.GetUri(), "/")[0], ".", "_", -1) stat := statPrefix + hostname if 299 < event.GetStatusCode() && 1 == isPeer(event) { incrementValue = 1 } else { incrementValue = 0 } metric := metrics.NewCounterMetric(stat, incrementValue) return metric }
func (p *HttpStartStopProcessor) ProcessHttpStartStopResponseTime(event *events.HttpStartStop) *metrics.TimingMetric { statPrefix := "http.responsetimes." hostname := strings.Replace(strings.Split(event.GetUri(), "/")[0], ".", "_", -1) stat := statPrefix + hostname startTimestamp := event.GetStartTimestamp() stopTimestamp := event.GetStopTimestamp() durationNanos := stopTimestamp - startTimestamp durationMillis := durationNanos / 1000000 // NB: loss of precision here metric := metrics.NewTimingMetric(stat, durationMillis) return metric }
package processors_test import ( . "github.com/cloudcredo/graphite-nozzle/processors" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/cloudfoundry/noaa/events" ) var _ = Describe("HttpStartStopProcessor", func() { var ( processor *HttpStartStopProcessor event *events.Envelope httpStartStopEvent *events.HttpStartStop ) BeforeEach(func() { processor = NewHttpStartStopProcessor() startTimestamp := int64(1425881484152112140) stopTimestamp := int64(1425881484161498528) method := events.Method_GET uri := "api.10.244.0.34.xip.io/v2/info" statusCode := int32(200) peerType := events.PeerType_Client httpStartStopEvent = &events.HttpStartStop{ StartTimestamp: &startTimestamp, StopTimestamp: &stopTimestamp,