项目作者: trafficstars

项目描述 :
Easily export application metrics (github.com/trafficstars/metrics) to prometheus
高级语言: Go
项目地址: git://github.com/trafficstars/statuspage.git
创建时间: 2019-01-03T12:43:13Z
项目社区:https://github.com/trafficstars/statuspage

开源协议:GNU General Public License v3.0

下载


Build Status
go report
GoDoc
GoDoc (for framework "echo")

Description

The package allows to easily export application metrics (github.com/trafficstars/metrics) to prometheus.

Examples

Generic case

  1. package main
  2. import (
  3. "fmt"
  4. "math/rand"
  5. "net/http"
  6. "github.com/trafficstars/metrics"
  7. "github.com/trafficstars/statuspage"
  8. )
  9. func hello(w http.ResponseWriter, r *http.Request) {
  10. answerInt := rand.Intn(10)
  11. // just a metric
  12. metrics.Count(`hello`, metrics.Tags{`answer_int`: answerInt}).Increment()
  13. fmt.Fprintf(w, "Hello world! The answerInt == %v\n", answerInt)
  14. }
  15. func sendMetrics(w http.ResponseWriter, r *http.Request) {
  16. statuspage.WriteMetricsPrometheus(w)
  17. }
  18. func main() {
  19. http.HandleFunc("/", hello)
  20. http.HandleFunc("/metrics.prometheus", sendMetrics) // here we export metrics for prometheus
  21. http.ListenAndServe(":8000", nil)
  22. }
  1. $ curl http://localhost:8000/
  2. Hello world! The answerInt == 1
  3. $ curl http://localhost:8000/
  4. Hello world! The answerInt == 7
  5. $ curl http://localhost:8000/
  6. Hello world! The answerInt == 7
  7. $ curl -s http://localhost:8000/metrics.prometheus | grep hello
  8. # TYPE metrics_hello counter
  9. metrics_hello{answer_int="1"} 1
  10. metrics_hello{answer_int="7"} 2

Framework “echo”

The same as above, but just use our handler:

  1. // import "github.com/trafficstars/statuspage/handler/echostatuspage"
  2. r := echo.New()
  3. r.GET("/status.prometheus", echostatuspage.StatusPrometheus)