summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..c88e01b
--- /dev/null
+++ b/main.go
@@ -0,0 +1,58 @@
+// r5f.jp/cgit/prometheus-exporter-multiplexer.git
+
+package main
+
+import (
+ "fmt"
+ "log/slog"
+ "net/http"
+ logflag "github.com/prometheus/common/promslog/flag"
+ "gopkg.in/alecthomas/kingpin.v2"
+ "github.com/prometheus/common/promslog"
+ tkweb "github.com/prometheus/exporter-toolkit/web"
+ tkflag "github.com/prometheus/exporter-toolkit/web/kingpinflag"
+)
+
+
+var (
+ relabelMap = argRelabel(kingpin.Flag(
+ "relabel", "name=yaml.",
+ ).Short('r'))
+ srcList = argSrcList(kingpin.Arg(
+ "sources", "Metric source.",
+ ).Required())
+ logger *slog.Logger
+)
+
+func main() {
+ promslogConfig := &promslog.Config{}
+ logflag.AddFlags(kingpin.CommandLine, promslogConfig)
+ tkFlag := tkflag.AddFlags(kingpin.CommandLine, ":9199")
+ kingpin.CommandLine.HelpFlag.Short('h')
+ kingpin.Parse()
+
+ logger = promslog.New(promslogConfig)
+ parts, err := PartsFromArgs(*srcList, relabelMap)
+ if err != nil{
+ logger.Error(err.Error())
+ return
+ }
+
+ http.HandleFunc("/metrics", func(
+ w http.ResponseWriter, r *http.Request,
+ ){
+ out, err := parts.Get()
+ if err != nil{
+ logger.Error(err.Error())
+ w.WriteHeader(500)
+ }
+ w.Header()["Content-Type"] = []string{"application/openmetrics-text"}
+ fmt.Fprint(w, out)
+ })
+
+ err = tkweb.ListenAndServe(&http.Server{}, tkFlag, logger)
+ if err != nil{
+ logger.Error(err.Error())
+ return
+ }
+}