summaryrefslogtreecommitdiff
path: root/networkQuality.go
diff options
context:
space:
mode:
authorRandall Meyer <[email protected]>2022-10-16 15:19:20 -0700
committerRandall Meyer <[email protected]>2023-02-20 10:28:21 -0800
commite0305ad041549f5f7ff90baa9cae58cf88a9c346 (patch)
treee305411f72ba643e7c71b15594199aa4a758b226 /networkQuality.go
parent8a66c0ad439a6a5d2ae886b28ec841b3663df226 (diff)
Emit Prometheus stats if requested
Diffstat (limited to 'networkQuality.go')
-rw-r--r--networkQuality.go26
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)
+ }
+ }
}