diff --git a/go.mod b/go.mod index 1d543a4e..f5d280f1 100644 --- a/go.mod +++ b/go.mod @@ -11,13 +11,13 @@ require ( github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/jmoiron/sqlx v1.3.5 - github.com/percona/pmm v0.0.0-20220418101857-7c8201461efd + github.com/percona/pmm v0.0.0-20220506093550-f05ed97ac553 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.12.1 github.com/sirupsen/logrus v1.8.1 github.com/stretchr/testify v1.7.1 - golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 - google.golang.org/grpc v1.45.0 + golang.org/x/sys v0.0.0-20220412211240-33da011f77ad + google.golang.org/grpc v1.46.0 gopkg.in/alecthomas/kingpin.v2 v2.2.6 ) @@ -29,17 +29,17 @@ require ( github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.8.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.0 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/mwitkow/go-proto-validators v0.3.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.32.1 // indirect + github.com/prometheus/common v0.33.0 // indirect github.com/prometheus/procfs v0.7.3 // indirect - golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect + golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect golang.org/x/text v0.3.7 // indirect - google.golang.org/genproto v0.0.0-20220302033224-9aa15565e42a // indirect - google.golang.org/protobuf v1.27.1 // indirect + google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4 // indirect + google.golang.org/protobuf v1.28.0 // indirect gopkg.in/reform.v1 v1.5.1 // indirect - gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index 342bffdd..be888b09 100644 --- a/go.sum +++ b/go.sum @@ -70,6 +70,7 @@ github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnht github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -82,6 +83,7 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -90,9 +92,11 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= @@ -146,6 +150,7 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -171,6 +176,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4 github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.8.0 h1:/57CcG6YAO31FWwTVUnNl+2RcDUAaT55HtI71KQAXVw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.8.0/go.mod h1:/fckq3NE+vGiJsd4fDt4ge1XrK8cN+e5G5QWIzdg7Q8= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.0 h1:ESEyqQqXXFIcImj/BE8oKEX37Zsuceb2cZI+EL/zNCY= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.0/go.mod h1:XnLCLFp3tjoZJszVKjfpyAK6J8sYIcQXWQxmqLWF21I= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -222,6 +229,16 @@ github.com/mwitkow/go-proto-validators v0.3.2/go.mod h1:ej0Qp0qMgHN/KtDyUt+Q1/tA github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/percona/pmm v0.0.0-20220418101857-7c8201461efd h1:2V+yWa8f81b8nKPNnbvH6oddoIOCxbrXn85XEtjnew8= github.com/percona/pmm v0.0.0-20220418101857-7c8201461efd/go.mod h1:T1LlFmiSJQxKX18/lfBfmfj4VuGm2ktUnHlHlJeeQbY= +github.com/percona/pmm v0.0.0-20220505075843-4c5b747aa417 h1:+up7wp2MPPdIJcdx+OaFZHrW2fm+ujze5bmpHWvUvhk= +github.com/percona/pmm v0.0.0-20220505075843-4c5b747aa417/go.mod h1:k7HS59HPX33tmrSZGiNzUTYuLr0+a49F3BEZ48MAbuo= +github.com/percona/pmm v0.0.0-20220505104330-83c792635dce h1:me65k1BreTI5WfolD5gszKGS2tg/cEkCzH8Zv/u57Zo= +github.com/percona/pmm v0.0.0-20220505104330-83c792635dce/go.mod h1:k7HS59HPX33tmrSZGiNzUTYuLr0+a49F3BEZ48MAbuo= +github.com/percona/pmm v0.0.0-20220505105507-94c4ed2be9d7 h1:UKKNivFd9+7ujnX2WIb/P/y11e69fGdT1XhOvpJROxE= +github.com/percona/pmm v0.0.0-20220505105507-94c4ed2be9d7/go.mod h1:k7HS59HPX33tmrSZGiNzUTYuLr0+a49F3BEZ48MAbuo= +github.com/percona/pmm v0.0.0-20220505112525-0466764e44c5 h1:06AwvvECPSr1M/RZRNxtz0VKfNKJNYjHmq8SpF1xnG4= +github.com/percona/pmm v0.0.0-20220505112525-0466764e44c5/go.mod h1:k7HS59HPX33tmrSZGiNzUTYuLr0+a49F3BEZ48MAbuo= +github.com/percona/pmm v0.0.0-20220506093550-f05ed97ac553 h1:WZ2dFg4joMowSTo8ci3t9snbyJRTJEyU4ESZwzbmMEk= +github.com/percona/pmm v0.0.0-20220506093550-f05ed97ac553/go.mod h1:k7HS59HPX33tmrSZGiNzUTYuLr0+a49F3BEZ48MAbuo= github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -246,6 +263,8 @@ github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB8 github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.33.0 h1:rHgav/0a6+uYgGdNt3jwz8FNSesO/Hsang3O0T9A5SE= +github.com/prometheus/common v0.33.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= @@ -355,12 +374,16 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -405,14 +428,20 @@ golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -529,6 +558,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20220302033224-9aa15565e42a h1:uqouglH745GoGeZ1YFZbPBiu961tgi/9Qm5jaorajjQ= google.golang.org/genproto v0.0.0-20220302033224-9aa15565e42a/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4 h1:myaecH64R0bIEDjNORIel4iXubqzaHU1K2z8ajBwWcM= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -546,6 +577,8 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0 h1:oCjezcn6g6A75TGoKYBPgKmVBLexhYLM6MebdrPApP8= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -560,6 +593,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -579,6 +614,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/migrations/bindata.go b/migrations/bindata.go index 56c34398..1a77e816 100644 --- a/migrations/bindata.go +++ b/migrations/bindata.go @@ -30,6 +30,8 @@ // migrations/sql/14_pg_stat_monitor_09_queryplan.up.sql (70B) // migrations/sql/15_pg_stat_monitor_09_histogram.down.sql (53B) // migrations/sql/15_pg_stat_monitor_09_histogram.up.sql (66B) +// migrations/sql/16_pg_stat_monitor_10_settings.down.sql (52B) +// migrations/sql/16_pg_stat_monitor_10_settings.up.sql (65B) package migrations @@ -698,6 +700,46 @@ func _15_pg_stat_monitor_09_histogramUpSql() (*asset, error) { return a, nil } +var __16_pg_stat_monitor_10_settingsDownSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\xc8\x4d\x2d\x29\xca\x4c\x2e\xe6\x52\x50\x70\x09\xf2\x0f\x50\x70\xf6\xf7\x09\xf5\xf5\x53\x48\x28\x4e\x2d\x29\xc9\xcc\x4b\x2f\x8e\xcf\x2c\x49\xcd\x2d\x4e\xb0\xe6\x02\x04\x00\x00\xff\xff\xfe\x48\x1f\x5e\x34\x00\x00\x00") + +func _16_pg_stat_monitor_10_settingsDownSqlBytes() ([]byte, error) { + return bindataRead( + __16_pg_stat_monitor_10_settingsDownSql, + "16_pg_stat_monitor_10_settings.down.sql", + ) +} + +func _16_pg_stat_monitor_10_settingsDownSql() (*asset, error) { + bytes, err := _16_pg_stat_monitor_10_settingsDownSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "16_pg_stat_monitor_10_settings.down.sql", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5a, 0x9b, 0x76, 0x7c, 0x99, 0xe9, 0x5, 0xd2, 0x94, 0x19, 0xda, 0x93, 0xbb, 0x8d, 0x1, 0xaf, 0x98, 0x2b, 0xb9, 0x4e, 0xa0, 0x4e, 0x65, 0xc5, 0xb8, 0xbb, 0xa1, 0xd, 0x37, 0x44, 0xb, 0xcb}} + return a, nil +} + +var __16_pg_stat_monitor_10_settingsUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\xc8\x4d\x2d\x29\xca\x4c\x2e\xe6\x52\x50\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\x48\x28\x4e\x2d\x29\xc9\xcc\x4b\x2f\x8e\xcf\x2c\x49\xcd\x2d\x4e\x50\x70\x2c\x2a\x4a\xac\xd4\x08\x2e\x29\xca\xcc\x4b\xd7\xb4\xe6\x02\x04\x00\x00\xff\xff\xfe\x6f\xd2\xf9\x41\x00\x00\x00") + +func _16_pg_stat_monitor_10_settingsUpSqlBytes() ([]byte, error) { + return bindataRead( + __16_pg_stat_monitor_10_settingsUpSql, + "16_pg_stat_monitor_10_settings.up.sql", + ) +} + +func _16_pg_stat_monitor_10_settingsUpSql() (*asset, error) { + bytes, err := _16_pg_stat_monitor_10_settingsUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "16_pg_stat_monitor_10_settings.up.sql", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0x44, 0xdd, 0xb, 0x8e, 0x66, 0x5e, 0x20, 0xff, 0x97, 0x80, 0x3a, 0x98, 0x0, 0xcf, 0xfd, 0x98, 0xbb, 0xb2, 0x5d, 0xb1, 0x13, 0x33, 0xb6, 0x3d, 0x3, 0x51, 0x19, 0x63, 0x3b, 0x79, 0xa4}} + return a, nil +} + // Asset loads and returns the asset for the given name. // It returns an error if the asset could not be found or // could not be loaded. @@ -819,6 +861,8 @@ var _bindata = map[string]func() (*asset, error){ "14_pg_stat_monitor_09_queryplan.up.sql": _14_pg_stat_monitor_09_queryplanUpSql, "15_pg_stat_monitor_09_histogram.down.sql": _15_pg_stat_monitor_09_histogramDownSql, "15_pg_stat_monitor_09_histogram.up.sql": _15_pg_stat_monitor_09_histogramUpSql, + "16_pg_stat_monitor_10_settings.down.sql": _16_pg_stat_monitor_10_settingsDownSql, + "16_pg_stat_monitor_10_settings.up.sql": _16_pg_stat_monitor_10_settingsUpSql, } // AssetDebug is true if the assets were built with the debug flag enabled. @@ -895,6 +939,8 @@ var _bintree = &bintree{nil, map[string]*bintree{ "14_pg_stat_monitor_09_queryplan.up.sql": {_14_pg_stat_monitor_09_queryplanUpSql, map[string]*bintree{}}, "15_pg_stat_monitor_09_histogram.down.sql": {_15_pg_stat_monitor_09_histogramDownSql, map[string]*bintree{}}, "15_pg_stat_monitor_09_histogram.up.sql": {_15_pg_stat_monitor_09_histogramUpSql, map[string]*bintree{}}, + "16_pg_stat_monitor_10_settings.down.sql": {_16_pg_stat_monitor_10_settingsDownSql, map[string]*bintree{}}, + "16_pg_stat_monitor_10_settings.up.sql": {_16_pg_stat_monitor_10_settingsUpSql, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. diff --git a/migrations/sql/16_pg_stat_monitor_10_settings.down.sql b/migrations/sql/16_pg_stat_monitor_10_settings.down.sql new file mode 100644 index 00000000..f72dc957 --- /dev/null +++ b/migrations/sql/16_pg_stat_monitor_10_settings.down.sql @@ -0,0 +1,2 @@ +ALTER TABLE metrics + DROP COLUMN `settings_items`; diff --git a/migrations/sql/16_pg_stat_monitor_10_settings.up.sql b/migrations/sql/16_pg_stat_monitor_10_settings.up.sql new file mode 100644 index 00000000..98e8cbf2 --- /dev/null +++ b/migrations/sql/16_pg_stat_monitor_10_settings.up.sql @@ -0,0 +1,2 @@ +ALTER TABLE metrics + ADD COLUMN `settings_items` Array(String); diff --git a/models/data_ingestion.go b/models/data_ingestion.go index c82f3122..d5974485 100644 --- a/models/data_ingestion.go +++ b/models/data_ingestion.go @@ -260,7 +260,8 @@ const insertSQL = ` application_name, planid, query_plan, - histogram_items + histogram_items, + settings_items ) VALUES ( :queryid, @@ -484,7 +485,8 @@ const insertSQL = ` :application_name, :planid, :query_plan, - :histogram_items + :histogram_items, + :settings_items ) ` diff --git a/models/metrics.go b/models/metrics.go index 63fb0110..89a5c213 100644 --- a/models/metrics.go +++ b/models/metrics.go @@ -927,3 +927,89 @@ func histogramHasKey(h []*qanpb.HistogramItem, key string) (bool, int) { return false, 0 } + +const settingsTmpl = `SELECT settings_items FROM metrics +WHERE period_start >= :period_start_from AND period_start <= :period_start_to +{{ if .Dimensions }} + {{range $key, $vals := .Dimensions }} + AND {{ $key }} IN ( '{{ StringsJoin $vals "', '" }}' ) + {{ end }} +{{ end }} +{{ if .Labels }}{{$i := 0}} + AND ({{range $key, $vals := .Labels }}{{ $i = inc $i}} + {{ if gt $i 1}} OR {{ end }} has(['{{ StringsJoin $vals "', '" }}'], labels.value[indexOf(labels.key, '{{ $key }}')]) + {{ end }}) +{{ end }} +AND queryid = :queryid +ORDER BY period_start DESC;` + +// SelectPGSMSettings selects settings for given queryid. +func (m *Metrics) SelectPGSMSettings(ctx context.Context, periodStartFromSec, + periodStartToSec int64, dimensions, labels map[string][]string, queryID string) (*qanpb.SettingsReply, error) { + arg := map[string]interface{}{ + "period_start_from": periodStartFromSec, + "period_start_to": periodStartToSec, + "queryid": queryID, + } + + tmplArgs := struct { + Dimensions map[string][]string + Labels map[string][]string + }{ + Dimensions: escapeColonsInMap(dimensions), + Labels: escapeColonsInMap(labels), + } + var queryBuffer bytes.Buffer + if tmpl, err := template.New("settingsTmpl").Funcs(funcMap).Parse(settingsTmpl); err != nil { + log.Fatalln(err) + } else if err = tmpl.Execute(&queryBuffer, tmplArgs); err != nil { + log.Fatalln(err) + } + + results := &qanpb.SettingsReply{ + SettingsItems: []*qanpb.SettingsItem{}, + } + query, args, err := sqlx.Named(queryBuffer.String(), arg) + if err != nil { + return results, errors.Wrap(err, "cannot prepare query") + } + query, args, err = sqlx.In(query, args...) + if err != nil { + return results, errors.Wrap(err, "cannot populate query arguments") + } + query = m.db.Rebind(query) + + queryCtx, cancel := context.WithTimeout(ctx, queryTimeout) + defer cancel() + + rows, err := m.db.QueryxContext(queryCtx, query, args...) + if err != nil { + return results, errors.Wrap(err, "cannot execute metrics query") + } + defer rows.Close() //nolint:errcheck + + settings := []*qanpb.SettingsItem{} + for rows.Next() { + var settingsItems []string + err = rows.Scan( + &settingsItems, + ) + if err != nil { + return nil, errors.Wrap(err, "failed to scan settings items") + } + + for _, v := range settingsItems { + var item *qanpb.SettingsItem + err := json.Unmarshal([]byte(v), item) + if err != nil { + return nil, errors.Wrap(err, "failed to unmarshal settings item") + } + + settings = append(settings, item) + } + } + + results.SettingsItems = settings + + return results, nil +} diff --git a/services/analytics/object_details.go b/services/analytics/object_details.go index 23bf9d03..75e29f94 100644 --- a/services/analytics/object_details.go +++ b/services/analytics/object_details.go @@ -343,3 +343,44 @@ func (s *Service) GetHistogram(ctx context.Context, in *qanpb.HistogramRequest) return resp, nil } + +// GetPGSMSettings gets pg_stat_monitor settings for given queryid. +func (s *Service) GetPGSMSettings(ctx context.Context, in *qanpb.SettingsRequest) (*qanpb.SettingsReply, error) { //nolint:dupl + if in.PeriodStartFrom == nil { + return nil, fmt.Errorf("period_start_from is required:%v", in.PeriodStartFrom) + } + periodStartFromSec := in.PeriodStartFrom.Seconds + if in.PeriodStartTo == nil { + return nil, fmt.Errorf("period_start_to is required:%v", in.PeriodStartTo) + } + periodStartToSec := in.PeriodStartTo.Seconds + + if in.Queryid == "" { + return nil, fmt.Errorf("queryid is required:%v", in.Queryid) //nolint + } + + labels := map[string][]string{} + dimensions := map[string][]string{} + + for _, label := range in.GetLabels() { + if isDimension(label.Key) { + dimensions[label.Key] = label.Value + continue + } + labels[label.Key] = label.Value + } + + resp, err := s.mm.SelectPGSMSettings( + ctx, + periodStartFromSec, + periodStartToSec, + dimensions, + labels, + in.Queryid, + ) + if err != nil { + return nil, fmt.Errorf("error in selecting histogram:%v", err) + } + + return resp, nil +}