diff options
| -rw-r--r-- | networkQuality.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/networkQuality.go b/networkQuality.go index 12aa724..5d9cea4 100644 --- a/networkQuality.go +++ b/networkQuality.go @@ -15,6 +15,7 @@ package main import ( + "bytes" "context" "flag" "fmt" @@ -94,6 +95,11 @@ var ( 100, "Time (in ms) between probes (foreign and self).", ) + prometheusStatsFilename = flag.String( + "prometheus-stats-filename", + "", + "If filename specified, prometheus stats will be written. If specified file exists, it will be overwritten.", + ) ) func main() { @@ -704,4 +710,24 @@ Trimmed Mean Foreign RTT: %f fmt.Printf("Done cooling down.\n") } + if len(*prometheusStatsFilename) > 0 { + var testStable int + if testRanToStability { + testStable = 1 + } + var buffer bytes.Buffer + buffer.WriteString(fmt.Sprintf("networkquality_test_stable %d\n", testStable)) + buffer.WriteString(fmt.Sprintf("networkquality_rpm_value %d\n", int64(p90Rpm))) + buffer.WriteString(fmt.Sprintf("networkquality_trimmed_rpm_value %d\n", int64(meanRpm))) //utilities.ToMbps(lastDownloadThroughputRate), + + buffer.WriteString(fmt.Sprintf("networkquality_download_bits_per_second %d\n", int64(lastDownloadThroughputRate))) + buffer.WriteString(fmt.Sprintf("networkquality_download_connections %d\n", int64(lastDownloadThroughputOpenConnectionCount))) + buffer.WriteString(fmt.Sprintf("networkquality_upload_bits_per_second %d\n", int64(lastUploadThroughputRate))) + buffer.WriteString(fmt.Sprintf("networkquality_upload_connections %d\n", lastUploadThroughputOpenConnectionCount)) + + if err := os.WriteFile(*prometheusStatsFilename, buffer.Bytes(), 0644); err != nil { + fmt.Printf("could not write %s: %s", *prometheusStatsFilename, err) + os.Exit(1) + } + } } |
