WIP: Begin adding prometheus metrics exporting

This commit is contained in:
Ian Fijolek
2019-11-15 11:25:21 -08:00
parent 1f6193e486
commit 6c7c0a470f
3 changed files with 97 additions and 2 deletions
+18 -1
View File
@@ -3,7 +3,9 @@ package main
import (
"flag"
"fmt"
"github.com/prometheus/client_golang/prometheus/promhttp"
"log"
"net/http"
"time"
)
@@ -11,6 +13,9 @@ var (
// LogDebug will control whether debug messsages should be logged
LogDebug = false
// ExportMetrics will track whether or not we want to export metrics to prometheus
ExportMetrics = false
// version of minitor being run
version = "dev"
)
@@ -63,15 +68,21 @@ func checkMonitors(config *Config) error {
return nil
}
func serveMetrics() {
http.Handle("/metrics", promhttp.Handler())
_ = http.ListenAndServe(":8080", nil)
}
func main() {
// Get debug flag
flag.BoolVar(&LogDebug, "debug", false, "Enables debug logs (default: false)")
flag.BoolVar(&ExportMetrics, "metrics", false, "Enables prometheus metrics exporting (default: false)")
var showVersion = flag.Bool("version", false, "Display the version of minitor and exit")
flag.Parse()
// Print version if flag is provided
if *showVersion {
fmt.Println("Minitor version:", version)
log.Println("Minitor version:", version)
return
}
@@ -81,6 +92,12 @@ func main() {
log.Fatalf("Error loading config: %v", err)
}
// Serve metrics exporter, if specified
if ExportMetrics {
log.Println("INFO: Exporting metrics to Prometheus")
go serveMetrics()
}
// Start main loop
for {
err = checkMonitors(&config)