Add splash page, make metrics path configuriable

Also reformat using `go fmt` and document this in
the README.md

Normalized parameter names by looking at what node-
exporter offers.
This commit is contained in:
Martin Weinelt 2017-03-28 22:20:04 +02:00
parent 14593192c8
commit e52dbd900d
No known key found for this signature in database
GPG key ID: BD4AA0528F63F17E
2 changed files with 36 additions and 20 deletions

View file

@ -2,6 +2,12 @@
We are building a prometheus exporter for the fastd vpn daemon. We don't have a working version yet, stay tuned We are building a prometheus exporter for the fastd vpn daemon. We don't have a working version yet, stay tuned
## Formatting
We are using `go fmt` for formatting the code.
## Getting Started
For now run For now run
``` ```

View file

@ -18,8 +18,9 @@ import (
) )
var ( var (
address = flag.String("listen-address", ":9099", "The address to listen on for HTTP requests.") address = flag.String("web.listen-address", ":9099", "Address on which to expose metrics and web interface.")
instances = flag.String("instances", "", "The fastd instances to Update on, comma separated.") metricsPath = flag.String("web.telemetry-path", "/metrics", "Path under which to expose metrics.")
instances = flag.String("instances", "", "The fastd instances to Update on, comma separated.")
) )
// These are the structs necessary for unmarshalling the data that is being // These are the structs necessary for unmarshalling the data that is being
@ -65,23 +66,22 @@ type PrometheusExporter struct {
uptime *prometheus.Desc uptime *prometheus.Desc
rxPackets *prometheus.Desc rxPackets *prometheus.Desc
rxBytes *prometheus.Desc rxBytes *prometheus.Desc
rxReorderedPackets *prometheus.Desc rxReorderedPackets *prometheus.Desc
rxReorderedBytes *prometheus.Desc rxReorderedBytes *prometheus.Desc
txPackets *prometheus.Desc txPackets *prometheus.Desc
txBytes *prometheus.Desc txBytes *prometheus.Desc
txDroppedPackets *prometheus.Desc txDroppedPackets *prometheus.Desc
txDroppedBytes *prometheus.Desc txDroppedBytes *prometheus.Desc
txErrorPackets *prometheus.Desc txErrorPackets *prometheus.Desc
txErrorBytes *prometheus.Desc txErrorBytes *prometheus.Desc
} }
func c(parts ...string) string {
func c(parts... string) string {
parts = append([]string{"fastd"}, parts...) parts = append([]string{"fastd"}, parts...)
return strings.Join(parts, "_") return strings.Join(parts, "_")
} }
@ -92,17 +92,17 @@ func NewPrometheusExporter(instanceName string, sockName string) PrometheusExpor
return PrometheusExporter{ return PrometheusExporter{
SocketName: sockName, SocketName: sockName,
uptime: prometheus.NewDesc(c(instanceName ,"uptime"), "uptime of the prometheus exporter", nil, l), uptime: prometheus.NewDesc(c(instanceName, "uptime"), "uptime of the prometheus exporter", nil, l),
rxPackets: prometheus.NewDesc(c("rx_packets"), "rx packet count", nil, l), rxPackets: prometheus.NewDesc(c("rx_packets"), "rx packet count", nil, l),
rxBytes: prometheus.NewDesc(c("rx_bytes"), "rx byte count", nil, l), rxBytes: prometheus.NewDesc(c("rx_bytes"), "rx byte count", nil, l),
rxReorderedPackets: prometheus.NewDesc(c("rx_reordered_packets"), "rx reordered packets", nil, l), rxReorderedPackets: prometheus.NewDesc(c("rx_reordered_packets"), "rx reordered packets", nil, l),
rxReorderedBytes: prometheus.NewDesc(c("rx_reordered_bytes"), "rx reordered packets", nil, l), rxReorderedBytes: prometheus.NewDesc(c("rx_reordered_bytes"), "rx reordered packets", nil, l),
txPackets: prometheus.NewDesc(c("tx_packets"), "tx packet count", nil, l), txPackets: prometheus.NewDesc(c("tx_packets"), "tx packet count", nil, l),
txBytes: prometheus.NewDesc(c("tx_bytes"), "tx byte count", nil, l), txBytes: prometheus.NewDesc(c("tx_bytes"), "tx byte count", nil, l),
txDroppedPackets: prometheus.NewDesc(c("tx_dropped_packets"), "tx dropped packets", nil, l), txDroppedPackets: prometheus.NewDesc(c("tx_dropped_packets"), "tx dropped packets", nil, l),
txDroppedBytes: prometheus.NewDesc(c("tx_dropped_bytes"), "tx dropped packets", nil, l), txDroppedBytes: prometheus.NewDesc(c("tx_dropped_bytes"), "tx dropped packets", nil, l),
} }
} }
@ -192,6 +192,16 @@ func main() {
prometheus.MustRegister(exp) prometheus.MustRegister(exp)
// Expose the registered metrics via HTTP. // Expose the registered metrics via HTTP.
http.Handle("/metrics", promhttp.Handler()) http.Handle(*metricsPath, promhttp.Handler())
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(`<html>
<head><title>fastd exporter</title></head>
<body>
<h1>fastd exporter</h1>
<p><a href="` + *metricsPath + `">Metrics</a></p>
</body>
</html>`))
})
log.Fatal(http.ListenAndServe(*address, nil)) log.Fatal(http.ListenAndServe(*address, nil))
} }