Skip to content

Commit

Permalink
Instrument Go service with Stats and monitored resources. (GoogleClou…
Browse files Browse the repository at this point in the history
…dPlatform#30)

added default views for stats  for http and grpc in Go services only.
added monitored resources for go.
  • Loading branch information
rghetia authored and ahmetb committed Aug 24, 2018
1 parent 04c3876 commit 7f2ecfe
Show file tree
Hide file tree
Showing 13 changed files with 608 additions and 100 deletions.
153 changes: 131 additions & 22 deletions src/checkoutservice/Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/checkoutservice/Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

[[constraint]]
name = "contrib.go.opencensus.io/exporter/stackdriver"
version = "0.5.0"
version = "0.6.0"

[[constraint]]
name = "github.com/golang/protobuf"
Expand Down
18 changes: 17 additions & 1 deletion src/checkoutservice/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,13 @@ import (
"contrib.go.opencensus.io/exporter/stackdriver"
"github.com/google/uuid"
"go.opencensus.io/plugin/ocgrpc"
"go.opencensus.io/stats/view"
"go.opencensus.io/trace"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"

"contrib.go.opencensus.io/exporter/stackdriver/monitoredresource"
pb "github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice/genproto"
money "github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice/money"
)
Expand Down Expand Up @@ -78,17 +80,31 @@ func main() {
log.Fatal(srv.Serve(lis))
}

func initStats(exporter *stackdriver.Exporter) {
view.RegisterExporter(exporter)
if err := view.Register(ocgrpc.DefaultServerViews...); err != nil {
log.Printf("Error registering default server views")
} else {
log.Printf("Registered default server views");
}
}

func initTracing() {
// TODO(ahmetb) this method is duplicated in other microservices using Go
// since they are not sharing packages.
for i := 1; i <= 3; i++ {
exporter, err := stackdriver.NewExporter(stackdriver.Options{})
exporter, err := stackdriver.NewExporter(stackdriver.Options{
MonitoredResource: monitoredresource.Autodetect(),
})
if err != nil {
log.Printf("info: failed to initialize stackdriver exporter: %+v", err)
} else {
trace.RegisterExporter(exporter)
trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()})
log.Print("registered stackdriver tracing")

// Register the views to collect server stats.
initStats(exporter)
return
}
d := time.Second * 10 * time.Duration(i)
Expand Down
Loading

0 comments on commit 7f2ecfe

Please sign in to comment.