(w io.Writer, r metrics.Registry)
| 418 | } |
| 419 | |
| 420 | func printMetrics(w io.Writer, r metrics.Registry) { |
| 421 | recordSendRateMetric := r.Get("record-send-rate") |
| 422 | requestLatencyMetric := r.Get("request-latency-in-ms") |
| 423 | outgoingByteRateMetric := r.Get("outgoing-byte-rate") |
| 424 | requestsInFlightMetric := r.Get("requests-in-flight") |
| 425 | |
| 426 | if recordSendRateMetric == nil || requestLatencyMetric == nil || outgoingByteRateMetric == nil || |
| 427 | requestsInFlightMetric == nil { |
| 428 | return |
| 429 | } |
| 430 | recordSendRate := recordSendRateMetric.(metrics.Meter).Snapshot() |
| 431 | requestLatency := requestLatencyMetric.(metrics.Histogram).Snapshot() |
| 432 | requestLatencyPercentiles := requestLatency.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999}) |
| 433 | outgoingByteRate := outgoingByteRateMetric.(metrics.Meter).Snapshot() |
| 434 | requestsInFlight := requestsInFlightMetric.(metrics.Counter).Count() |
| 435 | fmt.Fprintf(w, "%d records sent, %.1f records/sec (%.2f MiB/sec ingress, %.2f MiB/sec egress), "+ |
| 436 | "%.1f ms avg latency, %.1f ms stddev, %.1f ms 50th, %.1f ms 75th, "+ |
| 437 | "%.1f ms 95th, %.1f ms 99th, %.1f ms 99.9th, %d total req. in flight\n", |
| 438 | recordSendRate.Count(), |
| 439 | recordSendRate.RateMean(), |
| 440 | recordSendRate.RateMean()*float64(*messageSize)/1024/1024, |
| 441 | outgoingByteRate.RateMean()/1024/1024, |
| 442 | requestLatency.Mean(), |
| 443 | requestLatency.StdDev(), |
| 444 | requestLatencyPercentiles[0], |
| 445 | requestLatencyPercentiles[1], |
| 446 | requestLatencyPercentiles[2], |
| 447 | requestLatencyPercentiles[3], |
| 448 | requestLatencyPercentiles[4], |
| 449 | requestsInFlight, |
| 450 | ) |
| 451 | } |
| 452 | |
| 453 | func printUsageErrorAndExit(message string) { |
| 454 | fmt.Fprintln(os.Stderr, "ERROR:", message) |
no test coverage detected