mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-20 18:31:15 +00:00
bump go-grpc-prometheus since 1.2.0 actually exposes the metrics
v1.1.0 (which is what we currently use), does not expose metrics which makes it impossible to migrate.
This commit is contained in:
parent
f22b67dd8f
commit
b052c2cee9
2
go.mod
2
go.mod
@ -285,7 +285,7 @@ replace (
|
|||||||
github.com/gorilla/websocket => github.com/gorilla/websocket v1.4.0
|
github.com/gorilla/websocket => github.com/gorilla/websocket v1.4.0
|
||||||
github.com/gregjones/httpcache => github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7
|
github.com/gregjones/httpcache => github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware => github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79
|
github.com/grpc-ecosystem/go-grpc-middleware => github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus => github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611
|
github.com/grpc-ecosystem/go-grpc-prometheus => github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
|
||||||
github.com/grpc-ecosystem/grpc-gateway => github.com/grpc-ecosystem/grpc-gateway v1.3.0
|
github.com/grpc-ecosystem/grpc-gateway => github.com/grpc-ecosystem/grpc-gateway v1.3.0
|
||||||
github.com/hashicorp/go-syslog => github.com/hashicorp/go-syslog v1.0.0
|
github.com/hashicorp/go-syslog => github.com/hashicorp/go-syslog v1.0.0
|
||||||
github.com/hashicorp/golang-lru => github.com/hashicorp/golang-lru v0.5.0
|
github.com/hashicorp/golang-lru => github.com/hashicorp/golang-lru v0.5.0
|
||||||
|
4
go.sum
4
go.sum
@ -210,8 +210,8 @@ github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7 h1:6TSoaYExHpe
|
|||||||
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE=
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611 h1:f5vL2EW5pL274ztMNnizZAEa457nKyKPEaN/sm/kdBk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0 h1:HJtP6RRwj2EpPCD/mhAWzSvLL/dFTdPm1UrWwanoFos=
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0 h1:HJtP6RRwj2EpPCD/mhAWzSvLL/dFTdPm1UrWwanoFos=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
||||||
github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
|
github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
|
||||||
|
@ -21,6 +21,7 @@ github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4
|
|||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
|
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||||
|
github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs=
|
||||||
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||||
github.com/coreos/bbolt v1.3.1-coreos.6 h1:uTXKg9gY70s9jMAKdfljFQcuh4e/BXOM+V+d00KFj3A=
|
github.com/coreos/bbolt v1.3.1-coreos.6 h1:uTXKg9gY70s9jMAKdfljFQcuh4e/BXOM+V+d00KFj3A=
|
||||||
github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||||
@ -135,8 +136,8 @@ github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoA
|
|||||||
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE=
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611 h1:f5vL2EW5pL274ztMNnizZAEa457nKyKPEaN/sm/kdBk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0 h1:HJtP6RRwj2EpPCD/mhAWzSvLL/dFTdPm1UrWwanoFos=
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0 h1:HJtP6RRwj2EpPCD/mhAWzSvLL/dFTdPm1UrWwanoFos=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
||||||
github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo=
|
github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo=
|
||||||
|
@ -25,7 +25,7 @@ require (
|
|||||||
github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d
|
github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d
|
||||||
github.com/gorilla/websocket v1.4.0 // indirect
|
github.com/gorilla/websocket v1.4.0 // indirect
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 // indirect
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 // indirect
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0 // indirect
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0 // indirect
|
||||||
github.com/hashicorp/golang-lru v0.5.0
|
github.com/hashicorp/golang-lru v0.5.0
|
||||||
github.com/jonboulle/clockwork v0.1.0 // indirect
|
github.com/jonboulle/clockwork v0.1.0 // indirect
|
||||||
|
5
staging/src/k8s.io/apiserver/go.sum
generated
5
staging/src/k8s.io/apiserver/go.sum
generated
@ -14,6 +14,7 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV
|
|||||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||||
|
github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs=
|
||||||
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||||
github.com/coreos/bbolt v1.3.1-coreos.6 h1:uTXKg9gY70s9jMAKdfljFQcuh4e/BXOM+V+d00KFj3A=
|
github.com/coreos/bbolt v1.3.1-coreos.6 h1:uTXKg9gY70s9jMAKdfljFQcuh4e/BXOM+V+d00KFj3A=
|
||||||
github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||||
@ -89,8 +90,8 @@ github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoA
|
|||||||
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE=
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611 h1:f5vL2EW5pL274ztMNnizZAEa457nKyKPEaN/sm/kdBk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0 h1:HJtP6RRwj2EpPCD/mhAWzSvLL/dFTdPm1UrWwanoFos=
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0 h1:HJtP6RRwj2EpPCD/mhAWzSvLL/dFTdPm1UrWwanoFos=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
||||||
github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo=
|
github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo=
|
||||||
|
5
staging/src/k8s.io/kube-aggregator/go.sum
generated
5
staging/src/k8s.io/kube-aggregator/go.sum
generated
@ -15,6 +15,7 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko
|
|||||||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||||
|
github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs=
|
||||||
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||||
github.com/coreos/bbolt v1.3.1-coreos.6 h1:uTXKg9gY70s9jMAKdfljFQcuh4e/BXOM+V+d00KFj3A=
|
github.com/coreos/bbolt v1.3.1-coreos.6 h1:uTXKg9gY70s9jMAKdfljFQcuh4e/BXOM+V+d00KFj3A=
|
||||||
github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||||
@ -94,8 +95,8 @@ github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoA
|
|||||||
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE=
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611 h1:f5vL2EW5pL274ztMNnizZAEa457nKyKPEaN/sm/kdBk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0 h1:HJtP6RRwj2EpPCD/mhAWzSvLL/dFTdPm1UrWwanoFos=
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0 h1:HJtP6RRwj2EpPCD/mhAWzSvLL/dFTdPm1UrWwanoFos=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
||||||
github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo=
|
github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo=
|
||||||
|
2
staging/src/k8s.io/legacy-cloud-providers/go.sum
generated
2
staging/src/k8s.io/legacy-cloud-providers/go.sum
generated
@ -76,7 +76,7 @@ github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEo
|
|||||||
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||||
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
||||||
github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo=
|
github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo=
|
||||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
|
5
staging/src/k8s.io/sample-apiserver/go.sum
generated
5
staging/src/k8s.io/sample-apiserver/go.sum
generated
@ -15,6 +15,7 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko
|
|||||||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||||
|
github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs=
|
||||||
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||||
github.com/coreos/bbolt v1.3.1-coreos.6 h1:uTXKg9gY70s9jMAKdfljFQcuh4e/BXOM+V+d00KFj3A=
|
github.com/coreos/bbolt v1.3.1-coreos.6 h1:uTXKg9gY70s9jMAKdfljFQcuh4e/BXOM+V+d00KFj3A=
|
||||||
github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||||
@ -92,8 +93,8 @@ github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoA
|
|||||||
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE=
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611 h1:f5vL2EW5pL274ztMNnizZAEa457nKyKPEaN/sm/kdBk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0 h1:HJtP6RRwj2EpPCD/mhAWzSvLL/dFTdPm1UrWwanoFos=
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0 h1:HJtP6RRwj2EpPCD/mhAWzSvLL/dFTdPm1UrWwanoFos=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
||||||
github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo=
|
github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo=
|
||||||
|
3
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/.gitignore
generated
vendored
3
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/.gitignore
generated
vendored
@ -1,3 +1,6 @@
|
|||||||
|
#vendor
|
||||||
|
vendor/
|
||||||
|
|
||||||
# Created by .ignore support plugin (hsz.mobi)
|
# Created by .ignore support plugin (hsz.mobi)
|
||||||
coverage.txt
|
coverage.txt
|
||||||
### Go template
|
### Go template
|
||||||
|
11
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/.travis.yml
generated
vendored
11
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/.travis.yml
generated
vendored
@ -1,18 +1,25 @@
|
|||||||
sudo: false
|
sudo: false
|
||||||
language: go
|
language: go
|
||||||
|
# * github.com/grpc/grpc-go still supports go1.6
|
||||||
|
# - When we drop support for go1.6 we can remove golang.org/x/net/context
|
||||||
|
# below as it is part of the Go std library since go1.7
|
||||||
|
# * github.com/prometheus/client_golang already requires at least go1.7 since
|
||||||
|
# September 2017
|
||||||
go:
|
go:
|
||||||
- 1.6.x
|
- 1.6.x
|
||||||
- 1.7.x
|
- 1.7.x
|
||||||
- 1.8.x
|
- 1.8.x
|
||||||
|
- 1.9.x
|
||||||
|
- 1.10.x
|
||||||
|
- master
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- go get github.com/prometheus/client_golang/prometheus
|
- go get github.com/prometheus/client_golang/prometheus
|
||||||
- go get google.golang.org/grpc
|
- go get google.golang.org/grpc
|
||||||
- go get golang.org/x/net/context
|
- go get golang.org/x/net/context
|
||||||
- go get github.com/stretchr/testify
|
- go get github.com/stretchr/testify
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- ./test_all.sh
|
- make test
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- bash <(curl -s https://codecov.io/bash)
|
- bash <(curl -s https://codecov.io/bash)
|
||||||
|
4
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/BUILD
generated
vendored
4
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/BUILD
generated
vendored
@ -4,8 +4,11 @@ go_library(
|
|||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = [
|
||||||
"client.go",
|
"client.go",
|
||||||
|
"client_metrics.go",
|
||||||
"client_reporter.go",
|
"client_reporter.go",
|
||||||
|
"metric_options.go",
|
||||||
"server.go",
|
"server.go",
|
||||||
|
"server_metrics.go",
|
||||||
"server_reporter.go",
|
"server_reporter.go",
|
||||||
"util.go",
|
"util.go",
|
||||||
],
|
],
|
||||||
@ -17,6 +20,7 @@ go_library(
|
|||||||
"//vendor/golang.org/x/net/context:go_default_library",
|
"//vendor/golang.org/x/net/context:go_default_library",
|
||||||
"//vendor/google.golang.org/grpc:go_default_library",
|
"//vendor/google.golang.org/grpc:go_default_library",
|
||||||
"//vendor/google.golang.org/grpc/codes:go_default_library",
|
"//vendor/google.golang.org/grpc/codes:go_default_library",
|
||||||
|
"//vendor/google.golang.org/grpc/status:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
24
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/CHANGELOG.md
generated
vendored
Normal file
24
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Changelog
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||||
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [1.2.0](https://github.com/grpc-ecosystem/go-grpc-prometheus/releases/tag/v1.2.0) - 2018-06-04
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* Provide metrics object as `prometheus.Collector`, for conventional metric registration.
|
||||||
|
* Support non-default/global Prometheus registry.
|
||||||
|
* Allow configuring counters with `prometheus.CounterOpts`.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
* Remove usage of deprecated `grpc.Code()`.
|
||||||
|
* Remove usage of deprecated `grpc.Errorf` and replace with `status.Errorf`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
This changelog was started with version `v1.2.0`, for earlier versions refer to the respective [GitHub releases](https://github.com/grpc-ecosystem/go-grpc-prometheus/releases).
|
18
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/README.md
generated
vendored
18
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/README.md
generated
vendored
@ -38,7 +38,7 @@ import "github.com/grpc-ecosystem/go-grpc-prometheus"
|
|||||||
// After all your registrations, make sure all of the Prometheus metrics are initialized.
|
// After all your registrations, make sure all of the Prometheus metrics are initialized.
|
||||||
grpc_prometheus.Register(myServer)
|
grpc_prometheus.Register(myServer)
|
||||||
// Register Prometheus metrics handler.
|
// Register Prometheus metrics handler.
|
||||||
http.Handle("/metrics", prometheus.Handler())
|
http.Handle("/metrics", promhttp.Handler())
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -49,8 +49,8 @@ import "github.com/grpc-ecosystem/go-grpc-prometheus"
|
|||||||
...
|
...
|
||||||
clientConn, err = grpc.Dial(
|
clientConn, err = grpc.Dial(
|
||||||
address,
|
address,
|
||||||
grpc.WithUnaryInterceptor(UnaryClientInterceptor),
|
grpc.WithUnaryInterceptor(grpc_prometheus.UnaryClientInterceptor),
|
||||||
grpc.WithStreamInterceptor(StreamClientInterceptor)
|
grpc.WithStreamInterceptor(grpc_prometheus.StreamClientInterceptor)
|
||||||
)
|
)
|
||||||
client = pb_testproto.NewTestServiceClient(clientConn)
|
client = pb_testproto.NewTestServiceClient(clientConn)
|
||||||
resp, err := client.PingEmpty(s.ctx, &myservice.Request{Msg: "hello"})
|
resp, err := client.PingEmpty(s.ctx, &myservice.Request{Msg: "hello"})
|
||||||
@ -118,7 +118,7 @@ each of the 20 messages sent back, a counter will be incremented:
|
|||||||
grpc_server_msg_sent_total{grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream"} 20
|
grpc_server_msg_sent_total{grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream"} 20
|
||||||
```
|
```
|
||||||
|
|
||||||
After the call completes, it's status (`OK` or other [gRPC status code](https://github.com/grpc/grpc-go/blob/master/codes/codes.go))
|
After the call completes, its status (`OK` or other [gRPC status code](https://github.com/grpc/grpc-go/blob/master/codes/codes.go))
|
||||||
and the relevant call labels increment the `grpc_server_handled_total` counter.
|
and the relevant call labels increment the `grpc_server_handled_total` counter.
|
||||||
|
|
||||||
```jsoniq
|
```jsoniq
|
||||||
@ -128,8 +128,8 @@ grpc_server_handled_total{grpc_code="OK",grpc_method="PingList",grpc_service="mw
|
|||||||
## Histograms
|
## Histograms
|
||||||
|
|
||||||
[Prometheus histograms](https://prometheus.io/docs/concepts/metric_types/#histogram) are a great way
|
[Prometheus histograms](https://prometheus.io/docs/concepts/metric_types/#histogram) are a great way
|
||||||
to measure latency distributions of your RPCs. However since it is bad practice to have metrics
|
to measure latency distributions of your RPCs. However, since it is bad practice to have metrics
|
||||||
of [high cardinality](https://prometheus.io/docs/practices/instrumentation/#do-not-overuse-labels))
|
of [high cardinality](https://prometheus.io/docs/practices/instrumentation/#do-not-overuse-labels)
|
||||||
the latency monitoring metrics are disabled by default. To enable them please call the following
|
the latency monitoring metrics are disabled by default. To enable them please call the following
|
||||||
in your server initialization code:
|
in your server initialization code:
|
||||||
|
|
||||||
@ -137,8 +137,8 @@ in your server initialization code:
|
|||||||
grpc_prometheus.EnableHandlingTimeHistogram()
|
grpc_prometheus.EnableHandlingTimeHistogram()
|
||||||
```
|
```
|
||||||
|
|
||||||
After the call completes, it's handling time will be recorded in a [Prometheus histogram](https://prometheus.io/docs/concepts/metric_types/#histogram)
|
After the call completes, its handling time will be recorded in a [Prometheus histogram](https://prometheus.io/docs/concepts/metric_types/#histogram)
|
||||||
variable `grpc_server_handling_seconds`. It contains three sub-metrics:
|
variable `grpc_server_handling_seconds`. The histogram variable contains three sub-metrics:
|
||||||
|
|
||||||
* `grpc_server_handling_seconds_count` - the count of all completed RPCs by status and method
|
* `grpc_server_handling_seconds_count` - the count of all completed RPCs by status and method
|
||||||
* `grpc_server_handling_seconds_sum` - cumulative time of RPCs by status and method, useful for
|
* `grpc_server_handling_seconds_sum` - cumulative time of RPCs by status and method, useful for
|
||||||
@ -168,7 +168,7 @@ grpc_server_handling_seconds_count{grpc_code="OK",grpc_method="PingList",grpc_se
|
|||||||
|
|
||||||
## Useful query examples
|
## Useful query examples
|
||||||
|
|
||||||
Prometheus philosophy is to provide the most detailed metrics possible to the monitoring system, and
|
Prometheus philosophy is to provide raw metrics to the monitoring system, and
|
||||||
let the aggregations be handled there. The verbosity of above metrics make it possible to have that
|
let the aggregations be handled there. The verbosity of above metrics make it possible to have that
|
||||||
flexibility. Here's a couple of useful monitoring queries:
|
flexibility. Here's a couple of useful monitoring queries:
|
||||||
|
|
||||||
|
83
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client.go
generated
vendored
83
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client.go
generated
vendored
@ -6,67 +6,34 @@
|
|||||||
package grpc_prometheus
|
package grpc_prometheus
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
prom "github.com/prometheus/client_golang/prometheus"
|
||||||
|
|
||||||
"golang.org/x/net/context"
|
|
||||||
"google.golang.org/grpc"
|
|
||||||
"google.golang.org/grpc/codes"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// DefaultClientMetrics is the default instance of ClientMetrics. It is
|
||||||
|
// intended to be used in conjunction the default Prometheus metrics
|
||||||
|
// registry.
|
||||||
|
DefaultClientMetrics = NewClientMetrics()
|
||||||
|
|
||||||
// UnaryClientInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Unary RPCs.
|
// UnaryClientInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Unary RPCs.
|
||||||
func UnaryClientInterceptor(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
|
UnaryClientInterceptor = DefaultClientMetrics.UnaryClientInterceptor()
|
||||||
monitor := newClientReporter(Unary, method)
|
|
||||||
monitor.SentMessage()
|
// StreamClientInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Streaming RPCs.
|
||||||
err := invoker(ctx, method, req, reply, cc, opts...)
|
StreamClientInterceptor = DefaultClientMetrics.StreamClientInterceptor()
|
||||||
if err != nil {
|
)
|
||||||
monitor.ReceivedMessage()
|
|
||||||
}
|
func init() {
|
||||||
monitor.Handled(grpc.Code(err))
|
prom.MustRegister(DefaultClientMetrics.clientStartedCounter)
|
||||||
return err
|
prom.MustRegister(DefaultClientMetrics.clientHandledCounter)
|
||||||
|
prom.MustRegister(DefaultClientMetrics.clientStreamMsgReceived)
|
||||||
|
prom.MustRegister(DefaultClientMetrics.clientStreamMsgSent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// StreamServerInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Streaming RPCs.
|
// EnableClientHandlingTimeHistogram turns on recording of handling time of
|
||||||
func StreamClientInterceptor(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) {
|
// RPCs. Histogram metrics can be very expensive for Prometheus to retain and
|
||||||
monitor := newClientReporter(clientStreamType(desc), method)
|
// query. This function acts on the DefaultClientMetrics variable and the
|
||||||
clientStream, err := streamer(ctx, desc, cc, method, opts...)
|
// default Prometheus metrics registry.
|
||||||
if err != nil {
|
func EnableClientHandlingTimeHistogram(opts ...HistogramOption) {
|
||||||
monitor.Handled(grpc.Code(err))
|
DefaultClientMetrics.EnableClientHandlingTimeHistogram(opts...)
|
||||||
return nil, err
|
prom.Register(DefaultClientMetrics.clientHandledHistogram)
|
||||||
}
|
|
||||||
return &monitoredClientStream{clientStream, monitor}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func clientStreamType(desc *grpc.StreamDesc) grpcType {
|
|
||||||
if desc.ClientStreams && !desc.ServerStreams {
|
|
||||||
return ClientStream
|
|
||||||
} else if !desc.ClientStreams && desc.ServerStreams {
|
|
||||||
return ServerStream
|
|
||||||
}
|
|
||||||
return BidiStream
|
|
||||||
}
|
|
||||||
|
|
||||||
// monitoredClientStream wraps grpc.ClientStream allowing each Sent/Recv of message to increment counters.
|
|
||||||
type monitoredClientStream struct {
|
|
||||||
grpc.ClientStream
|
|
||||||
monitor *clientReporter
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *monitoredClientStream) SendMsg(m interface{}) error {
|
|
||||||
err := s.ClientStream.SendMsg(m)
|
|
||||||
if err == nil {
|
|
||||||
s.monitor.SentMessage()
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *monitoredClientStream) RecvMsg(m interface{}) error {
|
|
||||||
err := s.ClientStream.RecvMsg(m)
|
|
||||||
if err == nil {
|
|
||||||
s.monitor.ReceivedMessage()
|
|
||||||
} else if err == io.EOF {
|
|
||||||
s.monitor.Handled(codes.OK)
|
|
||||||
} else {
|
|
||||||
s.monitor.Handled(grpc.Code(err))
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
170
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client_metrics.go
generated
vendored
Normal file
170
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client_metrics.go
generated
vendored
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
package grpc_prometheus
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
|
||||||
|
prom "github.com/prometheus/client_golang/prometheus"
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/grpc/codes"
|
||||||
|
"google.golang.org/grpc/status"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ClientMetrics represents a collection of metrics to be registered on a
|
||||||
|
// Prometheus metrics registry for a gRPC client.
|
||||||
|
type ClientMetrics struct {
|
||||||
|
clientStartedCounter *prom.CounterVec
|
||||||
|
clientHandledCounter *prom.CounterVec
|
||||||
|
clientStreamMsgReceived *prom.CounterVec
|
||||||
|
clientStreamMsgSent *prom.CounterVec
|
||||||
|
clientHandledHistogramEnabled bool
|
||||||
|
clientHandledHistogramOpts prom.HistogramOpts
|
||||||
|
clientHandledHistogram *prom.HistogramVec
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewClientMetrics returns a ClientMetrics object. Use a new instance of
|
||||||
|
// ClientMetrics when not using the default Prometheus metrics registry, for
|
||||||
|
// example when wanting to control which metrics are added to a registry as
|
||||||
|
// opposed to automatically adding metrics via init functions.
|
||||||
|
func NewClientMetrics(counterOpts ...CounterOption) *ClientMetrics {
|
||||||
|
opts := counterOptions(counterOpts)
|
||||||
|
return &ClientMetrics{
|
||||||
|
clientStartedCounter: prom.NewCounterVec(
|
||||||
|
opts.apply(prom.CounterOpts{
|
||||||
|
Name: "grpc_client_started_total",
|
||||||
|
Help: "Total number of RPCs started on the client.",
|
||||||
|
}), []string{"grpc_type", "grpc_service", "grpc_method"}),
|
||||||
|
|
||||||
|
clientHandledCounter: prom.NewCounterVec(
|
||||||
|
opts.apply(prom.CounterOpts{
|
||||||
|
Name: "grpc_client_handled_total",
|
||||||
|
Help: "Total number of RPCs completed by the client, regardless of success or failure.",
|
||||||
|
}), []string{"grpc_type", "grpc_service", "grpc_method", "grpc_code"}),
|
||||||
|
|
||||||
|
clientStreamMsgReceived: prom.NewCounterVec(
|
||||||
|
opts.apply(prom.CounterOpts{
|
||||||
|
Name: "grpc_client_msg_received_total",
|
||||||
|
Help: "Total number of RPC stream messages received by the client.",
|
||||||
|
}), []string{"grpc_type", "grpc_service", "grpc_method"}),
|
||||||
|
|
||||||
|
clientStreamMsgSent: prom.NewCounterVec(
|
||||||
|
opts.apply(prom.CounterOpts{
|
||||||
|
Name: "grpc_client_msg_sent_total",
|
||||||
|
Help: "Total number of gRPC stream messages sent by the client.",
|
||||||
|
}), []string{"grpc_type", "grpc_service", "grpc_method"}),
|
||||||
|
|
||||||
|
clientHandledHistogramEnabled: false,
|
||||||
|
clientHandledHistogramOpts: prom.HistogramOpts{
|
||||||
|
Name: "grpc_client_handling_seconds",
|
||||||
|
Help: "Histogram of response latency (seconds) of the gRPC until it is finished by the application.",
|
||||||
|
Buckets: prom.DefBuckets,
|
||||||
|
},
|
||||||
|
clientHandledHistogram: nil,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Describe sends the super-set of all possible descriptors of metrics
|
||||||
|
// collected by this Collector to the provided channel and returns once
|
||||||
|
// the last descriptor has been sent.
|
||||||
|
func (m *ClientMetrics) Describe(ch chan<- *prom.Desc) {
|
||||||
|
m.clientStartedCounter.Describe(ch)
|
||||||
|
m.clientHandledCounter.Describe(ch)
|
||||||
|
m.clientStreamMsgReceived.Describe(ch)
|
||||||
|
m.clientStreamMsgSent.Describe(ch)
|
||||||
|
if m.clientHandledHistogramEnabled {
|
||||||
|
m.clientHandledHistogram.Describe(ch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Collect is called by the Prometheus registry when collecting
|
||||||
|
// metrics. The implementation sends each collected metric via the
|
||||||
|
// provided channel and returns once the last metric has been sent.
|
||||||
|
func (m *ClientMetrics) Collect(ch chan<- prom.Metric) {
|
||||||
|
m.clientStartedCounter.Collect(ch)
|
||||||
|
m.clientHandledCounter.Collect(ch)
|
||||||
|
m.clientStreamMsgReceived.Collect(ch)
|
||||||
|
m.clientStreamMsgSent.Collect(ch)
|
||||||
|
if m.clientHandledHistogramEnabled {
|
||||||
|
m.clientHandledHistogram.Collect(ch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableClientHandlingTimeHistogram turns on recording of handling time of RPCs.
|
||||||
|
// Histogram metrics can be very expensive for Prometheus to retain and query.
|
||||||
|
func (m *ClientMetrics) EnableClientHandlingTimeHistogram(opts ...HistogramOption) {
|
||||||
|
for _, o := range opts {
|
||||||
|
o(&m.clientHandledHistogramOpts)
|
||||||
|
}
|
||||||
|
if !m.clientHandledHistogramEnabled {
|
||||||
|
m.clientHandledHistogram = prom.NewHistogramVec(
|
||||||
|
m.clientHandledHistogramOpts,
|
||||||
|
[]string{"grpc_type", "grpc_service", "grpc_method"},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
m.clientHandledHistogramEnabled = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnaryClientInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Unary RPCs.
|
||||||
|
func (m *ClientMetrics) UnaryClientInterceptor() func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
|
||||||
|
return func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
|
||||||
|
monitor := newClientReporter(m, Unary, method)
|
||||||
|
monitor.SentMessage()
|
||||||
|
err := invoker(ctx, method, req, reply, cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
monitor.ReceivedMessage()
|
||||||
|
}
|
||||||
|
st, _ := status.FromError(err)
|
||||||
|
monitor.Handled(st.Code())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// StreamClientInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Streaming RPCs.
|
||||||
|
func (m *ClientMetrics) StreamClientInterceptor() func(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) {
|
||||||
|
return func(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) {
|
||||||
|
monitor := newClientReporter(m, clientStreamType(desc), method)
|
||||||
|
clientStream, err := streamer(ctx, desc, cc, method, opts...)
|
||||||
|
if err != nil {
|
||||||
|
st, _ := status.FromError(err)
|
||||||
|
monitor.Handled(st.Code())
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &monitoredClientStream{clientStream, monitor}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func clientStreamType(desc *grpc.StreamDesc) grpcType {
|
||||||
|
if desc.ClientStreams && !desc.ServerStreams {
|
||||||
|
return ClientStream
|
||||||
|
} else if !desc.ClientStreams && desc.ServerStreams {
|
||||||
|
return ServerStream
|
||||||
|
}
|
||||||
|
return BidiStream
|
||||||
|
}
|
||||||
|
|
||||||
|
// monitoredClientStream wraps grpc.ClientStream allowing each Sent/Recv of message to increment counters.
|
||||||
|
type monitoredClientStream struct {
|
||||||
|
grpc.ClientStream
|
||||||
|
monitor *clientReporter
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *monitoredClientStream) SendMsg(m interface{}) error {
|
||||||
|
err := s.ClientStream.SendMsg(m)
|
||||||
|
if err == nil {
|
||||||
|
s.monitor.SentMessage()
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *monitoredClientStream) RecvMsg(m interface{}) error {
|
||||||
|
err := s.ClientStream.RecvMsg(m)
|
||||||
|
if err == nil {
|
||||||
|
s.monitor.ReceivedMessage()
|
||||||
|
} else if err == io.EOF {
|
||||||
|
s.monitor.Handled(codes.OK)
|
||||||
|
} else {
|
||||||
|
st, _ := status.FromError(err)
|
||||||
|
s.monitor.Handled(st.Code())
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
91
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client_reporter.go
generated
vendored
91
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client_reporter.go
generated
vendored
@ -7,105 +7,40 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
|
|
||||||
prom "github.com/prometheus/client_golang/prometheus"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
|
||||||
clientStartedCounter = prom.NewCounterVec(
|
|
||||||
prom.CounterOpts{
|
|
||||||
Namespace: "grpc",
|
|
||||||
Subsystem: "client",
|
|
||||||
Name: "started_total",
|
|
||||||
Help: "Total number of RPCs started on the client.",
|
|
||||||
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
|
||||||
|
|
||||||
clientHandledCounter = prom.NewCounterVec(
|
|
||||||
prom.CounterOpts{
|
|
||||||
Namespace: "grpc",
|
|
||||||
Subsystem: "client",
|
|
||||||
Name: "handled_total",
|
|
||||||
Help: "Total number of RPCs completed by the client, regardless of success or failure.",
|
|
||||||
}, []string{"grpc_type", "grpc_service", "grpc_method", "grpc_code"})
|
|
||||||
|
|
||||||
clientStreamMsgReceived = prom.NewCounterVec(
|
|
||||||
prom.CounterOpts{
|
|
||||||
Namespace: "grpc",
|
|
||||||
Subsystem: "client",
|
|
||||||
Name: "msg_received_total",
|
|
||||||
Help: "Total number of RPC stream messages received by the client.",
|
|
||||||
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
|
||||||
|
|
||||||
clientStreamMsgSent = prom.NewCounterVec(
|
|
||||||
prom.CounterOpts{
|
|
||||||
Namespace: "grpc",
|
|
||||||
Subsystem: "client",
|
|
||||||
Name: "msg_sent_total",
|
|
||||||
Help: "Total number of gRPC stream messages sent by the client.",
|
|
||||||
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
|
||||||
|
|
||||||
clientHandledHistogramEnabled = false
|
|
||||||
clientHandledHistogramOpts = prom.HistogramOpts{
|
|
||||||
Namespace: "grpc",
|
|
||||||
Subsystem: "client",
|
|
||||||
Name: "handling_seconds",
|
|
||||||
Help: "Histogram of response latency (seconds) of the gRPC until it is finished by the application.",
|
|
||||||
Buckets: prom.DefBuckets,
|
|
||||||
}
|
|
||||||
clientHandledHistogram *prom.HistogramVec
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
prom.MustRegister(clientStartedCounter)
|
|
||||||
prom.MustRegister(clientHandledCounter)
|
|
||||||
prom.MustRegister(clientStreamMsgReceived)
|
|
||||||
prom.MustRegister(clientStreamMsgSent)
|
|
||||||
}
|
|
||||||
|
|
||||||
// EnableClientHandlingTimeHistogram turns on recording of handling time of RPCs.
|
|
||||||
// Histogram metrics can be very expensive for Prometheus to retain and query.
|
|
||||||
func EnableClientHandlingTimeHistogram(opts ...HistogramOption) {
|
|
||||||
for _, o := range opts {
|
|
||||||
o(&clientHandledHistogramOpts)
|
|
||||||
}
|
|
||||||
if !clientHandledHistogramEnabled {
|
|
||||||
clientHandledHistogram = prom.NewHistogramVec(
|
|
||||||
clientHandledHistogramOpts,
|
|
||||||
[]string{"grpc_type", "grpc_service", "grpc_method"},
|
|
||||||
)
|
|
||||||
prom.Register(clientHandledHistogram)
|
|
||||||
}
|
|
||||||
clientHandledHistogramEnabled = true
|
|
||||||
}
|
|
||||||
|
|
||||||
type clientReporter struct {
|
type clientReporter struct {
|
||||||
|
metrics *ClientMetrics
|
||||||
rpcType grpcType
|
rpcType grpcType
|
||||||
serviceName string
|
serviceName string
|
||||||
methodName string
|
methodName string
|
||||||
startTime time.Time
|
startTime time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
func newClientReporter(rpcType grpcType, fullMethod string) *clientReporter {
|
func newClientReporter(m *ClientMetrics, rpcType grpcType, fullMethod string) *clientReporter {
|
||||||
r := &clientReporter{rpcType: rpcType}
|
r := &clientReporter{
|
||||||
if clientHandledHistogramEnabled {
|
metrics: m,
|
||||||
|
rpcType: rpcType,
|
||||||
|
}
|
||||||
|
if r.metrics.clientHandledHistogramEnabled {
|
||||||
r.startTime = time.Now()
|
r.startTime = time.Now()
|
||||||
}
|
}
|
||||||
r.serviceName, r.methodName = splitMethodName(fullMethod)
|
r.serviceName, r.methodName = splitMethodName(fullMethod)
|
||||||
clientStartedCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
r.metrics.clientStartedCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *clientReporter) ReceivedMessage() {
|
func (r *clientReporter) ReceivedMessage() {
|
||||||
clientStreamMsgReceived.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
r.metrics.clientStreamMsgReceived.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *clientReporter) SentMessage() {
|
func (r *clientReporter) SentMessage() {
|
||||||
clientStreamMsgSent.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
r.metrics.clientStreamMsgSent.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *clientReporter) Handled(code codes.Code) {
|
func (r *clientReporter) Handled(code codes.Code) {
|
||||||
clientHandledCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName, code.String()).Inc()
|
r.metrics.clientHandledCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName, code.String()).Inc()
|
||||||
if clientHandledHistogramEnabled {
|
if r.metrics.clientHandledHistogramEnabled {
|
||||||
clientHandledHistogram.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Observe(time.Since(r.startTime).Seconds())
|
r.metrics.clientHandledHistogram.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Observe(time.Since(r.startTime).Seconds())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
16
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/makefile
generated
vendored
Normal file
16
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/makefile
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
SHELL="/bin/bash"
|
||||||
|
|
||||||
|
GOFILES_NOVENDOR = $(shell go list ./... | grep -v /vendor/)
|
||||||
|
|
||||||
|
all: vet fmt test
|
||||||
|
|
||||||
|
fmt:
|
||||||
|
go fmt $(GOFILES_NOVENDOR)
|
||||||
|
|
||||||
|
vet:
|
||||||
|
go vet $(GOFILES_NOVENDOR)
|
||||||
|
|
||||||
|
test: vet
|
||||||
|
./scripts/test_all.sh
|
||||||
|
|
||||||
|
.PHONY: all vet test
|
41
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/metric_options.go
generated
vendored
Normal file
41
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/metric_options.go
generated
vendored
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
package grpc_prometheus
|
||||||
|
|
||||||
|
import (
|
||||||
|
prom "github.com/prometheus/client_golang/prometheus"
|
||||||
|
)
|
||||||
|
|
||||||
|
// A CounterOption lets you add options to Counter metrics using With* funcs.
|
||||||
|
type CounterOption func(*prom.CounterOpts)
|
||||||
|
|
||||||
|
type counterOptions []CounterOption
|
||||||
|
|
||||||
|
func (co counterOptions) apply(o prom.CounterOpts) prom.CounterOpts {
|
||||||
|
for _, f := range co {
|
||||||
|
f(&o)
|
||||||
|
}
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithConstLabels allows you to add ConstLabels to Counter metrics.
|
||||||
|
func WithConstLabels(labels prom.Labels) CounterOption {
|
||||||
|
return func(o *prom.CounterOpts) {
|
||||||
|
o.ConstLabels = labels
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// A HistogramOption lets you add options to Histogram metrics using With*
|
||||||
|
// funcs.
|
||||||
|
type HistogramOption func(*prom.HistogramOpts)
|
||||||
|
|
||||||
|
// WithHistogramBuckets allows you to specify custom bucket ranges for histograms if EnableHandlingTimeHistogram is on.
|
||||||
|
func WithHistogramBuckets(buckets []float64) HistogramOption {
|
||||||
|
return func(o *prom.HistogramOpts) { o.Buckets = buckets }
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithHistogramConstLabels allows you to add custom ConstLabels to
|
||||||
|
// histograms metrics.
|
||||||
|
func WithHistogramConstLabels(labels prom.Labels) HistogramOption {
|
||||||
|
return func(o *prom.HistogramOpts) {
|
||||||
|
o.ConstLabels = labels
|
||||||
|
}
|
||||||
|
}
|
82
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server.go
generated
vendored
82
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server.go
generated
vendored
@ -6,69 +6,43 @@
|
|||||||
package grpc_prometheus
|
package grpc_prometheus
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"golang.org/x/net/context"
|
prom "github.com/prometheus/client_golang/prometheus"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PreregisterServices takes a gRPC server and pre-initializes all counters to 0.
|
var (
|
||||||
// This allows for easier monitoring in Prometheus (no missing metrics), and should be called *after* all services have
|
// DefaultServerMetrics is the default instance of ServerMetrics. It is
|
||||||
// been registered with the server.
|
// intended to be used in conjunction the default Prometheus metrics
|
||||||
func Register(server *grpc.Server) {
|
// registry.
|
||||||
serviceInfo := server.GetServiceInfo()
|
DefaultServerMetrics = NewServerMetrics()
|
||||||
for serviceName, info := range serviceInfo {
|
|
||||||
for _, mInfo := range info.Methods {
|
|
||||||
preRegisterMethod(serviceName, &mInfo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnaryServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Unary RPCs.
|
// UnaryServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Unary RPCs.
|
||||||
func UnaryServerInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
|
UnaryServerInterceptor = DefaultServerMetrics.UnaryServerInterceptor()
|
||||||
monitor := newServerReporter(Unary, info.FullMethod)
|
|
||||||
monitor.ReceivedMessage()
|
|
||||||
resp, err := handler(ctx, req)
|
|
||||||
monitor.Handled(grpc.Code(err))
|
|
||||||
if err == nil {
|
|
||||||
monitor.SentMessage()
|
|
||||||
}
|
|
||||||
return resp, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// StreamServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Streaming RPCs.
|
// StreamServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Streaming RPCs.
|
||||||
func StreamServerInterceptor(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
|
StreamServerInterceptor = DefaultServerMetrics.StreamServerInterceptor()
|
||||||
monitor := newServerReporter(streamRpcType(info), info.FullMethod)
|
)
|
||||||
err := handler(srv, &monitoredServerStream{ss, monitor})
|
|
||||||
monitor.Handled(grpc.Code(err))
|
func init() {
|
||||||
return err
|
prom.MustRegister(DefaultServerMetrics.serverStartedCounter)
|
||||||
|
prom.MustRegister(DefaultServerMetrics.serverHandledCounter)
|
||||||
|
prom.MustRegister(DefaultServerMetrics.serverStreamMsgReceived)
|
||||||
|
prom.MustRegister(DefaultServerMetrics.serverStreamMsgSent)
|
||||||
}
|
}
|
||||||
|
|
||||||
func streamRpcType(info *grpc.StreamServerInfo) grpcType {
|
// Register takes a gRPC server and pre-initializes all counters to 0. This
|
||||||
if info.IsClientStream && !info.IsServerStream {
|
// allows for easier monitoring in Prometheus (no missing metrics), and should
|
||||||
return ClientStream
|
// be called *after* all services have been registered with the server. This
|
||||||
} else if !info.IsClientStream && info.IsServerStream {
|
// function acts on the DefaultServerMetrics variable.
|
||||||
return ServerStream
|
func Register(server *grpc.Server) {
|
||||||
}
|
DefaultServerMetrics.InitializeMetrics(server)
|
||||||
return BidiStream
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// monitoredStream wraps grpc.ServerStream allowing each Sent/Recv of message to increment counters.
|
// EnableHandlingTimeHistogram turns on recording of handling time
|
||||||
type monitoredServerStream struct {
|
// of RPCs. Histogram metrics can be very expensive for Prometheus
|
||||||
grpc.ServerStream
|
// to retain and query. This function acts on the DefaultServerMetrics
|
||||||
monitor *serverReporter
|
// variable and the default Prometheus metrics registry.
|
||||||
}
|
func EnableHandlingTimeHistogram(opts ...HistogramOption) {
|
||||||
|
DefaultServerMetrics.EnableHandlingTimeHistogram(opts...)
|
||||||
func (s *monitoredServerStream) SendMsg(m interface{}) error {
|
prom.Register(DefaultServerMetrics.serverHandledHistogram)
|
||||||
err := s.ServerStream.SendMsg(m)
|
|
||||||
if err == nil {
|
|
||||||
s.monitor.SentMessage()
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *monitoredServerStream) RecvMsg(m interface{}) error {
|
|
||||||
err := s.ServerStream.RecvMsg(m)
|
|
||||||
if err == nil {
|
|
||||||
s.monitor.ReceivedMessage()
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
185
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server_metrics.go
generated
vendored
Normal file
185
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server_metrics.go
generated
vendored
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
package grpc_prometheus
|
||||||
|
|
||||||
|
import (
|
||||||
|
prom "github.com/prometheus/client_golang/prometheus"
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/grpc/status"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ServerMetrics represents a collection of metrics to be registered on a
|
||||||
|
// Prometheus metrics registry for a gRPC server.
|
||||||
|
type ServerMetrics struct {
|
||||||
|
serverStartedCounter *prom.CounterVec
|
||||||
|
serverHandledCounter *prom.CounterVec
|
||||||
|
serverStreamMsgReceived *prom.CounterVec
|
||||||
|
serverStreamMsgSent *prom.CounterVec
|
||||||
|
serverHandledHistogramEnabled bool
|
||||||
|
serverHandledHistogramOpts prom.HistogramOpts
|
||||||
|
serverHandledHistogram *prom.HistogramVec
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewServerMetrics returns a ServerMetrics object. Use a new instance of
|
||||||
|
// ServerMetrics when not using the default Prometheus metrics registry, for
|
||||||
|
// example when wanting to control which metrics are added to a registry as
|
||||||
|
// opposed to automatically adding metrics via init functions.
|
||||||
|
func NewServerMetrics(counterOpts ...CounterOption) *ServerMetrics {
|
||||||
|
opts := counterOptions(counterOpts)
|
||||||
|
return &ServerMetrics{
|
||||||
|
serverStartedCounter: prom.NewCounterVec(
|
||||||
|
opts.apply(prom.CounterOpts{
|
||||||
|
Name: "grpc_server_started_total",
|
||||||
|
Help: "Total number of RPCs started on the server.",
|
||||||
|
}), []string{"grpc_type", "grpc_service", "grpc_method"}),
|
||||||
|
serverHandledCounter: prom.NewCounterVec(
|
||||||
|
opts.apply(prom.CounterOpts{
|
||||||
|
Name: "grpc_server_handled_total",
|
||||||
|
Help: "Total number of RPCs completed on the server, regardless of success or failure.",
|
||||||
|
}), []string{"grpc_type", "grpc_service", "grpc_method", "grpc_code"}),
|
||||||
|
serverStreamMsgReceived: prom.NewCounterVec(
|
||||||
|
opts.apply(prom.CounterOpts{
|
||||||
|
Name: "grpc_server_msg_received_total",
|
||||||
|
Help: "Total number of RPC stream messages received on the server.",
|
||||||
|
}), []string{"grpc_type", "grpc_service", "grpc_method"}),
|
||||||
|
serverStreamMsgSent: prom.NewCounterVec(
|
||||||
|
opts.apply(prom.CounterOpts{
|
||||||
|
Name: "grpc_server_msg_sent_total",
|
||||||
|
Help: "Total number of gRPC stream messages sent by the server.",
|
||||||
|
}), []string{"grpc_type", "grpc_service", "grpc_method"}),
|
||||||
|
serverHandledHistogramEnabled: false,
|
||||||
|
serverHandledHistogramOpts: prom.HistogramOpts{
|
||||||
|
Name: "grpc_server_handling_seconds",
|
||||||
|
Help: "Histogram of response latency (seconds) of gRPC that had been application-level handled by the server.",
|
||||||
|
Buckets: prom.DefBuckets,
|
||||||
|
},
|
||||||
|
serverHandledHistogram: nil,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableHandlingTimeHistogram enables histograms being registered when
|
||||||
|
// registering the ServerMetrics on a Prometheus registry. Histograms can be
|
||||||
|
// expensive on Prometheus servers. It takes options to configure histogram
|
||||||
|
// options such as the defined buckets.
|
||||||
|
func (m *ServerMetrics) EnableHandlingTimeHistogram(opts ...HistogramOption) {
|
||||||
|
for _, o := range opts {
|
||||||
|
o(&m.serverHandledHistogramOpts)
|
||||||
|
}
|
||||||
|
if !m.serverHandledHistogramEnabled {
|
||||||
|
m.serverHandledHistogram = prom.NewHistogramVec(
|
||||||
|
m.serverHandledHistogramOpts,
|
||||||
|
[]string{"grpc_type", "grpc_service", "grpc_method"},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
m.serverHandledHistogramEnabled = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Describe sends the super-set of all possible descriptors of metrics
|
||||||
|
// collected by this Collector to the provided channel and returns once
|
||||||
|
// the last descriptor has been sent.
|
||||||
|
func (m *ServerMetrics) Describe(ch chan<- *prom.Desc) {
|
||||||
|
m.serverStartedCounter.Describe(ch)
|
||||||
|
m.serverHandledCounter.Describe(ch)
|
||||||
|
m.serverStreamMsgReceived.Describe(ch)
|
||||||
|
m.serverStreamMsgSent.Describe(ch)
|
||||||
|
if m.serverHandledHistogramEnabled {
|
||||||
|
m.serverHandledHistogram.Describe(ch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Collect is called by the Prometheus registry when collecting
|
||||||
|
// metrics. The implementation sends each collected metric via the
|
||||||
|
// provided channel and returns once the last metric has been sent.
|
||||||
|
func (m *ServerMetrics) Collect(ch chan<- prom.Metric) {
|
||||||
|
m.serverStartedCounter.Collect(ch)
|
||||||
|
m.serverHandledCounter.Collect(ch)
|
||||||
|
m.serverStreamMsgReceived.Collect(ch)
|
||||||
|
m.serverStreamMsgSent.Collect(ch)
|
||||||
|
if m.serverHandledHistogramEnabled {
|
||||||
|
m.serverHandledHistogram.Collect(ch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnaryServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Unary RPCs.
|
||||||
|
func (m *ServerMetrics) UnaryServerInterceptor() func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
|
||||||
|
return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
|
||||||
|
monitor := newServerReporter(m, Unary, info.FullMethod)
|
||||||
|
monitor.ReceivedMessage()
|
||||||
|
resp, err := handler(ctx, req)
|
||||||
|
st, _ := status.FromError(err)
|
||||||
|
monitor.Handled(st.Code())
|
||||||
|
if err == nil {
|
||||||
|
monitor.SentMessage()
|
||||||
|
}
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// StreamServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Streaming RPCs.
|
||||||
|
func (m *ServerMetrics) StreamServerInterceptor() func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
|
||||||
|
return func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
|
||||||
|
monitor := newServerReporter(m, streamRPCType(info), info.FullMethod)
|
||||||
|
err := handler(srv, &monitoredServerStream{ss, monitor})
|
||||||
|
st, _ := status.FromError(err)
|
||||||
|
monitor.Handled(st.Code())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// InitializeMetrics initializes all metrics, with their appropriate null
|
||||||
|
// value, for all gRPC methods registered on a gRPC server. This is useful, to
|
||||||
|
// ensure that all metrics exist when collecting and querying.
|
||||||
|
func (m *ServerMetrics) InitializeMetrics(server *grpc.Server) {
|
||||||
|
serviceInfo := server.GetServiceInfo()
|
||||||
|
for serviceName, info := range serviceInfo {
|
||||||
|
for _, mInfo := range info.Methods {
|
||||||
|
preRegisterMethod(m, serviceName, &mInfo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func streamRPCType(info *grpc.StreamServerInfo) grpcType {
|
||||||
|
if info.IsClientStream && !info.IsServerStream {
|
||||||
|
return ClientStream
|
||||||
|
} else if !info.IsClientStream && info.IsServerStream {
|
||||||
|
return ServerStream
|
||||||
|
}
|
||||||
|
return BidiStream
|
||||||
|
}
|
||||||
|
|
||||||
|
// monitoredStream wraps grpc.ServerStream allowing each Sent/Recv of message to increment counters.
|
||||||
|
type monitoredServerStream struct {
|
||||||
|
grpc.ServerStream
|
||||||
|
monitor *serverReporter
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *monitoredServerStream) SendMsg(m interface{}) error {
|
||||||
|
err := s.ServerStream.SendMsg(m)
|
||||||
|
if err == nil {
|
||||||
|
s.monitor.SentMessage()
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *monitoredServerStream) RecvMsg(m interface{}) error {
|
||||||
|
err := s.ServerStream.RecvMsg(m)
|
||||||
|
if err == nil {
|
||||||
|
s.monitor.ReceivedMessage()
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// preRegisterMethod is invoked on Register of a Server, allowing all gRPC services labels to be pre-populated.
|
||||||
|
func preRegisterMethod(metrics *ServerMetrics, serviceName string, mInfo *grpc.MethodInfo) {
|
||||||
|
methodName := mInfo.Name
|
||||||
|
methodType := string(typeFromMethodInfo(mInfo))
|
||||||
|
// These are just references (no increments), as just referencing will create the labels but not set values.
|
||||||
|
metrics.serverStartedCounter.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
||||||
|
metrics.serverStreamMsgReceived.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
||||||
|
metrics.serverStreamMsgSent.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
||||||
|
if metrics.serverHandledHistogramEnabled {
|
||||||
|
metrics.serverHandledHistogram.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
||||||
|
}
|
||||||
|
for _, code := range allCodes {
|
||||||
|
metrics.serverHandledCounter.GetMetricWithLabelValues(methodType, serviceName, methodName, code.String())
|
||||||
|
}
|
||||||
|
}
|
137
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server_reporter.go
generated
vendored
137
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server_reporter.go
generated
vendored
@ -7,151 +7,40 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
|
|
||||||
prom "github.com/prometheus/client_golang/prometheus"
|
|
||||||
"google.golang.org/grpc"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type grpcType string
|
|
||||||
|
|
||||||
const (
|
|
||||||
Unary grpcType = "unary"
|
|
||||||
ClientStream grpcType = "client_stream"
|
|
||||||
ServerStream grpcType = "server_stream"
|
|
||||||
BidiStream grpcType = "bidi_stream"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
serverStartedCounter = prom.NewCounterVec(
|
|
||||||
prom.CounterOpts{
|
|
||||||
Namespace: "grpc",
|
|
||||||
Subsystem: "server",
|
|
||||||
Name: "started_total",
|
|
||||||
Help: "Total number of RPCs started on the server.",
|
|
||||||
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
|
||||||
|
|
||||||
serverHandledCounter = prom.NewCounterVec(
|
|
||||||
prom.CounterOpts{
|
|
||||||
Namespace: "grpc",
|
|
||||||
Subsystem: "server",
|
|
||||||
Name: "handled_total",
|
|
||||||
Help: "Total number of RPCs completed on the server, regardless of success or failure.",
|
|
||||||
}, []string{"grpc_type", "grpc_service", "grpc_method", "grpc_code"})
|
|
||||||
|
|
||||||
serverStreamMsgReceived = prom.NewCounterVec(
|
|
||||||
prom.CounterOpts{
|
|
||||||
Namespace: "grpc",
|
|
||||||
Subsystem: "server",
|
|
||||||
Name: "msg_received_total",
|
|
||||||
Help: "Total number of RPC stream messages received on the server.",
|
|
||||||
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
|
||||||
|
|
||||||
serverStreamMsgSent = prom.NewCounterVec(
|
|
||||||
prom.CounterOpts{
|
|
||||||
Namespace: "grpc",
|
|
||||||
Subsystem: "server",
|
|
||||||
Name: "msg_sent_total",
|
|
||||||
Help: "Total number of gRPC stream messages sent by the server.",
|
|
||||||
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
|
||||||
|
|
||||||
serverHandledHistogramEnabled = false
|
|
||||||
serverHandledHistogramOpts = prom.HistogramOpts{
|
|
||||||
Namespace: "grpc",
|
|
||||||
Subsystem: "server",
|
|
||||||
Name: "handling_seconds",
|
|
||||||
Help: "Histogram of response latency (seconds) of gRPC that had been application-level handled by the server.",
|
|
||||||
Buckets: prom.DefBuckets,
|
|
||||||
}
|
|
||||||
serverHandledHistogram *prom.HistogramVec
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
prom.MustRegister(serverStartedCounter)
|
|
||||||
prom.MustRegister(serverHandledCounter)
|
|
||||||
prom.MustRegister(serverStreamMsgReceived)
|
|
||||||
prom.MustRegister(serverStreamMsgSent)
|
|
||||||
}
|
|
||||||
|
|
||||||
type HistogramOption func(*prom.HistogramOpts)
|
|
||||||
|
|
||||||
// WithHistogramBuckets allows you to specify custom bucket ranges for histograms if EnableHandlingTimeHistogram is on.
|
|
||||||
func WithHistogramBuckets(buckets []float64) HistogramOption {
|
|
||||||
return func(o *prom.HistogramOpts) { o.Buckets = buckets }
|
|
||||||
}
|
|
||||||
|
|
||||||
// EnableHandlingTimeHistogram turns on recording of handling time of RPCs for server-side interceptors.
|
|
||||||
// Histogram metrics can be very expensive for Prometheus to retain and query.
|
|
||||||
func EnableHandlingTimeHistogram(opts ...HistogramOption) {
|
|
||||||
for _, o := range opts {
|
|
||||||
o(&serverHandledHistogramOpts)
|
|
||||||
}
|
|
||||||
if !serverHandledHistogramEnabled {
|
|
||||||
serverHandledHistogram = prom.NewHistogramVec(
|
|
||||||
serverHandledHistogramOpts,
|
|
||||||
[]string{"grpc_type", "grpc_service", "grpc_method"},
|
|
||||||
)
|
|
||||||
prom.Register(serverHandledHistogram)
|
|
||||||
}
|
|
||||||
serverHandledHistogramEnabled = true
|
|
||||||
}
|
|
||||||
|
|
||||||
type serverReporter struct {
|
type serverReporter struct {
|
||||||
|
metrics *ServerMetrics
|
||||||
rpcType grpcType
|
rpcType grpcType
|
||||||
serviceName string
|
serviceName string
|
||||||
methodName string
|
methodName string
|
||||||
startTime time.Time
|
startTime time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
func newServerReporter(rpcType grpcType, fullMethod string) *serverReporter {
|
func newServerReporter(m *ServerMetrics, rpcType grpcType, fullMethod string) *serverReporter {
|
||||||
r := &serverReporter{rpcType: rpcType}
|
r := &serverReporter{
|
||||||
if serverHandledHistogramEnabled {
|
metrics: m,
|
||||||
|
rpcType: rpcType,
|
||||||
|
}
|
||||||
|
if r.metrics.serverHandledHistogramEnabled {
|
||||||
r.startTime = time.Now()
|
r.startTime = time.Now()
|
||||||
}
|
}
|
||||||
r.serviceName, r.methodName = splitMethodName(fullMethod)
|
r.serviceName, r.methodName = splitMethodName(fullMethod)
|
||||||
serverStartedCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
r.metrics.serverStartedCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *serverReporter) ReceivedMessage() {
|
func (r *serverReporter) ReceivedMessage() {
|
||||||
serverStreamMsgReceived.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
r.metrics.serverStreamMsgReceived.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *serverReporter) SentMessage() {
|
func (r *serverReporter) SentMessage() {
|
||||||
serverStreamMsgSent.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
r.metrics.serverStreamMsgSent.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *serverReporter) Handled(code codes.Code) {
|
func (r *serverReporter) Handled(code codes.Code) {
|
||||||
serverHandledCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName, code.String()).Inc()
|
r.metrics.serverHandledCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName, code.String()).Inc()
|
||||||
if serverHandledHistogramEnabled {
|
if r.metrics.serverHandledHistogramEnabled {
|
||||||
serverHandledHistogram.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Observe(time.Since(r.startTime).Seconds())
|
r.metrics.serverHandledHistogram.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Observe(time.Since(r.startTime).Seconds())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// preRegisterMethod is invoked on Register of a Server, allowing all gRPC services labels to be pre-populated.
|
|
||||||
func preRegisterMethod(serviceName string, mInfo *grpc.MethodInfo) {
|
|
||||||
methodName := mInfo.Name
|
|
||||||
methodType := string(typeFromMethodInfo(mInfo))
|
|
||||||
// These are just references (no increments), as just referencing will create the labels but not set values.
|
|
||||||
serverStartedCounter.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
|
||||||
serverStreamMsgReceived.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
|
||||||
serverStreamMsgSent.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
|
||||||
if serverHandledHistogramEnabled {
|
|
||||||
serverHandledHistogram.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
|
||||||
}
|
|
||||||
for _, code := range allCodes {
|
|
||||||
serverHandledCounter.GetMetricWithLabelValues(methodType, serviceName, methodName, code.String())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func typeFromMethodInfo(mInfo *grpc.MethodInfo) grpcType {
|
|
||||||
if mInfo.IsClientStream == false && mInfo.IsServerStream == false {
|
|
||||||
return Unary
|
|
||||||
}
|
|
||||||
if mInfo.IsClientStream == true && mInfo.IsServerStream == false {
|
|
||||||
return ClientStream
|
|
||||||
}
|
|
||||||
if mInfo.IsClientStream == false && mInfo.IsServerStream == true {
|
|
||||||
return ServerStream
|
|
||||||
}
|
|
||||||
return BidiStream
|
|
||||||
}
|
|
||||||
|
14
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/test_all.sh
generated
vendored
14
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/test_all.sh
generated
vendored
@ -1,14 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
echo "" > coverage.txt
|
|
||||||
|
|
||||||
for d in $(go list ./... | grep -v vendor); do
|
|
||||||
echo -e "TESTS FOR: for \033[0;35m${d}\033[0m"
|
|
||||||
go test -race -v -coverprofile=profile.coverage.out -covermode=atomic $d
|
|
||||||
if [ -f profile.coverage.out ]; then
|
|
||||||
cat profile.coverage.out >> coverage.txt
|
|
||||||
rm profile.coverage.out
|
|
||||||
fi
|
|
||||||
echo ""
|
|
||||||
done
|
|
23
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/util.go
generated
vendored
23
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/util.go
generated
vendored
@ -6,9 +6,19 @@ package grpc_prometheus
|
|||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type grpcType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
Unary grpcType = "unary"
|
||||||
|
ClientStream grpcType = "client_stream"
|
||||||
|
ServerStream grpcType = "server_stream"
|
||||||
|
BidiStream grpcType = "bidi_stream"
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
allCodes = []codes.Code{
|
allCodes = []codes.Code{
|
||||||
codes.OK, codes.Canceled, codes.Unknown, codes.InvalidArgument, codes.DeadlineExceeded, codes.NotFound,
|
codes.OK, codes.Canceled, codes.Unknown, codes.InvalidArgument, codes.DeadlineExceeded, codes.NotFound,
|
||||||
@ -25,3 +35,16 @@ func splitMethodName(fullMethodName string) (string, string) {
|
|||||||
}
|
}
|
||||||
return "unknown", "unknown"
|
return "unknown", "unknown"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func typeFromMethodInfo(mInfo *grpc.MethodInfo) grpcType {
|
||||||
|
if !mInfo.IsClientStream && !mInfo.IsServerStream {
|
||||||
|
return Unary
|
||||||
|
}
|
||||||
|
if mInfo.IsClientStream && !mInfo.IsServerStream {
|
||||||
|
return ClientStream
|
||||||
|
}
|
||||||
|
if !mInfo.IsClientStream && mInfo.IsServerStream {
|
||||||
|
return ServerStream
|
||||||
|
}
|
||||||
|
return BidiStream
|
||||||
|
}
|
||||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -521,7 +521,7 @@ github.com/gregjones/httpcache
|
|||||||
github.com/gregjones/httpcache/diskcache
|
github.com/gregjones/httpcache/diskcache
|
||||||
# github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 => github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79
|
# github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 => github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware
|
github.com/grpc-ecosystem/go-grpc-middleware
|
||||||
# github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611 => github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611
|
# github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 => github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus
|
github.com/grpc-ecosystem/go-grpc-prometheus
|
||||||
# github.com/grpc-ecosystem/grpc-gateway v1.3.0 => github.com/grpc-ecosystem/grpc-gateway v1.3.0
|
# github.com/grpc-ecosystem/grpc-gateway v1.3.0 => github.com/grpc-ecosystem/grpc-gateway v1.3.0
|
||||||
github.com/grpc-ecosystem/grpc-gateway/runtime
|
github.com/grpc-ecosystem/grpc-gateway/runtime
|
||||||
|
Loading…
Reference in New Issue
Block a user