diff --git a/cmd/gf/go.sum b/cmd/gf/go.sum index 349b148ec49..e7419182421 100644 --- a/cmd/gf/go.sum +++ b/cmd/gf/go.sum @@ -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= diff --git a/example/go.mod b/example/go.mod index b4ee15026c0..7406a2ceeaf 100644 --- a/example/go.mod +++ b/example/go.mod @@ -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 @@ -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 @@ -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 diff --git a/example/metric/prometheus/prometheus.go b/example/metric/prometheus/prometheus.go new file mode 100644 index 00000000000..d76dc31ee24 --- /dev/null +++ b/example/metric/prometheus/prometheus.go @@ -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() +}