diff --git a/qcloud_exporter.go b/qcloud_exporter.go new file mode 100644 index 0000000..2a5c976 --- /dev/null +++ b/qcloud_exporter.go @@ -0,0 +1,75 @@ +package main + +import ( + "net/http" + + "github.com/tencentyun/tencentcloud-exporter/collector" + "github.com/tencentyun/tencentcloud-exporter/config" + "github.com/tencentyun/tencentcloud-exporter/instances" + "github.com/tencentyun/tencentcloud-exporter/monitor" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promhttp" + "github.com/prometheus/common/log" + "github.com/prometheus/common/version" + kingpin "gopkg.in/alecthomas/kingpin.v2" +) + +func main() { + + var ( + listenAddress = kingpin.Flag("web.listen-address", "Address on which to expose metrics and web interface."). + Default("localhost:8001").String() + + metricsPath = kingpin.Flag("web.telemetry-path", "Path under which to expose metrics."). + Default("/metrics").String() + + configFile = kingpin.Flag("config.file", "Tencent qcloud exporter configuration file."). + Default("qcloud.yml").String() + ) + log.AddFlags(kingpin.CommandLine) + kingpin.Version(version.Print("tencent_qcloud_exporter")) + kingpin.HelpFlag.Short('h') + kingpin.Parse() + + log.Infoln("Starting tencent_qcloud_exporter", version.Info()) + log.Infoln("Build context", version.BuildContext()) + + tencentConfig := config.NewConfig() + if err := tencentConfig.LoadFile(*configFile); err != nil { + log.Fatal(err.Error()) + } + + credentialConfig := (*tencentConfig).Credential + metricsConfig := (*tencentConfig).Metrics + + if err := monitor.InitClient(credentialConfig, (*tencentConfig).RateLimit); err != nil { + log.Fatal(err.Error()) + } + + if err := instances.InitClient(credentialConfig); err != nil { + log.Fatal(err.Error()) + } + + tencentCollector, err := collector.NewCollector(metricsConfig) + if err != nil { + log.Fatal(err.Error()) + } + + registry := prometheus.NewRegistry() + registry.MustRegister(tencentCollector) + + http.Handle(*metricsPath, promhttp.HandlerFor(registry, promhttp.HandlerOpts{})) + + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte(` + TencentCloud Exporter + +

TencentCloud Exporter

+

Metrics

+ + `)) + }) + + log.Fatal(http.ListenAndServe(*listenAddress, nil)) +} diff --git a/readme.md b/readme.md index 80a25be..6d71f0a 100644 --- a/readme.md +++ b/readme.md @@ -238,11 +238,9 @@ eg: 可用维度 - - [appid,bucket] eg: - ``` - tc_namespace: guauga/cos tc_metric_name: StdWriteRequests @@ -254,7 +252,6 @@ eg: delay_seconds: 300 range_seconds: 60 ``` - ### **专线(逻辑层-专线通道):dcx** (tc_labels风格) @@ -264,7 +261,6 @@ eg: {"DirectConnectTunnelId","DirectConnectTunnelName","VpcId","TencentAddress","CustomerAddress"} ``` eg: - ``` - tc_namespace: Tencent/dcx tc_metric_name: Delay @@ -275,12 +271,10 @@ eg: range_seconds: 600 ``` ### **专线(物理层-物理通道):dc** (tc_labels风格) - ``` {"DirectConnectId","DirectConnectName"} ``` eg: - ``` - tc_namespace: Tencent/dc tc_metric_name: Outbandwidth @@ -293,12 +287,10 @@ eg: ### **NAT 网关:nat** (tc_labels风格) - ``` {"InstanceId","InstanceName", "Zone"} ``` eg: - ``` - tc_namespace: test/nat tc_metric_name: Outbandwidth diff --git a/tencentcloud-exporter.exe b/tencentcloud-exporter.exe deleted file mode 100644 index 9898cc5..0000000 Binary files a/tencentcloud-exporter.exe and /dev/null differ