diff --git a/main.go b/main.go index 739834c..5fc4881 100644 --- a/main.go +++ b/main.go @@ -14,17 +14,15 @@ package main import ( - "flag" - "fmt" "net" "net/http" - "os" "strconv" "github.com/howeyc/fsnotify" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/common/log" "github.com/prometheus/common/version" + "gopkg.in/alecthomas/kingpin.v2" "github.com/prometheus/statsd_exporter/pkg/mapper" ) @@ -33,29 +31,18 @@ func init() { prometheus.MustRegister(version.NewCollector("statsd_exporter")) } -var ( - listenAddress = flag.String("web.listen-address", ":9102", "The address on which to expose the web interface and generated Prometheus metrics.") - metricsEndpoint = flag.String("web.telemetry-path", "/metrics", "Path under which to expose metrics.") - statsdListenAddress = flag.String("statsd.listen-address", "", "The UDP address on which to receive statsd metric lines. DEPRECATED, use statsd.listen-udp instead.") - statsdListenUDP = flag.String("statsd.listen-udp", ":9125", "The UDP address on which to receive statsd metric lines. \"\" disables it.") - statsdListenTCP = flag.String("statsd.listen-tcp", ":9125", "The TCP address on which to receive statsd metric lines. \"\" disables it.") - mappingConfig = flag.String("statsd.mapping-config", "", "Metric mapping configuration file name.") - readBuffer = flag.Int("statsd.read-buffer", 0, "Size (in bytes) of the operating system's transmit read buffer associated with the UDP connection. Please make sure the kernel parameters net.core.rmem_max is set to a value greater than the value specified.") - showVersion = flag.Bool("version", false, "Print version information.") -) - -func serveHTTP() { - http.Handle(*metricsEndpoint, prometheus.Handler()) +func serveHTTP(listenAddress, metricsEndpoint string) { + http.Handle(metricsEndpoint, prometheus.Handler()) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte(` StatsD Exporter

StatsD Exporter

-

Metrics

+

Metrics

`)) }) - log.Fatal(http.ListenAndServe(*listenAddress, nil)) + log.Fatal(http.ListenAndServe(listenAddress, nil)) } func ipPortFromString(addr string) (*net.IPAddr, int) { @@ -132,17 +119,19 @@ func watchConfig(fileName string, mapper *mapper.MetricMapper) { } func main() { - flag.Parse() + var ( + listenAddress = kingpin.Flag("web.listen-address", "The address on which to expose the web interface and generated Prometheus metrics.").Default(":9102").String() + metricsEndpoint = kingpin.Flag("web.telemetry-path", "Path under which to expose metrics.").Default("/metrics").String() + statsdListenUDP = kingpin.Flag("statsd.listen-udp", "The UDP address on which to receive statsd metric lines. \"\" disables it.").Default(":9125").String() + statsdListenTCP = kingpin.Flag("statsd.listen-tcp", "The TCP address on which to receive statsd metric lines. \"\" disables it.").Default(":9125").String() + mappingConfig = kingpin.Flag("statsd.mapping-config", "Metric mapping configuration file name.").String() + readBuffer = kingpin.Flag("statsd.read-buffer", "Size (in bytes) of the operating system's transmit read buffer associated with the UDP connection. Please make sure the kernel parameters net.core.rmem_max is set to a value greater than the value specified.").Int() + ) - if *showVersion { - fmt.Fprintln(os.Stdout, version.Print("statsd_exporter")) - os.Exit(0) - } - - if *statsdListenAddress != "" { - log.Warnln("Warning: statsd.listen-address is DEPRECATED, please use statsd.listen-udp instead.") - *statsdListenUDP = *statsdListenAddress - } + log.AddFlags(kingpin.CommandLine) + kingpin.Version(version.Print("statsd_exporter")) + kingpin.HelpFlag.Short('h') + kingpin.Parse() if *statsdListenUDP == "" && *statsdListenTCP == "" { log.Fatalln("At least one of UDP/TCP listeners must be specified.") @@ -153,7 +142,7 @@ func main() { log.Infof("Accepting StatsD Traffic: UDP %v, TCP %v", *statsdListenUDP, *statsdListenTCP) log.Infoln("Accepting Prometheus Requests on", *listenAddress) - go serveHTTP() + go serveHTTP(*listenAddress, *metricsEndpoint) events := make(chan Events, 1024) defer close(events)