Skip to content

Commit

Permalink
expose grpc metrics in prometheus
Browse files Browse the repository at this point in the history
  • Loading branch information
matthieugouel committed Jul 18, 2024
1 parent 7556d61 commit 2b72472
Show file tree
Hide file tree
Showing 585 changed files with 19,287 additions and 9,217 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ The Octopus exposes a number of metrics via an HTTP endpoint ready to be scraped
* `octopus_connector_load_time` - Time it took to fetch data (milliseconds) (broken out by label `connector`)
* `octopus_connector_update_error_count` - The number of time the refresh of connector data has failed (broken out by label `connector`)

Other than those, Octopus is exposing gRPC-related metrics that comes from [go-grpc-middleware](https://github.com/grpc-ecosystem/go-grpc-middleware/tree/main/providers/prometheus).

# Querying data

The Octopus exposes a gRPC API to query the enriched topology data.
Expand Down
24 changes: 13 additions & 11 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,34 @@ go 1.19
require (
github.com/bio-routing/bio-rd v0.1.9
github.com/go-pg/pg v8.0.7+incompatible
github.com/prometheus/client_golang v1.11.1
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1
github.com/prometheus/client_golang v1.14.0
github.com/sirupsen/logrus v1.9.0
github.com/stretchr/testify v1.8.2
google.golang.org/grpc v1.56.3
google.golang.org/protobuf v1.30.0
github.com/stretchr/testify v1.8.4
google.golang.org/grpc v1.63.2
google.golang.org/protobuf v1.33.0
)

require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/bio-routing/tflow2 v0.0.0-20181230153523-2e308a4a3c3a // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/onsi/ginkgo v1.16.5 // indirect
github.com/onsi/gomega v1.27.6 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_model v0.3.0 // indirect
github.com/prometheus/common v0.26.0 // indirect
github.com/prometheus/common v0.37.0 // indirect
github.com/prometheus/procfs v0.9.0 // indirect
golang.org/x/crypto v0.14.0 // indirect
golang.org/x/net v0.17.0 // indirect
golang.org/x/sys v0.13.0 // indirect
golang.org/x/text v0.13.0 // indirect
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
golang.org/x/crypto v0.22.0 // indirect
golang.org/x/net v0.24.0 // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
mellium.im/sasl v0.3.1 // indirect
)
375 changes: 349 additions & 26 deletions go.sum

Large diffs are not rendered by default.

13 changes: 12 additions & 1 deletion pkg/octopus/octopus.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import (
"github.com/cloudflare/octopus/pkg/connector"
"github.com/cloudflare/octopus/pkg/model"
octopuspb "github.com/cloudflare/octopus/proto/octopus"
grpcprom "github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus"
"github.com/prometheus/client_golang/prometheus"

"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
Expand Down Expand Up @@ -131,9 +133,18 @@ func (o *Octopus) serveGrpc() {
log.Infof("Starting gRPC API server at %s", portStr)

os := newOctopusServer(o)
s := grpc.NewServer()

srvMetrics := grpcprom.NewServerMetrics()
s := grpc.NewServer(
grpc.UnaryInterceptor(srvMetrics.UnaryServerInterceptor()),
grpc.StreamInterceptor(srvMetrics.StreamServerInterceptor()),
)
s.RegisterService(&octopuspb.OctopusService_ServiceDesc, os)

// Register Prometheus metrics
srvMetrics.InitializeMetrics(s)
prometheus.MustRegister(srvMetrics)

// Allow client to retrieve proto definition
reflection.Register(s)

Expand Down
Loading

0 comments on commit 2b72472

Please sign in to comment.