This is an automated email from the ASF dual-hosted git repository.

membphis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git


The following commit(s) were added to refs/heads/master by this push:
     new 38d98a7  chore: prometheus metrics handler (#127)
38d98a7 is described below

commit 38d98a735970b854f4dfccc4c43e826a0197c39f
Author: Alex Zhang <zchao1...@gmail.com>
AuthorDate: Wed Dec 23 23:19:11 2020 +0800

    chore: prometheus metrics handler (#127)
---
 go.mod                        |  1 +
 go.sum                        |  6 ++++++
 pkg/api/router/router.go      | 10 ++++++++++
 pkg/api/router/router_test.go | 12 ++++++++++++
 4 files changed, 29 insertions(+)

diff --git a/go.mod b/go.mod
index 74c670e..261896d 100644
--- a/go.mod
+++ b/go.mod
@@ -9,6 +9,7 @@ require (
        github.com/gxthrj/apisix-ingress-types v0.1.3
        github.com/gxthrj/apisix-types v0.1.3
        github.com/gxthrj/seven v0.2.7
+       github.com/prometheus/client_golang v0.9.3
        github.com/spf13/cobra v1.1.1
        github.com/stretchr/testify v1.4.0
        go.uber.org/zap v1.13.0
diff --git a/go.sum b/go.sum
index 318b236..32e6a93 100644
--- a/go.sum
+++ b/go.sum
@@ -26,6 +26,7 @@ github.com/armon/circbuf 
v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC
 github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod 
h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
 github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod 
h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
 github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod 
h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
+github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0=
 github.com/beorn7/perks v1.0.0/go.mod 
h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
 github.com/bgentry/speakeasy v0.1.0/go.mod 
h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
 github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod 
h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
@@ -175,6 +176,7 @@ github.com/mattn/go-isatty v0.0.3/go.mod 
h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx
 github.com/mattn/go-isatty v0.0.8/go.mod 
h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 github.com/mattn/go-isatty v0.0.12 
h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
 github.com/mattn/go-isatty v0.0.12/go.mod 
h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/matttproud/golang_protobuf_extensions v1.0.1 
h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod 
h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 github.com/miekg/dns v1.0.14/go.mod 
h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
 github.com/mitchellh/cli v1.0.0/go.mod 
h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
@@ -210,12 +212,16 @@ github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/posener/complete v1.1.1/go.mod 
h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
 github.com/prometheus/client_golang v0.9.1/go.mod 
h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
+github.com/prometheus/client_golang v0.9.3 
h1:9iH4JKXLzFbOAdtqv/a+j8aewx2Y8lAjAydhbaScPF8=
 github.com/prometheus/client_golang v0.9.3/go.mod 
h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
 github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod 
h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
+github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 
h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE=
 github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod 
h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod 
h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
+github.com/prometheus/common v0.4.0 
h1:7etb9YClo3a6HjLzfl6rIQaU+FDfi0VSX39io3aQ+DM=
 github.com/prometheus/common v0.4.0/go.mod 
h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod 
h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
+github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 
h1:sofwID9zm4tzrgykg80hfFph1mryUeLRsUfoocVVmRY=
 github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod 
h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 github.com/prometheus/tsdb v0.7.1/go.mod 
h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
 github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod 
h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
diff --git a/pkg/api/router/router.go b/pkg/api/router/router.go
index 6f695a0..4a5b892 100644
--- a/pkg/api/router/router.go
+++ b/pkg/api/router/router.go
@@ -18,6 +18,7 @@ import (
        "net/http"
 
        "github.com/gin-gonic/gin"
+       "github.com/prometheus/client_golang/prometheus/promhttp"
 )
 
 type healthzResponse struct {
@@ -34,7 +35,16 @@ func healthz(c *gin.Context) {
        return
 }
 
+func mountMetrics(r *gin.Engine) {
+       r.GET("/metrics", metrics)
+}
+
+func metrics(c *gin.Context) {
+       promhttp.Handler().ServeHTTP(c.Writer, c.Request)
+}
+
 // Mount mounts all api routers.
 func Mount(r *gin.Engine) {
        mountHealthz(r)
+       mountMetrics(r)
 }
diff --git a/pkg/api/router/router_test.go b/pkg/api/router/router_test.go
index c5a2ee5..669842c 100644
--- a/pkg/api/router/router_test.go
+++ b/pkg/api/router/router_test.go
@@ -38,3 +38,15 @@ func TestHealthz(t *testing.T) {
 
        assert.Equal(t, resp, healthzResponse{Status: "ok"})
 }
+
+func TestMetrics(t *testing.T) {
+       w := httptest.NewRecorder()
+       c, r := gin.CreateTestContext(w)
+       req, err := http.NewRequest("GET", "/metrics", nil)
+       assert.Nil(t, err, nil)
+       c.Request = req
+       mountMetrics(r)
+       metrics(c)
+
+       assert.Equal(t, w.Code, http.StatusOK)
+}

Reply via email to