diff options
| author | Randall Meyer <[email protected]> | 2022-10-16 15:19:20 -0700 |
|---|---|---|
| committer | Randall Meyer <[email protected]> | 2023-02-20 10:28:21 -0800 |
| commit | e0305ad041549f5f7ff90baa9cae58cf88a9c346 (patch) | |
| tree | e305411f72ba643e7c71b15594199aa4a758b226 /networkQuality.go | |
| parent | 8a66c0ad439a6a5d2ae886b28ec841b3663df226 (diff) | |
Emit Prometheus stats if requested
Diffstat (limited to 'networkQuality.go')
| -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) + } + } } |
