Skip to content

Commit

Permalink
add example for exporting prometheus metrics using ghttp.Server (#3266
Browse files Browse the repository at this point in the history
)
  • Loading branch information
gqcn authored Jan 16, 2024
1 parent 905913f commit 9407fda
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 2 deletions.
14 changes: 14 additions & 0 deletions cmd/gf/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,20 @@ github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiU
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/gogf/gf/contrib/drivers/clickhouse/v2 v2.6.1 h1:ECineDg2mz0fJgfh8Pyh7xwPC8MN/nHSyfsLD0qtrE0=
github.com/gogf/gf/contrib/drivers/clickhouse/v2 v2.6.1/go.mod h1:wlqfsjkIw3ZLEbcns5jK5urj1lt2JLweaqB+OlduRl0=
github.com/gogf/gf/contrib/drivers/mssql/v2 v2.6.1 h1:zXb/nRPY0li156jsNi/rxWGbYavAGtwTxMICR4LgWHY=
github.com/gogf/gf/contrib/drivers/mssql/v2 v2.6.1/go.mod h1:D656f3UfkAClrCRDdxzxTLQMRK0uUdEeYni1snrb1lk=
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.6.1 h1:5VW1vlaFNSHHhMliRkGTcDshMeA52Il8T+gffJJaVMc=
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.6.1/go.mod h1:jxCa1WV/W+q0F4ILebakUsqRrl7iL3qvP+Uci0eXAew=
github.com/gogf/gf/contrib/drivers/oracle/v2 v2.6.1 h1:QM0zsffHNdC9x6zqE3KOqYnKWEQBT/7ECpULgnlqjtk=
github.com/gogf/gf/contrib/drivers/oracle/v2 v2.6.1/go.mod h1:SPO91lVTmgjyac+oScIZ26YImXZbAt7Hg2oYf0yY8ZA=
github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.6.1 h1:IWH966gjaYxzhd5nWnXmDJUjtaN7yqjYoUoQELdvIRc=
github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.6.1/go.mod h1:enh1sJjlSTaG6J65gsHJYaFknNpo1AXkYQ7IwWDn/OM=
github.com/gogf/gf/contrib/drivers/sqlite/v2 v2.6.1 h1:UkstnZnbvjun3bq0W4hnChPmxlKyPB5ECkrXuHymjSA=
github.com/gogf/gf/contrib/drivers/sqlite/v2 v2.6.1/go.mod h1:KwBF4Cu+VNZJajzcyy/jAicGJ/4rcYJl7OYhFB36Kpk=
github.com/gogf/gf/v2 v2.6.1 h1:n/cfXM506WjhPa6Z1CEDuHNM1XZ7C8JzSDPn2AfuxgQ=
github.com/gogf/gf/v2 v2.6.1/go.mod h1:x2XONYcI4hRQ/4gMNbWHmZrNzSEIg20s2NULbzom5k0=
github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f h1:7xfXR/BhG3JDqO1s45n65Oyx9t4E/UqDOXep6jXdLCM=
github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f/go.mod h1:HnYoio6S7VaFJdryKcD/r9HgX+4QzYfr00XiXUo/xz0=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
Expand Down
4 changes: 2 additions & 2 deletions example/go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/gogf/gf/example

go 1.20
go 1.18

require (
github.com/gogf/gf/contrib/config/apollo/v2 v2.6.1
Expand All @@ -22,6 +22,7 @@ require (
github.com/hashicorp/go-cleanhttp v0.5.2
github.com/nacos-group/nacos-sdk-go v1.1.4
github.com/polarismesh/polaris-go v1.5.5
github.com/prometheus/client_golang v1.17.0
golang.org/x/time v0.3.0
google.golang.org/grpc v1.59.0
google.golang.org/protobuf v1.31.0
Expand Down Expand Up @@ -93,7 +94,6 @@ require (
github.com/pelletier/go-toml v1.9.3 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/polarismesh/specification v1.4.1 // indirect
github.com/prometheus/client_golang v1.17.0 // indirect
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect
github.com/prometheus/common v0.44.0 // indirect
github.com/prometheus/procfs v0.11.1 // indirect
Expand Down
51 changes: 51 additions & 0 deletions example/metric/prometheus/prometheus.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package main

import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
"github.com/prometheus/client_golang/prometheus/promhttp"

"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"github.com/gogf/gf/v2/util/grand"
)

// Demo metric type Counter
var metricCounter = promauto.NewCounter(
prometheus.CounterOpts{
Name: "demo_counter",
Help: "A demo counter.",
},
)

// Demo metric type Gauge.
var metricGauge = promauto.NewGauge(
prometheus.GaugeOpts{
Name: "demo_gauge",
Help: "A demo gauge.",
},
)

func main() {
// Create prometheus metric registry.
registry := prometheus.NewRegistry()
registry.MustRegister(
metricCounter,
metricGauge,
)

// Start metric http server.
s := g.Server()
s.SetPort(8000)
// Fake metric values.
// http://127.0.0.1:8000/
s.BindHandler("/", func(r *ghttp.Request) {
metricCounter.Add(1)
metricGauge.Set(float64(grand.N(1, 100)))
r.Response.Write("fake ok")
})
// Export metric values.
// You can view http://127.0.0.1:8000/metrics to see all metric values.
s.BindHandler("/metrics", ghttp.WrapH(promhttp.Handler()))
s.Run()
}

0 comments on commit 9407fda

Please sign in to comment.