parent
6afa145694
commit
e3eea60c75
@ -0,0 +1,77 @@
|
||||
package testT
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"net/http"
|
||||
"sreExporter/collector"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
metricsPath string = "https://github.com/strive-after/demo-exporter"
|
||||
version string = "v1.0"
|
||||
listenAddress string
|
||||
help bool
|
||||
disable string //命令行传入的需要关闭的指标
|
||||
disables []string //处理命令行传入的根据,分割为一个切片做处理
|
||||
)
|
||||
|
||||
func init() {
|
||||
flag.StringVar(&listenAddress, "addr", ":9100", "addr")
|
||||
flag.BoolVar(&help, "h", false, "help")
|
||||
flag.StringVar(&disable, "disable", "", "关闭的指标收集器")
|
||||
}
|
||||
|
||||
// main函数作为总入口 提供web url /metrices以及访问/的时候提供一些基本介绍
|
||||
func main() {
|
||||
flag.Parse()
|
||||
if help {
|
||||
flag.Usage()
|
||||
return
|
||||
}
|
||||
disables = strings.Split(disable, ",")
|
||||
//手动开关
|
||||
//通过用户输入的我们做关闭
|
||||
for scraper, _ := range collector.Scrapers {
|
||||
for _, v := range disables {
|
||||
if v == scraper.Name() {
|
||||
collector.Scrapers[scraper] = false
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//访问/的时候返回一些基础提示
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte(`<html>
|
||||
<head><title>` + collector.Name() + `</title></head>
|
||||
<body>
|
||||
<h1><a style="text-decoration:none" href=''>` + collector.Name() + `</a></h1>
|
||||
<p><a href='` + metricsPath + `'>Metrics</a></p>
|
||||
<h2>Build</h2>
|
||||
<pre>` + version + `</pre>
|
||||
</body>
|
||||
</html>`))
|
||||
})
|
||||
//根据开关来判断指标的是否需要收集 这里只有代码里面的判断 用户手动开关还未做
|
||||
enabledScrapers := []collector.Scraper{}
|
||||
for scraper, enabled := range collector.Scrapers {
|
||||
if enabled {
|
||||
log.Info("Scraper enabled ", scraper.Name())
|
||||
enabledScrapers = append(enabledScrapers, scraper)
|
||||
}
|
||||
}
|
||||
|
||||
//注册自身采集器
|
||||
exporter := collector.New(collector.NewMetrics(), enabledScrapers)
|
||||
prometheus.MustRegister(exporter)
|
||||
|
||||
http.Handle("/metrics", promhttp.Handler())
|
||||
//监听端口
|
||||
if err := http.ListenAndServe(listenAddress, nil); err != nil {
|
||||
log.Printf("Error occur when start server %v", err)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue